[工具开发] 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- ...
随机推荐
- CSS3轻松实现清新 Loading 效果
至今HTML5中国已经为大家分享过几百种基于 CSS3 的Loading加载动画,效果酷炫代码简洁,非常值得学习借鉴;今天就先给大家分享两个常用的CSS3的Loading的案例. 第一种效果: HTM ...
- 转摘: CSDN linxianliang5201314 的 blog ------sql解释执行顺序
我们做软件开发的,大部分人都离不开跟数据库打交道,特别是erp开发的,跟数据库打交道更是频繁,存储过程动不动就是上千行,如果数据量大,人员流动 大,那么我么还能保证下一段时间系统还能流畅的运行吗?我么 ...
- 获取LocationProvider
Android的定位信息由LocationProvider对象来提供,该对象代表一个抽象的定位组件.在开始编程之前,需要先获得LocationProvider对象. 一.获取所有可用的Location ...
- String类实现
String类是应用框架中不可或缺的类 重载运算符实现字符串的操作 #idndef IOTECK_STRING_H_#define IOTECK_STRING_H_namespace iotek{ c ...
- JS判断是否已经到达页面底部
$(window).scroll(function(){ var scrollTop=$(this).scrollTop(); var scrollHeight=$(document).height( ...
- Linux提供两个格式化错误信息的函数
#include “stdio.h” Void perror(__const char *__s); 其中__s是出现错误的地方,函数向标准错误输出设备输出如下:s:错误的详细信息. Eg.perro ...
- Psp个人软件开发软件需求分析及用例分析
一.需求分析 1. 业务需求 1.1 应用背景 开发项目进度计划总是那么不明确,延期经常出现,甚至无法给出一个相对比较明确的延迟时间.这样给市场的推广会带来很大的影响,不确定因素使得应对十分困难. ...
- hasLayout与BFC的触发条件
hasLayout与BFC是分别在IE和其他浏览器上的两个作用很相近的概念,在很多时候,我们需要触发它们去实现有些效果.例如清除浮动时需要触发hasLayout与BFC:很多自适应的两栏和三栏布局(两 ...
- How to implement a custom type for NHibernate property
http://blog.miraclespain.com/archive/2008/Mar-18.html <?xml version="1.0" encoding=&quo ...
- 黑马程序员——【Java基础】——File类、Properties集合、IO包中的其他类
---------- android培训.java培训.期待与您交流! ---------- 一.File类 (一)概述 1.File类:文件和目录路径名的抽象表现形式 2.作用: (1)用来将文件或 ...