原始碼安裝和配置zabbix 3.0 LST

FishParadise發表於2018-06-13

Zabbix是什麼

Zabbix 是由Alexei Vladishev建立,目前由Zabbix SIA在持續開發和支援。

Zabbix 是一個企業級的分散式開源監控方案。

Zabbix是一款能夠監控各種網路引數以及伺服器健康性和完整性的軟體。Zabbix使用靈活的通知機制,允許使用者為幾乎任何事件配置基於郵件的告警。這樣可以快速反饋伺服器的問題。基於已儲存的資料,Zabbix提供了出色的報告和資料視覺化功能。這些功能使得Zabbix成為容量規劃的理想方案。

Zabbix支援主動輪詢和被動捕獲。Zabbix所有的報告、統計資訊和配置引數都可以通過基於Web的前端頁面進行訪問。基於Web的前端頁面可以確保您從任何方面評估您的網路狀態和伺服器的健康性。適當的配置後,Zabbix可以在IT基礎架構監控方面扮演重要的角色。對於只有少量伺服器的小型組織和擁有大量伺服器的大型公司也同樣如此。

Zabbix是免費的。Zabbix是根據GPL通用公共許可證第2版編寫和發行的。這意味著它的原始碼都是免費發行的,可供公眾任意使用。

以上是zabbix官方文件的原文介紹。

更多zabbix的特性,請參考zabbix的官網。https://www.zabbix.com/

官方文件,3.4版本的文件已經有中文版本了。https://www.zabbix.com/documentation/3.4/zh/manual/introduction/features

下面是CentOS 7 + LNMP + zabbix 3.0 LST版演示

為什麼我要選擇zabbix 3.0 LST這個比較舊的版本,而不是最新版本。因為這個是LST(Long-Term Support)版本,即長期支援版本。相對來說,支援的時間比較長,也比較穩定。現在最新的版本已經是3.4了。

0. 環境

zabbix server端: 192.168.4.243,主機名:L3;一般server端也會安裝zabbix agent,因為zabbixe server本身使用的mysql也需要被監控。
zabbix agent端(被監控的主機): 192.168.4.242,主機名:L2
zabbix server站點目錄:/data/website/zabbix/

1. 安裝mysql或mariadb

(略)

2. 安裝Nginx

下載,解壓

cd /usr/local/src
wget http://nginx.org/download/nginx-1.9.15.tar.gz 
tar -zxvf nginx-1.9.15.tar.gz 

安裝依賴,編譯安裝

yum -y install mysql-devel
cd nginx-1.9.15
./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_v2_module --with-http_stub_status_module --with-pcre

make && make install

建立啟動指令碼,並把附件指令碼放到 /etc/init.d/ 下

vim /etc/init.d/nginx
#!/bin/sh
#
# nginx - this script starts and stops the nginx daemin
#
# chkconfig: - 85 15
# description: Nginx is an HTTP(S) server, HTTP(S) reverse 
# proxy and IMAP/POP3 proxy server
# processname: nginx
# config: /usr/local/nginx/conf/nginx.conf
# pidfile: /usr/local/nginx/logs/nginx.pid
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ "$NETWORKING" = "no" ] && exit 0
nginx="/usr/local/nginx/sbin/nginx"
prog=$(basename $nginx)
NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf"
lockfile=/var/lock/subsys/nginx
start() {
[ -x $nginx ] || exit 5
[ -f $NGINX_CONF_FILE ] || exit 6
echo -n $"Starting $prog: "
daemon $nginx -c $NGINX_CONF_FILE
retval=$?
echo
[ $retval -eq 0 ] && touch $lockfile
return $retval
}
stop() {
echo -n $"Stopping $prog: "
killproc $prog -QUIT
retval=$?
echo
[ $retval -eq 0 ] && rm -f $lockfile
return $retval
}
restart() {
configtest || return $?
stop
start
}
reload() {
configtest || return $?
echo -n $"Reloading $prog: "
killproc $nginx -HUP
RETVAL=$?
echo
}
force_reload() {
restart
}
configtest() {
$nginx -t -c $NGINX_CONF_FILE
}
rh_status() {
status $prog
}
rh_status_q() {
rh_status >/dev/null 2>&1
}
case "$1" in
start)
rh_status_q && exit 0
$1
;;
stop)
rh_status_q || exit 0
$1
;;
restart|configtest)
$1
;;
reload)
rh_status_q || exit 7
$1
;;
force-reload)
force_reload
;;
status)
rh_status
;;
condrestart|try-restart)
rh_status_q || exit 0
;;
*)
echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
exit 2
esac

修改nginx,支援php

vim  /usr/local/nginx/conf/nginx.conf

找到並修改以下程式碼

location / {
            root   /data/website/zabbix;  #根據網站目錄設定
            index  index.php;
        }

location ~ .php$ {
           root           html;
           fastcgi_pass   127.0.0.1:9000;
           fastcgi_index  index.php;
           fastcgi_param  SCRIPT_FILENAME  /data/website/zabbix$fastcgi_script_name;
           include        fastcgi_params;
       }

以上的程式碼由server {}包含的,要把server及一對{}的註釋去掉,注意對應的關係。

啟動

chmod 777 /etc/init.d/nginx
chkconfig nginx on
service nginx start

3. 安裝PHP

安裝依賴包

yum -y install beecrypt beecry-devel curl curl-devel freetype 
freetype-devel fontconfig fontconfig-devel gettext gettext-devel 
ImageMagick ImageMagick-devel mingw32-iconv.noarch libmcrypt 
libmcrypt-devel libpng libpng-devel libxml2 libxml2-devel libxslt 
libxslt-devel mhash mhash-devel mcrypt zlib zlib-devel gd gd-devel 
libjpeg libjpeg-devel pcre pcre-devel openldap openldap-devel

下載,解壓

cd /usr/local/src
wget http://cn2.php.net/distributions/php-7.1.8.tar.bz2
tar -jxvf php-7.1.8.tar.bz2

編譯

cd php-7.1.8/
./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc 
--with-bz2 --with-curl --enable-ftp --enable-sockets --disable-ipv6 --with-gd 
--with-jpeg-dir=/usr/local --with-png-dir=/usr/local --with-freetype-dir=/usr/local 
--enable-gd-native-ttf --with-iconv-dir=/usr/local --enable-mbstring 
--enable-calendar --with-gettext --with-libxml-dir=/usr/local --with-zlib 
--with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --enable-dom --enable-xml 
--enable-fpm --with-libdir=lib64 --enable-bcmath --with-ldap

make && make install

配置php

cp /usr/local/src/php-7.1.8/php.ini-production  /usr/local/php/etc/php.ini
cp /usr/local/php/etc/php-fpm.conf.default   /usr/local/php/etc/php-fpm.conf
cp /usr/local/php/etc/php-fpm.d/www.conf.default   /usr/local/php/etc/php-fpm.d/www.conf

啟動

cp /usr/local/src/php-7.1.8/sapi/fpm/init.d.php-fpm   /etc/init.d/php-fpm
chmod 755 /etc/init.d/php-fpm
chkconfig php-fpm on
service php-fpm start

建立zabbix server的站點

mkdir -p /data/website/zabbix
chmod +w /data/website/zabbix
vim /data/website/zabbix/index-test.php

內容如下:

<?php phpinfo();?>

過載nginx

service nginx reload

這時,在頁面上面訪問 http://192.168.4.243/index-test.php 有PHP相關資訊說明配置已搞定。
也可以/usr/local/php/sbin/php-fpm -t –測試php執行狀態

4.安裝zabbix server

官方安裝文件:https://www.zabbix.com/documentation/3.0/manual/installation/install

下載,解壓

cd /usr/local/src
wget --no-check-certificate https://nchc.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/3.0.10/zabbix-3.0.10.tar.gz
tar -zxvf zabbix-3.0.10.tar.gz 

編譯

yum install -y net-snmp-devel curl-devel
cd zabbix-3.0.10
./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --enable-proxy --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2


make install

根據官方文件,加了--enable-agent引數,會把zabbix_get和zabbix_sender都安裝。
Command-line utilities zabbix_get and zabbix_sender are compiled if –enable-agent option is used.

所以如果在被監控主機(客戶端)上安裝agent編譯為:./configure --prefix=/usr/local/zabbix --enable-agent
客戶端安裝agent也需要建立zabbix使用者組和使用者。
由於server端也要監控,所以192.168.4.243也安裝了zabbix agent。

建立zabbix使用者組和使用者

groupadd zabbix
useradd -g zabbix zabbix

登入mysql賬戶,建立zabbix資料庫

mysql -uroot -p

官網文件建立資料庫時指定了排序規則utf8_bin,這裡不使用

mysql> create database zabbix character set utf8;
mysql> grant all privileges on zabbix.* to ‘zabbix’@‘localhost’ identified by `zabbix123`;
mysql> quit
cd /usr/local/src/zabbix-3.0.10/database/mysql/
mysql -uzabbix -pzabbix123 -Dzabbix < schema.sql
mysql -uzabbix -pzabbix123 -Dzabbix < images.sql
mysql -uzabbix -pzabbix123 -Dzabbix < data.sql

把zabbix server的前端頁面複製到zabbix站點下

cp -rp /usr/local/src/zabbix-3.0.10/frontends/php/*   /data/website/zabbix
chown -R zabbix:zabbix zabbix/

建立zabbix的data資料夾(與mysql的data檔案類似,用來存放log和pid檔案)

mkdir -p  /data/zabbix
chown -R zabbix:zabbix  /data/zabbix

配置zabbix server

vim /usr/local/zabbix/etc/zabbix_server.conf
# 配置以下內容:
LogFile=/data/zabbix/zabbix_server.log
PidFile=/data/zabbix/zabbix_server.pid
DBHost=127.0.0.1
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix123
DBPort=3306
Timeout=4
LogSlowQueries=3000

檢查

egrep -v `^#|^$`  /usr/local/zabbix/etc/zabbix_server.conf

配置zabbix agent

vim /usr/local/zabbix/etc/zabbix_agentd.conf
# 配置以下內容:
PidFile=/data/zabbix/zabbix_agentd.pid
LogFile=/data/zabbix/zabbix_agentd.log
Server=127.0.0.1
ServerActive=127.0.0.1
Hostname=127.0.0.1
Timeout=10

檢查

egrep -v `^#|^$`  /usr/local/zabbix/etc/zabbix_agentd.conf

複製啟動指令碼到/etc/init.d/下

cp /usr/local/src/zabbix-3.0.10/misc/init.d/tru64/*    /etc/init.d/

修改啟動指令碼

vim /etc/init.d/zabbix_server

原始碼安裝需要在 #!/bin/sh 後加入如下兩行註釋,注意要行前要加“#”,否則chkconfig會顯示不支援

# chkconfig: - 95 95
# description: Zabbix Server
DAEMON=/usr/local/zabbix/sbin/zabbix_server 
vim /etc/init.d/zabbix_agentd

原始碼安裝需要在 #!/bin/sh 後加入如下兩行註釋,注意要行前要加“#”,否則chkconfig會顯示不支援

# chkconfig: - 86 14
# Description: Zabbix agent
DAEMON=/usr/local/zabbix/sbin/zabbix_agentd

修改為可執行

chmod a+x /etc/init.d/zabbix_server
chmod a+x /etc/init.d/zabbix_agentd 

啟動,server預設埠10051;agent預設埠10050

service zabbix_server start
service zabbix_agentd  start

檢查
ps aux | grep zabbix檢視有沒有程式。
ls /data/zabbix/檢視log和pid檔案有沒有生成。
vim /data/zabbix/zabbix_server.pid程式號是否一致。
檢查 tail -f zabbix_server.log 啟動日誌有沒有正常啟動或報錯。
同理,檢查agent。

加入開機自啟動

chkconfig --level 2345 zabbix_server on
chkconfig --level 2345 zabbix_agentd on 

5. 配置zabbix 站點

修改php.ini的引數

vim /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
always_populate_raw_post_data = -1
date.timezone = Asia/Shanghai

檢查有沒有問題(命令不能轉行)

egrep `max_execution_time|memory_limit|post_max_size|upload_max_filesize|max_input_timealways_populate_raw_post_data|Asia/Shanghai` /usr/local/php/etc/php.ini

重啟php服務

service php-fpm restart

zabbix 站點頁面設定
開啟http:/192.168.4.243可看到zabbix web前端的一些驗證,如果引數配置有問題,重複第5步修改。最後會一步會生成一個zabbix.conf.php檔案, 自動放在zabbix server站點/data/zabbix/conf/目錄下。如果提示無許可權操作,可下載該檔案把指定目錄下,也可手動建立該檔案。

6. 登入zabbix server站點

預設賬號是admin,密碼是zabbix。注意:在建立資料庫時,按照官方的文件是加了collate utf8_bin,會區分大小寫。官方文件:https://www.zabbix.com/documentation/3.0/manual/appendix/install/db_scripts

7. 在agent端(192.168.4.242)

安裝zabbix agent
在被監控的主機上安裝zabbix agent,可以用rpm安裝,也可以使用原始碼安裝。如果server端是原始碼安裝的,建議agent端也用編譯安裝。

scp /usr/local/src/zabbix-3.0.10.tar.gz  root@192.168.4.242:/usr/local/src/
yum install -y net-snmp-devel curl-devel
cd zabbix-3.0.10
./configure --prefix=/usr/local/zabbix  --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2

make install

配置zabbix-aget

mkdir -p  /data/zabbix
chown -R zabbix:zabbix /data/zabbix
# Server指允許這個IP來取資料,ServerActive是指主動提交資料的IP。Hostname為被監控的主機名。
vim /usr/local/zabbix/etc/zabbix_agentd.conf
PidFile=/data/zabbix/zabbix/zabbix_agentd.pid
LogFile=/data/zabbix/zabbix/zabbix_agentd.log
LogFileSize=0
Server=192.168.2.243
ServerActive=192.168.4.243:10051
Hostname=192.168.2.242
Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/

檢查

egrep -v `^#|^$`  /usr/local/zabbix/etc/zabbix_agentd.conf

建立zabbix使用者組和使用者

groupadd zabbix
useradd -g zabbix zabbix

啟動,預設埠為10050
複製啟動指令碼到/etc/init.d/下

cp /usr/local/src/zabbix-3.0.10/misc/init.d/tru64/zabbix_agentd    /etc/init.d/

修改啟動指令碼

vim /etc/init.d/zabbix_agentd

原始碼安裝需要在 #!/bin/sh 後加入如下兩行註釋,注意要行前要加“#”,否則chkconfig會顯示不支援

# chkconfig: - 86 14
# Description: Zabbix agent
DAEMON=/usr/local/zabbix/sbin/zabbix_agentd

修改為可執行

chmod a+x /etc/init.d/zabbix_agentd 

加入開機自啟動

chkconfig --level 2345 zabbix_agentd on
編譯安裝加入到系統開機自動執行的設定
Nginx開機自動執行實現方法
http://professor.blog.51cto.com/996189/1579791/
Zabbix agentd和 Zabbix Server 開機自動執行實現方法
http://os.51cto.com/art/201006/203193.htm
  1. 複製 zabbix 源程式的啟動指令碼到 /etc/init.d 目錄下
cp /usr/local/src/zabbix-3.xxxx/misc/init.d/tru64/zabbix_server   /etc/init.d/
  1. 修改 /etc/init.d/zabbix_service,修改檔案路徑為make install路徑。
SERVICE="Zabbix server"
DAEMON=/usr/local/zabbix/sbin/zabbix_server
PIDFILE=/var/run/zabbix_server.pid
  1. 增加可執行的許可權
chmod a+x /etc/init.d/zabbix_server 
  1. 修改啟動指令碼使其支援 redhat 的 chkconfig,分別在兩個指令碼的#!/bin/sh 後加入如下兩行註釋,注意要行前要加“#”
vim /etc/init.d/zabbix_server 
# chkconfig: - 95 95
# description: Zabbix Server

如果是agent

vim /etc/init.d/zabbix_agentd
# chkconfig: - 86 14
# Description: Zabbix agent
  1. 使用 chkconfig 將其加入 init 的啟動服務
chkconfig --level 2345 zabbix_server on
  1. 檢查
chkconfig --list | grep zabbix
  1. 重啟系統可以驗證是否自啟動成功
reboot 後 ps aux | grep zabbix

擴充套件

原始碼安裝zabbix server,通過vim /etc/init.d/zabbix_server檢視pid檔案預設是放在/tmp/zabbix_server.pid的。這個啟動/關閉zabbix server的指令碼是通過pid檔案去找到程式號,然後直接kill程式的。如果pid檔案不存在、目錄不正常或啟動使用者對pid檔案的操作許可權不足,會造成service zabbix_server stop/stop/restart命令無法啟動/關閉zabbix server。

生成log和pid檔案由/usr/local/zabbix/etc/zabbix_server.conf檔案指定,而啟動/關閉去讀取 pid檔案,則由啟動/關閉指令碼指定。所以如果要修改log和pid檔案的預設/tmp下的路徑/data/zabbix,需要修改.conf和啟動/關閉指令碼檔案,顯式指定pid的路徑,並且保證寫入的路徑/data/zabbix是有許可權的。最好是把/data/zabbix資料夾設定為系統使用者zabbix所有。參考mysql的配置也是這樣的,會把/data/mysql資料夾設定為系統使用者mysql所有。

log和pid檔案放到預設的/tmp資料夾下,雖然說許可權沒有問題,而且大部分情況下也是正常使用的。但由於/tmp是“公共”資料夾,其他程式或人員有可能把這裡的檔案“誤”刪了,會導致一些意外的問題。指定其他資料夾,注意許可權問題,必要時,可以切換到執行使用者(執行使用者一般不能登入Linux,另外再設定可登入)去測試許可權是否足夠。

相關文章