介绍Linux Syslog基础与相关配置。syslog常被称为系统日志或系统记录,是一种用来在互联网协议(TCP/IP)的网上中传递记录档消息的标准。syslog是Linux系统默认的日志守护进程。。syslog日志消息既可以记录在本地文件中,也可以通过网络发送到接收syslog的服务器。接收syslog的服务器可以对多个设备的syslog消息进行统一的存储,或者解析其中的内容做相应的处理。常见的应用场景是网络管理工具、安全管理系统、日志审计系统。 完整的syslog日志中包含产生日志的程序模块(Facility)、严重性(Severity或 Level)、时间、主机名或IP、进程名、进程ID和正文。我们开发的Java程序或者C程序也可以调用SYSLOG接口给syslog日志服务器实时发送日志,我们自己程序一般使用USER.NOTICE。
Redhat6.5 Syslog配置
架构说明: 1台日志发送服务器(可以是各种设备或者应用服务器),1台日志收集服务器(负责统一收集各种设备的日志)
日志收集服务器配置
假设当前日志收集服务器IP地址为192.168.33.226,主机名host1
vi /etc/rsyslog.conf
- 打开如下配置,分别是启用日志,UDP接收,TCP接收,日志路径
1
2
3
4
5
6
7
8
9
10
11
12
13
14$ModLoad imuxsock # provides support for local system logging (e.g. via logger command)
$ModLoad imklog # provides kernel logging support (previously done by rklogd)
# Provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514
# Provides TCP syslog reception
$ModLoad imtcp
$InputTCPServerRun 514
# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none /var/log/messages vi /etc/sysconfig/rsyslog
1
SYSLOGD_OPTIONS="-r -c 5"
- 重启进程
service rsyslog restart
- 查看日志
tail -f /var/log/messages
- 本机测试日志
logger –p authpriv.notice "Hello"
/var/logmessages
中出现Sep 19 08:18:39 host1 root: authpriv.notice Hello
- 查看网络信息
netstat -tulpn | grep rsyslog
客户端日志服务配置
配置一台服务器host2,往日志收集服务器192.168.33.226发送日志信息
vi /etc/rsyslog.conf
添加发送所有日志倒226的配置,可以根据需要调整,*.*
与@
通过TAB隔开1
2
3
4$ModLoad imuxsock # provides support for local system logging (e.g. via logger command)
$ModLoad imklog # provides kernel logging support (previously done by rklogd)
*.* @192.168.33.226- 重启进程
service rsyslog restart
- 查看192.168.33.226服务器的日志
tail -f /var/log/messages
- 测试日志
logger –p authpriv.notice "Hello"
- 192.168.33.226服务器的日志打印出:
Sep 19 08:28:21 host2 root: authpriv.notice Hello
配置说明
/etc/syslog.conf
文件格式 facility.level action
action和facility.level之间使用TAB隔开
facility 消息类型:
1 | kern 内核信息,首先通过 klogd 传递 |
level 消息级别:
1 | emerg 或 panic 该系统不可用(最紧急消息) |
日志信息可以分别记录到多个文件里,还可以发送到命名管道、其他程序甚至另一台机器。包括三类:
1 | file 指定文件的绝对路径 |
API
Linux C中提供一套系统日记写入接口,包括三个函数:openlog,syslog和closelog。
JAVA 可以自行封装一个UdpClientSocket进行发送