zabbix安装笔记
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