在CentOS下使用Munin來監(jiān)控服務器運行的方法

Munin的介紹和原理
Munin 是一個服務器監(jiān)控工具,基于perl寫的,能通過網(wǎng)絡,定期收集所有節(jié)點服務器的信息,將服務器的數(shù)據(jù)信息保存為 RRD 文件格式,并通過 RRDTool (也是perl寫的) 繪制成圖形和曲線,在web頁面顯示出來??梢员O(jiān)控計算機,服務,網(wǎng)絡,SANS ,應用等。Munin(代表記憶,是奧丁神的一只烏鴉的名字)
工作方式:
Munin分為master和node
master只需安裝在一臺服務器上即可,它每5分鐘去各個node采集信息,并使用RRD格式記錄數(shù)據(jù),繪制成圖表
node安裝在各個被監(jiān)控的服務器上,node上可以配置許多plugin,每個plugin有不同的職責,負責獲取服務器各種不同的信息。
Munin服務端,在節(jié)點超過20臺左右的時候,資源占用會非常大,所以,如果服務器較多的話還是用Nagios之類的比較好(這個倒是沒試過件監(jiān)控那么多服務器)。
如何在CentOs ,RHEL ,F(xiàn)edora上安裝 munin
我最近剛從centos6.4 升級到centos 6.5版本。在CentOS,RHEL,Scientific Linux 6.5/6.4/6.3/6.X ,其中x代表小版本更新。只要屬于 6.x的都可以使用epel源進行在線安裝。
前提一:我這安裝munin的前提是已經(jīng)安裝了 lnmp環(huán)境。所以,你可以先安裝軍哥lnmp,然后再按照我的教程安裝mumin。
前提二:因為我手頭只有一臺vps,所以既是作為監(jiān)控服務器(master),又作為被監(jiān)控的客戶端(node節(jié)點)。當然,我也會在教程里插入監(jiān)控多個服務器節(jié)點的方法。
前提三:確認你的nginx加載了http_stub_status_module模塊。
這里-V是大寫。查看nginx的編譯參數(shù),看看里面有哪些模塊。如果輸出的結果中有 --with-http_stub_status_module 文字,則說明含http_stub_status_module模塊。滿足前提三了。如果沒有http_stub_status_module,則重新編 譯安裝下nginx即可。(軍哥的lnmp是已經(jīng)默認安裝了),也可以組合grep命令來查看。
為CentOs,RHEL,Fedora安裝
執(zhí)行下面的命令:
RHEL/CentOS 6.x 的32位系統(tǒng)
RHEL/CentOS 5.x 的32位系統(tǒng)
還有64位的系統(tǒng)等,見《centos安裝EPEL第三方源的方法 》
因為epel源中的epel-release-6-8.noarch.rpm只保留最新的版本。所以,很可能你看到這篇文章的時候,epel- release-6-8.noarch.rpm 已經(jīng)不存在了。這時候,你就要自己的系統(tǒng)版本及系統(tǒng)是否32位來自己去http://dl.fedoraproject.org/pub/epel/目錄 下找到最新的epel-release-x-x.noarch.rpm 。只要你的系統(tǒng)是6.x的就可以安裝 epel-release-6-x.noarch.rpm 。同理,對于 centos5.x也可以安裝 的epel-release-5-x.noarch.rpm 。
對于Fedora用戶來說,就不需要手動安裝epel源了,因為 munin 已經(jīng)包括在fedora的軟件庫中,可以直接yum安裝。
安裝mumin
munin的安裝分為三個部分分別是:
master 服務器
node 被監(jiān)控節(jié)點
plugins 插件(nginx的插件貌似munin的安裝包中就有,不需要再下載了,反正我是沒下載,直接安裝好munin就可以得到監(jiān)控圖像了。)
而我這唯一一臺vps既是作為監(jiān)控服務器(master),又作為被監(jiān)控的客戶端(node節(jié)點)。
執(zhí)行下面的命令:
在服務器端(master)安裝:
注:如果只是作為服務端,可以不安裝munin-node
安裝完成后,默認會創(chuàng)建以下文件:
/etc/munin/munin.conf : Munin master(服務器端) 配置文件.
/etc/cron.d/munin : Munin 設置crontab計劃任務文件.
/etc/httpd/conf.d/munin.conf : Munin Apache 配置文件.
/var/log/munin : Munin log日志目錄.
/var/www/munin : Munin 網(wǎng)站目錄.
/etc/munin/munin-node.conf : Munin Node節(jié)點配置文件(指定監(jiān)控哪些節(jié)點).
/etc/munin/plugins.conf : Munin plugins插件配置文件.
/etc/rc.d/init.d/munin-node : Munin啟動腳本
/etc/munin/plugin-conf.d/munin-node
服務端master不會添加任何service,但是會自動添加一個cron任務,每5分鐘采集一次node的信息,如果沒有添加可以手動加入:
*/5 * * * * /usr/bin/munin-cron
注意:這個默認安裝就已經(jīng)設置了定時任務??梢栽谂渲煤煤?,通過munin的繪圖統(tǒng)計曲線來判斷是否在不間斷的采集信息。
在客戶端(node)安裝:
注意:如果要監(jiān)控N臺服務器,那么這N臺服務器都只要裝munin-node
配置munin和nginx
我給munin設置個vhost,直接用個指定的二級域名訪問munin的監(jiān)控頁面,比如我的munin網(wǎng)站: http://test.dabu.info/munin
服務器端(master)配置web:
Nginx:
這里使用 test.dabu.info 訪問 munin網(wǎng)站
新建個nginx的虛擬主機(Virtual Host ) ,將它的vhost配置文件中server{}段改成
listen 80 ;
access_log logs/server-access_log;</p> <p> #設置訪問munin的二級域名,當然也可以使用vps外網(wǎng)ip訪問
#但是我vps上設置了禁止ip訪問網(wǎng)站
server_name test.dabu.info;</p> <p> server_name_in_redirect off;
root /var/www/html;</p> <p> # 設置密碼來限制對munin網(wǎng)站的訪問
location /munin {</p> <p> auth_basic "Administrator Login";
auth_basic_user_file /var/www/.htpasswd;
}</p> <p> #下面是給vhost開啟了http_stub_status_module模塊
#這段location其實放哪個server{}都可以,有的直接放到munin的虛擬機server{}一起 中</p> <p> location /nginx_status {</p> <p> stub_status on;
access_log off;
#只準本機訪問/nginx_status中的request統(tǒng)計信息
#如果沒有下面兩行,那么,別人就可以使用
#http://test.dabu.info/nginx_status 看到nginx的request的信息了
#175.0.137.58是你的vps外網(wǎng)ip
allow 175.0.137.58;
deny all;</p> <p> }</p> <p> }
注 意:如果你將 location /nginx_status{}段與munin虛擬主機配置文件分開,放入單獨的server{}段中時,那么就要先新建一個虛擬主機來開啟了 http_stub_status_module模塊,將其server{} 改成下面的樣子:
{
listen 127.0.0.1;
server_name localhost;</p> <p> location /nginx_status {</p> <p> stub_status on;
access_log off;
allow 127.0.0.1;
deny all;
}</p> <p> }
同時將munin虛擬機的server段改成:
listen 80 ;
access_log logs/server-access_log;</p> <p> server_name test.dabu.info;</p> <p> server_name_in_redirect off;
root /var/www/html;</p> <p> location /munin {
auth_basic "Administrator Login";
auth_basic_user_file /var/www/.htpasswd;
}</p> <p> }
此時,就只能本機訪問 http://localhost/nginx_status 來得到nginx的request信息。
修改好后保存。接著重啟nginx
Apache:
在文件末尾添加下面的內(nèi)容:
Order Deny,Allow
Deny from all
Allow from 127.0.0.1 192.168.1.0/24
</Directory>
同樣要重啟apache:
現(xiàn)在,你可以使用 http://test.dabu.info/munin 訪問 munin的網(wǎng)頁了。但是因為使用賬號密碼限制訪問,所以,我們還要去設置訪問密碼。
設置訪問網(wǎng)站的賬戶和密碼:
yum安裝munin默認的munin網(wǎng)站文件目錄是在/var/www/html/munin中。為munin目錄創(chuàng)建一個用戶密碼,執(zhí)行命令:
然后就會顯示下面的,讓你設置密碼,輸入兩次密碼(密碼不會顯示的):
Re-type new password:
Adding password for user dabu
添加密碼完成后,接著去設置munin的配置文件。http://test.dabu.info/munin是我安裝的munin,賬號:dabu ,密碼:dabu1
為munin設置環(huán)境參數(shù):
編輯 /etc/munin/plugin-conf.d/munin-node 文件,這個配置文件的作用:
1.告訴munin去哪里獲得參數(shù)
如監(jiān)控nginx的時候,則需要將下面的內(nèi)容添加到 /etc/munin/plugin-conf.d/munin-node 文件的后面。以此讓munin從http_stub_status_module模塊獲取request等信息
a. location /nginx_status{}段在munin虛擬機的server{}中時,則增加下面的內(nèi)容
env.url http://test.dabu.info/nginx_status
b. location /nginx_status{}段單獨放在一個server{}中時,則增加下面的內(nèi)容
env.url http://localhost/nginx_status
或者直接執(zhí)行下面的命令:
#if [[ $(cat /etc/munin/plugin-conf.d/munin-node | grep "nginx") = "" ]]; then echo -e "\n[nginx*]\nenv.url http://test.dabu.info/nginx_status" >> /etc/munin/plugin-conf.d/munin-node; fi
注:將 http://test.dabu.info/nginx_status 替換為你設定的訪問request的網(wǎng)址
2.munin登陸軟件的賬號密碼參數(shù)
如監(jiān)控mysql等,就是需要告訴munin登陸mysql的賬號密碼,甚至mysql路徑等
將munin的兩個插件:nginx_request 和 nginx_status 軟鏈到 /etc/munin中。當然官方給了快速配置插件的腳本,運行命令:
如果軟連接沒創(chuàng)建成功,自己手動執(zhí)行下面兩個命令:
#ln -s /usr/share/munin/plugins/nginx_status /etc/munin/plugins/ -v
遠程監(jiān)控多臺服務器客戶端(node):
假設我要采集192.168.1.10 、192.168.1.11 、192.168.1.12三臺服務器的運行狀況,則;
#增加需采集的node:
address 192.168.1.10
use_node_name yes</p> <p> [luxiang3f;websrv]
address 192.168.1.11
use_node_name yes</p> <p> [nanyuan2f;websrv]
address 192.168.1.1
use_node_name yes</p> <p> # 分號前是分組組名,分號后是節(jié)點名
# use_node_name yes表示使用上面定義的組名和節(jié)點名,否則會執(zhí)行一次DNS查詢,反查節(jié)點的DNS名稱
# address表示節(jié)點的ip地址
# 在1.4.5版本,分組或產(chǎn)生錯誤,部分圖表生成不了,懶得琢磨了,直接改為[websrvxxx]就可以成功了
#貌似,現(xiàn)在改成了 “. ” 來分隔組,而不是分號了。具體我也懶得試了。
見官方文檔:http://munin-monitoring.org/wiki/munin-node.conf
客戶端(node)配置操作:
允許服務端采集,假設服務端IP為192.168.1.10。同時,客戶端node上要開放4949的tcp端口,這個端口可以在/etc/munin/munin-node.conf里指定。
a. 當一臺vps既作為服務端,又作為客戶端。則改操作還是要在服務端操作,執(zhí)行下面的命令:
可以看到默認有了 allow ^127\.0\.0\.1$ 這一行。說明當vps即作為服務端,又作為客戶端。允許本機自己采集自己。所以,如果僅僅是自己監(jiān)控自己,則不需要修改該配置文件了。
b. 當這臺vps僅作為服務端,那么,就需要在客戶端執(zhí)行下面的命令:
在最下面的一行添加服務端ip,允許服務端來采集;
記住都要以這個形式來寫,更多寫法介紹, /etc/munin/munin-node.conf 中都有介紹
然后再服務端和客戶端都重啟服務:
或
加入服務并開機自啟動:
測試munin配置是否好了的方法:
顯示:request.value 3
注意:
a. 3表示我nginx瞬時收到的請求數(shù)。所以,你那可能不是3,是其他的數(shù)字。這個數(shù)字還可能時刻在變,畢竟不同時刻訪問你 網(wǎng)站的人肯定不同。
b. 如果你得到的結果是 request.value U 。那么表示munin并沒有采集到nginx的信息。你的munin的配置有問題。
c. 還有可能報其他錯誤,自己根據(jù)報錯信息去google吧。
測試成功后,就可以直接訪問 http://test.dabu.info/munin,查看服務器狀況了。默認情況下,cpu,內(nèi)存,硬盤,網(wǎng)絡等都不需要再單獨配置了,直接可以查看。
貼上官方munin安裝配置文檔:http://munin.readthedocs.org/en/latest/installation/index.html
相關文章
如何解決centos下root運行Elasticsearch異常
有些朋友在centos下root運行Elasticsearch時發(fā)現(xiàn)異常;不知道該如何解決?下面小編就給大家?guī)斫鉀Qcentos下root運行Elasticsearch異常的方法!有需要的朋友可以過來看看2016-11-28centos:/tmp不能運行導致的安裝編譯錯誤問題解決方法
這篇文章主要介紹了centos:/tmp不能運行導致的安裝編譯錯誤問題解決方法,需要的朋友可以參考下2016-08-25在CentOS或Fedora上運行Docker容器的方法與步驟
最近,炙手可熱Docker已儼然成為將應用程序部署到云環(huán)境的一種關鍵技術,在本教程中,我將介紹如何在CentOS或Fedora上創(chuàng)建和管理Docker容器,需要的朋友可以參考一下2014-10-15- 今天小編為大家?guī)淼氖荂entOS進程和計劃任務管理的詳解;希望會對大家有幫助;有需要的朋友可以過來看看2016-12-13
Centos下如何為進程綁定CPU?Centos下為進程綁定CPU的方法
一些朋友還不知道Centos下如何為進程綁定CPU?下面小編就為大家?guī)鞢entos下為進程綁定CPU的方法;一起去看看吧2016-12-13- 今天,小編為大家分享的是Centos進程狀態(tài)詳解;希望對大家的學習會有幫助;有需要的朋友可以過來看看2016-12-07
- 今天小編為大家?guī)淼氖荂entOS下ACL權限控制詳解;希望對大家會有幫助,有需要的朋友一起去看看吧2016-12-16
CentOS系統(tǒng)上搭建Git版本控制服務器的教程
這篇文章主要介紹了CentOS系統(tǒng)上搭建Git版本控制服務器的教程,包括創(chuàng)建SSH key以及打開RSA認證等遠程連接的相關配置方法講解,需要的朋友可以參考下2016-04-26在CentOS系統(tǒng)中安裝SVN版本控制軟件的教程
這篇文章主要介紹了在CentOS系統(tǒng)中安裝SVN版本控制軟件的教程,盡管近年來被Git搶盡風頭,但SVN簡便的操作方式依然受到很多開發(fā)者的青睞,需要的朋友可以參考下2016-03-31CentOS系統(tǒng)安裝使用版本控制系統(tǒng)Subversion的方法
subversion是一個版本控制系統(tǒng),在CentOS系統(tǒng)中要如何使用subversion,下面為大家介紹下CentOS安裝使用subversion的方法,感興趣的朋友可以看看2015-03-31