浅谈部署 Zabbix 踩坑记

  • A+
所属分类:系统文档

简介

浅谈部署 Zabbix 踩坑记
Zabbix 是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。
Zabbix 能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。
Zabbix 由2部分构成,zabbix server与可选组件zabbix agent。
Zabbix server 可以通过SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能,它可以运行在Linux,Solaris,HP-UX,AIX,Free BSD,Open BSD,OS X等平台上。

详见 官网

环境需求

  • Web 服务:Apache、Nginx
  • PHP :拓展(mysqli、gd、gettext、net-snmp...),根据提示及自己换机补充PHP拓展;
  • DB Server:MySQL、PostgreSQL、SQLite

博主的环境是(LNMP):Centos8+Nginx+Mariadb+PHP


部署开始

1、 检查PHP 拓展是否满足:

[[email protected] ~]# php -m
[PHP Modules]
bcmath
bz2

2、 下载 Zabbix 源码包,并上传到服务器 /usr/loacal/src

// 过程略过,能传上去就可以

3、 解压并安装 Zabbix server;我这里是 5.0 bat2 版本

tar xvf zabbix-5.0.0beta2.tar.gz
cd zabbix-5.0.0beta2
./configure --prefix=/usr/local/zabbix --enable-server --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2
make -j 4
make install

4、 复制启动程序到 /etc/rc.d/init.d/,并添加启动项

// 创建命令链接,方便调用,否则启动会报错
ln -s /usr/local/zabbix/sbin/zabbix_server /usr/local/sbin/zabbix_server

// 复制启动脚本
cp misc/init.d/fedora/core/zabbix_server  /etc/rc.d/init.d/
chmod 755 /etc/rc.d/init.d/zabbix_server
systemctl daemon-reload

5、 复制 Web 文件到 Web 服务目录 下,这里以 /usr/local/nginx/html/zabbix 为例

cp -a frontends/php/* /usr/local/nginx/html/zabbix/

cp -a ui/* /usr/local/nginx/html/zabbix/      // 最新稳定版 5.0 是这个目录 ui

6、 创建 Zabbix 数据及用户,不建议用root用户操作数据,初始数据库

// 创建数据库,一定要 utf8_bin
MariaDB [(none)]> CREATE DATABASE IF NOT EXISTS zabbix CHARACTER set utf8 collate utf8_bin;

// 创建数据库用户,不建议使用 root 直接操作
MariaDB [(none)]> CREATE USER IF NOT EXISTS [email protected] IDENTIFIED BY 'zabbix123';

// 授权数据并刷新权限
MariaDB [(none)]> grant all on  zabbix.* to [email protected];
MariaDB [(none)]> FLUSH PRIVILEGES;

// 导入数据表,按顺序
[[email protected] ~]# mysql -u root  -proot**** zabbix < schema.sql
[[email protected] ~]# mysql -u root  -proot**** zabbix < images.sql
[[email protected] ~]# mysql -u root  -proot**** zabbix < data.sql

7、 需改 Zabbix server 配置文件

// 数据库配置
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix123
DBPort=3306
FpingLocation=/usr/bin/fping          // 需要自行安装 fping工具,如果不用可以不配置

视 频 参 考,高 清 视 频 请 亲 前 往 B站 观 看


Zabbix 内置变量

名称/描述 变量 名称/描述 变量
故障状态 {TRIGGER.STATUS} 故障信息 {TRIGGER.NAME}
告警主机名 {HOSTNAME1} 告警主机显示名 {HOST.NAME}
主机IP地址 {HOST.CONN} 告警时间 {EVENT.DATE}{EVENT.TIME}
告警等级 {TRIGGER.SEVERITY} 告警项目 {TRIGGER.KEY1}
问题详情 {ITEM.NAME}:{ITEM.VALUE} 当前状态 {TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID {EVENT.ID} 告警恢复时间 {EVENT.RECOVERY.DATE} {EVENT.RECOVERY.TIME}

Zabbix 历史数据清理

参考 Lambeto 博客

!/bin/bash
dbUser="zabbixuser"  # 数据库访问用户
dbPasswd="zabbixpass"  # 数据库用户密码
dbDate=`date -d $(date -d "-7 day" +%Y%m%d) +%s` # 取7天之前的时间戳
$(which mysql) -u${dbUser} -p${dbPasswd} -e "
use zabbixdb;  # 切换数据库
DELETE FROM history WHERE clock < $Date;
optimize table history;
DELETE FROM history_str WHERE clock < $Date;
optimize table history_str;
DELETE FROM history_uint WHERE clock < $Date;
optimize table history_uint;
DELETE FROM history_text WHERE clock < $Date;
optimize table history_text;
DELETE FROM  trends WHERE clock < $Date;
optimize table  trends;
DELETE FROM trends_uint WHERE clock < $Date;
optimize table trends_uint;
DELETE FROM events WHERE clock < $Date;
optimize table events;
"

踩过的坑

问题描述 原因分析 处理方法 备注
0001 database support off PHP没有安装mysqli扩展 /usr/local/php/bin/phpize;./configure --with-php-config=/usr/local/php/bin/php-config ☆☆☆☆
0002 安装界面进行数据库配置检查错误Unsupported charset…… 修改数据库字符集或者重建数据库(官方说,所有zabbix 必须是 utf8_bin) CREATE DATABASE IF NOT EXISTS zabbix CHARACTER set utf8 collate utf8_bin; ☆☆☆
0003 启动脚本存放问题(源码安装才有这个问题) 脚本引用到functions文件,所有脚本务必放到/etc/rc.d/init.d/ cp misc/init.d/fedora/core/zabbix_server /etc/rc.d/init.d/;ln -s zabbix/bin/zabbix_server /usr/local/sbin ☆☆
0004 zabbix_server 启动正常,无进程、无监听端口(前端告警:zabbix server is not running) 1、zabbix_server.conf 配置错误;
2、mysql.sock 文件指向不对,找不到文件;
3、数据库连接数过低导致连接异常;
4、php的fsockopen模块是否启用;
5、zabbix 内存溢出
故障1:检查 zabbix_server.conf配置;
故障2:find / -name "mysql.sock" ,然后将文件路径写进 zabbix_server.conf ;
故障3:修改mysqli 最大连接数,root 登录MySQL,执行(数值按需修改)set GLOBAL max_connections = 300
故障4:检查 php.ini allow_curl_fopen = on,`extension=openss 等是否被注释;
故障5:内存溢出问题,修改 zabbix_server.conf CacheSize=1024M,根据自己需求修改
☆☆☆☆
0005 Web 中文字体显示问题 系统缺乏相关字体 将Windows系统下:C:\windows\fonts\simkai.ttf 拷贝到 html/zabbix/asstes/fonts/ ;修改 html/zabbix/include/defines.inc.php 文件,将 define('ZBX_GRAPH_FONT_NAME','simkai'); 修改为 define('ZBX_FONT_NAME', 'simkai'),其实我更建议备份原来字体,然后把上传的新字体文件更名为默认的名字,这样就不用修改配置; ;重启 zabbix_server、http server ☆☆
0006 中文翻译问题 有几处翻译明显有问题,或者说不太合适中文环境下阅读,一是问题确认问题“不/是”(”是/否“比较合适,二是图形时间显示,“剩下”这种翻译总觉怪怪的(“最近“比较合适) 步骤1:简体环境修改 html/zabbix/locale/zh_CN/LC_MESSAGES/frontend.po;繁体环境修改 html/zabbix/locale/zh_TW/LC_MESSAGES/frontend.po
步骤2:执行脚本 html/zabbix/locale/ake_mo.sh(其他语系照此法修改相关的 po 文件,然后执行一次 make_mo.sh 即可)
☆☆

结束语

  • 附上我的nginx 配置文件(仅供参考)
server {

        listen       8095;
        #server_name  zabbix;
        charset utf-8;
        #access_log  logs/host.access.log  main;
        root   /usr/local/nginx/html/zabbix;
        index index.html index.htm index.php;

        # php 解析配置
        location ~ \.php$ {
               root            /usr/local/nginx/html/zabbix;
               fastcgi_pass    unix:/var/run/php-fpm.sock;
               fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
               fastcgi_index   index.php;
               include         fastcgi_params;
        }
}
  • 效果图

01.webp
02.webp
03.webp
浅谈部署 Zabbix 踩坑记

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: