以前實驗過yum安裝LAMP,yum安裝zabbix,源碼安裝仍是頭一次,下面分享一下安裝的具體過程和安裝過程當中遇到的各類錯誤及解決方法。php
zabbix官網下載地址:http://www.zabbix.com/download.phphtml
選擇Zabbix Sources 下載2.2.9版本;前端
安裝環境:linux centos6.6 32位版本 php5.4.3七、nginx1.6.二、mysql5.1.40mysql
一、編譯安裝zabbix2.2.9linux
# 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:
nginx
configure: error: Invalid Net-SNMP directory - unable to find net-snmp-configweb
編譯安裝zabbix時,配置時報以上錯,致使檢測系統環境不成功。提示unableto find net-snmp-config,說明缺乏相關的依賴性。
sql
這是由於,在linux中,大多數軟件都是開源的,而且能夠自由使用。所以在開發時能夠用到其餘的軟件包時咱們直接就拿來了,不用在花功夫去從新編寫,這就形成了所謂的依賴性。數據庫
解決辦法一:windows
找出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
二、建立用戶
爲了安全考慮zabbix使用普通用戶運行,須要建立一個用戶運行它。不建立用戶的話沒法運行啓動進程。
# groupadd zabbix # useradd -g zabbix zabbix
三、修改配置文件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
四、建立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/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用戶:
mysql -uroot -p123456 -e "grant all on zabbix.* to 'zabbix'@localhost identified by '123456'"
五、配置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/
六、啓動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
七、拷貝前端文件
# 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; } }
八、瀏覽器輸入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
九、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;
解決方法以下:
一、netstat -an 查看沒有監聽10051 zabbix_server的端口
二、查看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.
建立一個軟鏈接
[root@localhost ~]# mkdir /var/lib/mysql
[root@localhost ~]# ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock
[root@localhost ~]# /usr/local/zabbix-2.2.9/sbin/zabbix_server restart
三、重啓後,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數據庫所使用的字符集有關;
一、查看當前的默認字符集爲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/ | +--------------------------+----------------------------------+
二、這是因爲字符集不是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客戶端的編譯安裝:
一、關閉selinux和iptables防火牆
[root@localhost src]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config [root@localhost src]# iptables -F [root@localhost src]# /etc/init.d/iptables save
二、源碼安裝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
三、編輯客戶端配置文件,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
四、建立運行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
查看進程是否啓動,端口是否打開。
[root@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 [root@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
源碼安裝zabbix服務端與客戶端安裝完畢,剩下的工做須要在web頁面進行配置要監控的項目。