一、 环境准备
Linux服务器三台,版本为:CentOS Linux 7
安装Zabbix版本为: Zabbix 5.0.40
三台服务器IP 分别为:
10.0.0.137 安装 server
10.0.0.138 安装 proxy
10.0.0.139 安装 agent
5.0版本对基础环境的要求有大的变化,最大的就是对 php 版本的要求最低要求, 7.2.0 版本对 php 扩展组件版本也有要求,详见官网文档
https://www.zabbix.com/documentation/5.0/zh/manual/introduction/manual_structure
二、安装Zabbix-server
进入 10.0.0.137 服务器
1、关闭防火墙
找到配置文件:/etc/selinux/config
1
2
3
4
5
6
7
8
9
10
11
12
13
#将其中配置项 SELINUX=enforcing 调整为:SELINUX=disabled
[root@TCC01 selinux]# cat config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
禁用防火墙
1
systemctl disable --now firewalld
2、获取Zabbix官方源
1
rpm -Uvh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
此时/etc/yum.repos.d/zabbix.repo文件中的源地址为 repo.zabbix.com,需要更换为国内aliyun地址,下载加速,如下
1
sed -i 's#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' /etc/yum.repos.d/zabbix.repo
清空本地yum缓存
1
yum clean all
3、安装 zabbix server agent
1
yum install zabbix-server-mysql zabbix-agent -y
4、Software Collections
便于后续安装高版本的 php,默认 yum 安装的 php 版本为 5.4 过低。SCL(Software Collections)可以让你在同一个操作系统上安装和使用多个版本的软件,而不会影响整个系统的安装包。软件包会安装在/opt/rh目录下。
为了避免系统广泛冲突,/opt/rh包安装在目录中,例如,这允许你在CentOs 7机器上安装Pthon 3.5,而不会删除或干扰Python 2.7。
/etc/opt/rh/软件包的所有配置文件都存储在相应的目录中,SCL包提供了定义使用所包含应用程序所需的环境变量的shell脚本。
1
yum install centos-release-scl -y
5、修改Zabbix前端源
1
2
3
4
5
6
7
8
9
vim /etc/yum.repos.d/zabbix.repo
[zabbix-frontend]
name=Zabbix Official Repository frontend - $basearch
baseurl=https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/$basearch/frontend
enabled=1 #将0修改
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
6、安装Zabbix前端环境
1
yum install zabbix-web-mysql-scl zabbix-apache-conf-scl -y
7、安装zabbix所需的数据库,直接用centos7自带的mariadb。
1
yum install mariadb-server -y
8、启动数据库、配置开机启动
1
systemctl enable --now mariadb
9、初始化mariadb,并设置root密码
root密码默认为空
1
mysql_secure_installation
10、使用root用户登录mariadb,建立zabbix数据库,这里的编码设置,非常重要
1
2
3
4
5
6
7
8
9
10
#创建数据库zabbix
create database zabbix character set utf8 collate utf8_bin;
#创建用户zabbix,密码为 zabbix
create user zabbix@localhost identified by 'zabbix';
#将zabix数据库授权给zabbix用户
grant all privileges on zabbix.* to zabbix@localhost;
#刷新权限
flush privileges;
#推出数据库
quit;
11、使用以下命令导入 zabbix 数据库
1
zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
12、修改 zabbix server 配置文件
修改配置 文件 /etc/zabbix/zabbix_server.conf,调整密码为 zabbix
1
2
3
4
5
6
7
8
9
10
11
12
13
14
[root@TCC01 selinux]# grep '^[a-Z]' /etc/zabbix/zabbix_server.conf
LogFile=/var/log/zabbix/zabbix_server.log
LogFileSize=0
PidFile=/var/run/zabbix/zabbix_server.pid
SocketDir=/var/run/zabbix
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix #调整此项
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
Timeout=4
AlertScriptsPath=/usr/lib/zabbix/alertscripts
ExternalScripts=/usr/lib/zabbix/externalscripts
LogSlowQueries=3000
StatsAllowedIP=127.0.0.1
13、修改Zabbix的前端配置文件
文件位置 /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
将时区修改为亚洲上海
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
[root@TCC01 selinux]# cat /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
[zabbix]
user = apache
group = apache
listen = /var/opt/rh/rh-php72/run/php-fpm/zabbix.sock
listen.acl_users = apache
listen.allowed_clients = 127.0.0.1
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 200
php_value[session.save_handler] = files
php_value[session.save_path] = /var/opt/rh/rh-php72/lib/php/session/
php_value[max_execution_time] = 300
php_value[memory_limit] = 128M
php_value[post_max_size] = 16M
php_value[upload_max_filesize] = 2M
php_value[max_input_time] = 300
php_value[max_input_vars] = 10000
php_value[date.timezone] = Asia/Shanghai #修改此项
14、启动服务
1
2
3
4
#设置重启
systemctl restart zabbix-server zabbix-agent httpd rh-php72-php-fpm
#设置开机启动
systemctl enable zabbix-server zabbix-agent httpd rh-php72-php-fpm
15、访问Zabbix
http://10.0.0.137/zabbix
输入配置数据库zabbix用户的密码:zabbix
设置zabbix server 端口,默认为10051,不用需改
查看安装细节信息
安装成功
登录账号为 Admin,密码为 zabbix,进入Zabbix主界面
三、解决Zabbix图形乱码问题
在server端安装字体:
1
2
yum -y install wqy-microhei-fonts
\cp /usr/share/fonts/wqy-microhei/wqy-microhei.ttc /usr/share/fonts/dejavu/DejaVuSans.ttf
四、安装Zabbix-agent
Zabbix 5.0 版本推出了使用 go 语性,Agent2 有如下特性: 完成的插件框架支持,可扩引服务及应用监控 支持灵活的采集周期调度 更高效的数据采集及传输 可完全替换先有的 agent
1、时间同步
检查各服务器时间、时区是否一致, 不一致则需要在所有agent和sever端执行时间同步设置
1
2
3
4
5
6
# 设置时间
yum install ntpdate -y
ntpdate -u ntp.aliyun.com
# 设置时区
mv /etc/localtime{,.bak}
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
2、设置zabbix源
1
2
3
rpm -Uvh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
sed -i 's#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' /etc/yum.repos.d/zabbix.repo
3、安装agent2
1
yum install zabbix-agent2 -y
4、查看agent2配置文件及启动文件
1
2
cat /etc/zabbix/zabbix_agent2.conf
ls -l /usr/sbin/zabbix_agent2
5、启动agent2并设置开机自启动
1
systemctl enable --now zabbix-agent2
6、检查端口是否正常
1
2
[root@TCC03 ~]# netstat -tnlp | grep zabbix
tcp6 0 0 :::10050 :::* LISTEN 7991/zabbix_agent2
7、查看和修改agent2配置文件
1
2
3
4
5
6
7
8
9
[root@TCC03 ~]# 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 #修改为server的IP
ServerActive=127.0.0.1 #修改为server的IP
Hostname=Zabbix server #修改当前agent服务器的主机名
Include=/etc/zabbix/zabbix_agent2.d/*.conf
ControlSocket=/tmp/agent.sock
Server 和 ServerActive 配置为 zabibx server 或 zabbix proxy 地址Hostname 配置为主机名即可。 Agent2 没有组件依赖,可直接拷贝编译好的二进制文件和配置文件在其他主机上运行即可
8、重启agent2
1
systemctl restart zabbix-agent2
9、检测server - client 连通性
在server服务端通过命令主动获取数据,在server端 zabbix-get 工具
1
yum install zabbix-get -y
在server端获取agent数据
1
zabbix_get -s '10.0.0.139' -p 10050 -k 'agent.ping'
五、安装zabbix-proxy
需要关闭proxy服务器防火墙
1、设置zabbix yum源
1
2
3
4
#设置zabbix官方源
rpm -Uvh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
#将源地址改为aliyun
sed -i 's#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' /etc/yum.repos.d/zabbix.repo
2、安装zabbix-mysql 依赖
1
2
yum install zabbix-proxy-mysql zabbix-get -y
yum install mariadb-server mariadb -y
3、启动MySQL并设置开机启动
1
2
systemctl start mariadb
systemctl enable mariadb
4、初始化数据库
root密码默认为空,需要设置root密码
1
2
3
4
5
6
7
8
9
10
11
12
#初始化MySQL
mysql_secure_installation
#创建数据库zabbix
create database zabbix_proxy character set utf8 collate utf8_bin;
#创建用户zabbix,密码为 zabbix
create user zabbix@localhost identified by 'zabbix';
#将zabix数据库授权给zabbix用户
grant all privileges on zabbix_proxy.* to zabbix@localhost;
#刷新权限
flush privileges;
#退出数据库
quit;
5、查看zabbix-proxy-mysql文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[root@TCC02 yum.repos.d]# 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.40
/usr/share/doc/zabbix-proxy-mysql-5.0.40/AUTHORS
/usr/share/doc/zabbix-proxy-mysql-5.0.40/COPYING
/usr/share/doc/zabbix-proxy-mysql-5.0.40/ChangeLog
/usr/share/doc/zabbix-proxy-mysql-5.0.40/NEWS
/usr/share/doc/zabbix-proxy-mysql-5.0.40/README
/usr/share/doc/zabbix-proxy-mysql-5.0.40/schema.sql.gz
/usr/share/man/man8/zabbix_proxy.8.gz
/var/log/zabbix
/var/run/zabbix
5、导入zabbix-proxy表结构
1
2
3
#登入MySQL
#使用安装包中提供的SQL初始化数据库
zcat /usr/share/doc/zabbix-proxy-mysql-5.0.40/schema.sql.gz |mysql -uzabbix -pzabbix zabbix_proxy
6、修改proxy配置文件
修改配置文件:zabbix_proxy.conf 中如下三个配置,并核对其他配置
Hostname、DBPassword、Server
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[root@TCC02 zabbix]# grep '^[a-Z]' zabbix_proxy.conf
Server=10.0.0.137
Hostname=TCC02
LogFile=/var/log/zabbix/zabbix_proxy.log
LogFileSize=0
PidFile=/var/run/zabbix/zabbix_proxy.pid
SocketDir=/var/run/zabbix
DBName=zabbix_proxy
DBUser=zabbix
DBPassword=zabbix
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
Timeout=4
ExternalScripts=/usr/lib/zabbix/externalscripts
LogSlowQueries=3000
StatsAllowedIP=127.0.0.1
7、启动proxy服务,并设置开机启动
1
2
systemctl restart zabbix-proxy
systemctl enable zabbix-proxy
六、proxy添加agent
添加之前创建的agent,注意 添加agent前,需要将agent 配置文件中的 Server地址改为proxy的地址。
注意 需要在agent端开放 防火墙 给 proxy 访问 10050 端口。
#
问题处理
1、在server端使用 zabbix_get工具访问 agent时报错
1
2
3
[root@TCC01 ~]# zabbix_get -s '10.0.0.139' -p 10050 -k 'agent.ping'
zabbix_get [29207]: Get value error: ZBX_TCP_READ() failed: [104] Connection reset by peer
zabbix_get [29207]: Check access restrictions in Zabbix agent configuration
问题原因
1:可能agent端配置文件中配置的server地址有误
2:agent端防火墙不允许此IP访问
尝试关闭 agent 端防火墙后
1
2
3
[root@TCC03 ~]# systemctl disable --now firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
重新访问回复正常
1
2
[root@TCC01 ~]# zabbix_get -s '10.0.0.139' -p 10050 -k 'agent.ping'
1
关闭防火墙还是一个风险更好的行为,在生产环境不可行,不过可以通过开放端口实现
如下开放10050端口,也可实现访问链接
1
2
3
4
#开放 10050 端口
firewall-cmd --zone=public --add-port=10050/tcp --permanent
#重启防火墙
firewall-cmd --reload 或 systemctl restart firewalld
可以通过如下命令查看分析防火墙开放端口信息
1
2
3
#查看已打开的端口
[root@TCC03 ~]# firewall-cmd --zone=public --list-ports
10050/tcp
不过最严格的是仅针对IP开放端口,如下也可以实现
1
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="10.0.0.137" port protocol="tcp" port="10050" accept"
可通过如下命令查看所有以开放的规则
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[root@TCC03 ~]# firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: ens192
sources: 10.0.0.137
services: dhcpv6-client ssh
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
rule family="ipv4" source address="10.0.0.137" port port="10050" protocol="tcp" accept
关于防火墙其他操作可参考: