一、rsyslog日志服務簡介
二、rsyslog的配置詳解
三、實現日志服務器收集日志及last、lastb、dmseg命令的使用
四、實現日志存儲在mysql中
一、rsyslog日志服務簡介
日志的概念好理解,日志作用可用于排障和追溯審計的等
1、rsyslog是一個C/S架構的服務,可監聽于某套接字,幫其它主機記錄日志信息,在linux系統中可以分類兩個日志:
klogd:kernel,記錄內核相關的日志
syslogd:service,記錄應用程序的日志
rsyslog:是CentOS 6以后的系統使用的日志系統,與之前的syslog日志系統相比,具有以下優點:
支持多線程
支持TCP、SSL、TLS、RELP等協議
強大的過濾器,可實現過濾日志信息中的任意部分
支持自定義輸出格式
適用于企業級別日志記錄需求
模塊化
2、日志的記錄格式
日期時間 主機 進程[pid]:事件內容
二、rsyslog配置
1、程序包:rsyslog
程序環境:
配置文件:/etc/rsyslog.conf, /etc/rsyslog.d/
主程序:/usr/sbin/rsyslogd
模塊路徑:/usr/lib64/rsyslog/
Unit File:/usr/lib/systemd/system/rsyslog.service
2、rsyslog中的術語:
facility:設施、信道;
auth, authpriv, cron, daemon, kern, lpr, mail, mark, news, security, user, uucp, syslog, local0-local7
priority:記錄日志的等級,如果等級是info,代表包含了info以及以上的所有等級事件日志都記錄
debug, info, notice, warn(warning), err(error), crit(critical), alert, emerg(panic)
3、配置文件:
由三部分組成:嚴格按照配置段位置添加配置
[12:58 root@centos6.8~]# grep "####" /etc/rsyslog.conf #### MODULES #### #### GLOBAL DIRECTIVES #### #### RULES ####
MODULES:定義了模塊的選修,如接下來的使用mysql模塊記錄日志則需要在這里配置
GLOBAL DIRECTIVES:定義了全局的環境
RULES:定義了記錄日志的設施以及等級等信息
其格式為:
日志定義格式: facility.priority Target facility: 設施,從功能或程序上對日志進行分類,并由專門的工具負責記錄日志; 常用的facility: lpr: 打印相關的日志 auth:認證相關的日志 user:用戶相關的日志 cron:計劃任務相關的日志 kern:內核相關的日志 mail:郵件相關的日志 mark:標記相關的日志 news:新聞相關的日志 uucp:文件copy相關的日志 daemon:系統服務相關的日志 authpri: 授權相關的日志 security:安全相關的日志 local0-local7:自定義相關的日志信息(自定義時可以使用通配符) 通配符: *:所有 f1,f2,f3......:列表 !:取反 priority:日志級別 常用的日志級別: debug: 調試 info: 消息 notice: 注意 warn,warning: 警告 err,error: 錯誤 crit: 嚴重級別 alert: 需要立即修改該的信息 emerg,panic: 內核崩潰,內核恐慌等嚴重的信息 通配符: *:所有日志級別 none:沒有任何級別,也就是不記錄日志信息 Target:文件路徑 可以使用的有: /var/log/messages 用戶:*當前登錄系統的所有用戶 日志服務器:@SERAVER_IP 管道:| COMMAND
舉例: mail.info /var/log/maillog: 比指定級別更高的日志級別,包括指定級別自身,保存到/var/log/maillog中 mail.=info /var/log/maillog: 明確指定日志級別為info,保存至/var/log/maillog mail.!info /var/log/maillog: 除了指定的日志級別(info)所有日志級別信息,保存至/var/log/maillog *.info /var/log/maillog: 所有facility的info級別,保存至/var/log/maillog mail.* /var/log/maillog: mail的所有日志級別信息,都保存至/var/log/maillog mail.notice;news.info /var/log/maillog: mail的notice以上記得日志級別和news的info以上的級別保存至/var/log/maillog mail,news.crit -/var/log/maillog: mail和news的crit以上的日志級別保存/var/log/maillog中;“-”代表異步模式
三、實現日志服務器收集日志
前面已經介紹,rsyslog是一個C/S架構,可以通過套接字來進行監聽記錄工作,起可以基于TCP和UDP工作,默認的監聽端口是514,只需要在modules打開即可:
1、修改服務端配置,打開服務監聽端口,并重啟服務:
#### modules #### ………… # Provides UDP syslog reception $ModLoad imudp $UDPServerRun 514 # Provides TCP syslog reception $ModLoad imtcp $InputTCPServerRun 514 [13:05 root@centos6.8~]# service rsyslog restart Shutting down system logger: [ OK ] Starting system logger: [ OK ]
2、 在客戶端的配置中,定義將日志發往服務端:
#### RULES #### *.* @10.1.252.109
3、服務端已經收到日志:
[13:15 root@centos6.8~]# tail /var/log/messages Oct 16 12:48:36 centos6 kdump: started up Oct 16 12:48:39 centos6 abrtd: Init complete, entering main loop Oct 16 13:05:50 centos6 kernel: Kernel logging (proc) stopped. Oct 16 13:05:50 centos6 rsyslogd: [origin software="rsyslogd" swVersion="5.8.10" x-pid="1547" x-info="http://www.rsyslog.com"] exiting on signal 15. Oct 16 13:05:50 centos6 kernel: imklog 5.8.10, log source = /proc/kmsg started. Oct 16 13:05:50 centos6 rsyslogd: [origin software="rsyslogd" swVersion="5.8.10" x-pid="2418" x-info="http://www.rsyslog.com"] start Oct 18 10:20:43 localhost kernel: imklog 5.8.10, log source = /proc/kmsg started. Oct 18 10:20:43 localhost rsyslogd: [origin software="rsyslogd" swVersion="5.8.10" x-pid="2205" x-info="http://www.rsyslog.com"] start Oct 18 10:26:20 localhost root: Oct 18 10:26:20 localhost root:
4、其它幾個日志文件:
last -num:記錄登錄系統成功的記錄
lastb -num :記錄登錄系統失敗的記錄
命令的讀取日志文件:
/var/log/btmp:登錄當前系統的所有的失敗的嘗試;
/var/log/wtmp:所有成功登錄至當前系統的相關信息;
dmesg:系統引導過程中的日志信息;
/var/log/dmesg:系統引導過程中的日志信息;
文本查看工具;
也可以使用dmesg命令;
四、實現日志存儲在mysql中
前提:準備好msql server或mariadb server;
1、安裝rsyslog連接至mysql server的驅動模塊;
[13:24 root@centos6.8~]# yum install -y rsyslog-mysql [13:24 root@centos6.8~]# rpm -ql rsyslog-mysql /lib64/rsyslog/ommysql.so /usr/share/doc/rsyslog-mysql-5.8.10 /usr/share/doc/rsyslog-mysql-5.8.10/createDB.sql
可以看到其實rsyslog模塊提供的啟動mysql的模塊還有createDB.sql,它的作用就是定義了日志的記錄表格式,可以直接導入該sql語句到mysql即可
2、在mysql server準備rsyslog專用的用戶賬號;
mysql>GRANT ALL ON Syslog.* TO 'rsyslog'@'127.0.0.1' IDENTIFIED BY 'rsyslogpass'; mysql>GRANT ALL ON Syslog.* TO 'rsyslog'@'local' IDENTIFIED BY 'rsyslogpass'; mysql> FLUSH PRICVILEGES
3、導入該sql語句到mysql即可,生成所需要的數據庫和表;
[13:24 root@centos6.8~]# mysql -ursyslog -h127.0.0.1 -p123456 < /usr/share/doc/rsyslog-mysql-5.8.10/createDB.sql mysql> USE Syslog Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> SHOW TABLES; +------------------------+ | Tables_in_Syslog | +------------------------+ | SystemEvents | | SystemEventsProperties | +------------------------+ 2 rows in set (0.00 sec) mysql> DESC SystemEvents -> ; +--------------------+------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +--------------------+------------------+------+-----+---------+----------------+ | ID | int(10) unsigned | NO | PRI | NULL | auto_increment | | CustomerID | bigint(20) | YES | | NULL | | | ReceivedAt | datetime | YES | | NULL | | | DeviceReportedTime | datetime | YES | | NULL | | | Facility | smallint(6) | YES | | NULL | | | Priority | smallint(6) | YES | | NULL | | | FromHost | varchar(60) | YES | | NULL | | | Message | text | YES | | NULL | | | NTSeverity | int(11) | YES | | NULL | | | Importance | int(11) | YES | | NULL | | | EventSource | varchar(60) | YES | | NULL | | | EventUser | varchar(60) | YES | | NULL | | | EventCategory | int(11) | YES | | NULL | | | EventID | int(11) | YES | | NULL | | | EventBinaryData | text | YES | | NULL | | | MaxAvailable | int(11) | YES | | NULL | | | CurrUsage | int(11) | YES | | NULL | | | MinUsage | int(11) | YES | | NULL | | | MaxUsage | int(11) | YES | | NULL | | | InfoUnitID | int(11) | YES | | NULL | | | SysLogTag | varchar(60) | YES | | NULL | | | EventLogType | varchar(60) | YES | | NULL | | | GenericFileName | varchar(60) | YES | | NULL | | | SystemID | int(11) | YES | | NULL | | +--------------------+------------------+------+-----+---------+----------------+ 24 rows in set (0.00 sec)
4、配置rsyslog加載ommysql模塊
#### MODULES #### ...... $ModLoad ommysql
5、配置RULES,將所期望的日志信息記錄于mysql中;
其格式為:
facility.priority :ommysql:DBHOST,DB,DBUSER,DBUSERPASS
所以添加以下信息:
*.* :ommysql:127.0.0.1,Syslog,rsyslog,123456
6、啟動mysql服務,并重啟rsyslog服務,mysql已經記錄日志,到此為止,日志信息已經成功的存儲于數據庫中;
mysql> SELECT * FROM SystemEvents\G *************************** 1. row *************************** ID: 1 CustomerID: NULL ReceivedAt: 2016-10-16 13:35:46 DeviceReportedTime: 2016-10-16 13:35:46 Facility: 0 Priority: 6 FromHost: centos6 Message: imklog 5.8.10, log source = /proc/kmsg started. NTSeverity: NULL Importance: NULL EventSource: NULL EventUser: NULL EventCategory: NULL EventID: NULL EventBinaryData: NULL MaxAvailable: NULL CurrUsage: NULL MinUsage: NULL MaxUsage: NULL InfoUnitID: 1 SysLogTag: kernel: EventLogType: NULL GenericFileName: NULL SystemID: NULL *************************** 2. row *************************** ID: 2 CustomerID: NULL ReceivedAt: 2016-10-16 13:35:46 DeviceReportedTime: 2016-10-16 13:35:46 Facility: 5 Priority: 6 FromHost: centos6 Message: [origin software="rsyslogd" swVersion="5.8.10" x-pid="3081" x-info="http://www.rsyslog.com"] start NTSeverity: NULL Importance: NULL EventSource: NULL EventUser: NULL EventCategory: NULL EventID: NULL EventBinaryData: NULL MaxAvailable: NULL CurrUsage: NULL MinUsage: NULL MaxUsage: NULL InfoUnitID: 1 SysLogTag: rsyslogd: EventLogType: NULL GenericFileName: NULL SystemID: NULL *************************** 3. row *************************** ID: 3 CustomerID: NULL ReceivedAt: 2016-10-16 13:35:50 DeviceReportedTime: 2016-10-18 10:48:37 Facility: 18 Priority: 6 FromHost: localhost Message: nidhai NTSeverity: NULL Importance: NULL EventSource: NULL EventUser: NULL EventCategory: NULL EventID: NULL EventBinaryData: NULL MaxAvailable: NULL CurrUsage: NULL MinUsage: NULL MaxUsage: NULL InfoUnitID: 1 SysLogTag: root: EventLogType: NULL GenericFileName: NULL SystemID: NULL *************************** 4. row *************************** ID: 4 CustomerID: NULL ReceivedAt: 2016-10-16 13:35:52 DeviceReportedTime: 2016-10-18 10:48:39 Facility: 18 Priority: 6 FromHost: localhost Message: D NTSeverity: NULL Importance: NULL EventSource: NULL EventUser: NULL EventCategory: NULL EventID: NULL EventBinaryData: NULL MaxAvailable: NULL CurrUsage: NULL MinUsage: NULL MaxUsage: NULL InfoUnitID: 1 SysLogTag: root: EventLogType: NULL GenericFileName: NULL SystemID: NULL 4 rows in set (0.00 sec)
原創文章,作者:麥德良,如若轉載,請注明出處:http://www.www58058.com/52548