目录
2、通过浏览器添加agent主机——将server7和server8设置为agent主机
5、扩展应用——监测agent端nginx的转发、握手、请求次数
实验环境:三台纯净的虚拟机(RHEL7.6版本)
一、下载安装zabbix
1、zabbix官网
2、下载安装
(1)安装zabbix仓库
rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
因为默认安装的zabbix源下载速度很慢,所以需要将源中的地址题换成阿里云地址
:%s/http:\/\/repo.zabbix.com/https:\/\/mirrors.aliyun.com\/zabbix/g
#替换原zabbix源到阿里云源
替换完成后如下所示:
(2) 安装zabbix服务
yum install zabbix-server-mysql zabbix-agent
(3)安装zabbix前端
yum install centos-release-scl
这个软件属于centos的包,系统软件包中没有,因此需要通过阿里云下载。下在完成后安装。
激活zabbix前端的仓库
编辑配置文件 </etc/yum.repos.d/zabbix.repo >并且 <enable zabbix-frontend repository>.
安装zabbix需要的其他包
yum install -y zabbix-web-mysql-scl zabbix-apache-conf-scl
(4)创建初始数据库
第一步:安装5.7版本的mysql:
第二步:初始化数据库:
更改密码时有强度检测,新密码要求“大小写+数字+特殊符号”
初始化完成后,进入数据库
第三步:在数据库中添加新库、添加用户并授权
mysql> create database zabbix character set utf8 collate utf8_bin;
#创建新库
mysql> create user zabbix@localhost identified by 'Westos+007';
#创建用户
mysql> grant all privileges on zabbix.* to zabbix@localhost;
#授权用户访问
mysql> quit;
第四步:向数据库中导入资料
zcat /usr/share/doc/zabbix-server-mysql-5.0.19/create.sql.gz | mysql -uzabbix -p zabbix
导入完成后,进入数据库查看
(5)为Zabbix server配置数据库
编辑配置文件 /etc/zabbix/zabbix_server.conf。添加密码,使得服务端可以随时访问。
(6)为Zabbix前端配置PHP
编辑配置文件 /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf。更改时区为“Asia/Shanghai”
(7)启动Zabbix server和agent进程
启动Zabbix server和agent进程,并为它们设置开机自启:
systemctl enable --now zabbix-server zabbix-agent httpd rh-php72-php-fpm
启动完成后,如下图所示<php:9000> <zabbix_agentd:10050> <zabbix_server:10051> <mysqld::3306> <httpd:80> 全部搞定
3、测试
浏览器中输入<http://172.25.254.6/zabbix>,浏览器之嗯可以访问zabbix
这里的用户名为“Admin”,密码为“zabbix”
登录完成后,监控平台就出来了
设置操作界面语言为中文
二、zabbix的使用
注意:由于后续实验中需要主机名和IP解析,因此需要更改一下主机名,对应关系为“server6/7/8”和“172.25.254.6/7/8”
1、官方使用文档
Zabbix 用户手册https://www.zabbix.com/documentation/5.0/zh/manual
2、通过浏览器添加agent主机——将server7和server8设置为agent主机
(1)配置软件源(server7/8)
添加zabbix源。从server1中将zabbix源复制到server7和server8中。
并在server7和server8中取消gpgcheck验证
(2)安装<zabbix-agent>(server7/8)
yum install -y zabbix-agent
(3)配置agent端(server7/8)
更改配置文件</etc/zabbix/zabbix_agentd.conf>
vim /etc/zabbix/zabbix_agentd.conf #更改配置文件如下所示
117 Server=172.25.254.6
158 ServerActive=172.25.254.6
169 Hostname=server7
systemctl enable --now zabbix-agent.service #设置开机自启动
(4)在管理界面添加主机——手动添加
以添加server7为例
添加监控项,里边有各种各样的模板,可以直接选择。
添加完成后出现一些监控项,框里的部分显示绿色就表示正常(灰色表示不生效,红色表示错误)
(5)在管理界面添加主机——自动扫描添加
启用自动扫描服务
更改自动扫描规则
自动扫描完以后会在主机界面显示刚才自动添加的主机(server8)
自动发现的局限:使用自动扫描功能只支持按照通用模板进行标准化扫描,如果需要添加其他种类的主机,就需要其他模板。因此引入“自动注册”。
(6)在管理界面添加主机——自动注册添加
先从主机界面删除server8,以server8为例自动注册过来。
停用server端的“自动动作”和“自动发现”功能
在“配置-动作”界面添加“”自动注册”功能
添加动作:
添加操作:
自动注册设置完成后,执行时会将所有包含“server”关键字的主机执行相应的注册动作。设置完成后重启server8的zabbix服务,agent就会自动连接
systemctl restart zabbix-agent.service #重启zabbix-agent服务
#如果restart不行的话,就先stop后start一下
server端就会自动扫描到主机名为“server8”的agent主机。
3、通过API添加agent主机
(1)zabbix的API官方文档说明
19. APIhttps://www.zabbix.com/documentation/5.0/zh/manual/api
(2)执行脚本获取zabbix主机的基本信息并验证
[root@server8 ~]# curl -s -XPOST -H 'Content-Type: application/json-rpc' -d '
{
"jsonrpc": "2.0",
"method": "user.login",
"params": {
"user": "Admin",
"password": "zabbix"
},
"id": 1,
"auth": null
}' http://172.25.254.6/zabbix/api_jsonrpc.php |python -m json.tool
(3)检索主机(拿着获取到的“result”的值)
1 curl -s -XPOST -H 'Content-Type: application/json-rpc' -d '
2 {
3 "jsonrpc": "2.0",
4 "method": "host.get",
5 "params": {
6 "output": [
7 "hostid",
8 "host"
9 ],
10 "selectInterfaces": [
11 "interfaceid",
12 "ip"
13 ]
14 },
15 "id": 2,
16 "auth": "cc27cbe13e301fa3114b91cd160de99b"
17 }' http://172.25.254.6/zabbix/api_jsonrpc.php |python -m json.tool
脚本执行后,会自动检索当前已连接的server和agent 主机。
(4)通过API删除主机
关闭浏览器管理界面的“自动发现”和“自动注册”
删除server8,脚本中对应写入server8的ID
1 curl -s -XPOST -H 'Content-Type: application/json-rpc' -d '
2 {
3 "jsonrpc": "2.0",
4 "method": "host.delete",
5 "params": [
6 "10436"
7 ],
8 "id": 2,
9 "auth": "cc27cbe13e301fa3114b91cd160de99b"
10 }' http://172.25.254.6/zabbix/api_jsonrpc.php |python -m json.tool
删除完成后,再次检索主机,已经没有了server8。同时在浏览器中对应的server8也会消失。
![](https://i-blog.csdnimg.cn/blog_migrate/3d82dbafed3ffa4ed0ca80aada580820.png)
(5)通过API创建主机
1 curl -s -XPOST -H 'Content-Type: application/json-rpc' -d '
2 {
3 "jsonrpc": "2.0",
4 "method": "host.create",
5 "params": {
6 "host": "server8",
7 "interfaces": [
8 {
9 "type": 1,
10 "main": 1,
11 "useip": 1,
12 "ip": "172.25.254.8", #要创建的主机IP
13 "dns": "",
14 "port": "10050" #新建的主机的端口
15 }
16 ],
17 "groups": [
18 {
19 "groupid": "2" #要加入的组ID
20 }
21 ],
22 "tags": [
23 {
24 "tag": "server3", #标签(可不加)
25 "value": "Linux server"
26 }
27 ],
28 "templates": [
29 {
30 "templateid": "10001" #使用的模板ID
31 }
32 ]
33 },
34 "id": 2,
35 "auth": "cc27cbe13e301fa3114b91cd160de99b" #zabbix主服务器的地址
36 }' http://172.25.254.6/zabbix/api_jsonrpc.php |python -m json.tool
新建脚本并执行后,可以看到主机已经添加:
其中,获取主机组ID的方式:由此可知,groupid=2
获取模板ID:这里用到的模板ID为“10001”
三、zabbix实现信息采集
1、在server7中安装nginx
tar zxf nginx-1.20.2.tar.gz #解压nginx包
cd nginx-1.20.2 #进入解压后的目录
yum install -y gcc make prce-devel openssl-devel #安装需要的依赖
./configure --with-http_stub_status_module --with-http_ssl_module #校验这两个模块的依赖性
make && make install #安装
cd /usr/local/nginx/
ln -s /usr/local/nginx/sbin/nginx /usr/local/bin/ #创建nginx的软链接
更改配置文件:
启动后查看效果:
curl localhost/status
2、采集nginx本机中的并发连接数——通过命令行脚本
curl -s http://127.0.01/status | grep Active |awk '{print $3}'
通过nginx中(server7)采集,agent执行<nginx.active>后的命令脚本后,将返回值再传递给zabbix的server端(也就是server6)
3、在server中测试采集效果
yum install -y zabbix-get #安装zabbix采集软件
zabbix_get -s 172.25.254.7 -p 10050 -k "nginx.active" #采集上一步中定义的信息
#-s:目标主机 -p:端口 -k nginx中定义的activa动作
4、采集nginx本机中的并发连接数——通过浏览器管理页面
"5"名称可以随便写,但是“6”键值必须和脚本中定义的一致为“nginx.active”
为了便于监控,为这个值创建一个图形方便观察。
但是第14部分显示这里是乱码状态,因为zabbix中对中文支持不友好(也就是没有需要的字体)。
乱码的解决方法:
cd /usr/share/zabbix/assets/fonts/ #进入zabbix字体设置目录
chmod 777 simkai.ttf
rm -f graphfont.ttf #删除源有的软链接
ln -s simkai.ttf graphfont.ttf #新建软链接到“简体中文”字体
在浏览器中重新刷新一下,字体显示正常。
5、扩展应用——监测agent端nginx的转发、握手、请求次数
配置文件更改完成后记得重启服务以生效。
其中,添加的命令如下:
在zabbix的server端通过命令行测试:
zabbix_get -s 172.25.254.7 -p 10050 -k "nginx.accept" #转发
zabbix_get -s 172.25.254.7 -p 10050 -k "nginx.handle" #握手
zabbix_get -s 172.25.254.7 -p 10050 -k "nginx.request" #请求
在浏览器中操作步骤和上一步一样,最后效果如图所示:
四、zabbix监控页面的模板帮助
需要监控哪些指标,就从模板中查找,点开以后会有相应的官方文档的帮助
所有通过agent采集的指标的定义都在</etc/zabbix/zabbix_agentd.d>路径下的<.conf>文件中