Zabbix监控LVS状态及Keepalived VIP漂移

2024-04-02 11:58

本文主要是介绍Zabbix监控LVS状态及Keepalived VIP漂移,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、监控目标
lvs的每秒会话连接数

lvs的每秒包转发数

lvs每秒转发带宽

VIP切换情况

keepalived进程的存活

二、zabbix_sender汇报脚本
主要汇报内容:
会话连接数,每秒包转发数,每秒转发带宽,VIP值
采用zabbix_sender+trapper的模式上报数据,在进一步探讨之前有必要先了解下什么是zabbix_sender+trapper模式 ,介绍如下:
用过nagios的人,应该知道nagios里有一个nsca_send程序,通过它将数据直接发送给monitor 监控端 ,同样,zabbix_sender的作用也一样,也是将数据发送给zabbix server ;而什么是trapper呢?tapper也称作zabbix捕捉器,用于捕获zabbix_sender发送的数据 。所以想要使用zabbix_sender + trapper 模式,首先要在zabbix服务器上必须有一个捕捉项目(即trapper item ),用于捕获sender过来的数据,这点也同nagios类似,需要在server端先要配置好cfg监控项,才能接收nsca_send发来的数据(总的来说所有,所有监控方式原理性的东西基本都是通的,像snmp也有trapper)
zabbix中zabbix_sender、trpper的配置方式如下:

1.zabbix_sender:在客户端,需要安装yum install zabbix-sender,安装完后在配置文件中配置SeverActive、Hostname这两项,具体看下面,两种模式区别的第二点

2.trapper:在服务端,创建模板、application后,创建item时,type选项这选择"trapper",其余选项都跟agent模式一样填就可以了

zabbix_sender+trapper模式与agent模式区别如下;

agent:服务器主动、客户端被动,客户端配置文件中只需配置"##### Passive checks related"下的"### Option: Server";

zabbix_sender+trapper:服务器被动、客户端主动,客户端配置文件中"##### Active checks related"下的"### Option:ServerActive"和"### Option: Hostname"都要配置,ServerActive配zabbix服务端的IP,Hostname配Zabbix服务端创建host的name;

另外:zabbix_sender 不依赖agent,也就是说zabbix_agent不启动,sender也可以发数据;

    zabbix服务端的zabbix_get是依赖agent的

监控python脚本如下,格式未调整好

#!/usr/bin/env python
#coding=utf-8
#date 2015-7-8
#auth :yangr
#function:汇报lvs的相关状态,有每秒连接数,每秒转发数,VIP主从切换.每秒转发带宽
#lvs_conns_sec,lvs_packets_sec,keepalived_vip_statusimport os,commands,sys,time
#变量定义----------------------
#从zabbix_agentd.conf中获取server IP或hostname
zabbix_agent_file='/etc/zabbix/zabbix_agentd.conf'
if not os.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 not zabbix_hostname:sys.exit()
zabbix_server_port=10051
timestamp = int(time.time())
keepalived_vip=['192.168.200.5'] #指定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/ip addr |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/bin/zabbix_sender -vv -z  %s  -p  %s -T -i  %s'%(zabbix_server,zabbix_server_port,tmp_file_path)#print send_data_cmdos.popen(send_data_cmd)

定时任务设置:

#crontab -l
#zabbix_sender汇报lvs的监控信息,每分钟1次
* * * * * /usr/bin/python /etc/zabbix/scripts/lvs_status_sender.py >> /var/log/crontab.log 2>&1

3、zabbix 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
在这里插入图片描述

这篇关于Zabbix监控LVS状态及Keepalived VIP漂移的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/869917

相关文章

流媒体平台/视频监控/安防视频汇聚EasyCVR播放暂停后视频画面黑屏是什么原因?

视频智能分析/视频监控/安防监控综合管理系统EasyCVR视频汇聚融合平台,是TSINGSEE青犀视频垂直深耕音视频流媒体技术、AI智能技术领域的杰出成果。该平台以其强大的视频处理、汇聚与融合能力,在构建全栈视频监控系统中展现出了独特的优势。视频监控管理系统EasyCVR平台内置了强大的视频解码、转码、压缩等技术,能够处理多种视频流格式,并以多种格式(RTMP、RTSP、HTTP-FLV、WebS

hdu1043(八数码问题,广搜 + hash(实现状态压缩) )

利用康拓展开将一个排列映射成一个自然数,然后就变成了普通的广搜题。 #include<iostream>#include<algorithm>#include<string>#include<stack>#include<queue>#include<map>#include<stdio.h>#include<stdlib.h>#include<ctype.h>#inclu

hdu1565(状态压缩)

本人第一道ac的状态压缩dp,这题的数据非常水,很容易过 题意:在n*n的矩阵中选数字使得不存在任意两个数字相邻,求最大值 解题思路: 一、因为在1<<20中有很多状态是无效的,所以第一步是选择有效状态,存到cnt[]数组中 二、dp[i][j]表示到第i行的状态cnt[j]所能得到的最大值,状态转移方程dp[i][j] = max(dp[i][j],dp[i-1][k]) ,其中k满足c

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

状态dp总结

zoj 3631  N 个数中选若干数和(只能选一次)<=M 的最大值 const int Max_N = 38 ;int a[1<<16] , b[1<<16] , x[Max_N] , e[Max_N] ;void GetNum(int g[] , int n , int s[] , int &m){ int i , j , t ;m = 0 ;for(i = 0 ;

hdu3006状态dp

给你n个集合。集合中均为数字且数字的范围在[1,m]内。m<=14。现在问用这些集合能组成多少个集合自己本身也算。 import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.Inp

从状态管理到性能优化:全面解析 Android Compose

文章目录 引言一、Android Compose基本概念1.1 什么是Android Compose?1.2 Compose的优势1.3 如何在项目中使用Compose 二、Compose中的状态管理2.1 状态管理的重要性2.2 Compose中的状态和数据流2.3 使用State和MutableState处理状态2.4 通过ViewModel进行状态管理 三、Compose中的列表和滚动

实例:如何统计当前主机的连接状态和连接数

统计当前主机的连接状态和连接数 在 Linux 中,可使用 ss 命令来查看主机的网络连接状态。以下是统计当前主机连接状态和连接主机数量的具体操作。 1. 统计当前主机的连接状态 使用 ss 命令结合 grep、cut、sort 和 uniq 命令来统计当前主机的 TCP 连接状态。 ss -nta | grep -v '^State' | cut -d " " -f 1 | sort |

状态模式state

学习笔记,原文链接 https://refactoringguru.cn/design-patterns/state 在一个对象的内部状态变化时改变其行为, 使其看上去就像改变了自身所属的类一样。 在状态模式中,player.getState()获取的是player的当前状态,通常是一个实现了状态接口的对象。 onPlay()是状态模式中定义的一个方法,不同状态下(例如“正在播放”、“暂停

kubernetes集群部署Zabbix监控平台

一、zabbix介绍 1.zabbix简介 Zabbix是一个基于Web界面的分布式系统监控的企业级开源软件。可以监视各种系统与设备的参数,保障服务器及设备的安全运营。 2.zabbix特点 (1)安装与配置简单。 (2)可视化web管理界面。 (3)免费开源。 (4)支持中文。 (5)自动发现。 (6)分布式监控。 (7)实时绘图。 3.zabbix的主要功能