在国产操作系统生态快速发展的今天,统信UOS 1070e凭借其出色的稳定性和安全性,正成为越来越多企业级应用的首选平台。作为运维工程师,我们常常需要在这样的环境中部署关键业务系统,而Zabbix作为开源监控解决方案的标杆,其5.0版本在性能、功能和易用性上都有了显著提升。本文将带您深入探索在统信UOS 1070e上部署Zabbix 5的全过程,不仅涵盖标准安装步骤,更会重点解析那些官方文档未曾提及的"坑点",帮助您构建一个稳定可靠的企业级监控系统。
在开始安装前,合理的环境准备可以避免80%的后续问题。统信UOS 1070e基于Deepin开发,虽然与常见Linux发行版有诸多相似之处,但在软件包管理和系统配置上仍有其独特之处。
首先确认系统版本和架构:
bash复制cat /etc/os-release
uname -m
统信UOS 1070e通常采用x86_64架构,这点对后续软件包选择至关重要。
关键优化步骤:
bash复制sudo apt update && sudo apt upgrade -y
bash复制sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
/etc/security/limits.conf:code复制* soft nofile 65535
* hard nofile 65535
Zabbix 5.0对PHP版本有明确要求(7.2+),而统信UOS默认仓库可能不包含最新版本。我们需要先配置合适的软件源:
bash复制sudo apt install -y software-properties-common
sudo add-apt-repository ppa:ondrej/php
sudo apt update
安装基础依赖包:
bash复制sudo apt install -y apache2 mariadb-server php7.4 php7.4-mysql php7.4-gd php7.4-xml php7.4-bcmath php7.4-mbstring php7.4-ldap php7.4-zip
注意:统信UOS默认可能使用lighttpd而非Apache,若已安装lighttpd,建议先卸载以避免端口冲突。
数据库是Zabbix的核心组件,其配置直接影响监控系统的性能和稳定性。我们选择MariaDB作为后端数据库,这是统信UOS默认提供的MySQL分支。
执行安全加固脚本:
bash复制sudo mysql_secure_installation
按照提示设置root密码,并移除匿名用户、测试数据库等不安全因素。
创建专用数据库用户和库:
sql复制CREATE DATABASE zabbix CHARACTER SET utf8 COLLATE utf8_bin;
CREATE USER 'zabbix'@'localhost' IDENTIFIED BY 'ComplexPassword123!';
GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'localhost';
FLUSH PRIVILEGES;
编辑/etc/mysql/mariadb.conf.d/50-server.cnf,在[mysqld]段添加:
code复制innodb_buffer_pool_size = 1G
innodb_log_file_size = 256M
innodb_log_buffer_size = 16M
innodb_flush_log_at_trx_commit = 2
innodb_read_io_threads = 8
innodb_write_io_threads = 8
max_connections = 200
query_cache_size = 64M
query_cache_type = 1
重启MariaDB使配置生效:
bash复制sudo systemctl restart mariadb
统信UOS默认仓库可能不包含最新Zabbix版本,手动添加官方源:
bash复制wget https://repo.zabbix.com/zabbix/5.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_5.0-1+uos_all.deb
sudo dpkg -i zabbix-release_5.0-1+uos_all.deb
sudo apt update
安装核心组件:
bash复制sudo apt install -y zabbix-server-mysql zabbix-frontend-php zabbix-apache-conf zabbix-agent
导入初始数据结构:
bash复制zcat /usr/share/doc/zabbix-server-mysql/create.sql.gz | mysql -uzabbix -pComplexPassword123! zabbix
对于大型环境,建议分批导入以减轻服务器负载:
bash复制gunzip /usr/share/doc/zabbix-server-mysql/create.sql.gz
split -l 10000 create.sql zabbix_db_part_
for file in zabbix_db_part_*; do mysql -uzabbix -pComplexPassword123! zabbix < $file; done
编辑/etc/zabbix/zabbix_server.conf,重点关注以下参数:
code复制DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=ComplexPassword123!
StartPollers=20
StartPollersUnreachable=10
StartTrappers=15
StartPingers=10
CacheSize=256M
HistoryCacheSize=128M
HistoryIndexCacheSize=64M
Timeout=30
LogSlowQueries=3000
配置PHP时区(编辑/etc/php/7.4/apache2/php.ini):
code复制date.timezone = Asia/Shanghai
memory_limit = 256M
post_max_size = 32M
upload_max_filesize = 16M
max_execution_time = 300
max_input_time = 300
优化Apache配置(/etc/apache2/sites-available/zabbix.conf):
code复制<VirtualHost *:80>
ServerAdmin admin@example.com
DocumentRoot /usr/share/zabbix
<Directory "/usr/share/zabbix">
Options FollowSymLinks
AllowOverride None
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/zabbix_error.log
CustomLog ${APACHE_LOG_DIR}/zabbix_access.log combined
</VirtualHost>
启用配置并重启服务:
bash复制sudo a2ensite zabbix.conf
sudo a2dissite 000-default.conf
sudo systemctl restart apache2
统信UOS默认使用firewalld,开放必要端口:
bash复制sudo firewall-cmd --permanent --add-port=80/tcp
sudo firewall-cmd --permanent --add-port=10050/tcp
sudo firewall-cmd --permanent --add-port=10051/tcp
sudo firewall-cmd --reload
若系统启用了SELinux(统信UOS默认可能未启用),需额外配置:
bash复制sudo setsebool -P httpd_can_network_connect_db on
sudo setsebool -P httpd_can_connect_zabbix on
启动所有相关服务并设置开机自启:
bash复制sudo systemctl start zabbix-server zabbix-agent apache2
sudo systemctl enable zabbix-server zabbix-agent apache2
检查服务状态:
bash复制sudo systemctl status zabbix-server --no-pager -l
journalctl -u zabbix-server -n 50 --no-pager
问题1:Web界面访问时报500错误
/var/log/apache2/error.logsudo apt install php7.4-bcmath php7.4-mbstring php7.4-xmlsudo chown -R www-data:www-data /usr/share/zabbix/问题2:Zabbix server无法连接数据库
/var/log/zabbix/zabbix_server.logmysql -uzabbix -p -e "SHOW GRANTS;"netstat -tulnp | grep mysql问题3:监控数据不更新
StartPollers值是否足够journalctl -u zabbix-agent -ftelnet zabbix_server_ip 10051对于大规模环境,建议采用Zabbix proxy分担server压力:
在另一台服务器安装zabbix-proxy-mysql:
bash复制sudo apt install zabbix-proxy-mysql
配置proxy(/etc/zabbix/zabbix_proxy.conf):
code复制Server=主Zabbix服务器IP
Hostname=Proxy唯一名称
DBHost=localhost
DBName=zabbix_proxy
DBUser=zabbix_proxy
DBPassword=ProxyPassword123!
在Zabbix web界面添加该proxy,并重新分配主机到proxy。
高效监控项配置原则:
| 监控项类型 | 推荐间隔 | 存储周期 | 说明 |
|---|---|---|---|
| 系统状态 | 30s | 7d | CPU、内存等 |
| 服务状态 | 1m | 30d | 进程、端口 |
| 业务指标 | 5m | 90d | 业务相关 |
| 日志监控 | 实时 | 7d | 关键错误日志 |
触发器设计建议:
avg()、max())而非瞬时值数据库备份脚本示例:
bash复制#!/bin/bash
BACKUP_DIR="/backup/zabbix"
DATE=$(date +%Y%m%d)
mysqldump -uzabbix -pComplexPassword123! --single-transaction zabbix | gzip > $BACKUP_DIR/zabbix_db_$DATE.sql.gz
find $BACKUP_DIR -type f -name "*.sql.gz" -mtime +30 -delete
配置文件备份策略:
bash复制sudo tar czf /backup/zabbix_config_$(date +%Y%m%d).tar.gz /etc/zabbix /usr/share/zabbix/conf
恢复测试流程:
在实际部署中,我们发现统信UOS 1070e的某些内核参数可能需要调整以获得最佳性能,特别是在监控大量主机时。建议定期检查/var/log/zabbix/zabbix_server.log中的警告信息,并根据提示进行针对性优化。