天天看點

系統監控專題,Zabbix詳解——實作監控伺服器的各項名額。

What is Zabbix

    Zabbix是一個開源軟體基于WEB界面的提供分布式系統監視以及網 絡監視功能的企業級的開源解決方案。Zabbix能監視各種網絡參數,保證伺服器系統的安全營運;并提供靈活的通知機制以讓系統管理者快速定位/解決存在的各種問題。

    Zabbix支援使用MySQL、PostgreSQL、Oracle、IBM DB2資料庫,資料存儲。有着強大的資料采集能力,可以從網絡擷取幾乎無限類型的資料,具有分布式監控功能,能擴充到非常大的環境,高性能實時監控成千上萬的伺服器,虛拟機和網絡裝置,還具有可視化功能,能将收集的資料進行分析,繪成圖表友善使用者檢視。

Zabbix官網:www.zabbix.com

Zabbix社群平台:www.zabbix.org

實驗一、使用zabbix監控一台主機的網卡速率與cpu工作情況。

實驗環境:Centos6.5+Zabbix2.2+MySQL5.5

Server1.tuchao.com 192.168.1.90 — Zabbix-server  

admin1.tuchao.com 192.168.1.201 — Zabbix-agent

admin2.tuchao.com 192.168.1.202 — MySQL-Server

首先準備好資料庫admin2.tuchao.com 192.168.1.202

MySQL安裝(略)

授權zabbix庫給使用者。

grant all on zabbix.* to ‘tuchao’@’192.168.1.90’ identified by ‘123456’;

flush privileges;

安裝配置 Zabbix-Server  Server1.tuchao.com

https://www.zabbix.com/documentation/2.2/manual/installation/install  //官方源碼編譯安裝文檔

http://www.zabbix.com/download.php  //官方下載下傳頁面

yum install zabbix-2.2.6-1.el6.i386.rpm  zabbix-get-2.2.6-1.el6.i386.rpm zabbix-server-2.2.6-1.el6.i386.rpm  zabbix-server-mysql-2.2.6-1.el6.i386.rpm zabbix-web-2.2.6-1.el6.noarch.rpm  zabbix-web-mysql-2.2.6-1.el6.noarch.rpm

編輯主配置檔案 /etc/zabbix/zabbix_server.conf

PidFile=/var/run/zabbix/zabbix_server.pid

DBHost=192.168.1.202

DBName=zabbix

DBUser=tuchao

DBPassword=123456

zabbix_web 配置檔案 /etc/httpd/conf.d/zabbix.conf  //裡面定義了通過什麼路徑通路zabbix-web界面。

初始化資料庫,zabbix-server-mysql 安裝包,提供了三個腳本。

<a href="http://s3.51cto.com/wyfs02/M01/48/68/wKiom1QHyTDQPih0AANrxaoikHo192.jpg" target="_blank"></a>

使用mysql用戶端連接配接到,MySQL-server,建立庫,導入腳本。

mysql -utuchao -p123456 -h192.168.1.202

create database zabbix;

use zabbix

source /usr/share/doc/zabbix-server-mysql-2.2.6/create/schema.sql

source /usr/share/doc/zabbix-server-mysql-2.2.6/create/images.sql

source /usr/share/doc/zabbix-server-mysql-2.2.6/create/data.sql

修改php預設時區 

vim /etc/php.ini

date.timezone= Asia/Shanghai

啟動zabbix服務,啟動httpd服務。

/etc/init.d/zabbix-server start

/etc/init.d/httpd start

使用浏覽器通路http://192.168.1.90/zabbix/,進入管理界面。

添加一個主機。

找到configuration—hosts—create host

<a href="http://s3.51cto.com/wyfs02/M01/48/6A/wKioL1QHyajgmbJzAAL2mD-CWMQ971.jpg" target="_blank"></a>

定義一個items 用于監控網卡流入的速率

<a href="http://s3.51cto.com/wyfs02/M02/48/68/wKiom1QHyc_ykgDTAAO7eHRMMhI765.jpg" target="_blank"></a>

定義一個items 用于監控網卡流出的速率

<a href="http://s3.51cto.com/wyfs02/M00/48/68/wKiom1QHyguST3r_AAJ_zxMu_D0158.jpg" target="_blank"></a>

定義一個items 用于監控CPU中斷次數

<a href="http://s3.51cto.com/wyfs02/M00/48/6A/wKioL1QHykKg9ix8AAJ2tAsaEP8817.jpg" target="_blank"></a>

定義一個items 用于監控CPU上下文切換的次數

<a href="http://s3.51cto.com/wyfs02/M02/48/6A/wKioL1QHynXx46MOAAJ26o5eihc961.jpg" target="_blank"></a>

定義完成後,我們可以通過Monitoring — latest data,檢視狀态以及圖表。

接下來我們使用Graphs将兩個相關的item圖表,繪制成一張圖顯示。

Configuration—Hosts—Graphs—Create graph 

<a href="http://s3.51cto.com/wyfs02/M00/48/6A/wKioL1QHysDA114kAAH_4C9GkeM435.jpg" target="_blank"></a>

<a href="http://s3.51cto.com/wyfs02/M01/48/6A/wKioL1QHyuGyvneoAAIJXNaLbUc415.jpg" target="_blank"></a>

我們再使用Screen将兩張定義好的圖,拼在同一屏顯示。

Configuraton—Screens—Create screen

<a href="http://s3.51cto.com/wyfs02/M02/48/6A/wKioL1QHywawAzeEAADg5d42fOg306.jpg" target="_blank"></a>

<a href="http://s3.51cto.com/wyfs02/M02/48/68/wKiom1QHyxjy02zBAAN-SxAT1nA183.jpg" target="_blank"></a>

實驗二、通過監控網卡的流量,實作一次完整的觸發報警。

自定義一個宏Administration-General-Macros

<a href="http://s3.51cto.com/wyfs02/M00/48/86/wKioL1QJNDLz5v6PAAK_hhKDT6w124.jpg" target="_blank"></a>

給admin1定義一個觸發器(Triggers)

Configuration-Hosts-triggers-Create trigger

<a href="http://s3.51cto.com/wyfs02/M00/48/84/wKiom1QJNHOgP61VAAE-eo7SqvI758.jpg" target="_blank"></a>

<a href="http://s3.51cto.com/wyfs02/M01/48/86/wKioL1QJNJ_AhnUyAAHU-BV3kNk344.jpg" target="_blank"></a>

這時候我們再去看 monitoring-Graphs

<a href="http://s3.51cto.com/wyfs02/M01/48/84/wKiom1QJNNeR728iAAOx38o_E5I366.jpg" target="_blank"></a>

建立媒介用于通知功能 Administration-Media types-Create media type

<a href="http://s3.51cto.com/wyfs02/M00/48/84/wKiom1QJR7DzZOIcAADr9PHVkdM911.jpg" target="_blank"></a>

修改使用者通信媒介 Administration-users-Admin-Media

<a href="http://s3.51cto.com/wyfs02/M01/48/86/wKioL1QJR-LCliOPAADypSlVAIk796.jpg" target="_blank"></a>

定義action

Configuration-Actions-Create action

Action:

<a href="http://s3.51cto.com/wyfs02/M01/48/85/wKiom1QJSBbjVfVlAAJcCCHeqqc151.jpg" target="_blank"></a>

Conditions:

<a href="http://s3.51cto.com/wyfs02/M01/48/86/wKioL1QJSFCwEpWnAAHr2ynpu4U448.jpg" target="_blank"></a>

Operations:

<a href="http://s3.51cto.com/wyfs02/M02/48/85/wKiom1QJSH7iTusUAAMrXcQ0gaU651.jpg" target="_blank"></a>

添加報警更新

<a href="http://s3.51cto.com/wyfs02/M02/48/85/wKiom1QJSI7xavkHAANUaHfoNT4612.jpg" target="_blank"></a>

<a href="http://s3.51cto.com/wyfs02/M02/48/85/wKiom1QJSNOwevttAAHD3rhHMt0427.jpg" target="_blank"></a>

儲存配置後,我們來到Monitoring-Graphs檢視

<a href="http://s3.51cto.com/wyfs02/M00/48/85/wKiom1QJSQTSBfRsAAE3tnQSyWU555.jpg" target="_blank"></a>

目前流量指數是正常的,并沒有過線。我們檢視Monitoring-triggers,也可以看到狀态OK。

<a href="http://s3.51cto.com/wyfs02/M01/48/85/wKiom1QJSU6j_DrTAANm5Asz6mc608.jpg" target="_blank"></a>

這時我們對伺服器做壓力測試

<a href="http://s3.51cto.com/wyfs02/M01/48/87/wKioL1QJShyikYTcAAEkruc7ZOg325.jpg" target="_blank"></a>

這裡我們可以看出流量已經嚴重超标,觸發器也标紅色顯示有故障了。

<a href="http://s3.51cto.com/wyfs02/M00/48/87/wKioL1QJSj-QvZCoAAKP2jjDHjA845.jpg" target="_blank"></a>

<a href="http://s3.51cto.com/wyfs02/M00/48/85/wKiom1QJSn7S_6q-AAMmyaAQOoo510.jpg" target="_blank"></a>

我們把壓力測試關掉,讓伺服器流量恢複正常。

<a href="http://s3.51cto.com/wyfs02/M01/48/87/wKioL1QJSruylQiyAALyt6DOCZk064.jpg" target="_blank"></a>

實驗三、使用自定義帶參數的key,監控系統狀态。

Syntax

       UserParameter=key[*],command

編輯/etc/zabbix/zabbix_agentd.conf。

UserParameter=memory.usage[*],/bin/cat/proc/meminfo |awk '/^$1:/{print $$2}'

如果指令自身有$的話就要寫成$$,不然就會認為是傳遞給key的參數。

可以在zabbix-server端使用指令測試

zabbix_get-s 192.168.1.201 -k "memory.usage[MemTotal]"

zabbix_get-s 192.168.1.201 -k "memory.usage[MemFree]"

<a href="http://s3.51cto.com/wyfs02/M02/48/85/wKiom1QJS_6TjU34AAEQ0mVOaCs933.jpg" target="_blank"></a>

實作使用一個key通過傳遞不同的參數實作定義多個item,假如我們要監控主機的MemTotal、MemFree、Cache、Buffer。

接下來定義Item  這裡用MemFree做示範:

<a href="http://s3.51cto.com/wyfs02/M00/48/85/wKiom1QJTE3CgSwsAAKf7OT9v7o171.jpg" target="_blank"></a>

其餘的定義也差不多,使用相同的key傳遞不同的參數即可。

memory.usage[MemTotal]

memory.usage[Cache]

memory.usage[Buffer]

将四個監控項的資料繪制到一張圖上輸出,方法相同使用Graphs。

<a href="http://s3.51cto.com/wyfs02/M02/48/87/wKioL1QJTM3gmO9hAAMbpos6f_c486.jpg" target="_blank"></a>

實驗三、使用zabbix監控Nginx輸出的status狀态。

開啟nginx status

server {

       ...

       location /status {

              stub_status on;

              access_log off;

              allow 192.168.1.0/24;  # 允許通路的IP

              allow 127.0.0.1;

              deny all;

       }

}

建立配置檔案 /etc/zabbix/zabbix_agentd.d/nginx-status.conf自定義key :

UserParameter=Nginx.active[*],/usr/bin/curl -s "http://$1:$2/status" |awk '/^Active/{print $NF}'

UserParameter=Nginx.reading[*],/usr/bin/curl -s "http://$1:$2/status" | grep Reading | cut -d " " -f2

UserParameter=Nginx.writing[*],/usr/bin/curl -s "http://$1:$2/status" | grep Writing | cut -d " " -f4

UserParameter=Nginx.waiting[*],/usr/bin/curl -s "http://$1:$2/status" | grep Waiting | cut -d " " -f6

UserParameter=Nginx.accepted[*],/usr/bin/curl -s "http://$1:$2/status" | awk '/^[[:space:]]+[0-9]+[[:space:]]+[0-9]+[[:space:]]+[0-9]+/{print $$1}'

UserParameter=Nginx.handled[*],/usr/bin/curl -s "http://$1:$2/status" | awk '/^[[:space:]]+[0-9]+[[:space:]]+[0-9]+[[:space:]]+[0-9]+/{print $$2}'

UserParameter=Nginx.requests[*],/usr/bin/curl -s "http://$1:$2/status" | awk '/^[[:space:]]+[0-9]+[[:space:]]+[0-9]+[[:space:]]+[0-9]+/{print $$3}'

重新開機zabbix-agent服務

在zabbix-server使用指令測試

<a href="http://s3.51cto.com/wyfs02/M02/48/85/wKiom1QJTVPQjDXZAAOMCoQSW4c089.jpg" target="_blank"></a>

定義item 這裡我隻拿一個做示範

<a href="http://s3.51cto.com/wyfs02/M02/48/85/wKiom1QJTaCj0DekAALPQ9Ghlr8740.jpg" target="_blank"></a>

後面繪圖之類的,前面都有示範,這裡就不再重複了。

本文轉自qw87112 51CTO部落格,原文連結:http://blog.51cto.com/tchuairen/1548427

繼續閱讀