问题:

syslog与rsyslogd有什么关系?rsyslogd是syslog的升级版 如何增加自定义服务?通过local0 ~ local7可以自定义一些服务信息 如何与数据库相关联? 如何确定使用的什么协议传输?根据配置 业务场景有哪些?记录系统日志、开发业务日志 如何升级?

syslog缺点:

  • 记录丢失,默认使用UDP 514端口传输 UDP没有检测,重发等功能
  • 记录缓慢 磁盘IO利用率较高进而导致CPU阻塞影响系统性能

rsyslog优点:

  • 支持数据库
  • 日志内容筛选
  • 自定义日志格式模板
  • 支持UDP、TCP、RELP传输协议

重启服务:

systemctl restart rsyslog /etc/init.d/rsyslog restart

syslog日志消息既可以记录在本地文件中,也可以通过网络发送到接收syslog的服务器。

完整的syslog日志中包含产生日志的程序模块(Facility)、严重性(Severity或 Level)、时间、主机名或IP、进程名、进程ID和正文。

配置文件的格式 facility.level action

facility: 服务 level: 等级 action: 动作

日志服务: sysloggd:主要登录系统与网络等服务 klodg:主要登录内核产生的各项信息 logrotate:主要进行日志文件的轮替功能

日志记录的主要数据

  • 事件发生的日期与时间
  • 发生此事的主机名
  • 启动此事件的服务名或函数名称
  • 该信息的实际数据内容

服务名称(facility)

服务类型 说明
auth(authpriv) 授权信息 主要是认证有关的机制,例如login ssh eu等需要账号、密码
cron 例行性工作调度信息
daemon 守护进程、后台进程
kern 内核信息
lpr 打印相关
mail 邮件
news 与新闻服务器相关
syslog 系统信息
user 用户进程
uucp 由uucp产生的消息
local0~local7 自定义程序使用

消息级别(level)一下表中为由高到低

等级名称 说明
* 所有级别,除了none
none 没有重要级,通常用于排错(不记录任何日志消息)
debug 不包含函数条件或问题的其他信息(调试级-信息量最多)
info 仅是一些基本的消息(通知类)
notice 具有重要性的普通消息(普通单重要的消息)
warning(warn) 阻止某些工具或子系统功能实现的错误条件(重要消息)
error(err) 阻止工具或某些子系统部分功能实现的错误条件(出错消息
crit 比error还要严重
alert 需要立即被修改的条件(紧急消息)
panic 该系统不可用(最紧急消息)

服务与等级之间的连接符“.=!” . 代表比当前等级要高(包含自己)的都要记录下来 .= 仅记录后面标记的等级 .! 记录处后面的所有等级

信息记录的文件名、设备、主机(action 动作域)

  • 文件的绝对路径:通常记录到 /var/log/
  • 打印机或其他:/dev/lp0
  • 用户名称:显示给某用户
  • 远程主机:例如@www.vbird.tsai
    • :代表在线的所有人

封装好的调用函数 bool openlog ( string $ident , int $option , int $facility ) bool syslog ( int $priority , string $message ) bool closelog ( void )

rsyslog服务配置案例:

$ModLoad imuxsock # provides support for local system logging (e.g. via logger command)
$ModLoad imklog   # provides kernel logging support (previously done by rklogd)
$ModLoad imudp        #应用UDP协议模块
$UDPServerRun 514      #设置UDP使用的端口
$ModLoad imtcp        #应用tcp协议模块
$InputTCPServerRun 514     #设置TCP使用的端口
$AllowedSender tcp, 192.168.18.248          #设置允许的iP
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
$template Remote,"/data/log/%fromhost-ip%/%fromhost-ip%_%$YEAR%-%$MONTH%-%$DAY%.log"
:fromhost-ip, !isequal, "127.0.0.1" ?Remote #过滤本机的日志
$IncludeConfig /etc/rsyslog.d/*.conf
*.info;mail.none;authpriv.none;cron.none                /var/log/messages
authpriv.*                                              /var/log/secure
mail.*                                                  -/var/log/maillog
cron.*                                                  /var/log/cron
*.emerg                                                 *
uucp,news.crit                                          /var/log/spooler
local7.*                                                /var/log/boot.log

配置文件

加载模块 Module (load="imuxsock") $ModLoad imuxsock

日志记录格式 $ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat #默认格式

$template name , "路径" #定义一种模板 $template Remote,"/data/log/%fromhost-ip%/%fromhost-ip%_%$YEAR%-%$MONTH%-%$DAY%.log"

参考:

[RSYSLOG服务实时传输日志配置请添加链接描述](https://www.cnblogs.com/blueswu/p/3564763.html)
[syslog简介——系统日志写入API请添加链接描述](https://www.cnblogs.com/bonelee/p/6234647.html)
[Rsyslog的远程传输日志(系统日志篇)请添加链接描述](http://blog.csdn.net/love910809/article/details/70761526)	
[官方参考手册请添加链接描述](http://www.rsyslog.com/guides-for-rsyslog/)