日志管理
- 發送日志命令,通知用戶:logger ?-p ?local7.info “this is a test log”
Local#.info 為自定義到文件或目錄,或用戶的級別
- 日志遠程存儲需要啟動514端口,在centos7上需要取消注釋
- Uptime可以查看開機時間
rsyslog特性:CentOS6和7
ü多線程
üUDP, TCP, SSL, TLS, RELP
üMySQL, PGSQL, Oracle實現日志存儲
ü強大的過濾器,可實現過濾記錄日志信息中任意部分
ü自定義輸出格式
ELK:elasticsearch, logstash, kibana
ü非關系型分布式數據庫
ü基于apache軟件基金會jakarta項目組的項目lucene
üElasticsearch是個開源分布式搜索引擎
üLogstash對日志進行收集、分析,并將其存儲供以后使用
ükibana 可以提供的日志分析友好的 Web 界面
術語,參見man logger
üfacility:設施,從功能或程序上對日志進行歸類
auth, authpriv, cron, daemon,ftp,kern, lpr, mail, news, security(auth), user, uucp, local0-local7, syslog
üPriority 優先級別,從低到高排序
debug, info, notice, warn(warning), err(error), crit(critical), alert, emerg(panic)
ü參看幫助: man 3 syslog
Rsyslog介紹
程序包:rsyslog
主程序:/usr/sbin/rsyslogd
vCentOS 6:service rsyslog {start|stop|restart|status}
vCentOS 7:/usr/lib/systemd/system/rsyslog.service
配置文件:/etc/rsyslog.conf,/etc/rsyslog.d/*.conf
庫文件: /lib64/rsyslog/*.so
配置文件格式:由三部分組成
MODULES:相關模塊配置
GLOBAL DIRECTIVES:全局配置
RULES:日志記錄相關的規則配置
RULES配置格式: facility.priority; facility.priority… target
facility:
*: 所有的facility
facility1,facility2,facility3,…:指定的facility列表
priority:
*: 所有級別
none:沒有級別,即不記錄
PRIORITY:指定級別(含)以上的所有級別
=PRIORITY:僅記錄指定級別的日志信息
target:
文件路徑:通常在/var/log/,文件路徑前的-表示異步寫入
用戶:將日志事件通知給指定的用戶,* 表示登錄的所有用戶
日志服務器:@host,把日志送往至指定的遠程服務器記錄
管道: | COMMAND,轉發給其它命令處理
啟動網絡日志服務
通常的日志格式:
事件產生的日期時間 主機 進程(pid):事件內容
如: /var/log/messages,cron,secure等
遠程日志存儲,配置rsyslog成為日志服務器
在centos7上修改/etc/rsyslog.conf
#### MODULES ####
# Provides UDP syslog reception
$ModLoad imudp ???udp協議和端口
$UDPServerRun 514
# Provides TCP syslog reception
$ModLoad imtcp ???tcp協議和端口
$InputTCPServerRun 514
在本機上修改日志存放位置
*.info;mail.none;authpriv.none;cron.none ????@遠程主機IP/PATH(放到遠程主機的PATH位置)
@:代表UDP協議
@@:代表TCP協議
其它日志
v其它的日志文件
v/var/log/secure:系統安裝日志,文本格式,應周期性分析 (安全信息,用戶登錄,切換等信息)
v/var/log/btmp:當前系統上,用戶的失敗嘗試登錄相關的日志信息,二進制格式,lastb命令進行查看 (失敗登錄信息)
v/var/log/wtmp:當前系統上,用戶正常登錄系統的相關日志信息,二進制格式,last命令可以查看 (成功登錄信息)
v/var/log/lastlog:每一個用戶最近一次的登錄信息,二進制格式,lastlog命令可以查看
v/var/log/dmesg:系統引導過程中的日志信息,文本格式
文本查看工具查看
專用命令dmesg查看
v/var/log/messages :系統中大部分的信息
v/var/log/anaconda : anaconda的日志
日志管理journalctl(centos7可用)
vSystemd 統一管理所有 Unit 的啟動日志。帶來的好處就是,可以只用journalctl一個命令,查看所有日志(內核日志和應用日志)。日志的配置文件/etc/systemd/journald.conf
vjournalctl用法
v查看所有日志(默認情況下 ,只保存本次啟動的日志)
journalctl
v查看內核日志(不顯示應用日志)
journalctl -k
v查看系統本次啟動的日志
journalctl -b
journalctl -b -0
v 查看上一次啟動的日志(需更改設置)
journalctl -b -1?
查看指定時間的日志
journalctl –since=”2017-10-30 18:10:30″
journalctl –since “20 min ago”
journalctl –since yesterday
journalctl –since “2017-01-10” –until “2017-01-11 03:00”
journalctl –since 09:00 –until “1 hour ago”
v顯示尾部的最新10行日志
journalctl -n
v 顯示尾部指定行數的日志
journalctl -n 20
v 實時滾動顯示最新日志
journalctl -f
v查看指定優先級(及其以上級別)的日志,共有8級
0: emerg
1: alert
2: crit
3: err
4: warning
5: notice
6: info
7: debug
journalctl -p err -b
v日志默認分頁輸出,–no-pager 改為正常的標準輸出
journalctl –no-pager
以 JSON 格式(單行)輸出
journalctl -b -u nginx.service -o json
v以 JSON 格式(多行)輸出,可讀性更好
journalctl -b -u nginx.serviceqq -o json-pretty
v顯示日志占據的硬盤空間
journalctl –disk-usage
v指定日志文件占據的最大空間
journalctl –vacuum-size=1G
v指定日志文件保存多久
journalctl –vacuum-time=1years
實驗:rsyslog將日志記錄于mysql中
用兩臺電腦實現,一臺安裝mysql數據庫,保存另一臺的日志信息
- 在數據庫服務器上安裝mariadb ,啟動服務
- 在客戶機上安裝rsyslog-mariadb包
- 將文件遠程復制到數據庫服務器上:scp /usr/share/doc/rsyslog-mysql-5.8.10/createDB.sql ?192.168.24.130:
- 在數據庫服務器上創建賬號,并授權
grant all on Syslog.* to syslog@’192.168.24.129′ indentified by ‘centos’;?授權賬號syslog在Syslog數據庫中可以對任意表執行任意操作
- 在日志配置文件中添加模塊:$ModLoad ommysql
*.info;mail.none;authpriv.none;cron.none ???????????????
:ommysql(模塊名稱,和上文對應):192.168.24.130(數據庫庫IP),Syslog(數據庫名稱),syslog(數據庫用戶),centos(密碼)
通過loganalyzer展示數據庫中的日志
(1) 在rsyslog服務器上準備amp或nmp組合
yum install httpd php php-mysql php-gd
(2) 安裝LogAnalyzer
tar xf loganalyzer-4.1.5.tar.gz
cp -a loganalyzer-4.1.5/src /var/www/html/loganalyzer
cd /var/www/html/loganalyzer
touch config.php
chmod 666 config.php(權限不對,不能進行配置)
(3) 配置loganalyzer
systemctl start httpd.service
http://HOST/loganalyzer
MySQL Native, Syslog Fields, Monitorware
(4) 安全加強
cd /var/www/html/loganalyzer
chmod 644 config.php
Logrotate日志存儲
vlogrotate 程序是一個日志文件管理工具。用來把舊的日志文件刪除,并創建新的日志文件,稱為日志轉儲或滾動。可以根據日志文件的大小,也可以根據其天數來轉儲,這個過程一般通過 cron 程序來執行
v配置文件是 /etc/logrotate.conf
v主要參數如下
vcompress 通過gzip 壓縮轉儲以后的日志
vnocompress 不需要壓縮時,用這個參數
vcopytruncate 用于還在打開中的日志文件,把當前日志備份并截斷
vnocopytruncate 備份日志文件但是不截斷
vcreate mode owner group 轉儲文件,使用指定的文件模式創建新的日志文件
vnocreate 不建立新的日志文件
vdelaycompress 和 compress 一起使用時,轉儲的日志文件到下一次轉儲時才壓縮
vnodelaycompress 覆蓋 delaycompress 選項,轉儲并壓縮
verrors address 專儲時的錯誤信息發送到指定的Email 地址
vifempty 即使是空文件也轉儲,是缺省選項。
vnotifempty 如果是空文件的話,不轉儲
vmail address 把轉儲的日志文件發送到指定的E-mail 地址
vnomail 轉儲時不發送日志文件
volddir directory 轉儲后的日志文件放入指定的目錄,必須和當前日志文件在同一個文件系統
vnoolddir 轉儲后的日志文件和當前日志文件放在同一個目錄下
vprerotate/endscript 在轉儲以前需要執行的命令可以放入這個對,這兩個關鍵字必須單獨成行
vpostrotate/endscript 在轉儲以后需要執行的命令可以放入這個對,這兩個關鍵字必須單獨成行
vdaily 指定轉儲周期為每天
vweekly 指定轉儲周期為每周
vmonthly 指定轉儲周期為每月
vsize 大小 指定日志超過多大時,就執行日志轉儲
vrotate count 指定日志文件刪除之前轉儲的次數,0 指沒有備份,5 指保留5 個備份
vMissingok 如果日志不存在,提示錯誤
vNomissingok如果日志不存在,繼續下一次日志,不提示錯誤
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/91405