內容:mysql
一、rsyslog日誌服務簡介linux
二、rsyslog的配置詳解sql
三、實現日誌服務器收集日誌及last、lastb、dmseg命令的使用數據庫
四、實現日誌存儲在mysql中centos
1、rsyslog日誌服務簡介安全
日誌的概念好理解,日誌做用可用於排障和追溯審計的等bash
一、rsyslog是一個C/S架構的服務,可監聽於某套接字,幫其它主機記錄日誌信息,在linux系統中能夠分類兩個日誌:服務器
klogd:kernel,記錄內核相關的日誌多線程
syslogd:service,記錄應用程序的日誌架構
rsyslog:是CentOS 6之後的系統使用的日誌系統,與以前的syslog日誌系統相比,具備如下優勢:
支持多線程
支持TCP、SSL、TLS、RELP等協議
強大的過濾器,可實現過濾日誌信息中的任意部分
支持自定義輸出格式
適用於企業級別日誌記錄需求
模塊化
二、日誌的記錄格式
日期時間 主機進程[pid]:事件內容
2、rsyslog配置
一、程序包:rsyslog
程序環境:
配置文件:/etc/rsyslog.conf, /etc/rsyslog.d/
主程序:/usr/sbin/rsyslogd
模塊路徑:/usr/lib64/rsyslog/
Unit File:/usr/lib/systemd/system/rsyslog.service
二、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)
三、配置文件:
由三部分組成:嚴格按照配置段位置添加配置
[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中;「-」表明異步模式
3、實現日誌服務器收集日誌
前面已經介紹,rsyslog是一個C/S架構,能夠經過套接字來進行監聽記錄工做,起能夠基於TCP和UDP工做,默認的監聽端口是514,只須要在modules打開便可:
一、修改服務端配置,打開服務監聽端口,並重啓服務:
#### 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 ]
二、在客戶端的配置中,定義將日誌發往服務端:
#### RULES #### *.* @10.1.252.109
三、服務端已經收到日誌:
[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:
四、其它幾個日誌文件:
last -num:記錄登陸系統成功的記錄
lastb -num :記錄登陸系統失敗的記錄
命令的讀取日誌文件:
/var/log/btmp:登陸當前系統的全部的失敗的嘗試;
/var/log/wtmp:全部成功登陸至當前系統的相關信息;
dmesg:系統引導過程當中的日誌信息;
/var/log/dmesg:系統引導過程當中的日誌信息;
文本查看工具;
也可使用dmesg命令;
4、實現日誌存儲在mysql中
前提:準備好msql server或mariadb server;
一、安裝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便可
二、在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
三、導入該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)
四、配置rsyslog加載ommysql模塊
#### MODULES #### ...... $ModLoad ommysql
五、配置RULES,將所指望的日誌信息記錄於mysql中;
其格式爲:
facility.priority :ommysql:DBHOST,DB,DBUSER,DBUSERPASS
因此添加如下信息:
*.* :ommysql:127.0.0.1,Syslog,rsyslog,123456
六、啓動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)
OK,更多文章請關注個人博客。