目录
一,zabbix介绍
二,部署zabbix
2.1 server端部署
2.2 agent端部署
2.3 中文字体乱码设置
三, Zabbix API方式配置
1)、zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。
2)、zabbix的组成:
zabbix由两部分构成,zabbix server与可选组件zabbix agent。
zabbix server可以通过SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能,它可以运行在Linux,Solaris,HP-UX,AIX,Free BSD,Open BSD,OS X等平台上。
zabbix agent需要安装在被监视的目标服务器上,它主要完成对硬件信息或与操作系统有关的内存,CPU等信息的收集。zabbix agent可以运行在Linux,Solaris,HP-UX,AIX,Free BSD,Open BSD, OS X, Tru64/OSF1, Windows NT4.0, Windows (2000/2003/XP/Vista)等系统之上。
zabbix server可以单独监视远程服务器的服务状态;同时也可以与zabbix agent配合,可以轮询zabbix agent主动接收监视数据(agent方式),同时还可被动接收zabbix agent发送的数据(trapping方式)。
另外zabbix server还支持SNMP (v1,v2),可以与SNMP软件(例如:net-snmp)等配合使用。
要想搭建一个Zabbix的工作环境,需要从服务器入手。与服务器通信,管理员需要使用一个Zabbix前端界面,与Zabbix服务器和数据库进行通信。三个关键(界面、服务器和数据库)可以安装在同一台服务器上,但是如果你拥有一个更大更复杂的环境,将它们安装在不同的主机上也是一个选项。Zabbix服务器能够直接监控到同一网络中的设备,如果其他网络的设备也需要被监控,那还需要一台Zabbix代理服务器。
3)、zabbix的工作流程:
(1)Agent获取被监控端数据,发送给Server。
(2)Server记录所接收到的数据,存储在Database中并按照策略进行相应操作。
(3)Web Interface将收集到的数据和操作信息显示给用户。
4)、zabbix的主要特点:
安装与配置简单,学习成本低
支持多语言(包括中文)
免费开源
自动发现服务器与网络设备
分布式监视以及WEB集中管理功能
可以无agent监视
用户安全认证和柔软的授权方式
通过WEB界面设置或查看监视结果
email等通知功能
Zabbix主要功能:
CPU负荷
内存使用
-磁盘使用
网络状况
端口监视
日志监视。
5)、zabbix的发行版分为标准版和LTS版本
zabbix LTS与zabbix标准发行版本的生命周期有区别,普通版本6个月开发发行,支持6个月无限制支持,外加一个月有限制支持。
LTS为Long Term Support的简写,zabbix将为客户提供5年的支持服务。前三年完全支持与后两年有限制支持。前三年包括一般、关键、安全性问题解决,后两年包括关键、安全性问题解决。超出时间不提供技术支持服务。
参考网站: https://www.zabbix.com/documentation/4.0/zh/manual
稳定起见使用LTS长期支持版本.
Zabbix server 是整个 Zabbix 软件的核心程序。
Zabbix Server 负责执行数据的主动轮询和被动获取,计算触发器条件,向用户发送通知。它是 Zabbix Agent 和 Proxy 报告系统可用性和完整性数据的核心组件。Server 自身可以通过简单服务远程检查网络服务(如Web服务器和邮件服务器)。
Zabbix Server是所有配置、统计和操作数据的中央存储中心,也是Zabbix监控系统的告警中心。在监控的系统中出现任何异常,将被发出通知给管理员。
基本的 Zabbix Server 的功能分解成为三个不同的组件。他们是:Zabbix server、Web前端和数据库。
Zabbix 的所有配置信息都存储在 Server 和Web前端进行交互的数据库中。例如,当你通过Web前端(或者API)新增一个监控项时,它会被添加到数据库的监控项表里。然后,Zabbix server 以每分钟一次的频率查询监控项表中的有效项,接着将它存储在 Zabbix server 中的缓存里。这就是为什么 Zabbix 前端所做的任何更改需要花费两分钟左右才能显示在最新的数据段的原因。
server端:
下载zabbix的官方软件包,将其放在宿主机的发布目录下,然后依次配置几个节点的yum源;
root@node1 ~]# rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
[root@node1 ~]# cd /etc/yum.repos.d/
[root@node1 yum.repos.d]# vim zabbix.repo
[root@node1 yum.repos.d]# yum clean all
下载zabbixserver,agent,以及mysql的相关环境:
[root@node1 ~]# yum install zabbix-server-mysql zabbix-agent
[root@node1 ~]# rpm -ivh centos-release-scl-2-3.el7.centos.noarch.rpm centos-release-scl-rh-2-3.el7.centos.noarch.rpm
[root@node1 ~]# yum install zabbix-web-mysql-scl zabbix-apache-conf-scl
[root@node1 ~]# tar xf mysql-5.7.33-1.el7.x86_64.rpm-bundle\(1\).tar
[root@node1 ~]# yum install -y mysql-community-client-5.7.33-1.el7.x86_64.rpm mysql-community-common-5.7.33-1.el7.x86_64.rpm mysql-community-libs-5.7.33-1.el7.x86_64.rpm mysql-community-libs-compat-5.7.33-1.el7.x86_64.rpm mysql-community-server-5.7.33-1.el7.x86_64.rpm
[root@node1 ~]# systemctl start mysqld 启动
[root@node1 ~]# systemctl enable mysqld 设置开机自启动
[root@node1 ~]# cd /var/lib/mysql
[root@node1 mysql]# cat /var/log/mysqld.log 查看生成的零时密码
[root@node1 mysql]# mysql_secure_installation 初始化修改密码
密码要求:大小写,字符数字加特殊符号 Zcx123,@
创建数据库:
mysql> create database zabbix character set utf8 collate utf8_bin;
Query OK, 1 row affected (0.00 sec)
mysql> create user zabbix@localhost identified by 'Zcx123,@';
Query OK, 0 rows affected (0.00 sec)
mysql> grant all privileges on zabbix.* to zabbix@localhost;
导入初始架构和数据,系统将提示输入新创建的密码。
[root@node1 mysql]# cd /usr/share/doc/zabbix-server-mysql-5.0.26/
[root@node1 zabbix-server-mysql-5.0.26]# zcat create.sql.gz | mysql -uzabbix -p zabbix
[root@node1 zabbix-server-mysql-5.0.26]# vim /etc/zabbix/zabbix_server.conf
[root@node1 zabbix-server-mysql-5.0.26]# vim /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf修改时区
[root@node1 ~]# systemctl enable --now zabbix-server zabbix-agent httpd rh-php72-php-fpm 启动并开机自启动
访问:
配置主机:点击配置-主机可以看到 sever 的状态是可用的,如果是红的可能是因为没有开启zabbix-agent;
Zabbix agent 部署在被监控目标上,以主动监控本地资源和应用程序(硬盘、内存、处理器统计信息等)。
Zabbix agent 收集本地的操作信息并将数据报告给 Zabbix server 用于进一步处理。一旦出现异常 (例如硬盘空间已满或者有崩溃的服务进程),Zabbix server 会主动警告管理员指定机器上的异常。
Zabbix agents 的极高效率缘于它可以利用本地系统调用来完成统计数据的采集。
前面在node2和node3上已经配置了软件仓库,此处直接下载agent所需的软件包即可,然后进行相应的配置;
先来配置node2上,然后启动服务:
[root@node1 ~]# cd /etc/yum.repos.d/
[root@node1 yum.repos.d]# scp zabbix.repo node2:/etc/yum.repos.d/
[root@node1 yum.repos.d]# scp zabbix.repo node3:/etc/yum.repos.d/
[root@node2 ~]# yum install -y zabbix-agent
[root@node2 ~]# cd /etc/zabbix/
[root@node2 zabbix]# vim zabbix_agentd.conf
[root@node2 zabbix]# systemctl enable --now zabbix-agent.service 启动并设为开机自启动
[root@node2 zabbix]# cat /var/log/zabbix/zabbix_agentd.log 查看日志
8084:20220818:174131.319 Starting Zabbix Agent [node2]. Zabbix 5.0.26 (revision 1eb7c56219b).
8084:20220818:174131.319 **** Enabled features ****
8084:20220818:174131.319 IPv6 support: YES
8084:20220818:174131.319 TLS support: YES
8084:20220818:174131.319 **************************
8084:20220818:174131.319 using configuration file: /etc/zabbix/zabbix_agentd.conf
8084:20220818:174131.319 agent #0 started [main process]
8086:20220818:174131.320 agent #2 started [listener #1]
8087:20220818:174131.321 agent #3 started [listener #2]
8088:20220818:174131.323 agent #4 started [listener #3]
8089:20220818:174131.324 agent #5 started [active checks #1]
8085:20220818:174131.326 agent #1 started [collector]
8089:20220818:174131.327 no active checks on server [192.168.0.11:10051]: host [node2] not found
从日志信息和监控页面可以看到,此时虽然开启了对应的端口,但是监控端并没有发现被监控端的信息,下来就需要对监控主机进行添加。
监控主机的添加分为三种
1.手动添加
如图所示,点击右上角添加主机:
然后写入主机名,选择群组;看所要监控的归到那个组里面;然后填入IP;
按提示创建模板:模板中可以选择预设的监控项,如监控硬盘/CPU的选项等等。如果没有,可以手动创建模板;此处选择操作系统的监控;
2.自动发现
先添加动作,启用动作,再配置并启动自动发现添加动作并启用动作:
开一台虚拟机,下载所需要的agent信息,并配置agent信息如下所示:
[root@node3 ~]# yum install -y zabbix-agent
[root@node3 ~]# cd /etc/zabbix/
[root@node3 zabbix]# vim zabbix_agentd.conf
[root@node3 zabbix]# systemctl enable --now zabbix-agent.service
由于刚才设置的时间过长,此时可能需要等待一定的时间才能被发现;并被检测。此时可以将其改为60s ,等待时间到了之后便会被自动发现;
3.自动注册
在做这个的时候,先将自动发现停用,删除node3主机否则会冲突;
此处不想在开更多的主机,将之前自动发现的主机删除;然后来做自动注册;
然后设置自动注册:
此时完成之后当有新的符合条件的主机时,便会自动添加近来。
如果没有添加进来,需要重启
[root@node3 ~]# systemctl restart zabbix-agent
以上在用中文查看图形时,页面信息会是乱码的情况;可以通过以下设置来将其调整完整;
[root@node1 yum.repos.d]# cd /etc/httpd
[root@node1 httpd]# cd conf.d/
[root@node1 conf.d]# cat zabbix.conf
[root@node1 conf.d]# cd /usr/share/zabbix
[root@node1 zabbix]# cd assets/
[root@node1 assets]# cd fonts/
[root@node1 fonts]# ll
total 0
lrwxrwxrwx 1 root root 33 Aug 15 18:59 graphfont.ttf -> /etc/alternatives/zabbix-web-font
[root@node1 fonts]# mv /root/simkai.ttf . 将文字体配置移到当前
[root@node1 fonts]# rm -rf graphfont.ttf 删除原软连接
[root@node1 fonts]# ln -s simkai.ttf graphfont.ttf 重新做个链接
[root@node1 fonts]# ll
total 4040
lrwxrwxrwx 1 root root 10 Aug 18 18:03 graphfont.ttf -> simkai.ttf
-rw-r--r-- 1 root root 4135804 Aug 18 18:01 simkai.ttf
Zabbix API允许你以编程方式检索和修改Zabbix的配置,并提供对历史数据的访问。它广泛用于:
1).创建新的应用程序以使用Zabbix;
2).将Zabbix与第三方软件集成;
3).自动执行常规任务。
Zabbix API是基于Web的API,作为Web前端的一部分提供。它使用JSON-RPC 2.0协议,这意味着两件事:
1).该API包含一组独立的方法;
2).客户端和API之间的请求和响应使用JSON格式进行编码。
Zabbix API由许多名义上分组的独立API方法组成。每个方法执行一个特定任务。例如,方法 host.create 隶属于 host 这个API分组 ,用于创建新主机。历史上,API分组有时被称为“类”。
大多数API至少包含四种方法: get, create, update 和 delete ,分别是检索,创建,更新和删除数据,但是某些API提供一套完全不同的一组方法。
参考网站https://www.zabbix.com/documentation/4.0/zh/manual/api
1).登陆并获取身份验证令牌
[root@node1 ~]# vim zabbix-api.sh
curl -s -X POST -H 'Content-Type:application/json' -d '
{
"jsonrpc": "2.0",
"method": "user.login", #被调用的API方法名;
"params": { #将被传递给API方法的参数;
"user": "Admin",
"password": "zabbix"
},
"id": 1, #请求的任意标识符;
"auth": null #用户认证令牌; 如果没有的话可以设置为null
}' http://192.168.0.11/zabbix/api_jsonrpc.php | python -m json.tool
[root@node1 ~]# chmod +x zabbix-api.sh
[root@node1 ~]# ./zabbix-api.sh
{
"id": 1,
"jsonrpc": "2.0",
"result": "80b60b893faec39c60661c3a1c5db1fd"
}
可以看到请求的返回值包含一个80b60b893faec39c60661c3a1c5db1fd,后续增删改查就需要该token值。
2).获取主机列表
可以将其用一个脚本来写入,然后调用脚本来查看:
[root@node1 ~]# vim zabbix-api.sh
curl -s -X POST -H 'Content-Type:application/json' -d '
{
"jsonrpc": "2.0",
"method": "host.get",
"params": {
"output": ["host"]
},
"auth": "80b60b893faec39c60661c3a1c5db1fd",
"id": 1
}' http://192.168.0.11/zabbix/api_jsonrpc.php | python -m json.tool
[root@node1 ~]# ./zabbix-api.sh
{
"id": 1,
"jsonrpc": "2.0",
"result": [
{
"host": "Zabbix server",
"hostid": "10084"
},
{
"host": "node2",
"hostid": "10436"
},
{
"host": "node3",
"hostid": "10438"
}
]
}
3).删除主机
修改脚本内容如下所示:关闭自动注册,自动发现
[root@node1 ~]# vim zabbix-api.sh
curl -s -X POST -H 'Content-Type:application/json' -d '
{
"jsonrpc": "2.0",
"method": "host.delete",
"params": [
"10436"
],
"auth": "80b60b893faec39c60661c3a1c5db1fd",
"id": 1
}' http://192.168.0.11/zabbix/api_jsonrpc.php | python -m json.tool
[root@node1 ~]# ./zabbix-api.sh
{
"id": 1,
"jsonrpc": "2.0",
"result": {
"hostids": [
"10436"
]
}
}
4).创建主机
编辑脚本信息如下所示:
[root@node1 ~]# vim zabbix-api.sh
curl -s -X POST -H 'Content-Type:application/json' -d '
{
"jsonrpc": "2.0",
"method": "host.create",
"params": {
"host": "node2",
"interfaces": [
{
"type": 1,
"main": 1,
"useip": 1,
"ip": "192.168.0.22",
"dns": "",
"port": "10050"
}
],
"groups": [
{
"groupid": "2"
}
],
"templates": [
{
"templateid": "10001"
}
]
},
"id": 1,
"auth": "80b60b893faec39c60661c3a1c5db1fd"
}' http://192.168.0.11/zabbix/api_jsonrpc.php | python -m json.tool
[root@node1 ~]# ./zabbix-api.sh
{
"id": 1,
"jsonrpc": "2.0",
"result": {
"hostids": [
"10441"
]
}
}