zabbix 4.0安裝

#zabbix基本php


一. 監控的重要性

應用運維的三大任務之一:故障處理。如何找到故障就成了一個問題。java

經過客戶反饋能夠得知故障的發生,可是從客戶感知到故障到提交故障可能週期很長。由於有些客戶即便發現了沒法訪問服務也不會提交故障。
即便客戶提交故障了,還須要從客戶的描述中找出故障發生的位置,這中間可能還須要很長的時間。mysql

這時,咱們就須要一個能隨時監控系統並提供報警功能的軟件了。ios


二. 監控的項目有哪些

咱們的整個應用系統包括硬件和軟件兩大部分。
硬件:包括主機、交換機、路由器、網線等各類肉眼能看獲得的設備。
軟件:提供服務的各類軟件、各項軟件的相關指標、系統使用率等
以上不管哪一個部分發生故障均可能致使業務的中斷。
而且因業務系統訪問壓力的增大,對系統資源的使用率持續上升,直至上升到系統資源徹底被佔用致使業務不可用,這種狀況也是很是有必要注意的。這種狀況下,就須要咱們經過向外擴展增長提供服務的主機,來減輕系統的壓力。web


三. 監控系統的實現:

  1. 數據採集

在對一個應用系統進行監控時,各項數據能夠經過系統內建的接口獲取信息,也能夠本身收集,有時數據採集後還須要計算。如ifconfig中RX packets是一個累加數據,單純採集數據無實際意義,咱們須要的單位時間內的數量,這種狀況下就須要進行計算。redis

  • 須要監控的指標項:spring

    • 通用指標項:許多服務都須要監控的項目,可定義爲模板使用
    • 自定義監控指標:通用監控指標不夠用,可自定義一些須要關注的指標,而且還能夠再定義爲模板使用。
  • 數據採集的方式:sql

    • 可經過侵入式:如在需監控的主機上安裝agent。
    • 經過非侵入式:不須要安裝agent。基於ssh,telnet實現。
  • 若監控系統佈署好以後,系統內又新增了主機,爲了方便新增監控主機,監控系統有自動發現能力。自動發現的方式一般有如下兩種:
    • 能夠自動發現網絡中新加入的主機,並基於某種認證機制進行監控。
    • 能夠自動發現主機中的服務,對於後期新增的服務也可自動發現
  1. 數據存儲
  • 監控系統獲取的各項指標數據須要保存在本地磁盤上,如果零散的數據,對統計和查看都各類不方便,故可保存在自開發的數據系統中,也可使用現有的數據系統。
  • zabbix使用mysql和pgsql,因這些數據系統自身的侷限性,在某些大型場景下,數據庫很容易成爲系統瓶頸。數據庫

    1. 定義合理的閾值區間並向有能力處理的人發出警告
  • 前提:基於某個監控項的某個採集數據高於合理閾值範圍。這就須要長期對系統監控,並調整各項指標項的閾值。以後再根據閾值,設定一個布爾表達式,知足條件時(true)就發出警告。
  • 另外還能夠藉助一些配置系統,在警告前作出一些自愈操做。如重啓服務等。apache

    1. 數據可視化處理
  • 人類在幾千年的進化中,並無進化爲擅長處理數據的物種。因此就須要把數據以流式化方式處理爲圖表,以便於人處理數據。

四. 現有監控系統簡單比較:

  • cacti:基於snmp,結合crontab採集數據,把採集的數據存入rrd(round robin databases)數據庫。且cacti的報警功能弱暴了。一般配合nagios使用。但這兩種數據庫結合使用常常會出現各類問題。

    • rrd數據庫保存下來的數據只有必定時長的。如保存一年的數據,不管何時看,只能看到一全年的數據,以前的數據所有被刪除。
  • nagios:週期性採集數據,採集後當即斷定數據是否達到指定的閾值,達到或超過就告警,達不到就把數據丟掉。

  • zabbix:傳統意義上的監控系統
    • 內建有數據採集功能,存儲數據藉助於mysql(pgsql)實現。
    • 告警:告警前可作閾操做。有報警升級操做。先給處理人員告警,過一小時未處理好,向上一級領導告警,再過一小時未處理好,再向更上一級領導告警。
    • 可經過流式化處理把數據以圖形化方式顯示出來。

五.zabbix的特性:

  1. 數據採集:
    • zabbix可經過snmp, ssh/telnet, agent, ipmi, jmx(java Management eXtensions)等方式採集數據,也可自定義採樣機制(基於agent實現)。
  2. 告警:
    • 告警前可作閾操做。
    • 告警升級機制:
    • 先給處理人員告警,過一小時未處理好,向上一級領導告警,再過一小時未處理好,再向更上一級領導告警。
  3. 數據存儲:
    • 支持mysql及pgsql
  4. 數據展現:
    • 經過流式化處理把數據以圖形化方式顯示出來。
    • 實時繪圖:graph, screen, slide show, map
    • 另外還支持模板、網絡自動發現、分佈式監控

六. zabbix的架構體系:

  • zabbix_server:服務端守護進程:負責數據採集
  • zabbix_agentd:agent守護進程;
  • zabbix_proxy:代理服務器,可選組件;
  • zabbix_get:命令行工具,手動測試向agent發起數據採集請求;
  • zabbix_sender:命令行工具,運行於agent端,手動向server端發送數據;
  • zabbix_java_gateway: java網關;
  • zabbix_database:統一存儲,監控數據及配置。MySQL或PostgreSQL;
  • zabbix_web:圖形化界面,可查看數據,可管理zabbix
  • zabbix proxy:採集數據,發送給zabbix server。分佈式監控的實現,小型網絡不必用。
    zabbix proxy的架構圖

七. 各類安裝包:

zabbix-agent:被監控端須要安裝的組件

get和sender:手動測試的命令行工具

zabbix-java-gateway:zabbix監控java程序所須要安裝的包

zabbix-proxy-mysql、zabbix-proxy-sqlite3:zabbix代理端經過什麼數據庫存儲,就安裝哪一個組件

zabbix-server-mysql、zabbix-server-pgsql: zabbix服務端基於mysql和pgsql作存儲所須要的包

zabbix-web:提供zabbix-gui接口

八. zabbix邏輯組件:

  • 主機組(hostgroups):根據功能定義
  • 主機 (host)
  • 監控項(item)
    • key:實現獲取監控的目標上的數據的命令或腳本的名稱;
  • 應用(application):同一類監控項的集合;
  • 觸發器(trigger):表達式;PROBLEM, OK;
  • 事件(event):
  • 動做(action):由條件(condition)和操做(operation)組件;
  • 媒介(media):發送通知的通道;
  • 通知(notification):
  • 遠程命令(remote command):
  • 報警升級():
  • 模板(template):快速定義被監控主機的各監控項的預設項目集合;
  • 圖形(graph):用於展現歷史數據或趨勢數據的圖像;
  • 屏幕(screen):由多個graph組成;
  • 維護週期(maintenance)
  • 週期性數據採集的(zobbix poller)
  • 添加主機的方式:
    • 手動添加主機:分紅組,向組上的主機套模板.zabbix定義被監控項,監控項定義觸發器,根據觸發器觸發事件(一個觸發器上能夠觸發多個事件)。actions上定義事件。知足觸發器條件觸發事件。
    • 自動發現:經過ansible或cobbler安裝agent,zabbix-server自動掃描主機,經過ping,若迴應pong,添加到主機列表並套用模板。

九. zabbix的安裝:

  1. 安裝 Repository
    # rpm -i http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm

    也可直接建立repo文件,使用以下repo內容:

如下爲repo文件內容:

[zabbix]        #提供了zabbx各類功能包。
name=Zabbix Official Repository - $basearch
baseurl=https://mirrors.aliyun.com/zabbix/zabbix/4.0/rhel/7/x86_64/
enabled=1
gpgcheck=0
gpgkey=http://repo.zabbix.com/RPM-GPG-KEY-ZABBIX
[Zabbix Official Repository]            #提供了iksemel及fping。
name=Zabbix Official Repository
baseurl=http://repo.zabbix.com/non-supported/rhel/7/x86_64/
enabled=1
gpgcheck=0
gpgkey=http://repo.zabbix.com/RPM-GPG-KEY-ZABBIX

若不添加Zabbix Official Repository,安裝zabbix時會出現以下提示:

Error: Execution of '/bin/yum -d 0 -e 0 -y install zabbix-server-mysql' returned 1: Error: Package: zabbix-server-2.4.8-1.el7.x86_64 (zabbix-2.4)
                 Requires: iksemel
      Error: Package: zabbix-server-mysql-2.4.8-1.el7.x86_64 (zabbix-2.4)
                 Requires: libiksemel.so.3()(64bit)
       You could try using --skip-broken to work around the problem
       You could try running: rpm -Va --nofiles --nodigest

若報錯Requires: libiksemel.so.3()(64bit),需下載libiksemel包:

Error: Package: zabbix-server-mysql-4.0.4-1.el7.x86_64 (zabbix)
           Requires: libiksemel.so.3()(64bit)
 You could try using --skip-broken to work around the problem
 You could try running: rpm -Va --nofiles --nodigest

[root@zabbix ~]# wget http://springdale.math.ias.edu/data/puias/unsupported/7/x86_64//iksemel-1.4-6.sdl7.x86_64.rpm
--2019-02-19 04:32:35--  http://springdale.math.ias.edu/data/puias/unsupported/7/x86_64//iksemel-1.4-6.sdl7.x86_64.rpm
Resolving springdale.math.ias.edu (springdale.math.ias.edu)... 192.16.204.192
Connecting to springdale.math.ias.edu (springdale.math.ias.edu)|192.16.204.192|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 51884 (51K) [application/x-rpm]
Saving to: ‘iksemel-1.4-6.sdl7.x86_64.rpm’

100%[======================================================================================>] 51,884      93.9KB/s   in 0.5s   

2019-02-19 04:32:36 (93.9 KB/s) - ‘iksemel-1.4-6.sdl7.x86_64.rpm’ saved [51884/51884]

[root@zabbix ~]# ls
anaconda-ks.cfg  dump.rdb  iksemel-1.4-6.sdl7.x86_64.rpm  private  redis-4.0.10  redis-4.0.10.tar.gz
[root@zabbix ~]# yum install -y iksemel-1.4-6.sdl7.x86_64.rpm 
Loaded plugins: fastestmirror
Examining iksemel-1.4-6.sdl7.x86_64.rpm: iksemel-1.4-6.sdl7.x86_64
Marking iksemel-1.4-6.sdl7.x86_64.rpm to be installed
Resolving Dependencies
--> Running transaction check
---> Package iksemel.x86_64 0:1.4-6.sdl7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================================================================
 Package                  Arch                    Version                     Repository                                   Size
================================================================================================================================
Installing:
 iksemel                  x86_64                  1.4-6.sdl7                  /iksemel-1.4-6.sdl7.x86_64                  112 k

Transaction Summary
================================================================================================================================
Install  1 Package

Total size: 112 k
Installed size: 112 k
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : iksemel-1.4-6.sdl7.x86_64                                                                                    1/1 
  Verifying  : iksemel-1.4-6.sdl7.x86_64                                                                                    1/1 

Installed:
  iksemel.x86_64 0:1.4-6.sdl7                                                                                                   

Complete!
  1. 安裝 Zabbix server, frontend, agent(若全部主機都在一個局域網內,可不安裝zabbix-proxy-mysql)
# yum -y install zabbix-server-mysql zabbix-proxy-mysql zabbix-web-mysql zabbix-agent mariadb-server
  1. 初始化數據庫

提示:若是 Zabbix server 和 Zabbix proxy 安裝在相同的主機,它們必須建立不一樣名字的數據庫!
默認狀況下,zabbix server配置文件中的DBName是zabbix,zabbix proxy配置文件中DBName是zabbix_proxy。

  • 建立用戶
# mysql -uroot -p
password
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> create database zabbix_proxy character set utf8 collate utf8_bin;    #可選
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'password';
mysql> grant all privileges on zabbix_proxy.* to zabbix@localhost identified by 'password';     #可選
mysql> flush privileges;
mysql> quit;
  • 初始化數據庫
[root@lxk ~]# cd /usr/share/doc/zabbix-proxy-mysql-4.0.2/
[root@lxk zabbix-proxy-mysql-4.0.2]# zcat schema.sql.gz > schema.sql    #可選
[root@lxk zabbix-proxy-mysql-4.0.2]# cd ../zabbix-server-mysql-4.0.2/    #可選
[root@lxk zabbix-server-mysql-4.0.2]# zcat create.sql.gz > create.sql
[root@lxk zabbix-server-mysql-4.0.2]# mysql -uroot -hlocalhost -p
MariaDB [(none)]> use zabbix_proxy;    #可選
MariaDB [zabbix_proxy]> source /usr/share/doc/zabbix-proxy-mysql-4.0.2/schema.sql;    #可選
MariaDB [zabbix_proxy]> use zabbix;
MariaDB [zabbix]> source /usr/share/doc/zabbix-server-mysql-4.0.2/create.sql;
  1. 爲服務端指定數據庫密碼

編輯 /etc/zabbix/zabbix_server.conf以及/etc/zabbix/zabbix_proxy.conf,把其中的DBPassword值改成對應密碼

DBPassword=password
  1. 設置時區

編輯 /etc/httpd/conf.d/zabbix.conf, 設置時區

# php_value date.timezone Asia/Shanghai
  1. 啓動zabbix服務端和agent線程
# systemctl restart zabbix-server zabbix-agent httpd
# systemctl enable zabbix-server zabbix-agent httpd
  1. 修改/usr/share/zabbix
[root@nfs zabbix]# chown -R apache.apache ../zabbix/
  1. 圖形化安裝:
訪問zabbix-server
http://zabbix-server IP/zabbix/setup.php
配置完成後配置文件會保存在如下文件
/etc/zabbix/web/zabbix.conf.php
安裝完成後,默認用戶爲Admin,默認密碼爲zabbix

十.服務端基本配置:

[root@nfs ~]# grep "^[^[:space:]]#\+" /etc/zabbix/zabbix_server.conf
############ GENERAL PARAMETERS #################
### Option: ListenPort      #服務監聽的端口
### Option: SourceIP        #服務器端如有多個地址,使用哪一個地址與agent端鏈接。
### Option: LogType         #指明日誌保存位置,syslog、文件、標準輸出
### Option: LogFile         #日誌保存的文件名
### Option: LogFileSize     #日誌文件大小,超出大小自動滾動,0爲不限制大小。
### Option: DebugLevel      #debug級別,詳見配置文件解釋。通常爲3
### Option: PidFile         #PID文件位置
### Option: SocketDir       #基於UNIX SOCKET通信時的SOCKET文件位置
### Option: DBHost          #數據庫IP
### Option: DBName          #數據庫名稱
### Option: DBSchema        #數據庫方案,即Mysql仍是pgsql
### Option: DBUser          #鏈接數據庫的用戶
### Option: DBPassword      #鏈接數據庫用戶的密碼
### Option: DBSocket        #DBSocket位置
### Option: DBPort          #數據庫端口
### Option: HistoryStorageURL       #
### Option: HistoryStorageTypes     #

十一.zabbix-agent端配置:

[root@nfs ~]# grep "^[^[:space:]]####\+" /etc/zabbix/zabbix_agentd.conf 
通常參數
############ GENERAL PARAMETERS #################
被動檢查相關
##### Passive checks related
主動檢查相關
##### Active checks related
高級配置
############ ADVANCED PARAMETERS #################
自定義監控參數

####### USER-DEFINED MONITORED PARAMETERS #######
加載的模塊
####### LOADABLE MODULES #######
安全認證相關:局域網內無需配置
####### TLS-RELATED PARAMETERS #######
  1. GENERAL PARAMETERS
### Option: PidFile         #PID文件路徑
### Option: LogType         #日誌類型
### Option: LogFile         #日誌文件位置
### Option: LogFileSize     #日誌文件大小
### Option: DebugLevel      #debug級別
### Option: SourceIP        #與server端鏈接的IP地址
### Option: EnableRemoteCommands    #是否容許遠程命令
### Option: LogRemoteCommands       #遠程命令是否記錄在日誌中。
  1. Passive checks related
### Option: Server              #server端IP
### Option: ListenPort          #server端端口
### Option: ListenIP            #agent監聽的地址
### Option: StartAgents         #啓動幾個agent
  1. Active checks related
### Option: ServerActive
### Option: Hostname
### Option: HostnameItem
### Option: HostMetadata
### Option: HostMetadataItem
### Option: RefreshActiveChecks
### Option: BufferSend
### Option: BufferSize
### Option: MaxLinesPerSecond

十二.啓動zabbix-agent:

server端的agent無需設置選項,安裝好以後歸入server端監控的方法:

直接啓動agent--> 在zabbix-server的web-gui頁上點擊configuration --> hosts.找到Zabbix server並點擊disabled --> 在彈出的消息中點擊enable。

zabbix server的Availability列會顯示當前採集數據的方式。ZBX爲經過zabbix-agent方式。

相關文章
相關標籤/搜索