国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

[工具開發]keepalived使用nagios監控腳本

2019-11-14 17:09:32
字體:
來源:轉載
供稿:網友

最近在做開發和辦公環境的高可用,采用的是keepalived;keepalived基于linux內核支持的LVS,既能實現高可用,又能實現負載均衡,非常實用。

keepalived監控服務狀態時可以用多種方式,如:HTTP_GET|SSL_GET|TCP_CHECK|SMTP_CHECK|MISC_CHECK(自定義腳本方式),為了精確的監控服務的狀態,我們需要編寫自定義監控腳本。

目前很多公司都會部署nagios作為服務的監控平臺,nagios也有監控腳本或者程序,如果keepalived監控腳本能套用naigios的,那么就可以省去很多麻煩。但是nagios監控腳本或者程序與keepalived有一些不同:

nagios腳本或者程序的返回值:0-OK,1-Warn, 2-Critical, 3-Unknown

keepalived腳本返回值:0-OK,1-Fail,2~255-OK且退出碼-2

可見,只需要把nagios腳本或者程序的返回值改一下就可以用在keepalived上了。如果是文本格式的nagios腳本,可以直接改返回值,如果是二進制格式的程序,就不能直接改了。我采用的方法是把 nagios監控程序放到python里并且修改其返回值,這樣就可以給keepalived用了。

下面的例子是用python把nagios的check_dns二進制監控程序改成keepalived能用的腳本,請注意commands.getstatusoutput里的命令,就是調用的nagios二進制監控程序:

(由于我的服務不需要修改退出狀態碼,因此只返回0或者1)

#!/usr/bin/python#coding: utf-8#返回0:健康檢查OK,權重保持#返回1:健康檢查失敗,權重設為0#返回2-255:健康檢查OK,權重設置為:退出狀態碼-2import commandsimport sys, getoptimport os.pathdef check_dns(server='', timeout='', name='', address=''):    status, output = commands.getstatusoutput("/usr/lib64/nagios/plugins/check_dns -s " + server + " -t " + timeout + " -H " + name + " -a " + address)    return statusif __name__ == '__main__':    server, timeout, name, address = '', '', '', ''    script = os.path.split(os.path.realpath(__file__))[1]    try:        opts, args = getopt.getopt(sys.argv[1:], "s:n:a:t:", ["server=", "name=", "address=", "timeout="])    except getopt.GetoptError, err:        #PRint str(err)        sys.exit(3)    for o, a in opts:        if o in ("-s", "--server"):            server = a        elif o in ("-n", "--name"):            name = a        elif o in ("-a", "--address"):            address = a        elif o in ("-t", "--timeout"):            timeout = a        else:            #print "usage: " + script + " -s server -n name -a address -t timeout"            sys.exit(3)    if server == '' or name == '' or address == '' or timeout == '':        #print "usage: " + script + " -s server -n name -a address -t timeout"        sys.exit(3)    else:        status = check_dns(server, timeout, name, address)        if status:            #print status            sys.exit(1)        else:            #print status            sys.exit(0)

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 博爱县| 锡林浩特市| 孟连| 碌曲县| 延川县| 井研县| 巫溪县| 延津县| 赞皇县| 九台市| 上栗县| 郧西县| 康保县| 赤城县| 西安市| 邮箱| 玛沁县| 襄城县| 曲靖市| 乌审旗| 望谟县| 扶余县| 宣武区| 朔州市| 信宜市| 临夏县| 高邮市| 新邵县| 金川县| 梁平县| 石家庄市| 颍上县| 孟州市| 昌平区| 伊宁县| 嘉禾县| 离岛区| 刚察县| 鄂伦春自治旗| 万宁市| 万宁市|