zabbix源碼安裝過程出現的錯誤

原文地址:http://www.iyunv.com/thread-92070-1-2.html


之前實驗過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

1
2
3
# 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這個選項就不會報錯。


編譯錯誤2configure: error: Curl library not found
yum install -y curl curl-devel  安裝curl包即可,安裝完成後重新編譯。

1
# make && make install



2、創建用戶
爲了安全考慮zabbix使用普通用戶運行,需要創建一個用戶運行它。不創建用戶的話無法運行啓動進程。

1
2
# groupadd zabbix
# useradd -g zabbix zabbix



3、修改配置文件php.ini,路徑爲:/usr/local/php/etc/php.ini

1
2
3
4
5
6
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用戶;

1
2
3
4
5
6
7
# 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/p_w_picpaths.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用戶:

1
mysql -uroot -p123456 -e "grant all on zabbix.* to 'zabbix'@localhost identified by '123456'"





5、配置zabbix

1
2
3
4
5
6
7
8
9
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



1
2
# mkdir /etc/zabbix
# cp /usr/local/zabbix-2.2.9/etc/zabbix_server.conf /etc/zabbix/



6、啓動zabbix

1
2
# /usr/local/zabbix-2.2.9/sbin/zabbix_server 
# /usr/local/zabbix-2.2.9/sbin/zabbix_agentd



加入開機啓動

1
# 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、拷貝前端文件

1
2
# mkdir /usr/local/nginx/html/zabbix
# cp -a frontends/php/* /usr/local/nginx/html/zabbix/





虛擬主機配置zabbix的安裝目錄,配置完成後重啓nginx服務;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 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庫

1
2
3
4
5
6
7
8
9
10
# 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庫  

1
2
3
4
5
6
7
8
9
10
# 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模塊

1
2
3
4
5
6
7
8
9
10
# 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



php安裝擴展錯誤:Cannot find config.m4. Make sure that you run /usr/local/bin/phpize in the top level sourc


只需到php的安裝目錄下如:cd /usr/local/php/php-7.0.4/ext/openssl 執行命令:  cp ./config0.m4 ./config.m4 即可解決




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 
修改對應的數據庫信息:

1
2
3
4
5
6
7
8
$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';



1
# 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.
創建一個軟連接
[iyunv@localhost ~]# mkdir /var/lib/mysql
[iyunv@localhost ~]# ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock
[iyunv@localhost ~]# /usr/local/zabbix-2.2.9/sbin/zabbix_server restart
3、重啓後,netstat -ant 有10051端口說明服務端啓動,回到瀏覽器顯示running yes;

profile——language裏面沒有chinese中文語言的解決方法:
091711oaxta9sslsrbv6bf.jpg 091711tu1n1fa3uso7zyyh.jpg 
編輯文件,找到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頁面歷史記錄出現亂碼???的解決方法:
091712p0ack2ppb0hh6ds6.jpg 
091712ayvm11vy6yh9fzda.jpg 這與zabbix數據庫所使用的字符集有關;
1、查看當前的默認字符集爲latin1

1
2
3
4
5
6
mysql> show create database zabbix;
+----------+-------------------------------------------------------------------+
| Database | Create Database                                                   |
+----------+-------------------------------------------------------------------+
| zabbix   | CREATE DATABASE `zabbix` /*!40100 DEFAULT CHARACTER SET latin1 */ |
+----------+-------------------------------------------------------------------+



安裝時在導入三個sql文件時,zabbix數據庫中創建的表的字符集也是latin1

1
2
3
4
5
6
7
8
9
10
11
12
13
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數據庫

1
#mysqldump -uroot -p123456 zabbix > zb.sql



2)修改備份文件

1
# sed -i 's/latin1/utf8/g' zb.sql



3)刪除zabbix數據庫

1
# mysql> drop database zabbix;



4)關閉mysql數據庫,設置默認字符集,加入到my.cnf裏面

1
2
3
vi /etc/my.cnf 
[mysqld]
default-character-set = utf8



5)啓動mysql,創建zabbix數據庫,導入備份

1
2
mysql> create database zabbix;
# mysql -uroot -p123456 zabbix < zb.sql



導入成功後,查看字符集變爲utf8

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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/ |
+--------------------------+----------------------------------+



刷新頁面,正常顯示中文。 091713e4y0c0i5oilod8vl.jpg 
091713cfcueun9gru1t3zu.jpg 

圖形中顯示亂碼的解決方法:
拷貝windows下的字體到linux主機,替換zabbix的默認字體

1
# mv simkai.ttf /usr/local/nginx/html/zabbix/fonts/DejaVuSans.ttf




zabbix客戶端的編譯安裝:
1、關閉selinux和iptables防火牆

1
2
3
[iyunv@localhost src]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
[iyunv@localhost src]# iptables -F 
[iyunv@localhost src]# /etc/init.d/iptables save



2、源碼安裝zabbix客戶端

1
2
3
4
# 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爲唯一標識。

1
2
3
4
# 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的用戶,啓動客戶端服務

1
2
# useradd -s /sbin/nologin -M zabbix
# /usr/local/zabbix-2.2.9/sbin/zabbix_agentd



加入開機啓動

1
# echo "/usr/local/zabbix-2.2.9/sbin/zabbix_agentd" >> /etc/rc.local




查看進程是否啓動,端口是否打開。

1
2
3
4
5
6
7
8
9
10
11
[iyunv@localhost 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

[iyunv@localhost zabbix-2.2.9]# netstat -antp |grep zabbix
tcp        0      0 0.0.0.0:10050               0.0.0.0:*                   LISTEN      8529/zabbix_agentd


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章