1. 程式人生 > >分散式系統監視zabbix講解一技術流ken

分散式系統監視zabbix講解一技術流ken

zabbix概述

Zabbix是什麼

Zabbix 是由Alexei Vladishev建立,目前由Zabbix SIA在持續開發和支援。

Zabbix 是一個企業級的分散式開源監控方案。

Zabbix是一款能夠監控各種網路引數以及伺服器健康性和完整性的軟體。Zabbix使用靈活的通知機制,允許使用者為幾乎任何事件配置基於郵件的告警。這樣可以快速反饋伺服器的問題。基於已儲存的資料,Zabbix提供了出色的報告和資料視覺化功能。這些功能使得Zabbix成為容量規劃的理想方案。

Zabbix支援主動輪詢和被動捕獲。Zabbix所有的報告、統計資訊和配置引數都可以通過基於Web的前端頁面進行訪問。基於Web的前端頁面可以確保您從任何方面評估您的網路狀態和伺服器的健康性。適當的配置後,Zabbix可以在IT基礎架構監控方面扮演重要的角色。對於只有少量伺服器的小型組織和擁有大量伺服器的大型公司也同樣如此。

Zabbix是免費的。Zabbix是根據GPL通用公共許可證第2版編寫和發行的。這意味著它的原始碼都是免費發行的,可供公眾任意使用。

zabbix定義

在本節中,你可以瞭解一些Zabbix常用術語的含義。

主機 (host)

- 一臺你想監控的網路裝置,用IP或域名錶示

主機組 (host group)

- 主機的邏輯組;它包含主機和模板。一個主機組裡的主機和模板之間並沒有任何直接的關聯。通常在給不同使用者組的主機分配許可權時候使用主機組。

監控項 (item)

- 你想要接收的主機的特定資料,一個度量資料。

觸發器 (trigger)

- 一個被用於定義問題閾值和“評估”監控項接收到的資料的邏輯表示式

當接收到的資料高於閾值時,觸發器從“OK”變成“Problem”狀態。當接收到的資料低於閾值時,觸發器保留/返回一個“OK”的狀態。

事件 (event)

- 單次發生的需要注意的事情,例如觸發器狀態改變或發現有監控代理自動註冊

異常 (problem)

- 一個處在“異常”狀態的觸發器

動作 (action)

- 一個對事件做出反應的預定義的操作。

一個動作由操作(例如發出通知)和條件(當時操作正在發生)組成

升級 (escalation)

- 一個在動作內執行操作的自定義場景; 傳送通知/執行遠端命令的序列

媒介 (media)

- 傳送告警通知的手段;告警通知的途徑

通知 (notification)

- 利用已選擇的媒體途徑把跟事件相關的資訊傳送給使用者

遠端命令 (remote command)

- 一個預定義好的,滿足一些條件的情況下,可以在被監控主機上自動執行的命令

模版 (template)

- 一組可以被應用到一個或多個主機上的實體(監控項,觸發器,圖形,聚合圖形,應用,LLD,Web場景)的集合

模版的任務就是加快對主機監控任務的實施;也可以使監控任務的批量修改更簡單。模版是直接關聯到每臺單獨的主機上。

應用 (application)

- 一組監控項組成的邏輯分組

web 場景 (web scenario)

- 利用一個或多個HTTP請求來檢查網站的可用性

前端 (frontend)

- Zabbix提供的web介面

Zabbix API

- Zabbix API允許你使用JSON RPC協議來建立、更新和獲取Zabbix物件(如主機、監控項、圖形和其他)資訊或者執行任何其他的自定義的任務

Zabbix server

- Zabbix軟體實現監控的核心程式,主要功能是與Zabbix proxies和Agents進行互動、觸發器計算、傳送告警通知;並將資料集中儲存等

Zabbix agent

- 一個部署在監控物件上的,能夠主動監控本地資源和應用的程式

Zabbix proxy

- 一個幫助Zabbix Server收集資料,分擔Zabbix Server的負載的程式

zabbix部署

1.安裝原始碼庫配置部署包

安裝原始碼庫配置部署包。這個部署包包含了yum配置檔案。

[[email protected] ~]# rpm -ivh http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-1.el7.noarch.rpm

2.安裝Zabbix部署包

安裝Zabbix部署包。

[[email protected] ~]# yum install zabbix-server-mysql zabbix-web-mysql -y

3.安裝Zabbix Agent

agent客戶端,你想要監控那臺伺服器就安裝這個軟體並啟動,我這裡演示就和伺服器端安裝在了一起,即伺服器端自己監控自己。

[[email protected] ~]# yum install zabbix-agent -y

4.安裝初始化資料庫

在MySQL上安裝Zabbix資料庫和使用者。在安裝完zabbix-server-mysql已經自帶了這個壓縮包。

只要解壓,然後匯入初始架構(Schema)和資料即可。

[[email protected] ~]# rpm -ql zabbix-server-mysql
/etc/logrotate.d/zabbix-server
/etc/zabbix/zabbix_server.conf
/usr/lib/systemd/system/zabbix-server.service
/usr/lib/tmpfiles.d/zabbix-server.conf
/usr/lib/zabbix/alertscripts
/usr/lib/zabbix/externalscripts
/usr/sbin/zabbix_server_mysql
/usr/share/doc/zabbix-server-mysql-3.0.22
/usr/share/doc/zabbix-server-mysql-3.0.22/AUTHORS
/usr/share/doc/zabbix-server-mysql-3.0.22/COPYING
/usr/share/doc/zabbix-server-mysql-3.0.22/ChangeLog
/usr/share/doc/zabbix-server-mysql-3.0.22/NEWS
/usr/share/doc/zabbix-server-mysql-3.0.22/README
/usr/share/doc/zabbix-server-mysql-3.0.22/create.sql.gz  ##解壓這個yasuobao
/usr/share/man/man8/zabbix_server.8.gz
/var/log/zabbix
/var/run/zabbix

複製到家目錄下,解壓

[[email protected] ~]# cp /usr/share/doc/zabbix-server-mysql-3.0.22/create.sql.gz ./
[[email protected] ~]# ls
anaconda-ks.cfg  create.sql.gz  ks-pre.log  original-ks.cfg
[[email protected] ~]# gunzip create.sql.gz 

匯入到資料庫

[email protected]:mysql3306.sock [zabbix]>create database zabbix;
[email protected]:mysql3306.sock [zabbix]>use zabbix;
[email protected]:mysql3306.sock [zabbix]>source /root/create.sql
[email protected]:mysql3306.sock [zabbix]>grant all on *.* to [email protected]'localhost' identified by '123';
[email protected]:mysql3306.sock [zabbix]>flush privileges;

5.啟動apache服務

[[email protected] ~]# systemctl restart httpd
[[email protected] ~]# ss -tnl | grep 80
LISTEN     0      128         :::80                      :::*      

6.通過瀏覽訪問zabbix

輸入ip/zabbix即可訪問,訪問前務必先關閉selinux以及防火牆

[[email protected] ~]# systemctl stop firewalld
[[email protected] ~]# setenforce 0

點選下一步

這裡報了時區的錯誤,需要修改一下配置檔案

[[email protected] ~]# vim /etc/httpd/conf.d/zabbix.conf
1 #
  2 # Zabbix monitoring system php web frontend
  3 #
  4 
  5 Alias /zabbix /usr/share/zabbix
  6 
  7 <Directory "/usr/share/zabbix">
  8     Options FollowSymLinks
  9     AllowOverride None
 10     Require all granted
 11 
 12     <IfModule mod_php5.c>
 13         php_value max_execution_time 300
 14         php_value memory_limit 128M
 15         php_value post_max_size 16M
 16         php_value upload_max_filesize 2M
 17         php_value max_input_time 300
 18         php_value max_input_vars 10000
 19         php_value always_populate_raw_post_data -1
 20         php_value date.timezone Asia/Shanghai   ##時區修改為亞洲/上海
 21     </IfModule>
 22 </Directory>
 23 
 24 <Directory "/usr/share/zabbix/conf">
 25     Require all denied
 26 </Directory>
 27 
 28 <Directory "/usr/share/zabbix/app">
 29     Require all denied
...
[[email protected] ~]# systemctl restart httpd  ##重啟APACHE服務

再次重新整理頁面

確認無誤之後,點選下一步

輸入剛才建立的資料庫zabbix,以及建立的使用者zabbix及密碼,然後點選下一步

這裡又報了一個無法通過sock檔案,連線到資料庫的錯誤。

這裡補充一下造成這個錯誤的原因主要有如下幾點:

1.防火牆,selinux沒有關

2.配置檔案的sock檔案沒有在/var/lib/mysql/下

3.對於/var/lib/mysql/,沒有許可權讀取,需要修改為chown -R mysql.mysql /var/lib/mysql

4.zabbix使用者授權錯誤,是檢視是授予的localhost許可權還是%許可權,即可以在哪個主機上面登入

5.mysql是否正常啟動

主要會有如上這些錯誤,大家在平時搭建的時候可以逐一進行排查。

檢視一下我的配置檔案,sock檔案是在/tmp下需要修改為/var/lib/mysql/mysql.sock.並重新啟動mysql

[[email protected] ~]# vim /etc/my.cnf
#my.cnf
[client]
port            = 3306
#socket          = /tmp/mysql3306.sock
socket          = /var/lib/mysql/mysql.sock

[mysql]
prompt="\\[email protected]\\h:\\p [\\d]>"
#pager="less -i -n -S"
#tee=/opt/mysql/query.log
no-auto-rehash

[mysqld]
#misc
user = mysql
basedir = /usr/local/mysql
datadir = /data/mysql/mysql3306/data
port = 3306
#socket = /tmp/mysql3306.sock
socket          = /var/lib/mysql/mysql.sock
event_scheduler = 0

tmpdir = /data/mysql/mysql3306/tmp
#timeout
interactive_timeout = 300
wait_timeout = 300

#character set
character-set-server = utf8...

[[email protected] ~]# mkdir /var/lib/mysql -p[[email protected] ~]# chown -R mysql.mysql /var/lib/mysql

[[email protected] ~]# pkill msyqld
[[email protected] ~]# mysqld &
[2] 2272
[[email protected] ~]# ss -tnl
State      Recv-Q Send-Q Local Address:Port               Peer Address:Port              
LISTEN     0      128           *:111                       *:*                  
LISTEN     0      128           *:22                        *:*                  
LISTEN     0      70           :::3306                     :::*                  
LISTEN     0      128          :::111                      :::*                  
LISTEN     0      128          :::80                       :::*                  
LISTEN     0      128          :::22                       :::*   

再次網站重新整理頁面

點選下一步

點選下一步

點選完成

輸入使用者名稱Admin 密碼zabbix

至此就已經安裝並啟動成功了。

zabbix啟動

zabbix已經安裝完後,現在就可以來啟動了。

[[email protected] ~]# vim /etc/zabbix/zabbix_server.conf 
02 #
103 # Mandatory: no
104 # Default:
105 # DBUser=
106 
107 DBUser=zabbix
108 
109 ### Option: DBPassword
110 #       Database password. Ignored for SQLite.
111 #       Comment this line if no password is used.
112 #
113 # Mandatory: no
114 # Default:
115 # DBPassword=
116 DBPassword=123
117 
118 ### Option: DBSocket
119 #       Path to MySQL socket.
120 #
121 # Mandatory: no
122 # Default:
123 # DBSocket=/tmp/mysql.sock
..
[[email protected] ~]# systemctl restart zabbix-server

現在在頁面檢視zabbix啟動狀態,發現zabbix已經在執行狀態了。

點選configuretion--hosts-disabled啟動被監控節點

執行如下命令啟動被監控節點

[[email protected] ~]# systemctl restart zabbix-agent

再次重新整理頁面之後發現enable後面的ZBX已經變成綠色,表示已經啟動。

點選monitoring--latest data--hosts--select選擇剛才的hosts即可看到下面監控輸出的內容