Zabbix 監控結合 Grafana 繪圖
一.項目實驗拓撲圖(使用億圖專家繪圖);
二.項目實驗思路及重點內容(步驟及重難知
識點);
實施步驟:
步驟 說明
第一步 1.安裝 zabbix server 服務端;
第二步 2.配置 zabbix 服務的 web 頁面並做簡單優化;
第三步 3.實現監控 server.zabbix.com 端的 OS 以及 mysql、httpd;
第四步 4.安裝及配置 agent.zabbix.com 被監控端(FTP 服務器);
第五步 5.登錄 zabbix 的 web 界面,進行添加 agent 主機,驗證監控效果;
第六步 6.配置監控 Win2k8dc1 主機,驗證效果;
第七步 7.自定義監控項,創建項目、觸發器、圖形,驗證監控效果;
第八步 8.實現郵件報警;
第九步 9.安裝並配置 Grafana;
第十步 10.配置 Grafana 的 web 界面,呈現效果;
重點、難點:
重點一 1. Zabbix 簡介
Zabbix 是一個企業級的開源分佈式監控解決方案,由 C 語言編寫而成的底層架
構(server 端和 agent 端),由一個國外的團隊持續維護更新,軟件可以自由下
載使用,運作團隊靠提供收費的技術支持贏利。
官方網站:http://www.zabbix.com
Zabbix 通過 C/S 模式採集數據,通過 B/S 模式在 web 端展示和配置。
被監控端:主機通過安裝 agent 方式採集數據,網絡設備通過 SNMP 方式採集
數據
Server 端:通過收集 SNMP 和 agent 發送的數據,寫入 MySQL 數據庫,再通過
php+apache 在 web 前端展示。
- Zabbix 運行條件:
Server:
Zabbix Server 需運行在 LAMP(Linux+Apache+Mysql+PHP)環境下,對硬件
要求低
Agent:
目前已有的 agent 基本支持市面常見的 OS,包含 Linux、HPUX、Solaris、Sun、
windows 等
SNMP:
支持各類常見的網絡設備 - Zabbix 功能
具備常見的商業監控軟件所具備的功能(主機的性能監控、網絡設備性能監控、
數據庫性能監控、FTP 等通用協議監控、多種告警方式、詳細的報表圖表繪製)
支持自動發現網絡設備和服務器,支持分佈式,能集中展示、管理分佈式的監控
點,擴展性強,server 提供通用接口,可以自己開發完善各類監控。
重點二 1. 優劣勢
優點:
開源,無軟件成本投入;
Server 對設備性能要求低(實際測試環境:虛擬機 Redhat EL AS5,2GCPU 1G
內存,監控 5 臺設備,CPU 使用率基本保持在 10%以下,內存剩餘 400M 以上);
支持設備多;
支持分佈式集中管理;
開放式接口,擴展性強;
當監控的 item 比較多服務器隊列比較大時可以採用被動狀態,被監控客戶端
主動從 server 端去下載需要監控的 item 然後取數據上傳到 server 端。這種方式
對服務器的負載比較小。
缺點:
無廠家支持,出現問題解決比較麻煩
需在被監控主機上安裝 agent,所有數據都存在數據庫裏,產生的數據據很大,
瓶頸主要在數據庫。
重點三 1.zabbix 的監控原理:
組件說明:
1)zabbix server:負責接收 agent 發送的報告信息的核心組件,所有配置、統計
數據及操作數據都由它組織進行;
2)database storage:專用於存儲所有配置信息,以及由 zabbix 收集的數據;
3)web interface:zabbix 的 GUI 接口;
4)proxy:可選組件,常用於監控節點很多的分佈式環境中,代理 server 收集部
分數據轉發到 server,可以減輕 server 的壓力;
5)agent:部署在被監控的主機上,負責收集主機本地數據如 cpu、內存、數據
庫等數據發往 server 端或 proxy 端;
監控流程:
agentd 需要安裝到被監控的主機上,它負責定期收集各項數據,併發送到
zabbix server 端,zabbix server 將數據存儲到數據庫中,zabbix web 根據數據在前
端進行展現和繪圖。這裏 agentd 收集數據分爲主動和被動兩種模式:
主動:agent 請求 server 獲取主動的監控項列表,並主動將監控項內需要檢測
的數據提交給 server/proxy
被動:server 向 agent 請求獲取監控項的數據,agent 返回數據。
客戶端守護進程:
此進程收集客戶端數據,例如 cpu 負載、內存、硬盤使用情況等。
zabbix_get
zabbix 工具,單獨使用的命令,通常在 server 或者 proxy 端執行獲取遠程客戶
端信息的命令。通常用戶排錯。例如在 server 端獲取不到客戶端的內存數據,我
們可以使用 zabbix_get 獲取客戶端的內容的方式來做故障排查。
zabbix_sender
zabbix 工具,用於發送數據給 server 或者 proxy,通常用於耗時比較長的檢查。
很多檢查非常耗時間,導致 zabbix 超時。於是我們在腳本執行完畢之後,使用
sender 主動提交數據。
zabbix_server
zabbix 服 務 端 守 護 進 程 。 zabbix_agentd 、 zabbix_get 、 zabbix_sender 、
zabbix_proxy、zabbix_java_gateway 的數據最終都是提交到 server
備註:當然不是數據都是主動提交給 zabbix_server,也有的是 server 主動去取數
據。
zabbix_proxy
zabbix 代理守護進程。功能類似 server,唯一不同的是它只是一箇中轉站,它
需要把收集到的數據提交/被提交到 server 裏。爲什麼要用代理?代理是做什麼
的?賣個關子,請繼續關注運維生存時間 zabbix 教程系列。
zabbix_java_gateway
zabbix2.0 之後引入的一個功能。顧名思義:Java 網關,類似 agentd,但是隻
用於 Java 方面。需要特別注意的是,它只能主動去獲取數據,而不能被動獲取
數據。它的數據最終會給到 server 或者 proxy。
重點四 擴展:zabbix 的監控架構
在實際監控架構中,zabbix 根據網絡環境、監控規模等 分了三種架構:
server-client 、master-node-client、server-proxy-client 三種 。
1、server-client 架構
也是 zabbix 的最簡單的架構,監控機和被監控機之間不經過任何代理 ,直接
由 zabbix server 和 zabbix agentd 之間進行數據交互。適用於網絡比較簡單,設備
比較少的監控環境 。
2、server-proxy-client 架構
其中 proxy 是 server、client 之間溝通的一個橋樑,proxy 本身沒有前端,而且
其本身並不存放數據,只是將 agentd 發來的數據暫時存放,而後再提交給
server 。該架構經常是和 master-node-client 架構做比較的架構 ,一般適用於跨
機房、跨網絡的中型網絡架構的監控。
3、master-node-client 架構
該架構是 zabbix 最複雜的監控架構,適用於跨網絡、跨機房、設備較多的大型
環境 。每個 node 同時也是一個 server 端,node 下面可以接 proxy,也可以直接
接 client 。node 有自已的配置文件和數據庫,其要做的是將配置信息和監控數
據向 master 同步,master 的故障或損壞對 node 其下架構的完整性。
重點五 Grafana 簡介:
Grafana 是一個可視化面板(Dashboard),有着非常漂亮的圖表和佈局展示,
功能齊全的度量儀表盤和圖形編輯器,支持 Graphite、zabbix、InfluxDB、
Prometheus 和 OpenTSDB 作爲數據源。以 InfluxDB(由 go 語言編寫,是一個開
源,分佈式,時間序列,事件,可度量和無外部依賴的數據庫)作爲底層數據庫;
Grafana 主要特性:靈活豐富的圖形化選項;可以混合多種風格;支持白天和
夜間模式;多個數據源。
三.項目實驗步驟(操作截圖或者操作命令)
1.安裝 zabbix server 服務端;
[root@server ~]# ip a ##配置網絡,確保可以上網
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:4f:c9:00 brd ff:ff:ff:ff:ff:ff
inet 192.168.100.101/24 brd 192.168.100.255 scope global eth0
valid_lft forever preferred_lft forever
[root@server ~]# vi /etc/hosts
192.168.100.101 server.zabbix.com
192.168.100.152 agent.zabbix.com
192.168.100.153 win2k8dc1
:wq
[root@server ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo
http://mirrors.aliyun.com/repo/Centos-7.repo
[root@server ~]# yum -y install net-snmp net-snmp-devel libxml2 libxml2-devel libcurl-devel
libevent libevent libevent-devel curl curl-devel mysql-devel snmp perl-DBI php-xml php-bcmath
php-mbstring php-ldap php-xmlrpc httpd php php-mysql php-common php-gd php-odbc
php-pear gcc* net-snmp libssh2 libssh2-devel mariadb-server mariadb mariadb-devel ntpdate
##安裝 lamp 和依賴包,使用默認的 centos 7 中的默認 yun 源
[root@server ~]# ntpdate ntp1.aliyun.com
10 Sep 09:08:09 ntpdate[1225]: adjust time server 120.25.115.20 offset -0.000095 sec
[root@server ~]# echo "ntpdate ntp1.aliyun.com" >>/etc/rc.local
[root@server ~]# chmod +x /etc/rc.local
[root@server ~]# systemctl start mariadb
[root@server ~]# systemctl enable mariadb
Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to
/usr/lib/systemd/system/mariadb.service.
[root@server ~]# systemctl start httpd
[root@server ~]# systemctl enable httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to
/usr/lib/systemd/system/httpd.service.
[root@server ~]# mysqladmin -u root password
123123
123123
[root@server ~]# wget -O zabbix-3.4.2.tar.gz
http://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/3.4.2/zabbix-3.4.2.tar.gz
/download ##下載軟件包,上傳也可
[root@server ~]# tar zxvf zabbix-3.4.2.tar.gz
[root@server ~]# cd zabbix-3.4.2
[root@server ~]# ./configure --prefix=/usr/local/zabbix --enable-server --enable-agent
--with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2
[root@server ~]# make &&make install
[root@server ~]# mysql -uroot -p123123 ##登陸數據庫創建保存監控模板的數據庫,並
導入數據模板,以及授權 zabbix 用戶連接數據庫;
create database if not exists zabbix default character set utf8 collate utf8_general_ci;
use zabbix;
source /root/zabbix-3.4.2/database/mysql/schema.sql;
source /root/zabbix-3.4.2/database/mysql/images.sql;
source /root/zabbix-3.4.2/database/mysql/data.sql;
grant all on zabbix.* to zabbix@'192.168.100.101' identified by 'zabbix';
flush privileges;
show grants for zabbix@'192.168.100.101';
exit
[root@server ~]# groupadd zabbix
[root@server ~]# useradd -r -g zabbix zabbix
[root@server ~]# mkdir /usr/local/zabbix/logs
[root@server ~]# chown zabbix:zabbix /usr/local/zabbix/ -R
[root@server ~]# vi /usr/local/zabbix/etc/zabbix_server.conf
:%g/^#/d
:%g/^$/d
LogFile=/usr/local/zabbix/logs/zabbix_server.log
PidFile=/tmp/zabbix_server.pid
DBHost=192.168.100.101
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
DBSocket=/var/lib/mysql/mysql.sock
Include=/usr/local/zabbix/etc/zabbix_server.conf.d/*.conf
:wq
[root@server ~]# vi /usr/local/zabbix/etc/zabbix_agentd.conf
:%g/^#/d
:%g/^$/d
PidFile=/tmp/zabbix_agentd.pid
Server=127.0.0.1,192.168.100.101
ServerActive=192.168.100.101
Hostname=server.zabbix.com
LogFile=/usr/local/zabbix/logs/zabbix_agentd.log
Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/*.conf
:wq
解釋:
PidFile=/tmp/zabbix_agentd.pid ##運行的 PID 文件
Server=127.0.0.1,192.168.100.101 ##輸入 zabbix_server 主機的 ip 地址
ServerActive=192.168.100.101 ##輸入 agent 主機採集到數據發送到的 server 端
Hostname=server.zabbix.com ##輸入本機的主機名
LogFile=/usr/local/zabbix/logs/zabbix_agentd.log ##指定日誌文件
Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/*.conf ##開啓附加配置文件目錄
[root@server ~]# /usr/local/zabbix/sbin/zabbix_server
[root@server ~]# netstat -utpln |grep 10051
tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN
29079/zabbix_server
[root@server ~]# /usr/local/zabbix/sbin/zabbix_agentd
[root@server ~]# netstat -utpln |grep 10050
tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN
29148/zabbix_agentd
[root@server ~]# mv /root/zabbix-3.4.2/frontends/php/ /var/www/html/zabbix
[root@server ~]# chown -R apache:apache /var/www/html/zabbix/
[root@server ~]# vi /etc/php.ini
878 date.timezone = Asia/Shanghai
384 max_execution_time = 300
394 max_input_time = 300
672 post_max_size = 32M
405 memory_limit = 128M
854 extension=bcmath.so
:wq
解釋:
878 date.timezone = Asia/Shanghai ##時區
384 max_execution_time = 300 ##單位秒,通過 POST、GET 以及 PUT 方式接
收數據時間進行限制
394 max_input_time = 300 ##php 程序上傳文件解析數據時的時間限制
672 post_max_size = 32M ##POST 方式請求數據所允許的最大大小
405 memory_limit = 128M ##設置 php 程序的內存限制
854 extension=bcmath.so ##加載 zabbix 程序需要加載的擴展模塊 bcmath.so
[root@server ~]# systemctl restart httpd
2.配置 zabbix 服務的 web 頁面並做簡單優化;
訪問安裝 http://192.168.100.101/zabbix/,默認用戶名 admin 密碼 zabbix
安裝完成,設置顯示字體爲中文;
解決 zabbix 顯示圖像下邊文字亂碼情況:
上傳字符集文件到此目錄下;
3.實現監控 server.zabbix.com 端的 OS 以及 mysql、httpd;
4
勾選以下三個監控模板,點擊選擇按鈕;
在上個界面會顯示此主機的監控項,此主機的圖形,可以自行跟據監控項進行創建圖形;
選擇監控項,點擊選擇;
查看監控主機的圖形;
但是意外出現了,關於 Mysql 數據庫的所有監控項沒有圖形,如圖所示;
經過查看,問題如下圖,監控 Mysql 服務器的鍵值不使用;
解決方案如下;
設置監控失效的鍵值,打開 zabbix_server 服務器,同時在此也是被監控端;
[root@server ~]# vi /usr/local/zabbix/etc/zabbix_agentd.conf
PidFile=/tmp/zabbix_agentd.pid
Server=127.0.0.1,192.168.100.101
ServerActive=192.168.100.101
Hostname=server.zabbix.com
LogFile=/usr/local/zabbix/logs/zabbix_agentd.log
Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/*.conf
UnsafeUserParameters=1
UserParameter=mysql.version,mysql -V
UserParameter=mysql.status[*],/usr/local/zabbix/etc/chk_mysql.sh $1
UserParameter=mysql.ping,mysqladmin -uroot -p123123 -P3306 -h192.168.100.101 ping | grep
-c alive
:wq
內容解釋:
Server=192.168.100.151,127.0.0.1 //指定 zabbix 服務器的地址
ServerActive=192.168.100.101 //指定 agent 採集到數據之後發送給 server 端
Hostname=server.zabbix.com //指定 agent 端的主機名、server 端必須需要解析,注意:
在 web 界面添加被監控主機時,必須寫此主機名;
UnsafeUserParameters=1 //允許所有字符的參數傳遞給用戶定義的參數。
UserParameter=mysql.version,mysql -V //定義鍵值 mysql.version,以及鍵值的值 mysql -V
UserParameter=mysql.status[*],/usr/local/zabbix/etc/chk_mysql.sh $1 // 定 義 鍵 值
mysql.status[*]
UserParameter=mysql.ping,mysqladmin -uroot -p123123 -P3306 -h192.168.100.101 ping | grep
-c alive ///定義鍵值 mysql.ping,指定 chk_mysql.sh 腳本,使用此腳本檢查 mysql 的運
行狀態,使用 mysqladmin 命令指定 agent 端的數據庫連接用戶密碼 ip 地址,注意保證
mysqladmin 命令的鏈接;
[root@server ~]# vi /usr/local/zabbix/etc/chk_mysql.sh ##編寫檢查 mysql 狀態的腳本,
在腳本中指定 agent 端的 mysql 的 ip 地址,連接的用戶名密碼等
#!/bin/bash
#-------------------------------------------------------------------------------
#FileName: check_mysql.sh
#Revision: 1.0
#Date: 2015/06/09
#Author: DengYun
#Email: [email protected]
#Website: www.ttlsa.com
#Description:
#Notes: ~
#-------------------------------------------------------------------------------
#Copyright: 2015 (c) DengYun
#License: GPL
#用戶名
MYSQL_USER='root'
#密碼
MYSQL_PWD='123123'
#主機地址/IP
MYSQL_HOST='192.168.100.101'
#端口
MYSQL_PORT='3306'
#數據連接
MYSQL_CONN="/usr/bin/mysqladmin -u${MYSQL_USER} -p${MYSQL_PWD} -h${MYSQL_HOST}
-P${MYSQL_PORT}"
#參數是否正確
if [ $# -ne "1" ];then
echo "arg error!"
fi
#獲取數據
case $1 in
Uptime)
result=`${MYSQL_CONN} status|cut -f2 -d":"|cut -f1 -d"T"`
echo $result
;;
Com_update)
result=`${MYSQL_CONN} extended-status |grep -w "Com_update"|cut -d"|" -f3`
echo $result
;;
Slow_queries)
result=`${MYSQL_CONN} status |cut -f5 -d":"|cut -f1 -d"O"`
echo $result
;;
Com_select)
result=`${MYSQL_CONN} extended-status |grep -w "Com_select"|cut -d"|" -f3`
echo $result
;;
Com_rollback)
result=`${MYSQL_CONN} extended-status |grep -w "Com_rollback"|cut -d"|" -f3`
echo $result
;;
Questions)
result=`${MYSQL_CONN} status|cut -f4 -d":"|cut -f1 -d"S"`
echo $result
;;
Com_insert)
result=`${MYSQL_CONN} extended-status |grep -w "Com_insert"|cut -d"|" -f3`
echo $result
;;
Com_delete)
result=`${MYSQL_CONN} extended-status |grep -w "Com_delete"|cut -d"|" -f3`
echo $result
;;
Com_commit)
result=`${MYSQL_CONN} extended-status |grep -w "Com_commit"|cut -d"|" -f3`
echo $result
;;
Bytes_sent)
result=`${MYSQL_CONN} extended-status |grep -w "Bytes_sent" |cut -d"|" -f3`
echo $result
;;
Bytes_received)
result=`${MYSQL_CONN} extended-status |grep -w "Bytes_received" |cut -d"|" -f3`
echo $result
;;
Com_begin)
result=`${MYSQL_CONN} extended-status |grep -w "Com_begin"|cut -d"|" -f3`
echo $result
;;
*)
echo
"Usage:$0(Uptime|Com_update|Slow_queries|Com_select|Com_rollback|Questions|Com_inser
t|Com_delete|Com_commit|Bytes_sent|Bytes_received|Com_begin)"
;;
esac
:wq
[root@server ~]# chmod 777 /usr/local/zabbix/etc/chk_mysql.sh
[root@server ~]# mysql -uroot -p123123
grant all on *.* to 'root'@'192.168.100.101' identified by '123123';
flush privileges;
show grants for root@'192.168.100.101';
exit
[root@server ~]# ln -s /usr/local/zabbix/bin/* /usr/local/bin/ //爲 zabbix 的命令做軟鏈
接,檢測 mysql 狀態時會使用 zabbix_get 命令
[root@server ~]# yum -y install psmisc
[root@server ~]# killall -9 zabbix_server
[root@server ~]# killall -9 zabbix_agentd
[root@server ~]# /usr/local/zabbix/sbin/zabbix_server
[root@server ~]# /usr/local/zabbix/sbin/zabbix_agentd
[root@server ~]# netstat -utpln |grep 100
tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN
29800/zabbix_agentd
tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN
29733/zabbix_server
[root@server ~]# vi /etc/my.cnf ##禁止反向解析
[mysqld]
skip-name-resolve
[root@server ~]# systemctl restart mariadb
[root@server ~]# zabbix_get -s 192.168.100.101 -k mysql.ping ##在此可以通過 zabbix_get
命令進行獲取服務器監控項的具體鍵值,mysql.ping 是在 zabbix_agentd.conf 配置文件中的鍵
值名稱,通過此名稱可以查看鍵值,通常能夠獲取到鍵值,獲取監控數據就是沒問題的;
1
[root@server ~]# zabbix_get -s 192.168.100.101 -k mysql.status[Com_update]
143
[root@server ~]# zabbix_get -s 192.168.100.101 -k mysql.version
mysql Ver 15.1 Distrib 5.5.56-MariaDB, for Linux (x86_64) using readline 5.1
再次打開 zabbix 的 web 界面,驗證 mysql 服務器的監控界面;
按照如上方法將 server.linuxfan.cn 的 httpd 服務的狀態添加到 zabbix 的圖形中;
4.安裝及配置 zabbix_agentd 代理端(FTP 服務器);
首先安裝 zabbix_agentd 端的測試服務(ftp)並且確保網絡通信;
[root@agent ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:a0:76:46 brd ff:ff:ff:ff:ff:ff
inet 192.168.100.152/24 brd 192.168.100.255 scope global eth0
inet6 fe80::20c:29ff:fea0:7646/64 scope link
valid_lft forever preferred_lft forever
[root@agent ~]# vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=agent.zabbix.com
:wq
[root@agent ~]# vi /etc/hosts
192.168.100.101 server.zabbix.com
192.168.100.152 agent.zabbix.com
192.168.100.153 win2k8dc1
:wq
[root@agent ~]# reboot
[root@agent ~]# ping server.zabbix.com -c 4
[root@agent ~]# yum -y install vsftpd
[root@agent ~]# /etc/init.d/vsftpd start
其次開始配置 agent.zabbix.com 被監控端主機的 zabbix 的 agent 代理端;
[root@agent ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo
http://mirrors.aliyun.com/repo/Centos-7.repo
[root@agent ~]# yum -y install libxml2-devel libcurl-devel pcre-devel ntpdate
[root@agent ~]# ntpdate ntp1.aliyun.com
[root@agent ~]# wget -O zabbix-3.4.2.tar.gz
http://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/3.4.2/zabbix-3.4.2.tar.gz
/download
[root@agent ~]# tar zxvf zabbix-3.4.2.tar.gz
[root@agent ~]# cd zabbix-3.4.2
[root@agent zabbix-3.4.2]# ./configure --prefix=/usr/local/zabbix --enable-agent --enable-ipv6
--with-net-snmp --with-libcurl --with-libxml2
[root@agent zabbix-3.4.2]# make &&make install
[root@agent zabbix-3.4.2]# cp misc/init.d/tru64/zabbix_agentd /etc/init.d/
[root@agent zabbix-3.4.2]# vi /etc/init.d/zabbix_agentd
24 DAEMON=/usr/local/zabbix/sbin/zabbix_agentd
:wq
[root@agent zabbix-3.4.2]# chmod +x /etc/init.d/zabbix_agentd
[root@agent zabbix-3.4.2]# cd
[root@agent ~]# groupadd zabbix
[root@agent ~]# useradd -r -g zabbix zabbix
[root@agent ~]# chown -R zabbix:zabbix /usr/local/zabbix/
[root@agent ~]# vi /usr/local/zabbix/etc/zabbix_agentd.conf
:%g/^$/d
:%g/^#/d
LogFile=/tmp/zabbix_agentd.log
Server=192.168.100.101
ServerActive=192.168.100.101
Hostname=agent.zabbix.com
:wq
[root@agent ~]# /etc/init.d/zabbix_agentd start
Zabbix agent started.
[root@agent ~]# netstat -utpln |grep zabbix
tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN
12481/zabbix_agentd
tcp 0 0 :::10050 :::* LISTEN
12481/zabbix_agentd
5.登錄 zabbix 的 web 界面,進行添加 agent 主機,驗證監
控效果;
添加 agent.zabbix.com 主機完成,默認的圖形之後五個,無 ftp 服務圖形,接下來手動添加
ftp 服務圖形顯示;
6.配置監控 Win2k8dc1 主機,驗證效果;
首先配置 windows2008 主機的網絡;
其次用宿主機訪問 zabbix 官網下載監控 windows2008 的插件;
下載完成,將下載後的插件複製到測試主機 win2k8dc1 中,進行配置;
C:\zabbix\bin\win64\zabbix_agentd.exe -c C:\zabbix\conf\zabbix_agentd.win.conf -i ##安裝
C:\zabbix\bin\win64\zabbix_agentd.exe -c C:\zabbix\conf\zabbix_agentd.win.conf -s ##啓動
C:\zabbix\bin\win64\zabbix_agentd.exe -c C:\zabbix\conf\zabbix_agentd.win.conf -d ##刪除
windows 主機配置完成,下邊在 web 界面,添加主機 win2k8dc1;
添加完成,默認圖形爲 2 個,可以手動添加,在此不做過多說明,驗證當前圖形如下;
7.自定義監控項,創建項目、觸發器、圖形,驗證監控效果;
以上關聯的 Template OS Linux 模板基本涵蓋了所有系統層面的監控,包括了我們最關注的
幾項:ping、load、cpu 使用率、memory、disk、網卡流量等等,當然有些觸發器的閥值可
能需要根據服務器的自身情況進行修改。
下面添加自定義服務器內存使用檢測項,在此配置一個監控項爲:內存使用 70M 進行警告
提醒:
1.修改客戶端 zabbix_agentd.conf 配置文件,最後一行添加:
UserParameter=memory_userd,free -m|grep Mem|awk '{print $3}'
語法:UserParameter=key,shell command
監控 key 值:memory_userd,key 值可以隨意編寫,但是一會需要在 web 頁面創建監控項時
指定 key 值;
Shell 命令或腳本:free -m|grep Mem|awk '{print $3}'
注:在 zabbix_server 端可以使用 zabbix_get -s agent 端 ip 地址 -p 10050 -k key 名
通過此命令可以查看 agent 端 key 的監控值;
具體實現方式如下,更改 agent.zabbix.com 主機的配置文件來自定義監控項;
[root@agent ~]# vi /usr/local/zabbix/etc/zabbix_agentd.conf
UserParameter=memory_userd,free -m|grep Mem|awk '{print $3}'
:wq
[root@agent ~]# /etc/init.d/zabbix_agentd restart
使用 server.agent.com 主機查看其監控項鍵值;
[root@server ~]# zabbix_get -s 192.168.100.152 -k memory_userd
338
使用 web 界面添加此監控項;
監控項添加完成後,創建觸發器(根據條件進行觸發某個告警操作);
觸發器創建完成後,創建監控顯示的圖形;
打開首頁,很明顯的提示;
8.實現郵件報警;
首先配置 server.zabbix.com 端的郵件;
[root@server ~]# yum -y install postfix mailx dos2unix
[root@server ~]# mailx -V
[root@server ~]# vi /etc/mail.rc //在此文件末尾添加,指定接收郵件郵箱地址,指定郵
箱服務器地址,指定接收郵件郵箱地址的授權碼,並非 163 郵箱的密碼,而是授權碼,登陸
163 網易郵箱地址後,--設置--開啓 smtp 和 pop3--點擊客戶端生成授權碼--使用此授權碼進
行指定到此配置文件;
set [email protected] smtp=smtp.163.com
set [email protected] smtp-auth-password=...
set smtp-auth=login
:wq
[root@server ~]# echo "測試內容" |mail -s "測試標題" [email protected] // 測 試 郵 件
接收情況
[root@server ~]# vi /usr/local/zabbix/etc/zabbix_server.conf //打開 server 端主配置文
件的腳本存放位置
AlertScriptsPath=/usr/local/zabbix/share/zabbix/alertscripts
:wq
[root@server ~]# vi /usr/local/zabbix/share/zabbix/alertscripts/2.sh //編寫報警郵件
腳本,調整 mail 命令語法位置,使用 dos2unix 命令轉換字符,避免收到郵件不顯示正常郵
件內容而出現 ATT00001.bin 的錯誤;
#!/bin/bash
#export.UTF-8
bt=$2
sjr=$1
FILE=/tmp/mailtmp.txt
echo "$3" >$FILE
/usr/bin/dos2unix -k $FILE
/bin/mail -s "$bt" "$sjr" <$FILE
:wq
[root@server ~]# chmod 777 /usr/local/zabbix/share/zabbix/alertscripts/2.sh
[root@server ~]# chown zabbix:zabbix /usr/local/zabbix/share/zabbix/alertscripts/2.sh
[root@server ~]# touch /tmp/mailtmp.txt
[root@server ~]# chmod 777 /tmp/mailtmp.txt
[root@server ~]# chown zabbix:zabbix /tmp/mailtmp.txt //注意文件以及報警腳本
的歸屬以及權限,注:腳本文件和存放郵件消息文件歸屬必須是 zabbix;
[root@server ~]# /usr/local/zabbix/share/zabbix/alertscripts/2.sh [email protected] "測試標
題 2" "測試內容 2" //測試腳本郵件接收情況
dos2unix: converting file /tmp/mailtmp.txt to Unix format ...
配置 zabbix web 網站進行監控項的郵件報警,每一張圖片後附帶解釋和注意事項,大體
步驟分爲 監控--創建報警媒介類型--更新用戶使用的報警媒介類型--創建動作(根據觸發器
觸發)--驗證;
創建報警媒介類型:
輸入創建的報警媒介類型的名稱,指定類型爲腳本的方式,並且輸入 zabbix_server 端
/usr/local/zabbix/share/zabbix/alertscripts 目錄下的腳本名稱,確保腳本的歸屬是 zabbix,
並且腳本的權限是 777,下邊設置腳本參數,也就是發送郵件的語法:腳本 收件人 標題 內
容,必須嚴格按照此標準填寫;
創建報警媒介類型成功後,進行確認;
配置 zabbix 中的用戶所使用的報警媒介類型以及接收郵件的郵箱;
選擇報警媒介類型爲剛剛創建的類型,並且輸入接收郵件的地址,指定報警時間和報警級
別;
創建動作,也就是發送郵件的動作;
輸入動作名,動作名最好爲英文,可以選擇觸發這個動作的條件(可以選擇觸發器=觸發器
的名稱或者選擇觸發器似觸發器名稱),作爲條件,如若如圖不選擇觸發器的條件,那麼任
何消息都會提示到郵箱;
添加報警動作,一旦此觸發器添加觸發,添加報警郵件的標題和內容,默認操作步驟持續
時間(修改持續時間爲 60 秒 (一分鐘發送一次郵件)),添加操作(添加接收郵件的用戶);
默認接收人內容:故障{TRIGGER.STATUS},服務器:{HOSTNAME1}發生: {TRIGGER.NAME}故障!
默認信息內容:
告警主機:{HOSTNAME1}
告警時間:{EVENT.DATE} {EVENT.TIME}
告警等級:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警項目:{TRIGGER.KEY1}
問題詳情:{ITEM.NAME}:{ITEM.VALUE}
當前狀態:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件 ID:{EVENT.ID}
添加操作(添加接收郵件的用戶),步驟(指定郵件發送的次數),僅送到(選擇創建的媒
介類型);
添加恢復操作(指故障恢復之後發送郵件的動作),具體步驟和添加操作相同;
確認動作創建的完成;
開始測試郵件報警
測試一:首先關閉 agent.zabbix.com 主機的 ftp 服務,測試郵件報警情況;
[root@agent ~]# /etc/init.d/vsftpd stop
關閉 vsftpd: [確定]
測試二:關閉 win2k8 主機,測試郵件報警情況;
9.安裝並配置 Grafana;
[root@server ~]# wget
https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-4.6.1-1.x86_64.rpm
[root@server ~]# yum -y localinstall grafana-4.6.1-1.x86_64.rpm
[root@server ~]# grafana-cli plugins install alexanderzobnin-zabbix-app ##安裝 zabbix 插
件
[root@server ~]# mkdir -p /opt/grafana/data/plugins/
[root@server ~]# cp -r /var/lib/grafana/plugins/alexanderzobnin-zabbix-app/
/opt/grafana/data/plugins/
[root@server ~]# ls /opt/grafana/data/plugins/
alexanderzobnin-zabbix-app
[root@server ~]# chmod 777 /opt/grafana/data/plugins/ -R
[root@server ~]# systemctl start grafana-server
[root@server ~]# netstat -utpln |grep gra
Proto Recv-Q Send-Q Local Address Foreign Address State
PID/Program name
tcp 0 0 0.0.0.0:3000 0.0.0.0:* LISTEN
57103/grafana-serve
訪問測試 http://192.168.100.101:3000,默認用戶名 admin,密碼 admin,在此是谷歌瀏覽器
翻譯過後的界面,大家可以自行下載谷歌瀏覽器,下載翻譯插件,在此不做過多介紹;
安裝 grafana;
10.配置 Grafana 的 web 界面,呈現效果;
啓用插件;
添加數據源;
創建儀表盤;
創建儀表盤時指定顯示的圖形;
輸入圖形名稱;
選擇數據源和圖中需要顯示的主機和主機的監控項;
創建完成,保存此儀表盤,輸入儀表盤的名稱;
驗證創建的儀表盤;
在現有的 dashboard 中添加圖形;
驗證最終的儀表盤顯示圖形;
四.項目實驗總結(遇到的錯誤及解決方案,
難點、重點解說,擴展學習)
1.錯誤及解決方案:
錯誤一:監控 Mysql 數據庫時,沒有圖形;
錯誤及解決方案:P/13-18
錯誤二:配置報警郵件時,郵箱收到的郵件爲 ATT00001.bin 的內容;
錯誤及解決方案:P/38
郵箱收到郵件出現 ATT00001.bin 的內容:
原因:zabbix 無法將內容轉義成中英文,需要藉助 dos2unix工具進行轉換