zabbix练习

[TOC]

一、zabbix的规划及部署

1.1、部署环境

1
2
3
4
5
6
7
8
主机类型                        IP地址
zabbix server 10.0.0.150
zabbix 主动代理 10.0.0.151
zabbix 被动代理 10.0.0.152
mysql master 10.0.0.153
mysql slave 10.0.0.154
web server1 10.0.0.155
web server2 10.0.0.156

1.2、yum安装zabbix

产品手册:

1
https://www.zabbix.com/documentation/4.0/zh/manual 

1.2.1、安装zabbix-server

官方网站:

1
https://www.zabbix.com/cn/download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#环境rocky8+apache+mysql

[root@server ~]#rpm -Uvh https://repo.zabbix.com/zabbix/4.0/rhel/8/x86_64/zabbix-release-4.0-2.el8.noarch.rpm
**********************************************************************************
#注意此时下载后,repo库里的下载地址是官网地址,下载速度会比国内的镜像网站慢,可以将其更改为国内镜像网站
[root@server ~]#rpm -ql zabbix-release
/etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX
/etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
/etc/yum.repos.d/zabbix.repo
/usr/share/doc/zabbix-release
/usr/share/doc/zabbix-release/GPL
[root@server ~]#cat /etc/yum.repos.d/zabbix.repo
[zabbix]
name=Zabbix Official Repository - $basearch
baseurl=http://repo.zabbix.com/zabbix/4.0/rhel/8/$basearch/

[zabbix-non-supported]
name=Zabbix Official Repository non-supported - $basearch
baseurl=http://repo.zabbix.com/non-supported/rhel/8/$basearch/
[root@server ~]#sed -i 's#http://repo.zabbix.com#https://mirrors.tuna.tsinghua.edu.cn/zabbix#' /etc/yum.repos.d/zabbix.repo
[root@server ~]#cat /etc/yum.repos.d/zabbix.repo
[zabbix]
name=Zabbix Official Repository - $basearch
baseurl=https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/4.0/rhel/8/$basearch/

[zabbix-non-supported]
name=Zabbix Official Repository non-supported - $basearch
baseurl=https://mirrors.tuna.tsinghua.edu.cn/zabbix/non-supported/rhel/8/$basearch/
************************************************************************************
[root@server ~]#dnf clean all


#安装Zabbix server,Web前端,agent
[root@server ~]#dnf install zabbix-server-mysql zabbix-web-mysql zabbix-agent
#从5版本开始zabbix-agent更改为zabbix-agent2

#安装mysql客户端
[root@server ~]#yum -y install mysql

1.2.2、准备数据库

在mysql maser安装数据库并授权zabbix使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
[root@mysql_master ~]#yum -y install mysql-server
#查看mysql的监听端口,如果是127.0.0.0,需要将其更改为0.0.0.0
[root@mysql_master ~]#systemctl enable --now mysqld
[root@mysql_master ~]#mysql
mysql> create database zabbixtest character set utf8 collate utf8_bin;
mysql> create user zabbix@'10.0.0.%' identified by '123456';
mysql> grant all privileges on zabbixtest.* to zabbix@'10.0.0.%';
#或者可以直接重定向
[root@server ~]#cat << EOF | mysql
create database zabbixtest character set utf8 collate utf8_bin;
create user zabbix@'10.0.0.%' identified by '123456';
grant all privileges on zabbixtest.* to zabbix@'10.0.0.%';
EOF

#通过mysql客户端查看mysql服务器的数据库是否创建完成
[root@proxy_active ~]#mysql -uzabbix -p123456 -h10.0.0.153
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| zabbix |
+--------------------+




1.2.3、zabbix连接mysql服务器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[root@proxy_active ~]#vim etc/zabbix/zabbix_server.conf
DBHost=10.0.0.153
DBName=zabbixtest
DBUser=zabbix
DBPassword=123456 #修改此四项
:wq

#需要执行导入初始架构和数据
[root@proxy_active ~]#zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p123456 -h10.0.0.153 zabbixtest
mysql:[Warning] Using a password on the command line interface can be insecure #报警说密码直接写在命令行不安全,不影响操作,可忽略
#现在zabbix数据库了有许多表了

[root@server ~]#find / -name zabbix.conf
/etc/httpd/conf.d/zabbix.conf
/etc/php-fpm.d/zabbix.conf
[root@server ~]#vim /etc/php-fpm.d/zabbix.conf
php_value[date.timezone] = Asia/Shanghai #取消注释,且更改时区

启动Zabbix server和agent进程
[root@server ~]#systemctl restart zabbix-server zabbix-agent httpd php-fpm

#此时输入网址:10.0.0.150/zabbix即可进入设置页面

image-20221204175320081

下一步,如果全部显示OK即可进行下一步

image-20221204182318194

下一步输入数据库的信息

image-20221204182509921

下一步设置zabbix

image-20221204182711945

下一步显示输入的所有信息

image-20221204182739001

下一步显示创建完成,并提示信息放在的目录,如果更改可以去此路径下修改

image-20221204182857166

登录界面:初始账号:Admin 初始密码:zabbix

image-20221204183011552

image-20221204183036646

二、安装zabbix5.0(server、agent2)

image-20221209143941907

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#安装server机器
#环境:rocky8+mysql+nginx+zabbix安装在一台机器上(生产环境中,mysql单独安装在一台机器)

#注意:因采用网址登录,所以需提前进行DNS域名解析
[root@Rocky ~]#vim install_zabbix5.0_for_nginx_mysql.sh
#!/bin/bash
rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/8/x86_64/zabbix-release-5.0-1.el8.noarch.rpm
sed -i 's#http://repo.zabbix.com#https://mirrors.tuna.tsinghua.edu.cn/zabbix#' /etc/yum.repos.d/zabbix.repo
dnf clean all
dnf -y install zabbix-server-mysql zabbix-web-mysql zabbix-nginx-conf zabbix-agent2
yum -y install mysql-server
systemctl enable --now mysqld
cat << EOF | mysql
create database zabbix character set utf8 collate utf8_bin;
create user zabbix@localhost identified by '123456';
grant all privileges on zabbix.* to zabbix@localhost;
EOF
zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p123456 zabbix
sed -i.bak '/# DBPassword/a DBPassword=123456' /etc/zabbix/zabbix_server.conf
systemctl start nginx
sed -i.bak '/^server/a\ listen 80;\n server_name zabbix.magedu.org; ' /etc/nginx/conf.d/zabbix.conf
sed -i.bak '/date.timezone/c php_value[date.timezone] = Asia/Shanghai' /etc/php-fpm.d/zabbix.conf
systemctl restart zabbix-server zabbix-agent2 nginx php-fpm
systemctl enable zabbix-server zabbix-agent2 nginx php-fpm
:wq
#以上就创建好了简单的安装脚本

#此时网站是英文环境,需提前安装中文包,才能设置为中文环境
[root@Rocky ~]#yum -y install langpacks-zh_CN
#但图形里面会有一些乱码

#将Windows里的字体文件放入到zabbix-server主机里会解决此问题,Windows字体路径:控制面板\外观和个性化\字体

#将中文字体上传到 Zabbix Server 的目录 /usr/share/zabbix/assets/fonts 下
[root@Rocky ~]#cd /usr/share/zabbix/assets/fonts
[root@Rocky fonts]#ll
total 0
lrwxrwxrwx 1 root root 33 Dec 9 09:17 graphfont.ttf -> /etc/alternatives/zabbix-web-font
[root@Rocky fonts]#mv graphfont.ttf graphfont.ttf.bak
[root@Rocky fonts]#ls
graphfont.ttf.bak
[root@Rocky fonts]#rz -E
rz waiting to receive.
[root@Rocky fonts]#ls
graphfont.ttf.bak simsun.ttc
[root@Rocky fonts]#cp simsun.ttc graphfont.ttf #将上传的字体设置为linux的字体
[root@Rocky fonts]#ls
graphfont.ttf graphfont.ttf.bak simsun.ttc

**********************************************************************************

#安装agent2
#Rocky8.6系统,简单脚本如下
[root@Rocky ~]#vim install_zabbix5.0_agent2_for_rocky8
rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/8/x86_64/zabbix-release-5.0-1.el8.noarch.rpm
sed -i 's#http://repo.zabbix.com#https://mirrors.tuna.tsinghua.edu.cn/zabbix#' /etc/yum.repos.d/zabbix.repo
dnf clean all
dnf -y install zabbix-agent2
sed -i.bak '/^Server=/c Server=10.0.0.190' /etc/zabbix/zabbix_agent2.conf #zabbix_server安装在10.0.0.190(ip地址也可以写成网址,相对应的需要在本机上解析此网址)
#其中两种方法
#①在/etc/hosts里面添加 10.0.0.190 网址
#②在/etc/sysconfig/network-scripts/ifcfg-eth0里面将DNS指向10.0.0.128(此ip是自己设置的DNS解析服务器,里面有10.0.0.190所对应的网址)
systemctl start zabbix-agent2
systemctl enable zabbix-agent2
:wq


**********************************************************************************

#此时需要在zabbix_server进行设置,允许监视zabbix_agent2
#操作步骤如下图

image-20221209114517537

创建主机

image-20221209115037183

添加完成后(红框里面的是上面设置的可见名称)

image-20221209115137286

此时需要设置检测agent2哪些参数

image-20221209115427819

创建监控项,更快捷的方法是使用模板

image-20221209115729329

模板选择(系统提供的制式监控参数选项)

image-20221209115936460

image-20221209120030408

#注意此时是被动模式(server问一个参数,agent2回复一个参数),被动模式是默认模式(后期可以更改为主动模式)

三、Windows安装zabbix

image-20221209144621308

点击下载的包进行安装

image-20221209150106786

其他默认下一步进行安装

安装完成后,可以查看10050端口是否启动

image-20221209150225540

另外可以在服务里查看运行的程序

image-20221209150503972

zabbix的配置文件路径:C:\Program Files\Zabbix Agent 2

image-20221209150656813

下一步需要在zabbix-server创建主机

image-20221209151004099

下一步添加模板

image-20221209151140381

四、迁移mysql到独立服务器

1
2
3
4
5
0 将zabbix-server服务停止(最好在无人访问的时候停止)
1 将mysql上的所有数据备份出来,但如果不先停止服务,则一直在采集数据到mysql
2 恢复到独立同一版本同一配置的mysql服务器
3 修改zabbix server指向新的mysql服务器地址
4 修改PHP指向新的mysql服务器地址

image-20221209153551420

4.1、备份数据到独立mysql服务器上

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#在10.0.0.188上安装mysql服务器
[root@mysql-server ~]#yum -y install mysql-server
[root@mysql-server ~]#systemctl enable --now mysqld

#在zabbix-server上备份数据,并传至10.0.0.188
[root@zabbix_server ~]#systemctl stop zabbix-server.service
[root@zabbix_server ~]#mysqldump -uroot -A --single-transaction --default-character-set=utf8 > all.sql #备份数据
[root@zabbix_server ~]#ll
total 10260
-rw-r--r-- 1 root root 10496967 Dec 9 15:51 all.sql
-rw-------. 1 root root 1264 Aug 25 16:39 anaconda-ks.cfg
-rw-r--r-- 1 root root 1077 Dec 9 09:40 install_zabbix5.0_for_nginx_mysql.sh
[root@zabbix_server ~]#scp all.sql 10.0.0.188:

#将数据导入数据库
[root@mysql-server ~]#mysql < all.sql
[root@mysql-server ~]#mysql
mysql> show databases; #查看zabbix数据库已导入
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| zabbix |
+--------------------+
mysql> select user,host from mysql.user; #查看zabbix用户已导入,但账号只能本地使用
+------------------+-----------+
| user | host |
+------------------+-----------+
| mysql.infoschema | localhost |
| mysql.session | localhost |
| mysql.sys | localhost |
| root | localhost |
| zabbix | localhost |
+------------------+-----------+
#查看数据库的字符集
mysql> show create database zabbix;
+----------+---------------------------------------------------------------------------------------------------------------------+
| Database | Create Database |
+----------+---------------------------------------------------------------------------------------------------------------------+
| zabbix | CREATE DATABASE `zabbix` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_bin */ /*!80016 DEFAULT ENCRYPTION='N' */ |
+----------+---------------------------------------------------------------------------------------------------------------------+

#创建账号和授权
mysql> create user zabbix@'10.0.0.%' identified by '123456';
mysql> grant all privileges on zabbix.* to zabbix@'10.0.0.%';

4.2、修改zabbix server和PHP配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[root@zabbix_server ~]#vim /etc/zabbix/zabbix_server.conf
DBHost=10.0.0.188 #将localhost更改为10.0.0.188
:wq
[root@zabbix_server ~]#systemctl restart zabbix-server.service

[root@zabbix_server ~]#systemctl stop mysqld
[root@zabbix_server ~]#systemctl disable mysqld
#关闭旧数据库后PHP页面无法打开

#修改PHP配置文件
[root@zabbix_server ~]#vim /etc/zabbix/web/zabbix.conf.php
$DB['SERVER'] = '10.0.0.188'; #将localhost更改为10.0.0.188
:wq
#此时就可以正常访问了

五、创建自定义监控项

image-20221210102215196

5.1、在agent主机上创建监控项

  • 在配置文件里添加监控项(/etc/zabbix/zabbix_agent2.conf),或者在/etc/zabbix/zabbix_agent2.d/下创建*.conf文件

    1
    内容格式:UserParameter=<key>,<shell command>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#例如:
[root@Rocky ~]#cd /etc/zabbix/zabbix_agent2.d/
[root@Rocky zabbix_agent2.d]#ls
[root@Rocky zabbix_agent2.d]#vim user_login_count.conf
UserParameter=user_login_count,who|wc -l
#(user_login_count是监控项名称,who|wc -l是获取监控项的命令)
:wq

#在agent的机器上可以使用命令检测设置的监控项是否正确
[root@Rocky zabbix_agent2.d]#zabbix_agent2 -t user_login_count
user_login_count [s|3]
#但此时zabbix-server检测不到
[root@zabbix_server ~]#zabbix_get -s 10.0.0.189 -k user_login_count
ZBX_NOTSUPPORTED: Unknown metric user_login_count

#重启agent才能在zabbix-server上获取监控项
[root@Rocky zabbix_agent2.d]#systemctl restart zabbix-agent2
[root@zabbix_server ~]#zabbix_get -s 10.0.0.189 -k user_login_count
4
#zabbix_get  -s  ip(agent的地址) -k   user_login_count (注意:zabbix_get需要提前安装zabbix-get包

5.2、在zabbix-server增加监控项

5.2.1、单独添加监控项

内容填写完后,先进行测试,如果测试出结果来,则说明设置正确,然后再点添加

image-20221210103922406

5.2.2、创建新模版,在模板里添加监控项

先创建模板

image-20221210105107430

添加监控项

image-20221210105510936

六、设置为主动模式

Zabbix 有两种工作模式: 主动和被动模式

无论是模式还是被动模式,都是站在zabbix agent 角度来说的工作模式

主动模式和被动模式都是相对zabbix agent而言的

Zabbix默认是被动模式,如果有100个监控项,被动模式需要 Zabbix Server找 Zabbix Agent要100次

主动模式是Zabbix Server给 Zabbix Agent发送一个包括100个监控项的任务清单,Zabbix Agent根据任务清单,采集好100个监控项的值,主动汇报给 Zabbix Server这100个监控项,Zabbix Agent主动模式只需要发送一次数据,大大提高了传输效率。

  • 被动模式: Server 向 Agent 请求获取监控项的数据,Agent返回数据。此为默认模式,如果有100个监控项,则需要100次交互

  • 主动模式: Agent 请求 Server 获取主动的监控项列表,并主动将监控项内需要检测的数据提交给server/proxy,如有100个监控项,只需要1次交互即可

注意: 两种模式可以在Zabbix Server上同时存在,可以将一部分监控项设为主动,其它设为被动模式

被动监测通信过程如下:

1
2
3
4
5
6
7
Server打开一个TCP连接
Server发送请求agent.ping
Agent接收到请求并且响应<HEADER><DATALEN>
Server处理接收到的数据
关闭TCP连接
被动模式每获取一个监控项都需要打开一个tcp连接,这样当监控项越来越多时,Zabbix Server会打开很
多端口,就会出现server端性能瓶颈问题。

主动模式监测通信过程如下:

1
2
3
4
5
zabbix agent 首先向ServerActive配置的IP请求获取active items,获取并提交active items数
据值给server或者proxy。
zabbix多久获取一次active items?
它会根据agent的配置文件中的RefreshActiveChecks的频率进行,如果获取失败,那么将会在60秒之后
重试。

6.1、主动模式介绍

主动模式是由每个zabbix agent 打开本机的随机端口, 主动向 Zabbix Server (或者Zabbix Proxy)的10051端口发起tcp连接请求

主动模式下必须在zabbix agent配置文件中指定zabbix server的IP或者主机名(必须可以被解析为IP地 址),在连接到zabbix server之前zabbix agent是不知道自己要采集那些数据以及间隔多久采集一次数据的,然后在连接到zabbix server以后获取到自己的监控项和数据采集间隔周期时间,然后再根据监控项采集数据并返回给zabbix server,在主动模式下不再需要zabbix serve向zabbix agent发起连接请求,因此主动模式在一定程度上可减轻zabbix server打开的本地随机端口和进程数,在一定程度就减轻了zabbix server的压力。经过优化后可以轻松监控2000台,甚至5000以上的主机

以下场景下生产推荐使用主动模式

  • Zabbix Server 出现性能瓶颈, 监控队列出现大量延迟的监控项,告警不及时

  • 监控主机超过 500 台以上

6.2、zabbix agent2实现主动模式

在Zabbix Agent实现主动模式流程

  • 在 Zabbix Agent 配置主机模式相关配置

  • 在 Zabbix Server 创建配置有主动模式监控项的模板

  • 关联主动模板至支持主动模式的 Agent 主机

注意:基于原被动模板克隆生成的主动模式模板,不是所有监控项都能改为主动模,比如agent.ping监控项如果改为主动模式, ZBX 提示将无法变绿

6.2.1、在zabbix agent2配置主动模式

Zabbix Server 主动和被动模式无需配置即可支持,还可以支持多个主动和被动模式的Zabbix Agent 同时存在

Zabbix Agent 默认是被动模式,需要修改配置才能支持主动模式

Zabbix Agent 的关健配置有下面三项

1
2
3
Server=<Zabbix Server>          #被动模式指向 Zabbix Server的IP或FQDN,默认模式
ServerActive=<Zabbix Server>    #主动模式指向 Zabbix Server的IP或FQDN
Hostname=<当前主机IP>            #当前主机的IP,此项必须和Zabbix Server中设置的主机名称相同
1
2
3
4
5
6
[root@zabbix_agent2 ~]#vim /etc/zabbix/zabbix_agent2.conf
ServerActive=10.0.0.190
Hostname=10.0.0.189
Timeout=30 #建议修改
:wq
[root@zabbix_agent2 ~]#systemctl restart zabbix-agent2.service

6.2.2、基于现有模板将包含的监控项修改为主动模式的监控项

注意: Zabbix 5.0 内置了主动模式的模板 Template OS Linux by Zabbix agent active 无需修改

Zabbix4.0 之前没有主动模式的模板,需要自行修改

如果自己创建的模板是被动模式,也可以改成主动模式

模板—>选中监控项—>点击批量更新—>选中类型(主动式)

image-20221212142511784

image-20221212142543335

七、监控java程序

image-20221212150021551

7.1、部署tomcat服务并开启JMX功能

1
2
3
4
5
6
7
8
9
10
[root@tomcat ~]#rz -E
rz waiting to receive.
[root@tomcat ~]#rz -E
rz waiting to receive.
[root@tomcat ~]#rz -E
rz waiting to receive.
[root@tomcat ~]#ls
install_tomcat.sh apache-tomcat-9.0.59.tar.gz jdk-11.0.14_linux-x64_bin.tar.gz
[root@tomcat ~]#bash install_tomcat.sh
#此时8080端口已打开

image-20221212151558229

tomcat 开启远程 JMX 环境配置

1
2
3
4
5
6
7
vim /usr/local/tomcat/bin/catalina.sh
CATALINA_OPTS="$CATALINA__OPTS
-Dcom.sun.management.jmxremote         #启用远程监控JMX
-Djava.rmi.server.hostname=<JAVA主机IP> #是tomcat主机自己的IP地址,不是zabbix服务器的地址
-Dcom.sun.management.jmxremote.port=XXXXX       #默认启动的JMX端口号,要和zabbix添加主机时候的端口一致即可
-Dcom.sun.management.jmxremote.authenticate=false    #不使用用户名密码
-Dcom.sun.management.jmxremote.ssl=false"         #不使用ssl认证
1
2
3
4
5
6
7
#打开jmx功能
[root@tomcat ~]#vim /usr/local/tomcat/bin/catalina.sh
CATALINA_OPTS="$CATALINA__OPTS -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=12345 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=10.0.0.218"
:wq
[root@tomcat ~]#systemctl restart tomcat
#此时12345端口就开启了

7.2、部署Java gateway服务器

Java gateway 是一个独立于zabbix server和 zabbix agent的组件,默认使用端口10052/tcp, 所以java gateway可以是单独的一台服务器,但是也可以和zabbix server或者zabbix agent 共用一台服务器

1
2
3
4
5
6
7
8
9
10
#将gateway安装在zabbix server服务器上
#因zabbix server服务器上已将下载过相关包,所有只需要安装gateway(如果是独立机器,需要从头开始)
[root@zabbix_server ~]#yum -y install zabbix-java-gateway
#默认的配置文件可不做修改
[root@zabbix_server ~]#systemctl enable --now zabbix-java-gateway.service
#此时10052端口已开启
[root@zabbix_server ~]#ss -ntl
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 50 *:10052 *:*

7.3、配置Zabbix Server支持Java gateway

7.3.1、Zabbix Server开启Java gateway功能

默认有关java的监控项是不支持的

配置下面后,相关监控项会支持

1
2
3
4
5
6
[root@zabbix_server ~]#vim /etc/zabbix/zabbix_server.conf
JavaGateway=10.0.0.190 #gateway所在的IP地址
JavaGatewayPort=10052
StartJavaPollers=1 #默认为0表示没有开启java进程,最少为1,根据java数量往上调整数值
:wq
[root@zabbix_server ~]#systemctl restart zabbix-server.service

7.3.2、添加主机和模板

添加主机

image-20221212155626992

添加模板

image-20221212160211250

八、Zabbix分布式实现Proxy

image-20221212174155958

zabbix作为一个分布式监控系统(分布式监控解决方案),支持通过代理(proxy)收集zabbix agent的监控

数据,然后由zabbix proxy再把数据发送给zabbix server,也就是zabbix proxy 可以代替zabbix server

收集监控数据,然后把数据汇报给zabbix server,所以zabbix proxy可以在一定程度上分担了zabbix

server的数据收集压力,从而降低了数据的采集时间、也相应的增加了zabbix server的监控能力。

Zabbix Proxy只执行数据收集,不运行触发器,无处理事件,也不发送告警,无Web管理界面所以最终导致告警延时可能会比较长

8.1、Zabbix Proxy安装和配置

Zabbix Proxy 也分主动模式和被动模式,通信方式与zabbix server主动模式和被动模式一样

Zabbix Proxy的模式 是从Zabbix Proxy 角度来说的

zabbix proxy在主动模式下要主动地向zabbix server周期性的申请获取zabbix agent的监控项信息,此模式可以大副降低Zabbix Server的压力,生产推荐使用

zabbix Proxy在被动模式下要被动地等待zabbix server的连接,并接受zabbix server发送的监控项指令,然后再由zabbix proxy向zabbix agent发起请求获取数据。

注意: Zabbix Proxy的大版本必须要和zabbix server版本相同,否则很可能会导致出现 zabbi server与zabbix proxy不兼容问题

8.1.1、Zabbix Proxy和mysql安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[root@zabbix_proxy ~]#cat install_zabbix5.0_proxy_for_nginx.sh
#!/bin/bash
rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/8/x86_64/zabbix-release-5.0-1.el8.noarch.rpm
sed -i 's#http://repo.zabbix.com#https://mirrors.tuna.tsinghua.edu.cn/zabbix#' /etc/yum.repos.d/zabbix.repo
dnf clean all
dnf -y install zabbix-proxy-mysql mysql-server zabbix-agent2
systemctl enable --now mysqld
cat << EOF | mysql
create database zabbix_proxy character set utf8 collate utf8_bin;
create user zabbix@'10.0.0.%' identified by '123456';
grant all privileges on zabbix_proxy.* to zabbix@'10.0.0.%';
set global log_bin_trust_function_creators = 1;
EOF
zcat /usr/share/doc/zabbix-proxy-mysql*/schema.sql.gz | mysql -uzabbix -p123456 -h10.0.0.186 zabbix_proxy
cat << EOF | mysql
set global log_bin_trust_function_creators = 0;
EOF
sed -i.bak '/# DBPassword/a DBPassword=123456' /etc/zabbix/zabbix_server.conf
systemctl restart zabbix-proxy zabbix-agent2
systemctl enable zabbix-proxy zabbix-agent2
[root@zabbix_proxy ~]#bash install_zabbix5.0_proxy_for_nginx.sh

8.1.2、主动模式配置

8.1.2.1、修改proxy配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
[root@zabbix_proxy ~]#grep '^[^#]' /etc/zabbix/zabbix_proxy.conf
ProxyMode=0 #主动模式为0,被动模式为1,默认为0即主动模式
Server=10.0.0.190 #指向Zabbix Server
Hostname=Zabbix_proxy_10.0.0.186  #此名称必须和后面Web管理页的agent代理程序名称相同
ListenPort=10051 #开启监听端口
LogFile=/var/log/zabbix/zabbix_proxy.log
LogFileSize=0
EnableRemoteCommands=1  #开启远程命令,允许server到proxy上执行命令,在故障自愈时使用
PidFile=/var/run/zabbix/zabbix_proxy.pid
SocketDir=/var/run/zabbix
DBHost=10.0.0.186
DBName=zabbix_proxy
DBUser=zabbix
DBPassword=123456
ProxyOfflineBuffer=720 #当proxy和server无法连接时将数据在本地保存多长时间,默 认1小时
HeartbeatFrequency=60  #server端用来检测proxy可用性的心跳信息的时间间隔,被动模式无效
ConfigFrequency=60 #每间隔多少时间到server获取监控项,在agent更新端监控项,只在主动模式有效,默认3600s
DataSenderFrequency=60 #数据发送的间隔时间,只在主动模式有效,默认1s,建议加长
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
CacheSize=8M  #当主机数量很多时,会将获取的监控项存放在缓存中,生产中设置2G
StartDBSyncers=4  #启动多少个线程和数据库连接
HistoryCacheSize=16M #保存agent发送过来的监控数据的内存空间大小,生产中设置2G
HistoryIndexCacheSize=4M  #历史数据的索引
Timeout=30 #获取数据的最长等待时间
ExternalScripts=/usr/lib/zabbix/externalscripts
LogSlowQueries=3000 #慢查询时长
StatsAllowedIP=127.0.0.1
[root@zabbix_proxy ~]#systemctl restart zabbix-proxy.service
#Zabbix Proxy 监听10051端口开启了

8.1.2.2、在Zabbix Server上添加代理Proxies

管理– agent 代理程序(英文环境为Proxies,汉化翻译不准确)

注意:agent代理程序名称要和proxy 配置文件中Hostname指定的名称相同,否则会现 proxy “zabbixproxy-active” not found的日志提示

image-20221212184603624

8.1.2.3、在Zabbix Server上配置Zabbix Agent使用主动代理

添加zabbix agent2主机10.0.0.220

image-20221212185208259

8.1.2.4、修改Zabbix Agent配置文件为主动模式的 Zabbix Proxy

1
2
3
4
5
6
[root@zabbix_agent2_centos ~]#vim /etc/zabbix/zabbix_agent2.conf
Server=10.0.0.190,10.0.0.186
ServerActive=10.0.0.186
Hostname=10.0.0.22
:wq
[root@zabbix_agent2_centos ~]#systemctl restart zabbix-agent2.service

image-20221212192230574


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!