Nagios監控MySQL報錯:NRPE: Unable to read output的詳細解決過程,nagiosnrpe

來源:互聯網
上載者:User

Nagios監控MySQL報錯:NRPE: Unable to read output的詳細解決過程,nagiosnrpe

前言:nagios介面上,看到監控mysql服務報錯如下:

Warning:NRPE: Unable to read output

 

 

1,去nagios監控伺服器上check下

1.1,執行check_nrpe命令遠程調用

在監控端nagios伺服器上執行check_nrpe檢查mysql狀態報錯如下:

[root@mysqlvm2 ~]# /usr/lib/nagios/plugins/check_nrpe  -H192.xx.180.xx -c check_mysql_status

NRPE: Unable to read output

You have new mail in /var/spool/mail/root

[root@mysqlvm2 ~]#

 

1.2,檢查下別的check服務

在nagios伺服器端檢查別的監控項比如check_users,正常如下:

[root@mysqlvm2 ~]# /usr/lib/nagios/plugins/check_nrpe  -H192.xx.180.xx -c check_users

USERS OK - 2 users currently logged in |users=2;8;15;0

[root@mysqlvm2 ~]#

 

這裡證明,nagios流程是正常的,能檢測到別的監控項比如check_users,但是check_mysql故障報錯,還是需要去mysql伺服器上再去分析問題到底出在哪裡。

 

 

2,在被監控端mysql伺服器check

2.1,調用本地的check_nrpe服務,報一樣的錯誤如下:

[root@mysqldb ~]# /usr/lib/nagios/plugins/check_nrpe -Hlocalhost -c check_mysql_status

NRPE: Unable to read output

[root@mysqldb ~]#

 

去單獨執行/etc/nagios/nrpe.cfg裡面的check_mysql_status命令。

先用cat找到check_mysql的命令列

[root@mysqldb ~]# cat /etc/nagios/nrpe.cfg |grep check_mysql_status

command[check_mysql_status]=/usr/bin/sudo  /usr/lib/nagios/plugins/check_mysql -unagios -P3306 -s /usr/local/mysql/mysql.sock -Hlocalhost --password='nagiosq@0512' -d test 

執行,正常顯示如下:

[root@ mysqldb ~]# /usr/bin/sudo  /usr/lib/nagios/plugins/check_mysql -unagios -P3306 -s /usr/local/mysql/mysql.sock -Hlocalhost --password='nagiosq@0512' -d test

Uptime: 1122870  Threads: 108  Questions: 11559152  Slow queries: 1278  Opens: 3190  Flush tables: 1  Open tables: 395  Queries per second avg: 10.294|Connections=844188c;;; Open_files=49;;; Open_tables=395;;; Qcache_free_memory=209024;;; Qcache_hits=51724c;;; Qcache_inserts=73877c;;; Qcache_lowmem_prunes=5599c;;; Qcache_not_cached=2572345c;;; Qcache_queries_in_cache=1985;;; Queries=11559153c;;; Questions=10724833c;;; Table_locks_waited=0c;;; Threads_connected=107;;; Threads_running=2;;; Uptime=1122870c;;;

[root@ mysqldb ~]#

從這裡可以看到check_mysql指令碼沒有問題,是正常的。

 

2.2,檢查下check_mysql的執行許可權

[root@mysqldb ~]# ll /usr/lib/nagios/plugins/check_mysql

-rwxrwxr-x. 1 root root 168272 7月   8 14:54 /usr/lib/nagios/plugins/check_mysql

[root@mysqldb ~]#

看到是最後一個x,表明有執行許可權,sudo到nagios帳號,看是否能執行,如下所示:

[root@mysqldb ~]# su - nagios

-bash-4.1$ /usr/lib/nagios/plugins/check_mysql -unagios -P3306 -s /usr/local/mysql/mysql.sock -Hlocalhost --password='nagiosq@0512' -d test

Uptime: 1124403  Threads: 106  Questions: 11586454  Slow queries: 1278  Opens: 3190  Flush tables: 1  Open tables: 395  Queries per second avg: 10.304|Connections=846235c;;; Open_files=49;;; Open_tables=395;;; Qcache_free_memory=211696;;; Qcache_hits=51786c;;; Qcache_inserts=73915c;;; Qcache_lowmem_prunes=5732c;;; Qcache_not_cached=2578541c;;; Qcache_queries_in_cache=1890;;; Queries=11586455c;;; Questions=10750088c;;; Table_locks_waited=0c;;; Threads_connected=105;;; Threads_running=2;;; Uptime=1124403c;;;

-bash-4.1$

這裡表明既是naigos帳號也可以執行check_mysql指令碼的,check_mysql指令碼路徑以及執行許可權都沒有問題,都是可以的。

 

2.3,檢查sudo的裡面的nagios許可權配置

Nagios遠程調用運行原理是,通過nagios帳號來執行所有的check_xxx指令碼的,但是我的nrpe用戶端是root帳號安裝的,所以的check_xxx指令碼也是root使用者所屬,nagios在遠程調用的時候是否預設執行了su – root,然後在執行check_msyql指令碼命令?所以去編輯sudo配置,修改如下,把Defaults    requiretty注釋掉,然後添加一行nagios ALL=(ALL) NOPASSWD:/usr/lib/nagios/plugins/check_mysql,

 

vim  /etc/sudoers


#表示不需要終端控制

#Defaults    requiretty 

 

#表示通過nagios命令執行check_mysql命令不要求輸入密碼。

nagios ALL=(ALL) NOPASSWD:/usr/lib/nagios/plugins/check_mysql

 

修改完,wq!強行儲存退出vim編輯,然後執行本次check_npre操作檢查,已經恢複正常如下:

[root@mysqldb ~]# /usr/lib/nagios/plugins/check_nrpe -Hlocalhost -c check_mysql_status

Uptime: 1123659  Threads: 110  Questions: 11573270  Slow queries: 1278  Opens: 3190  Flush tables: 1  Open tables: 395  Queries per second avg: 10.299|Connections=845248c;;; Open_files=49;;; Open_tables=395;;; Qcache_free_memory=227704;;; Qcache_hits=51751c;;; Qcache_inserts=73892c;;; Qcache_lowmem_prunes=5656c;;; Qcache_not_cached=2575554c;;; Qcache_queries_in_cache=1943;;; Queries=11573271c;;; Questions=10737891c;;; Table_locks_waited=0c;;; Threads_connected=109;;; Threads_running=2;;; Uptime=1123659c;;;

 

再去nagios伺服器端執行check_nrpe檢查,正常如下:

[root@mysqlvm2 ~]# /usr/lib/nagios/plugins/check_nrpe  -H192.xx.180.xx -c check_mysql_status

Uptime: 1123673  Threads: 110  Questions: 11573464  Slow queries: 1278  Opens: 3190  Flush tables: 1  Open tables: 395  Queries per second avg: 10.299|Connections=845264c;;; Open_files=49;;; Open_tables=395;;; Qcache_free_memory=227704;;; Qcache_hits=51751c;;; Qcache_inserts=73892c;;; Qcache_lowmem_prunes=5656c;;; Qcache_not_cached=2575596c;;; Qcache_queries_in_cache=1943;;; Queries=11573465c;;; Questions=10738069c;;; Table_locks_waited=0c;;; Threads_connected=109;;; Threads_running=2;;; Uptime=1123673c;;;

[root@mysqlvm2 ~]#

 

2.4,再去nagios監控介面,查看mysql選項已經恢複正常,如所示:


3 附帶一些其他原因

  引起NRPE: Unable to read output報錯的原因有很多種,google了下其它的情況如下:

  (1),用戶端設定檔/etc/nagios/npre.cfg裡面沒有添加nagios伺服器IP地址,比如 allowed_hosts=127.0.0.1,IP後面IP沒有填寫或者填寫有誤。

  (2),查用戶端nrpe的許可權是否可讀,可被nagios執行,如果nagios許可權不夠,需要賦予X可執行許可權。

  (3),nrpe.cfg裡面commands命令路徑是否正確,比如有些既有rpm方式安裝的也有源碼安裝的,兩者路徑不一樣,源碼安裝ngios用戶端路徑是/usr/local/nagios/libexec/check_mysql,而rpm包安裝路徑是/usr/lib/nagios/plugins/check_mysql。

 

 來自: http://blog.itpub.net/blog/post/id/1217246/

 

參考文章:http://blog.csdn.net/kakane/article/details/9615795


安裝nagios外掛程式的時報錯 nrpe make all的時出現這個報錯 解決不了,答案

這貌似不是什麼錯誤呀!
 
我在做 nagios監控安裝nrpe時 怎也裝不上 老報錯 open-ssl 與devel的包也裝了 在用戶端卻可以成功

安裝openssl-devel
 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.