背景
1.通过Zabbix手动安装实验,深入理解其架构、系统级配置及故障排查能力
2.借助Docker安装实践,快速掌握容器化部署、环境一致性与扩展性。
3.对比二者在安装效率、运维复杂度、定制化能力及生产适配性上的差异,验证手动部署对底层控制的灵活性,以及容器化在标准化、快速交付中的优势。
4.实验旨在培养根据需求选择部署方案的能力,同时强化监控系统的全生命周期管理技能,为后续复杂场景下的监控方案设计奠定基础。
原生linux命令部署
IP为10.1.1.23
zabbix-server+页面(前端)
1、nginx
1.1关闭Slinux和防火墙
#关闭防火墙
systemctl stop firewalld && systemctl disable firewalld
#永久禁用SELinux
vi /etc/sysconfig/selinux
SELinux=enforcing改为SELinux=disabled
reboot #重启
1.2 安装nginx
防止出错,将yum.repos.d目录下文件打包压缩
配置yum源
编辑vim /etc/yum.repos.d/nginx.repo,安装测试
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
yum install -y nginx --enablerepo=nginx-stable #安装
#测试
rpm -qa | grep nginx
2.安装php
2.1 php安装
#nginx 1.20.1 php7.2
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum install epel-release.noarch -y #webtatic 要求
curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm #webtatic源
yum -y install php72w php72w-cli php72w-common php72w-devel php72w-embedded php72w-fpm php72w-gd php72w-mbstring php72w-mysqlnd php72w-opcache php72w-pdo php72w-xml php72w-process
#检查环境
rpm -qa |egrep 'nginx|php72w'
2.2 nginx+php配置
#加入启动项
systemctl enable nginx php-fpm.service
systemctl start nginx php-fpm.service
#nginx配置
vim /etc/nginx/conf.d/zbx.oldboylinux.cn.conf
server {
listen 80;
server_name 10.1.1.23;
root /app/code/zbx;
location / {
index index.php;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /app/code/zbx$fastcgi_script_name;
include fastcgi_params;
}
}
2.3 重启nginx
2.4 php 配置
修改php用户
准备 php会话保持目录
sed -ri '/^(user|group)/s#apache#nginx#g' /etc/php-fpm.d/www.conf
egrep '^(user|group)' /etc/php-fpm.d/www.conf
user = nginx
group = nginx
配置nginx session
grep 'var/lib/php/session' /etc/php-fpm.d/www.conf
php_value[session.save_path] = /var/lib/php/session
[root@xxx ~]# mkdir -p /var/lib/php/session
[root@xxx ~]# chown nginx:nginx /var/lib/php/session
php-fpm -t
systemctl reload php-fpm.service
# php+nginx测试 (给php创建资源目录)
[root@xxx ~]# mkdir -p /app/code/zbx
[root@xxx ~]# chown nginx:nginx /app/code/zbx
[root@xxx ~]# vim /app/code/zbx/info.php
[root@xxx ~]#
#编写代码
<?php
phpinfo();
?>
查看
# 查看文件权限
ls -l /app/code/zbx/info.php
# 递归修改目录权限(示例以用户 www-data 为例)
chown -R nginx:nginx /app/code/zbx
find /app/code/zbx -type d -exec chmod 755 {} \; # 目录权限:755
find /app/code/zbx -type f -exec chmod 644 {} \; # 文件权限:644
cat /app/code/zbx/info.php
测试完成
3.数据库安装
3.1 安装数据库
yum install -y mariadb-server
#启动mariadb 并加入自启动
systemctl start mariadb
systemctl enable mariadb
免密登录mysql
mysql -u root
# 删除多余用户
delete from user where user='root' and host='127.0.0.1';
delete from user where user='root' and host='::1';
# 给mysql root设置密码
mysql_secure_installation
#查看数据库
select user,host from mysql.user ;
#显示数据库
show databases;
# 修改root远程连接
use mysql;
update user set host='%' where user='root';
FLUSH PRIVILEGES;
3.2 测试数据库
4. 安装zbbix server
4.1 zbbix server安装
#安装zabbix yum源
rpm -Uvh https://mirror.tuna.tsinghua.edu.cn/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.tuna.tsinghua.edu.cn/zabbix#g'
vim /etc/yum.repos.d/zabbix.repo
[zabbix]
name=Zabbix Official Repository - $basearch
baseurl=https://mirror.tuna.tsinghua.edu.cn/zabbix/zabbix/5.0/rhel/7/$basearch/
enabled=1
gpgcheck=0
[zabbix-frontend]
name=Zabbix Official Repository frontend - $basearch
baseurl=https://mirror.tuna.tsinghua.edu.cn/zabbix/zabbix/5.0/rhel/7/$basearch/frontend
enabled=0
gpgcheck=0
[zabbix-debuginfo]
name=Zabbix Official Repository debuginfo - $basearch
baseurl=https://mirror.tuna.tsinghua.edu.cn/zabbix/zabbix/5.0/rhel/7/$basearch/debuginfo/
enabled=0
gpgcheck=0
[zabbix-non-supported]
name=Zabbix Official Repository non-supported - $basearch
baseurl=http://repo.zabbix.com/non-supported/rhel/7/$basearch/
enabled=1
gpgcheck=0
安装server
yum install -y zabbix-server-mysql zabbix-agent2
#zabbix导入数据库
zcat /usr/share/doc/zabbix-server-mysql-5.0.46/create.sql.gz |mysql -uzabbix -p1 zabbix
配置连接数据库
vim /etc/zabbix/zabbix_server.conf
grep ^DB /etc/zabbix/zabbix_server.conf
:91
91:DBHost=localhost
100:DBName=zabbix
116:DBUser=zabbix
124:DBPassword=1
#启动zabbix-server
systemctl enable zabbix-server.service
systemctl start zabbix-server.service
ss -lntup|grep zabbix
4.2 zabbix前端页面准备
源码包下载
https://cdn.zabbix.com/zabbix/sources/stable/5.0/
#使用源码包
tar xf zabbix-5.0.18.tar.gz
cd zabbix-5.0.18/
cp -a ui/* /app/code/zbx/
chown -R nginx.nginx /app/code/zbx/
4.3 安装zabbix(zabbix 前端页面连接数据库与zabbix-server)
http://192.168.157.138/setup.php
出现问题
#php最后的配置
Minimum required size of PHP post is 16M (configuration option "post_max_size").
Minimum required limit on execution time of PHP scripts is 300 (configuration
option "max_execution_time").
Minimum required limit on input parse time for PHP scripts is 300 (configuration
option "max_input_time").
Time zone for PHP is not set (configuration parameter "date.timezone").
post_max_size 16M
max_execution_time 300
max_input_time 300
date.timezone
[root@xxx ~]# egrep -n '^(max_|date.timezone|post_max)' /etc/php.ini
368:max_execution_time = 300
378:max_input_time = 600
656:post_max_size = 80M
802:max_file_uploads = 20
877:date.timezone = Asia/Shanghai
[root@xxx ~]# systemctl reload php-fpm.service
如果出现:
界面报错 PHP bcmath extension missing (PHP configuration…
yum install php72w-bcmath
#重启php
systemctl reload php-fpm.service
web连接数据库
zabbix页面连接 zabbxi 服务端
#zabbix前端页面安装完成
chown -R nginx:nginx /app/code/zbx/
登录zabbix
效果
Zabbix docker 部署
IP为10.1.1.24
zabbix版本和源代码:
https://cdn.zabbix.com/zabbix/sources/stable/5.0/
1. 创建目录
mkdir -p /data2/zabbix/zabbix-server 用于存储 Zabbix 服务器容器的配置文件等相关数据
mkdir -p /data2/zabbix/alertscripts 用于存储 Zabbix 服务器容器中的告警脚本
mkdir -p /data2/zabbix/fonts 用于存储 Zabbix Web 容器中的字体文件
mkdir -p /data2/zabbix/db 用于存储 MySQL 数据库容器的数据文件
mkdir -p /data2/zabbix/zabbix-server
mkdir -p /data2/zabbix/alertscripts
mkdir -p /data2/zabbix/fonts
mkdir -p /data2/zabbix/db
2.编辑文件
# zabbix_server.conf
LogType=console
DBHost=zabbix-mysql
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
DBPort=3306
User=zabbix
# 编写docker-compose.yml 文件
services:
zabbix-web-nginx-mysql:
image: zabbix/zabbix-web-nginx-mysql:centos-5.2-latest
restart: always
environment:
- DB_SERVER_HOST=zabbix-mysql
- MYSQL_DATABASE=zabbix
- MYSQL_USER=zabbix
- MYSQL_PASSWORD=zabbix
- MYSQL_ROOT_PASSWORD=root
- ZBX_SERVER_HOST=zabbix-server-mysql
ports:
- 8080:8080
volumes:
- /etc/localtime:/etc/localtime
- /data2/zabbix/fonts/DejaVuSans.ttf:/usr/share/zabbix/assets/fonts/DejaVuSans.ttf
networks:
- zbx_net
depends_on:
- zabbix-server-mysql
- zabbix-mysql
zabbix-mysql:
image: mysql:8.0.23
restart: always
ports:
- 3306:3306
environment:
- MYSQL_DATABASE=zabbix
- MYSQL_USER=zabbix
- MYSQL_PASSWORD=zabbix
- MYSQL_ROOT_PASSWORD=root
command:
- mysqld
- --default-authentication-plugin=mysql_native_password
- --character-set-server=utf8
- --collation-server=utf8_bin
volumes:
- /etc/localtime:/etc/localtime
- /data2/zabbix/db:/var/lib/mysql
networks:
- zbx_net
zabbix-java-gateway:
image: zabbix/zabbix-java-gateway:centos-5.2-latest
restart: always
volumes:
- /etc/localtime:/etc/localtime
networks:
- zbx_net
zabbix-server-mysql:
image: zabbix/zabbix-server-mysql:centos-5.2-latest
restart: always
volumes:
- /data2/zabbix/zabbix-server:/etc/zabbix
- /data2/zabbix/alertscripts:/usr/lib/zabbix/alertscripts
- /etc/localtime:/etc/localtime
ports:
- 10052:10051
environment:
- DB_SERVER_HOST=zabbix-mysql
- MYSQL_DATABASE=zabbix
- MYSQL_USER=zabbix
- MYSQL_PASSWORD=zabbix
- MYSQL_ROOT_PASSWORD=root
- ZBX_JAVAGATEWAY=zabbix-java-gateway
- ZBX_JAVAGATEWAY_ENABLE=true
- ZBX_JAVAGATEWAYPORT=10051
depends_on:
- zabbix-mysql
networks:
- zbx_net
zabbix-agent:
image: zabbix/zabbix-agent:centos-5.2-latest
restart: always
ports:
- 10050:10050
environment:
- ZBX_HOSTNAME=Zabbix server
- ZBX_SERVER_HOST=zabbix-server-mysql
- ZBX_SERVER_PORT=10051
networks:
- zbx_net
networks:
zbx_net:
driver: bridge
3.中文简体文件添加
从主机(C:\Windows\Fonts)上传一个.ttf的字体文件到/data2/zabbix/fonts目录
可使用rz命令,或者ftp,或远程传输工具(如:xftp)
并将文件名称改成DejaVuSans.ttf(yml文件中有指明)
开启docker-compose
登录成功