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

相关文章

【zabbix】zabbix客户端配置

1、部署zabbix客户端 #zabbix 5.0 版本采用 golang 语言开发的新版本客户端 agent2 。#zabbix 服务端 zabbix_server 默认使用 10051 端口,客户端 zabbix_agent2 默认使用 10050 端口。systemctl disable --now firewalldsetenforce 0hostnamectl set-host

LoRaWAN在嵌入式网络通信中的应用:打造高效远程监控系统(附代码示例)

引言 随着物联网(IoT)技术的发展,远程监控系统在各个领域的应用越来越广泛。LoRaWAN(Long Range Wide Area Network)作为一种低功耗广域网通信协议,因其长距离传输、低功耗和高可靠性等特点,成为实现远程监控的理想选择。本文将详细介绍LoRaWAN的基本原理、应用场景,并通过一个具体的项目展示如何使用LoRaWAN实现远程监控系统。希望通过图文并茂的讲解,帮助读

HTTP状态码中301与302的区别

一.官方说法  301,302 都是HTTP状态的编码,都代表着某个URL发生了转移,不同之处在于:  301 redirect: 301 代表永久性转移(Permanently Moved)。  302 redirect: 302 代表暂时性转移(Temporarily Moved )。  这是很官方的说法,那么它们的区别到底是什么呢?  1.1、什么是301转向?什么是301重定向?

springboot集成prometheus监控

1 Maven pom.xml引入依赖 <dependency><groupId>io.prometheus</groupId><artifactId>simpleclient_spring_boot</artifactId></dependency> 2 启动类引入注解 import io.prometheus.client.spring.boot.EnablePrometheusEnd

服务器监控:运维行业的核心保障与第三方监控软件的选择

随着信息技术的飞速发展,企业IT架构日益复杂,服务器作为整个IT系统的核心,其稳定性和性能对业务的连续性至关重要。在运维行业中,服务器监控作为保障服务器稳定运行的关键环节,已经受到了越来越多企业的重视。本文将探讨服务器监控的重要性、挑战以及选择第三方监控软件的原因,并推荐一款优秀的服务器监控软件——监控易。 一、服务器监控的重要性     服务器监控是指对服务器硬件、操作系统、应用程序

Zustand 状态管理库简介

1. Zustand 简介 Zustand(德语中意为“状态”)是一个使用简单 API 的 React 状态管理库。它的核心思想是以状态切片(slices)的方式组织应用状态,从而实现高效的状态管理。Zustand 提供了比 Redux 更加简洁和直接的用法,同时支持异步操作和中间件。 在React开发中,状态管理是一个非常重要的概念。虽然 React 提供了 useState 和 useRe

视频监控平台:支持交通部行业标准JT/T905协议(即:出租汽车服务管理信息系统)的源代码的函数和功能介绍及分享

目录 一、视频监控平台介绍 (一)概述 (二)视频接入能力介绍 (三)功能介绍 二、JT/T905协议介绍 (一)概述 (二)主要内容 1、设备要求 2、业务功能要求 3、技术功能要求 4、性能要求 5、接口要求 6、设备通信协议与数据格式 三、代码和解释 (一)代码和注释 (二)函数功能说明 1. 头文件保护 2. 包含必要的头文件 3. 引入命名空间std

ESP32使用按键配网并通过LED指示网络状态

前言 上面我们已经可以通过 ESPTOUCH 和 Airkiss 给模块配网,并且存储在 nvs 中,重启后仍然可以联网,只是这样仍然不能满足我们实际的应用,这次我们增加按键作为输入,LED作为输出,实现长按按键配网,并可以通过LED指示网络状态。 添加自己的组件 为了让程序结构更加清晰,所以我们在smart_config例程的基础上做了修改,在main文件夹里新建了main.c 、smar

【Android逆向】小白也能学会的一个小时破解某猫社区VIP会员

第二步:使用 dex2jar 将 classes.dex 转成 jar 文件 cmd到dex2jar文件夹目录,执行 d2j-dex2jar D://xxx/xxx/classes.dex 得到 jar 文件 静态分析 拿到源码后,首先我们需要找到应用的限制点,绕过App里面的判断。 然后分析源码,该从哪里开始入手呢? 我们都知道,一个完整Android应用,可能会存在各

【Flink metric】Flink指标系统的系统性知识:以便我们实现特性化数据的指标监控与分析

文章目录 一. Registering metrics:向flink注册新自己的metrics1. 注册metrics2. Metric types:指标类型2.1. Counter2.2. Gauge2.3. Histogram(ing)4. Meter 二. Scope:指标作用域1. User Scope2. System Scope ing3. User Variables 三.