日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > linux >内容正文

linux

Linux 学会看日志文件处理问题

發(fā)布時(shí)間:2025/3/15 linux 13 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux 学会看日志文件处理问题 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

rsyslog是一個(gè)進(jìn)程,是一個(gè)命令。管理日志的。–》系統(tǒng)日志記錄器
它有一個(gè)配置文件:/etc/rsyslog.conf
自己創(chuàng)建日志時(shí),要修改該配置文件。

日志的作用:

  • 用于記錄系統(tǒng)、程序運(yùn)行中發(fā)生的各種事件;
  • 通過(guò)閱讀日志,有助于診斷和解決系統(tǒng)故障

日志文件的分類:

  • 內(nèi)核及系統(tǒng)日志
    • 由系統(tǒng)服務(wù)rsyslog統(tǒng)一進(jìn)行管理,日志格式基本相似
  • 用戶日志
    • 記錄系統(tǒng)用戶登錄及退出系統(tǒng)的相關(guān)信息
  • 程序日志
    • 由各種應(yīng)用程序獨(dú)立管理的日志文件,記錄格式不統(tǒng)一

日志記錄的一般格式:

時(shí)間標(biāo)簽 主機(jī)名 子系統(tǒng)名 消息字段

/var/log –》此目錄下有很多的日志文件。
eg:tailf /var/log/cron –》監(jiān)聽(tīng)cron命令的日志文件的末尾五行。

相應(yīng)的應(yīng)用程序獨(dú)立進(jìn)行管理的日志文件:

  • Web服務(wù):/var/log/httpd/
    • access_log、error_log
  • 代理服務(wù):/var/log/squid/
    • access.log、cache.log、squid.out、store.log
  • FTP服務(wù):/var/log/xferlog
    等等

保存了用戶登錄、退出等信息的日志文件:

  • /var/log/lastlog:最近的用戶登錄事件
  • /var/log/wtmp:用戶登錄、注銷及系統(tǒng)開(kāi)、關(guān)機(jī)事件
  • /var/run/utmp:當(dāng)前登錄的每個(gè)用戶的詳細(xì)信息
  • /var/log/secure:與用戶驗(yàn)證相關(guān)的安全性事件

用戶登錄分析:

  • who、w、user、last、ac、lastlog等命令,其中:
    • last 最近登錄系統(tǒng)的用戶;
    • lastlog 查看所有的用戶的登錄信息

日志分析工具:

  • 文本查看、grep過(guò)濾檢索、Webmin管理套件中查看
  • awk、sed等文本過(guò)濾、格式化編輯工具
  • Webalizer、Awstats等專用日志分析工具
  • 其他市面上的商業(yè)日志分析工具等

syslog系統(tǒng)日志

syslog系統(tǒng)日志/etc/syslog.conf
由系統(tǒng)服務(wù)syslogd 統(tǒng)一管理:

  • 軟件包:sysklogd-1.4.1-29.2
  • 主要程序:/sbin/klogd、/sbin/syslogd
  • 系統(tǒng)日志的配置文件:/etc/syslog.conf


(設(shè)備類別.日志級(jí)別 消息發(fā)送到的文件)
(像cron級(jí)別的日志文件,都寫(xiě)到/var/log/cron里面去。)
設(shè)備類別[連接符]日志級(jí)別:

  • . 記錄大于等于后面的級(jí)別日志
  • .=只記錄等于后面的級(jí)別日志
  • .!=只記錄不等于后面的級(jí)別日志

消息發(fā)送位置:

  • 本地文件:通常就是文件的絕對(duì)路徑
  • 打印機(jī):例如 /dev/lp0 這個(gè)打印機(jī)裝置
  • 用戶名稱:顯示給用戶
  • 遠(yuǎn)程主機(jī):例如 @202.100.100.1
  • *:所有在線的人

系統(tǒng)日志保存位置:默認(rèn)為/var/log目錄下

主要日志文件介紹:

  • 內(nèi)核及公共消息日志:/var/log/messages
  • 計(jì)劃任務(wù)日志:/var/log/cron
  • 系統(tǒng)引導(dǎo)日志:/var/log/dmesg
  • 郵件系統(tǒng)日志:/var/log/maillog
  • 錯(cuò)誤登錄日志:/var/log/faillog

用戶運(yùn)行過(guò)的進(jìn)程分析工具:

  • accton、lastcomm
  • sa:報(bào)告、清理和維護(hù)進(jìn)程統(tǒng)計(jì)文件。

例子:

# accton /var/account/pacct --》啟用統(tǒng)計(jì) # lastcomm --user root --》查看統(tǒng)計(jì) lastcomm root pts/2 0.00 secs Thu Jul 28 21:22 lastcomm root pts/2 0.00 secs Thu Jul 28 21:22 accton S root pts/2 0.00 secs Thu Jul 28 21:22 #accton --》關(guān)閉統(tǒng)計(jì)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

PS:
配置文件和程序的關(guān)系:
配置文件為程序傳遞參數(shù),告訴程序要做什么,或者哪些做,哪些不做等信息。

日志消息的級(jí)別loglevel(記住!)

  • 0 EMERG(緊急):會(huì)導(dǎo)致主機(jī)系統(tǒng)不可用的情況 emergencies(零,最嚴(yán)重!!)
  • 1 ALERT(警告):必須馬上采取措施解決的問(wèn)題 alert
  • 2 CRIT(嚴(yán)重):比較嚴(yán)重的情況 critical
  • 3 ERR(錯(cuò)誤):運(yùn)行出現(xiàn)錯(cuò)誤 error
  • 4 WARNING(提醒):可能會(huì)影響系統(tǒng)功能的事件
  • 5 NOTICE(注意):不會(huì)影響系統(tǒng)但值得注意
  • 6 INFO(信息):一般信息 information
  • 7 DEBUG(調(diào)試):程序或系統(tǒng)調(diào)試信息等
  • 8 none 沒(méi)有優(yōu)先級(jí),不記錄任何日志消息。

日志的設(shè)備類型:SyslogFacility

  • mail 郵件日志
  • cron 計(jì)劃任務(wù)日志
  • authpriv 用戶認(rèn)證時(shí)產(chǎn)生的日志,如login命令、su命令。
  • local0–local7 由自定義程序使用。
  • news 網(wǎng)絡(luò)新聞傳輸協(xié)議(nntp)產(chǎn)生的消息。
  • user 用戶進(jìn)程。
  • kern 系統(tǒng)內(nèi)核消息。 kernel
  • daemon 某些守護(hù)

/var/log/下面的日志文件

  • messages —>默認(rèn)情況下會(huì)記錄所有的日志信息
  • secure —》安全認(rèn)證相關(guān)的日志(ssh、useradd、passwd)
  • dmesg —》系統(tǒng)在啟動(dòng)的過(guò)程中加載了那些內(nèi)核模塊的信息,對(duì)一些硬件的識(shí)別加載的驅(qū)動(dòng)等信息。kernel啟動(dòng)的過(guò)程中的信息
  • boot.log —》啟動(dòng)系統(tǒng)的過(guò)程之中出現(xiàn)的問(wèn)題和正常的情況
  • maillog —》與發(fā)郵件相關(guān)的日志
  • lastlog —》記錄最近登錄過(guò)系統(tǒng)的用戶的信息 last
  • cron —》計(jì)劃任務(wù)
  • httpd —》獨(dú)立的目錄,記錄httpd進(jìn)程產(chǎn)生相關(guān)的日志
  • nginx —》獨(dú)立的目錄,記錄nginx進(jìn)程產(chǎn)生的相關(guān)的日志
  • mysqld.log —》mysql的日志
  • yum.log —》yum的日志
  • xferlog —-》ftp的日志
  • wtmp —》lastlog 查看所有的用戶的登錄信息

主動(dòng)記錄日志工具:logger:從命令行直接向系統(tǒng)日志文件寫(xiě)入一行信息

# ping -c2 172.16.70.7|logger -i(ping命令的pid號(hào))-t (信息)"This is a test" -p authpriv.info(設(shè)備類型) # tail -5 /var/log/secure Jul 28 21:26:20 localhost This is a test[5623]: 64 bytes from 172.16.70.7: icmp_seq=2 ttl=64 time=0.178 ms Jul 28 21:26:20 localhost This is a test[5623]: Jul 28 21:26:20 localhost This is a test[5623]: --- 172.16.70.7 ping statistics --- Jul 28 21:26:20 localhost This is a test[5623]: 2 packets transmitted, 2 received, 0% packet loss, time 1000ms Jul 28 21:26:20 localhost This is a test[5623]: rtt min/avg/max/mdev = 0.166/0.172/0.178/0.006 ms
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

自己寫(xiě)腳本實(shí)現(xiàn)記錄日志的功能

①修改 /etc/rsyslog.conf 文件
在#Save boot messages also to boot.log下面添加?xùn)|西。

②刷新服務(wù)#service rsyslog restart
(刷新rsyslog服務(wù)后,就會(huì)發(fā)現(xiàn)在/var/log/下面出現(xiàn)了shell_monitor.log文件!)
(但是里面沒(méi)有東西!)
③腳本的內(nèi)容

#vim /var/log/monitor.sh if service httpd status &>/dev/null thenecho "httpd is running"|logger -t(信息) "httpd01_server"-p(設(shè)備類型號(hào)) local6.info (把echo的內(nèi)容傳遞給logger) elseservice httpd start &>/dev/nullecho "httpd is star"| logger -t "httpd01_server" -p local6.info fi
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

④#bash monitor.sh #執(zhí)行腳本

#cat shell_monitor.log #查看自己定義的日志文件
  • 1


(發(fā)現(xiàn)里面有內(nèi)容了!)(輸出的時(shí)候,先顯示-t的,再顯示前面echo的內(nèi)容)

日志輪轉(zhuǎn)功能 logrotate

方便有效的管理日志,防止日志文件過(guò)大
日志輪轉(zhuǎn)命令:logrotate
日志輪轉(zhuǎn)主要配置文件:/etc/logrotate.conf

  • 配合一個(gè)配置文件,再加上計(jì)劃任務(wù),每天執(zhí)行一次來(lái)達(dá)到循環(huán)的效果;
  • 好處:總保留最近最新的日志。

日志輪轉(zhuǎn)主要配置文件:/etc/logrotate.conf (主配置文件)

# cat /etc/logrotate.conf |grep -v ^#|grep -v ^$ (刪除注釋行和空行) --》查看日志輪轉(zhuǎn)配置文件的內(nèi)容 weekly --》每周一次 rotate 4 --》保留4個(gè)備份的日志文件 create --》創(chuàng)建新的空的日志文件 dateext --》以日期做后綴 include /etc/logrotate.d --》次要配置文件都存放在次目錄下 /var/log/wtmp { --》(單獨(dú)針對(duì)wtmp的)monthlycreate 0664 root utmp --》創(chuàng)建文件的時(shí)候,指定權(quán)限和屬組、屬主minsize 1M --》大于1M才輪轉(zhuǎn)日志rotate 1 --》保留1個(gè)備份日志 } /var/log/btmp { --》針對(duì)btmp的missingok --》如果某文件沒(méi)丟失,做什么monthlycreate 0600 root utmprotate 1 }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

PS:
沒(méi)有單獨(dú)的日志文件,在輪轉(zhuǎn)的時(shí)候,參考/etc/logrotate.conf里面的配置。
同時(shí)如果有單獨(dú)的日志文件,但是里面有些配置沒(méi)有,也會(huì)參考主配置文件里的內(nèi)容。—》單獨(dú)配置文件里沒(méi)有的配置項(xiàng),參考主配置文件公共的配置項(xiàng),建議寫(xiě)到主配置文件里,各個(gè)日志文件根據(jù)自身的特點(diǎn),可以單獨(dú)寫(xiě)一些配置。

日志輪轉(zhuǎn)是怎么實(shí)現(xiàn)的?

日志輪轉(zhuǎn),依賴cron計(jì)劃任務(wù)的每天執(zhí)行的任務(wù)來(lái)完成輪轉(zhuǎn)的。
系統(tǒng)把日志輪轉(zhuǎn)的腳本logrotate放在/etc/cron.daily目錄下

mysqld日志輪轉(zhuǎn)文件

#vim /etc/logrotate.d/mysqld
  • 1

vim /etc/rsyslog.conf

①local6.* /var/log/mysqld.log

  • 指定目錄的日志設(shè)備類型是local6
  • 消息級(jí)別是,記錄到/var/log/mysqld.log
  • 主要是告訴rsyslog進(jìn)程去記錄,至于mysqld進(jìn)程是否采用rsyslog進(jìn)程去記錄日志,取決于mysqld進(jìn)程。
  • mysqld進(jìn)程也許沒(méi)有采用rsyslog進(jìn)程去幫助記錄日志,它自己有獨(dú)立的進(jìn)程去實(shí)現(xiàn)日志的記錄功能。

②#service rsyslog restart –》刷新服務(wù),讓配置文件生效。

#vim httpd /var/log/httpd/*log { --》指定輪轉(zhuǎn)的日志文件,具體如何輪轉(zhuǎn),看大括號(hào)里的內(nèi)容!missingok --》日志文件不存在的時(shí)候,繼續(xù)進(jìn)行,不報(bào)錯(cuò)。notifempty --》若日志文件為空,不輪轉(zhuǎn)(not if empty)sharedscripts --》配合prerotate和postrotate使用delaycompress --》推遲壓縮postrotate --》輪轉(zhuǎn)后執(zhí)行下面的命令/sbin/service httpd reload > /dev/null 2>/dev/null || trueendscript }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

多個(gè)日志文件使用一套輪轉(zhuǎn)方法:

內(nèi)核及公共消息日志:/var/log/messages
計(jì)劃任務(wù)日志:/var/log/cron
郵件系統(tǒng)日志:/var/log/maillog
/var/log/secure
/var/log/spooler
{
sharedscripts
postrotate
/bin/kill -HUP cat /var/run/syslogd.pid 2>/dev/null 2>/dev/null || true
endscript
}

#
#########怎么讓日志輪轉(zhuǎn)(全)

①(添加設(shè)備類型、消息級(jí)別和消息發(fā)送目錄到)/etc/rsyslog.conf
local6.info /var/log/liupeng

②刷新服務(wù)#service rsyslog restart
③日志腳本的內(nèi)容:(腳本放在哪里都行)

#cat /lianxi/liupeng.sh #!/bin/bash if service mysqld status &>/dev/null thenecho "mysqld is running~"|logger -it "mysqld is started!" -p local6.info(這是輸出的內(nèi)容,也會(huì)寫(xiě)到日志) (這是寫(xiě)到日志的內(nèi)容) elseservice httpd start &>/dev/nullecho "mysqld is start"|logger -it "mysqld start for you!" -p local6.info fi
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
#bash /lianxi/liupeng.sh
  • 1

(執(zhí)行腳本后,會(huì)看到在/var/log/liupeng.log文件里面生成了內(nèi)容。)

④進(jìn)入/etc/logrorate目錄,添加輪轉(zhuǎn)日志配置文件liupeng:

#cd /etc/logrotate.d #vim liupeng /var/log/liupeng.log { --》指定輪轉(zhuǎn)的日志文件,具體如何輪轉(zhuǎn),看大括號(hào)里的內(nèi)容! rotate 4 --》保留4個(gè)weekly --》每周輪轉(zhuǎn)一次create --》創(chuàng)建新的空的日志文件dateext --》以日期做后綴missingok --》日志文件不存在的時(shí)候,繼續(xù)進(jìn)行,不報(bào)錯(cuò)。notifempty --》若日志文件為空,不輪轉(zhuǎn)(not if empty)sharedscripts prerorate輪轉(zhuǎn)之前執(zhí)行的命令endscript }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

⑤#logrotate -vf /etc/logrotate.conf (-f 強(qiáng)制輪轉(zhuǎn))
–》輪轉(zhuǎn)自己寫(xiě)的日志。

PS:

  • man 5 logrotate.conf –》man 5 配置文件:看這個(gè)配置文件里的所有功能
  • prerorate:輪轉(zhuǎn)前需要做的事情;
  • postrorate:輪轉(zhuǎn)后需要做的事情。

練習(xí):自己編寫(xiě)腳本實(shí)現(xiàn)記錄日志功能:

1.監(jiān)控httpd、yum、mysql服務(wù),如果服務(wù)正在運(yùn)行寫(xiě)入到日志文件,如果服務(wù)沒(méi)有運(yùn)行也寫(xiě)入到日志文件,然后啟動(dòng)服務(wù)
2.日志文件的名字自己定義.例如:/var/log/liupeng_monitor.log
3.讓日志文件每個(gè)星期輪轉(zhuǎn)一次,保留4個(gè)文件,在輪轉(zhuǎn)之前將要?jiǎng)h除的日志文件復(fù)制到/backup目錄下。

[root@liupeng lianxi]# cat log_monitor.sh --》主腳本 #!/bin/bash ###########配置rsyslog文件 if ! egrep "local6" /etc/rsyslog.conf &>/dev/null thenecho "local6.* /var/log/liupeng_monitor.log" >>/etc/rsyslog/confecho "local6.alert *" >>/etc/rsyslog.conf --》如果接收到local6這種設(shè)備類型,消息級(jí)別為alert,給所有人發(fā)送(屏幕輸出)!service rsyslog restart fi ###########監(jiān)控功能 monitor(){ if service $1 status &>/dev/null thenecho "$1_STATUS_CLEAR" | logger -it "$1_STATUS" -p local6.info elseecho "$1_NOT_RUNNING" | logger -it "$1_SERVICE_DOWN" -p local6.notice <span class="hljs-keyword">if</span> ! service <span class="hljs-variable">$1</span> restart &amp;&gt;/dev/null<span class="hljs-keyword">then</span><span class="hljs-built_in">echo</span> <span class="hljs-string">"<span class="hljs-variable">$1_CAN_NOT_RESTART</span>"</span> | logger -it <span class="hljs-string">"<span class="hljs-variable">$1_SERVICE_ERROR</span>"</span> -p local6.alert<span class="hljs-keyword">else</span><span class="hljs-built_in">echo</span> <span class="hljs-string">"<span class="hljs-variable">$1_RUNNING_AGAIN</span>"</span> | logger -it <span class="hljs-string">"<span class="hljs-variable">$1_STATUS_CLEAR_NOTICE</span>"</span> -p local6.notice<span class="hljs-keyword">fi</span>

fi
}
###########本地yum是否存在
local_yum_monitor(){
yum clean all &>/dev/null
if yum list &>/dev/null
then
echo “YUM_STATUS_CLEAR” | logger -it “YUM_STATUS” -p local6.info
else
echo “YUM_STATUS_ERROR” | logger -it “YUM_STATUS_WRONG” -p local6.alert
bash yum_install.sh
fi
}
###############日志輪轉(zhuǎn)
my_lograte(){ --》日志輪轉(zhuǎn)
[ -d /backup ]||mkdir /backup
if ! [ -f /etc/logrotat.d/monitor ]
then
echo
“/var/log/liupeng_monitor.log {
rotate 4
weekly
dateext
create
prerotate
/bin/cp -n /var/log/liupeng_monitor.log-* /backup/
–》-n選項(xiàng):若存在,則不再覆蓋!
endscript
}”
>/etc/logrotate.d/monitor
fi
}
if [ -f ./monitor.conf ]
then
conf=(cat ./monitor.conf |egrep -v <span class="hljs-string">"#|^$|^yum"</span>)
for i in conf[@]</span><spanclass="hljs?keyword">do</span>monitor<spanclass="hljs?variable">{conf[@]}</span> <span class="hljs-keyword">do</span> monitor <span class="hljs-variable">conf[@]</span><spanclass="hljs?keyword">do</span>monitor<spanclass="hljs?variable">i &
done
if cat ./monitor.conf|egrep “^yum_check=1$” &>/dev/null
then
local_yum_monitor
fi
else
echo -e “#[SERVICE_NAME]\nhttpd\nmysqld\n#[YUM]\nyum_check=1” > monitor.conf
fi
my_lograte

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69

[root@liupeng lianxi]# cat monitor.conf --》供選擇的服務(wù) #[SERVICE_NAME] httpd mysqld #[YUM] yum_check=1
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
[root@liupeng lianxi]# cat yum_install.sh --》安裝yum服務(wù) #!/bin/bash #local_yum_install repos="/etc/yum.repos.d"local_yum(){cat >$repos/local.repo <<EOF [local_yum] name=local_yum baseurl=file:///mnt gpgcheck=0 enabled=1 EOFread -p "請(qǐng)確認(rèn)光盤(pán)已經(jīng)放入光驅(qū)中,按任意建繼續(xù) ..."mount /dev/cdrom /mnt &>/dev/nullcase $? in0)yum clean all &>/dev/nullyum update && echo "本地yum源配置成功!";;32)yum clean all &>/dev/nullecho "光盤(pán)已經(jīng)掛載!";;*)echo "請(qǐng)放入光盤(pán)!";;esac } if [ -d $repos/bak ] thenif [ -f $repos/local.repo ]thenrm -f $repos/local.repolocal_yumelselocal_yumfi elsemkdir $repos/bakmv $repos/*.repo $repos/baklocal_yum fi
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
</div><div><div></div></div><link href="https://csdnimg.cn/release/blogv2/dist/mdeditor/css/editerView/markdown_views-d7a94ec6ab.css" rel="stylesheet"><link href="https://csdnimg.cn/release/blogv2/dist/mdeditor/css/style-49037e4d27.css" rel="stylesheet"></div>

總結(jié)

以上是生活随笔為你收集整理的Linux 学会看日志文件处理问题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。