zabbix监控在lnmp环境下编译安装
最近在帮客户安装监控,运维常见的监控告警软件zabbix,特地将安装过程和遇到的问题记录在此,以便自己或有需要的人来参考翻阅。
由于已有php运行环境,所以只需要编译安装zabbix即可。
一、安装依赖组件
二、编译安装zabbix
①、下载zabbix
cd /usr/local/src
wget -O zabbix-2.4.3.tar.gz -c “http://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/2.4.3/zabbix-2.4.3.tar.gz/download”
②、编译安装
#解压zabbix
tar zxvf zabbix-2.4.3.tar.gz
#编译zabbix
cd zabbix-2.4.3
./configure –prefix=/usr/local/zabbix –enable-server –with-mysql –with-net-snmp –with-libcurl –with-openipmi –enable-proxy –enable-agent
#成功将出现如下信息:
***********************************************************
* Now run ‘make install’ *
* *
* Thank you for using Zabbix! *
* <http://www.zabbix.com> *
***********************************************************
#直接make install 安装即可:
make install
configure可能出现下列错误:
a. 找不到mysqlclient library:
checking for mysql_config… /usr/bin/mysql_config
checking for main in -lmysqlclient… no
configure: error: Not found mysqlclient library
如下建立软链接之后,重新编译即可:
#如果是32位系统,应该是lib32,总之,先看下路径所指文件是否存在:
ln -s /usr/lib64/mysql/libmysqlclient.so.18.0.0 /usr/lib64/mysql/libmysqlclient.so
ln -s /usr/lib64/mysql/libmysqlclient_r.so.18.0.0 /usr/lib64/mysql/libmysqlclient_r.so
b. 找不到 MySQL library:configure: error: MySQL library not found
这是未安装mysql-devel组件产生的错误,先用yum安装,然后重新编译即可:
三、配置zabbix
Ps:以下步骤如果不是绝对路径,均位于zabbix解压后的文件夹目录,即/usr/local/src/zabbix-2.4.3
③、创建zabbix数据库,并导入初始数据
#创建zabbix数据库和zabbix用户
mysql -uroot -proot密码 -e “create database zabbix default character set utf8;”
mysql -uroot -proot密码 -e “grant all privileges on zabbix.* to ‘zabbix’@’localhost’ identified by ‘zabbix2014′;flush privileges;”
#导入zabbix初始数据
cat database/mysql/schema.sql | mysql -uzabbix -pzabbix2014 zabbix
cat database/mysql/images.sql | mysql -uzabbix -pzabbix2014 zabbix
cat database/mysql/data.sql | mysql -uzabbix -pzabbix2014 zabbix
③、修改配置
#创建服务
cp misc/init.d/fedora/core/zabbix_server /etc/init.d/
cp misc/init.d/fedora/core/zabbix_agentd /etc/init.d/
#修改参数,注意根据实际情况修改DB用户名和密码:
sed -i ‘s/^DBUser=.*$/DBUser=zabbix/g’ /usr/local/zabbix/etc/zabbix_server.conf
sed -i ‘s/^.*DBPassword=.*$/DBPassword=zabbix2014/g’ /usr/local/zabbix/etc/zabbix_server.conf
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
④、部署WEB
#因为只是测试,所以直接丢到了default下,http://ip/zabbix就能访问了
cp -r frontends/php /home/wwwroot/default/zabbix
#修改权限
chown -R www:www /home/wwwroot/default/zabbix
⑤、增加服务端口
#直接在终端执行如下命令行即可:
cat >>/etc/services <<EOF
zabbix-agent 10050/tcp #Zabbix Agent
zabbix-agent 10050/udp #Zabbix Agent
zabbix-trapper 10051/tcp #Zabbix Trapper
zabbix-trapper 10051/udp #Zabbix Trapper
EOF
⑥、启动zabbix服务
service zabbix_server start
service zabbix_agentd start
#可选配置:将服务加入开机启动项
chkconfig zabbix_server on
chkconfig zabbix_agentd on
四、WEB端的安装
因为我是放到lnmp的default目录,所以直接在浏览器访问http://ip地址/zabbix进入安装向导,和一般的php建站程序的安装一样,非常简单。
五、问题与解决
①、监控报错
登陆zabbix后,发现仪表盘报如下错误:
[root@lcoalhost ~]# tail -f /tmp/zabbix_server.log9785:20150128:114951.637 [Z3001] connection to database ‘zabbix’ failed: [2002] Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2)
9785:20150128:114951.637 Database is down. Reconnecting in 10 seconds.
9785:20150128:115001.638 [Z3001] connection to database ‘zabbix’ failed: [2002] Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2)
9785:20150128:115001.638 Database is down. Reconnecting in 10 seconds.
…
原来是mysql.sock路径问题。
解决方法:
方法(1). 修改/usr/local/zabbix/etc/zabbix_server.conf,找到#DBSocket=/tmp/mysql.sock,取消注释:
方法(2). 建立软链接:
test -d /var/lib/mysql || mkdir /var/lib/mysql
ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock
推荐第一种方法,保存后,使用service zabbix_server restart 重启zabbix服务即可解决此问题。
①、中文设置
修改为中文界面的步骤是:Profile -> Language -> Chinese (zh_CN) ->Save
可当我安装之后,却没有Chinese (zh_CN)这这个下拉选项。
解决办法:
1、在zabbix网站目录(/home/wwwroot/default/zabbix)找到 include/locales.inc.php 文件
2、编辑 locales.inc.php,找到
‘zh_CN’ => array(‘name’ => _(‘Chinese (zh_CN)’), ‘display’ => false),
修改为:
‘zh_CN’ => array(‘name’ => _(‘Chinese (zh_CN)’), ‘display’ => true),