[工具开发] keepalived使用nagios监控脚本
最近在做开发和办公环境的高可用,采用的是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,权重设置为:退出状态码-2 import commands
import sys, getopt
import os.path def 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 status if __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)
[工具开发] keepalived使用nagios监控脚本的更多相关文章
- MySQL的keepalived高可用监控脚本
MySQL的keepalived高可用监控脚本 MySQL(或者其它服务)的keepalived高可用监控脚本 开发脚本需求 :我们知道,keepalive是基于虚拟ip的存活来判断是否抢占maste ...
- centos shell编程6一些工作中实践脚本 nagios监控脚本 自定义zabbix脚本 mysql备份脚本 zabbix错误日志 直接送给bc做计算 gzip innobackupex/Xtrabackup 第四十节课
centos shell编程6一些工作中实践脚本 nagios监控脚本 自定义zabbix脚本 mysql备份脚本 zabbix错误日志 直接送给bc做计算 gzip innobacku ...
- 自定义nagios监控脚本---磁盘检测
自定义nagios监控脚本---磁盘检测 1. 在客户端上创建脚本/usr/local/nagios/libexec/check_disk.shvim /usr/local/nagios/libexe ...
- Linux系统性能统计工具Sar和实时系统性能监控脚本
sar(System Activity Reporter系统活动情况报告)是目前 Linux 上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告,包括:文件的读写情况.系统调用的使用情 ...
- Nginx+Keepalived(带Nginx监控脚本)
转载于:http://www.itxuexiwang.com/a/liunxjishu/2016/0220/151.html?1456381460 Keepalived+ nginx的安装部署 主机: ...
- nagios和zabbix自定义监控脚本
一. 自定义nagios监控脚本1. 在客户端上创建脚本/usr/local/nagios/libexec/check_disk.shvim /usr/local/nagios/libexec/ch ...
- smartmontools的安装使用和实现对磁盘的Nagios监控
安装 首先从sourceforge下载最新的安装版本. 解压编译 $ tar -zxvf smartmontools-6.4.tar.gz $ cd smartmontools-6.4 $ ./con ...
- nagios二次开发(四)---nagios监控原理和nagios架构简介
nagios监控原理 下面根据上面摘自网络的原理图对nagios的监控原理进行一下简单的说明: 1.nagios通过nsca进行被动监控.那么什么是被动监控呢?被动监测:就是指由被监测的服务器主动上传 ...
- nagios 监控shell脚本
线上应用shell脚本 参考链接:http://os.51cto.com/art/201301/376725.htm 0--各方面都正常,检查成功完成. 1--资源处于警告状态.某个地方不太妙. 2- ...
随机推荐
- 三种JS方法确定元素在数组中的索引值
第一种:数组遍历 function search(arr,dst){ var i = arr.length; while(i-=1){ if (arr[i] == dst){ return i; } ...
- thinkPHP 数字字典
- ORACLE日期格式
to_date("要转换的字符串","转换的格式") 两个参数的格式必须匹配,否则会报错. 即按照第二个参数的格式解释第一个参数. to_char(日期,& ...
- java_easyui体系之DataGrid(3)[转]
一:简介 在2的基础上实现增删改.增.改都是通过行编辑来实现的.具体业务逻辑: 1. 增加一条记录的时候: a) 在datagrid表格最前端增加一行(当然也可在指定位置增加.)增加的行的字段必须与要 ...
- linux下安装nginx后开机启动篇
众所周知nginx安装后需要手动去启动,每次开机之后都要执行nginx的启动命令很蛋疼.那么我们来让nginx开机启动吧 1.先創建一個nginx文件把 [root@localhost ~]# vi ...
- easyui treegrid 分页
$(function () { $('#maintable').treegrid({ width: '98%', height: 550, nowrap: true, striped: true, f ...
- hdu 1052 (greedy algorithm) 分类: hdoj 2015-06-18 16:49 35人阅读 评论(0) 收藏
thanks to http://acm.hdu.edu.cn/discuss/problem/post/reply.php?action=support&postid=19638&m ...
- 设计模式之二:MVC
模型(Model) 视图(View) 控制器(Controller) (MVC) 是 Cocoa 中的一种行为模块,并且也是所有 Cocoa 设计模式中使用最多的.在程序中按照它们的角色来分类这些对象 ...
- SecureCRT清屏
Ctrl + l:清屏Ctrl + c:终止命令Ctrl + z:挂起命令
- Spark随笔(三):straggler的产生原因
首先,介绍前辈研究的基于MapReduce框架的outlier产生原因:其次,根据这些方面来分析Spark架构中的straggler:最后,根据阅览的优化办法,谈谈自己的看法. 一.MapReduce ...