nagios+pnp簡單環境的應對

引言

實習公司爲了給某一個客戶做MySQL業務優化,需要做一個監控,對客戶的日常MySQL做一些基本的使用情況監控,監控一段時間後做一些優化。

監控環境

一共四臺需要監控的MySQL主機,一臺跳轉機,其中四臺MySQL主機的三臺爲一主一從一備份,另一臺主機爲單節點的MySQL
這四臺MySQL主機命名爲mysql_master1,mysql_master2,mysql_slave1,mysql_single,操作系統都是centos4.6
這四臺主機只能通過跳轉機jumper進行訪問,而且jumper只提供2222端口的ssh服務。一切數據都需要從這個端口獲得

要求監控MySQL的所有庫的連接情況,總連接情況,MySQL資源使用情況:CPU,內存等,系統的資源使用情況:CPU,內存,IO,磁盤等等。
對於三臺一主一從一備集羣要監控主從複製狀態,主從複製延遲等信息。

解決方案

集羣比較小,直接使用check_nrpe插件進行信息收集,然後在跳轉機上進行顯示即可。
但是爲了效果好,需要配置一個pnp的環境。問題層出不斷啊

check_nrpe SSL握手失敗:

check_nrpe官方有check_nrpe trouble的文檔。可以找到一些常見問題的處理辦法。

爲了安裝check_nrpe需要安裝ssl庫,在每臺MySQL主機whereis openssl 發現都安裝了SS。OK直接編譯安裝
出現SSL握手問題,發現SSL的版本不同導致,好吧。到SSL官網下一個統一1.0版本,安裝搞定。

在編譯check_nrpe的時候用--with-ssl-inc以及--with-ssl-lib制定手動安裝ssl庫的位置。
這裏又是遇到問題,指定了安裝路徑,還是找不到libssl庫,好吧,受不鳥了,修改了一下configure腳步文件,直接寫死SSL庫位置,順利編譯安裝check_nrpe
然後需要指定一下LD_LIBRARY_PATH,加入ssl庫的位置,否則運行check_nrpe時候找不到ssl動態庫。

pnp安裝

由於jumper跳轉機的系統是4.6,在安裝pnp時各種錯誤,pnp需要rddtool畫圖庫,這個庫各種依賴,與系統自身安裝的很多包不兼容,centos4.6的源已經停用,只能更換爲centos4.9的源進行使用,但還是各種庫不兼容,版本不匹配等等的問題,最後實在是不想在折騰了,在公司找了臺服務器安裝了nagios+pnp環境,跳轉機只作爲收集信息使用,將信息收集過來,使用公司的服務器進行顯示效果。架構圖如下

使用linux下的dia一個簡單的畫圖軟件畫的,比較醜。
從圖上看思路就比較清晰了,顯示界面的主機通過check_ssh對jumper發送server check指令。即調用jumper上的check_nrpe插件檢查四臺MySQL主機,四臺MySQL上都運行着nrpe服務端口採用默認端口5666。然後通過jumper將信息反饋給nagios+pnp顯示出來即可。

這裏使用check_ssh需要配置免登陸 可以參考http://chenlb.iteye.com/blog/211809
注:安裝的nagios版本爲4.0+,使用pnp的默認配置是不行的,需要使用bulk配置纔可以。

監控腳步

監控腳步格式在之前的文章中說明過,這裏針對性能數據進行說明腳步說明格式。

  1. 'label'=value[UOM];[warn];[crit];[min];[max]

  1. 注意:

    1. 多個性能數據之間用空格分割

    2. label 可以包含任何字符

    3. 如果label中包含空格、等號、或者單引號,則label需要用單引號來括起來

    4. warn/crit/min/max可以爲null

    value, min and max只能爲負號“-” “09” 和小數點“.” 並且單位必須統一 

    例如:cpu_user=0.5%;99.9;-9;

    5. 如果UOM單位是%,則minmax不需要再指定

    6. UOM單位可以是如下: 默認空,表示數量(用於用戶數、處理器數等)

           s    表示秒(也可以用usms

           %   表示百分比

           B    表示字節(也可以用KB,MB,TB,GB

           c    一個連續的計數(如:接口傳輸的字節數)


用  |   隔開,詳細可以參考鳥哥的博客。http://blog.chinaunix.net/uid-25266990-id-3437195.html

性能日誌轉儲

日誌轉儲是必須的不同多說。本來打算使用插件NDOutils, 不知道爲什麼編譯直接core dump。好吧。。。那我就不存數據庫了直接存文件裏吧。
默認的處理性能數據的pnp腳步是process_perfdata.pl 默認這個perl腳步會在性能數據文件超過10M時直接將文件truncate掉,所以該起來也比較容易直接將truncate之前copy一下文件即可如下
#             
# Write to Logfile
#             
sub print_log {
    my $out      = shift;
    my $severity = shift;
    if ( $severity <= $conf{LOG_LEVEL} ) {
        open( LOG, ">>" . $conf{LOG_FILE} ) || die "Can't open logfile ($conf{LOG_FILE}) ", $!;
        if ( -s LOG > $conf{LOG_FILE_MAX_SIZE} ) {
       #     truncate( LOG, 0 );                                                                                                               
       #     printf( LOG "File truncated" );
             my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime;
             $year += 1900;
             $mon += 1;
             my $filename = sprintf ("/usr/local/pnpnagios/var/history/%d-%02d-%02d-%02d-%02d-%02d.log", $year,$mon,$mday,$hour,$min,$sec);
             copy ($conf{LOG_FILE}, $filename);
             truncate( LOG, 0);
        }         
        my ( $sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst ) = localtime(time);
        printf( LOG "%02d-%02d-%02d %02d:%02d:%02d [%d] [%d] %s\n", $year + 1900, $mon + 1, $mday, $hour, $min, $sec, $$, $severity, $out );
        close(LOG);
    }         
}             
如果覺得10M大小轉儲起來日誌文件太多可以修改一下LOG_FILE_MAX_SIZE的大小。

最後的成果圖如下:下圖爲單擊mysql主機的總連接數性能數據圖。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章