Zabbix最佳實踐一:Zabbix4.0.2的安裝與配置

一.概述

在開始之前,一些概念和定義需要我們提前瞭解一下(以下內容摘自官方網站)。

1.1 幾個概念

架構

Zabbix 由幾個主要的功能組件組成,其職責如下所示。

Server

Zabbix server 是Zabbix agent 向其報告可用性、系統完整性信息和統計信息的核心組件。是存儲所有配置信息、統計信息和操作信息的核心存儲庫。

Zabbix Server 負責執行數據的主動輪詢和被動獲取,計算觸發器條件,向用戶發送通知。它是 Zabbix Agent 和 Proxy 報告系統可用性和完整性數據的核心組件。Server 自身可以通過簡單服務遠程檢查網絡服務(如Web服務器和郵件服務器)。

Zabbix Server是所有配置、統計和操作數據的中央存儲中心,也是 Zabbix 監控系統的告警中心。在監控的系統中出現任何異常,將被髮出通知給管理員。

基本的 Zabbix Server 的功能分解成爲三個不同的組件。他們是:Zabbix server、Web前端和數據庫。

Zabbix 的所有配置信息都存儲在 Server 和 Web 前端進行交互的數據庫中。例如,當你通過Web前端(或者API)新增一個監控項時,它會被添加到數據庫的監控項表裏。然後,Zabbix server 以每分鐘一次的頻率查詢監控項表中的有效項,接着將它存儲在 Zabbix server 中的緩存裏。這就是爲什麼 Zabbix 前端所做的任何更改需要花費兩分鐘左右才能顯示在最新的數據段的原因。

數據庫

所有配置信息以及 Zabbix 收集到的數據都被存儲在數據庫中。

Web 界面

爲了從任何地方和任何平臺輕鬆訪問 Zabbix ,我們提供了基於 web 的界面。該界面是 Zabbix server 的一部分,通常(但不一定)和 Zabbix server 運行在同一臺物理機器上。

Proxy

Zabbix proxy 可以替 Zabbix server 收集性能和可用性數據。Zabbix proxy 是 Zabbix 環境部署的可選部分;然而,它對於單個 Zabbix server 負載的分擔是非常有益的。

Zabbix proxy 是一個可以從一個或多個受監控設備採集監控數據並將信息發送到 Zabbix server 的進程,主要是代表 Zabbix server 工作。 所有收集的數據都在本地緩存,然後傳輸到 proxy 所屬的 Zabbix server。

部署Zabbix proxy 是可選的,但可能非常有利於分擔單個 Zabbix server 的負載。 如果只有代理採集數據,則 Zabbix server 上會減少 CPU 和磁盤 I/O 的開銷。Zabbix proxy 是無需本地管理員即可集中監控遠程位置、分支機構和網絡的理想解決方案。Zabbix proxy 需要使用獨立的數據庫。

Agent

Zabbix agent 部署在被監控目標上,以主動監控本地資源和應用程序(硬盤、內存、處理器統計信息等)。

Zabbix agent 收集本地的操作信息並將數據報告給 Zabbix server 用於進一步處理。一旦出現異常 (例如硬盤空間已滿或者有崩潰的服務進程),Zabbix server 會主動警告管理員指定機器上的異常。

Zabbix agents 的極高效率緣於它可以利用本地系統調用來完成統計數據的採集。

Zabbix agent 可以運行被動檢查和主動檢查。

在被動檢查 模式中 agent 應答數據請求。Zabbix server(或 proxy)詢求數據,例如 CPU load,然後 Zabbix agent 返還結果。

主動檢查 處理過程將相對複雜。Agent 必須首先從 Zabbix sever 索取監控項列表以進行獨立處理,然後會定期發送採集到的新值給 Zabbix server。

是否執行被動或主動檢查是通過選擇相應的監控項類型來配置的。 Zabbix agent 處理“Zabbix agent”或“Zabbix agent(active)”類型的監控項。

數據流

首先,爲了創建一個採集數據的監控項,您就必須先創建主機。其次,必須有一個監控項來創建觸發器。最後,您必須有一個觸發器來創建一個動作,這幾個點構成了一個完整的數據流。因此,如果您想要收到 CPU load it too high on Server X 的告警,您必須首先爲 Server X 創建一個主機條目,其次創建一個用於監視其 CPU 的監控項,最後創建一個觸發器,用來觸發 CPU is too high 這個動作,並將其發送到您的郵箱裏。雖然這些步驟看起來很繁瑣,但是使用模板的話,其實並不複雜。也正是由於這種設計,使得 Zabbix 的配置變得更加靈活易用。

1.2 一些定義

主機(host)

  • 你想要監控的聯網設備,有IP/DNS。

主機組(host group)

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

監控項(item)

  • 你想要接收的主機的特定數據,一個度量/指標數據。

值預處理(value preprocessing)

  • 轉化/預處理接收到的指標數據 存入數據庫之前。

觸發器(trigger)

  • 一個被用於定義問題閾值和“評估”監控項接收到的數據的邏輯表達式。當接收到的數據高於閾值時,觸發器從“OK”變成“Problem”狀態。當接收到的數據低於閾值時,觸發器保留/返回“OK”的狀態。

事件(event)

  • 一次發生的需要注意的事情,例如觸發器狀態改變、發現/監控代理自動註冊。

事件標籤(event tag)

  • 提前設置的事件標記可以被用於事件關聯,權限細化設置等。

事件關聯(event correlation)

  • 自動靈活的、精確的關聯問題和解決方案。

比如說,你可以定義觸發器A告警的異常可以由觸發器B解決,觸發器B可能採用完全不同的數據採集方式。

異常(problems)

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

異常更新(problem update)

  • Zabbix提供的問題管理選項,例如添加評論、確認異常、改變問題級別或者手動關閉等。

動作(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的負載的程序。

加密(encryption)

  • 支持Zabbix組建之間的加密通訊(server, proxy, agent, zabbix_sender 和 zabbix_get 程序) 使用TLS(Transport Layer Security )協議。

    二.環境

    由於實驗環境資源有限,本實驗中只有一臺 Zabbix Server 和一臺被監控的Host,配置如下:

Zabbix Server

[root@zabbix ~]# cat /etc/centos-release
CentOS Linux release 7.5.1804 (Core)
[root@zabbix ~]# ip addr show |grep eth0|egrep -o '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+\/[0-9]+'
172.31.3.21/22
[root@zabbix ~]# zabbix_server --version
zabbix_server (Zabbix) 4.0.2

Host

[root@httpd ~]# cat /etc/centos-release
CentOS Linux release 7.5.1804 (Core)
[root@httpd ~]# ip addr show |grep eth0|egrep -o '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+\/[0-9]+'
172.31.3.41/22
[root@httpd ~]# zabbix_agentd -V
zabbix_agentd (daemon) (Zabbix) 4.0.2

Host主機的防火牆已關閉。

三.安裝與配置過程

3.1 Zabbix Server 的安裝與配置

3.1.1 安裝倉庫配置包

[root@zabbix ~]# rpm -ivh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm

如果這一步無法正常執行,那麼我們還可以去官方倉庫下載相關repo的rpm包進行安裝。

[root@zabbix ~]# rpm -ivh zabbix-release-4.0-1.el7.noarch.rpm
警告:zabbix-release-4.0-1.el7.noarch.rpm: 頭V4 RSA/SHA512 Signature, 密鑰 ID a14fe591: NOKEY
準備中...                          ################################# [100%]
正在升級/安裝...
   1:zabbix-release-4.0-1.el7         ################################# [100%]

3.1.2 安裝 zabbix-server-mysql、zabbix-web-mysql 及zabbix-agent

[root@zabbix ~]# yum install -y zabbix-server-mysql zabbix-web-mysql zabbix-agent
已安裝:
  zabbix-agent.x86_64 0:4.0.2-1.el7                     zabbix-server-mysql.x86_64 0:4.0.2-1.el7                     zabbix-web-mysql.noarch 0:4.0.2-1.el7
作爲依賴被安裝:
  OpenIPMI-libs.x86_64 0:2.0.23-2.el7        OpenIPMI-modalias.x86_64 0:2.0.23-2.el7    apr.x86_64 0:1.4.8-3.el7_4.1                   apr-util.x86_64 0:1.5.2-6.el7
  dejavu-fonts-common.noarch 0:2.33-6.el7    dejavu-sans-fonts.noarch 0:2.33-6.el7      fontpackages-filesystem.noarch 0:1.44-8.el7    fping.x86_64 0:3.10-1.el7
  gnutls.x86_64 0:3.3.26-9.el7               httpd.x86_64 0:2.4.6-80.el7.centos         httpd-tools.x86_64 0:2.4.6-80.el7.centos       iksemel.x86_64 0:1.4-2.el7.centos
  libX11.x86_64 0:1.6.5-1.el7                libX11-common.noarch 0:1.6.5-1.el7         libXau.x86_64 0:1.0.8-2.1.el7                  libXpm.x86_64 0:3.5.12-1.el7
  libevent.x86_64 0:2.0.21-4.el7             libjpeg-turbo.x86_64 0:1.2.90-5.el7        libpng.x86_64 2:1.5.13-7.el7_2                 libtool-ltdl.x86_64 0:2.4.2-22.el7_3
  libxcb.x86_64 0:1.12-1.el7                 libxslt.x86_64 0:1.1.28-5.el7              libzip.x86_64 0:0.10.1-8.el7                   mailcap.noarch 0:2.1.41-2.el7
  net-snmp-libs.x86_64 1:5.7.2-32.el7        nettle.x86_64 0:2.7.1-8.el7                php.x86_64 0:5.4.16-45.el7                     php-bcmath.x86_64 0:5.4.16-45.el7
  php-cli.x86_64 0:5.4.16-45.el7             php-common.x86_64 0:5.4.16-45.el7          php-gd.x86_64 0:5.4.16-45.el7                  php-ldap.x86_64 0:5.4.16-45.el7
  php-mbstring.x86_64 0:5.4.16-45.el7        php-mysql.x86_64 0:5.4.16-45.el7           php-pdo.x86_64 0:5.4.16-45.el7                 php-xml.x86_64 0:5.4.16-45.el7
  t1lib.x86_64 0:5.1.2-14.el7                trousers.x86_64 0:0.3.14-2.el7             unixODBC.x86_64 0:2.3.1-11.el7                 zabbix-web.noarch 0:4.0.2-1.el7
完畢!

3.1.3 安裝mariadb(MySQL)

在某些CentOS版本中,MySQL已經被替換爲mariadb,mariadb完全兼容MySQL,並且不存在法律風險,是MySQL良好的替代品。當然,如果要安裝MySQL,那麼也是沒有問題的,我之前的博文有關各類MySQL的安裝教程,可供參考。由於實驗環境資源有限,本人把 mariadb 也安裝在了與 Zabbix Server 相同的主機上。生產環境的話還是儘量把數據庫獨立處理安裝與配置。

[root@zabbix ~]# yum -y install mariadb-server
已安裝:
  mariadb-server.x86_64 1:5.5.60-1.el7_5
作爲依賴被安裝:
  mariadb.x86_64 1:5.5.60-1.el7_5
完畢!
[root@zabbix ~]# systemctl start mariadb
[root@zabbix ~]# systemctl enable mariadb
Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.

3.1.3 創建相關數據庫並設置

[root@zabbix ~]# mysql -uroot -p
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
| zabbix             |
+--------------------+
MariaDB [(none)]> show variables like 'character_set_database';
+------------------------+--------+
| Variable_name          | Value  |
+------------------------+--------+
| character_set_database | latin1 |
+------------------------+--------+
1 row in set (0.00 sec)
MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix.gysl';
MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('zabbix.gysl');
MariaDB [(none)]> quit
Bye

Mariadb 安裝完成之後默認無密碼,在提示輸入密碼那一步直接按回車鍵即可登入。等入數據庫之後,創建了數據庫zabbix,授予所有的權限並設置密碼。最後順便給mariadb設置了密碼。

3.1.4 修改相關配置

[root@zabbix ~]# sed -i.bak '/^DBUser/a DBPassword=zabbix.gysl' /etc/zabbix/zabbix_server.conf
[root@zabbix ~]# cat /etc/zabbix/zabbix_server.conf |grep -v ^#|grep ^"\S"
LogFile=/var/log/zabbix/zabbix_server.log
LogFileSize=0
PidFile=/var/run/zabbix/zabbix_server.pid
SocketDir=/var/run/zabbix
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix.gysl
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
Timeout=4
AlertScriptsPath=/usr/lib/zabbix/alertscripts
ExternalScripts=/usr/lib/zabbix/externalscripts
LogSlowQueries=3000

3.1.5 數據初始化

[root@zabbix ~]# zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
Enter password:
[root@zabbix ~]# mysql -u zabbix -p
Enter password:
MariaDB [(none)]> use zabbix;
MariaDB [zabbix]> show tables;
144 rows in set (0.00 sec)
MariaDB [zabbix]> exit
Bye

輸入之前我們設置的密碼,回車鍵稍後即可。144張表,確認無誤。

3.1.6 修改時區

[root@zabbix ~]# sed -i.bak '/Europe\/Riga/a \tphp_value date.timezone Asia/Shanghai' /etc/httpd/conf.d/zabbix.conf

3.1.7 完成最後設置並重啓服務器

[root@zabbix ~]# systemctl stop firewalld
[root@zabbix ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@zabbix ~]# systemctl start httpd
[root@zabbix ~]# systemctl enable httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
[root@zabbix ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
[root@zabbix ~]# systemctl restart zabbix-server zabbix-agent
[root@zabbix ~]# systemctl enable zabbix-server zabbix-agent
Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-server.service to /usr/lib/systemd/system/zabbix-server.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-agent.service to /usr/lib/systemd/system/zabbix-agent.service.
[root@zabbix ~]# reboot

重啓之後如果無其他異常,那麼 Zabbix Server 已經正常運行,等待進一步配置。

3.2 配置 Zabbix Web

3.2.1 初始化Web設置

在瀏覽器地址欄輸入:http://172.31.3.21/zabbix
http://server_ip_or_name/zabbix)後按下回車鍵
點擊Next setup按鈕,按照提示輸入必填內容,填寫完畢之後界面大致如下:
安裝確認
出現以下界面說明安裝成功。
安裝成功
點擊Finish即可。

3.2.2 登錄並簡單設置

輸入用戶名 Admin 以及密碼 zabbix 以作爲 Zabbix 超級用戶登錄。頁面右上角找到用戶頭像標誌,把語言設置爲中文。

3.3 在Host主機上安裝agent程序並設置

[root@httpd ~]# rpm -ivh zabbix-release-4.0-1.el7.noarch.rpm
[root@httpd ~]# yum -y install zabbix-agent
[root@httpd ~]# sed -i.bak 's/Server=127.0.0.1/Server=172.31.3.21/g' /etc/zabbix/zabbix_agentd.conf
[root@httpd ~]# systemctl start zabbix-agent
[root@httpd ~]# systemctl enable zabbix-agent
Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-agent.service to /usr/lib/systemd/system/zabbix-agent.service.

3.4 添加第一臺被監控主機

登錄系統之後,依次點擊:配置->創建主機(右上角)。依次填入或者選擇如下圖所示項目:
Add Host

選擇模板並添加:
選擇模板

選擇完成之後,點擊添加,查看:

查看狀態

出現如上圖所示內容則代表配置成功,可以進一步探索Zabbix強大的功能了。

四.總結

4.1 總體來說,Zabbix是非常容易安裝、使用的,但是在安裝過程中還是需要注意一些細節。

4.3 Zabbix 的官方文檔很詳細,還提供中文版,但是也還有一些坑需要我們去思考、總結。

4.4 如果使用二進制安裝,那麼進程管理賬戶那是非常有必要考慮的。在官方文檔中有提到,zabbix server 和 zabbix agent 在同一臺主機上安裝時,需要使用不通的進程管理賬戶。

4.4 這篇文章主要介紹的Zabbix的安裝,截圖較少,需要一些使用經驗。進一步的使用會在後面的文章中具體展開介紹,不足之處萬望海涵。願大家與我一起成長!

五.相關資料

5.1 官方倉庫

5.2 下載地址及簡要安裝教程

5.3 Zabbix安全最佳實踐

5.4 CentOS環境下官方安裝教程

5.5 最新版官方中文文檔

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章