分布式系統監視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配置文件。
[root@ken ~]# rpm -ivh http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-1.el7.noarch.rpm
2.安裝Zabbix部署包
安裝Zabbix部署包。
[root@ken ~]# yum install zabbix-server-mysql zabbix-web-mysql -y
3.安裝Zabbix Agent
agent客戶端,你想要監控那臺服務器就安裝這個軟件並啟動,我這裏演示就和服務器端安裝在了一起,即服務器端自己監控自己。
[root@ken ~]# yum install zabbix-agent -y
4.安裝初始化數據庫
在MySQL上安裝Zabbix數據庫和用戶。在安裝完zabbix-server-mysql已經自帶了這個壓縮包。
只要解壓,然後導入初始架構(Schema)和數據即可。
[root@ken ~]# 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
復制到家目錄下,解壓
[root@ken ~]# cp /usr/share/doc/zabbix-server-mysql-3.0.22/create.sql.gz ./ [root@ken ~]# ls anaconda-ks.cfg create.sql.gz ks-pre.log original-ks.cfg [root@ken ~]# gunzip create.sql.gz
導入到數據庫
root@localhost:mysql3306.sock [zabbix]>create database zabbix; root@localhost:mysql3306.sock [zabbix]>use zabbix; root@localhost:mysql3306.sock [zabbix]>source /root/create.sql root@localhost:mysql3306.sock [zabbix]>grant all on *.* to zabbix@‘localhost‘ identified by ‘123‘; root@localhost:mysql3306.sock [zabbix]>flush privileges;
5.啟動apache服務
[root@ken ~]# systemctl restart httpd [root@ken ~]# ss -tnl | grep 80 LISTEN 0 128 :::80 :::*
6.通過瀏覽訪問zabbix
輸入ip/zabbix即可訪問,訪問前務必先關閉selinux以及防火墻
[root@ken ~]# systemctl stop firewalld [root@ken ~]# setenforce 0
點擊下一步
這裏報了時區的錯誤,需要修改一下配置文件
[root@ken ~]# 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 ... [root@ken ~]# 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
[root@ken ~]# vim /etc/my.cnf #my.cnf [client] port = 3306 #socket = /tmp/mysql3306.sock socket = /var/lib/mysql/mysql.sock [mysql] prompt="\\u@\\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
...
[root@ken ~]# mkdir /var/lib/mysql -p
[root@ken ~]# chown -R mysql.mysql /var/lib/mysql
[root@ken ~]# pkill msyqld [root@ken ~]# mysqld & [2] 2272 [root@ken ~]# 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已經安裝完後,現在就可以來啟動了。
[root@ken ~]# 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 .. [root@ken ~]# systemctl restart zabbix-server ##啟動zabbix服務器端
現在在頁面查看zabbix啟動狀態,發現zabbix已經在運行狀態了。
點擊configuretion--hosts-disabled啟動被監控節點
執行如下命令啟動被監控節點
[root@ken ~]# systemctl restart zabbix-agent
再次刷新頁面之後發現enable後面的ZBX已經變成綠色,表示已經啟動。
點擊monitoring--latest data--hosts--select選擇剛才的hosts即可看到下面監控輸出的內容
分布式系統監視zabbix講解一技術流ken