交流|給Zabbix穿上漂亮的外衣——Grafana

安裝Grafana

$ cd /root

Redhat & Centos(64 Bit)

$ wget dl.grafana.com/oss/rele

$ yum localinstall grafana-5.4.2-1.x86_64.rpm

下載zabbix & 其他插件

查看zabbix插件是否存在於grafana-cli工具內:

$ grafana-cli plugins list-remote | grep Zabbix

PS: id: alexanderzobnin-zabbix-app version: 3.9.1(存在,版本為3.9.1)

$ grafana-cli plugins install alexanderzobnin-zabbix-app

#安裝圖形的餅狀插件

$ grafana-cli plugins install grafana-piechart-panel

#安裝其他圖形插件

$ grafana-cli plugins install grafana-clock-panel

#鐘錶形展示

$ grafana-cli plugins install briangann-gauge-panel

#字元型展示

$ grafana-cli plugins install natel-discrete-panel

#伺服器狀態

$ grafana-cli plugins install vonage-status-panel

啟動Grafana

$ systemctl daemon-reload

$ systemctl restart grafana-server

$ systemctl status grafana-server

Grafana服務配置文件

在其定義了許多配置選項,通常位於Linux系統中的/etc/grafana/grafana.ini。

在這個配置文件中,可以更改默認管理密碼、http埠、grafana資料庫(sqlite 3、MySQL、Postgres)、身份驗證選項(Google、GitHub、LDAP、auth代理)以及許多其他選項。啟動您的Grafana伺服器。與您的管理用戶登錄(默認管理/管理)。打開側菜單(單擊頂部菜單中的Grafana圖標),頭部到數據源並添加數據源。

登錄Grafana服務首頁

在瀏覽器上輸入http://localhost(安裝格拉法納服務主機的IP):3000,賬號:密碼--admin:admin

第二界面是建議修改登錄密碼(可跳過->skip):

成功登陸格拉法納的首頁

添加ZABBIX的數據源到Grafana

Grafana默認沒有zabbix作為數據源,所以我們需要手動給zabbix安裝一個插件,然後再添加進Grafana即可,非常簡單,下面開始配置。

· Data Source — 數據源

· Grafana支持多種不同的時序資料庫數據源,Grafana對每種數據源提供不同的查詢方法,而且能很好的支持每種數據源的特性。

· 目前官方支持了如下幾種數據源:

Graphite

InfluxDB

OpenTSDB

Prometheus

Elasticsearch

CloudWatch

點擊左側菜單欄->齒輪->plugins(插件)

可在plugins插件頁上看見zabbix插件:

在Read me 上顯示zabbix插件的版本是3.9.1

點擊config->enable使用該插件:

在Dashboards(儀錶盤),已經插件內置的「模板」(待會查看):

添加zabbix插件完畢,可在首頁左側顯示zabbix插件的快捷按鈕

新建數據源Add data source(數據源)

點擊左側菜單欄->齒輪->data sources->add data source->zabbix

Zabbix的API地址為「http://localhost(zabbix server的IP地址)/zabbix/api_jsonrpc.php」,其中IP的安裝zabbix-server的伺服器IP

Zabbix API允許以編程方式檢索和修改Zabbix的配置,並提供對歷史數據的訪問。

它廣泛用於:

1、創建新的應用程序以使用Zabbix

2、將Zabbix與第三方軟體集成

3、自動執行常規任務

4、Zabbix API是基於Web的API,作為Web前端的一部分提供。

5、它使用JSON-RPC 2.0協議,這意味著兩件事:該API包含一組獨立的方法;

客戶端和API之間的請求和響應使用JSON格式進行編碼。調用api的過程:發送一個http請求,請求方法,提交數據,請求url

Zabbix的API賬號密碼就是Zabbix的Web端登錄賬號和密碼,賬號:admin, 密碼zabbix

新建數據源完畢

點擊左側菜單欄->zabbix->Zabbix server dashboard(zabbix伺服器儀錶盤)

Dashboards list:這個模塊是用來展示頁面列表用的。舉個例子,如果一個監控系統中,涉及到了多個頁面展示監控圖表,就會用到這個功能,這個模塊會列出你需要展示的頁面的列表,方便在當前頁面中,快速的切換到其他監控頁面。

顯示各種監控數據圖形

監控模板

添加模板就是定義一些變數,然後在製作圖形的過程中可以引用這些變數來達到模板的功效。這個template並不是指grafana提供了一個模板,而是提供了參數功能,就相當於一個宏變數,這個宏變數的值是和datasource級聯的(參數背後其實就是一個查詢語句,數據源內容發生變化,利用該參數獲取到的數據就會級聯發生變化)。

新建儀錶盤

點擊->圖形->home

點擊左上角->New dashboard

使用Panel(無使用模板)

點擊->齒輪

設置儀錶盤名稱:

下面以zabbix數據源為例,講解templete的使用。

先來看下template的使用和效果

這是我創建的一個panel,用來展示cpu system time:

添加模板的變數(使用模板)

點擊variables

溫馨提示:如果是針對某一個主機群組的模板,group的Query可以不需填寫*,可以直接寫明組名。比如:

group

Query:DB資料庫伺服器

host

Query:$group.*

application

Query: $group.$host.*

iteams

Query: $group.$host.$application.*

同樣是獲取一個監控項的數據,我現在換一種方式,紅框中的四個值我全部替換成template,其實就是四個變數。

顯示效果和為使用無模板的panel一致,在其他儀錶盤也可以使用該變數:

添加圖表格/曲線圖顯示

即變數設置完成後,就可以設置圖形,將之前所有添加的圖形,下面的組,主機,application,iteam都可以用變數來表示。

點擊圖表狀的按鈕->graph: (選擇一款圖形類型,如下選擇"Graph"。(磁碟和內存的監控圖類型可以選擇"Pie Chart"餅狀類型)

選定圖形指定的組、主機、應用集、監控項:

給監控圖形設置名稱:

設置度量值(當我們需要為某個系統某個服務做監控、做統計,就需要用到Metrics)

· Grafana使用JavaScript正則表達式來實現。例如,如果需要顯示的CPU時間(用戶、系統、iowait,等等)你可以使用正則表達式在項欄位創建圖:/CPU (?!idle).* time/

· 使用正則表達式對不同主機的相同監控項進行比較,使用/.*/表示匹配全部,/^salt/匹配以salt開頭的選項,以所有主機顯示CPU system time為例:

· 顯示圖表的圖例(數值和單位) :

CPU for server and agent圖表設置完成:

添加餅圖顯示

選擇PIE CHART:

設置監控主機和監控的項目:

成功顯示餅圖:

添加表格顯示

選擇table:

設置表格名稱:

設置監控主機和監控的項:

設置選項:

成功顯示錶格:

Zabbix+Grafana監控mysql

Zabbix-agent客戶端設置

在/usr/local/zabbix/scripts目錄下上次mysql的監控腳本

賦予腳本權利和設置所屬者和所屬組:

$ chmod u+x /usr/local/zabbix/scripts/chk_mysql.sh

$ chown -R zabbix.zabbix /usr/local/zabbix/scripts/chk_mysql.sh

修改zabbix_agentd.conf

$ vim /usr/local/zabbix/etc/zabbix_agentd.conf

增加下面三行腳本

$ UserParameter=mysql.version,mysql -V

$ UserParameter=mysql.status,/usr/local/zabbix/scripts/chk_mysql.sh $1

$ UserParameter=mysql.ping,mysqladmin -uzabbix -pzabbix -P3306 -h127.0.0.1 ping | grep -c alive

注意修改埠用戶名密碼

在MySQL資料庫添加zabbix用戶

mysql>GRANT PROCESS,SUPER,REPLICATION CLIENT ON *.* TO zabbix@127.0.0.1 IDENTIFIED BY zabbix;

mysql> flush privileges;

重啟zabbix_agentd服務

$ /etc/init.d/zabbix_agentd restart

Zabbix Server端測試

解決方法:

$ vim /etc/my.cnf

[mysqladmin]

user=zabbix

password=zabbix

重啟mysql

$ /etc/init.d/mysqld restart

再次測試

Zabbix Server配置監控

添加zabbix_agent的監控模板->Template DB Mysql

可在zabbix server的「圖形」中顯示mysql監控圖形

Grafana配置

選擇新建一個表格graph

點擊->edit(編輯)

選擇監控項

修改編題

Grafana呈現mysql的監控圖形

最終效果圖

回看監控情況

可將監控圖形的過去時刻倒回,查看圖形日誌:

測試報警功能

編輯/etc/grafana/grafana.ini配置文件:

重啟grafana服務

$ systemctl restart Grafana.service

所選的郵件應用要開啟smtp服務

點擊左側->鈴鐺->選擇notification channels

顯示新建的報警設置:

Zabbix插件不支持任何第三方報警功能(已測試)

設置為,我們點擊->send test

收到了grafana官方發過來的告警測試軟體:

監控網站延時率 & 判斷網站的聯通性

特別是對使用CDN網路的網站監控很有幫助

下載world-APP 插件

$ grafana-cli plugins install raintank-worldping-app

重啟grafana服務使配置生效

$ systemc tl restart grafana-server.service

要想啟用worldPing插件,需要先去grafana官網(grafana.com/orgs/riclee)申請一個API key

如圖所示,點擊Add Api Key按鈕,API key name可以隨便取:

生成API key後,記得先把生成的API key複製保存

獲得API key之後就可以啟用worldPing插件了,點擊enable輸入從官網獲取的API key,worldPing插件就啟用成功了。

點擊->左側菜單欄->->worldping home:

點擊->new endpoint

在endpoint name上輸入想要檢測的網站,等待片刻:

點擊->Go to smmary dashboard

此插件內置了www.google.com的demo

在上面你可以看到你所配置的每個地區能夠訪問www.google.com的正常運行時間,狀態,以及性能。

除此之外,worldping將每個監控指標分成獨自的儀錶盤。配置了例如ping、DNS、web檢測儀錶盤,數據更加詳細清晰:

Web

DNS

PING

Influxdb+telegraf 監控伺服器cpu、內存和硬碟

下載influxdb

cd /opt

# 下載速度很慢, 建議用迅雷下載, 然後通過XSHELL上載到伺服器

$ wget https://dl.influxdata.com/influx ... db-1.0.2.x86_64.rpm

$ yum localinstall influxdb-1.0.2.x86_64.rpm

啟動influxdb服務

$ systemctl restart influxdb

下載設置telegraf

$ cd /opt

# 下載速度很慢, 建議用迅雷下載, 然後通過ftp上載到伺服器

$ wget https://dl.influxdata.com/telegr ... af-1.0.1.x86_64.rpm

$ yum localinstall telegraf-1.0.1.x86_64.rpm

$ cd /etc/telegraf

# 只收集cpu, 內存和硬碟的數據

$ telegraf -sample-config -input-filter cpu:mem:disk -output-filter influxdb > telegraf.conf

# 設置將數據傳遞寫入influxdb伺服器

$ vi telegraf.conf

# 將地址改成 influxdb 對應的伺服器地址, 埠默認 8086, 默認資料庫 telegraf

啟動telegraf服務

$ systemctl restart telegraf

在grafana上設置

導入influxdb數據源

創建一個新的儀錶盤

定義度量值,注意選擇influxdb數據源:

設置閥值郵件告警

設置報警,設置完了後點擊->「test rule」

觸發報警,這時郵箱收到報警信息:

在菜單欄的Alerting欄目,收到網頁的報警

增加釘釘報警功能

點擊左側->菜單欄->鈴鐺->notification channels

設置告警方式為DingDing,圖中的url是釘釘機器人的webhook地址

在釘釘軟體上,選擇機器人設置:

點擊->完成,將webhook複製到grafana的告警url中:

設置完了後我們點擊->send test測試釘釘告警效果:

這時候我們會在釘釘上收到測試告警信息:

將釘釘告警設置在influxdb+telegraf的圖表中

達到預警閥值,觸發告警,這時釘釘的機器人會發來告警信息:

Influxdb+ collectd 監控伺服器cpu、內存和硬碟

下載collectd

$ yum install -y collectd # collectd依賴epel-release安裝源

安裝rrdtool插件

為了讓influxdb能夠識別collectd的數據,要安裝rrdtool插件,否則/var/lib/collectd/rrd目錄不會生成

rrdtool插件與依賴包的安裝:

$ yum install collectd-rrdtool rrdtool rrdtool-devel

設置collectd服務

Vim /etc/collectd.conf

FQDNLookup true

BaseDir "/var/lib/collectd"

PIDFile "/var/run/collectd.pid"

PluginDir "/usr/lib64/collectd"

TypesDB "/usr/share/collectd/types.db"

LoadPlugin syslog

LoadPlugin cpu

LoadPlugin disk

LoadPlugin interface

LoadPlugin memory

LoadPlugin rrdtool

LoadPlugin swap

LoadPlugin network

<Plugin cpu>

ReportByCpu true

ReportByState true

ValuesPercentage true

</Plugin>

<Plugin interface>

Interface "eno33554984" #用ifconfig查看Interface對應名稱

IgnoreSelected false

</Plugin>

<Plugin load>

ReportRelative true

</Plugin>

<Plugin network>

<Server "127.0.0.1" "25826"> #此IP寫入influxdb伺服器IP,這裡是監控本機所以寫環回地址

</Server>

</Plugin>

#配置日誌級別和路徑等屬性,重啟collectd,在/var/log/collectd.log中可看到日誌

LoadPlugin logfile

<Plugin logfile>

LogLevel info

File "/var/log/collectd.log"

</Plugin>

rrd目錄

啟動collectd後,可在/var/lib/collectd目錄下看到rrd目錄的監控內容

設置influxdb

編輯influxdb服務的配置文件/etc/influxdb/influxdb.conf

重啟服務

$ systemctl restart influxdb.service collectd.service

查看collectd資料庫

這裡的資料庫無需在influxdb里事先創建好,collectd在向influxdb發送數據的時候會自動創建該資料庫。這裡重啟influxdb服務,會發現其會開啟一個UDP的25826埠用來接收數據(netstat -tunpl | grep 25826)。

將collectd資料庫的influxdb在grafana導入zabbix

創建一個表格,在其度量值上輸入以下參數

也可以點擊toggle edit mode:使用sql腳本:

SELECT derivative("value") AS "value" FROM "interface_rx" WHERE "host" = client174 AND "type" = if_octets AND "instance" = eth0

92.png (37.59 KB, 下載次數: 0)

下載附件

2019-4-30 14:33 上傳

表格顯示監控圖形:

更多關於zabbix與Grafana的交流歡迎入群QQ177428068


推薦閱讀:

新一代智能化運維管理解決方案
從人肉到智能,阿里運維體系經歷了哪些變遷?
統一配置數據源:藍鯨配置平台
「雙態IT」架構下的自動化運維

TAG:Zabbix | grafana | 運維自動化 |