zabbix監控系統

 

企業級 Zabbix 監控

1、Zabbix監控架構

監控中心zabbix-server

|

------------------------------

| |

---proxy--- ---proxy---

agent agent agent agent

2、zabbix 監控郵件報警

Postfix

郵局(MTA)------郵遞員(smtp 25)------郵局(MTA)

| |

MDA maildrop dovecote MDA

| |

郵遞員(smtp 25) 郵遞員(pop3 110 imap 143)

| dns |

郵筒(MUA) 郵筒(MUA)

| |

lilei(user1) han×××(user2)

agent 代理 proxy代理

3、Zabbix 優點

開源,無軟件成本投入

Server 對設備性能要求低

支持設備多,自帶多種監控模板

支持分佈式集中管理,有自動發現功能,可以實現自動化監控

開放式接口,擴展性強,插件編寫容易

當監控的 item 比較多服務器隊列比較大時可以採用被動狀態,被監控客戶端主動 從server 端去下載需要監控的 item

然後取數據上傳到 server 端。 這種方式對服務器的負載比較小。

Api 的支持,方便與其他系統結合

4、Zabbix 缺點

需在被監控主機上安裝 agent,所有數據都存在數據庫裏, 產生的數據據很大,瓶頸主要在數據庫。

5、Zabbix 監控系統監控對象

數據庫: MySQL,MariaDB,Oracle,SQL Server

應用軟件:Nginx,Apache,PHP,Tomcat agent

-----------------------------------------------------------------------------------------------

集羣: LVS,Keepalived,HAproxy,RHCS,F5

虛擬化: VMware,KVM,XEN agent

操作系統:Linux,Unix,Windows性能參數

------------------------------------------------------------------------------------------------

硬件: 服務器,存儲,網絡設備 IPMI

網絡: 網絡環境(內網環境,外網環境) SNMP

6、Zabbix監控方式

被動模式 主動模式

7、zabbix 架構

Zabbix由幾個主要的軟件組件構成,這些組件的功能如下。

1、Server

Zabbix server 是agent程序報告系統可用性、系統完整性和統計數據的核心組件,是所有配置信息、統計信息和操

作數據的核心存儲器。

2、數據庫存儲

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

3、Web界面

爲了從任何地方和任何平臺都可以輕鬆的訪問Zabbix, 我們提供基於Web的Zabbix界面。該界面是Zabbix Server的

一部分,通常(但不一定)跟Zabbix Server運行在同一臺物理機器上。

如果使用SQLite,Zabbix Web界面必須要跟Zabbix Server運行在同一臺物理機器上。

4、Proxy 代理服務器

Zabbix proxy 可以替Zabbix Server收集性能和可用性數據。Proxy代理服務器是Zabbix軟件可選擇部署的一部分;當然,Proxy代理服務器可以幫助單臺Zabbix Server分擔負載壓力。

5、Agent監控代理

Zabbix agents監控代理 部署在監控目標上,能夠主動監控本地資源和應用程序,並將收集到的數據報告給Zabbix Server。

6、數據流

此外,瞭解Zabbix內部的數據流同樣很重要。監控方面,爲了創建一個監控項(item)用於採集數據,必須先創建一個主機(host)。告警方面,在監控項裏創建觸發器(trigger),通過觸發器(trigger)來觸發告警動作(action)。

因此,如果你想收到Server XCPU負載過高的告警,你必須: 1. 爲Server X創建一個host並關聯一個用於對CPU進行監控的監控項(Item)。 2. 創建一個Trigger,設置成當CPU負載過高時會觸發 3. Trigger被觸發,發送告警郵件 雖然看起來有很多步驟,但是使用模板的話操作起來其實很簡單,Zabbix這樣的設計使得配置機制非常靈活易用。

8、Zabbix常用術語的含義

1、主機 (host)

一臺你想監控的網絡設備,用IP或域名錶示

2、主機組 (host group)

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

3、監控項 (item)

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

4、觸發器 (trigger)

一個被用於定義問題閾值和“評估”監控項接收到的數據的邏輯表達式 當接收到的數據高於閾值時,觸發器

從“OK”變成“Problem”狀態。當接收到的數據低於閾值時,觸發器保留/返回一個“OK”的狀態。

5、事件 (event)

單次發生的需要注意的事情,例如觸發器狀態改變或發現有監控代理自動註冊

6、異常 (problem)

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

7、動作 (action)

一個對事件做出反應的預定義的操作。 一個動作由操作(例如發出通知)和條件(當時操作正在發生)組成

8、升級 (escalation)

一個在動作內執行操作的自定義場景; 發送通知/執行遠程命令的序列

9、媒介 (media)

發送告警通知的手段;告警通知的途徑

10、通知 (notification)

利用已選擇的媒體途徑把跟事件相關的信息發送給用戶

11、遠程命令 (remote command)

一個預定義好的,滿足一些條件的情況下,可以在被監控主機上自動執行的命令

12、模版 (template)

一組可以被應用到一個或多個主機上的實體(監控項,觸發器,圖形,聚合圖形,應用,LLD,Web場景)的集合 模版的任務就是加快對主機監控任務的實施;也可以使監控任務的批量修改更簡單。模版是直接關聯到每臺單獨的主機上。

13、應用 (application)

一組監控項組成的邏輯分組

14、web 場景 (web scenario)

利用一個或多個HTTP請求來檢查網站的可用性

15、前端 (frontend)

Zabbix提供的web界面

16、Zabbix API

Zabbix API允許你使用JSON RPC協議 (是一個無狀態且輕量級的遠程過程調用(RPC)傳送協議,其傳遞內容透過 JSON 爲主) 來創建、更新和獲取Zabbix對象(如主機、監控項、圖形和其他)信息或者執行任何其他的自定義的任務

17、Zabbix server

Zabbix軟件實現監控的核心程序,主要功能是與Zabbix proxies和Agents進行交互、觸發器計算、發送告警通知;並將數據集中保存等

18、Zabbix agent

一個部署在監控對象上的,能夠主動監控本地資源和應用的程序 Zabbix agent部署在監控的目標上,主動監測本地的資源和應用(硬件驅動,內存,處理器統計等)。 Zabbix agent收集本地的操作信息並將數據報告給Zabbix server用於進一步處理。一旦出現異常 (比如硬盤空間已滿或者有崩潰的服務進程), Zabbix server會主動警告管理員指定機器上的異常。. Zabbix agents 的極端高效緣於它可以利用本地系統調用來完成統計數據的收集。

19、被動(passive)和主動(active)檢查

Zabbix agents可以執行被動和主動兩種檢查方式。 在passive check 模式中agent應答數據請求,Zabbix server(或者proxy)詢問agent數據,如CPU 的負載情況,然後Zabbix agent回送結果。 Active checks 處理過程將相對複雜。 Agent必須首先從Zabbix sever索取監控項列表以進行獨立處理,然後週期性地發送新的值給server。 執行被動或主動檢查是通過選擇相應的監測項目類型來配置的。item type. Zabbix agent處理監控項類型有’Zabbix agent’和’Zabbix agent (active)’。

20、Zabbix proxy

一個幫助Zabbix Server收集數據,分擔Zabbix Server的負載的程序 Zabbix Proxy是一個可以從一個或多個受監控設備收集監控數據,並將信息發送到Zabbix sever的進程,基本上是代表sever工作的。 所有收集的數據都在本地進行緩存,然後傳送到proxy所屬的Zabbix sever。 部署Proxy是可選的,,但是可能非常有益於分散單個Zabbix sever的負載。 如果只有proxy收集數據,sever上的進程就會減少CPU消耗和磁盤I / O負載。 Zabbixproxy是完成遠程區域、分支機構、沒有本地管理員的網絡的集中監控的理想解決方案。 Zabbix proxy需要使用獨立的數據庫。

Zabbix 企業監控系統搭建

1、實驗準備

 centos7.5 系統服務器3臺、 一臺作爲監控服務器, 兩臺臺作爲被監控節點, 配置好yum源、 防火牆關閉、 各節點時鐘服務同步、 各節點之間可以通過主機名互相通信。

1)所有機器關閉防火牆和selinux

setenforing 0 (修改配置文件關閉)

sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

systemctl stop firewalld.service

2)根據架構圖,實驗基本設置如下:

機器名稱            IP配置           服務角色            備註

Server                192.168.11.11                zabbix-server      開啓監控功能

Node1                192.168.11.12                zabbix-agent            開啓監控功能

Node2                192.168.11.13                zabbix-agent            開啓監控功能

 

2、Zabbix的安裝

我們去官網下載一個包 zabbix-release-3.4-2.el7.noarch.rpm ,本地安裝至我們的虛擬機,這樣,我們本地就有了新的yum源,可以直接安裝zabbix服務:

1)更新yum倉庫

第一步:下載安裝官方yum源

yum -y install wget

wget http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-

2.el7.noarch.rpm

第二步:安裝zabbix源(官方可參考)

rpm -ivh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-

1.el7.noarch.rpm

安裝:[root@server ~]# yum -y install zabbix-agent zabbix-get zabbix-sender zabbix-servermysql zabbix-web zabbix-web-mysql

 

2)安裝設置數據庫:

1、創建 mariadb.repo

vim /etc/yum.repos.d/mariadb.repo

寫入以下內容:

[mariadb]

name = MariaDB

baseurl = https://mirrors.ustc.edu.cn/mariadb/yum/10.4/centos7-amd64

gpgkey=https://mirrors.ustc.edu.cn/mariadb/yum/RPM-GPG-KEY-MariaDB

gpgcheck=1

2、yum 安裝最新版本 mariadb

yum install MariaDB-server MariaDB-clien

首先,我們修改一下配置文件—— /etc/my.cnf.d/server.cnf :

[root@server ~]# vim /etc/my.cnf.d/server.cnf

[mysqld]

skip_name_resolve = ON                               #跳過主機名解析

innodb_file_per_table = ON                         #

innodb_buffer_pool_size = 256M                   #緩存池大小

max_connections = 2000                              #最大連接數

log-bin = master-log                                     #開啓二進制日誌

3、重啓我們的數據庫服務:

[root@server ~]# systemctl restart mariadb

[root@server ~]# mysql_secure_installation #初始化mariadb

4、創建數據庫並授權賬號

MariaDB [(none)]> create database zabbix character set 'utf8'; # 創建zabbix數據庫

MariaDB [(none)]> grant all on zabbix.* to 'zbxuser'@'192.168.37.%' identified by

'keer'; # 注意授權網段

MariaDB [(none)]> flush privileges; # 刷新授權

5、導入表 首先,我們來查看一下, zabbix-server-mysql 這個包提供了什麼:

[root@server ~]# 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.2.6

/usr/share/doc/zabbix-server-mysql-3.2.6/AUTHORS

/usr/share/doc/zabbix-server-mysql-3.2.6/COPYING

/usr/share/doc/zabbix-server-mysql-3.2.6/ChangeLog

/usr/share/doc/zabbix-server-mysql-3.2.6/NEWS

/usr/share/doc/zabbix-server-mysql-3.2.6/README

/usr/share/doc/zabbix-server-mysql-3.2.6/create.sql.gz #生成表的各種腳本

/usr/share/man/man8/zabbix_server.8.gz

/var/log/zabbix

/var/run/zabbix

我們來使用這個文件生成我們所需要的表:

[root@server ~]# gzip -d create.sql.gz

[root@server ~]# head create.sql #查看一下表頭

CREATE TABLE `users` (

`userid` bigint unsigned NOT NULL,

`alias` varchar(100) DEFAULT '' NOT NULL,

`name` varchar(100) DEFAULT '' NOT NULL,

`surname` varchar(100) DEFAULT '' NOT NULL,

`passwd` char(32) DEFAULT '' NOT NULL,

`url` varchar(255) DEFAULT '' NOT NULL,

`autologin` integer DEFAULT '0' NOT NULL,

`autologout` integer DEFAULT '900' NOT NULL,

`lang` varchar(5) DEFAULT 'en_GB' NOT NULL,

我們查看錶頭髮現沒有創建數據庫的命令,這也正是我們剛剛手動創建數據庫的原因。 然後,我們直接把

這個表導入至我們的數據庫即可:

[root@server ~]# mysql -uzbxuser -h192.168.37.111 -p zabbix < create.sql

Enter password:

導入以後,我們進去數據庫查看一下:

[root@server ~]# mysql -uzbxuser -h192.168.37.111 -p

Enter password:

MariaDB [(none)]> show databases;

+--------------------+

| Database |

+--------------------+

| information_schema |

| zabbix |

+--------------------+

MariaDB [(none)]> use zabbix;

Database changed

MariaDB [zabbix]> show tables;

+----------------------------+

| Tables_in_zabbix |

+----------------------------+

| acknowledges |

| actions |

| alerts |

……

| usrgrp |

| valuemaps |

+----------------------------+

127 rows in set (0.00 sec)

可以看出來,我們的數據已經導入成功了。

3)配置 server 端

我們的數據庫準備好了以後,我們要去修改server端的配置文件。

[root@server ~]# cd /etc/zabbix/

[root@server zabbix]# ls

web zabbix_agentd.conf zabbix_agentd.d zabbix_server.conf

#爲了方便我們以後恢復,我們把配置文件備份一下

[root@server zabbix]# cp zabbix_server.conf{,.bak}

[root@server zabbix]# vim zabbix_server.conf

ListenPort=10051 #默認監聽端口

SourceIP=192.168.37.111 #發採樣數據請求的IP

日誌的級別。一共有6個級別。我們可以根據自己的需要來設置級別。其中0表示輸出最少的信息,5表示輸出最詳細的信息,默認值爲3,設置爲3的話就表示,0、1、2、3四個級別都顯示。考慮到生產系統中的壓力時,這裏的信息,如果沒有必要的話,越簡單越好,只要在出錯的時候,我們可以依據其進行排錯即可。

DBHost=192.168.37.111 #數據庫對外的主機

DBName=zabbix #數據庫名稱

DBUser=zbxuser #數據庫用戶

DBPassword=keer #數據庫密碼

DBPort=3306 #數據庫啓動端口

以上,我們的基本配置已經完成,可以開啓服務了:

[root@server zabbix]# systemctl start zabbix-server.service

開啓服務以後,我們一定要去確認一下我們的端口有沒有開啓:

[root@server zabbix]# ss -nutl |grep 10051

tcp LISTEN 0 128 *:10051 *:*

tcp LISTEN 0 128 :::10051 :::*

如果查到的端口沒有開啓,我們就要去檢查一下配置文件有沒有出問題了。 至此,我們server端的進程啓

動已經ok了,接下來就可以使用web GUI來打開接口進行設定了

4)配置 web GUI

之後是鼠標點擊操作,不多加贅述。不清楚的繼續搜索文檔。



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