之前实验过yum安装LAMP,yum安装zabbix,源码安装还是头一次,下面分享一下安装的具体过程和安装过程中遇到的各种错误及解决方法。
zabbix官网下载地址:http://www.zabbix.com/download.php
选择Zabbix Sources 下载2.2.9版本;
安装环境:linux centos6.6 32位版本 php5.4.37、nginx1.6.2、mysql5.1.40
1、编译安装zabbix2.2.9
# tar -zxvf zabbix-2.2.9.tar.gz # cd zabbix-2.2.9/ # ./configure --prefix=/usr/local/zabbix-2.2.9 --enable-server --enable-agent --with-mysql --with-net-snmp --with-libcurl --with-libxml2
编译报错1:
configure: error: Invalid Net-SNMP directory - unable to find net-snmp-config
编译安装zabbix时,配置时报以上错,导致检测系统环境不成功。提示unableto find net-snmp-config,说明缺少相关的依赖性。
这是因为,在linux中,大多数软件都是开源的,并且可以自由使用。因此在开发时可以用到其他的软件包时我们直接就拿来了,不用在花功夫去重新编写,这就造成了所谓的依赖性。
解决办法一:
找出net-snmp-config属于哪个软件包,然后安装即可。
# yum provides */net-snmp-config,发现net-snmp-config属于软件包net-snmp-devel,yum安装该软件包,解决该问题。
解决办法二:
在配置时,我们加上了--with-net-snmp这个选项,因此需要检查系统环境是否有该软件包支持。因此,在配置时,不要加上--with-net-snmp这个选项就不会报错。
编译错误2:configure: error: Curl library not found
yum install -y curl curl-devel 安装curl包即可,安装完成后重新编译。
# make && make install
2、创建用户
为了安全考虑zabbix使用普通用户运行,需要创建一个用户运行它。不创建用户的话无法运行启动进程。
# groupadd zabbix # useradd -g zabbix zabbix
3、修改配置文件php.ini,路径为:/usr/local/php/etc/php.ini
max_execution_time = 300 memory_limit = 128M post_max_size = 16M upload_max_filesize = 2M max_input_time = 300 date.timezone = Asia/Shanghai
4、创建zabbix数据库,并导入数据库,指定字符集为utf8,否则web如显示中文会出现乱码;授权zabbix用户;
# mysql -uroot -pxxxxxxx mysql> create database zabbix character set utf8; mysql> quit # mysql -uroot -pxxxxxxx --default-character-set=utf8 zabbix < database/mysql/schema.sql # mysql -uroot -pxxxxxxx --default-character-set=utf8 zabbix < database/mysql/images.sql # mysql -uroot -pxxxxxxx --default-character-set=utf8 zabbix < database/mysql/data.sql
zabbix server与proxy需要数据库,angent不需要。尤其要注意的是proxy只需要导入一个sql文件,而server一共要导入3个sql文件。proxy只需要导入一个表结构schema.sql即可。
授权一个zabbix用户:
mysql -uroot -p123456 -e "grant all on zabbix.* to ‘zabbix‘@localhost identified by ‘123456‘"
5、配置zabbix
vi /usr/local/zabbix-2.2.9/etc/zabbix_server.conf ListenPort=10051 LogFile=/tmp/zabbix_server.log DBHost=localhost DBName=zabbix DBUser=zabbix DBPassword=123456 DBSocket=/tmp/mysql.sock DBPort=3306
# mkdir /etc/zabbix # cp /usr/local/zabbix-2.2.9/etc/zabbix_server.conf /etc/zabbix/
6、启动zabbix
# /usr/local/zabbix-2.2.9/sbin/zabbix_server # /usr/local/zabbix-2.2.9/sbin/zabbix_agentd
加入开机启动
# echo -e "/usr/local/zabbix-2.2.9/sbin/zabbix_server\n/usr/local/zabbix-2.2.9/sbin/zabbix_agentd" >> /etc/rc.local
7、拷贝前端文件
# mkdir /usr/local/nginx/html/zabbix # cp -a frontends/php/* /usr/local/nginx/html/zabbix/
虚拟主机配置zabbix的安装目录,配置完成后重启nginx服务;
# vi /usr/local/nginx/conf/vhosts/default.conf server { listen 80; server_name 192.168.20.30; index index.html index.htm index.php; root /usr/local/nginx/html/zabbix; location ~ \.php$ { include fastcgi_params; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html/zabbix$fastcgi_script_name; } }
8、浏览器输入192.168.20.30 进入web页面安装zabbix
出错如下图:
PHP databases support | off | Fail | |
PHP bcmath | off | Fail | |
PHP sockets | off | Fail | |
PHP gettext | off | Warning |
PHP database support:如果使用的是MySQL数据库,则需要安装mysql库支持
编译安装PHP-FPM的时候要指定以下三个参数:--with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd
解决方法:
重新编译安装php-fpm,删除php安装目录,删除php启动脚本,删除php安装解压目录,重新解压编译安装。再次执行没问题。
其他问题的解决方法如下:
PHP bcmath:需要安装BC_math库
# cd /usr/local/src/php-5.4.37/ext/bcmath/ #/usr/local/php/bin/phpize #./configure --with-php-config=/usr/local/php/bin/php-config #make && make install 安装之后会生成一个类似于这样的信息提示: Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/ 编辑php.ini #vi /usr/local/php/etc/php.ini 在最末尾添加一行: extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/bcmath.so
PHP Sockets:需要安装php socket库
# cd /usr/local/src/php-5.4.37/ext/sockets/ #/usr/local/php/bin/phpize #./configure --with-php-config=/usr/local/php/bin/php-config #make && make install 安装之后会生成一个类似于这样的信息提示: Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/ 编辑php.ini #vi /usr/local/php/etc/php.ini 在最末尾添加一行: extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/sockets.so
编译安装gettext模块
# cd /usr/local/src/php-5.4.37/ext/gettext/ #/usr/local/php/bin/phpize #./configure --with-php-config=/usr/local/php/bin/php-config #make && make install 安装之后会生成一个类似于这样的信息提示: Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/ 编辑php.ini #vi /usr/local/php/etc/php.ini 在最末尾添加一行: extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/gettext.so
9、web浏览器安装zabbix遇到的错误
Configuration file
"/usr/local/nginx/html/zabbix/conf/zabbix.conf.php"
created: Fail
解决方法:
# vi /usr/local/nginx/html/zabbix/conf/zabbix.conf.php.example
修改对应的数据库信息:
$DB["TYPE"] = ‘MYSQL‘; $DB["SERVER"] = ‘localhost‘; $DB["PORT"] = ‘3306‘; $DB["DATABASE"] = ‘zabbix‘; $DB["USER"] = ‘zabbix‘; $DB["PASSWORD"] = ‘123456‘; $ZBX_SERVER = ‘localhost‘; $ZBX_SERVER_PORT = ‘10051‘;
# mv /usr/local/nginx/html/zabbix/conf/zabbix.conf.php.example /usr/local/nginx/html/zabbix/conf/zabbix.conf.php
使用用户名admin 密码:zabbix登录进入web页面,报错:zabbix server running no;
解决方法如下:
1、netstat -an 查看没有监听10051 zabbix_server的端口
2、查看zabbix_server.log 发现数据库down,连接mysql的sock文件找不到;
1577:20150728:144229.191 [Z3001] connection to database ‘zabbix‘ failed: [2002] Can‘t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock‘ (2)
1577:20150728:144229.191 Database is down. Reconnecting in 10 seconds.
创建一个软连接
[[email protected] ~]# mkdir /var/lib/mysql
[[email protected] ~]# ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock
[[email protected] ~]# /usr/local/zabbix-2.2.9/sbin/zabbix_server restart
3、重启后,netstat -ant 有10051端口说明服务端启动,回到浏览器显示running yes;
profile——language里面没有chinese中文语言的解决方法:
编辑文件,找到zh_CN这一行,false改为true,保存退出,重启服务,刷新网页就可以看到中文选择。
# vi /usr/local/nginx/html/zabbix/include/locales.inc.php
‘zh_CN‘ => array(‘name‘ => _(‘Chinese (zh_CN)‘), ‘display‘ => true),
# /usr/local/zabbix-2.2.9/sbin/zabbix_server restart
web页面历史记录出现乱码???的解决方法:
这与zabbix数据库所使用的字符集有关;
1、查看当前的默认字符集为latin1
mysql> show create database zabbix; +----------+-------------------------------------------------------------------+ | Database | Create Database | +----------+-------------------------------------------------------------------+ | zabbix | CREATE DATABASE `zabbix` /*!40100 DEFAULT CHARACTER SET latin1 */ | +----------+-------------------------------------------------------------------+
安装时在导入三个sql文件时,zabbix数据库中创建的表的字符集也是latin1
mysql> show variables like ‘character%‘; +--------------------------+----------------------------------+ | Variable_name | Value | +--------------------------+----------------------------------+ | character_set_client | latin1 | | character_set_connection | latin1 | | character_set_database | latin1 | | character_set_filesystem | binary | | character_set_results | latin1 | | character_set_server | latin1 | | character_set_system | utf8 | | character_sets_dir | /usr/local/mysql/share/charsets/ | +--------------------------+----------------------------------+
2、这是由于字符集不是utf8引起的,解决方法有两种:
当前的zabbix数据库中已经存在一定数据的解决方法:
1)备份zabbix数据库
#mysqldump -uroot -p123456 zabbix > zb.sql
2)修改备份文件
# sed -i ‘s/latin1/utf8/g‘ zb.sql
3)删除zabbix数据库
# mysql> drop database zabbix;
4)关闭mysql数据库,设置默认字符集,加入到my.cnf里面
vi /etc/my.cnf [mysqld] default-character-set = utf8
5)启动mysql,创建zabbix数据库,导入备份
mysql> create database zabbix; # mysql -uroot -p123456 zabbix < zb.sql
导入成功后,查看字符集变为utf8
mysql> show create database zabbix; +----------+-----------------------------------------------------------------+ | Database | Create Database | +----------+-----------------------------------------------------------------+ | zabbix | CREATE DATABASE `zabbix` /*!40100 DEFAULT CHARACTER SET utf8 */ | +----------+-----------------------------------------------------------------+ mysql> show variables like ‘character%‘; +--------------------------+----------------------------------+ | Variable_name | Value | +--------------------------+----------------------------------+ | character_set_client | latin1 | | character_set_connection | latin1 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | latin1 | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir | /usr/local/mysql/share/charsets/ | +--------------------------+----------------------------------+
刷新页面,正常显示中文。
图形中显示乱码的解决方法:
拷贝windows下的字体到linux主机,替换zabbix的默认字体
# mv simkai.ttf /usr/local/nginx/html/zabbix/fonts/DejaVuSans.ttf
zabbix客户端的编译安装:
1、关闭selinux和iptables防火墙
[[email protected] src]# sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/g‘ /etc/selinux/config [[email protected] src]# iptables -F [[email protected] src]# /etc/init.d/iptables save
2、源码安装zabbix客户端
# tar -zxvf zabbix-2.2.9.tar.gz # cd zabbix-2.2.9/ # ./configure --prefix=/usr/local/zabbix-2.2.9 --enable-agent # make && make install
3、编辑客户端配置文件,server填写服务端的ip地址,Hostname为唯一标识。
# vi /usr/local/zabbix-2.2.9/etc/zabbix_agentd.conf LogFile=/tmp/zabbix_agentd.log Server=192.168.20.30 Hostname=yong-Zabbix
4、创建运行zabbix的用户,启动客户端服务
# useradd -s /sbin/nologin -M zabbix # /usr/local/zabbix-2.2.9/sbin/zabbix_agentd
加入开机启动
# echo "/usr/local/zabbix-2.2.9/sbin/zabbix_agentd" >> /etc/rc.local
查看进程是否启动,端口是否打开。
[[email protected] zabbix-2.2.9]# ps -ef |grep zabbix zabbix 8529 1 0 00:40 ? 00:00:00 /usr/local/zabbix-2.2.9/sbin/zabbix_agentd zabbix 8530 8529 0 00:40 ? 00:00:00 /usr/local/zabbix-2.2.9/sbin/zabbix_agentd: collector [idle 1 sec] zabbix 8531 8529 0 00:40 ? 00:00:00 /usr/local/zabbix-2.2.9/sbin/zabbix_agentd: listener #1 [waiting for connection] zabbix 8532 8529 0 00:40 ? 00:00:00 /usr/local/zabbix-2.2.9/sbin/zabbix_agentd: listener #2 [waiting for connection] zabbix 8533 8529 0 00:40 ? 00:00:00 /usr/local/zabbix-2.2.9/sbin/zabbix_agentd: listener #3 [waiting for connection] zabbix 8534 8529 0 00:40 ? 00:00:00 /usr/local/zabbix-2.2.9/sbin/zabbix_agentd: active checks #1 [idle 1 sec] root 8541 1089 0 00:46 pts/0 00:00:00 grep zabbix [[email protected] zabbix-2.2.9]# netstat -antp |grep zabbix tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 8529/zabbix_agentd
源码安装zabbix服务端与客户端安装完毕,剩下的工作需要在web页面进行配置要监控的项目。