zabbix分布式部署
1.环境准备,1台zabbix-server ,2台zabbix-proxy
当前zabbix-server服务器信息为:
服务器IP 192.168.1.112
账号密码:root 123456
账号密码:admin 123456
MySQL账号:root 123456
MySQL账号:zabbix 123456
配置zabbix-proxy服务器,服务器信息如下:
服务器IP 192.168.1.113
账号密码:root 123456
账号密码:admin 123456
MySQL账号:root 123456
MySQL账号:zabbix 123456
2.关闭单机环境下的自动注册和自动发现
3.原服务端可以继续用
4.配置zabbix-proxy代理服务器,并配置数据库,用于存储agent2发来的数据,最终发送给zabbix-server
zabbix-proxy配置
- 配置zabbix5.0的yum源,操作方式同agent端
- 修改yum地址为阿里云地址
- 安装zabbix-proxy 以及数据库
- zabbix-proxy的数据库版本要与server数据库版本一致
- 关闭防火墙及selinux
安装proxy
yum install zabbix-proxy-mysql zabbix-get -y
[root@zabbix-proxy1 yum.repos.d]# yum install zabbix-proxy-mysql zabbix-get -y
配置数据库
mariadb
- 安装centos7默认的mariadb
yum install mariadb-server mariadb -y
#启动服务
systemct start mariadb
#查看端口
netstat -tunlp
- 配置数据库
#进入数据库
mysql
默认是mysql -uroot -p
MariaDB[(none)]>create database zabbix_proxy character set utf8 collate utf8_bin;
Query OK, 1 row affected
MariaDB[(none)]>grant all privileges on zabbix_proxy.* to zabbix@localhost identified by 'zabbix';
创建zabbix用户,密码为zabbix,并授权zabbix_proxy数据库的所有权限
MariaDB[(none)]>grant all privileges on zabbix_proxy.* to zabbix@localhost identified by 'zabbix';
Query OK, 0 row affected
刷新权限
MariaDB[(none)]>flush privileges;
MariaDB[(none)]>quit;
导入zabbix-proxy数据信息,搜索rpm包位置
rpm -ql zabbix-proxy-mysql
找到schema.sql.gz文件,并导入
zcat /usr/share/doc/zabbix-proxy-mysql-5.0.2/schema.sql.gz | mysql -uzabbix -pzabbix zabbix_proxy
检查导入情况
mysql
MariaDB[(none)]>show databases;
MariaDB[(none)]>use zabbix_proxy;
MariaDB[(none)]>show tables;
MySQL
- 安装并使用mysql数据库
[root@zabbix-proxy1 yum.repos.d]# cd /usr/local/src/
[root@zabbix-proxy1 src]# wget http://repo.mysql.com/mysql57-community-release-el7-8.noarch.rpm
[root@zabbix-proxy1 src]# rpm -ivh mysql57-community-release-el7-8.noarch.rpm
[root@zabbix-proxy1 src]# yum -y install mysql-server --nogpgcheck
- 配置数据库
启动Mysql
[root@zabbix-proxy1 src]# systemctl start mysqld
[root@zabbix-proxy1 src]# systemctl status mysqld.service
● mysqld.service - MySQL Server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
Active: active (running) since 三 2022-04-06 15:05:26 CST; 8s ago
Docs: man:mysqld(8)
http://dev.mysql.com/doc/refman/en/using-systemd.html
Process: 126123 ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid $MYSQLD_OPTS (code=exited, status=0/SUCCESS)
Process: 125995 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)
Main PID: 126126 (mysqld)
CGroup: /system.slice/mysqld.service
└─126126 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid
4月 06 15:05:20 zabbix-proxy1 systemd[1]: Starting MySQL Server...
4月 06 15:05:26 zabbix-proxy1 systemd[1]: Started MySQL Server.
- 获取安装时的临时密码
[root@zabbix-proxy1 src]# grep 'temporary password' /var/log/mysqld.log
2022-04-06T07:05:23.952687Z 1 [Note] A temporary password is generated for root@localhost: &?!u44ejrtJV
- &?!u44ejrtJV临时密码 用这个密码登录并修改密码
[root@zabbix-proxy1 src]# mysql -uroot -p'&?!u44ejrtJV'
mysql> set password for root@localhost = password('123456');
- 创建初始数据库
5.0版本需使用utf8 5.0版本不支持utf8mb64。授权zabbix用户可以远程访问及本地访问
mysql> create database zabbix_proxy character set utf8 collate utf8_bin;
mysql> grant all privileges on zabbix_proxy.* to zabbix@localhost identified by '123456';
mysql> grant all privileges on zabbix_proxy.* to 'zabbix'@'%' identified BY '123456' with grant option;
mysql> FLUSH PRIVILEGES;
mysql> quit;
导入zabbix-proxy数据信息,搜索rpm包位置
rpm -ql zabbix-proxy-mysql
[root@zabbix-proxy1 src]# rpm -ql zabbix-proxy-mysql
/etc/logrotate.d/zabbix-proxy
/etc/zabbix/zabbix_proxy.conf
/usr/lib/systemd/system/zabbix-proxy.service
/usr/lib/tmpfiles.d/zabbix-proxy.conf
/usr/lib/zabbix/externalscripts
/usr/sbin/zabbix_proxy_mysql
/usr/share/doc/zabbix-proxy-mysql-5.0.22
/usr/share/doc/zabbix-proxy-mysql-5.0.22/AUTHORS
/usr/share/doc/zabbix-proxy-mysql-5.0.22/COPYING
/usr/share/doc/zabbix-proxy-mysql-5.0.22/ChangeLog
/usr/share/doc/zabbix-proxy-mysql-5.0.22/NEWS
/usr/share/doc/zabbix-proxy-mysql-5.0.22/README
/usr/share/doc/zabbix-proxy-mysql-5.0.22/schema.sql.gz
/usr/share/man/man8/zabbix_proxy.8.gz
/var/log/zabbix
/var/run/zabbix
找到schema.sql.gz文件,并导入
zcat /usr/share/doc/zabbix-proxy-mysql-5.0.22/schema.sql.gz | mysql -uzabbix -p123456 zabbix_proxy
检查导入情况
[root@zabbix-proxy1 zabbix-proxy-mysql-5.0.22]# mysql -uroot -p123456
mysql> show databases;
mysql> use zabbix_proxy;
mysql> show tables;
配置zabbix-proxy配置文件,连接数据库
zabbix-proxy配置文件
- 插入一行并生成一个.ori的备份文件
sed -i.ori '162a DBPassword=123456' /etc/zabbix/zabbix_proxy.conf
[root@zabbix-proxy1 zabbix]# sed -i.ori '162a DBPassword=123456' /etc/zabbix/zabbix_proxy.conf
- 修改server端地址
sed -i 's#Server=127.0.0.1#Server=192.168.1.112#' /etc/zabbix/zabbix_proxy.conf
[root@zabbix-proxy1 zabbix]# sed -i 's#Server=127.0.0.1#Server=192.168.1.112#' /etc/zabbix/zabbix_proxy.conf
- 修改hostname
sed -i 's#Hostname=Zabbix proxy#Server=当前机器的hostname#' /etc/zabbix/zabbix_proxy.conf
[root@zabbix-proxy1 zabbix]# sed -i 's#Hostname=Zabbix proxy#Hostname=zabbix-proxy1#' /etc/zabbix/zabbix_proxy.conf
- 检查zabbix-proxy配置文件
grep '^[a-Z]' /etc/zabbix/zabbix_proxy.conf
[root@zabbix-proxy1 zabbix]# grep '^[a-Z]' /etc/zabbix/zabbix_proxy.conf
Server=192.168.1.112
Hostname=zabbix-proxy1
LogFile=/var/log/zabbix/zabbix_proxy.log
LogFileSize=0
PidFile=/var/run/zabbix/zabbix_proxy.pid
SocketDir=/var/run/zabbix
DBPassword=123456
DBName=zabbix_proxy
DBUser=zabbix
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
Timeout=4
ExternalScripts=/usr/lib/zabbix/externalscripts
LogSlowQueries=3000
StatsAllowedIP=127.0.0.1
- 重启代理服务
systemctl restart zabbix-proxy
[root@zabbix-proxy1 zabbix]# systemctl restart zabbix-proxy
- 查看服务项是否开机启动
[root@zabbix-proxy1 zabbix]# systemctl list-unit-files | grep mysqld
[root@zabbix-proxy1 zabbix]# systemctl list-unit-files | grep zabbix
zabbix-proxy.service disabled
[root@zabbix-proxy1 zabbix]# systemctl enable zabbix-proxy.service
Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-proxy.service to /usr/lib/systemd/system/zabbix-proxy.service.
[root@zabbix-proxy1 zabbix]# systemctl list-unit-files | grep zabbix
zabbix-proxy.service enabled
在server端添加代理程序
页面端配置
页面配置--管理--agent代理程序--创建代理
- agent代理程序名称:为proxy的hostname,要和proxy机器上zabbix_proxy.conf配置文件中的hostname一致
- 系统代理程序模式: 默认为主动式。主动式是proxy主动把数据发给server
- 代理地址 :填写proxy的ip或dns解析
- 添加后在agent代理程序页面选择启用主机
服务端查看
添加之后在server查看日志看是否有异常,返回发送配置成功则连接成功,此时页面上"最近出现"会显示数据
[root@zabbix-server ~]# tail -f /var/log/zabbix/zabbix_server.log
2743:20220408:132120.354 sending configuration data to proxy "zabbix-proxy1" at "192.168.1.113", datalen 3662, bytes 1299 with compression ratio 2.8
使用proxy监控client端
在页面中,配置-主机进行添加主机,把proxy的机器添加进来。
- 主机名为client的hostname
- 可见的名称 任意
- Interfaces :client端的ip地址,zabbix_agent端口默认为10050
- 由agent代理程序监测:下拉选择指定的proxy机器
在client的机器端,zabbix_agent的配置文件需要修改
默认配置文件为 /etc/zabbix/zabbix_agent2.conf。配置文件里的hostname与页面上配置的hostname要一致
PidFile : 进程id
LogFile : 日志文件
Server : Zabbix的Server地址 或Zabbix的Proxy地址
ServerActive : Zabbix的Server地址 或Zabbix的Proxy地址
Hostname: 当前主机的hostname
Include: 包含的配置文件
[root@load-kfapplications yum.repos.d]# grep -Ev '^#|^$' /etc/zabbix/zabbix_agent2.conf
PidFile=/var/run/zabbix/zabbix_agent2.pid
LogFile=/var/log/zabbix/zabbix_agent2.log
LogFileSize=0
Server=127.0.0.1
ServerActive=127.0.0.1
Hostname=Zabbix server
Include=/etc/zabbix/zabbix_agent2.d/*.conf
ControlSocket=/tmp/agent.sock
最后重启zabbix-agent2服务,观察页面上的状态情况,如果没有数据上报,可以查看agent端日志和proxy端日志
[root@zabbix-proxy1 zabbix]# tail -f /var/log/zabbix/zabbix_proxy.log
[root@load-kfapplications ~]# tail -f /var/log/zabbix/zabbix_agent2.log
如果还没有数据可以重启proxy的服务