Zabbix 監控結合 Grafana 繪圖

Zabbix 監控結合 Grafana 繪圖

一.項目實驗拓撲圖(使用億圖專家繪圖);
Zabbix 監控結合 Grafana 繪圖
二.項目實驗思路及重點內容(步驟及重難知
識點);
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 前端展示。

  1. Zabbix 運行條件:
    Server:
    Zabbix Server 需運行在 LAMP(Linux+Apache+Mysql+PHP)環境下,對硬件
    要求低
    Agent:
    目前已有的 agent 基本支持市面常見的 OS,包含 Linux、HPUX、Solaris、Sun、
    windows 等
    SNMP:
    支持各類常見的網絡設備
  2. Zabbix 功能
    具備常見的商業監控軟件所具備的功能(主機的性能監控、網絡設備性能監控、
    數據庫性能監控、FTP 等通用協議監控、多種告警方式、詳細的報表圖表繪製)
    支持自動發現網絡設備和服務器,支持分佈式,能集中展示、管理分佈式的監控
    點,擴展性強,server 提供通用接口,可以自己開發完善各類監控。
    重點二 1. 優劣勢
    優點:
    開源,無軟件成本投入;
    Server 對設備性能要求低(實際測試環境:虛擬機 Redhat EL AS5,2GCPU 1G
    內存,監控 5 臺設備,CPU 使用率基本保持在 10%以下,內存剩餘 400M 以上);
    支持設備多;
    支持分佈式集中管理;
    開放式接口,擴展性強;
    當監控的 item 比較多服務器隊列比較大時可以採用被動狀態,被監控客戶端
    主動從 server 端去下載需要監控的 item 然後取數據上傳到 server 端。這種方式
    對服務器的負載比較小。
    缺點:
    無廠家支持,出現問題解決比較麻煩
    需在被監控主機上安裝 agent,所有數據都存在數據庫裏,產生的數據據很大,
    瓶頸主要在數據庫。
    重點三 1.zabbix 的監控原理:Zabbix 監控結合 Grafana 繪圖
    組件說明:
    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 監控結合 Grafana 繪圖
Zabbix 監控結合 Grafana 繪圖
Zabbix 監控結合 Grafana 繪圖
Zabbix 監控結合 Grafana 繪圖
Zabbix 監控結合 Grafana 繪圖
Zabbix 監控結合 Grafana 繪圖
Zabbix 監控結合 Grafana 繪圖
Zabbix 監控結合 Grafana 繪圖
Zabbix 監控結合 Grafana 繪圖
Zabbix 監控結合 Grafana 繪圖

安裝完成,設置顯示字體爲中文;
解決 zabbix 顯示圖像下邊文字亂碼情況:
Zabbix 監控結合 Grafana 繪圖
上傳字符集文件到此目錄下;
Zabbix 監控結合 Grafana 繪圖Zabbix 監控結合 Grafana 繪圖Zabbix 監控結合 Grafana 繪圖Zabbix 監控結合 Grafana 繪圖

3.實現監控 server.zabbix.com 端的 OS 以及 mysql、httpd;

4Zabbix 監控結合 Grafana 繪圖
Zabbix 監控結合 Grafana 繪圖
Zabbix 監控結合 Grafana 繪圖

勾選以下三個監控模板,點擊選擇按鈕;
Zabbix 監控結合 Grafana 繪圖
Zabbix 監控結合 Grafana 繪圖
Zabbix 監控結合 Grafana 繪圖
Zabbix 監控結合 Grafana 繪圖
Zabbix 監控結合 Grafana 繪圖
在上個界面會顯示此主機的監控項,此主機的圖形,可以自行跟據監控項進行創建圖形;
Zabbix 監控結合 Grafana 繪圖
Zabbix 監控結合 Grafana 繪圖
Zabbix 監控結合 Grafana 繪圖
選擇監控項,點擊選擇;
Zabbix 監控結合 Grafana 繪圖
Zabbix 監控結合 Grafana 繪圖
Zabbix 監控結合 Grafana 繪圖
查看監控主機的圖形;
Zabbix 監控結合 Grafana 繪圖
但是意外出現了,關於 Mysql 數據庫的所有監控項沒有圖形,如圖所示;
Zabbix 監控結合 Grafana 繪圖
經過查看,問題如下圖,監控 Mysql 服務器的鍵值不使用;
Zabbix 監控結合 Grafana 繪圖
Zabbix 監控結合 Grafana 繪圖
解決方案如下;
設置監控失效的鍵值,打開 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 服務器的監控界面;
Zabbix 監控結合 Grafana 繪圖
按照如上方法將 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 主機,驗證監

控效果;
Zabbix 監控結合 Grafana 繪圖
Zabbix 監控結合 Grafana 繪圖
Zabbix 監控結合 Grafana 繪圖
Zabbix 監控結合 Grafana 繪圖
Zabbix 監控結合 Grafana 繪圖Zabbix 監控結合 Grafana 繪圖Zabbix 監控結合 Grafana 繪圖Zabbix 監控結合 Grafana 繪圖
添加 agent.zabbix.com 主機完成,默認的圖形之後五個,無 ftp 服務圖形,接下來手動添加
ftp 服務圖形顯示;
Zabbix 監控結合 Grafana 繪圖Zabbix 監控結合 Grafana 繪圖Zabbix 監控結合 Grafana 繪圖Zabbix 監控結合 Grafana 繪圖Zabbix 監控結合 Grafana 繪圖Zabbix 監控結合 Grafana 繪圖Zabbix 監控結合 Grafana 繪圖

6.配置監控 Win2k8dc1 主機,驗證效果;

首先配置 windows2008 主機的網絡;
Zabbix 監控結合 Grafana 繪圖Zabbix 監控結合 Grafana 繪圖
其次用宿主機訪問 zabbix 官網下載監控 windows2008 的插件;
Zabbix 監控結合 Grafana 繪圖
Zabbix 監控結合 Grafana 繪圖
下載完成,將下載後的插件複製到測試主機 win2k8dc1 中,進行配置;
Zabbix 監控結合 Grafana 繪圖Zabbix 監控結合 Grafana 繪圖Zabbix 監控結合 Grafana 繪圖Zabbix 監控結合 Grafana 繪圖Zabbix 監控結合 Grafana 繪圖Zabbix 監控結合 Grafana 繪圖Zabbix 監控結合 Grafana 繪圖Zabbix 監控結合 Grafana 繪圖
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;
Zabbix 監控結合 Grafana 繪圖
Zabbix 監控結合 Grafana 繪圖Zabbix 監控結合 Grafana 繪圖Zabbix 監控結合 Grafana 繪圖Zabbix 監控結合 Grafana 繪圖
添加完成,默認圖形爲 2 個,可以手動添加,在此不做過多說明,驗證當前圖形如下;
Zabbix 監控結合 Grafana 繪圖

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 界面添加此監控項;
Zabbix 監控結合 Grafana 繪圖Zabbix 監控結合 Grafana 繪圖Zabbix 監控結合 Grafana 繪圖Zabbix 監控結合 Grafana 繪圖Zabbix 監控結合 Grafana 繪圖
監控項添加完成後,創建觸發器(根據條件進行觸發某個告警操作);
Zabbix 監控結合 Grafana 繪圖Zabbix 監控結合 Grafana 繪圖Zabbix 監控結合 Grafana 繪圖Zabbix 監控結合 Grafana 繪圖Zabbix 監控結合 Grafana 繪圖Zabbix 監控結合 Grafana 繪圖Zabbix 監控結合 Grafana 繪圖Zabbix 監控結合 Grafana 繪圖
觸發器創建完成後,創建監控顯示的圖形;
Zabbix 監控結合 Grafana 繪圖Zabbix 監控結合 Grafana 繪圖Zabbix 監控結合 Grafana 繪圖Zabbix 監控結合 Grafana 繪圖Zabbix 監控結合 Grafana 繪圖Zabbix 監控結合 Grafana 繪圖
打開首頁,很明顯的提示;

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 監控結合 Grafana 繪圖

輸入創建的報警媒介類型的名稱,指定類型爲腳本的方式,並且輸入 zabbix_server 端
/usr/local/zabbix/share/zabbix/alertscripts 目錄下的腳本名稱,確保腳本的歸屬是 zabbix,
並且腳本的權限是 777,下邊設置腳本參數,也就是發送郵件的語法:腳本 收件人 標題 內
容,必須嚴格按照此標準填寫;
Zabbix 監控結合 Grafana 繪圖
創建報警媒介類型成功後,進行確認;
Zabbix 監控結合 Grafana 繪圖
配置 zabbix 中的用戶所使用的報警媒介類型以及接收郵件的郵箱;
Zabbix 監控結合 Grafana 繪圖
選擇報警媒介類型爲剛剛創建的類型,並且輸入接收郵件的地址,指定報警時間和報警級
別;
Zabbix 監控結合 Grafana 繪圖Zabbix 監控結合 Grafana 繪圖Zabbix 監控結合 Grafana 繪圖
創建動作,也就是發送郵件的動作;
Zabbix 監控結合 Grafana 繪圖
輸入動作名,動作名最好爲英文,可以選擇觸發這個動作的條件(可以選擇觸發器=觸發器
的名稱或者選擇觸發器似觸發器名稱),作爲條件,如若如圖不選擇觸發器的條件,那麼任
何消息都會提示到郵箱;
Zabbix 監控結合 Grafana 繪圖Zabbix 監控結合 Grafana 繪圖
添加報警動作,一旦此觸發器添加觸發,添加報警郵件的標題和內容,默認操作步驟持續
時間(修改持續時間爲 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}
Zabbix 監控結合 Grafana 繪圖
添加操作(添加接收郵件的用戶),步驟(指定郵件發送的次數),僅送到(選擇創建的媒
介類型);
Zabbix 監控結合 Grafana 繪圖
添加恢復操作(指故障恢復之後發送郵件的動作),具體步驟和添加操作相同;
Zabbix 監控結合 Grafana 繪圖
確認動作創建的完成;
Zabbix 監控結合 Grafana 繪圖Zabbix 監控結合 Grafana 繪圖
開始測試郵件報警
測試一:首先關閉 agent.zabbix.com 主機的 ftp 服務,測試郵件報警情況;
[root@agent ~]# /etc/init.d/vsftpd stop
關閉 vsftpd: [確定]
Zabbix 監控結合 Grafana 繪圖Zabbix 監控結合 Grafana 繪圖Zabbix 監控結合 Grafana 繪圖
測試二:關閉 win2k8 主機,測試郵件報警情況;
Zabbix 監控結合 Grafana 繪圖Zabbix 監控結合 Grafana 繪圖Zabbix 監控結合 Grafana 繪圖Zabbix 監控結合 Grafana 繪圖

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;
Zabbix 監控結合 Grafana 繪圖Zabbix 監控結合 Grafana 繪圖

10.配置 Grafana 的 web 界面,呈現效果;

啓用插件;
Zabbix 監控結合 Grafana 繪圖Zabbix 監控結合 Grafana 繪圖Zabbix 監控結合 Grafana 繪圖Zabbix 監控結合 Grafana 繪圖
添加數據源;
Zabbix 監控結合 Grafana 繪圖Zabbix 監控結合 Grafana 繪圖Zabbix 監控結合 Grafana 繪圖Zabbix 監控結合 Grafana 繪圖
創建儀表盤;
Zabbix 監控結合 Grafana 繪圖
創建儀表盤時指定顯示的圖形;
Zabbix 監控結合 Grafana 繪圖Zabbix 監控結合 Grafana 繪圖
輸入圖形名稱;
Zabbix 監控結合 Grafana 繪圖
選擇數據源和圖中需要顯示的主機和主機的監控項;
Zabbix 監控結合 Grafana 繪圖Zabbix 監控結合 Grafana 繪圖
創建完成,保存此儀表盤,輸入儀表盤的名稱;
Zabbix 監控結合 Grafana 繪圖Zabbix 監控結合 Grafana 繪圖
驗證創建的儀表盤;
Zabbix 監控結合 Grafana 繪圖Zabbix 監控結合 Grafana 繪圖
在現有的 dashboard 中添加圖形;
Zabbix 監控結合 Grafana 繪圖Zabbix 監控結合 Grafana 繪圖Zabbix 監控結合 Grafana 繪圖Zabbix 監控結合 Grafana 繪圖Zabbix 監控結合 Grafana 繪圖Zabbix 監控結合 Grafana 繪圖Zabbix 監控結合 Grafana 繪圖
驗證最終的儀表盤顯示圖形;
Zabbix 監控結合 Grafana 繪圖

四.項目實驗總結(遇到的錯誤及解決方案,

難點、重點解說,擴展學習)
1.錯誤及解決方案:
錯誤一:監控 Mysql 數據庫時,沒有圖形;
錯誤及解決方案:P/13-18
錯誤二:配置報警郵件時,郵箱收到的郵件爲 ATT00001.bin 的內容;
錯誤及解決方案:P/38
郵箱收到郵件出現 ATT00001.bin 的內容:
原因:zabbix 無法將內容轉義成中英文,需要藉助 dos2unix工具進行轉換

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章