# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. log4j.rootLogger=debug,CONSOLE,NAGIOS log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout log4j.appender.CONSOLE.layout.ConversionPattern=%d [%t] %-5p (%F:%L) - %m%n log4j.logger.org.apache.hadoop.chukwa.MySQLWriter=ERROR, CONSOLE # our custom handler for nagios log4j.appender.NAGIOS=org.apache.log4j.nagios.NagiosAppender log4j.appender.NAGIOS.Host=@TODO-NAGIOS-SERVER@ log4j.appender.NAGIOS.Port=5667 # ------------------------------------------------------------------------------------------- # Nagios Message Structure # # This appender will send a structured message via the Nagios native protocol to the # nagios server. A nagios message is made up of the following components. # # HOST # SERVICE NAME # RETURN CODE # MESSAGE # # The majority of what you need to think about when using this appender is ... # # 1. How to assign the value for HOST (options allow hardcoding or programmatic lookup) # 2. How to assign the value for SERVICE (options similar to 1.) # 3. The mapping between log4j levels and Nagios levels that matches your needs. # 4. The layout for the raw MESSAGE # # ------------------------------------------------------------------------------------------- # ------------------------------------------------------------------------------------------- # # Nagios Enryption # # The config file tells us how to encrypt the data. As of version 0.0.3, the # NagiosAppender supports XOR encryption (thanks to Bob Ingraham!!) If you # are sending messages in the clear, simply leave the following setting commented # out, and the appender will assume the default (no encryption). # # Future versions are expected to support more of the available choices # (anyone with encryption experience willing to help out here?) # # NOTE: the config file will be read only once ... if you need to change the encryption # method, you will need to restart your application for the change to take affect. # # ------------------------------------------------------------------------------------------- # If send_nsca was installed on this system, maybe we just want to point to it .... #log4j.appender.NAGIOS.ConfigFile=/usr/local/nagios/nsca-2.4/send_nsca.cfg # or, we can just include our own version with our application log4j.appender.NAGIOS.ConfigFile=@TODO_CHUKWA_CONF_DIR@/nsca_send_clear.cfg # ------------------------------------------------------------------------------------------- # Nagios SERVICE_NAME # ------------------------------------------------------------------------------------------- # You can either hardcode the nagios service name in this file .... log4j.appender.NAGIOS.ServiceNameDefault=MDL # ... or you can override the above and set it programatically, using something like the following ... # org.apache.log4j.MDC.put("instance", "APPLICATION_FOOBAR"); # ... or .... # org.apache.log4j.MDC.put("instance", System.getProperty("APP_NAME","UNKNOWN")); # ... in which case, all you need to do in this file is specify the key you used #log4j.appender.NAGIOS.useMDCServiceName=true #log4j.appender.NAGIOS.MDCServiceNameKey=instance # ------------------------------------------------------------------------------------------- # Nagios HOST # ------------------------------------------------------------------------------------------- # Dynamic Assignment # # You can control whether your hostname shows up as a fully qualified domain name, # or just the first portion of the fqdn: # For example .... if the fully qualified domain name is 'www1.amazon.com' ..... # www1 #log4j.appender.NAGIOS.useShortHostName=true # www1.amazon.com log4j.appender.NAGIOS.useShortHostName=false # Static Assignment # # You can take all the guess work out of the interface name # that will be sent upstream vi nsca, and just tell us what key in MDC has the appropriate # name #log4j.appender.NAGIOS.useMDCHostName=true #log4j.appender.NAGIOS.MDCHostNameKey=nagios_host_name #log4j.appender.NAGIOS.InitializeMDCHostNameValue=www1 # ------------------------------------------------------------------------------------------- # Nagios RETURN CODES # ------------------------------------------------------------------------------------------- # # This section is where you control the mappings between the log4j logging levels, # versus the Nagios alert levels. To make things clear, I've designed the appender to # NOT assume any default mappings. This way, you have total control over which messages # get passed on up to nagios. For example, most users will want to avoid sending # debug and info messages to nagios, but they probably will want to send on warnings, # errors, and fatals. The following mappings reflect this convention. # # NOTE: if you don't declare the mapping, the appender WILL NOT SEND THE MESSAGE TO NAGIOS #log4j.appender.NAGIOS.Log4j_Level_DEBUG=NAGIOS_UNKNOWN log4j.appender.NAGIOS.Log4j_Level_INFO=NAGIOS_OK log4j.appender.NAGIOS.Log4j_Level_WARN=NAGIOS_WARN log4j.appender.NAGIOS.Log4j_Level_ERROR=NAGIOS_CRITICAL log4j.appender.NAGIOS.Log4j_Level_FATAL=NAGIOS_CRITICAL # ------------------------------------------------------------------------------------------- # Option: Filtering # # Filters are very useful when introducing Nagios into a backroom with legacy applications. # # Rather than sending on ALL error messages to your nagios server, you might want to consider # turning on IncludeFilters, and speficically identifying the handfull of problem messages you # need to keep an eye on. Unless a message passes one of your include filters, it won't get # sent. # # The same applies if you are interested in MOST of the messages, but want to suppress the ones # that duplicate information you already know. But turning on ExcludeFilters, you can suppress # these annoying messages ... # # Filters are defined by Java regex patterns (see http://java.sun.com/docs/books/tutorial/essential/regex) # # See the file NagiosIncludeExcludeFilters.properties for example entries # # ------------------------------------------------------------------------------------------- # # Filtering #log4j.appender.NAGIOS.IncludeFilterEnabled=true #log4j.appender.NAGIOS.ExcludeFilterEnabled=true #log4j.appender.NAGIOS.PatternFilterFile=conf/NagiosIncludeExcludeFilters.properties # ------------------------------------------------------------------------------------------- # Option: Custom Message at Startup # ------------------------------------------------------------------------------------------- # # This is an optional message that will get sent as soon as the appender gets # instantiated. This can be helpful in identifying problems where the application dies quietly, and # gets restarted by someone (or some automated process). # # Simply choose the level that fits your use case, and assign the appropriate message. # #log4j.appender.NAGIOS.SendStartupMessageOK=Application Starting #log4j.appender.NAGIOS.SendStartupMessageUNKNOWN=Application restarted for some reason #log4j.appender.NAGIOS.SendStartupMessageWARN=Application Errors Cleared #log4j.appender.NAGIOS.SendStartupMessageCRITICAL=Application Restarted ... Sound the Alarm!!! # ------------------------------------------------------------------------------------------- # Option: Layout # ------------------------------------------------------------------------------------------- # Here is the key the appender will use to populate with the value of the # system's canonical hostname .... look at the layout usage at the end of this file # to see how you might want to use it log4j.appender.NAGIOS.MDCCanonicalHostNameKey=nagios_canonical_hostname # ------------------------------------------------------------------------------------------- # Option: Layout # ------------------------------------------------------------------------------------------- # # The Nagios appender supports standard layouts # log4j.appender.NAGIOS.layout=org.apache.log4j.PatternLayout # Here is a rather typical definition .... log4j.appender.NAGIOS.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n # Here is a layout that embeds the server name into the message delivered to Nagios ... not really # necessary if we're already using the HOST parameter for this information, but if we're using the # HOST parameter for a virtual name .... like 'APP_SERVER', then we can add a little context by # including the physical hostname in the message. The resulting message sent to nagios would # then contain the physical hostname pre-pended to the raw message. #log4j.appender.NAGIOS.layout.ConversionPattern=%X{nagios_canonical_hostname}: %m%n log4j.appender.NAGIOS.SendStartupMessageOK=Application Starting