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

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

wKioL1h-NMmQyrdEAAAhKH-IIIk461_middle.jpg

耕耘實錄                                    關注                             4人評論 1580人閱讀 2018-12-06 20:20:29 php

一.概述

在開始以前,一些概念和定義須要咱們提早了解一下(如下內容摘自官方網站)。前端

1.1 幾個概念

架構mysql

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

Serverweb

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

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

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

基本的 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-releaseCentOS 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 --versionzabbix_server (Zabbix) 4.0.2

Host

[root@httpd ~]# cat /etc/centos-releaseCentOS 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 -Vzabbix_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 mariadbCreated 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 -pMariaDB [(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 zabbixEnter password:
[root@zabbix ~]# mysql -u zabbix -pEnter password:
MariaDB [(none)]> use zabbix;
MariaDB [zabbix]> show tables;
144 rows in set (0.00 sec)
MariaDB [zabbix]> exitBye

輸入以前咱們設置的密碼,回車鍵稍後便可。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 firewalldRemoved 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 httpdCreated 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-agentCreated 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-agentCreated 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 最新版官方中文文檔

相關文章
相關標籤/搜索