Rsyslog

Rsyslog

Rsyslog

用途

针对系统日志进行管理,分类放置

配置

规则定义 facility.priority action 设备,级别 动作

设备

  • auth pam产生的日志
  • authpriv ssh,ftp等登录信息的验证信息
  • cron 时间任务相关
  • ftp FTP守护进程的信息
  • kern 内核
  • lpr 打印
  • mail 邮件
  • mark(syslog)–rsyslog 服务内部的信息,时间标识
  • news 新闻组
  • user 用户程序产生的相关信息
  • uucp unix to unix copy, unix主机之间相关的通讯
  • local 1~7 自定义的日志设备

级别

级别字段说明

  • debug 有调式信息的,日志信息最多
  • info 一般信息的日志,最常用
  • notice 最具有重要性的普通条件的信息
  • warning 警告级别
  • err 错误级别,阻止某个功能或者模块不能正常工作的信息
  • crit 严重级别,阻止整个系统或者整个软件不能正常工作的信息
  • alert 需要立刻修改的信息
  • emerg 内核崩溃等严重信息
  • none 什么都不记录

动作

动作字段说明

  • filename 指定绝对路径的日志文件名来记录日志信息
  • :omusrmsg:users 发送信息到指定的用户,users可以是用逗号分隔符的用户类别,*表示所有用户
  • device 将信息发送到指定设备中,如/dev/console
  • 将日志记录到命令管道,用于日志调试非常方便

  • @hostname 将信息发送可解析远程主机hostname或IP,该主机必须正在运行rsyslogd,并可以识别rsyslog的配置文件,使用upd:514端口传送日志信息
  • @@hostname 将信息发送可解析远程主机hostname或IP,该主机必须正在运行rsyslogd,并可以识别rsyslog的配置文件,使用tcp:514端口传送日志信息

以设置prometheus日志为例

正常我们的可以放到local0-local7里面,所以比较简单

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# prometheus -h|grep -A2 -B2 log
 == LOG ==

   -log.format "\"logger:stderr\""
      Set the log target and format. Example:
      "logger:syslog?appname=bob&local=7" or "logger:stdout?json=true"

   -log.level "\"info\""
      Only log messages with the given severity or above. Valid levels:
      [debug, info, warn, error, fatal]

[root@xxx ~]# cat /usr/lib/systemd/system/prometheus.service
# -*- mode: conf -*-

[Unit]
Description=The Prometheus monitoring system and time series database.
Documentation=https://prometheus.io
After=network.target
After=syslog.target

[Service]
EnvironmentFile=-/etc/default/prometheus
User=prometheus
ExecStart=/usr/bin/prometheus \
          -config.file=/etc/prometheus/prometheus.yml \
          -storage.local.path=/var/lib/prometheus/data \
          -web.console.libraries=/usr/share/prometheus/console_libraries \
          -web.console.templates=/usr/share/prometheus/consoles \
          -log.format "logger:syslog?appname=prometheus&local=2" \
          $PROMETHEUS_OPTS
ExecReload=/bin/kill -HUP $MAINPID
StandardOutput=/var/log/prometheus.log
StandardError=/var/log/prometheus.log
Restart=on-failure

[Install]
WantedBy=multi-user.target
[root@xxx ~]# cat /etc/rsyslog.conf |grep prome
local2.* /var/log/prometheus.log

但其实这里是不准确的,我们可以加入contains或者programname的逻辑来区别 修改成这样

1
2
3
4
5
6
if $programname == 'prometheus' then {
   action(type="omfile" file="/var/log/prometheus.log")
   stop

}
# /var/log/messages的相关配置