目錄
1、安裝 Zabbix
安裝客戶端
服務端測試通訊
Web頁面添加主機
2、監控 Nginx
自定義腳本監控 Nginx
web配置臺
3、監控 MySQL
配置模版文件
配置Web界面
1、安裝 Zabbix
node-12 作為zabbix的被監控端,提供mysql服務器,配置zabbix監控node-12 客戶端,安裝zabbix_agent比較簡單,只需要開啟--enable-agent。
安裝客戶端
# 下載zabbix6.2
wget https://cdn.zabbix.com/zabbix/sources/stable/6.2/zabbix-6.2.1.tar.gz# 安裝依賴
yum -y install gcc gcc-c++ net-snmp net-snmp-devel curl-devel java-1.8.0-openjdk java-1.8.0-openjdk-devel OpenIPMI-devel libssh2-devel libevent libevent-devel mysql-devel
# 如果是本地yum源安裝依賴包,需要安裝zabbix_rpm.tar.gz包里的rmp包。
tar -zxvf zabbix_rpm.tar.gz
yum install -y zabbix_rpm/* --skip-broken# 創建用戶
useradd -s /sbin/nologin zabbix# 安裝zabbix
tar -zxvf zabbix-6.2.1.tar.gz -C /usr/local/src/
cd /usr/local/src/zabbix-6.2.1/
./configure --prefix=/usr/local/zabbix --enable-agent
make install# 添加系統軟連接
ln -s /usr/local/zabbix/bin/* /usr/local/bin/
ln -s /usr/local/zabbix/sbin/* /usr/local/sbin/--------------------------------------------------------------# 修改配置文件
vim /usr/local/zabbix/etc/zabbix_agentd.conf
Server=127.0.0.1,192.168.1.11
ListenPort=10050
ServerActive=127.0.0.1,192.168.1.11
Hostname=192.168.1.12
Timeout=15
Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/
UnsafeUserParameters=1mkdir /usr/local/etc/zabbix_agentd.conf.d#-----------------------添加啟動腳本-----------------------------
# 添加zabbix啟動腳本
cp /usr/local/src/zabbix-6.2.1/misc/init.d/fedora/core/* /etc/init.d/
vim /etc/init.d/zabbix_agentd
BASEDIR=/usr/local/zabbix #修改zabbix安裝目錄chkconfig --add zabbix_agentd
chkconfig zabbix_agentd on
# 啟動zabbix_agent
/etc/init.d/zabbix_agentd start
netstat -antup | grep 10050
服務端測試通訊
# 測試客戶端信息收集
[root@cong11 ~]zabbix_get -s 192.168.137.112 -p10050 -k system.uname
Web頁面添加主機
① 添加host主機:點擊配置--主機--新建主機--配置主機
- 模板:
Templates -> Linux by Zabbix agent
——zabbix提供多種模板共用戶來選擇,用戶可以根據自己需求選擇不同的模板提供的監控項來監控自己的主機,用戶也可以自定義模板。單臺主機可以選擇多個模板。 - 主機群組:Linux Servers——主機群組可以自己創建新的,也可以使用zabbix提供好的群組,主要來區分不同主機,方便管理,主機群組可以多選。
- 接口選擇:Agent——我們使用的是zabbix_agent來收集信息,所以選擇agent
- 資產記錄:zabbix提供資產記錄功能,可以手動填寫,也可以自動生成
2、監控 Nginx
自定義腳本監控 Nginx
zabbix默認自帶了很多有用的監控模板,通常對主機運行狀態使用默認的模板就可以了,有時候我們需要根據實際情況自定義一些監控信息。下面就介紹一下zabbix監控nginx服務的配置過程。整個配置過程大致如下:
① 確定監控內容
Nginx內置了一個status狀態的功能,通過配置可以看到nginx的運行情況,status顯示的內容包括當前連接數,處于活動狀態的連接數,已經處理的請求數等等。
# 在nginx的配置文件中,添加status配置
[root@cong11 ~] vim /usr/local/nginx/conf/nginx.conf
location /status {stub_status on;access_log off;allow 127.0.0.1;allow 192.168.1.11;deny all;
}nginx -s reload
# 測試訪問
curl http://192.168.1.11/status
注意:在訪問效率很高,請求很快被處理完畢的情況下,Waiting 數比較多是正常的。如果 reading + writing 數較多,則說明并發訪問量很大,正在處理過程中。
② 編寫agent端的監控腳本
編寫腳本,放于/usr/local/zabbix/scripts目錄下, 通過腳本獲取status頁面信息的關鍵值,zabbix server通過這些關鍵值才能生成數據圖像。
[root@cong11 ~] mkdir /usr/local/zabbix/scripts
vim /usr/local/zabbix/scripts/ngx_status.sh#! /bin/bash
# Description:zabbix監控nginx狀態
# Note:此腳本需要配置在被監控端
HOST="127.0.0.1"
PORT="80"
# 檢測nginx進程是否存在
function ping {/sbin/pidof nginx | wc -l
}
# 檢測nginx性能
function active {/usr/bin/curl "http://$HOST:$PORT/status/" 2>/dev/null| grep 'Active' | awk '{print $NF}'
}
function reading {/usr/bin/curl "http://$HOST:$PORT/status/" 2>/dev/null| grep 'Reading' | awk '{print $2}'
}
function writing {/usr/bin/curl "http://$HOST:$PORT/status/" 2>/dev/null| grep 'Writing' | awk '{print $4}'
}
function waiting {/usr/bin/curl "http://$HOST:$PORT/status/" 2>/dev/null| grep 'Waiting' | awk '{print $6}'
}
function accepts {/usr/bin/curl "http://$HOST:$PORT/status/" 2>/dev/null| awk NR==3 | awk '{print $1}'
}
function handled {/usr/bin/curl "http://$HOST:$PORT/status/" 2>/dev/null| awk NR==3 | awk '{print $2}'
}
function requests {/usr/bin/curl "http://$HOST:$PORT/status/" 2>/dev/null| awk NR==3 | awk '{print $3}'
}# 執行function
$1
# 測試腳本
chmod +x /usr/local/zabbix/scripts/ngx_status.sh
# 本次測試輸出4
sh /usr/local/zabbix/scripts/ngx_status.sh active
③ 配置zabbix_agentd.conf文件,定義監控腳本key
[root@cong11 ~] vim /usr/local/zabbix/etc/zabbix_agentd.conf
UnsafeUserParameters=1
Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/mkdir /usr/local/zabbix/etc/zabbix_agentd.conf.d/# 定義監控參數:UserParameter=<key>,<command>
vim /usr/local/zabbix/etc/zabbix_agentd.conf.d/nginx_status.conf
UserParameter=nginx.status[*],/usr/local/zabbix/scripts/ngx_status.sh $1# 重啟zabbix-agent
/etc/init.d/zabbix_agentd restart
④ zabbix服務端使用zabbix_get 測試獲取數據
# zabbix服務端使用zabbix_get 測試獲取數據
zabbix_get -s 192.168.137.111 -p 10050 -k nginx.status[ping]
zabbix_get -s 192.168.137.111 -p 10050 -k nginx.status[active]
zabbix_get -s 192.168.137.111 -p 10050 -k nginx.status[accepts]
web配置臺
① 創建nginx模板:配置--模板--創建模板
② 給模板創建監控項
創建監控項要注意命名方式,能夠見名知意,最關鍵的是鍵值,這里的鍵值一定要和agent端的配置文件中定義的鍵值一致。
③ 創建圖像:一個圖像中顯示多個數據的線圖,創建完圖像之后“應用”
④ 關聯模板:選擇主機--Zabbix server--選擇模板--更新
3、監控 MySQL
zabbix3.0 server已自帶mysql的模板了,只需配置好agent客戶端,然后在web端給主機增加模板就行了。
配置模版文件
# 建立數據庫和 zabbix 的連接信息
[root@cong12 ~] vim /usr/local/zabbix/etc/.my.cnf
[client]
host=localhost
user='root'
password='123456'# 修改zabbix_agentd 配置文件
vim /usr/local/zabbix/etc/zabbix_agentd.conf
Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/# 復制模版
cp /usr/local/src/zabbix-6.2.1/conf/zabbix_agentd/userparameter_mysql.conf \
/usr/local/zabbix/etc/zabbix_agentd.conf.d/# 修改userparameter_mysql.conf文件:指定.my.cnf路徑和mysql命令絕對路徑
[root@cong12 ~]vim /usr/local/zabbix/etc/zabbix_agentd.conf.d/userparameter_mysql.conf
UserParameter=mysql.ping[*],HOME=/usr/local/zabbix/etc /usr/bin/mysqladmin -h"$1" -P"$2" ping
UserParameter=mysql.get_status_variables[*],HOME=/usr/local/zabbix/etc /usr/bin/mysql -h"$1" -P"$2" -sNX -e "show global status"
UserParameter=mysql.version[*],HOME=/usr/local/zabbix/etc /usr/bin/mysqladmin -s -h"$1" -P"$2" version
UserParameter=mysql.db.discovery[*],HOME=/usr/local/zabbix/etc /usr/bin/mysql -h"$1" -P"$2" -sN -e "show databases"
UserParameter=mysql.dbsize[*],HOME=/usr/local/zabbix/etc /usr/bin/mysql -h"$1" -P"$2" -sN -e "SELECT SUM(DATA_LENGTH + INDEX_LENGTH) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='$3'"
UserParameter=mysql.replication.discovery[*],HOME=/usr/local/zabbix/etc /usr/bin/mysql -h"$1" -P"$2" -sNX -e "show slave status"
UserParameter=mysql.slave_status[*],HOME=/usr/local/zabbix/etc /usrbin/mysql -h"$1" -P"$2" -sNX -e "show slave status"# 重啟zabbix_agentd
/etc/init.d/zabbix_agentd restart
# 在服務器端測試:先執行數據庫遠程授權:
[root@cong11]zabbix_get -s 192.168.137.112 -p 10050 -k "mysql.ping[192.168.137.112,3306]"