What is Zabbix?
Zabbix([`zæbiks])是一个基于Web界面的提供分布式系统监控以及网络监控功能的企业级的开源解决方案。用于监控各种网络设备,操作系统、数据库、中间件以及服务器的安全运营;并提供灵活的通知机制以让系统运维人员快速定位/解决存在的异常问题。
Zabbix由3大核心部分构成,Zabbix server 、Zabbix proxy和Zabbix agent。Zabbix Server、Proxy可以通过SNMP,Agent,Ping,SSH, Telnet,IPMI,JMX,简单检查等方式提供对远程服务器/网络状态的监控,数据收集等功能。
Zabbix Proxy 可以替代 Zabbix Server 收集主机设备的性能和可用性数据从而减轻 Zabbix Server 的压力。
Zabbix部署架构方式
All-in-One部署适合小型或测试环境简单易行,容易维护,但不适合大规模生产环境,所有的负载都在一台服务器上,这可能会导致性能瓶颈。
分布式部署适合大规模和复杂网络的生产环境。通过将负载分散到多台服务器上,能够提高系统的可伸缩性和可靠性。分布式部署还可以通过添加更多的Zabbix proxy和服务器来轻松扩展。在分布式部署中,Zabbix的不同组件被分散到多台服务器上。
一、MySQL 部署
Zabbix 唯一支持的编码是 UTF-8 。使用此编码没有已知的任何安全漏洞。应注意如果使用其他的编码,则存在已知的安全问题。支持字符集 utf8(又名utf8mb3)和 utf8mb4(分别使用utf8_bin和utf8mb4_bin 排序规则)以便 Zabbix 服务器/代理与 MySQL 数据库正常工作。建议使用 utf8mb4 进行新安装。
1,安装mysql
dnf install mysql mysql-server
2,初始化数据库
mysql_secure_installation
3,登录测试
mysql -uroot -p
二、创建zabbix数据库,创建用户并授权
zabbix官方文档说明
https://www.zabbix.com/documentation/6.0/zh/manual/appendix/install/db_scripts
登录数据库
mysql -uroot -p
创建zabbix 数据库
创建zabbix 数据库
mysql> create database zabbix character set utf8mb4 collate utf8mb4_bin;
创建zabbix 用户
mysql> create user 'zabbix'@'%' identified by 'password';
授权远程访问
mysql> grant all privileges on zabbix.* to 'zabbix'@'%';
开启log_bin_trust_function_creators
mysql> SET GLOBAL log_bin_trust_function_creators = 1;
刷新策略
mysql> flush privileges;
退出
mysql> quit;
重置root密码
alter user 'root'@'localhost' identified by "password";
flush privileges;
配置数据库用户权限
查看user表中用户远程登录授权,host字段是localhost,说明用户只能本地登录
select host,user,plugin from mysql.user;
设置数据库远程连接
update mysql.user set host='%' where user='root';
刷新权限
FLUSH PRIVILEGES;
三、Zabbix 部署
1,创建zabbix用户组
groupadd --system zabbix
useradd --system -g zabbix -d /usr/lib/zabbix -s /sbin/nologin -c "Zabbix Monitoring System" zabbix
2,创建用户家目录
mkdir -m u=rwx,g=rwx,o= -p /usr/lib/zabbix
chown zabbix:zabbix /usr/lib/zabbix
3,安装系统依赖环境
dnf install gcc libxml2 libxml2-devel net-snmp net-snmp-devel OpenIPMI OpenIPMI-devel libevent libevent-devel curl curl-devel libssh2-devel java java-devel mysql-devel unixODBC-devel openldap openldap-devel pcre pcre-devel fping -y
4, 设置fping 执行权限
chmod u+s /usr/sbin/fping
5,编译安装Zabbix
下载zabbix6.0.27源码包
wget https://cdn.zabbix.com/zabbix/sources/stable/6.0/zabbix-6.0.27.tar.gz
tar -zvxf zabbix-6.0.27.tar.gz -C /opt && cd /opt/zabbix-6.0.27/
./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --enable-java --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2 --with-unixodbc --with-openipmi --enable-ipv6 --with-openssl --with-ssh2 --with-iconv --with-libpcre --with-iconv-include --with-iconv-lib --with-libevent --with-libevent-include --with-zlib --with-zlib-include --with-zlib-lib --with-libpthread --with-libpthread-include --with-libpthread-lib --with-libevent-lib --with-ldap
make install
四、Zabbix 数据库数据导入
依次导入zabbix数据库
cd /opt/zabbix-6.0.27/database/mysql
mysql -uzabbix -p zabbix < schema.sql
mysql -uzabbix -p zabbix < images.sql
mysql -uzabbix -p zabbix < data.sql
查看数据库用户权限和用户授权
select host,user,plugin,authentication_string from mysql.user;
SHOW GRANTS FOR 'zabbix'@'%';
五、Nginx 部署
1,安装nginx 软件包
dnf install nginx
2,上传zabbix.conf 文件配置到/etc/nginx/conf.d/
六、PHP 部署
1,安装php软件包
dnf install php php-fpm php-mysqlnd php-cli php-gd php-mbstring php-xml php-bcmath php-ldap
2,上传zabbix-php-fpm.conf文件配置到/etc/php-fpm.d目录
Zabbix 组件服务启动
systemctl start php-fpm && systemctl enable php-fpm
systemctl start nginx && systemctl enable nginx
systemctl restart zabbix-server && systemctl enable zabbix-server
七、Zabbix Web 前端配置
拷贝zabbix web ui 配置文件到/usr/share/zabbix目录下
cp -rp /opt/zabbix-6.0.27/ui /usr/share/zabbix
chown -R nginx:nginx /usr/share/zabbix/
Zabbix Web 初始化配置
八、Firewall 配置
firewall-cmd --add-port={8080,10050,10051,3306}/tcp --permanent
firewall-cmd --reload
九、Zabbix Web 页面中文显示
Users settings--Profile--Language--Chinese(zh_CN)
十、Zabbix 6.0 Web UI 中文乱码
在Windows 系统中找到 C:\Windows\Fonts 中的楷体(常规)复制到 windows 桌面上,通过lrzsz 上传到 /usr/share/zabbix/assets/fonts 目录下
cd /usr/share/zabbix/assets/fonts
cp DejaVuSans.ttf DejaVuSans.ttf.bak
mv simkai.ttf DejaVuSans.ttf
chmod 755 DejaVuSans.ttf
十一、Chrony 时钟
Chrony是一个开源自由的网络时间协议NTP 的客户端和服务器软件。它能让计算机保持系统时钟与时钟服务器(NTP)同步,让计算机保持精确的时间,Chrony也可以作为服务端软件为其他计算机提供时间同步服务。
Zabbix 部署对系统时钟有严格要求
1. 在Zabbix 在分布式部署时,Zabbix Server、 Proxy 和数据库节点之前需要保证时间一致,避免出现数据采集和触发器异常告警。
2. Zabbix agent active 主动发送数据给zabbix server/proxy 时使用本地时钟标记数据指标时间戳,当agent与server 时钟不一致时会导致zabbix 最新数据有偏差,还会导致触发器异常告警。
chronyd官方文档
https://chrony.tuxfamily.org/documentation.html
安装chronyd
dnf install chronyd
chronyd配置文件
vim /etc/chrony.conf
server ntp.aliyun.com iburst
server ntp1.aliyun.com iburst
driftfile /var/lib/chrony/drift
makestep 1.0 3
rtcsync
local stratum 10
logdir /var/log/chrony
启动chronyd服务
systemctl start chronyd && systemctl enable chronyd
查看时间同步状态
timedatectl status
开启网络时间同步
timedatectl set-ntp true
查看 ntp_servers
chronyc sources -v
强制同步下系统时钟
chronyc -a makestep