Zabbix监控和分布式部署实施方案

本文涉及的产品
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
RDS AI 助手,专业版
简介:

    最近在研究Zabbix监控,由于机房分布在多个城市,因此采用zabbix proxy做为监控方案,在每

个节点部署zabbix proxy,由zabbix proxy收集agentd数据,然后将采集到的数据主动推送给zabbix 

server,zabbix server将数据存入数据库,并在WEB前端显示。

1.Zabbix主要功能和优劣势说明

1.1 Zabbix主要功能:

1)Application monitoring 应用监控

数据库/SSH/Apache/Nginx等应用程序的监控。

2)Server monitoring 服务器监控

CPU,内存,SWAP,磁盘空间,网卡流量的监控等,可以通过浏览器实时查看Graphs。

3)Network monitoring 网络设备监控

支持Cisco, Juniper, 3Com等网络设备,网络设备通过SNMP(SNMP (v1,v2,v3) devices)协议进行监控。

4)添加自定义监控,对于Zabbix无法满足的监控,可以添加自定义监控。

1.2 Zabbix 主要优势:

1)安装配置简单,支持多种语言,包括中文。

2)系统自带多种监控模板,可以直接使用。

3)支持分布式部署和WEB集中管理(通过WEB页面设置或查看报警结果)。

   4)自动发现主机和网络设备(discovery of file systems,network interfaceshosts and

netwrok devices)。

   5)WEB监控:可以监控WEB下载速度,返回码及响应时间。

6)提供实时和历史的监控分析数据。

   7)EMAIL报警,按照故障级别|服务器类型|业务类型发送EMAIL邮件到相关负责人。

1.3 Zabbix主要劣势:

1)需要在被监控机器上面安装agent。

2)All configuration information都存储在数据库里面,数据库是整个监控平台的瓶颈

2.Zabbix分布式部署需求分析

2.1软件需求

官方推荐的软件配置

   1)MySQL5.0.3 or laterRequired if MySQLis used as Zabbix back end database,InnoDB 

engine isrequired.

   2)PHP 5.3.0 or later

   3)Apache 1.3.12 or later

2.2硬件需求

官方推荐的最小硬件配置

wKioL1MO3dPCC61QAAFTb7sgKEg606.jpg3.Zabbix分布式部署实施

3.1分布式部署拓扑图

wKioL1MO3mWTO2OBAAGBuFcZYVQ871.jpg


补充说明:

当proxy部署为主动模式(Active)时,Zabbix Server的负载最小。

 1)Server:负责把数据写入到数据库,然后通过Apache|Nginx +php在WEB前端显示。

 2)Proxy:帮助server采集被监控端的数据,并把采集到的数据主动传送给Server,proxy只负责数据收集。

 3)Database:所有的配置信息都存储在数据库里面,Zabbix server数据库和proxy数据库必须独立。

 4)Agent:agent的作用就是获取host数据,然后将收集到的数据发送给server(主动模式),或者是server主动来拿取数据(被动模式)。

 5)Email:通过Qmail|postfix的SMTP负责报警邮件的发送(故障邮件和故障恢复邮件)。

3.2 Zabbix分布式安装部署:

1)Mysql 数据库安装(参照:http://sfzhang88.blog.51cto.com/4995876/900846)

2)LNMP + Zabbix server 安装(参照:http://sfzhang88.blog.51cto.com/4995876/978686)

3)Zabbix proxy 安装(略)

4)Zabbix agent 安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
[root@www20 shell] # cat zabbix_agentd_install.sh
#!/bin/sh
#Create by sfzhang 2014.02.27
yum -y  install  net-snmp
yum -y  install  net-snmp-devel
BASE_DIR= "/data/software"
TAR= "zabbix-2.2.1.tar.gz"
tar  -zxvf $BASE_DIR/$TAR -C$BASE_DIR
cd  $BASE_DIR /zabbix-2 .2.1
. /configure--prefix = /usr/local/zabbix  --sysconfdir= /etc/zabbix  -- enable -agent
make  &&  make  install
groupadd zabbix
useradd  zabbix -g zabbix
cpmisc /init .d /fedora/core/zabbix_agentd  /etc/init .d /zabbix_agentd
chmod  700 /etc/init .d /zabbix_agentd
chown  zabbix.zabbix /etc/init .d /zabbix_agentd
sed  -i  "/BASEDIR=/s#/.*#/usr/local/zabbix#"  /etc/init .d /zabbix_agentd
sed  -i "s#bin/zabbix_agentd#sbin/zabbix_agentd#"  /etc/init .d /zabbix_agentd
sed  -i "s#Server=127.0.0.1#Server=192.168.161.129#" /etc/zabbix/zabbix_agentd .conf
sed  -i "s#ServerActive=127.0.0.1#\#ServerActive=127.0.0.1#" /etc/zabbix/zabbix_agentd .conf
sed  -i  "/Hostname=/s#=.*#" =$HOSTNAME# "" /etc/zabbix/zabbix_agentd .conf
sed  -i "s#\#/tmp/zabbix_agentd.pid#/data/logs/zabbix_agentd.pid#" /etc/zabbix/zabbix_agentd .conf
sed  -i "s#/tmp/zabbix_agentd.log#/data/logs/zabbix_agentd.log#" /etc/zabbix/zabbix_agentd .conf
sed  -i  "s#\#Timeout=3#Timeout=30#"  /etc/zabbix/zabbix_agentd .conf
cat >> /etc/services <<EOF
#Zabbix services
zabbix-agent 10050 /tcp #Zabbix Agent
zabbix-agent 10050 /udp #Zabbix Agent
zabbix-trapper 10051 /tcp #Zabbix Trapper
zabbix-trapper 10051 /udp #Zabbix Trapper
EOF
/etc/init .d /zabbix_agentdstart

4 Zabbix WEB前端配置

4.1配置proxy代理

wKiom1MO4ByzCAfDAAIn-y9XOAo584.jpg



4.2添加Groups和hosts

   通常Groups按照频道或者是WEB,MYSQL,memcache等服务类型分组的,提供相同服务的服务器分为一组,便于后期的维护和管理。

4.3自定义监控模板,监控项和触发器。

5 zabbix主要功能展示。

5.1服务器监控

1)CPU负载监控

wKiom1MO4QOA7w7ZAAOXQJ1tSQM794.jpg

2)内存空间的监控

wKioL1MO4UDiaibCAAN1UIxVtbQ695.jpg

3) 磁盘空间的监控

wKioL1MO4YPA-5rEAADjAq75jFo687.jpg

4)交换分区的监控

wKioL1MO4byhddWhAADLw1ANY60750.jpg

5) 网卡流量的监控

wKioL1MO4fWw4HKGAAP9zMiwES8263.jpg   除此之外,还有服务器重启的监控,添加删除用户时的监控,主机存活状态的监控(ICMP ping协议)等。

5.2)应用程序的监控

   Zabbix有很多系统自带的模板,在添加主机的时候Link相关的模板即可。

wKioL1MO4jKCn-QgAAMfK1vGjlk799.jpg

   当停止主机的上面的SSH服务或者Apache服务的时候会产生报警。

wKiom1MO4mOwN88BAAD4jVhNQJQ676.jpg

5.3)WEB Monitoring

   Web Monitoring是用来监控web程序的,可以监控到web程序的下载速度、返回码及响应时间。当返回码不为200的时候也可以产生报警。

wKioL1MO4mrxNLAGAAQZ6RYbORU303.jpg

5.4)Zabbix Screens

   Screen将多种信息放在一起展示,便于集中展示某个主机的监控信息。

wKiom1MO4v-wUHrsAAXqOAYol0s286.jpg

5.5)Zabbix maps

   Zabbix的maps用来图形化显示监控设备的拓扑图,并且以不同的标记显示故障事件,通过该图表很直观的显示设备的整体情况。

wKiom1MO426yLlkOAAChGOcZNU8116.jpg

5.6)Zabbix自定义监控

   在实际应用当中,好多监控系统都满足不了实际的需求,需要根据实际的需求添加自定义监控。比如说:监控应用服务器tuxedo排队,当队列大于2000的时候报警。监控apache,mysql链接数,当大于2000的时候报警等等,此时Zabbix需要借助scripts来完成。

实例:监控http和mysql ESTABLISHED和TIME_WAIT连接数,当大于100的时候报警,并在WEB页面实时查看连接数。

1)在要监控的服务器上面编写Shell/python脚本,取出ESTABLISHED和TIME_WAIT连接数。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
[root@monitor scripts] # catcheckservices.sh
#!/bin/sh
#Create by sfzhang 2014.02.10
ARGS=1
if  [ $ # -ne "$ARGS"];then
echo  "Please input one arguement" ;
fi
case  $1  in
EST_80)
result=` netstat  -anp |  grep  :80 |  grep  EST |  wc  -l`
echo $result
;;
TIME_OUT_80)
result=` netstat -anp |  grep  :80 |  grep  TIME_WAIT |  wc  -l`
echo $result
;;
EST_3306)
result=` netstat  -anp |  grep  :3306 |  grep  EST |  wc  -l`
echo  $result
;;
TIME_OUT_3306)
result=` netstat  -anp |  grep :3306 |  grep  TIME_WAIT |  wc  -l`
echo  $result
;;
EST_11211)
result=` netstat  -anp |  grep  :11211 |  grep  EST |  wc  -l`
echo  $result
;;
TIME_OUT_11211)
result=` netstat  -anp |  grep :11211 |  grep  TIME_WAIT |  wc  -l`
echo  $result
;;
*)
echo "Usage:$0(EST_80|TIME_OUT_80|EST_3306|TIME_OUT_3306|EST_11211|TIME_OUT_11211)"
;;
esac

3)在Zabbix_agentd.conf里面添加UserParameter,格式如下,对于Zabbix来说,脚本其实就是一个插件。

UserParameter=checkservices.sh[*],/etc/zabbix/scripts/checkservices.sh $1

重启agentd服务器,然后在zabbix server用zabbix_get就可以取到值。

wKioL1MO5BHycEkgAAC6YaiQlQE551.jpg

4)要监控的服务器有多台的时候,最简单的方法是先编写一个Templates(模板),在Link到要监控的服务器上面。

wKiom1MO5HrSortYAAK-SIUkoMk358.jpg

5)给新添加的模板Linux_service_templates添加Applications。

wKiom1MO5UDTVknFAACixKB1xCw455.jpg

6)给新添加的模板Linux_service_templates添加Items(监控项)。下面是添加http ESTABLISHED监控条目。

wKioL1MO5X6jZgirAALiMp_pLxM521.jpg

7)给新添加的模板Linux_service_templates添加Triggers(触发器)。下面是添加 http 
ESTABLISHED触发器
,当连接数大于2000的时候报警,故障级别为High。

wKiom1MO5XihYG-tAAF47LrhYNY051.jpg

8)要在WEB前端实时查看http的连接情况,必须配置Graph。在一个Graph里面可以添加多个Item数据。

wKiom1MO5ceQypyHAAHaNTf6EOw995.jpg

9)要查看Graphs在要监控的主机上面Link刚才的模板Linux_service_templates。

wKiom1MO5rHBxSBPAAMO2b16MXc555.jpg



10)在WEB前端查看实时连接情况。

Http连接情况:

wKioL1MO5xOwooGWAASCP7onyQw682.jpg

Mysql连接情况:

wKioL1MO54STU0yRAAQxxbAu4hc157.jpg

5.7)Zabbix discovery

1.Network discovery

   Zabbix network discovery能自动发现网络中存活的主机,可用通过proxy代理或者Zabbix server 发现网络中存活的主机,并按照Actions里面定义的条件自动添加到Zabbix监控里面。

1)首先:添加Discovery rule,可以通过proxy代理或者zabbix server添加rule。

wKioL1MO6ACgAo5XAAI5tB5e03w318.jpg

2)然后create Actions,指定Actions的Conditions,必须具备下列条件才能自动添加,Discover 

rule :规则为 Local network,system.uname的值中包含Linux,Zabbix agentd服务必须正常运行。

wKiom1MO6FPS-zRIAAI7B1ZwVyM207.jpg

3) 配置Actions的operations,将Actions里面符合条件的主机添加到shwww组里面并Link要监控的模板。

wKioL1MO6Fyh39XLAAI4PdtmSGs724.jpg

4)查看Discover自动发现的主机自动添加到Zabbix里面。

wKioL1MO6N3wCpOzAAPLZ5Fp6a4621.jpg

2.Zabbix Low-level discovery

   Zabbis Low-level discovery 可以自动创建监控项,触发器和图像的方法。Zabbix可以自动发现主机上面的文件系统或者网络接口,不需要对每个文件系统和网络接口手动创建监控项,触发器和图像。Zabbix 还可以自动删除不需要的监控项,比如:上例当中的,当agentd宕机超过24小时的时候可以自动删除监控,只需在action里面配置即可。

实例:监控服务器上面所有TCP端口,就可以通过Low-level discovery轻松实现。

wKioL1MO6VXBLZTsAAHEV7UTXuQ153.jpg

5.8)Zabbix报警邮件机制

1)基于业务类型发送报警邮件

   当数据库服务器出问题时发给DBA组,当系统出问题时发给System组。

wKioL1MO6ZOwR8i6AAJLQq_4Eog735.jpg

2)基于故障级别或者时间发送邮件

wKiom1MO6dHRg7m5AADG3UbBcq0057.jpg


5.9)Zabbix资产管理

   Zabbix可以自动收集主机的hostname,OS,cpu信息,MAC等信息。需要在添加主机的时候开启Host inventory Automatic功能,并按照官方手册(https://www.zabbix.com/documentation/doku.php?id=2.0/manual/config/hosts/inventory)添加Item即可。

wKiom1MO6znBW4bBAANeWU7ISK0083.jpg

5.10)Zabbix 报表功能


附录:

1)官方在线文档:

https://www.zabbix.com/documentation/2.2/manual/introduction











本文转自 sfzhang 51CTO博客,原文链接:http://blog.51cto.com/sfzhang88/1364399,如需转载请自行联系原作者

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
目录
相关文章
|
4月前
|
监控 应用服务中间件 nginx
基于Zabbix的SLA监控体系构建与实践
本文由Zabbix社区专家褚凤彬分享,详解SLA在Zabbix中的应用。通过Trigger与Service联动,构建Web应用的多层级监控体系,并介绍SLA计算规则、维护期处理及升级注意事项,助力企业精准掌控服务可用性。
477 36
|
9月前
|
监控 Linux 应用服务中间件
Linux多节点多硬盘部署MinIO:分布式MinIO集群部署指南搭建高可用架构实践
通过以上步骤,已成功基于已有的 MinIO 服务,扩展为一个 MinIO 集群。该集群具有高可用性和容错性,适合生产环境使用。如果有任何问题,请检查日志或参考MinIO 官方文档。作者联系方式vx:2743642415。
3160 57
|
12月前
|
Java 关系型数据库 MySQL
新一代 Cron-Job分布式任务调度平台 部署指南
简单易用、超低延迟,支持用户权限管理、多语言客户端和多租户接入的分布式任务调度平台。 支持任何Cron表达式的任务调度,支持常用的分片和随机策略;支持失败丢弃、失败重试的失败策略;支持动态任务参数。
407 103
|
9月前
|
人工智能 负载均衡 Java
Spring AI Alibaba 发布企业级 MCP 分布式部署方案
本文介绍了Spring AI Alibaba MCP的开发与应用,旨在解决企业级AI Agent在分布式环境下的部署和动态更新问题。通过集成Nacos,Spring AI Alibaba实现了流量负载均衡及节点变更动态感知等功能。开发者可方便地将企业内部业务系统发布为MCP服务或开发自己的AI Agent。文章详细描述了如何通过代理应用接入存量业务系统,以及全新MCP服务的开发流程,并提供了完整的配置示例和源码链接。未来,Spring AI Alibaba计划结合Nacos3的mcp-registry与mcp-router能力,进一步优化Agent开发体验。
3058 14
|
9月前
|
NoSQL 算法 安全
redis分布式锁在高并发场景下的方案设计与性能提升
本文探讨了Redis分布式锁在主从架构下失效的问题及其解决方案。首先通过CAP理论分析,Redis遵循AP原则,导致锁可能失效。针对此问题,提出两种解决方案:Zookeeper分布式锁(追求CP一致性)和Redlock算法(基于多个Redis实例提升可靠性)。文章还讨论了可能遇到的“坑”,如加从节点引发超卖问题、建议Redis节点数为奇数以及持久化策略对锁的影响。最后,从性能优化角度出发,介绍了减少锁粒度和分段锁的策略,并结合实际场景(如下单重复提交、支付与取消订单冲突)展示了分布式锁的应用方法。
720 3
|
10月前
|
SQL 数据可视化 网络安全
YashanDB分布式可视化部署
本文介绍YashanDB的分布式部署流程,涵盖服务端安装、数据库基本信息与服务器配置、节点信息设置、建库参数调整、环境变量配置及安装结果检查等步骤。通过可视化Web界面操作,详细说明了各环节配置方法和注意事项,确保用户顺利完成数据库集群的搭建与初始化设置。适用于需要分布式数据库部署的场景,提供全面的操作指导。
YashanDB分布式可视化部署
|
10月前
|
运维 监控 安全
【案例分享】中国通号卡斯柯公司:ZABBIX如何破解轨道交通监控难题
本文根据2023上海峰会上朱林贤的演讲整理,聚焦中国通号卡斯柯公司如何借助Zabbix实现轨道交通信号系统的智能化管理。作为中外合资企业,卡斯柯通过统一平台整合设备监控,大幅降低成本并提升灵活性,成功应用于国内外项目。文章探讨了传统监控系统的痛点、研发维护经验及国产化与开源技术挑战,为行业转型提供了宝贵启示。未来,开放协作将是推动轨道交通智能化发展的关键。
510 8
|
11月前
|
运维 Kubernetes Java
Koupleless 助力「人力家」实现分布式研发集中式部署,又快又省!
本文由仁励家网络科技(杭州)有限公司架构师赵云兴、葛志刚撰写,探讨了公司在优化HR SaaS解决方案时遇到的系统资源浪费和运维成本高的问题。通过引入Koupleless框架,成功将模块体积从500M缩减至5M以下,部署时间从6分钟缩短至3分钟,并大幅节省服务器资源。文章详细介绍了Koupleless的部署方案及优化措施,感谢Koupleless团队的专业支持,使人力家实现了多应用合并部署,降低了运维成本。
Koupleless 助力「人力家」实现分布式研发集中式部署,又快又省!
|
11月前
|
运维 Kubernetes Java
Koupleless 助力「人力家」实现分布式研发集中式部署,又快又省!
通过引入Koupleless框架,解决了多应用部署中资源浪费和运维成本高的问题,实现了模块瘦身、快速部署及流量控制优化,大幅降低了服务器资源占用和发布耗时,提升了系统稳定性和运维效率。最终,人力家成功实现了多应用的轻量集中部署,显著减少了运维成本。
 Koupleless 助力「人力家」实现分布式研发集中式部署,又快又省!
|
12月前
|
人工智能 Kubernetes 异构计算
大道至简-基于ACK的Deepseek满血版分布式推理部署实战
大道至简-基于ACK的Deepseek满血版分布式推理部署实战
692 5

推荐镜像

更多