Syslog

Dashboard

Telegraf / InfluxDB / Grafana as syslog receiver
Last updated: 7 months ago

Start with Grafana Cloud and the new FREE tier. Includes 10K series Prometheus or Graphite Metrics and 50gb Loki Logs

Downloads: 701

Reviews: 5

  • syslog.png
    syslog.png

Telegraf / InfluxDB / Grafana as syslog receiver

UPDATE 03/2021: Fixed the hostname variable to filter for different syslog sources

UPDATE 03/2021: Message query now uses a text box variable instead of ad-hoc query, which stopped working with Grafana 7.x

UPDATE 09/2020: Rebuilt the dashboard to take advantage of the new table panel possibilities with Grafana 7.x, e.g. dedicated severity colors.

The Syslog dashboard shows a statistics graph panel at the top, based on the timeframe chosen. Plus a table view of all messages within this timeframe, including the usual columns like message time, appname, host, severity and message text. You can zoom into specific timeframes (syslog peaks or massive errors) by just marking the area by mouse in the graph panel. The table view adjusts accordingly.

It also provides some extra filters based on appname, hostname, severity and message text.

How to store classic UDP/514 syslog in InfluxDB via rsyslog

Because Telegraf only accepts TCP syslog messages in a certain format (RFC5424), the rsyslog daemon is used to receive classic RFC3164 Syslog messages via UDP port 514 and pipe them to the local Telegraf instance. So the first step is to adapt the rsyslog.conf to our needs:

$WorkDirectory /var/spool/rsyslog  
$ActionQueueType LinkedList  
$ActionQueueFileName srvrfwd  
$ActionResumeRetryCount -1  
$ActionQueueSaveOnShutdown on  
$ModLoad imudp #loads the udp module  
$UDPServerAddress localhost 
$UDPServerRun 514 
*.* @@(o)127.0.0.1:6514;RSYSLOG_SyslogProtocol23Format

If you would like to filter between local and external syslog messages, there is the possibility of very sophisticated rulesets, for example:

:hostname, contains, "grafanapi"
*.notice @@(o)127.0.0.1:6514;RSYSLOG_SyslogProtocol23Format
:hostname, !contains, "grafanapi"
*.* @@(o)127.0.0.1:6514;RSYSLOG_SyslogProtocol23Format

Local logging messages are only forwarded when the severity level is equal or greater then notice. External Syslog messages (hostname != grafanapi) will be forwarded to Telegraf regardless of the severity level.

Visit my blog post over at NWMichl Blog for full documentation and a syslog-ng alternative.

Collector Configuration Details

[[inputs.syslog]]
  server = "tcp://localhost:6514"

[[outputs.influxdb]]
  database = "telegraf"
  username = "<username>"
  password = "<password>"
Dependencies: