zabbix安装笔记

本文记录了Zabbix的安装过程,包括MySQL配置、创建Zabbix用户、安装Zabbix、导入数据库、配置Zabbix_server和Agent,以及解决启动错误和Web配置问题。在安装过程中,遇到的net-snmp依赖问题、HistoryTextCacheSize参数错误、服务启动异常等坑,均给出了详细的解决方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MySQL相关配置

首先说明的是我的MySQL与zabbix server不在同一台机器上,这在后面zabbix安装好后进行配置。首先创建zabbix库,赋权。

CREATE DATABASE zabbix CHARACTER SET utf8 COLLATE utf8_bin; 
GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'%' IDENTIFIED BY 'zabbix'  WITH GRANT OPTION; 
flush privileges;

为了后面zabbix server访问该数据库不出什么问题,我还增加了两项授权:

GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'localhost' IDENTIFIED BY 'zabbix'  WITH GRANT OPTION; 
GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'127.0.0.1' IDENTIFIED BY 'zabbix'  WITH GRANT OPTION; 

安装zabbix

安装参考博客:
https://blog.youkuaiyun.com/m0_38014716/article/details/80003660
https://www.osyunwei.com/archives/7984.html

创建zabbix用户

因为后面启动zabbix_server服务以及其他一些操作,默认都是以zabbix用户来进行的,如果不创建这个用户,可能会出现启动失败的情况。

groupadd zabbix #创建用户组zabbix
useradd zabbix -g zabbix -s /bin/false #创建用户zabbix,并且把用户zabbix加入到用户组zabbix中

zabbix压缩包下载,解压

这里采用的是使用.tar.gz压缩包安装的方式,当然官方推荐使用yum和rpm方式安装。

wget http://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/3.0.3/zabbix-3.0.3.tar.gz
#可以访问zabbix官网下载页,首页选择zabbix sources选项进行下载

安装

首先检查环境

./configure --prefix=/usr/local/zabbix --sysconfdir=/etc/zabbix/ --enable-server --enable-agent --with-net-snmp --with-libcurl --with-mysql --with-libxml2

报错:

checking for net-snmp-config... no
configure: error: Invalid Net-SNMP directory - unable to find net-snmp-config

说明net-snmp没有正确安装。

yum install net-snmp-devel

安装不成功,显示该扩展需要其他的一些依赖:

    #elfutils-devel is needed by net-snmp-devel-1:5.7.2-33.el7_5.2.x86_64
    elfutils-libelf-devel is needed by net-snmp-devel-1:5.7.2-33.el7_5.2.x86_64
    libnetsnmp.so.31()(64bit) is needed by net-snmp-devel-1:5.7.2-33.el7_5.2.x86_64
    libnetsnmpagent.so.31()(64bit) is needed by net-snmp-devel-1:5.7.2-33.el7_5.2.x86_64
    libnetsnmphelpers.so.31()(64bit) is needed by net-snmp-devel-1:5.7.2-33.el7_5.2.x86_64
    libnetsnmpmibs.so.31()(64bit) is needed by net-snmp-devel-1:5.7.2-33.el7_5.2.x86_64
    libnetsnmptrapd.so.31()(64bit) is needed by net-snmp-devel-1:5.7.2-33.el7_5.2.x86_64
    #lm_sensors-devel is needed by net-snmp-devel-1:5.7.2-33.el7_5.2.x86_64
    #net-snmp = 1:5.7.2-33.el7_5.2 is needed by net-snmp-devel-1:5.7.2-33.el7_5.2.x86_64
    #net-snmp-agent-libs = 1:5.7.2-33.el7_5.2 is needed by net-snmp-devel-1:5.7.2-33.el7_5.2.x86_64
    net-snmp-libs = 1:5.7.2-33.el7_5.2 is needed by net-snmp-devel-1:5.7.2-33.el7_5.2.x86_64
    #perl-devel(x86-64) is needed by net-snmp-devel-1:5.7.2-33.el7_5.2.x86_64
    #rpm-devel is needed by net-snmp-devel-1:5.7.2-33.el7_5.2.x86_64
    #tcp_wrappers-devel is needed by net-snmp-devel-1:5.7.2-33.el7_5.2.x86_64

尝试使用rpm强制安装,或者上面的./configure去掉 - -with-net-snmp 参数, 均是错误的方法!不要使用如下:

yumdownloader net-snmp-devel
rpm --force -i --nodeps net-snmp-devel-5.7.2-33.el7_5.2.x86_64.rpm
强制安装没有解决,去掉--with-net-snmp
./configure --prefix=/usr/local/zabbix --sysconfdir=/etc/zabbix/ --enable-server --enable-agent --with-net-snmp --with-libcurl --with-mysql 

解决方案:通过yum依次安装上述提示的依赖,不一定要全部装上,每装一个依赖可以尝试一下重新安装net-snmp,查看报错信息中缺失的依赖,再依次安装就可以。
./configure执行成功后可以执行编译安装:

make
make test
make install

导入数据库数据

进入zabbix解压目录,
进入database/mysql目录,下面有三个文件,依次导入MySQL数据库:

cd  zabbix-3.0.3/database/mysql
mysql -h 10.x.x.x -uzabbix -pzabbix zabbix < schema.sql
mysql -h 10.x.x.x   -uzabbix -pzabbix zabbix < images.sql
mysql  -h 10.x.x.x  -uzabbix -pzabbix zabbix < data.sql

注意指定MySQL所在的服务器IP地址。

zabbix_server配置

zabbix_server是zabbix两个主要进程之一,另一个是zabbix_agentd. 编辑/etc/zabbix/zabbix_server.conf配置文件:

vi /etc/zabbix/zabbix_server.conf
DBHost=10.x.x.104
DBName=zabbix
DBUser=zabbix 
DBPassword=zabbix 
ListenIP=10.x.x.107
StartIPMIPollers=10
StartPollersUnreachable=10
StartTrappers=10
StartPingers=10
StartDiscoverers=10
CacheSize=256M
StartDBSyncers=40
HistoryCacheSize=128M
TrendCacheSize=128M
###   HistoryTextCacheSize=128M
ValueCacheSize=128M
Timeout=30
AlertScriptsPath=/etc/zabbix/alertscripts        #zabbix运行脚本存放目录
ExternalScripts=/etc/zabbix/externalscripts    #其他脚本存放目录
LogSlowQueries=10000
StartProxyPollers=50

主要是前面几个参数的配置,其他参考博客:https://blog.youkuaiyun.com/m0_38014716/article/details/80003660
HistoryTextCacheSize参数无法识别,在zabbix_server启动过程中报错,所以删掉。
修改完zabbix_server.conf记得重启zabbix_server服务:systemctl restart zabbix_server
同样修改完zabbix_agent.conf重启zabbix_agentd服务:systemctl restart zabbix_agentd

其他系统配置,启动、软连接等

mkdir /etc/zabbix/alertscripts                   #zabbix运行脚本存放目录创建
mkdir /etc/zabbix/externalscripts             #其他脚本存放目录创建
ln -s /usr/local/zabbix/sbin/* /usr/local/sbin/    #添加系统软连接
ln -s /usr/local/zabbix/bin/* /usr/local/bin/       #添加系统软连接
# ln -s /usr/local/zabbix/sbin/* /usr/sbin/   #系统目录,不建议放在这
# ln -s /usr/local/zabbix/bin/* /usr/bin/      #系统目录,不建议放在这

注意/usr/bin 和 /usr/local/bin区别,用户的应用程序一般放在后者目录下

cp /zabbix-3.0.3/misc/init.d/fedora/core/zabbix_*  /etc/init.d/    #复制服务启动脚本
chmod +x /etc/init.d/zabbix_*  #赋权
chkconfig zabbix_server on    #添加开机启动
chkconfig zabbix_agentd on   #添加开机启动

或者直接复制到/etc/rc.d/init.d/,都一样 /etc/init.d是/etc/rc.d/init.d的软连接。
zabbix压缩包中misc/init.d文件夹下面没有centOS,所以复制的是fedora的执行程序.
复制的文件应该是两个: zabbix_server 和 zabbix_agentd

sed -i "s@BASEDIR=/usr/local@BASEDIR=/usr/local/zabbix@g" /etc/init.d/zabbix_server
sed -i "s@BASEDIR=/usr/local@BASEDIR=/usr/local/zabbix@g" /etc/init.d/zabbix_agentd

这两步主要是修改zabbix开机启动脚本中的zabbix安装目录
或者可以:

vi /etc/rc.d/init.d/zabbix_server #编辑服务端配置文件
BASEDIR=/usr/local/zabbix/ #zabbix安装目录
vi /etc/rc.d/init.d/zabbix_agentd #编辑客户端配置文件
BASEDIR=/usr/local/zabbix/ #zabbix安装目录

是/etc/rc.d/init.d还是/etc/init.d看之前的软连接建立在哪个目录。

基本的系统配置基本完毕。

zabbix_agent配置

对应的zabbix_agent也需要进行一些配置,主要是端口、指定zabbix_server地址等。
添加zabbix服务对应的端口
vi /etc/services #编辑,在最后添加以下代码:

zabbix-agent 10050/tcp # Zabbix Agent
zabbix-agent 10050/udp # Zabbix Agent
zabbix-trapper 10051/tcp # Zabbix Trapper
zabbix-trapper 10051/udp # Zabbix Trapper

zabbix_agent.conf文件修改:

#vi /etc/zabbix/zabbix_agentd.conf
Server=10.x.x.107  #指定zabbix_server安装的IP地址
ServerActive=10.x.x.107  #指定zabbix_server安装的IP地址

主要是两个ip地址的指定,区别主要是被动与主动模式,第一个参数是agent被动,server主动获取信息,第二个参数是agent主动寻找server。总之,server的ip地址都是一样的。

zabbix_server启动错误

在相关配置都做好之后,重启zabbix_server服务:
systemctl restart zabbix_server
通过systemctl status zabbix_server查看状态:
看似正常,信息也显示Active: active (running)并且是绿色,然而,正常的服务状态查询,应该显示一些树状信息

 zabbix_server.service - SYSV: Starts and stops Zabbix Server using chkconfig
   Loaded: loaded (/etc/rc.d/init.d/zabbix_server; bad; vendor preset: disabled)
   Active: active (running) since Thu 2018-09-20 11:56:09 CST; 4h 37min ago
     Docs: man:systemd-sysv-generator(8)
  Process: 33214 ExecStop=/etc/rc.d/init.d/zabbix_server stop (code=exited, status=0/SUCCESS)
  Process: 33252 ExecStart=/etc/rc.d/init.d/zabbix_server start (code=exited, status=0/SUCCESS)
   CGroup: /system.slice/zabbix_server.service
           ├─33263 /usr/local/zabbix/sbin/zabbix_server
           ├─33266 /usr/local/zabbix/sbin/zabbix_server: configuration syncer [synced configuration in 0.007323 sec, idle 60 sec]
           ├─33267 /usr/local/zabbix/sbin/zabbix_server: db watchdog [synced alerts config in 0.001339 sec, idle 60 sec]
           ├─33268 /usr/local/zabbix/sbin/zabbix_server: poller #1 [got 0 values in 0.000005 sec, idle 3 sec]
           ├─33269 /usr/local/zabbix/sbin/zabbix_server: poller #2 [got 1 values in 0.000040 sec, idle 3 sec]
           ├─33270 /usr/local/zabbix/sbin/zabbix_server: poller #3 [got 0 values in 0.000004 sec, idle 3 sec]

就是最下面的这些信息,很长的一串,然而此次查询并没有,只有短短的几行,说明zabbix_server启动有问题。
继续查询

ps -ef|grep zabbix

root     20125 19728  0 10:22 pts/3    00:00:00 grep --color=auto zabbix

只有一行,不正确,正常的应该有很多个进程,在次查询:

netstat -tunlp |grep zabbix

结果什么都没有,连端口都没起起来,再次证明服务启动异常。
想要查看zabbix的日志 /tmp/zabbix_server.log 发现并没有生成这个文件。执行下面命令查看日志:

systemctl stop zabbix_server
systemctl start zabbix_server
 journalctl -xe

发现:

Starting zabbix_server:  zabbix_server [12336]: unknown parameter "HistoryTextCacheSize" in
 config file "/etc/zabbix/zabbix_server.conf",

原来参数不识别,所以删除conf文件中该参数,重新执行上面三条命令,日志显示:

Starting zabbix_server:  zabbix_server [14742]: user zabbix does not exist

原来用户忘创建了,加上。在编写此博客时,在最前面已经加上。
继续执行上述三条命令,日志显示:

Sep 20 11:27:27 cdhnode3 zabbix_server[15981]: Starting zabbix_server:  [  OK  ]

所以,到此,zabbix_server服务是启动成功了。
在这过程中,如果出现数据库权限问题,如:

connection to database 'zabbix' failed: [1044] Access denied for user 'zabbix'@

需要检查一下第一步当中MySQL的赋权问题。还有另外一个问题:

connection to database 'zabbix' failed: [1040] Too many connections

这个问题也可能出现在 /tmp/zabbix_server.log日志文件当中,具体而言,
是由于连接到数据库的数量比较多,mysql 默认的连接数是100,一般设置到500~1000比较合适,我们可以调大这个值:在MySQL服务器上修改/etc/my.cnf这个文件,在[mysqld]中新增max_connections=1000
然后重启mysql和zabbix_server zabbix_agentd

另个坑:zabbix的web配置

因为web配置也是一个大坑,在我的另外一篇博客进行说明,地址:
https://blog.youkuaiyun.com/Ntozot/article/details/82755774

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值