用Perl的hash數組實現個人化監控

來源:互聯網
上載者:User

對於DBA來說,一個準確穩定的監控系統,不啻於一柄尚方寶劍。幾十上百套系統,如果每天都靠人工來檢查,工作量之大無法想象,而且人工也無法做到即時捕獲錯誤。

但是這麼多資料庫系統,每個庫承載的壓力不一樣,對於整個系統的重要度也不一樣,負責的DBA也不可能是同一個人。如果都按同樣的KPI同樣的門限來做監控,則有些重要的系統可能無法準確的警示,有些不重要的系統卻又會頻繁誤判。

比如系統的load,有些核心庫由於採用了比較高端的硬體,即使一直在20~30左右都是正常的,而一些邊緣的庫則可能超過5就比較危險了,所以對於load,不同的庫必須設定不同的檢查門限。

如果要通過shell指令碼來實現這個需求,可能需要寫一堆的if或者case判斷,一旦要做配置變更就十分的頭疼。不過perl的hash數組可以很好的解決這個問題。

#!/usr/bin/perl -w
# creator: jiangfeng
############################################################
use strict;

# 配置各主機各KPI的檢查門限
# 這裡配置了兩個門限值,達到第一個值發IM提醒,達到第二個值發手機簡訊
#      server, load1 load2
my %cutoff=("db1", [ 30,  40 ],
       "db2", [ 20,  35 ],
       "db3", [ 10,  18 ]
           );

# 配置各個門限值的數組中的位置,這樣在以後即使修改門限的位置,也不需要修改功能代碼
# 將配置和功能分開,將極大的簡化後續維護工作
my ($load1,$load2)=(0,1);
############################################################
# 檢查load的函數
sub check_load{
  my($server)=@_; 
  my $load=get_server_load(); #獲得資料庫主機當前load,具體實現這裡就不贅述了
  my $cutoff1=$cutoff{$server}[$load1];
  my $cutoff2=$cutoff{$server}[$load2];
 
  if ( $load > $cutoff2){
    my $mesg=$server." load more than ".$cutoff2.",now is ".$load."/n";
    send_mobile($server,$mesg);  # 大於load2,發送手機警示
  }
  elsif( $load > $cutoff1){
    my $mesg=$server." load more than ".$cutoff1.",now is ".$load."/n";
    send_wangwang($server,$mesg); # 大於load1,發送WangWang警示
  }
}
############################################################
#迴圈檢查所有主機的load
foreach my $server(keys(%cutoff)){     
  print "---- ".$server." -----/n";
  check_load($server);                     
}

在send_mobile和send_wangwang實現警示發送的函數中,傳入了$server參數,同樣可以使用hash數組配置發送給不同的責任人,基本思想和這裡沒有大的差別,就不重複貼代碼了。

--EOF--

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.