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
- 複製 zabbix 源程式的啟動指令碼到 /etc/init.d 目錄下
cp /usr/local/src/zabbix-3.xxxx/misc/init.d/tru64/zabbix_server /etc/init.d/
- 修改 /etc/init.d/zabbix_service,修改檔案路徑為make install路徑。
SERVICE="Zabbix server"
DAEMON=/usr/local/zabbix/sbin/zabbix_server
PIDFILE=/var/run/zabbix_server.pid
- 增加可執行的許可權
chmod a+x /etc/init.d/zabbix_server
- 修改啟動指令碼使其支援 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
- 使用 chkconfig 將其加入 init 的啟動服務
chkconfig --level 2345 zabbix_server on
- 檢查
chkconfig --list | grep zabbix
- 重啟系統可以驗證是否自啟動成功
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,另外再設定可登入)去測試許可權是否足夠。