一、实验目的
总结zabbix作为监控软件的原理,了解并使用zabbix的监控功能,zabbix的监控模式,主要特点,zabbix的架构,内部配置的数据流程,zabbix的术语,zabbix的安装和基本操作。
二、实验主要内容
1、实现zabbix的安装和基本操作
2、zabbix对其他主机进行监控
3、zabbix对tomcat进行监控
三、实验环境与准备
2台拍完快照配置好的linux主机,1台10.100为zabbix监控主机server、安装java-gateway服务、mysql-server服务,一台110作为agent服务器。
四、实验分析与设计思路
Zabbix支持多种模式,zabbix支持普通的zabbix server到zabbix agent端模式,也支持zabbix-sever到zabbix-proxy模式,zabbix-server同时关联多个zabbix-agent,将zabbix-agent的历史数据存储到zabbix-server管理的数据库中,然后经过zabbix的web(也就是nginx)展示出来;
zabbix支持proxy代理模式,只需要授权proxy监听在特定的端口上10052,而对应的proxy会独立的管理他下面的zabbix-agent,并将zabbix-agent的数据存储到proxy管理的数据库中,zabbix-server没有存储zabbix-proxy数据的功能,是将proxy的数据放到zabbix web展示区进行展示;
Zabbix是基于php开发的,默认使用fastcgi,而Java不支持fastcgi模式,为了采集展示进行可视化java对应的指标数据,要让Java支持fastcgi,需要安装一个JMX的java类,zabbix关联java gateway,java中的应用体系支持gateway进行绑定起来,基于JMX就可以收集到Java gateway的数据并将其在zabbix web上进行图表展示。
被监控端安装agent应用程序,被监控端可以采集数据,基于主动模式或被动模式将历史数据或者趋势数据发送给zabbix的服务端,服务端会将数据进行汇聚,将历史数据存储到数据库,关联他的认证执行系统,将收集的趋势数据基于特定的UI格式展示出来,同时汇聚的数据到告警策略区,一旦数据指标出现超过阈值的情况,会触发告警策略,关联到用户管理系统、认证执行系统、媒介系统,动作系统,发送告警,会关联后面的告警媒介,基于邮件微信电话或者短信告警,同时将告警的事件记录到事件管理器,在主面板展示出来,故障修复之后,事件管理器会重新定义事件,将已经修复的事件移除。
五、详细实验过程
1、实现zabbix的安装和基本操作
首先将epel源移到backup,安装zabbix不用epel源,有脚本就用脚本运行了
[root@node-1 ~]# bash repo_f.sh
安装mysql数据库
[root@node-1 ~]# yum -y install mysql-server
安装zabbix-server端 清理epel缓存
rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/9/x86_64/zabbix-release-6.0-4.el9.noarch.rpm
dnf clean all
100主机安装Zabbix server,Web前端,agent
dnf install zabbix-server-mysql zabbix-web-mysql zabbix-nginx-conf zabbix-sql-scripts zabbix-selinux-policy zabbix-agent
创建初始数据库 首先启动mysql服务
[root@node-1 yum.repos.d]# systemctl start mysqld.service
[root@node-1 yum.repos.d]# mysql -uroot -p
创建数据库zabbix设置utf8区分大小写,创建用户zabbix授权zabbix库下的所有表,设置支持全局函数
mysql> create database zabbix character set utf8mb4 collate utf8mb4_bin;
mysql> create user 'zabbix'@'%' identified by '666666';
mysql> grant all privileges on zabbix.* to 'zabbix'@'%';
mysql> set global log_bin_trust_function_creators = 1;
mysql> quit;
导入初始架构和数据,系统将提示您输入新创建的密码。
[root@node-1 yum.repos.d]# zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix
登录到数据库中查看是否已经导入到zabbix数据库中,已经产生了许多数据表
mysql -uroot -p
mysql> show tables;
关闭全局函数设置
mysql> set global log_bin_trust_function_creators = 0;
mysql> set global log_bin_trust_function_creators = 0;
为Zabbix server配置数据库
编辑配置文件 vim /etc/zabbix/zabbix_server.conf
LogFileSize=500 //日志超过500M自动滚动
DBPassword=666666 //数据库密码
StartProxyPollers=8 //开启多少proxy代理进程,用于搜集proxy代理监控数据
StartPingers=5 //启动多少Ping进程(若检测网络设备多,可以多调)
StartSNMPTrapper=1 //是否开启snmp检测进程
MaxHousekeeperDelete=500000 //每次最多删除历史数据的行数
CacheUpdateFrequency=30 //内存缓存的数据更新周期,单位为秒
Timeout=30 //获取监控数据的超时时长
ProxyConfigFrequency=15 //proxy被动模式下,server多少秒同步配置文件至proxy。
ProxyDataFrequency=5 //被动模式下,zabbix server间隔多少秒向proxy请求历史数据
为Zabbix配置前端php,修改端口为80,更改server_name
[root@node-1 yum.repos.d]# vim /etc/nginx/conf.d/zabbix.conf
[root@node-1 yum.repos.d]# vim /etc/php.ini
启动Zabbix server和agent进程
启动Zabbix server和agent进程,并为它们设置开机自启:
[root@node-1 yum.repos.d]# systemctl restart zabbix-server zabbix-agent nginx php-fpm
[root@node-1 yum.repos.d]# systemctl enable zabbix-server zabbix-agent nginx php-fpm
配置一下字体,可能会不支持中文出现乱码,更改一下字体
[root@node-1 zabbix]# cd /usr/share/zabbix/assets/fonts/
网页访问zabbix,192.168.10.100:80 可以看到zabbix网页主页
选择语言中文 点击下一步,然后再下一步
主机名称写zabbix就可以,注意默认时区要改为Asia/Shanghai
确认无误下一步
安装成功
注意:默认账号为Admin,密码为zabbix
登录成功,可以看到zabbix的仪表板
2、zabbix对其他主机进行监控
到 zabbix官网选择LTS6.0稳定版下载agent2
rpm-Uvh https://repo.zabbix.com/zabbix/6.0/rhel/9/x86_64/zabbix-release-6.0-4.el9.noarch.rpm
[root@node-2 ~]# dnf clean all 清楚缓存
[root@node-2 ~]# dnf install zabbix-agent2 zabbix-agent2-plugin-* 安装agent2
配置文件进行修改zabbix_agent2.conf
[root@node-2 ~]# vim /etc/zabbix/zabbix_agent2.conf
Server=192.168.10.100 server对应的IP
ListenPort=10050 端口为10050
ListenIP=0.0.0.0
Hostname=192.168.10.110 agent主机IP
启动agent2的服务
[root@node-2 ~]# systemctl enable --now zabbix-agent2.service
端口也打开了 ss -tnl
使用 zabbix_get 工具测试 Zabbix Agent 是否正常
[root@node-1~]#rpm -ivh https://mirror.tuna.tsinghua.edu.cn/zabbix/zabbix/6.0/rhel/9/x86_64/zabbix-get-6.0.20-release1.el9.x86_64.rpm
[root@node-1 ~]# zabbix_get -V
检测zabbix能否探测到agent
[root@node-1 ~]# zabbix_get -s 192.168.10.110 -p 10050 -k "agent.ping"
在zabbix网页中右上角点击添加主机,将刚才的agent的主机添加
可以看到agent110已经展示出了很多数据
3、zabbix对tomcat进行监控
按照安装agent的思路在官网找到对应的文档,然后输入安装java-gateway的命令
[root@node-1 ~]# dnf install zabbix-java-gateway -y
[root@node-1 zabbix]# vim zabbix_java_gateway.conf
LISTEN_IP="0.0.0.0"
LISTEN_PORT=10052
START_POLLERS=5
对zabbix的server配置文件进行配置,打开与javagateway相关的配置
[root@node-1 zabbix]# vim zabbix_server.conf
还有StartEscalators=1 和 StartAlerters=3 默认是配置好的,不需要改
启动zabbix-java-gateway服务
[root@node-1 zabbix]# systemctl start zabbix-java-gateway
查看端口可以看到,server的端口,agent的端口和java-gateway的端口都打开了
在agent上安装java应用如tomcat
vim /usr/local/tomcat/bin/catalina.sh
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 -Dcom.rmi.server.hostname=192.168.10.120"
重启tomcat服务
[root@node-2 ~]# systemctl restart tomcat.service
重启server主机的server服务和java-gateway服务
[root@node-1 zabbix]# systemctl restart zabbix-java-gateway
[root@node-1 zabbix]# systemctl restart zabbix-server.service
在zabbix中的主机中选择110然后进行更新,更新完成
六、实验结果及分析
搞清楚zabbix的架构体系和功能对于实验的操作有着很好的帮助,zabbix-server和zabbix-agent之间的关系,关联的方式,导入数据库中的内容等等,已经在监控过程中可能会出现的告警等等,还有就是字体需要更改。
七、总结
Zabbix 术语
被监控: 即 Zabbix 监控的主机或设备
监控项item:即 Zabbix 监控的相关指标,比如:CPU利用率,内存使用率,TCP连接数等
应用集Application:为方便管理众多的监控项,可将多个同类型的监控项进行归类,纳入一个集合中,即应用集
触发器Trigger:是一个表达式,或者说一个条件,如磁盘利用率超过80%等,当触发条件后,会导致一个触发事件,这个事件会执行一个或多个动作
动作Action:动作是触发器的条件被触发后的行为,可以是发送一条短信,微信或邮件,或是重启某个服务
告警:当触发器和动作二者结合起来时,就构成了的告警机制,比如cpu的使用率达到80%以上,触发了报警动作,系统将自动发送一封邮件到指定的邮箱。然后运维可以及时的去处理此错误。
Web 监测:对WEB服务进行检测,比如:访问指定网站是否可正常访问
模板 Template: 可以方便地应用于多个主机的一组实体的集合。
可用的mode参数包括:
avg——指定类型所有进程的平均值
count——返回创建的指定类型进程的数量
max——最大值
min——最小值
——进程号,含义参见“描述”中所述的;
可用的state参数包括:
繁忙(busy)——表示处于繁忙状态的进程;
空闲(idle)——表示处于空闲状态的进程;
low-level discovery rules (自动发现规则 ,自Zabbix 2.0起)
web scenarios (web场景, 自Zabbix 2.0起)。