zhangguanzhang's Blog

个人zabbix安装和坑的解决

字数统计: 2.1k阅读时长: 9 min
2017/04/29

自己的摸索和坑的总结

系统是centos 6.8 64位,lnmp
环境搭建可以找我签名博客拿去参考
我是下载的源码编译安装的,下载地址往下拉就能看到源码包,下载地址http://www.zabbix.com/download
然后官方手册地址点我跳转到官方手册
下图是官方说明(点击图片放大),php的配置选项,自行修改,我用sed修改,下面是记录
manual

[root@guan etc]# grep 'max_execution_time' php.ini
max_execution_time = 30
[root@guan etc]# sed -i '/max_execution_time/s#30#300#' php.ini
[root@guan etc]# grep 'memory_limit' !$
grep 'memory_limit' php.ini
memory_limit = 128M
[root@guan etc]# grep 'post_max_size' !$
grep 'post_max_size' php.ini
post_max_size = 8M
[root@guan etc]# sed -i '/post_max_size/s#8#16#' !$
sed -i '/post_max_size/s#8#16#' php.ini
[root@guan etc]# grep 'upload_max_filesize' !$
grep 'upload_max_filesize' php.ini
upload_max_filesize = 2M
[root@guan etc]# grep 'max_input_time' !$
grep 'max_input_time' php.ini
; max_input_time
max_input_time = 60
[root@guan etc]# sed -i '/max_input_time/s#60#300#' !$
sed -i '/max_input_time/s#60#300#' php.ini
[root@guan etc]# grep 'date.timezone' !$
grep 'date.timezone' php.ini
; http://php.net/date.timezone
date.timezone = PRC
[root@guan etc]# grep 'mbstring\.func_' php.ini
;mbstring.func_overload = 0
[root@guan etc]# sed -i '/mbstring\.func_/{s#;##;s#0#2#}' php.ini
[root@guan etc]# grep '^mbstring' php.ini
mbstring.func_overload = 2
[root@guan etc]# sed -ri '/^mbstring/s#2#0#' php.ini
[root@guan etc]# grep 'always_populate_raw_post_data' php.ini
;always_populate_raw_post_data = -1
[root@guan etc]# sed -i '/always_populate_raw_post_data/s#;##' php.ini

然后下载,下载速度特慢。。。

[root@guan download]# wget https://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/3.0.9/zabbix-3.0.9.tar.gz/download -O zabbix-3.0.9.tar.gz
[root@guan download]# tar zxf zabbix-3.0.9.tar.gz
[root@guan download]# cd zabbix-3.0.9

为了安全考虑,zabbix只使用普通用户运行,假如你当前用户叫user,那么你运行他,他便使用user身份运行。但
是如果你在 root 环境下运行 zabbix,那么 zabbix 将会主动尝试以 zabbix 身份来运行。但是如果你的系统没有名叫zabbix 的用户,你需要创建一个用户

[root@guan zabbix-3.0.9]# groupadd zabbix
[root@guan zabbix-3.0.9]# useradd -M -s /sbin/nologin -g zabbix zabbix

安装依赖,mysql我是源码编译安装的,然后编译安装

[root@guan zabbix-3.0.9]# yum install -y net-snmp net-snmp-devel libcurl libcurl-devel libxml2 libxml2-devel
[root@guan zabbix-3.0.9]# ./configure --prefix=/usr/local/zabbix \
--sysconfdir=/etc/zabbix/ \
--enable-server \
--enable-agent \
--with-net-snmp \
--with-libcurl \
--with-mysql \
--with-libxml2

有些人报checking for mysql_config… configure: error: MySQL library not found
那就把上面的configure里的–with-mysql改成
–with-mysql=/usr/local/mysql/bin/mysql_config

[root@guan zabbix-3.0.9]# make && make install

zabbix server 一般充当两个角色:server、 agent(需要监控自己),所以上面的配置参数也同时加上了 –enable-agent。
备注:请安装好snmp,curl开发库

[root@guan zabbix-3.0.9]# mysql -uroot -p
mysql> create database zabbix default charset utf8;
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';
mysql> flush privileges;
[root@guan zabbix-3.0.9]# mysql -uzabbix -pzabbix zabbix < database/mysql/schema.sql

如果你仅仅是初始化 proxy 的数据库,那么够了。如果初始化 server,那么接着导入下面两个 sql

mysql -uzabbix -pzabbix zabbix < database/mysql/images.sql
mysql -uzabbix -pzabbix zabbix < database/mysql/data.sql

其他数据库(db2\sqlite\oracle)数据库初始化方法参考官方手册

然后默认的配置文件如下

[root@guan zabbix-3.0.9]# grep -Pv '#|(^$)' /etc/zabbix/zabbix_server.conf
LogFile=/tmp/zabbix_server.log
DBName=zabbix
DBUser=zabbix
Timeout=4
LogSlowQueries=3000

日志我打算放/var/log下,规范化

[root@guan zabbix-3.0.9]# mkdir -p /var/log/zabbix
[root@guan zabbix-3.0.9]# chown zabbix:zabbix /var/log/zabbix

然后下面是我修改后的配置文件,mysql的sock位置和zabbix_server的要一致

[root@guan zabbix-3.0.9]# grep -Pv '#|(^$)' /etc/zabbix/zabbix_server.conf
LogFile=/var/log/zabbix/zabbix_server.log
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
DBSocket=/var/run/mysql/mysql.sock
DBPort=3306
ListenIP=127.0.0.1
Timeout=4
AlertScriptsPath=/usr/local/zabbix/share/zabbix/alertscripts ##zabbix运行脚本存放目录
LogSlowQueries=3000


[root@guan zabbix-3.0.9]# grep 'socket' /etc/my.cnf
 socket = /var/run/mysql/mysql.sock

下面是客户端的配置文件信息

[root@guan zabbix-3.0.9]# grep -Pv '#|(^$)' /etc/zabbix/zabbix_agentd.conf
LogFile=/var/log/zabbix/zabbix_agentd.log
Server=127.0.0.1
ServerActive=127.0.0.1
Hostname=Zabbix server

其中Server和ServerActive都指定zabbixserver的IP地址,不同的是,前者是被动后者是主动.也就是说Server这个配置是用来允许127.0.0.1这个ip来我这取数据。而serverActive的 127.0.0.1 的意思是,客户端主动提交数据给他。

复制zabbix的启动脚本,我这里也需要zabbix监控自身监控本机,所以*统配符把agentd也复制过去了

[root@guan zabbix-3.0.9]# cp misc/init.d/fedora/core/zabbix_* /etc/init.d/
[root@guan zabbix-3.0.9]# chmod 755 /etc/init.d/zabbix_*

安装目录是/usr/local/zabbix,server和agentd的启动脚本里不一致,所以修改

[root@guan zabbix-3.0.9]# sed -ri 's#/usr/local$#&/zabbix#' /etc/init.d/zabbix_*

然后启动的时候报错(因为我是源码编译安装的mysql)

[root@guan zabbix-3.0.9]# service zabbix_server start
Starting zabbix_server:  /usr/local/zabbix/sbin/zabbix_server: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object file: No such file or directory
                                                           [FAILED]

查找下这个文件的位置

[root@guan zabbix-3.0.9]# locate libmysqlclient.so.18
输出信息省略。。。

上面的locate找到的在/usr/local/mysql/lib里,把这个路径添加到动态库的路径里后ldconfig -v刷新

[root@guan zabbix-3.0.9]# echo '/usr/local/mysql/lib'>>/etc/ld.so.conf && ldconfig -v &>/dev/null

启动ok

[root@guan zabbix-3.0.9]# service zabbix_server start
Starting zabbix_server:                                    [  OK  ]

我的web目录是/data/web/www

[root@guan zabbix-3.0.9]# grep -P '^ +root' /etc/nginx/nginx.conf
        root   /data/web/www;

创建zabbix的web目录并且把zabbix的php页面文件复制进去

[root@guan zabbix-3.0.9]# mkdir /data/web/www/zabbix
[root@guan zabbix-3.0.9]# cp -r frontends/php/* /data/web/www/zabbix/

然后访问web页面http://ip/zabbix即可进入web的初始化配置页面
第一步是欢迎页面,第二步是检查你的软件是否达到要求
达不到要求的话会是红色选项,php的扩展不会安装的话可以重新编译下php,图借用下官方的
t2

然后第三步,如果出现下面的无法连接数据库的话host那个localhost换成127.0.0.1即可
原因是因为linux的mysql下localhost默认是使用sock连接,127.0.0.1则是tcp连接
t3
第四步设置zabbix-server的端口,默认就不需要改了
t4
第五步确认信息,
t
第六步提示成功
t5
如果第六步是出现下面的,一般是php没有写入web目录的权限,检查你的web目录是否是web server的所有者和所有组
t6
完成之后
t7
默认用户名是Admin密码是zabbix

然后用户信息那我切换了下语言,发现中文乱码,在win下复制字体,我复制的是楷体
上传到zabbix下的fonts目录可以看到默认使用的字体是DejaVuSans
字体配置是在web目录的zabbix/include/defines.inc.php里,我改为的楷体

[root@guan include]# pwd
/data/web/www/zabbix/include
[root@guan include]# cat defines.inc.php |grep Deja
define('ZBX_GRAPH_FONT_NAME',		'DejaVuSans'); // font file name
define('ZBX_FONT_NAME', 'DejaVuSans');
[root@guan include]# sed -i 's#DejaVuSans#simkai#g' defines.inc.php

上面为止只监控本身,一个完整的zabbix应该是server端能监控自身也能监控其他的主机
然后添加其他主机作为客户端,也是用的同一样的源码包,我是scp过去的
编译安装客户端,大体步骤和上面差不多

[root@guan zabbix-3.0.9]# ./configure --prefix=/usr/local/zabbix \
--enable-agent \
--sysconfdir=/etc/zabbix/
[root@guan zabbix-3.0.9]# make && make install

复制zabbix agent的启动脚本

[root@guan zabbix-3.0.9]# cp misc/init.d/fedora/core/zabbix_agentd /etc/init.d/
[root@guan zabbix-3.0.9]# chmod 755 /etc/init.d/zabbix_agentd

安装目录是/usr/local/zabbix,agentd的启动脚本里不一致,所以修改

[root@guan zabbix-3.0.9]# sed -ri 's#/usr/local$#&/zabbix#' /etc/init.d/zabbix_agentd

然后防火墙开放端口,稳妥起见可以自己指定server端的服务器ip

[root@guan zabbix-3.0.9]# iptables -I INPUT -p tcp -m multiport --destination-port 10050:10051 -j ACCEPT
[root@guan ~]# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[  OK  ]

我的客户端是华为企业云主机ecs,光防火墙没作用,安全组也要设置下zabbix的端口

然后配置文件如下(ip已打码)

[root@guan ~]# sed -i "s@^# UnsafeUserParameters=0@UnsafeUserParameters=1\n@g" /etc/zabbix/zabbix_agentd.conf
[root@guan ~]# grep -Pv '#|(^$)' /etc/zabbix/zabbix_agentd.conf
LogFile=/var/log/zabbix/zabbix_agentd.log
Server=120.***.***.***
ServerActive=120.***.***.***:10051
Hostname=aliguan         #zabbix的server端上添加的名字
UnsafeUserParameters=1   #允许所有字符的参数传递给用户定义的参数。
EnableRemoteCommands=1   ##允许执行远程命令

然后启动

[root@guan ~]# service zabbix_agentd start
Starting zabbix_agentd:                                    [  OK  ]

然后server端上添加这个客户端主机
enjoy it

CATALOG