zabbix是一款监控软件,可监控各种网络参数,同时支持灵活的告警机制。
常用术语
主机(Host):需要监控的网络设备,可用IP或域名表示
主机群组(Host group):为了方面批量管理大量Host,我们会通过主机群组的方式设置一些通用的权限设置
监控项 (Item) :一个特定监控指标的相关数据,这些数据来自于被监控对象,它是zabbix进行数据收集的核心
触发器(Trigger ) :表达式,用于对获取到的监控数据进行综合性的分析,然后根据设定好的阈值进行评判,OK or Problem
事件(Event) :每一次监控对象的Trigger动作都是一个事件,例如触发器的状态转变,节点的上下线等
动作(Action ) :指对于特定事件事先定义的处理方法,通过包含操作(如发送通知)和条件(何时执行操作)
模板 (Template) :用于快速定义被监控主机的预设条目集合,通常包含了item、trigger、graph、application等。
组件构成:
1、Server:内部存储了所有的配置信息、统计信息和操作信息。zabbix agent会向zabbix server报告可用性、完整性及其他统计信息
2、web页面:常与Server处于同一物理机上,提供直观的监控信息。
3、数据库:存储了配置信息、统计信息等
4、Proxy:可以根据具体生产环境进行采用或者放弃,作用是替代zabbix server采集数据信息,一般用在分布式或者大于500台主机。
5、Agent:部署在被监控目标上,用于主动监控本地资源和应用程序,并将监控的数据发送给zabbix server。
zabbix的数据收集分为两种模式:
1、主动模式:zabbix_agent(客户端)主动向zabbix server请求监控项列表,并主动将监控项内需要的数据提交给zabbix server。
2、被动模式:zabbix server向 agent 请求获取监控项的数据,zabbix agent返回数据。
监控流程
1、准备工作
- 配置zabbix服务端和客户端并正常启动
- 使用User对象登录到Zabbix的web界面,User Group的赋予User特定的资源操作权限。
- 监控对象服务是正常
2、数据采集
- 在web界面上创建 Host资源,实现服务端于被监控节点的网络连接
- 在Web界面上创建 Host Group 资源,对特定应用场景的Host进行批量管理
3、数据获取
- 在被监控节点上创建特有的item资源条目
- 在Web界面上的指定Host资源中,创建特定的 Item 监控条目
4、数据存储
- zabbix server 将获取到的数据存在数据库的对应数据表中,这一步我们不用动。
5、信息处理
- 在Web界面上创建Template对象整合现有的所有Trigger对象
- 在Web界面上创建单独的Trigger资源,然后整合到现有的Template对象中
- 当被监控节点的监控数据超出设定的阈值就会被Trigger检测出来并执行Event
- 在Web界面上做好Media对象,便于后续的通信机制正常运行
- 根据与设定好的动作执行后续Action,同时做大量的通知机制Notification|Escalation等
图形
6、日志记录
- 信息处理完毕后,在日志文件中进行记录,这一步不用动。
7、数据展示
- 在Web界面上创建Graph对象,将获取到的所有监控数据进行展示
- 在Web界面上创建Screen对象,将大量的Graph对象集中展示
- 在Web界面上创建Map对象,将主机节点间的通信数据在网络拓扑图中详细展示。
- 在web界面上创建Dashboard,综合展示所有的
部署:zabbix6.4、ubuntu22.04、mysql8.0.36、nginx1.18.0,确保mysql、nginx已经部署
1、安装zabbix仓库
wget https://repo.zabbix.com/zabbix/6.4/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.4-1+ubuntu22.04_all.deb
dpkg -i zabbix-release_6.4-1+ubuntu22.04_all.deb
apt update
2、安装zabbix-server、web前端、zabbix-agent
apt install zabbix-server-mysql zabbix-frontend-php zabbix-nginx-conf zabbix-sql-scripts zabbix-agent
3、登录mysql数据库,创建初始数据库和用户,并对用户授予所有权限
mysql -uroot -p
create database zabbix character set utf8mb4 collate utf8mb4_bin;
create user 'zabbix'@'%' identified by 'zabbix';
grant all privileges on zabbix.* to 'zabbix'@'%';
set global log_bin_trust_function_creators = 1; # 设置为1时,即使用户没有SUPER权限,也可创建或修改存储函数或存储过程,安全性降低。
exit
4、导入初始架构和数据,输入新创建用户的密码
zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix
5、关闭用户没有SUPER权限也能创建或修改存储函数或存储过程的设置
mysql -uroot -p
set global log_bin_trust_function_creators = 0;
quit;
6、修改配置文件 /etc/zabbix/zabbix_server.conf
DBPassword=password
7、为Zabbix前端配置PHP,/etc/zabbix/nginx.conf
listen 8080;
server_name example.com;
8、启动Zabbix server和agent进程,并设置开机自启
systemctl restart zabbix-server zabbix-agent nginx php8.1-fpm
systemctl enable zabbix-server zabbix-agent nginx php8.1-fpm
9、在web访问zabbix
192.1698.31.88:8080
超级用户名:Admin
密码:zabbix
报错汇集:
主机监控agent发现不可用,Get value from agent failed: cannot connect to [[192.168.31.89]:10050]: [113] No route to host
问题:测试server和agent互ping,如果可通,那就是防火墙阻拦了,关掉恢复了。