This is the multi-page printable view of this section.
Click here to print.
Return to the regular view of this page.
graphite: Send metrics to Graphite
The graphite()
destination can send metrics to a Graphite server to store numeric time-series data. There are many ways to feed the Graphite template function with name value pairs. The AxoSyslog CSV and PatternDB parsers (for details, see Using pattern parsers) can parse log messages and generate name value pairs based on message content. The CSV parser (for details, see Parsing messages with comma-separated and similar values) can be used for logs that have a constant field based structure, like the Apache web server access logs. The [patterndb() parser] can parse information and can extract important fields from free form log messages, as long as patterns describing the log messages are available. Another way is to send JSON-based log messages (for details, see JSON parser) to AxoSyslog, like running a simple shell script collecting metrics and running it from cron regularly.
Declaration:
Example: Using the graphite() driver
To use the graphite()
destination, the only mandatory parameter is payload, which specifies the value pairs to send to Graphite. In the following example any value pairs starting with "monitor."
are forwarded to Graphite.
destination d_graphite { graphite(payload("--key monitor.*")); };
Note
The
graphite()
destination is only a wrapper around the
network()
destination and the
graphite-output
template function. If you want to fine-tune the TCP parameters, use the
network()
destination instead, as described in
graphite-output.
1 - graphite() destination options
The graphite()
destination has the following options:
hook-commands()
Description: This option makes it possible to execute external programs when the relevant driver is initialized or torn down. The hook-commands()
can be used with all source and destination drivers with the exception of the usertty()
and internal()
drivers.
Note
The AxoSyslog application must be able to start and restart the external program, and have the necessary permissions to do so. For example, if your host is running AppArmor or SELinux, you might have to modify your AppArmor or SELinux configuration to enable AxoSyslog to execute external applications.
Using hook-commands()
when AxoSyslog starts or stops
To execute an external program when AxoSyslog starts or stops, use the following options:
startup()
Type: |
string |
Default: |
N/A |
Description: Defines the external program that is executed as AxoSyslog starts.
shutdown()
Type: |
string |
Default: |
N/A |
Description: Defines the external program that is executed as AxoSyslog stops.
Using the hook-commands() when AxoSyslog reloads
To execute an external program when the AxoSyslog configuration is initiated or torn down, for example, on startup/shutdown or during a AxoSyslog reload, use the following options:
setup()
Type: |
string |
Default: |
N/A |
Description: Defines an external program that is executed when the AxoSyslog configuration is initiated, for example, on startup or during a AxoSyslog reload.
teardown()
Type: |
string |
Default: |
N/A |
Description: Defines an external program that is executed when the AxoSyslog configuration is stopped or torn down, for example, on shutdown or during a AxoSyslog reload.
Example: Using hook-commands() with a network source
In the following example, the hook-commands()
is used with the network()
driver and it opens an iptables port automatically as AxoSyslog is started/stopped.
The assumption in this example is that the LOGCHAIN
chain is part of a larger ruleset that routes traffic to it. Whenever the AxoSyslog created rule is there, packets can flow, otherwise the port is closed.
source {
network(transport(udp)
hook-commands(
startup("iptables -I LOGCHAIN 1 -p udp --dport 514 -j ACCEPT")
shutdown("iptables -D LOGCHAIN 1")
)
);
};
host()
|
|
Type: |
hostname or IP address |
Default: |
localhost |
Description: The hostname or IP address of the Graphite server.
port()
|
|
Type: |
number |
Default: |
2003 |
Description: The port number of the Graphite server.
payload()
Type: |
parameter list of the payload() option |
Default: |
empty string |
Description: The payload() option allows you to select which value pairs to forward to graphite.
The syntax of payload
is different from the syntax of value-pairs()
: use the command-line syntax used in the format-json template function. For details on using the payload() option, see graphite-output.
Note
If left empty, there is no data to be forwarded to Graphite.