| # 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 | |