热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Zabbix监控LVS状态及keepalivedVIP漂移

此文只说lvs监控,lvs+keepalived的部署,请参考我另外的文章。http:yangrong.blog.51cto.com694536915759091、监控目标

此文只说lvs监控,lvs+keepalived的部署,请参考我另外的文章。 

http://yangrong.blog.51cto.com/6945369/1575909

1、监控目标

   lvs的每秒会话连接数

   lvs的每秒包转发数

   lvs每秒转发带宽

   VIP切换情况

   keepalived进程的存活

 

2zabbix_sender汇报脚本

主要汇报内容:

会话连接数,每秒包转发数,每秒转发带宽,VIP

 

监控python脚本,采用zabbix_sender上报方式:

# cat/usr/local/lvsmonitor/lvs_status_sender.py
#!/usr/bin/env python
#coding=utf-8
#date 2015-7-8
#auth :yangr
#function:汇报lvs的相关状态,有每秒连接数,每秒转发数,VIP主从切换.每秒转发带宽
#lvs_conns_sec,lvs_packets_sec,keepalived_vip_status
 
import os,commands,sys,time
#变量定义----------------------
#从zabbix_agentd.conf中获取server IP或hostname
zabbix_agent_file='/usr/local/zabbix/etc/zabbix_agentd.conf'
if notos.path.exists(zabbix_agent_file):
         sys.exit(4)
zabbix_server=commands.getstatusoutput('''grep'^ServerActive' %s|awk -F[=] '{print $2}' '''%zabbix_agent_file)[1].strip()
zabbix_hostname=commands.getstatusoutput('''grep'^Hostname' %s|awk -F[=] '{print $2}' '''%zabbix_agent_file)[1].strip()
if not zabbix_server or notzabbix_hostname:
         sys.exit()
zabbix_server_port=10051
timestamp = int(time.time())
keepalived_vip=['192.168.1.100']  #指定VIP
tmp_file_path='/tmp/lvs_status.txt'   #指定监控值输出文件
#-------------------------
 
 
def monit_lvs():
        #获取每秒包转发数
         status,lvs_packets_sec=commands.getstatusoutput('''tail -1/proc/net/ip_vs_stats | /usr/bin/awk '{print strtonum("0x"$1),strtonum("0x"$2), strtonum("0x"$3), strtonum("0x"$4),strtonum("0x"$5)}'|awk '{print $2}' ''')
 
         #获取每秒转发的流量
         status,lvs_bit_sec=commands.getstatusoutput('''tail -1/proc/net/ip_vs_stats | /usr/bin/awk '{print strtonum("0x"$1),strtonum("0x"$2), strtonum("0x"$3),strtonum("0x"$4), strtonum("0x"$5)}'|awk '{print $4}' ''')
         #获取lvs会话连接数
         status,lvs_conns_sec=commands.getstatusoutput('wc -l/proc/net/ip_vs_conn')
         #获取VIP状态,如值非0为master,为0则是backup,如果有变动,则进行了切换
         status,lvs_keepalived_vip_status=commands.getstatusoutput('/sbin/ipaddr |grep %s |wc -l'%keepalived_vip[0])
    #如果本机有VIP,则取出VIP的最后一段十进制。
         if int(lvs_keepalived_vip_status) != 0:
                   status,result_ip=commands.getstatusoutput(''' echo%s|awk -F '.' '{print $NF}' '''%keepalived_vip[0])
                   try:
                            lvs_keepalived_vip_status =int(result_ip)
                   except:
                            pass
         #把 key值信息写到一个临时文件,格式为 hostname,key,timestamp,value
         with open(tmp_file_path,'wb') as f:
                   f.write('%s %s %s %s\n'%(zabbix_hostname,'lvs_packets_sec',timestamp,lvs_packets_sec))
                   f.write('%s %s %s %s\n'%(zabbix_hostname,'lvs_bit_sec',timestamp,lvs_bit_sec))
                   f.write('%s %s %s %s\n'%(zabbix_hostname,'lvs_conns_sec',timestamp,lvs_packets_sec))
                   f.write('%s %s %s %s\n'%(zabbix_hostname,'lvs_keepalived_vip_status',timestamp,lvs_keepalived_vip_status))
 
 
if __name__=='__main__':
         monit_lvs()
         #把临时文件通过zabbix_sender命令发送到server端
         send_data_cmd='/usr/local/zabbix/bin/zabbix_sender -vv -z %s-p %s -T -i %s'%(zabbix_server,zabbix_server_port,tmp_file_path)
         #print send_data_cmd
         os.popen(send_data_cmd)

 

定时任务设置:

#crontab -l#zabbix_sender汇报lvs的监控信息* * * * * /usr/bin/python/usr/local/lvsmonitor/lvs_status_sender.py >>/var/log/crontab.log2>&1

 

3zabbix server端监控项配置:

lvs_packets_sec,

lvs_bit_sec, 

lvs_conns_se,

lvs_keepalived_vip_status,

keepalived,

zabbix中创建一个lvs监控模板,创建五个名称如上的监控项,键值如下图所示:

 

 3.1) lvs监控模板中item配置图

wKioL1WseKLCe8l3AADSl4fZa3E281.jpg


 3.2) lvs监控模板中tragger配置图

此处对三个监控项进行报警设置

  1 VIP有变动,无论从有到无或从无到有,有变动代表发生了切换,则告警

  2 keepalived进程down掉告警

  3 lvs每秒转发请求大于5W,告警(这个依实际情况判断,如果远远高于正常请求值,代表有CC攻击)

wKiom1WsdsGCWTgDAACoMLJ3z5k423.jpg



一切设置好后,就可以创建一台监控主机,调用lvs监控模板,然后查看数据获取是否正确。

如有问题,欢迎留言。


本文出自 “功夫猫” 博客,请务必保留此出处http://yangrong.blog.51cto.com/6945369/1676312


推荐阅读
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • Skywalking系列博客1安装单机版 Skywalking的快速安装方法
    本文介绍了如何快速安装单机版的Skywalking,包括下载、环境需求和端口检查等步骤。同时提供了百度盘下载地址和查询端口是否被占用的命令。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • 本文介绍了在使用Python中的aiohttp模块模拟服务器时出现的连接失败问题,并提供了相应的解决方法。文章中详细说明了出错的代码以及相关的软件版本和环境信息,同时也提到了相关的警告信息和函数的替代方案。通过阅读本文,读者可以了解到如何解决Python连接服务器失败的问题,并对aiohttp模块有更深入的了解。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • 一、生产服务器netstattcp连接状态 ... [详细]
  • 高可用架构_MySQL高可用架构设计
    文章来自于https:www.jianshu.compd3107bda2963PHP进阶学习交流QQ群:983229225Mysql复制功能介绍Mysql的复制功能提 ... [详细]
  • 架构设计:负载均衡层设计方案之负载场景和解决方式篇
    来自:JAVA入门中https:blog.csdn.netyinwenjiearticledetails46605451在上一篇《标准Web系统的架构分层》文章中&# ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • ZSI.generate.Wsdl2PythonError: unsupported local simpleType restriction ... [详细]
  • Webmin远程命令执行漏洞复现及防护方法
    本文介绍了Webmin远程命令执行漏洞CVE-2019-15107的漏洞详情和复现方法,同时提供了防护方法。漏洞存在于Webmin的找回密码页面中,攻击者无需权限即可注入命令并执行任意系统命令。文章还提供了相关参考链接和搭建靶场的步骤。此外,还指出了参考链接中的数据包不准确的问题,并解释了漏洞触发的条件。最后,给出了防护方法以避免受到该漏洞的攻击。 ... [详细]
  • 在重复造轮子的情况下用ProxyServlet反向代理来减少工作量
    像不少公司内部不同团队都会自己研发自己工具产品,当各个产品逐渐成熟,到达了一定的发展瓶颈,同时每个产品都有着自己的入口,用户 ... [详细]
  • 本文介绍了在mac环境下使用nginx配置nodejs代理服务器的步骤,包括安装nginx、创建目录和文件、配置代理的域名和日志记录等。 ... [详细]
author-avatar
pan0608
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有