【Distributed】分布式监控系统zabbix应用(二)


一、部署 Zabbix 代理服务器

1. 分布式监控的作用

  • 分担 server 的集中式压力;
  • 解决多机房之间的网络延时问题。

结构:agent ——> proxy ——> server

2. 部署过程

systemctl disable --now firewalld
setenforce 0
hostnamectl set-hostname zbx-proxy

在这里插入图片描述

2.1 设置 zabbix 的下载源,安装 zabbix-proxy

rpm -ivh https://repo.zabbix.com/zabbix/6.0/rhel/7/x86_64/zabbix-release-6.0-4.el7.noarch.rpm
sed -i 's#https://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' /etc/yum.repos.d/zabbix.repo

yum install -y zabbix-proxy-mysql zabbix-sql-scripts zabbix-selinux-policy

在这里插入图片描述

2.2 部署数据库

  要求 MySQL 5.7 或 Mariadb 10.5 及以上版本

#配置 Mariadb yum源
cat > /etc/yum.repos.d/mariadb.repo << EOF
[mariadb]
name = MariaDB
baseurl = http://mirrors.aliyun.com/mariadb/yum/10.5/centos7-amd64/
gpgkey = http://mirrors.aliyun.com/mariadb/yum/RPM-GPG-KEY-MariaDB
gpgcheck = 1
enabled=1
EOF

yum install -y mariadb-server mariadb

systemctl enable --now mariadb

在这里插入图片描述

在这里插入图片描述

#初始化数据库
mysql_secure_installation
分别输入 回车 -> n -> Y (设置root密码,如abc123) -> 后面一路 Y

mysql -u root -pabc123

在这里插入图片描述

#创建数据库并指定字符集
CREATE DATABASE zabbix_proxy character set utf8 collate utf8_bin;

在这里插入图片描述

#创建 zabbix 数据库用户并授权
GRANT all ON zabbix_proxy.* TO 'zabbix'@'localhost' IDENTIFIED BY 'zabbix';
GRANT all ON zabbix_proxy.* TO 'zabbix'@'%' IDENTIFIED BY 'zabbix';
FLUSH PRIVILEGES;

在这里插入图片描述

2.3 导入数据库信息

rpm -ql zabbix-sql-scripts 		#查询 sql 文件的位置

cat /usr/share/zabbix-sql-scripts/mysql/proxy.sql | mysql -uroot -pabc123 zabbix_proxy

在这里插入图片描述

2.4 修改 zabbix-proxy 配置文件

vim /etc/zabbix/zabbix_proxy.conf
Server=192.168.145.45				#32行,指定 zabbix 服务端的 IP 地址
Hostname=zbx-proxy					#42行,指定当前 zabbix 代理服务器的主机名
DBPassword=zabbix					#194行,指定当前数据库 zabbix 用户的密码

在这里插入图片描述

2.5 启动 zabbix-proxy

systemctl start zabbix-proxy
systemctl enable zabbix-proxy

在这里插入图片描述

2.6 在所有主机上配置 hosts 解析

vim /etc/hosts
192.168.145.30 zbx-server
192.168.145.15 zbx-agent01
192.168.145.45 zbx-agent02
192.168.145.60 zbx-proxy

在这里插入图片描述

2.7 在 Web 页面配置 agent 代理

点击左边菜单栏【配置】中的【动作】,勾选自动注册规则,点击 禁用
点击左边菜单栏【配置】中的【主机】,勾选原有的客户端主机,点击 删除

点击左边菜单栏【管理】中的【agent代理程序】,点击【创建代理】
【agent代理程序名称】输入 zbx-proxy
【系统代理程序模式】选择 主动式
【代理地址】输入 192.168.145.60
点击 【添加】

在这里插入图片描述

2.8 配置 agent 使用 proxy

#在客户端修改 agent2 配置文件
vim /etc/zabbix/zabbix_agent2.conf
......
Server=192.168.145.60			#80行,指定 zabbix 代理服务器的 IP 地址
ServerActive=192.168.145.60		#133行,指定 zabbix 代理服务器的 IP 地址

在这里插入图片描述

#在 Web 页面配置
点击左边菜单栏【配置】中的【主机】,点击【创建主机】
【主机名称】输入 zbx-agent01
【可见的名称】输入 zbx-agent01
【模板】搜索 Linux ,选择 Linux by Zabbix agent
【群组】选择 Linux server
【Interfaces】选择 客户端,【IP地址】输入 192.168.145.15,【端口】输入 10050
【由agent代理程序监测】选择 zbx-proxy
点击 【添加】

在这里插入图片描述

#分别在客户端和代理服务器上重启服务
systemctl restart zabbix-agent2

systemctl restart zabbix-proxy

等待一段时间后,点击左边菜单栏【配置】中的【主机】刷新,查看客户端主机监控状态正常

在服务端查看日志
tail -f /var/log/zabbix/zabbix_proxy.log

在这里插入图片描述

在这里插入图片描述

二、部署 Zabbix 高可用集群

  官方的高可用仅仅针对 Zabbix Server 部分,数据库部分和前端部分需要自行采用各自领域的高可用解决方案。

1. 服务端配置

  默认情况下,HA 是关闭的。HA 部分的配置在配置文件的最下面:High availability cluster parameters 部分。

#主节点 Zabbix Server 配置
vim /etc/zabbix/zabbix_server.conf
......
DBHost=192.168.145.30					#87行
DBName=zabbix							#99行
DBUser=zabbix							#115行
DBPassword=zabbix						#123行
......
HANodeName=zbx-server01					#974行,设置为当前节点主机名
NodeAddress=192.168.145.30:10051		#984设置为节点IP


systemctl restart zabbix-server

在这里插入图片描述

#主节点给数据库授权远程登录权限
mysql -uroot -pabc123
GRANT all ON zabbix.* TO 'zabbix'@'%' IDENTIFIED BY 'zabbix';
FLUSH PRIVILEGES;

在这里插入图片描述

#备节点 Zabbix Server 配置
vim /etc/zabbix/zabbix_server.conf
......
DBHost=192.168.145.30					#87行
DBName=zabbix							#99行
DBUser=zabbix							#115行
DBPassword=zabbix						#123行
......
HANodeName=zbx-server02					#974行,设置为当前节点主机名
NodeAddress=192.168.145.30:10051		#984设置为节点IP


systemctl restart zabbix-server

在这里插入图片描述

2. 客户端配置

vim /etc/zabbix/zabbix_agentd.conf 
......
Server=192.168.145.30,192.168.145.75
ServerActive=192.168.145.30;192.168.145.75			#注意,ServerActive 的连接符是‘;’ ,而不是‘,’

在这里插入图片描述

3. 测试

vim /etc/hosts
192.168.145.30 zbx.abc.com
192.168.145.75 zbx.def.com
192.168.145.15 zbx-agent01
192.168.145.45 zbx-agent0

在这里插入图片描述

三、Zabbix 监控 Windows 系统

1.下载 Windows 客户端 Zabbix agent 2

https://cdn.zabbix.com/zabbix/binaries/stable/6.0/6.0.13/zabbix_agent2-6.0.13-windows-amd64-openssl.msi

2.安装客户端,配置

双击客户端软件包开始安装
【Host name】:WIN10-SERVER
【Zabbix server IP/DNS】:192.168.145.30
【Agent listen port】:10050
【Server or Proxy for active checks】:192.168.145.30
勾选 【Add agent location to the PATH】

在这里插入图片描述

3.在服务端 Web 页面添加主机,关联模板

点击左边菜单栏【配置】中的【主机】,点击【创建主机】
【主机名称】输入 win10-agent01
【可见的名称】输入 win10-agent01-192.168.80.5
【模板】搜索 windows ,选择 Windows by Zabbix agent
【群组】输入 windows ,选择 windows()
【Interfaces】点击添加 客户端,【IP地址】输入 192.168.80.5,【端口】输入 10050

在这里插入图片描述

在这里插入图片描述

四、Zabbix 监控 java 应用

1.客户端开启 java jmxremote 远程监控功能

#上传 tomcat 软件包到 /opt 目录中
cd /opt
tar zxvf apache-tomcat-9.0.16.tar.gz
mv apache-tomcat-9.0.16 /usr/local/tomcat

在这里插入图片描述

#配置 java jmxremote 远程监控功能
vim /usr/local/tomcat/bin/catalina.sh
......	#位置在 cygwin=false 前
CATALINA_OPTS="$CATALINA_OPTS \
-Dcom.sun.management.jmxremote \
-Dcom.sun.management.jmxremote.port=12345 \
-Dcom.sun.management.jmxremote.authenticate=false \
-Dcom.sun.management.jmxremote.ssl=false \
-Djava.rmi.server.hostname=192.168.145.15"           #tomcat服务器地址

cygwin=false

在这里插入图片描述

#启动服务,查看端口
/usr/local/tomcat/bin/startup.sh 

netstat -lntp | grep 12345

在这里插入图片描述

2.服务端安装 zabbix-java-gateway

yum install -y zabbix-java-gateway

systemctl enable --now zabbix-java-gateway.service

netstat -lntp | grep 10052			#zabbix-java-gateway 默认监听 10052 端口

在这里插入图片描述

3.修改服务端 zabbix-server 配置

vim /etc/zabbix/zabbix_server.conf
......
JavaGateway=127.0.0.1			# 317行,指定 zabbix-java-gateway 的 IP 地址
StartJavaPollers=5				# 333行,开启用来收集java数据的poller进程的数量

systemctl restart zabbix-server

ps -ef | grep zabbix_server | grep java

在这里插入图片描述

在这里插入图片描述

4.在服务端 Web 页面添加主机,关联模板

点击左边菜单栏【配置】中的【主机】,点击 zbx-agent01
【模板】搜索 JMX ,选择 Generic Java JMX
【Interfaces】点击添加 JMX,【IP地址】输入 192.168.145.15,【端口】输入 12345
点击 【更新】
等待一段时间后 Zabbix server 的可用性增加了 JXM 监控方式

在这里插入图片描述

在这里插入图片描述

#监控其它 java 应用
java -Dcom.sun.management.jmxremote \
-Dcom.sun.management.jmxremote.port=12345 \
-Dcom.sun.management.jmxremote.authenticate=false \
-Dcom.sun.management.jmxremote.ssl=false \
-Djava.rmi.server.hostname=192.168.80.30" \
-jar XXX.jar

五、Zabbix 监控 SNMP

  SNMP,简单网络管理协议,常用于监控网络设备,也能监控支持开启SNMP功能的设备(windows、linux、打印机等)。

1.服务端安装 snmp 监控程序

yum install -y net-snmp net-snmp-utils

在这里插入图片描述

2.修改 snmp 的配置文件,并启动服务

vim /etc/snmp/snmpd.conf
......
view    systemview    included   .1				#57行,添加此配置

systemctl start snmpd

在这里插入图片描述

3.使用 snmpwalk 命令测试

snmpwalk -v 2c -c public 127.0.0.1 sysname

SNMPv2-MIB::sysName.0 = STRING: zbx-server
-------------------------------------------------------

–v 1|2c|3:指定SNMP协议版本,v2c通过团体名作为认证,v3通过用户名和密码认证
–c:指定团体名(设备间的暗号)

sysname:为 snmp 的 key,用于查看系统名称;SysDesc 用于查看系统信息
-------------------------------------------------------

在这里插入图片描述

4.在 Web 页面配置 snmp 方式监控

点击左边菜单栏【配置】中的【主机】,点击 Zabbix server
【模板】取消链接并清理 现有模板 Linux by Zabbix agent
        搜索 Generic,选择 Generic by SNMP
【群组】搜索 net,选择 net()
【Interfaces】点击【添加】选择 SNMP ,【IP地址】输入 127.0.0.1,【端口】输入 161
【SNMP version】选择 SNMPv2
【SNMP community】输入 {$SNMP_COMMUNITY}

在这里插入图片描述

点击上方菜单栏【宏】
选择【主机宏】
【宏】输入 {$SNMP_COMMUNITY},【值】 输入 public(要与网络设备设置的团体名一致),【描述】输入 网络设备snmp的团队名
点击 【更新】
等待一段时间后 Zabbix server 的可用性就变成了 SNMP 监控方式

在这里插入图片描述

总结

1. Zabbix 如何邮件报警

1)在服务端web管理页面的 【管理】-【报警媒介类型】中设置报警类型和报警内容
2)在 【User settings】-【profile】-【报警媒介】中设置 类型 收件人 启用时间 故障严重级别
3)在【配置】-【动作】-Trigger actions】中添加 报警触发器和操作内容
4)测试

2. Zabbix 和 Prometheus 区别

zabbix 优点:

  1、监控模版可以包含多个指标,在不涉及自定义采集脚本等其他方式的情况下,使用SNMP、Zabbix Agent 的情况下可以做到开箱即用;

  2、指标和触发器(Zabbix的告警规则叫触发器)的关联交互挺好用;

  3、宏和宏变量的使用可以大大的提高告警的便捷性,基本可以做到每个label 不同的阈值;

  4、Zabbix 的指标采集挺丰富的,包括采集间隔,是否要一直采集还是每天固定时间段来采集;

  5、Zabbix 的管理页面,这个不愧是企业级软件,Zabbix 很大一部分的优势是靠它来体现的。

zabbix缺点:

  1、Zabbix 架构原生是单点,没有集群方案,官方推荐的是使用keepalived 来进行3个点的负载均衡,这个方案在现在来说还是有很大的优化空间的。

  2、Zabbix 的数据存储使用关系型数据库,在 Zabbix 刚发布的时候,这个没的选择,但放在现在这是个很大的问题,当指标数量增加以后,数据的存储空间、查询时间都变成了一个恐怖的事情。当前使用了6TiB的空间来存储了每帧80万条数据,采集间隔一分钟,详细数据1个月,历史数据大概1年半的数据,Prometheus 存储比这个节省多了。当然zabbix 也可以支持更大的数据收集规模,只是不知道资源会按什么比例增长。

  3、升级复杂,体验了4.4.0升级到4.4.10以后,升级太麻烦,使用Zabbix 你的团队最好配置一个DBA 来处理各种问题。

  4、Zabbix 和 Grafana 的结合不太好,语句写起来挺生硬的,也能用,但是不如Prometheus 灵活。

Prometheus 的优点:

  1、结构简单,但是可以水平扩展,通过和thanos 结合可以做到无缝的水平扩展。不喜欢thanos 也可以使用自带的联邦功能进行扩展,Prometheus 的思想就是:我尽量简单但是好用,剩下的功能尽管放给其他人做

  2、采用时序数据库,大大的节省了存储空间,并且提升了查询效率。我使用3TiB 的空间存储了每帧300万条数据,30秒采集一次,大约有120万条数据是15秒采集一次,详细数据存2个月,5分钟降准数据存半年,一小时降准数据存一年,而且我还不需要DBA 参与。

  3、采集配置简单,简单配置以后就可以收取丰富的指标,不用自己一个指标一个指标的添加。

  4、原生支持收集很多服务暴露的监控数据,Zabbix 很难收集应用自身提供的监控数据。

Prometheus 的缺点:

  当前告警规则无法快捷的支持每个label 一个阈值,要么统一阈值,要么一个label 一条规则,量大了以后真的不好管理。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我的宝贝大唐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值