部署Zabbix監控

監控系統基礎

1、監控系統工作方式
數據採集 –> 數據存儲 –> 報警 –> 數據展示

2、NMS
網絡監控系統,(Network Management System)

3、SNMP協議
SNMP:(Simple Network Management Protocol),在Linux上實現SNMP協議的包是net-snmp

1、SNMP工作模式
NMS端向agent端發起採集數據的請求
agent端將收集到本地系統的狀態信息向NMS端發送報告
NMS端還可以向agent端發起修改配置的請求

2、SNMP組件:基於TCP/IP實現的網絡監控三個組件:
MIB:(management information base)管理信息庫—-監控端或被監控端可以實現的數據採集規範。因爲SNMP協議過於簡單,所以需要MIB來規定
具體的規範來告知NMS要獲取什麼指標。{MIB試圖,MIB樹狀結構}
SMI:MIB的表示符號。
SNMP:SNMP協議

3、NMS端可發起的操作:
GET:獲取數據
GETNEXT:獲取下一個參數
SET:請求Agent修改配置
TRAP:等待agent發送會報告

4、監聽端口:
NMS:162
agent:161

5、SNMP協議版本:
v1
v2:v2c,實現了認證功能
v3:實現是認證、加密、解密的功能

zabbix程序架構及安裝部署

1、組件

    zabbix-server       # 使用C語言開發
    zabbix-agent        # 使用C語言開發,與server通信的協議有zabbix協議、ICMP/IPMI/SNMP、HTTP等協議
    zabbix web GUI      # 使用PHP開發。能夠通過數據庫提取數據,實現數據可視化,同時zabbix web GUI也是zabbix-server的配置接口
    zabbix proxy        # 分佈式監控環境中的組件
    zabbix database     # MySQL、PGSQL、Oracle、DB2、SQLite

2、zabbix常用術語

主機(host):要監控的網絡設備,可由IP或DNS名稱指定
主機組(host group):主機的邏輯容器,可以包含主機的模板。但同一個組內的主機和模板
不能相互鏈接,主機組通常在給用戶或用戶組指派監控權限時使用。
監控項(item):一個特定監控指標的相關數據,這些數據來自於監控對象。對於item是
zabbix進行數據收集的核心,沒有item,將沒有數據。相對某監控對象而言,每個item
都有"key"進行標識。
觸發器(trigger):一個表達式。用於評估某監控對象的某特定item內所接收到的數據是否
在合理範圍內,即閾值。接收到的數據量大於閾值時,觸發器狀態將從 "OK" 撞邊爲 "Problem" ,
當數據量再次迴歸到合理範圍時,器狀態將從 "Problem" 轉變爲 "OK"。
事件(event):即發生的一個值得關注的事情,例如觸發器狀態轉變,新的agent或重新上線的
agent的自動註冊等。
動作(action):指對特定事件實現定義的處理方法,通過包含操作(如發送通知)和條件
(何時執行操作) {動作包括:通知和執行外部命令}。
報警升級(escalation):發送警報或執行遠程命令的自定義方案,如每隔5分鐘發送一次警報,
共發送5次。
媒介(media):發送通知的手段或通道,如Email、SMS等。
通過(motificaton):通過選定的媒介向用戶發送的有關某事件的信息。
遠程命令(remote command):預定義的命令,可在被監控的主機處於某特定條件下自動執行。
模板(template):用於快速定義被監控主機的預設條目集合,通常包含item、grigger、
graph、screen、application以及low-level discovery rule(發現規則)。模板可以直接
鏈接至單個主機。
應用(application):一組item的集合。
web場景(web scennario):用於檢測web站點可用性的一個或多個HTTP請求。
前端(frontend):zabbix的web gui接口。

安裝部署Zabbix
下面是我使用到的包
我是使用的現在最新的zabbix的版本

zabbix-agent.x86_64                       3.4.4-2.el7                  zabbix   
zabbix-get.x86_64                         3.4.4-2.el7                  zabbix   
zabbix-java-gateway.x86_64                3.4.4-2.el7                  zabbix   
zabbix-proxy-mysql.x86_64                 3.4.4-2.el7                  zabbix     
zabbix-proxy-sqlite3.x86_64               3.4.4-2.el7                  zabbix   
zabbix-sender.x86_64                      3.4.4-2.el7                  zabbix   
zabbix-server-mysql.x86_64                3.4.4-2.el7                  zabbix      
zabbix-web-mysql.noarch                   3.4.4-2.el7                  zabbix   

下載官網的zabbix-release-3.4-2.el7.noarch.rpm 包

 [ root@node1 ~ ]# wget http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release
-3.4-2.el7.noarch.rpm

解壓後yum倉庫會生成直接指向官網的源

 [ root@node1 ~ ]# rpm -ivh zabbix-release-3.4-2.el7.noarch.rpm
 [ root@node1 ~ ]# yum repolist

首先要確保自己是否安裝mysql或是pgsql,如沒有則安裝之。
我這裏用的是mysql
先編輯配置

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

skip_name_resolve = ON
innodb_file_per_table = ON
innodb_buffer_pool_size = 256M
max_connections = 2000


log-bin = master-log

啓動

[ root@node1 ~ ]# systemctl start mariadb

安全初始化mysql,並刪除匿名用戶

[ root@node1 ~ ]# mysql_secure_installation 

由於zabbix要連接到數據庫,我們就需要給他創建數據庫。

MariaDB [(none)]> CREATE DATABASE zbxdb CHARACTER SET 'utf8';

授權用戶訪問

MariaDB [(none)]> GRANT ALL ON zbxdb.* TO 'zbxuser'@'172.18.25.%' 
IDENTIFIED BY 'zbxpass';

刷新授權

MariaDB [(none)]> FLUSH PRIVILEGES;

在監控端安裝

[ root@node1 ~ ]# yum -y install zabbix-server-mysql  zabbix-web 
 zabbix-web-mysql  zabbix-agent  zabbix-get  zabbix-sender
[ root@node1 ~ ]# 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/share/doc/zabbix-server-mysql-3.4.4/create.sql.gz      #生成數據庫的各種表的腳本

複製生產數據庫的各種表的腳本到本地

[ root@node1 ~ ]# cp /usr/share/doc/zabbix-server-mysql-3.4.4/create.sql.gz .

解壓

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

然後把腳本導入到數據庫

[ root@node1 ~ ]# mysql -uzbxuser -h172.18.25.51 -pzbxpass zbxdb < create.sql

然後登錄數據庫查看是否把表的生產了

MariaDB [(none)]> show databases;
MariaDB [(none)]> use zbxdb;
MariaDB [zbxdb]> show tables;

開始修改zabbix的配置文件
先原地備份

[ root@node1 ~ ]# cd /etc/zabbix/
[ root@node1 /etc/zabbix ]# cp zabbix_server.conf{,.bak}
~]# grep "^#####" zabbix_server.conf   #查看配置段
############ GENERAL PARAMETERS #################
############ ADVANCED PARAMETERS ################
####### LOADABLE MODULES #######
####### TLS-RELATED PARAMETERS #######
~]# grep -i "^###" zabbix_server.conf  #查看每個配置段裏面的option

開始編輯配置文件

[ root@node1 /etc/zabbix ]# vim zabbix_server.conf

ListenPort=10051                    #默認端口
SourceIP=172.18.25.51       #默認服務端發採樣請求的IP
LogFileSize=10      # 指定日誌文件大小,當到了此大小後,進行日誌滾動
DBHost=172.18.25.51
DBName=zbxdb
DBUser=zbxuser
DBPassword=zbxpass      
DBPort=3306

然後查看zabbix-web

[ root@node1 /etc/zabbix ]# rpm -ql zabbix-web | less
/etc/httpd/conf.d/zabbix.conf

編輯Zabbix前端的PHP配置

# vim  /etc/httpd/conf.d/zabbix.conf 
  php_value max_execution_time 300
  php_value memory_limit 128M
  php_value post_max_size 16M
  php_value upload_max_filesize 2M
  php_value max_input_time 300
  php_value always_populate_raw_post_data -1
  php_value date.timezone Europe/Riga       # 修改時區(取消這行的註釋,然後指定時區,或者去
                                            # 修改/etc/php.ini 的   ;date.timezone = Asia/Shanghai

然後就可以啓動httpd

[ root@node1 /etc/zabbix ]# systemctl start httpd   

使用谷歌訪問
172.18.25.51/zabbix/setup.php
這裏寫圖片描述
進行初始化設置
next
查看是否有false,有則修改
這裏寫圖片描述
按要求填寫
next最後結束
這裏寫圖片描述

這裏寫圖片描述
到登錄界面
默認初始賬號密碼是
賬號:admin
密碼:zabbix
注意修改密碼。

可以選擇切換成中文版
點擊右上角的人物頭像
這裏寫圖片描述

language 選擇Chinese(zh_CN),點擊save即可
也可在Administration裏面選擇user
比如Admin,在language 選擇Chinese(zh_CN),點擊save即可
這是單獨改這個用戶登陸的時候你的面板是否是中文的。
這裏寫圖片描述
這裏寫圖片描述

配置很多agent的時候可以使用ansible 或是puppet來幫助完成
而且,zabbix有一個功能是主機發現,掃描一整個網段,但是這樣是特別
消耗資源的,一般只在大量主機新加入時纔打開這個功能。

現在先給server配置agent,使之能監控自己

#vim /etc/zabbix/zabbix_agentd.conf
Server=127.0.0.1                        #指明服務器是誰,可以被多個server所監控
ListenPort=10050                        #監聽的端口
ListenIP=0.0.0.0                        #監聽的地址
StartAgents=3                           #被監控項的數量,按需求寫個數
ServerActive=172.18.25.51               #主動監控時server是誰
Hostname=node1                          #能被server端識別的主機名

簡單查看以非#開頭的行

[ root@node1 /etc/zabbix ]# grep -i "^[^#].*" zabbix_agentd.conf 

如果沒有問題,就可以啓動agent了

[ root@node1 /etc/zabbix ]# systemctl start zabbix-agent

現在我們在web界面手動把agent加入進去

首先在configuration下的host groups裏面新加入一個組(右上角create host group)

然後再選擇configuration下的hosts創建一個host(右上角)
然後按需求填寫你的信息,被監控的參數,或是使用模板….

添加完成後出來選擇監控項
這裏寫圖片描述

現在配置agent端
首先配置yum倉庫

 [ root@node2~ ]# wget http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm
 [ root@node2~ ]# rpm -ivh zabbix-release-3.4-2.el7.noarch.rpm
 [ root@node2~ ]# yum repolist

安裝zabbix-agent zabbix-sender

[ root@node2 ~ ]# yum install -y zabbix-agent zabbix-sender
[ root@node2 /etc/zabbix ]# grep -i "^#####" zabbix_agentd.conf #配置板塊
############ GENERAL PARAMETERS #################
##### Passive checks related
##### Active checks related
############ ADVANCED PARAMETERS #################
####### USER-DEFINED MONITORED PARAMETERS #######
####### LOADABLE MODULES #######
####### TLS-RELATED PARAMETERS #######
[ root@node2 /etc/zabbix ]# grep -i "^###" zabbix_agentd.conf   #配置參數
#vim /etc/zabbix/zabbix_agentd.conf
Server=172.18.25.51                     #指明服務器是誰,可以被多個server所監控
ListenPort=10050                        #監聽的端口
ListenIP=0.0.0.0                        #監聽的地址
StartAgents=3                           #被監控項的數量,按需求寫個數
ServerActive=172.18.25.51               #主動監控時server是誰
Hostname=node2                          #能被server端識別的主機名

啓動agent

[ root@node2 /etc/zabbix ]# systemctl start zabbix-agent

好了,到這裏最簡單的的監控就配置完了,剩下的是你所要選擇的裏面要捕獲的參數。




                            ღ ღ ღ 如果覺得文章對您有用,不妨贊一下ღ ღ ღ
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章