Zabbix 安裝
本文是參考 《Zabbix 教程從入門到精通v1.0》 所作的實驗色洞。
大綱:
一戏锹、LNMP 環(huán)境配置
二、zabbix 服務(wù)端安裝
三火诸、zabbix 客戶端安裝配置
四锦针、zabbix 管理網(wǎng)站配置
系統(tǒng)環(huán)境 CentOS 6.8
使用的軟件版本:
- MySQL 5.6
- Nginx 1.10.1
- PHP 5.6
一、LNMP 環(huán)境配置
1.1 Nginx 安裝
1.2 PHP 安裝及 Nginx 配置
1.3 MySQL 安裝
1.1 Nginx 安裝
環(huán)境準備:
yum -y groupinstall "Development Tools" "Server Platform Development"
yum -y install openssl-devel pcre-devel
groupadd -r nginx
useradd -r -g nginx nginx
nginx 下載:
wget http://nginx.org/download/nginx-1.10.1.tar.gz
解壓安裝:
[root@vm1 src]# tar -xf nginx-1.10.1.tar.gz
[root@vm1 src]# cd nginx-1.10.1
[root@vm1 nginx-1.10.1]# ./configure --prefix=/etc/nginx \
--sbin-path=/usr/sbin/nginx \
--conf-path=/etc/nginx/nginx.conf \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--pid-path=/var/run/nginx.pid \
--lock-path=/var/run/nginx.lock \
--user=nginx \
--group=nginx \
--with-http_ssl_module \
--with-http_stub_status_module \
[root@vm1 nginx-1.10.1]# make && make install
測試啟動一下:
[root@vm1 nginx-1.10.1]# nginx
[root@vm1 nginx-1.10.1]# ss -nlt
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:80 *:*
LISTEN 0 128 :::22 :::*
LISTEN 0 128 *:22 *:*
LISTEN 0 100 ::1:25 :::*
LISTEN 0 100 127.0.0.1:25 *:*
測試訪問:
[root@vm1 nginx-1.10.1]# curl -I 127.0.0.1
HTTP/1.1 200 OK
Server: nginx/1.10.1
Date: Wed, 17 Aug 2016 03:23:16 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Wed, 17 Aug 2016 02:53:16 GMT
Connection: keep-alive
ETag: "57b3d19c-264"
Accept-Ranges: bytes
然后我們準備一個 /etc/init.d/nginx 腳本置蜀,方便調(diào)用:
[root@vm1 nginx]# cat /etc/init.d/nginx
#!/bin/sh
#
# nginx Startup script for nginx
#
# chkconfig: - 85 15
# processname: nginx
# config: /etc/nginx/nginx.conf
# config: /etc/sysconfig/nginx
# pidfile: /var/run/nginx.pid
# description: nginx is an HTTP and reverse proxy server
#
### BEGIN INIT INFO
# Provides: nginx
# Required-Start: $local_fs $remote_fs $network
# Required-Stop: $local_fs $remote_fs $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: start and stop nginx
### END INIT INFO
# Source function library.
. /etc/rc.d/init.d/functions
if [ -L $0 ]; then
initscript=`/bin/readlink -f $0`
else
initscript=$0
fi
sysconfig=`/bin/basename $initscript`
if [ -f /etc/sysconfig/$sysconfig ]; then
. /etc/sysconfig/$sysconfig
fi
nginx=${NGINX-/usr/sbin/nginx}
prog=`/bin/basename $nginx`
conffile=${CONFFILE-/etc/nginx/nginx.conf}
lockfile=${LOCKFILE-/var/lock/subsys/nginx}
pidfile=${PIDFILE-/var/run/nginx.pid}
SLEEPMSEC=${SLEEPMSEC-200000}
UPGRADEWAITLOOPS=${UPGRADEWAITLOOPS-5}
RETVAL=0
start() {
echo -n $"Starting $prog: "
daemon --pidfile=${pidfile} ${nginx} -c ${conffile}
RETVAL=$?
echo
[ $RETVAL = 0 ] && touch ${lockfile}
return $RETVAL
}
stop() {
echo -n $"Stopping $prog: "
killproc -p ${pidfile} ${prog}
RETVAL=$?
echo
[ $RETVAL = 0 ] && rm -f ${lockfile} ${pidfile}
}
reload() {
echo -n $"Reloading $prog: "
killproc -p ${pidfile} ${prog} -HUP
RETVAL=$?
echo
}
upgrade() {
oldbinpidfile=${pidfile}.oldbin
configtest -q || return
echo -n $"Starting new master $prog: "
killproc -p ${pidfile} ${prog} -USR2
echo
for i in `/usr/bin/seq $UPGRADEWAITLOOPS`; do
/bin/usleep $SLEEPMSEC
if [ -f ${oldbinpidfile} -a -f ${pidfile} ]; then
echo -n $"Graceful shutdown of old $prog: "
killproc -p ${oldbinpidfile} ${prog} -QUIT
RETVAL=$?
echo
return
fi
done
echo $"Upgrade failed!"
RETVAL=1
}
configtest() {
if [ "$#" -ne 0 ] ; then
case "$1" in
-q)
FLAG=$1
;;
*)
;;
esac
shift
fi
${nginx} -t -c ${conffile} $FLAG
RETVAL=$?
return $RETVAL
}
rh_status() {
status -p ${pidfile} -b ${nginx} ${nginx}
}
# See how we were called.
case "$1" in
start)
rh_status >/dev/null 2>&1 && exit 0
start
;;
stop)
stop
;;
status)
rh_status
RETVAL=$?
;;
restart)
configtest -q || exit $RETVAL
stop
start
;;
upgrade)
rh_status >/dev/null 2>&1 || exit 0
upgrade
;;
condrestart|try-restart)
if rh_status >/dev/null 2>&1; then
stop
start
fi
;;
force-reload|reload)
reload
;;
configtest)
configtest
;;
*)
echo $"Usage: $prog {start|stop|restart|condrestart|try-restart|force-reload|upgrade|reload|status|help|configtest}"
RETVAL=2
esac
exit $RETVAL
而后為此腳本賦予執(zhí)行權(quán)限:
# chmod +x /etc/rc.d/init.d/nginx
1.2 PHP 安裝及Nginx 配置
1.sohu鏡像下載
wget http://mirrors.sohu.com/php/php-5.6.10.tar.gz
2.安裝依賴包
確保安裝之前有安裝gd,png,curl,xml等等lib開發(fā)庫奈搜。如果不確定,執(zhí)行以下命令:
yum install gcc make gd-devel libjpeg-devel libpng-devel libxml2-devel bzip2-devel libcurl-devel -y
3.編譯安裝PHP 5.6.10
PHP 安裝參數(shù):對于 zabbix盯荤,下面的模塊要特別留意加上:
extend | parameter |
---|---|
bcmath | --enable-bcmath |
mbstring | --enable-mbstring |
sockets | --enable-sockets |
gd | --with-gd |
libxml | --with-libxml=/usr/local |
xmlwriter | 同上 |
xmlreader | 同上 |
ctype | 默認支持 |
session | 默認支持 |
gettext | 默認支持 |
以下參數(shù)支持,ftp,圖片函數(shù),pdo等支持,因為使用了php自帶的mysqlnd馋吗,所以不需要額外安裝mysql的lib庫了.如果你是64位系統(tǒng),參數(shù)后面加上--with-libdir=lib64秋秤,如果不是可以跳過宏粤。
可參考以下參數(shù):
./configure --prefix=/usr/local/php-5.6.10 \
--with-config-file-path=/usr/local/php-5.6.10/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 --with-mysql=mysqlnd \
--enable-dom --enable-xml --enable-fpm --with-libdir=lib64 --enable-bcmath
make && make install
4.配置php
為php提供配置文件:
[root@zabbix php-5.6.10]# cp php.ini-production /usr/local/php-5.6.10/etc/php.ini
打開 php.ini 配置文件,修改如下參數(shù)為如下值,否則 zabbix 安裝不了。
max_execution_time = 300
memory_limit = 128M
post_max_size = 16M
upload_max_filesize = 2M
max_input_time = 300
date.timezone PRC
為php-fpm提供配置文件:
[root@zabbix php-5.6.10]# cp /usr/local/php-5.6.10/etc/php-fpm.conf.default /usr/local/php-5.6.10/etc/php-fpm.conf
為php-fpm提供SysV init腳本
[root@zabbix php-5.6.10]# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
[root@zabbix php-5.6.10]# chmod +x /etc/init.d/php-fpm
編輯php-fpm的配置文件:
# vi /usr/local/php-5.6.10/etc/php-fpm.conf
配置fpm的相關(guān)選項為你所需要的值灼卢,并啟用pid文件(如下最后一行):
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 2
pm.max_spare_servers = 8
pid = /usr/local/php/var/run/php-fpm.pid
接下來就可以啟動php-fpm了:
# service php-fpm start
使用如下命令來驗正(如果此命令輸出有中幾個php-fpm進程就說明啟動成功了):
# ps aux | grep php-fpm
默認情況下绍哎,fpm監(jiān)聽在127.0.0.1的9000端口,也可以使用如下命令驗正其是否已經(jīng)監(jiān)聽在相應(yīng)的套接字鞋真。
# netstat -tnlp | grep php-fpm
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 689/php-fpm
1.3 MySQL 安裝
簡單起見崇堰,這里直接安裝 mysql-5.1。
yum install mysql-server mysql-client
service mysqld start
然后可使用 mysql_secure_installation 修改root密碼為 guli123:
mysql> SELECT User,Host,Password FROM mysql.user;
+--------+-------------+-------------------------------------------+
| User | Host | Password |
+--------+-------------+-------------------------------------------+
| root | localhost | *F0BC5A026769654BD0A7EFA74872CA595563919A |
| root | 127.0.0.1 | *F0BC5A026769654BD0A7EFA74872CA595563919A |
+--------+-------------+-------------------------------------------+
5 rows in set (0.00 sec)
遠程測試:
[root@vm_mac ~]# mysql -u root -h 192.168.0.183 -p
Enter password: # 輸入密碼
...
mysql>
測試成功涩咖。
二海诲、zabbix 服務(wù)端安裝
zabbix 進程構(gòu)成
默認情況下 zabbix 包含 5 個程序:zabbix_agentd、zabbix_get檩互、zabbix_proxy特幔、zabbix_s ender、zabbix_server,另外一個 zabbix_java_gateway 是可選,這個需要另外安裝闸昨。下面來分別介紹下他們各自的作用敬辣。
zabbix_agentd
客戶端守護進程,此進程收集客戶端數(shù)據(jù),例如 cpu 負載雪标、內(nèi)存、硬盤使用情況等
zabbix_get
zabbix 工具,單獨使用的命令,通常在 server 或者 proxy 端執(zhí)行獲取遠程客戶端信息的命令溉跃。通常用戶排
錯村刨。例如在 server 端獲取不到客戶端的內(nèi)存數(shù)據(jù),我們可以使用 zabbix_get 獲取客戶端的內(nèi)容的方式來做故障 排查。
zabbix_sender
zabbix 工具,用于發(fā)送數(shù)據(jù)給 server 或者 proxy,通常用于耗時比較長的檢查撰茎。很多檢查非常耗時間,導(dǎo)致
zabbix 超時嵌牺。于是我們在腳本執(zhí)行完畢之后,使用 sender 主動提交數(shù)據(jù)。
zabbix_server
zabbix 服務(wù)端守護進程龄糊。zabbix_agentd逆粹、zabbix_get、zabbix_sender炫惩、zabbix_proxy僻弹、zabbix_jav a_gateway 的數(shù)據(jù)最終都是提交到 server
備注:當(dāng)然不是數(shù)據(jù)都是主動提交給 zabbix_server,也有的是 server 主動去取數(shù)據(jù)。
zabbix_proxy
zabbix 代理守護進程他嚷。功能類似 server,唯一不同的是它只是一個中轉(zhuǎn)站,它需要把收集到的數(shù)據(jù)提交/被
提交到 server 里蹋绽。為什么要用代理?代理是做什么的?賣個關(guān)子,請繼續(xù)關(guān)注運維生存時間 zabbix 教程系列。
zabbix_java_gateway
zabbix2.0 之后引入的一個功能筋蓖。顧名思義:Java 網(wǎng)關(guān),類似 agentd,但是只用于 Java 方面卸耘。需要特別注 意的是,它只能主動去獲取數(shù)據(jù),而不能被動獲取數(shù)據(jù)。它的數(shù)據(jù)最終會給到 server 或者 proxy粘咖。
2.1 下載安裝 zabbix
所有版本下載地址:http://www.zabbix.com/download.php
[root@zabbix ~]# wget https://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/2.2.14/zabbix-2.2.14.tar.gz/download
# tar -xzvf zabbix-2.2.14.tar.gz
# cd zabbix-2.2.14
# ./configure --prefix=/usr/local/zabbix-2.2.14/ --enable-server \
--enable-agent --with-mysql --with-net-snmp --with-libcurl --with-libxml2
# make
# make install
注蚣抗,這里沒有指定配置文件的位置,默認是 PREFIX/etc瓮下,在這里即是 /usr/local/zabbix-2.2.14/etc/zabbix_server.conf
翰铡,如果要指定其他位置,使用 --sysconfdir=DIR
進行指定讽坏。
在 zabbix server 一般充當(dāng)兩個角色:server两蟀、angent,所以上面的配置參數(shù)也同時加上了--enable-agent。 備注:請安裝好 MySQL,snmp,curl 開發(fā)庫震缭。
yum install mysql-devel net-snmp-devel libcurl-devel
2.2 創(chuàng)建用戶
為了安全考慮 zabbix 只使用普通用戶運行,假如你當(dāng)前用戶叫 ttlsa,那么你運行他,他便使用 ttlsa 身份運行。 但是如果你在 root 環(huán)境下運行 zabbix,那么 zabbix 將會主動使用 zabbix 用戶來運行战虏。但是如果你的系統(tǒng)沒有 名叫 zabbix 的用戶,你需要創(chuàng)建一個用戶,如下:
# groupadd zabbix
# useradd -g zabbix zabbix
2.3 初始化數(shù)據(jù)庫
zabbix server 與 proxy 需要數(shù)據(jù)庫,angent 不需要拣宰。尤其要注意的是 proxy 只需要導(dǎo)入一個 sql 文件,而 server 一共要導(dǎo)入 3 個 sql 文件。我當(dāng)時在搭建 proxy 的時候?qū)肓?3 個 sql,導(dǎo)致出現(xiàn)報錯烦感。后來才發(fā)現(xiàn) proxy 只需要導(dǎo)入一個表結(jié)構(gòu)即可巡社。
我假想你安裝好了 MySQL,用戶名為 root,密碼為 guli123
# mysql -uroot -pguli123
mysql> CREATE DATABASE zabbix DEFAULT CHARSET utf8;
# mysql -uroot -pguli123 -D zabbix < /root/zabbix-2.2.14/database/mysql/schema.sql
# mysql -uroot -pguli123
mysql> use zabbix
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> show tables;
+-----------------------+
| Tables_in_zabbix |
+-----------------------+
| acknowledges |
| actions |
| alerts |
...
| valuemaps |
+-----------------------+
108 rows in set (0.00 sec)
備注:創(chuàng)建數(shù)據(jù)庫請別忘記加 default charset utf8,有可能會導(dǎo)致你出現(xiàn)中文亂碼問題,具體問題請查看《zabbix 中文亂碼解決方法》
如果你僅僅是初始化 proxy 的數(shù)據(jù)庫,那么夠了。如果初始化 server,那么接著導(dǎo)入下面兩個 sql
# mysql -uroot -pguli123 -D zabbix < /root/zabbix-2.2.14/database/mysql/images.sql
# mysql -uroot -pguli123 -D zabbix < /root/zabbix-2.2.14/database/mysql/data.sql
為 zabbix 創(chuàng)建一個專用的賬戶:
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';
其他數(shù)據(jù)庫(db2\sqlite\oracle)數(shù)據(jù)庫初始化方法參考:<https://www.zabbix.com/documentation/2.2/ manual/appendix/install/db_scripts>
2.4 配置 zabbix
配置 zabbix_server 配置文件:
# vi /usr/local/zabbix-2.2.14/etc/zabbix_server.conf
DBHost=localhost
DBUser=zabbix
DBPassword=zabbix
DBPort=3306
注手趣,zabbix 日志文件位置也在該文件中配置晌该,默認為 LogFile=/tmp/zabbix_server.log
肥荔。啟動出錯時可查看該日志。
啟動 zabbix server:
# /usr/local/zabbix-2.2.14/sbin/zabbix_server
默認端口 10051
[root@zabbix etc]# ss -nlt
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:10051 *:*
三朝群、zabbix 客戶端安裝配置
3.1 下載安裝客戶端
所有版本下載地址:http://www.zabbix.com/download.php,可以直接下載已經(jīng)編譯好的二進制文件,或者
也可以源碼安裝燕耿。
剛才安裝 zabbix 服務(wù)端的時候已經(jīng)使用 --enable-agent
選項同時安裝了客戶端,這里就不用再安裝了姜胖。
只編譯安裝 zabbix 客戶端:
./configure --enable-agent
在上面的下載頁中官方也提供編譯好的 zabbix agents誉帅,解壓后可以直接使用,可以選擇對應(yīng)平臺的右莱、對應(yīng)版本直接下載蚜锨。
比如下載 2.2.14 版,Linux 2.6 amd64 的版本:
wget http://www.zabbix.com/downloads/2.2.14/zabbix_agents_2.2.14.linux2_6.amd64.tar.gz
解壓:
# mkdir /usr/local/zabbix_agents
# tar -xf zabbix_agents_2.2.14.linux2_6.amd64.tar.gz -C /usr/local/zabbix_agents/
# ls /usr/local/zabbix_agents
bin conf sbin
這種方式安裝的 zabbix agents 要求把配置文件 zabbix_agentd.conf 放到 /usr/local/etc 目錄下慢蜓。
3.2 客戶端配置
客戶端配置文件為:/usr/local/zabbix-2.2.14/etc/zabbix_agentd.conf
# vi /usr/local/zabbix-2.2.14/etc/zabbix_agentd.conf
Server=127.0.0.1
ServerActive=127.0.0.1
Hostname=Zabbix server
其中 Server 和 ServerActive 都指定 zabbixserver 的 IP 地址,不同的是,前者是被動后者是主動亚再。也就是說 S erver 這個配置是用來允許 127.0.0.1 這個 ip 來我這取數(shù)據(jù)。而 serverActive 的 127.0.0.1 的意思是,客戶端 主動提交數(shù)據(jù)給他晨抡。明白了嗎?為什么要分主動和被動?后續(xù)再來討論這個問題!
其他主機安裝客戶端記得添加 zabbix 用戶氛悬。
3.3 啟動客戶端
[root@zabbix etc]# /usr/local/zabbix-2.2.14/sbin/zabbix_agentd
默認端口 10050
[root@zabbix etc]# ss -nlt
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:10050 *:*
四、zabbix 管理網(wǎng)站配置
4.1 拷貝前端文件
[root@zabbix etc]# mkdir -pv /data/logs/nginx
mkdir: created directory `/data'
mkdir: created directory `/data/logs'
mkdir: created directory `/data/logs/nginx'
[root@zabbix etc]# mkdir -pv /data/site/monitor.ttlsa.com/zabbix
mkdir: created directory `/data/site'
mkdir: created directory `/data/site/monitor.ttlsa.com'
mkdir: created directory `/data/site/monitor.ttlsa.com/zabbix'
[root@zabbix etc]# cp -r /root/zabbix-2.2.14/frontends/php/* /data/site/monitor.ttlsa.com/zabbix/
[root@zabbix etc]# chown -R zabbix.zabbix /data/site/monitor.ttlsa.com/zabbix/
4.2 配置虛擬主機
[root@zabbix zabbix]# cat /etc/nginx/nginx.conf
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
access_log /data/logs/nginx/monitor.ttlsa.com.access.log main;
index index.html index.php index.html;
root /data/site/monitor.ttlsa.com;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ ^(.+.php)(.*)$ {
fastcgi_split_path_info ^(.+.php)(.*)$;
include fastcgi.conf;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}
}
啟動 nginx:
/etc/init.d/nginx start
4.3 在線配置 zabbix
訪問瀏覽器測試:
http://192.168.0.183/zabbix
如下是 zabbix 2.2 的安裝界面,包括歡迎界面一共 8 步.
4.3.1 歡迎界面
4.3.2 php 需求檢查
4.3.3 MySQL 配置
4.3.4 zabbix 服務(wù)端詳細信息
4.3.5 zabbix 安裝前信息列表
4.3.6 安裝完成
如果失敗了,一般情況是 php 對 zabbix 沒有寫權(quán)限
手動下載配置文件凄诞,放到 /data/site/monitor.ttlsa.com/zabbix/conf/
目錄下圆雁,Retry 一下
4.3.7 登陸 zabbix
默認用戶名:Admin,密碼:zabbix
如下是 zabbix 首頁
4.3.8 切換到中文界面
zabbix 自帶多種語言包,當(dāng)然也包含中文梢褐。登陸到 zabbix web 控制臺默認是英文,對有些英文不好或者習(xí)慣中 文的人來說會有不適應(yīng)颠放。這邊也不是講 zabbix 漢化,實際上是切換到中文版本。
- 點擊右上角 Profile(配置)
- User 標簽的 Language 改為 Chinese(zh_CN),點擊 save 即可