一臺正常提供服務(wù)Linux服務(wù)器,每時每刻都在產(chǎn)生著大量的日志信息,若生產(chǎn)環(huán)境中,有幾十臺甚至上百臺服務(wù)器,那么一臺一臺的去查看系統(tǒng)的日志是非常麻煩的。
為加查等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計(jì)制作服務(wù),及加查網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、加查網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!在技術(shù)不斷更新的今天,有很多可以技術(shù)可以對日志進(jìn)行集中管理,最普遍的操作還是要屬ELK日志分析系統(tǒng)了,不過這些日志是如何產(chǎn)生的?是由哪個服務(wù)來進(jìn)行統(tǒng)一管理的呢?這篇文章就圍繞著系統(tǒng)日志的服務(wù)——rsyslog這個服務(wù)來敘述一下。
Linux系統(tǒng)中有很多日志類型,如下是一些系統(tǒng)本身產(chǎn)生的日志文件:
/var/log/boot.log
/var/log/cron
/var/log/dmesg
/var/log/lastlog
/var/log/maillog或/var/log/mail/*
/var/log/messages
/var/log/secure
/var/log/wtmp,/var/log/faillog
/var/log/httpd/* , /var/log/samba/*
若想詳細(xì)了解日志文件記錄的是什么信息,可以參考這篇博文:Linux中常見日志文件的介紹,里面還包括了7個報錯等級的介紹!這里不啰嗦了就。
系統(tǒng)中的日志大多數(shù)都是由rsyslog這個服務(wù)來管理的,這個服務(wù)的主配置文件如下:
[root@aaa ~]# grep -v "^$" /etc/rsyslog.conf | grep -v "^#" #過濾配置文件中的空行和注釋行
$ModLoad imuxsock # provides support for local system logging (e.g. via logger command)
$ModLoad imjournal # provides access to the systemd journal
$WorkDirectory /var/lib/rsyslog
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
$IncludeConfig /etc/rsyslog.d/*.conf
$OmitLocalLogging on
$IMJournalStateFile imjournal.state
*.info;mail.none;authpriv.none;cron.none /var/log/messages
上面行開頭的星號表示所有服務(wù),點(diǎn)號后面的等級表示那些等級記錄下來,/var/lo....表示記錄到哪里
authpriv.* /var/log/secure #表示authpriv所有等級的信息都記錄到secure文件中
mail.* /var/log/maillog #表示mail服務(wù)的所有級別信息都記錄到/var/log/maillog中
cron.* /var/log/cron
*.emerg :omusrmsg:*
uucp,news.crit /var/log/spooler
local7.* /var/log/boot.log
#由上面幾行注釋可以看出,第一段中的點(diǎn)號前面表示某個服務(wù),點(diǎn)號后面表示哪些報錯等級要記錄。
#點(diǎn)號前后都可以使用通配符星號來表示,如第一列為“*.*”,則表示所有服務(wù)的所有等級
#若為“*.info”,則表示所有服務(wù)的info等級及比info更嚴(yán)重的等級都記錄起來。
在上面的配置文件中,日志存放的位置是可以改動的,也可以更改哪些日志的等級要記錄下來,但是一般不建議改動。
其實(shí),依靠/etc/rsyslog.conf這個配置文件,也是可以將其日志發(fā)送到另一臺服務(wù)器上,然后再另一臺服務(wù)器上進(jìn)行統(tǒng)一管理,如果生產(chǎn)環(huán)境較小,服務(wù)器不多的情況下,可以采用這種情況,但是如果生產(chǎn)環(huán)境的服務(wù)器數(shù)量比較多,則推薦部署ELK日志分析系統(tǒng)。
我這里有兩臺服務(wù)器,主機(jī)名分別是aaa和bbb(IP地址分別是192.168.1.1和1.2),現(xiàn)在就來實(shí)現(xiàn)以下需求:
- 1、將aaa服務(wù)器的所有系統(tǒng)服務(wù)日志的info級別以上的同步發(fā)送到bbb服務(wù)器上進(jìn)行統(tǒng)一管理;
- 2、將編譯安裝的Nginx的日志發(fā)送到bbb服務(wù)器上進(jìn)行管理;
- 3、將編譯安裝的apache的日志也發(fā)送到bbb服務(wù)器上進(jìn)行管理(由于和默認(rèn)端口和Nginx的沖突,所以在實(shí)現(xiàn)了第二個需求后,就將Nginx服務(wù)停止,再啟動apache服務(wù));
開始配置:
1、將aaa服務(wù)器的所有系統(tǒng)服務(wù)日志的info級別以上的同步發(fā)送到bbb服務(wù)器上進(jìn)行統(tǒng)一管理
(1)在aaa服務(wù)器上進(jìn)行以下操作:
[root@aaa ~]# vim /etc/rsyslog.conf #編輯日志服務(wù)的配置文件
#..............省略部分內(nèi)容
$ModLoad imudp #將該行開頭的注釋符號“#”去掉,以便開啟udp協(xié)議
$UDPServerRun 514 #將該行開頭的注釋符號“#”去掉,以便開啟udp的514端口
# Provides TCP syslog reception
$ModLoad imtcp #將該行開頭的注釋符號“#”去掉,以便開啟tcp協(xié)議
$InputTCPServerRun 514 #將該行開頭的注釋符號“#”去掉,以便開啟tcp的514端口
#..............省略部分內(nèi)容
*.info;mail.none;authpriv.none;cron.none /var/log/messages
*.info @@192.168.1.2 #星號表示所有服務(wù)“*.info”表示info等級及以上的信息
#@@表示使用tcp協(xié)議傳輸,192.168.1.2是指定要發(fā)送到哪臺服務(wù)器
#若使用一個@符號,則表示使用udp協(xié)議傳輸
#..............省略部分內(nèi)容
#編輯完成后,保存退出即可。
[root@aaa ~]# systemctl restart rsyslog #重啟rsyslog服務(wù),以便更改生效
(2)在bbb服務(wù)器上進(jìn)行以下操作:
[root@bbb ~]# vim /etc/rsyslog.conf #編輯日志服務(wù)的配置文件,開啟udp和tcp的514端口
#..............省略部分內(nèi)容
$ModLoad imudp #去掉該行開頭的“#”注釋符號
$UDPServerRun 514 #去掉該行開頭的“#”注釋符號
# Provides TCP syslog reception
$ModLoad imtcp #去掉該行開頭的“#”注釋符號
$InputTCPServerRun 514 #去掉該行開頭的“#”注釋符號
#..............省略部分內(nèi)容
[root@bbb ~]# systemctl restart rsyslog #重啟服務(wù),使更改生效
[root@bbb ~]# tailf /var/log/secure #動態(tài)監(jiān)控著本機(jī)的日志文件
Sep 19 15:00:32 aaa useradd[5998]: new group: name=lvjianzh, GID=1003
Sep 19 15:00:32 aaa useradd[5998]: new user: name=lvjianzh, UID=1003, GID=1003....
#..............省略部分內(nèi)容
(3)在aaa服務(wù)器上進(jìn)行以下操作(主要是為了產(chǎn)生日志信息):
[root@aaa ~]# useradd admini
[root@aaa ~]# echo '123.com' | passwd --stdin admini
更改用戶 admini 的密碼 。
passwd:所有的身份驗(yàn)證令牌已經(jīng)成功更新。
(4)查看bbb產(chǎn)生的新日志如下:
2、將編譯安裝的Nginx的日志發(fā)送到bbb服務(wù)器上進(jìn)行管理;
(1)在aaa服務(wù)器上進(jìn)行以下操作:
[root@aaa ~]# vim /etc/yum.repos.d/epel.repo #寫入以下文件,指定阿里鏡像站
[epel]
name=epel
baseurl=https://mirrors.aliyun.com/epel/7/x86_64/
gpgcheck=0
#必須保證系統(tǒng)默認(rèn)自帶的yum文件也存在/etc/yum.repos.d/目錄下,寫入后保存退出即可。
[root@aaa ~]# yum repolist #最好執(zhí)行一下該命令
#..............省略部分內(nèi)容
(7/7): base/7/x86_64/primary_db | 6.0 MB 00:01
源標(biāo)識 源名稱 狀態(tài)
base/7/x86_64 CentOS-7 - Base 10,097
epel epel 13,384
#上面一行就是我們剛寫入的文件生效的,表示沒問題
extras/7/x86_64 CentOS-7 - Extras 304
updates/7/x86_64 CentOS-7 - Updates 311
repolist: 24,096
#若命令yum repolist執(zhí)行后沒有顯示出上述內(nèi)容,排除配置文件的錯誤后,可以執(zhí)行以下命令
[root@aaa ~]# yum makecache #用來建立元數(shù)據(jù)緩存的
#..............省略部分內(nèi)容
元數(shù)據(jù)緩存已建立
[root@aaa ~]# yum -y install nginx #安裝nginx服務(wù)
[root@aaa ~]# systemctl start nginx #啟動Nginx服務(wù)
[root@aaa ~]# netstat -anpt | grep nginx #確定Nginx服務(wù)已啟動
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 6609/nginx: master
tcp6 0 0 :::80 :::* LISTEN 6609/nginx: master
[root@aaa ~]# ls /var/log/nginx/ #以下是yum安裝Nginx后,Nginx兩個日志文件的存放位置
access.log error.log
#記住Nginx日志的存放路徑,一會要用到,若采用的是編譯安裝,請自行找到Nginx日志存放路徑記下來
[root@aaa ~]# vim /etc/rsyslog.conf #編輯rsyslog服務(wù)的配置文件
#..............省略部分內(nèi)容
#在配置文件末尾寫入以下內(nèi)容
$ModLoad imfile
$InputFilePollInterval 1
$InputFileName /var/log/nginx/access.log
$InputFileTag nginx-info-access;
$InputFilestateFile state-nginx-info-accesslog
$InputRunFileMonitor
$InputFileName /var/log/nginx/error.log
$InputFileTag nginx-info-error;
$InputFilestateFile state-nginx-info-errorlog
$InputRunFileMonitor
$InputFilePollInterval 10
if $programname == 'nginx-info-access' then @192.168.1.2:514
if $programname == 'nginx-info-access' then ~
if $programname == 'nginx-info-error' then @192.168.1.2:514
if $programname == 'nginx-info-error' then ~
[root@aaa ~]# systemctl restart rsyslog #重啟服務(wù)以便生效
關(guān)于上面寫入的配置項(xiàng)解釋如下:
$ModLoad imfile #加載模塊
$InputFilePollInterval 1 #間隔多久采集次,默認(rèn)單位是秒
$InputFileName /var/log/nginx/access.log #指定要采集的日志文件
$InputFileTag nginx-info-access; #給對應(yīng)的日志打一個標(biāo)簽
$InputFilestateFile state-nginx-info-accesslog #給這個日志命名
$InputRunFileMonitor #啟動監(jiān)控
#以下的配置和上面類似,因?yàn)橐杉瘍蓚€日志文件嘛!
$InputFileName /var/log/nginx/error.log
$InputFileTag nginx-info-error;
$InputFilestateFile state-nginx-info-errorlog
$InputRunFileMonitor
$InputFilePollInterval 10
#以下是指定將采集的日志發(fā)送到哪里,同理,一個@符號表示使用的udp協(xié)議,兩個表示tcp協(xié)議
if $programname == 'nginx-info-access' then @192.168.1.2:514
if $programname == 'nginx-info-access' then ~ #這的~,表示本地的意思
if $programname == 'nginx-info-error' then @192.168.1.2:514
if $programname == 'nginx-info-error' then ~
(2)在bbb服務(wù)器上進(jìn)行日志的監(jiān)控:
(3)客戶端訪問aaa的Nginx服務(wù),以便產(chǎn)生日志。
(4)再回到bbb服務(wù)器上,查看是否有關(guān)于aaa服務(wù)器的Nginx訪問日志產(chǎn)生(如果沒有新的日志產(chǎn)生,在排除配置錯誤的前提下,客戶端可以多刷新幾次):
可以看出來,Nginx的日志信息簡直不要太詳細(xì),對么?日志信息中包含了該日志產(chǎn)生的時間?是哪臺服務(wù)器產(chǎn)生的?標(biāo)簽名是什么?哪個IP地址訪問的?訪問時間是什么時候?訪問的狀態(tài)碼是什么?客戶端訪問時使用的是什么系統(tǒng)、系統(tǒng)的位數(shù)是多少?如(Windows NT 10.0; Win64; x64,表示是64為的win10系統(tǒng)),用的是什么瀏覽器進(jìn)行訪問的?我這里使用谷歌訪問的,它竟然還記錄了我客戶端谷歌瀏覽器的版本號。
至此,Nginx的日志文件采集就完成了,那么現(xiàn)在進(jìn)行apache的日志采集,有了前面的鋪墊,這就簡單多了,簡單改一下配置項(xiàng)就可以了。
3、將編譯安裝的apache的日志也發(fā)送到bbb服務(wù)器上進(jìn)行管理
(1)在aaa服務(wù)器上進(jìn)行以下操作:
[root@aaa ~]# yum -y install httpd #安裝apache服務(wù)
[root@aaa ~]# systemctl stop nginx #為了避免端口沖突,停止Nginx服務(wù)
[root@aaa ~]# systemctl start httpd #啟動apache服務(wù)
[root@aaa ~]# vim /etc/rsyslog.conf #更改rsyslog配置文件,主要是更改采集日志的路徑
#..............省略部分內(nèi)容
$ModLoad imfile
$InputFilePollInterval 1
$InputFileName /var/log/httpd/access_log #主要是改這個
$InputFileTag httpd-info-access;
$InputFilestateFile state-httpd-info-accesslog
$InputRunFileMonitor
$InputFileName /var/log/httpd/error_log #還要改這個
#其余配置項(xiàng)可不改,但是建議改一下,以免看起來日志不太直觀。
$InputFileTag httpd-info-error;
$InputFilestateFile state-httpd-info-errorlog
$InputRunFileMonitor
$InputFilePollInterval 10
if $programname == 'httpd-info-access' then @192.168.1.2:514
if $programname == 'httpd-info-access' then ~
if $programname == 'httpd-info-error' then @192.168.1.2:514
if $programname == 'httpd-info-error' then ~
#主要就是將上面配置中的Nginx都換成了httpd。
[root@aaa ~]# systemctl restart rsyslog #重啟服務(wù),使更改生效
(2)在bbb服務(wù)器上進(jìn)行日志的監(jiān)控:
(3)客戶端訪問aaa的Nginx服務(wù),以便產(chǎn)生日志(多刷新幾次)。
(4)再回到bbb服務(wù)器上,查看是否有關(guān)于aaa服務(wù)器的httpd訪問日志產(chǎn)生。
OK!沒問題,采集到了。。。
———————— 本文至此結(jié)束,感謝閱讀 ————————
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
網(wǎng)頁名稱:Linux系統(tǒng)日志遠(yuǎn)程采集-創(chuàng)新互聯(lián)
當(dāng)前路徑:http://muchs.cn/article22/piejc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站內(nèi)鏈、面包屑導(dǎo)航、網(wǎng)站設(shè)計(jì)公司、企業(yè)網(wǎng)站制作、網(wǎng)站改版、軟件開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容