如何借助Nagios監(jiān)測(cè)常用服務(wù)?
譯文Nagios隨帶一大批的內(nèi)置腳本用于監(jiān)測(cè)服務(wù)。本教程將探討使用其中一些腳本來(lái)檢查常用服務(wù)的過(guò)程,比如MySQL、Apache Web服務(wù)器和DNS等服務(wù)。
為了讓本文著重介紹服務(wù)監(jiān)測(cè)這方面,我們不會(huì)配置主機(jī)組(hostgroup)或模板,因?yàn)樗鼈冊(cè)谇耙黄坛讨幸延薪榻B(詳見(jiàn)http://xmodulo.com/2013/12/install-configure-nagios-linux.html)。不過(guò),它們可以加以調(diào)整,以符合要求。
在CLI中運(yùn)行Nagios檢查
我們通常建議,先在命令行接口(CLI)中運(yùn)行Nagios服務(wù)檢查腳本,然后再將這些腳本添加到Nagios。這么做可以了解執(zhí)行會(huì)不會(huì)成功,腳本輸出結(jié)果會(huì)是什么樣子。
所有腳本都位于/etc/nagios-plugins/config/,可執(zhí)行文件則存放在/usr/lib/nagios/plugins/。
下面介紹實(shí)現(xiàn)方法。
- root@nagios:~# cd /etc/nagios-plugins/config/
所提供的腳本含有語(yǔ)法方面的幫助。示例包含部分輸出。
- root@nagios:~# cat /etc/nagios-plugins/config/tcp_udp.cfg
- # 'check_tcp'命令定義
- define command{
- command_name check_tcp
- command_line /usr/lib/nagios/plugins/check_tcp -H '$HOSTADDRESS$' -p '$ARG1$'
鑒于語(yǔ)法可用,可按如下方式檢查TCP端口。
- root@nagios:~# /usr/lib/nagios/plugins/check_tcp -H 10.10.10.1 -p 80
- TCP OK - 0.000 second response time on port 80|time
- =0.000222s;;;0.000000;10.000000
示例拓?fù)浣Y(jié)構(gòu)
在本教程中,用到了下列三臺(tái)服務(wù)器。每臺(tái)服務(wù)器運(yùn)行一個(gè)或多個(gè)常用服務(wù)。Nagios服務(wù)器在Ubuntu上運(yùn)行。
- 服務(wù)器1(10.10.10.1):MySQL和Apache2
- 服務(wù)器2(10.10.10.2):Postfix和Apache2
- 服務(wù)器3(10.10.10.3):DNS
首先,這些服務(wù)器在Nagios中加以定義。
- root@nagios:~# vim /etc/nagios3/conf.d/example.cfg
- define host{
- use generic-host
- host_name test-server-1
- alias test-server-1
- address 10.10.10.1
- }
- define host{
- use generic-host
- host_name test-server-2
- alias test-server-2
- address 10.10.10.2
- }
- define host{
- use generic-host
- host_name test-server-3
- alias test-server-3
- address 10.10.10.3
- }
監(jiān)測(cè)MySQL服務(wù)
MySQL監(jiān)測(cè)方面的要求
1.通過(guò)檢查端口3306,監(jiān)測(cè)MySQL是否在運(yùn)行。
2.監(jiān)測(cè)某個(gè)數(shù)據(jù)據(jù)'testDB'的可用性。
MySQL服務(wù)器的設(shè)置
說(shuō)到檢查MySQL,應(yīng)當(dāng)牢記一點(diǎn):默認(rèn)情況下,MySQL只偵聽(tīng)回送接口127.0.0.1。這增加了數(shù)據(jù)庫(kù)的安全性。需要手動(dòng)調(diào)整,才能讓MySQL還可以偵聽(tīng)其他接口。下面介紹具體實(shí)現(xiàn)方法。
這個(gè)設(shè)置在所有MySQL服務(wù)器上完成。
- root@nagios:~# vim /etc/mysql/my.cnf
下面這一行被注釋掉,以便讓MySQL偵聽(tīng)所有接口。
- #bind-address = 127.0.0.1
此外,MySQL不會(huì)允許隨便任何一個(gè)主機(jī)連接到它。同時(shí)為本地主機(jī)和'any'主機(jī)創(chuàng)建了用戶'nagios'。隨后,該用戶被賦予訪問(wèn)所有數(shù)據(jù)庫(kù)的全部權(quán)限,該用戶將被用于監(jiān)測(cè)。
完成所有MySQL服務(wù)器的下列設(shè)置。
- root@nagios:~# mysql -u root -p
- ## MySQL root password here ##
在MySQL服務(wù)器中創(chuàng)建用戶'nagios@localhost'。
- mysql> CREATE USER 'nagios'@'localhost' IDENTIFIED BY 'nagios-pass';
- mysql> GRANT ALL PRIVILEGES ON *.* TO 'nagios'@'localhost';
用戶'nagios@any-host'創(chuàng)建完畢。
- mysql> CREATE USER 'nagios'@'%' IDENTIFIED BY 'nagios-pass';
- mysql> GRANT ALL PRIVILEGES ON *.* TO 'nagios'@'%';
- mysql> FLUSH PRIVILEGES;
這應(yīng)該讓MySQL能夠偵聽(tīng)所有接口,此外還能接收來(lái)自用戶'nagios'在任何主機(jī)的入站連接。
注意:這個(gè)改變可能會(huì)在安全方面帶來(lái)影響,所以值得再提幾句:
- 該設(shè)置會(huì)將MySQL暴露在所有的可用接口面前,包括廣域網(wǎng)接口。確保只有合法網(wǎng)絡(luò)才能訪問(wèn)該數(shù)據(jù)庫(kù),這點(diǎn)極其重要。應(yīng)該使用防火墻和TCP封裝器等過(guò)濾器。
- MySQL'nagios'用戶密碼應(yīng)該是安全性很高的強(qiáng)密碼。如果只有個(gè)別幾臺(tái)Nagios服務(wù)器,那么應(yīng)該創(chuàng)建MySQL用戶'nagios@servername',而不是'nagios@%'即任何主機(jī)。
針對(duì)MySQL的Nagios配置
下列調(diào)整應(yīng)該可以達(dá)到目的。
- root@nagios:~# vim /etc/nagios3/conf.d/services_nagios2.cfg
- define service{
- use generic-service
- host_name test-server-1
- ;hostgroup can be used instead as well
- service_description Check MYSQL via TCP port
- check_command check_tcp!3306
- }
- define service{
- use generic-service
- host_name test-server-1
- ;hostgroup can be used instead as well
- service_description Check availability of database 'testDB'
- check_command check_mysql_database!nagios!nagios-pass!testDB
- ;check_mysql!userName!userPassword!databaseName
- }
這樣一來(lái),Nagios就有助于同時(shí)監(jiān)測(cè)MySQL服務(wù)器的可訪問(wèn)性和存儲(chǔ)在服務(wù)器里面的數(shù)據(jù)庫(kù)的可訪問(wèn)性。
監(jiān)測(cè)Apache Web服務(wù)器
Nagios還可以用來(lái)監(jiān)測(cè)Apache web服務(wù)器。
Apache監(jiān)測(cè)方面的要求
- 監(jiān)測(cè)Apache服務(wù)器是不是可用。
這項(xiàng)任務(wù)其實(shí)容易得很,因?yàn)镹agios有一個(gè)內(nèi)置命令,可以完成這項(xiàng)任務(wù)。
- root@nagios:~# vim /etc/nagios3/conf.d/services_nagios2.cfg
- define service{
- use generic-service
- host_name test-server-1, test-server-2
- service_description Check Apache Web Server
- check_command check_http
- }
看來(lái)這確實(shí)很簡(jiǎn)單。
監(jiān)測(cè)DNS服務(wù)
Nagios可以監(jiān)測(cè)DNS服務(wù),其方式有兩種,一種是要求DNS服務(wù)器解決一個(gè)特定的完全合格域名(FQDN),另一種是要求服務(wù)器使用dig工具。用于測(cè)試的默認(rèn)FQDN是www.google.com,但可以根據(jù)需要來(lái)更改這個(gè)FQDN。可以改動(dòng)下面這個(gè)文件來(lái)完成任務(wù)。
- root@nagios:~# vim /etc/nagios-plugins/config/dns.cfg
- ## -H部分可以改動(dòng),替換Google ##
- define command{
- command_name check_dns
- command_line /usr/lib/nagios/plugins/check_dns -H www.google.com -s '$HOSTADDRESS$'
- }
然后,編輯下面這個(gè)文件。
- root@nagios:~# vim /etc/nagios3/conf.d/services_nagios2.cfg
- ## Nagios要求server-3為google.com解析IP ##
- define service{
- use generic-service
- host_name test-server-3
- service_description Check DNS
- check_command check_dns
- }
- ## Nagios要求server-3挖掘google.com ##
- define service{
- use generic-service
- host_name test-server-3
- service_description Check DNS via dig
- check_command check_dig!www.google.com
- }
監(jiān)測(cè)郵件服務(wù)器
Nagios可以監(jiān)測(cè)不同的郵件服務(wù)器組件,比如SMTP、POP、IMAP和mailq。正如前面提到的那樣,server-2上面已搭建了postfix郵件服務(wù)器。可以對(duì)Nagios進(jìn)行配置,以便監(jiān)測(cè)服務(wù)器的SMTP和郵件隊(duì)列。
- root@nagios:~# vim /etc/nagios3/conf.d/services_nagios2.cfg
- define service{
- use generic-service
- host_name test-server-2
- service_description Check SMTP
- check_command check_smtp
- }
- define service{
- use generic-service
- host_name test-server-2
- service_description Check Mail Queue
- check_command check_mailq_postfix!50!100
- ;warning at 50, critical at 100
- }
下面這個(gè)屏幕截圖顯示了到目前為止已完成配置的所有服務(wù)檢查的完整概況。
針對(duì)自定義應(yīng)用程序的基于端口的監(jiān)測(cè)
不妨假設(shè)下面這個(gè)自定義應(yīng)用程序也在網(wǎng)絡(luò)中運(yùn)行,偵聽(tīng)某個(gè)特定的端口。
- 測(cè)試服務(wù)器1:自定義應(yīng)用程序(TCP端口12345)
稍加一番調(diào)整,Nagios還能有助于監(jiān)測(cè)這個(gè)應(yīng)用程序端口。
- root@nagios:~# vim /etc/nagios3/conf.d/services_nagios2.cfg
- define service{
- use generic-service
- host_name test-server-1
- service_description Check server 1 custom application
- check_command check_tcp!12345
- }
***提一下,Nagios可以監(jiān)測(cè)網(wǎng)絡(luò)的其他許多部分。存儲(chǔ)在/etc/nagios-plugins/config/里面的腳本從一個(gè)側(cè)面體現(xiàn)了Nagios的出色功能。
隨Nagios提供的一些腳本僅限于本地服務(wù)器,比如包括服務(wù)器負(fù)載、并發(fā)進(jìn)程的數(shù)量和已登錄用戶的數(shù)量。這些檢查可以提供實(shí)用的寶貴信息,從而便于了解Nagios服務(wù)器里面出現(xiàn)的狀況。
但愿本文對(duì)大家有所幫助。
原文鏈接:http://xmodulo.com/2013/12/monitor-common-services-nagios.html




















