zabbix官方的一句話描述zabbix:
-
監視任何事情適用於任何IT基礎架構,服務,應用程序和資源的解決方案
-
Monitor anythingSolutions for any kind of IT infrastructure, services, applications, resources
-
監控基礎概論
- zabbix並非監控,而是實現監控的工具
- Zabbix-server是一個c/s和b/s結構
- 安裝zabbbix的服務器安裝時和php7.1有沖突:若此機器上已經安裝php7.1就安裝不上zabbix
-
監控知識體系
- 為什么要使用監控
- 1.對系統不間斷實時監控
- 2.實時反饋系統當前狀態
- 3.保證服務可靠性安全性
- 4.保證業務持續穩定運行
- 如果去到一家新的公司,如何入手?
- 1.硬件監控——路由器、交換機、防火牆
- 2.系統監控——cpu、內存、磁盤、網絡、進程、tcp
- 3.服務監控——nginx、php、tomcat、redis、memcache、mysql
- 4.web監控——響應時間、加載時間、渲染時間
- 5.日志監控——ELK、(收集、存儲、分析、展示)日志
- 6.安全監控——firewalld、WAF(nginx+lua)、安全寶、牛盾雲、安全狗
- 為什么要使用監控
-
單機監控
- 單機進程cpu查看負載和使用率
- 單機內存查看
- 單機磁盤查看
- 單機查看網絡
-
引入zabbix分布式監控系統
- 使用shell腳本來監控服務器
-
安裝zabbix
- (單機)--> LAMP
- (架構)--> LAP + MYSQL
-
服務端端口:10051
-
客戶端端口:10050
基礎模板
- 自定義監控閾值實戰
- 自定義監控項
- 單位
- 值類型
- 值映射
- 閾值的定義
- 單條件
- 多條件
- 自定義觸發器(動作)
- 自定義報警(郵件|微信)郵件發送的信息內容可以使用系統自帶的宏變量來對應修改(官方站點有宏變量的介紹)
- 自定義圖形、聚合圖形、幻燈片、網絡拓撲圖、Graphtree
- 自定義模板(給主機添加)
- 系統默認自帶的監控項設置閾值要根據生產中的需求來進修修改(閾值的高低)
服務監控(監控的服務要求有狀態頁面查詢)
- nginx
- PHP-fpm
- mysql
- tomcat
- redis
web監控
- 請求時間
- 響應時間
- 頁面不是200-->觸發報警
自動化監控:
-
自動發現(server端輪詢網段掃描發現agent)
-
** 自動發現:server-->輪詢掃描-->ip地址段--> **
-
自動發現:ip、ftp、ssh、web、pop3、imap、tcp
- ip范文自動發現(兩個階段:發現-->動作)
- szabbix-web自動發現定義自動監控的網段中的zabixx-agent(配置文件中server已經定義zabbix-server地址)
- ip范文自動發現(兩個階段:發現-->動作)
-
自動發現所執行的動作
- 發送消息
- 添加/刪除主機
- 啟用/禁用主機
- 添加主機到組
- 從組中刪除主機
- 將主機鏈接到模板/從模板中取消鏈接
- 執行遠程腳本命令
-
主動注冊(agent端主動告訴server端請求加入)
-
zabbix-server必須開啟自動注冊-->操作-->(通知|加入監控|套用模板)
-
Agent(ServerActive=10.0.0.61)-->啟動-->自動加入zabbix-server
zabbix-proxy分布式
- Zabbix-proxy使用場景:
- 監控遠程位置,解決跨機房
- 監控主機多,性能跟不上,延遲大
- 解決網絡不穩定
zabbix 是怎么實施監控的
一個監控系統運行的大概的流程是這樣的:
agentd需要安裝到被監控的主機上,它負責定期收集各項數據,並發送到zabbix server端,zabbix server將數據存儲到數據庫中,zabbix web根據數據在前端進行展現和繪圖。這里agentd收集數據分為主動和被動兩種模式:
主動:agent請求server獲取主動的監控項列表,並主動將監控項內需要檢測的數據提交給server/proxy
被動:server向agent請求獲取監控項的數據,agent返回數據。
- 主動模式被動模式:默認為zabbix-agent被動模式
主動模式與被動模式主要是站在zabbix-agent身份來說
- 1.被動模式(zabbix-server輪詢檢測zabbix-agent)
- 2.主動模式(zabbix-agent主動上報給zabbix-server)優
zabbix主動模式與被動模式選擇
- 1.當(Queue)隊列中有大量的延遲監控項
- 2.當監控主機超過300+ ,建議使用主動模式
【主動監測】通信過程如下:
zabbix首先向ServerActive配置的IP請求獲取active items,獲取並提交active tiems數據值server或者proxy。很多人會提出疑問:zabbix多久獲取一次active items?它會根據配置文件中的RefreshActiveChecks的頻率進行,如果獲取失敗,那么將會在60秒之后重試。分兩個部分:
獲取ACTIVE ITEMS列表
Agent打開TCP連接(主動檢測變成Agent打開)
Agent請求items檢測列表
Server返回items列表
Agent 處理響應
關閉TCP連接
Agent開始收集數據
主動檢測提交數據過程如下:
Agent建立TCP連接
Agent提交items列表收集的數據
Server處理數據,並返回響應狀態
關閉TCP連接
【被動監測】通信過程如下:
Server打開一個TCP連接
Server發送請求agent.ping\n
Agent接收到請求並且響應
Server處理接收到的數據
關閉TCP連接
1、新建監控項目時,選擇的是zabbix代理還是zabbix端點代理程式(主動式),前者是被動模式,后者是主動模式。
2、agentd配置文件中StartAgents參數的設置,如果為0,表示禁止被動模式,否則開啟。一般建議不要設置為0,因為監控項目很多時,可以部分使用主動,部分使用被動模式。
zabbix 自定義發現是怎么做的
1、首先需要在模板當中創建一個自動發現的規則,這個地方只需要一個名稱和一個鍵值。
2、過濾器中間要添加你需要的用到的值宏。
3、然后要創建一個監控項原型,也是一個名稱和一個鍵值。
4、然后需要去寫一個這樣的鍵值的收集。
自動發現實際上就是需要首先去獲得需要監控的值,然后將這個值作為一個新的參數傳遞到另外一個收集數據的item里面去。
zabbix 是怎么微信報警的 ----企業現在用的比較的多
1、首先,需要有一個微信企業號。(一個實名認證的[微信號]一個可以使用的[手機號]一個可以登錄的[郵箱號]
2、下載並配置微信公眾平台私有接口。
3、配置Zabbix告警,(增加示警媒介類型,添加用戶報警媒介,添加報警動作)。
zabbix 怎么開啟自定義監控
1、寫一個腳本用於獲取待監控服務的一些狀態信息。
2、在zabbix客戶端的配置文件zabbix_agentd.conf中添加上自定義的“UserParameter”,目的是方便zabbix調用我們上面寫的那個腳本去獲取待監控服務的信息。
3、在zabbix服務端使用zabbix_get測試是否能夠通過第二步定義的參數去獲取zabbix客戶端收集的數據。
4、在zabbix服務端的web界面中新建模板,同時第一步的腳本能夠獲取什么信息就添加上什么監控項,“鍵值”設置成前面配置的“UserParameter”的值。
5、數據顯示圖表,直接新建圖形並選擇上一步的監控項來生成動態圖表即可。
zabbix 監控了多少客戶端 客戶端是怎么進行批量安裝的
根據實際公司台數回答。
1、使用命令生成密鑰。
2、將公鑰發送到所有安裝zabbix客戶端的主機。
3、安裝 ansible 軟件,(修改配置文件,將zabbix 客戶機添加進組)。
4、創建一個安裝zabbix客戶端的劇本。
5、執行該劇本。
6、驗證。
實戰經驗總結:
-
1.先查看文檔中有沒有對應的腳本和xml模板
-
2.在服務端導入模板,查看對應的監控項名稱
-
3.測試腳本是否能取值,並存放置於/etc/zabbix/scripts目錄下,一定要增加執行權限
-
4.編寫xx.conf文件,里面主要存放的是如何定義監控項
-
5.最后重啟zabbix-agent
-
6.使用服務端zabbix-get 獲取 zabbix-agent對應的監控項的數據
-
范例:
- 公司未啟用swap(swap也是公司中服務器不建議啟用的,因為swap是將磁盤模擬內存使用,消耗cpu的性能,建議關閉swap。加大內存),隨着客戶的流量日益增大,導致將zabbix服務進程強制OOM, Zabbix服務進程被kill,有兩種解決的方法,如果公司為了性能着想加大內存,如果公司資有限添加swap,如果是為了服務的效率建議使用添加內存的方式,