第一章 Zabbix 入門
1.1 Zabbix 概述
Zabbix 是一款能夠監控各種網絡參數以及服務器健康性和完整性的軟件。Zabbix 使用靈活的通知機制,允許用戶為幾乎任何事件配置基於郵件的告警,這樣可以快速反饋服務器的問題。基於已存儲的數據,Zabbix 提供了出色的報告和數據可視化功能。Zabbix 支持輪詢和被動捕獲。基於 Web 的前端頁面確保您的網絡狀態和服務器健康狀況可以從任何地方進行評估。在經過適當的配置后,Zabbix 可以在監控 IT 基礎設施方面發揮重要作用。無論是對於擁有少量服務器的小型組織,還是擁有大量服務器的大型公司而言,同樣適用。
1.2 Zabbix 基礎架構
核心組件主要是Agent 和Server,其中Agent 主要負責采集數據並通過主動或者被動的方式采集數據發送到Server/Proxy,除此之外,為了擴展監控項,Agent 還支持執行自定義腳本。Server 主要負責接收Agent 發送的監控信息,並進行匯總存儲,觸發告警等。ZabbixServer 將收集的監控數據存儲到Zabbix Database 中。Zabbix Database 支持常用的關系型數據庫,如果MySQL、PostgreSQL、Oracle 等,默認是MySQL,並提供Zabbix Web頁面(PHP 編寫)數據查詢。
1.3 Zabbix 和Prometheus
綜合比對:
如上面的表格,從開發語言上看,為了應對高並發和快速迭代的需求,監控系統的開發語言已經慢慢從C語言轉移到Go。不得不說,Go憑借簡潔的語法和優雅的並發,在Java占據業務開發,C占領底層開發的情況下,准確定位中間件開發需求,在當前開源中間件產品中被廣泛應用。從系統成熟度上看,Zabbix是老牌的監控系統:Zabbix是在1998年就出現的,系統功能比較穩定,成熟度較高。而Prometheus是最近幾年才誕生的,雖然功能還在不斷迭代更新,但站在巨人的肩膀之上,在架構設計上借鑒了很多老牌監控系統的經驗;從數據存儲方面來看,Zabbix采用關系數據庫保存,這極大限制了Zabbix采集的性能,而Prometheus自研一套高性能的時序數據庫,在V3版本可以達到每秒千萬級別的數據存儲,通過對接第三方時序數據庫擴展歷史數據的存儲;從配置復雜度上看,Prometheus只有一個核心server組件,一條命令便可以啟動,相比而言,其他系統配置相對麻煩;從社區活躍度上看,目前Zabbix比較活躍,但基本都是國內的公司參與,Prometheus在這方面占據絕對優勢,社區活躍度雖然不如,但是受到CNCF的支持,后期的發展值得期待;從容器支持角度看,由於Zabbix出現得比較早,當時容器還沒有誕生,自然對容器的支持也比較差。而Prometheus的動態發現機制,不僅可以支持swarm原生集群,還支持Kubernetes容器集群的監控,是目前容器監控最好解決方案。
結論:
如果監控的是物理機,用 Zabbix,Zabbix在傳統監控系統中,尤其是在服務器相關監控方面,占據絕對優勢。甚至環境變動不會很頻繁的情況下,Zabbix 也會比 Prometheus 好使;但如果是雲環境的話,除非是 Zabbix 玩的非常溜,可以做各種定制,否則還是 Prometheus 吧,畢竟人家就是干這個的。Prometheus開始成為主導及容器監控方面的標配,並且在未來可見的時間內被廣泛應用。如果是剛剛要上監控系統的話,不用猶豫了,Prometheus 准沒錯
第二章 Zabbix部署
2.1 集群規划
進程 | hadoop102節點 | hadoop103節點 | hadoop104節點 |
---|---|---|---|
zabbix-agent | √ | √ | √ |
zabbix-server | √ | ||
MySQL | √ | ||
zabbix-web | √ |
2.2 准備工作
2.2.1 關閉集群
如果集群開啟,先關閉集群。因為安裝Zabbix前,需要重啟虛擬機。
2.2.2 關閉 3 台節點防火牆
分別在 102 、 103 和 104 上執行
sudo systemctl stop firewalld.service
sudo systemctl disable firewalld.service
2.2.3 關閉 3 台節點上的 SELinux
1)修改配置文件/etc/selinux/config
sudo vim /etc/selinux/config
修改如下內容
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three two values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
2)重啟服務器
[atguigu@hadoop102 ~]$ sudo reboot
2.3 配置 3 台節點 的 Zabbix yum 源
2.3.1 安裝 yum 倉庫
- 安裝 zabbix 的 軟件 倉庫 配置包
這個包包含了 yum(軟件包管理器)的配置文件。
[wkf@hadoop102 ~]$ sudo rpm -Uvh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
[wkf@hadoop103 ~]$ sudo rpm -Uvh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
[wkf@hadoop104 ~]$ sudo rpm -Uvh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
- 安裝 Software Collections 倉庫
[wkf@hadoop102 ~]$ sudo yum install -y centos-release-scl
2.3.2 修改 zabbix 倉庫配置文件
hadoop102、hadoop103、hadoop104三台節點,依次執行如下步驟。
- 查看原始 zabbix. repo 文件
sudo cat /etc/yum.repos.d/zabbix.repo
查看內容如下
[wkf@hadoop102 ~]$ sudo cat /etc/yum.repos.d/zabbix.repo
[zabbix]
name=Zabbix Official Repository - $basearch
baseurl=http://repo.zabbix.com/zabbix/5.0/rhel/7/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
[zabbix-frontend]
name=Zabbix Official Repository frontend - $basearch
baseurl=http://repo.zabbix.com/zabbix/5.0/rhel/7/$basearch/frontend
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
[zabbix-debuginfo]
name=Zabbix Official Repository debuginfo - $basearch
baseurl=http://repo.zabbix.com/zabbix/5.0/rhel/7/$basearch/debuginfo/
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
gpgcheck=1
[zabbix-non-supported]
name=Zabbix Official Repository non-supported - $basearch
baseurl=http://repo.zabbix.com/non-supported/rhel/7/$basearch/
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX
gpgcheck=1
- 執行以下命令完成全局替換 修改為阿里雲鏡像
[wkf@hadoop102 ~]$ sudo sed -i 's/http:\/\/repo.zabbix.com/https:\/\/mirrors.aliyun.com\/zabbix/g' /etc/yum.repos.d/zabbix.repo
- 查看修改之后的 zabbix .repo 文件
[wkf@hadoop102 ~]$ sudo cat /etc/yum.repos.d/zabbix.repo
[zabbix]
name=Zabbix Official Repository - $basearch
baseurl=https://mirrors.aliyun.com/zabbix/5.0/rhel/7/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
[zabbix-frontend]
name=Zabbix Official Repository frontend - $basearch
baseurl=https://mirrors.aliyun.com/zabbix/5.0/rhel/7/$basearch/frontend
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
[zabbix-debuginfo]
name=Zabbix Official Repository debuginfo - $basearch
baseurl=https://mirrors.aliyun.com/zabbix/5.0/rhel/7/$basearch/debuginfo/
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
gpgcheck=1
[zabbix-non-supported]
name=Zabbix Official Repository non-supported - $basearch
baseurl=https://mirrors.aliyun.com/non-supported/rhel/7/$basearch/
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX
gpgcheck=1
- 打開 /etc/ repos .d zabbix.repo 文件, 啟用 zabbix web 倉庫
sudo vim /etc/yum.repos.d/zabbix.repo
2.4 安裝 Zabbix
在hadoop102、hadoop103、hadoop104三台節點分別執行以下安裝命令
[wkf@hadoop102 ~]$ sudo yum install -y zabbix-server-mysql zabbix-agent zabbix-web-mysql-scl zabbix-apache-conf-scl
[wkf@hadoop103 ~]$ sudo yum install -y zabbix-agent
[wkf@hadoop104 ~]$ sudo yum install -y zabbix-agent
2.5 配置 Zabbix
2.5.1 創建 zabbix 數據庫
mysql -uroot -p123456 -e"create database zabbix character set utf8 collate utf8_bin"
2.5.2 導入 Z abbix 建表語句
zcat /usr/share/doc/zabbix-server-mysql-5.0.22/create.sql.gz | mysql -uroot -p123456 zabbix
2.5.3 配置 Zabbix_ Server (hadoop102)
修改zabbix-server配置文件
sudo vim /etc/zabbix/zabbix_server.conf
DBHost=hadoop102
DBName=zabbix
DBUser=root
DBPassword= 123456
2.5.4 配置 Zabbix Agent (三台節點)
修改zabbix-agent配置文件
sudo vim /etc/zabbix/zabbix_agentd.conf
修改如下內容:
Server=hadoop102
#ServerActive=127.0.0. 1
#Hostname=Zabbix server
2.5.5 配置 Zabbix Web 時區(hadoop102)
修改/etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf文件
sudo vim /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
修改如下內容:
php_value[date.timezone] = Asia/Shanghai
2.6 啟動停止 Zabbix
2.6.1 啟動 Zabbix
[wkf@hadoop102 ~]$ sudo systemctl start zabbix-server zabbix-agent httpd rh-php72-php-fpm
[wkf@hadoop102 ~]$ sudo systemctl enable zabbix-server zabbix-agent httpd rh-php72-php-fpm
[wkf@hadoop103 ~]$ sudo systemctl start zabbix-agent
[wkf@hadoop103 ~]$ sudo systemctl enable zabbix-agent
[wkf@hadoop104 ~]$ sudo systemctl start zabbix-agent
[wkf@hadoop104 ~]$ sudo systemctl enable zabbix-agent
2.6.2 停止 Zabbix
[wkf@hadoop102 ~]$ sudo systemctl stop zabbix-server zabbix-agent httpd rh-php72-php-fpm
[wkf@hadoop102 ~]$ sudo systemctl disable zabbix-server zabbix-agent httpd rh-php72-php-fpm
[wkf@hadoop103 ~]$ sudo systemctl stop zabbix-agent
[wkf@hadoop103 ~]$ sudo systemctl disable zabbix-agent
[wkf@hadoop104 ~]$ sudo systemctl stop zabbix-agent
[wkf@hadoop104 ~]$ sudo systemctl disable zabbix-agent
2.6.3 連接 Zabbix_ Web 數據庫
- 瀏覽器訪問 http://hadoop102/zabbix
- 檢查配置
-
配置數據庫
-
配置 zabbix server
2.6.4 登錄 Zabbix
- 用戶名: Admin 密碼: zabbix
-
點擊 User Settings ,語言設成中文
注意:這里默認會對Zabbix Server進行監控,但是我們可以看到目前該主機是紅色,不可用的狀態,原因是主機的地址不能使用127.0.0.1需要后續我們單獨配置。
第三章 Zabbix使用
3.1 Zabbix 術語
3.1.1 主機( Host )
一台你想監控的網絡設備,用IP或域名表示。
3.1.2 監控項( Item )
你想要接收的主機的特定數據,一個度量數據。
3.1.3 觸發器( Trigger )
一個被用於定義問題閾值和“評估”監控項接收到的數據的邏輯表達式。
3.1.4 動作( Action )
一個對事件做出反應的預定義的操作,比如郵件通知。
3.2 Zabbix 實戰
這里我們以監控Hdfs集群為例,給大家進行演示,所以首先先執行start-dfs.sh,啟動HDFS
3.2.1 創建 Host
- 點擊 配置/主機/創建主機
- 配置主機( Host )
- 查看新增( Host )
- 重復以上步驟,再創建 hadoop 103 、 hadoop 104 主機。
3.2.2 創建 監控項( Items )
- 點擊 監控項( Items )
- 點擊創建監控項( Create Item )
- 配置監控項( Item )
- 查看創建的監控項
- 查看監控項最新數據
3.2.3 創建觸發器( Trigger )
- 點擊 配置/主機/觸發器
- 點擊創建觸發器
- 編輯觸發器
3.2.4 創建動作( Action )
- 點擊 配置/動作/創建動作
- 編輯動作( Action )
定義操作
3.2.5 申請郵箱
郵件報警,可以采用126、163、qq等郵箱。下面以qq郵箱為例。
點擊郵箱設置/賬戶
開啟 SMTP 服務
要發送短信認證
記住授權碼
3.2.6 創建報警媒介類型( Media type )
- 點擊 管理/報警媒介類型/Email
- 編輯 Email ,這里配置的 email 用於發送報警郵件。
- 測試 Email
3.2.7 給動作中配置的 用戶 配置 Email
3.2.8 測試
- 關閉集群中的 HDFS ,會有如下效果
- 查看儀表盤故障信息
- 查看郵件,接收故障信息
3.3 創建模板
模板是可以方便地應用於多個主機的一組實體。 實體可以是監控項、觸發器、圖形、應用、web場景等。由於生產上的許多主機是相同或類似的,所以,為一個主機創建的一組實體(項目,觸發器,圖形,...)可能對其它主機也適用。當然,你可以將它們復制到每個新的主機上,但需要費很大功夫。相反,使用模板,可以將它們復制到一個模板,然后根據需要將模板應用於盡可能多的主機。因此,使用模板是減少工作量並簡化Zabbix配置的好方法。
另外,使用模板還有一個好處是當所有主機都需要更改時,只需要在模板上更改某些內容將會將更改應用到所有鏈接的主機。
3.3.1 點擊配置/模板/創建模板
3.3.2 配置模板名稱/群組
3.3.3 配置監控項
3.3.4 配置觸發器
3.3.5 配置動作
添加模板觸發條件
3.3.6 為 hadoop 103 應用模板
3.3.7 為 hadoop 104 應用模板
同上
3.3.8 測試
啟動 hadoop 集群
停止 hadoop 集群
查看報警郵件
收到來自三台主機的報警郵件