目录
一、原理及架构
1、什么是zabbix
2、结构体系
3、原理图
4、通信过程
二、安装和使用
1、安装zabbix的相关软件
2、安装配置初始数据库
3、修改配置文件
4、启动Zabbix server和agent进程,并为它们设置开机自启
5、关闭防火墙和selinux
6、测试
7、添加监控主机
三、添加监控项
1、编写采集数据的脚本
2、编写自定义的用户参数文件
3、测试
Zabbix 是一个企业级的开源分布式监控解决方案, 可以监控网络的众多参数以及服务器、虚拟机、应用程序、服务、数据库、网站、云等的健康和完整性。
Zabbix 使用灵活的通知机制,允许用户为几乎任何事件配置基于电子邮件的告警,以实现对服务器问题做出快速反应
zabbix主要由以下几个软件组成:
server: Zabbix server 是 agents 向其报告可用性和完整性信息和统计信息的中心组件。server 是存储所有配置、统计和操作数据的中央存储库
数据存储库:Zabbix 收集的所有配置信息以及数据都存储在数据库中。
web界面:为了从任何地方和任何平台轻松访问,Zabbix 提供了基于 Web 的界面。该接口是 Zabbix server 的一部分,通常(但不一定)与 server 运行在同一台设备上。
Proxy: Zabbix proxy 可以代替 Zabbix server 收集性能和可用性数据。对于分散单个 Zabbix server 的负载非常有用。(分布式)
agent:Zabbix agent 部署在被监控目标上,以主动监控本地资源和应用程序,并将收集到的数据报告给 Zabbix server。
zabbix首先向ServerActive配置的IP请求获取active items,获取并提交active tiems数据值server或者proxy
第一部分:获取active items
第二部分:提交数据(主动检测)
#下载zabbix的仓库源
rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
#安装zabbix server和zabbix agent
yum install zabbix-server-mysql zabbix-agent
#下载前端web和数据库,这里我选择web软件是Apache
yum install centos-release-scl
yum install zabbix-web-mysql-scl zabbix-apache-conf-scl
编辑配置文件
#修改仓库文件,启用前端的源
vim /etc/yum.repos.d/zabbix.repo
[zabbix-frontend]
...
enabled=1
...
#安装mariadb数据库
yum install mariadb mariadb-server -y
#设置开机自启动
service mariadb start
systemctl enable mariadb.service
#登录MySQL数据库
mysql -uroot -p
#创建zabbix数据库
create database zabbix character set utf8 collate utf8_bin;
#创建用户zabbix@localhost 密码是123456,并授权
create user zabbix@localhost identified by '123456';
grant all privileges on zabbix.* to zabbix@localhost;
#查看当前MySQL有哪些库
show databases;
#退出mysql ,导入初始数据库,会在zabbix库新建很多表
zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
#切换用户查看是否导入成功
use zabbix
show tables;
修改zabbix-server的配置文件
#修改连接到数据库的用户名和密码
vim /etc/zabbix/zabbix_server.conf
DBPassword=password
为zabbix前端配置PHP
#修改时区,改为上海
vim /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
php_value[date.timezone] = Asia/Shanghai
systemctl restart zabbix-server zabbix-agent httpd rh-php72-php-fpm
systemctl enable zabbix-server zabbix-agent httpd rh-php72-php-fpm
#关闭防火墙并设置开机不启动
service firewalld stop
systemctl disable firewalld
#关闭selinux
setenforce 0
vim /etc/sysconfig/selinux
SELINUX=disabled
浏览器访问本机ip地址: http://192.168.8.26/zabbix
用户名:admin
密码:zabbix
服务器端使用zabbix_get命令测试:yum install zabbix_get -y
zabbix_get -s 192.168.8.26 -p 10050 -k "system.cpu.load[all,avg1]"
1、被监控主机上安装zabbix-agent
rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
yum install zabbix-agent -y #安装
service zabbix-agent restart #启动zabbix-agent服务
Redirecting to /bin/systemctl restart zabbix-agent.service
2、修改配置文件,授权zabbix-server可以过来拉取数据
vim /etc/zabbix/zabbix_agentd.conf
Server=192.168.8.26 #允许的ip地址,过来拿数据
ServerActive=192.168.8.26
#重启服务
service zabbix-agent restart
3、关闭防火墙和selinux
4、测试
zabbix_get -s 192.168.8.26 -p 10050 -k "system.cpu.load[all,avg1]"
自定义监控项,监控nginx的状态
进入zabbix-agent的配置目录:/etc/zabbix/zabbix_agent.d
cd /etc/zabbix/zabbix_agentd.d
编写一个监控脚本,内容如下:vim nginx_data.sh
#!/bin/bash
HOST="192.168.8.121"
PORT="80"
case $1 in
active)
/usr/bin/curl --insecure "http://$HOST:$PORT/sc_status" 2>/dev/null| awk '/Active/{print $NF}'
;;
reading)
/usr/bin/curl --insecure "http://$HOST:$PORT/sc_status" 2>/dev/null| awk '/Reading/{print $2}'
;;
writing)
/usr/bin/curl --insecure "http://$HOST:$PORT/sc_status" 2>/dev/null| awk '/Writing/{print $4}'
;;
waiting)
/usr/bin/curl --insecure "http://$HOST:$PORT/sc_status" 2>/dev/null| awk '/Waiting/{print $6}'
;;
accepts)
/usr/bin/curl --insecure "http://$HOST:$PORT/sc_status" 2>/dev/null| awk 'NR==3 {print $1}'
;;
ping)
/sbin/pidof nginx | wc -l
;;
handled)
/usr/bin/curl --insecure "http://$HOST:$PORT/sc_status" 2>/dev/null| awk 'NR==3{print $2}'
;;
requests)
/usr/bin/curl --insecure "http://$HOST:$PORT/sc_status" 2>/dev/null| awk 'NR==3{print $3}'
;;
esac
UserParameter=nginx.status[*],/etc/zabbix/zabbix_agentd.d/nginx_data.sh $1
授予可执行权限
chmod +x nginx_data.sh
然后在刷新服务
service zabbix-agent restart
在zabbix-server上运行,如下图表示数据获取成功
zabbix_get -k sc.nginx.status[active] -s 192.168.8.121
1
zabbix_get -k sc.nginx.status[requests] -s 192.168.0.191
117