文章目录
- Zabbix介绍
- Zabbix架构
- server5安装zabbix-server
- 实验步骤
- 解决报错一(安装zabbix-web-mysql-scl出错)
- 解决报错二(无法连接数据库)
- server6安装zabbix-agent
- 批量添加客户端
- 自动发现
- 自动注册
- API接口(适合开发人员)
- Zabbix监控
- 监控httpd服务
- 监控nginx服务
Zabbix介绍
- Zabbix 由 Alexei Vladishev 创建,目前由其成立的公司—— Zabbix SIA 积极的持续开发更新维护, 并为用户提供技术支持服务。
- Zabbix 是一个企业级分布式开源监控解决方案。
- Zabbix 是一个高度成熟完善的网络监控解决方案,一个的软件包中包含了多种功能。
- Zabbix 软件能够监控众多网络参数和服务器的健康度、完整性。Zabbix 使用灵活的告警机制,允许用户为几乎任何事件配置基于邮件的告警。这样用户可以快速响应服务器问题。Zabbix 基于存储的数据提供出色的报表和数据可视化功能。这些功能使得 Zabbix 成为容量规划的理想选择。
- Zabbix 支持主动轮询(polling)和被动捕获(trapping)。Zabbix所有的报表、统计数据和配置参数都可以通过基于 Web 的前端页面进行访问。基于 Web 的前端页面确保您可以在任何地方访问您监控的网络状态和服务器健康状况。适当的配置后,Zabbix 可以在监控 IT 基础设施方面发挥重要作用。无论是对于有少量服务器的小型组织,还是拥有大量服务器的大企业而言,同样适用。
Zabbix架构
zabbix中文参考手册 Zabbix 由几个主要的功能组件组成,其功能介绍如下所示。
- SERVER: Zabbix server 是 Zabbix软件的核心组件,agent 向其报告可用性、系统完整性信息和统计信息。server也是存储所有配置信息、统计信息和操作信息的核心存储库。
- 数据库: 所有配置信息以及 Zabbix 采集到的数据都被存储在数据库中。
- WEB 界面: 为了从任何地方和任何平台轻松访问 Zabbix ,我们提供了基于 web 的界面。该界面是 Zabbix server 的一部分,通常(但不一定)和 Zabbix server 运行在同一台物理机器上。
- PROXY: Zabbix proxy 可以代替 Zabbix server采集性能和可用性数据。Zabbix proxy在Zabbix的部署是可选部分;但是proxy的部署可以很好的分担单个Zabbix server的负载。
- AGENT: Zabbix agents 部署在被监控目标上,用于主动监控本地资源和应用程序,并将收集的数据发送给 Zabbix server。
- 数据流: 另外,回过头来整体的了解下 Zabbix 内部的数据流对Zabbix的使用也很重要。首先,为了创建一个采集数据的监控项,您就必须先创建主机。其次,在任务的另外一端,必须要有监控项才能创建触发器(trigger),必须要有触发器来创建动作(action)。因此,如果您想要收到类似“X个server上CPU负载过高”这样的告警,您必须首先为 Server X 创建一个主机条目,其次创建一个用于监控其 CPU的监控项,最后创建一个触发器,用来触发 CPU负载过高这个动作,并将其发送到您的邮箱里。虽然这些步骤看起来很繁琐,但是使用模板的话,实际操作非常简单。也正是由于这种设计,使得 Zabbix 的配置变得更加灵活易用。
server5安装zabbix-server
1.准备三台虚拟机:server5负责zabbix-server端,server6、7负责zabbix-agent端
2.配置zabbix的yum源
rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
3.在server5上安装zabbix-server和zabbix-agent
yum install -y zabbix-server-mysql zabbix-agent
4.安装数据库mariadb(mysql的分支)
yum install -y mariadb-server
systemctl enable --now mariadb
mysql
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> create user 'zabbix'@'localhost' identified by 'lyueyue';
mysql> grant all privileges on zabbix.* to 'zabbix'@'localhost';
5.向新建的zabbix库中导入初始架构和数据,输入新创建的密码。
zcat /usr/share/doc/zabbix-server-mysql-5.0.19/create.sql.gz | mysql -uzabbix -p zabbix #zcat命令查看压缩文件的内容,而无需对其进行解压缩
6.为zabbix-server配置数据库
vim /etc/zabbix/zabbix_server.conf
DBName=zabbix
DBUser=zabbix
DBPassword=lyueyue
7.开启服务
systemctl enable --now zabbix-server.service
8.查看端口10051和进程
netstat -antlp
ps ax
9.在server5上安装zabbix-web前端
首先更改镜像源(解决报错)
yum install zabbix-web-mysql-scl zabbix-apache-conf-scl
vim /etc/yum.repos.d/zabbix.repo
[zabbix-frontend]
...
enabled=1
...
vim /etc/yum.repos.d/CentOS-Base.repo
[base]
name=CentOS-$releasever - Base
failovermethod=priority
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/7/sclo/x86_64/rh/
gpgcheck=0
enabled=1
重新安装
yum install zabbix-web-mysql-scl zabbix-apache-conf-scl
10.修改zabbix.conf文件的时区,并启动httpd服务(zabbix是通过httpd发布web的)
vim /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
php_value date.timezone Asia/Shanghai
11.启动Zabbix server和agent进程,并为它们设置开机自启
systemctl restart zabbix-server zabbix-agent httpd rh-php72-php-fpm
systemctl enable zabbix-server zabbix-agent httpd rh-php72-php-fpm
12.安装web界面
http://192.168.1.21/zabbix
具体步骤详见:web界面安装官网 https://www.zabbix.com/documentation/5.0/zh/manual/installation/frontend
实验步骤
查看进程及端口
解决报错一(安装zabbix-web-mysql-scl出错)
出现报错-需要订阅官方
安装软件报错
更改镜像源
重新安装
安装成功
修改时区
安装web界面
解决报错二(无法连接数据库)
解决办法:不在虚拟机中的浏览器内安装zabbix前端界面,改为在宿主机(真机)中配置
开始配置
server6安装zabbix-agent
1.在server6上安装zabbix-agent
scp /etc/yum.repos.d/zabbix.repo server6:/etc/yum.repos.d/
vim /etc/yum.repos.d/zabbix.repo
yum install -y zabbix-agent
2.修改zabbix配置文件
vim /etc/zabbix/zabbix_agentd.conf
Server=192.168.1.21 #原来是127.0.0.1是主动模式,现在为被动模式,指向server5
ServerActive=192.168.1.21
Hostname=server6
3.启动zabbix-agent
systemctl enable --now zabbix-agent
4.查看日志
cat /var/log/zabbix/zabbix_agentd.log
5.在server端(server5)创建主机>设置主机>添加模板
修改zabbix配置文件
设置主机
添加模板
添加server6完成
批量添加客户端
再配置一台虚拟机server7,步骤同server6
自动发现
1.启用自动发现动作
2.设置自动发现规则
自动发现server7
自动注册
将配置还原到上一步自动发现前
设置自动注册
1.创建自动注册动作
2.设置触发条件
3.添加到主机群组
4.链接到模板
5.主动触发server端
systemctl enable --now zabbix-agent
设置触发条件
添加到主机群组
链接到模板
主动触发server端
成功
API接口(适合开发人员)
1.生成身份验证令牌
[root@server5 ~]# curl -s -XPOST http://192.168.1.21/zabbix/api_jsonrpc.php -H 'Content-Type: application/json-rpc' -d '
{
"jsonrpc": "2.0",
"method": "user.login",
"params": {
"user": "Admin",
"password": "zabbix"
},
"id": 1,
"auth": null
}'
{"jsonrpc":"2.0","result":"4a7f3cf4ae4834e7d265b47081064a19","id":1}You have new mail in /var/spool/mail/root #result后面是token
2.主机检索(使用生成的token编写脚本zabbix_api.sh)
vim zabbix_api.sh
curl -s -XPOST http://192.168.1.21/zabbix/api_jsonrpc.php -H 'Content-Type: application/json-rpc' -d '
{
"jsonrpc": "2.0",
"method": "host.get",
"params": {
"output": [
"hostid",
"host"
],
"selectInterfaces": [
"interfaceid",
"ip"
]
},
"id": 2,
"auth": "4a7f3cf4ae4834e7d265b47081064a19"
}' | python -m json.tool
sh zabbix_api.sh
3.主机删除
vim zabbix_api.sh
curl -s -XPOST http://192.168.1.21/zabbix/api_jsonrpc.php -H 'Content-Type: application/json-rpc' -d '
{
"jsonrpc": "2.0",
"method": "host.delete",
"params": [
"10437" #server7的hostid是10437(由上一步可知)
],
"id": 2,
"auth": "4a7f3cf4ae4834e7d265b47081064a19"
}' | python -m json.tool
sh zabbix_api.sh
4.主机创建
vim zabbix_api.sh
curl -s -XPOST http://192.168.1.21/zabbix/api_jsonrpc.php -H 'Content-Type: application/json-rpc' -d '
{
"jsonrpc": "2.0",
"method": "host.create",
"params": {
"host": "server7",
"interfaces": [
{
"type": 1,
"main": 1,
"useip": 1,
"ip": "192.168.1.23",
"dns": "",
"port": "10050"
}
],
"groups": [
{
"groupid": "2"
}
],
"templates": [
{
"templateid": "10001"
}
]
},
"auth": "4a7f3cf4ae4834e7d265b47081064a19",
"id": 1
}' | python -m json.tool
sh zabbix_api.sh
开始前准备
正式开始
主机检索
删除主机server7
删除成功
主机添加
如何查看组id?
如何得到模板id?
创建主机server7成功
Zabbix监控
监控httpd服务
1.在server6上安装httpd服务、启动服务、设置默认发布页
yum install -y httpd
systemctl enable --now httpd
echo server2 > /var/www/html/index.html
curl 192.168.1.22
2.使用模板监控
设置模板
监控nginx服务
1.在server7上安装配置nginx
yum install gcc pcre-devel openssl-devel -y
tar zxf nginx-1.18.0.tar.gz
cd nginx-1.18.0
vim auto/cc/gcc
编译安装
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
make && make install
设置环境变量
vim .bash_profile
source .bash_profile
启动nginx
nginx
修改nginx配置文件
vim /usr/local/nginx/conf/nginx.conf
location /status {
stub_status on;
access_log off;
}
nginx -s reload
2.测试
在浏览器中输入http://192.168.1.23/status
3.创建模板(定义监控项)
cd /etc/zabbix/zabbix_agentd.d/
vim userparameter_nginx.conf
UserParameter=nginx.active,curl -s http://127.0.0.1/status | grep Active | awk '{print $3}' #逗号前是key,逗号后是value
systemctl restart zabbix-agent.service
4.在server端校验(手动获取)
yum install -y zabbix-get.x86_64
zabbix_get -s 192.168.1.23 -p 10050 -k 'nginx.active'
5.设置自动获取:web方式
6.创建图形监控
开始测试
在server5上安装软件
server端将key传递给agent(192.168.1.23),agent调用脚本返回value至server端
设置自动获取
创建图形监控