作為運維人員,熟悉系統日志是一項基本功。本文將介紹centos6的系統日志rsyslog及loganalyzer工具。
簡介
系統日志:記錄歷史事件,通常都是按時間順序將發生的事件予以記錄,linux上的日志分為syslogd(系統進程相關日志)和klogd(內核事件日志)
centos5:syslog
缺點:不能進行并行數據存儲,效率低,不能實現放在專用數據管理文件中
centos6:rsyslog
優點:
1、支持多線程
2、基于tcp,tls,relp放在遠程日志服務器中,早期的syslog僅支持簡單的文本傳輸模式實現日志發送,不安全
3、支持將日志放到mysql,pgsql,oracle等多種數據庫中
4、強大的過濾器,可實現過濾系統信息中的任意部分
5、支持完整的輸出格式配置(自定義格式),特別適合企業級需求
facility:設施,從功能或程序上對日志進行分類,并由專門的工具負責記錄其日志,不是syslog一個進程來接受,而是由代理人幫忙接受并記錄下來
auth:認證相關
authpriv
cron
daemon:進程相關
lpr:打印機相關
mail:郵件相關
kern:內核相關
mark:防火墻標記相關
news:新聞組
security:安全
syslog:系統日志
user:用戶相關
uucp:unix to unix copy
local0 through local7:8個自定義的設施
指定設施可以使用通配符:
*:所有設備
f1;f2;f3:列表
!:取反
日志級別:
debug
notice
warn|warning(此級別及以上級別都應該重視)
error
crit(藍色警戒,再不處理就掛了)
alert(橙色警戒)
emerg|panic(紅色警戒)
能使用的通配符:
*:所有級別
none:不記錄
target(將保存至的目標文件):
文件:例如/var/log/message
用戶:*當前系統登錄的所有用戶
日志服務器:@server_ip
管道:| command
事件格式:
時間 主機 進程 事件本身
配置文件:/etc/rsyslog.conf或/etc/rsyslog.d/*
配置文件段落: [root@stu etc]# grep '###' /etc/rsyslog.conf #### MODULES #### #### GLOBAL DIRECTIVES #### #### RULES #### # ### begin forwarding rule ### # ### end of the forwarding rule ###
格式:facility.priority target
例如:
mail.info /var/log/maillog info及以上級別
mail.=info /var/log/maillog 明確指定級別
mail.!info 除了指定級別
*.info 所有facility的info及以上級別
mail.* mail的所有級別
mail,news.info mail和news的info及以上級別
mail.notice;news.info如果級別不同,使用;分隔
*.info | command
日志一般是同步的,只有產生日志,就從內存寫到磁盤,若使用異步,則在target前面加–
例1:日志服務器
服務器端:
去掉注釋并重啟即可打開日志服務器功能 # Provides UDP syslog reception $ModLoad imudp $UDPServerRun 514 # Provides TCP syslog reception $ModLoad imtcp $InputTCPServerRun 514 重啟日志服務器 [root@stu etc]# service rsyslog restart Shutting down system logger: [ OK ] Starting system logger: [ OK ] 查看端口: [root@stu etc]# netstat -tnulp | grep 514 tcp 0 0 0.0.0.0:514 0.0.0.0:* LISTEN 1398/rsyslogd tcp 0 0 :::514 :::* LISTEN 1398/rsyslogd udp 0 0 0.0.0.0:514 0.0.0.0:* 1398/rsyslogd udp 0 0 :::514 :::* 1398/rsyslogd
客戶端:
修改配置文件: #*.info;mail.none;authpriv.none;cron.none /var/log/messages *.info;mail.none;authpriv.none;cron.none @192.168.0.20 重啟: [root@stu ~]# service rsyslog restart Shutting down system logger: [ OK ] Starting system logger: [ OK ] 測試安裝zsh: [root@stu ~]# yum -y install zsh 查看服務器日志: [root@stu log]# tail -l /var/log/messages Mar 13 10:00:49 stu ntpd[1211]: 0.0.0.0 c016 06 restart Mar 13 10:00:49 stu ntpd[1211]: 0.0.0.0 c012 02 freq_set kernel 11.318 PPM Mar 13 10:00:50 stu ntpd[1211]: 0.0.0.0 c615 05 clock_sync Mar 13 10:09:58 stu kernel: Kernel logging (proc) stopped. Mar 13 10:09:58 stu rsyslogd: [origin software="rsyslogd" swVersion="5.8.10" x-pid="1048" x-info="http://www.rsyslog.com"] exiting on signal 15. Mar 13 10:09:58 stu kernel: imklog 5.8.10, log source = /proc/kmsg started. Mar 13 10:09:58 stu rsyslogd: [origin software="rsyslogd" swVersion="5.8.10" x-pid="1398" x-info="http://www.rsyslog.com"] start Mar 13 10:12:11 stu kernel: imklog 5.8.10, log source = /proc/kmsg started. Mar 13 10:12:11 stu rsyslogd: [origin software="rsyslogd" swVersion="5.8.10" x-pid="1336" x-info="http://www.rsyslog.com"] start Mar 13 10:13:45 stu yum[1344]: Installed: zsh-4.3.11-4.el6.centos.x86_64
例2:將日志放到mysql中
實現該功能需要用模塊來實現,用驅動連接
安裝mysql-server,rsyslog-mysql: [root@stu log]# yum -y install mysql-server rsyslog-mysql 查看生成文件: [root@stu log]# 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 #模板 啟動mysql [root@stu ~]# service mysqld start 編輯/etc/rsyslog.conf 模塊端添加: #log event to mysql $ModLoad ommysql roles端添加: *.info :ommysql:127.0.0.1,Syslog,rsysloguser,rsyslogpass 導入文件(即創建數據庫): [root@stu ~]# mysql < /usr/share/doc/rsyslog-mysql-5.8.10/createDB.sql 進入數據庫: [root@stu ~]# mysql 查看數據庫: mysql> SHOW DATABASES; +--------------------+ | Database | +--------------------+ | information_schema | | Syslog | | mysql | | test | +--------------------+ 4 rows in set (0.05 sec) 使用Syslog: mysql> USE Syslog; 查看表: mysql> SHOW TABLES; +------------------------+ | Tables_in_Syslog | +------------------------+ | SystemEvents | | SystemEventsProperties | +------------------------+ 2 rows in set (0.01 sec) 創建用戶、密碼 mysql> GRANT ALL ON Syslog.* TO rsysloguser@127.0.0.1 IDENTIFIED BY 'rsyslogpass'; Query OK, 0 rows affected (0.01 sec) mysql> GRANT ALL ON Syslog.* TO rsysloguser@localhost IDENTIFIED BY 'rsyslogpass'; Query OK, 0 rows affected (0.00 sec) 刷新權限: mysql> FLUSH PRIVILEGES; Query OK, 0 rows affected (0.00 sec) 重啟rsyslog: [root@stu ~]# service rsyslog restart Shutting down system logger: [ OK ] Starting system logger: [ OK ]
客戶端安裝tree:
[root@stu log]# yum -y install tree
查看客戶端日志:
[root@stu log]# tail -l /var/log/messages
查看服務器日志:
[root@stu ~]# tail -l /var/log/messages Mar 13 10:24:15 stu kernel: Kernel logging (proc) stopped. Mar 13 10:24:15 stu rsyslogd: [origin software="rsyslogd" swVersion="5.8.10" x-pid="1398" x-info="http://www.rsyslog.com"] exiting on signal 15. Mar 13 10:24:16 stu kernel: imklog 5.8.10, log source = /proc/kmsg started. Mar 13 10:24:16 stu rsyslogd: [origin software="rsyslogd" swVersion="5.8.10" x-pid="1600" x-info="http://www.rsyslog.com"] start Mar 13 10:25:54 stu yum[1621]: Updated: mysql-libs-5.1.73-5.el6_6.x86_64 Mar 13 10:25:54 stu yum[1621]: Installed: mysql-5.1.73-5.el6_6.x86_64 Mar 13 10:31:35 stu ntpd[1177]: 0.0.0.0 0617 07 panic_stop +3285 s; set clock manually within 1000 s. Mar 13 10:32:18 stu ntpd[1211]: 0.0.0.0 0617 07 panic_stop +3285 s; set clock manually within 1000 s. Mar 13 10:34:31 stu kernel: Kernel logging (proc) stopped. Mar 13 10:34:31 stu rsyslogd: [origin software="rsyslogd" swVersion="5.8.10" x-pid="1600" x-info="http://www.rsyslog.com"] exiting on signal 15.
查看服務器mysql:
mysql> USE Syslog; mysql> SELECT * FROM SystemEvents; +----+------------+---------------------+---------------------+----------+----------+----------+---------------------------------------------------------------------------------------------------------------------+------------+------------+-------------+-----------+---------------+---------+-----------------+--------------+-----------+----------+----------+------------+------------+--------------+-----------------+----------+ | ID | CustomerID | ReceivedAt | DeviceReportedTime | Facility | Priority | FromHost | Message | NTSeverity | Importance | EventSource | EventUser | EventCategory | EventID | EventBinaryData | MaxAvailable | CurrUsage | MinUsage | MaxUsage | InfoUnitID | SysLogTag | EventLogType | GenericFileName | SystemID | +----+------------+---------------------+---------------------+----------+----------+----------+---------------------------------------------------------------------------------------------------------------------+------------+------------+-------------+-----------+---------------+---------+-----------------+--------------+-----------+----------+----------+------------+------------+--------------+-----------------+----------+ | 1 | NULL | 2016-03-13 11:46:42 | 2016-03-13 11:46:42 | 0 | 6 | stu | Kernel logging (proc) stopped. | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 1 | kernel: | NULL | NULL | NULL | | 2 | NULL | 2016-03-13 11:46:42 | 2016-03-13 11:46:42 | 5 | 6 | stu | [origin software="rsyslogd" swVersion="5.8.10" x-pid="1673" x-info="http://www.rsyslog.com"] exiting on signal 15. | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 1 | rsyslogd: | NULL | NULL | NULL | | 3 | NULL | 2016-03-13 11:46:43 | 2016-03-13 11:46:43 | 0 | 6 | stu | imklog 5.8.10, log source = /proc/kmsg started. | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 1 | kernel: | NULL | NULL | NULL | | 4 | NULL | 2016-03-13 11:46:43 | 2016-03-13 11:46:43 | 5 | 6 | stu | [origin software="rsyslogd" swVersion="5.8.10" x-pid="2794" x-info="http://www.rsyslog.com"] start | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 1 | rsyslogd: | NULL | NULL | NULL | | 5 | NULL | 2016-03-13 11:47:02 | 2016-03-13 11:47:02 | 5 | 6 | stu | [origin software="rsyslogd" swVersion="5.8.10" x-pid="1336" x-info="http://www.rsyslog.com"] rsyslogd was HUPed | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 1 | rsyslogd: | NULL | NULL | NULL | | 6 | NULL | 2016-03-13 11:48:40 | 2016-03-13 11:48:40 | 1 | 6 | stu | Installed: tree-1.5.3-3.el6.x86_64 | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 1 | yum[1620]: | NULL | NULL | NULL | +----+------------+---------------------+---------------------+----------+----------+----------+---------------------------------------------------------------------------------------------------------------------+------------+------------+-------------+-----------+---------------+---------+-----------------+--------------+-----------+----------+----------+------------+------------+--------------+-----------------+----------+ 6 rows in set (0.00 sec)
例3:通過loganalyzer展示
此軟件依賴于lamp平臺
安裝lamp:
[root@stu ~]# yum –y install httpd php php-mysql php-gd mysql-server
啟動httpd:
[root@stu ~]# service httpd start Starting httpd: httpd: Could not reliably determine the server's fully qualified domain name, using 192.168.0.20 for ServerName [ OK ]
編輯測試頁:
vim /var/www/index.php <?php phpinfo(); ?>
訪問web:
刪除測試頁
解壓loganalyzer:
[root@stu ~]# tar xf loganalyzer-3.6.5.tar.gz
創建log目錄
[root@stu ~]# mkdir /var/www/html/log
復制文件
[root@stu log]# cp /root/loganalyzer-3.6.5/src/* . [root@stu log]# cp /root/loganalyzer-3.6.5/contrib/* . [root@stu log]# chmod +x ./configure.sh [root@stu log]# chmod +x ./secure.sh [root@stu log]# ./configure.sh [root@stu log]# ./secure.sh [root@stu log]# chmod 666 config.php [root@stu log]# chown -R apache.apache ./*
訪問:
紅色框為之前填寫的數據庫名,表名,用戶名,密碼
原創文章,作者:黑白子,如若轉載,請注明出處:http://www.www58058.com/12748
確實很認真,但少了很多層次感