zabbix

1. zabbix介紹

zabbix是一個基於WEB界面的提供分佈式系統監視以及網絡監視功能的企業級的開源解決方案。
zabbix能監視各類網絡參數,保證服務器系統的安全運營;並提供靈活的通知機制以讓系統管理員快速定位/解決存在的各類問題。
zabbix由2部分構成,zabbix server與可選組件zabbix agent。
zabbix server能夠經過SNMP,zabbix agent,ping,端口監視等方法提供對遠程服務器/網絡狀態的監視,數據收集等功能,它能夠運行在Linux,Ubuntu,Solaris,HP-UX,AIX,Free BSD,Open BSD,OS X等平臺上。
zabbix agent須要安裝在被監視的目標服務器上,它主要完成對硬件信息或與操做系統有關的內存,CPU等信息的收集。
zabbix server能夠單獨監視遠程服務器的服務狀態;同時也能夠與zabbix agent配合,能夠輪詢zabbix agent主動接收監視數據(agent方式),同時還可被動接收zabbix agent發送的數據(trapping方式)。
另外zabbix server還支持SNMP (v1,v2),能夠與SNMP軟件(例如:net-snmp)等配合使用。php

2.什麼是zabbix及優缺點(對比cacti和nagios)

Zabbix能監視各類網絡參數,保證服務器系統的安全運營;並提供靈活的通知機制以讓系統管理員快速定位/解決存在的各類問題。是一個基於WEB界面的提供分佈式系統監視以及網絡監視功能的企業級的開源解決方案。
agent端:主機經過安裝agent方式採集數據。前端

  • server端:經過收集agent發送的數據,寫入數據庫(MySQL,ORACLE等),再經過php+apache在web前端展現.
  • zabbix = cacti + nagios
  • 優勢:基於兩款工具優勢於一身並更強大,實現企業級分佈式監控。
  • 缺點:2.2版本帶寬佔用大可是升級到2.4版本後更節省了帶寬資源,其它再無發現。

3. zabbix特色

zabbix的主要特色:java

  • 安裝與配置簡單,學習成本低
  • 支持多語言(包括中文)
  • 免費開源
  • 自動發現服務器與網絡設備
  • 分佈式監視以及WEB集中管理功能
  • 能夠無agent監視
  • 用戶安全認證和柔軟的受權方式
  • 經過WEB界面設置或查看監視結果
  • email等通知功能
  • Zabbix主要功能:
    node

  • CPU負荷
  • 內存使用
  • 磁盤使用
  • 網絡情況
  • 端口監視
  • 日誌監視

4.工做原理

一個監控系統運行的大概的流程是這樣的:
zabbix agent須要安裝到被監控的主機上,它負責按期收集各項數據,併發送到zabbix server端,zabbix server將數據存儲到數據庫中,zabbix web根據數據在前端進行展示和繪圖。這裏agent收集數據分爲主動和被動兩種模式:
主動:agent請求server獲取主動的監控項列表,並主動將監控項內須要檢測的數據提交給server/proxy
被動:server向agent請求獲取監控項的數據,agent返回數據。mysql

4.zabbix服務端安裝

[root@wlw ~]#  yum -y install net-snmp-devel libevent-devel
[root@wlw ~]# cd /usr/src/
[root@wlw src]# ls
apr-1.6.5         apr-util-1.6.1.tar.gz  httpd-2.4.38.tar.bz2                        php-7.2.8
apr-1.6.5.tar.gz  debug                  kernels                                     php-7.2.8.tar.xz
apr-util-1.6.1    httpd-2.4.38           mysql-5.7.25-linux-glibc2.12-x86_64.tar.gz
[root@wlw src]# rz

[root@wlw src]# ls
apr-1.6.5         apr-util-1.6.1.tar.gz  httpd-2.4.38.tar.bz2                        php-7.2.8
apr-1.6.5.tar.gz  debug                  kernels                                     php-7.2.8.tar.xz
apr-util-1.6.1    httpd-2.4.38           mysql-5.7.25-linux-glibc2.12-x86_64.tar.gz  zabbix-3.4.12.tar.gz
[root@wlw src]# tar xf zabbix-3.4.12.tar.gz 
[root@wlw src]# cd
[root@wlw ~]# groupadd -r zabbix
[root@wlw ~]# useradd -r -g zabbix -M -s /sbin/nologin zabbix
[root@wan ~]# source /etc/profile.d/mysql.sh 
[root@wan ~]# mysql -uroot -pwlw123!
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.25 MySQL Community Server (GPL)

Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> create database zabbix character set utf8 collate utf8_bin;
Query OK, 1 row affected (0.01 sec)

mysql>  grant all privileges on zabbix.* to zabbix@localhost identified by ' wlw123!';
Query OK, 0 rows affected, 2 warnings (0.02 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

mysql> quit
Bye
[root@wan ~]# cd /usr/src/zabbix-3.4.12/database/mysql/
[root@wan mysql]# ls
data.sql  images.sql  schema.sql
[root@wan mysql]# mysql -uzabbix -pwlw123! zabbix < schema.sql 
mysql: [Warning] Using a password on the command line interface can be insecure.
[root@wan mysql]# mysql -uzabbix -pwlw123! zabbix < images.sql 
mysql: [Warning] Using a password on the command line interface can be insecure.
[root@wan mysql]# mysql -uzabbix -pwlw123! zabbix < data.sql 
mysql: [Warning] Using a password on the command line interface can be insecure.
[root@wan zabbix-3.4.12]#  ./configure --enable-server --enable-agent --with-mysql --with-net-snmp --with-libcurl --with-libxml2
[root@wan zabbix-3.4.12]# make install
[root@wan zabbix-3.4.12]# cd
[root@wan ~]# ls /usr/local/etc/
zabbix_agentd.conf  zabbix_agentd.conf.d  zabbix_server.conf  zabbix_server.conf.d
[root@wan ~]# vim /usr/local/etc/zabbix_server.conf
[root@wan ~]#  zabbix_server
[root@wan ~]# zabbix_agentd
[root@wan ~]# ss -antl
State      Recv-Q Send-Q            Local Address:Port                           Peer Address:Port              
LISTEN     0      128                           *:22                                        *:*                  
LISTEN     0      100                   127.0.0.1:25                                        *:*                  
LISTEN     0      128                           *:10050                                     *:*   
LISTEN     0      128                           *:10051                                     *:*               
LISTEN     0      128                   127.0.0.1:9000                                      *:*                  
LISTEN     0      128                          :::80                                       :::*                  
LISTEN     0      128                          :::22                                       :::*                  
LISTEN     0      100                         ::1:25                                       :::*                  
LISTEN     0      80                           :::3306                                     :::*

5.zabbix的組件及進程

1:重要組件
zabbix由如下幾個組件部分構成:linux

  1. Zabbix Server:負責接收agent發送的報告信息的核心組件,全部配置,統計數據及操做數據均由其組織進行;
  2. Database Storage:專用於存儲全部配置信息,以及由zabbix收集的數據;
  3. Web interface:zabbix的GUI接口,一般與Server運行在同一臺主機上;
  4. Proxy:可選組件,經常使用於分佈監控環境中,代理Server收集部分被監控端的監控數據並統一發往Server端;
  5. Agent:部署在被監控主機上,負責收集本地數據併發往Server端或Proxy端;

注:zabbix node也是 zabbix server的一種 。
2:常見進程
默認狀況下zabbix包含5個程序:zabbix_agentd、zabbix_get、zabbix_proxy、zabbix_sender、zabbix_server,另一個zabbix_java_gateway是可選,這個須要另外安裝。下面來分別介紹下他們各自的做用。
(1)zabbix_agentd:
客戶端守護進程,此進程收集客戶端數據,例如cpu負載、內存、硬盤使用狀況等。
(2)zabbix_get
zabbix工具,單獨使用的命令,一般在server或者proxy端執行獲取遠程客戶端信息的命令。一般用戶排錯。例如在server端獲取不到客戶端的內存數據,咱們可使用zabbix_get獲取客戶端的內容的方式來作故障排查。
(3)zabbix_sender
zabbix工具,用於發送數據給server或者proxy,一般用於耗時比較長的檢查。不少檢查很是耗時間,致使zabbix超時。因而咱們在腳本執行完畢以後,使用sender主動提交數據。
(4)zabbix_server
zabbix服務端守護進程。zabbix_agentd、zabbix_get、zabbix_sender、zabbix_proxy、zabbix_java_gateway的數據最終都是提交到server
備註:固然不是數據都是主動提交給zabbix_server,也有的是server主動去取數據。
(5)zabbix_proxy
zabbix代理守護進程。功能相似server,惟一不一樣的是它只是一箇中轉站,它須要把收集到的數據提交/被提交到server裏。爲何要用代理?代理是作什麼的?賣個關子,請繼續關注運維生存時間zabbix教程系列。
(6)zabbix_java_gateway
zabbix2.0以後引入的一個功能。顧名思義:Java網關,相似agentd,可是隻用於Java方面。須要特別注意的是,它只能主動去獲取數據,而不能被動獲取數據。它的數據最終會給到server或者proxy。ios

6.zabbix監控環境中基本概念

  1. 主機(host):要監控的網絡設備,可由IP或DNS名稱指定;
  2. 主機組(host group):主機的邏輯容器,能夠包含主機和模板,但同一個組織內的主機和模板不能互相連接;主機組一般在給用戶或用戶組指派監控權限時使用;
  3. 監控項(item):一個特定監控指標的相關的數據;這些數據來自於被監控對象;item是zabbix進行數據收集的核心,相對某個監控對象,每一個item都由"key"標識;
  4. 觸發器(trigger):一個表達式,用於評估某監控對象的特定item內接收到的數據是否在合理範圍內,也就是閾值;接收的數據量大於閾值時,觸發器狀態將從"OK"轉變爲"Problem",當數據再次恢復到合理範圍,又轉變爲"OK";
  5. 事件(event):觸發一個值得關注的事情,好比觸發器狀態轉變,新的agent或從新上線的agent的自動註冊等;
  6. 動做(action):指對於特定事件事先定義的處理方法,如發送通知,什麼時候執行操做;
  7. 報警升級(escalation):發送警報或者執行遠程命令的自定義方案,如每隔5分鐘發送一次警報,共發送5次等;
  8. 媒介(media):發送通知的手段或者通道,如Email、Jabber或者SMS等;
  9. 通知(notification):經過選定的媒介向用戶發送的有關某事件的信息;
  10. 遠程命令(remote command):預約義的命令,可在被監控主機處於某特定條件下時自動執行;
  11. 模板(template):用於快速定義被監控主機的預設條目集合,一般包含了item、trigger、graph、screen、appication以及low-level discovery rule;模板能夠直接連接至某個主機;
  12. 應用(application):一組item的集合;
  13. web場景(web scennario):用於檢測web站點可用性的一個活多個HTTP請求;
  14. 前端(frontend):Zabbix的web接口;

7.zabbix的監控架構

在實際監控架構中,zabbix根據網絡環境、監控規模等 分了三種架構: server-client 、master-node-client、server-proxy-client三種 。
1:server-client架構
也是zabbix的最簡單的架構,監控機和被監控機之間不通過任何代理 ,直接由zabbix server和zabbix agentd之間進行數據交互。適用於網絡比較簡單,設備比較少的監控環境 。
2:server-proxy-client架構
其中proxy是server、client之間溝通的一個橋樑,proxy自己沒有前端,並且其自己並不存放數據,只是將agentd發來的數據暫時存放,然後再提交給server 。該架構常常是和master-node-client架構作比較的架構 ,通常適用於跨機房、跨網絡的中型網絡架構的監控。
3:master-node-client架構
該架構是zabbix最複雜的監控架構,適用於跨網絡、跨機房、設備較多的大型環境 。每一個node同時也是一個server端,node下面能夠接proxy,也能夠直接接client 。node有自已的配置文件和數據庫,其要作的是將配置信息和監控數據向master同步,master的故障或損壞對node其下架構的完整性。
其實zabbix作的仍是挺人性化的,給了咱們下載地址:http://repo.zabbix.com/ 裏面能夠選不少版本,但這裏就給你們提供一個目前最新版本4.2的部署及添加客戶端方式。c++

8. zabbix配置文件

zabbix配置文件有兩種:web

  • 服務器端配置文件(/usr/local/etc/zabbix_server.conf)
  • 客戶端配置文件(/usr/local/etc/zabbix_agentd.conf)
  • zabbix代理配置文件(/usr/local/etc/zabbix_proxy.conf)
    服務器端配置文件zabbix_server.conf經常使用配置參數:
    參數                              做用
    LogFile                 設置服務端日誌文件存放路徑
    ListenIP                    設置服務端監聽IP
    ListenPort                      設置服務端監聽的端口號
    PidFile                 設置服務端進程號文件存放路徑
    DBHost                  指定zabbix的數據庫服務器IP
    DBName                  指定zabbix使用的數據庫庫名
    DBUser                  指定zabbix數據庫登陸用戶
    DBPassword                      指定zabbix數據庫登陸密碼
    DBPort                  指定zabbix數據庫端口號
    User                    設置zabbix以什麼用戶的身份運行
    AlertScriptsPath                    設置告警腳本存放路徑
    ExternalScripts                 外部腳本存放路徑

9.部署zabbix

環境說明:sql

環境 IP 要安裝的應用
服務器t 192.168.66.128 lamp架構zabbix serverzabbix agent
客戶端 192.168.66.130 zabbix agent

由於zabbix是用php語言開發的,因此必須先部署lamp架構,使其可以支持運行php網頁

9.1 zabbix服務端安裝

安裝依賴包(lamp安裝見個人lamp那篇博客,這裏腳本安裝好了)
[root@wlw ~]#  yum -y install net-snmp-devel libevent-devel

//下載zabbix
[root@wlw ~]# cd /usr/src/
[root@wlw src]# ls
apr-1.6.5         apr-util-1.6.1.tar.gz  httpd-2.4.38.tar.bz2                        php-7.2.8
apr-1.6.5.tar.gz  debug                  kernels                                     php-7.2.8.tar.xz
apr-util-1.6.1    httpd-2.4.38           mysql-5.7.25-linux-glibc2.12-x86_64.tar.gz
[root@wlw src]# rz

[root@wlw src]# ls
apr-1.6.5         apr-util-1.6.1.tar.gz  httpd-2.4.38.tar.bz2                        php-7.2.8
apr-1.6.5.tar.gz  debug                  kernels                                     php-7.2.8.tar.xz
apr-util-1.6.1    httpd-2.4.38           mysql-5.7.25-linux-glibc2.12-x86_64.tar.gz  zabbix-3.4.12.tar.gz

//解壓
[root@wlw src]# tar xf zabbix-3.4.12.tar.gz 
[root@wlw src]# cd

//建立zabbix用戶和組
[root@wlw ~]# groupadd -r zabbix
[root@wlw ~]# useradd -r -g zabbix -M -s /sbin/nologin zabbix
[root@wan ~]# source /etc/profile.d/mysql.sh 

//配置zabbix數據庫   
[root@wan ~]# mysql -uroot -pwlw123!
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.25 MySQL Community Server (GPL)

Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> create database zabbix character set utf8 collate utf8_bin;
Query OK, 1 row affected (0.01 sec)

mysql>  grant all privileges on zabbix.* to zabbix@localhost identified by ' wlw123!';
Query OK, 0 rows affected, 2 warnings (0.02 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

mysql> quit
Bye

//編譯安裝zabbix
[root@wan ~]# cd /usr/src/zabbix-3.4.12/database/mysql/
[root@wan mysql]# ls
data.sql  images.sql  schema.sql
[root@wan mysql]# mysql -uzabbix -pwlw123! zabbix < schema.sql 
mysql: [Warning] Using a password on the command line interface can be insecure.
[root@wan mysql]# mysql -uzabbix -pwlw123! zabbix < images.sql 
mysql: [Warning] Using a password on the command line interface can be insecure.
[root@wan mysql]# mysql -uzabbix -pwlw123! zabbix < data.sql 
mysql: [Warning] Using a password on the command line interface can be insecure.
[root@wan zabbix-3.4.12]#  ./configure --enable-server --enable-agent --with-mysql --with-net-snmp --with-libcurl --with-libxml2
[root@wan zabbix-3.4.12]# make install
[root@wan zabbix-3.4.12]# cd
[root@wan ~]# ls /usr/local/etc/
zabbix_agentd.conf  zabbix_agentd.conf.d  zabbix_server.conf  zabbix_server.conf.d
[root@wan ~]# vim /usr/local/etc/zabbix_server.conf
[root@wan ~]#  zabbix_server
[root@wan ~]# zabbix_agentd
[root@wan ~]# ss -antl
State      Recv-Q Send-Q            Local Address:Port                           Peer Address:Port              
LISTEN     0      128                           *:22                                        *:*                  
LISTEN     0      100                   127.0.0.1:25                                        *:*                  
LISTEN     0      128                           *:10050                                     *:*   
LISTEN     0      128                           *:10051                                     *:*               
LISTEN     0      128                   127.0.0.1:9000                                      *:*                  
LISTEN     0      128                          :::80                                       :::*                  
LISTEN     0      128                          :::22                                       :::*                  
LISTEN     0      100                         ::1:25                                       :::*                  
LISTEN     0      80                           :::3306                                     :::*

9.2 zabbix服務端配置

[root@wan ~]# ls /usr/local/etc/ zabbix_agentd.conf zabbix_agentd.conf.d zabbix_server.conf zabbix_server .conf.d 
//修改服務端配置文件
// 設置數據庫信息
[root@wan ~]# vim /usr/local/etc/zabbix_server.conf .... DBPassword=zabbix123! //設置數據庫鏈接密碼
//啓動zabbix_server和zabbix_agentd 
[root@wan ~]# zabbix_server 
[root@wan ~]# zabbix_agentd
[root@wan ~]# ss -antl
State      Recv-Q Send-Q            Local Address:Port                           Peer Address:Port              
LISTEN     0      128                           *:22                                        *:*                  
LISTEN     0      100                   127.0.0.1:25                                        *:*                  
LISTEN     0      128                           *:10050                                     *:*   
LISTEN     0      128                           *:10051                                     *:*               
LISTEN     0      128                   127.0.0.1:9000                                      *:*                  
LISTEN     0      128                          :::80                                       :::*                  
LISTEN     0      128                          :::22                                       :::*                  
LISTEN     0      100                         ::1:25                                       :::*                  
LISTEN     0      80                           :::3306                                     :::*

9.3zabbix服務端web界面安裝與配置

9.3.1zabbix web 界面安裝前配置

[root@wan ~]# sed -ri 's/(post_max_size =).*/\1 16M/g' /etc/php.ini
[root@wan ~]# sed -ri 's/(max_execution_time =).*/\1 300/g' /etc/php.ini 
[root@wan ~]# sed -ri 's/(max_input_time =).*/\1 300/g' /etc/php.ini
[root@wan ~]# 
[root@wan ~]#  sed -i '/;date.timezone/a date.timezone = Asia/Shanghai' /etc/php.ini 
[root@wan ~]# service php-fpm restart
Gracefully shutting down php-fpm . done
Starting php-fpm  done
[root@wan ~]# cd /usr/src/zabbix-3.4.12
[root@wan zabbix-3.4.12]# ls
aclocal.m4  ChangeLog     config.log     configure.ac  frontends   m4           man      README
AUTHORS     compile       config.status  COPYING       include     Makefile     misc     sass
bin         conf          config.sub     database      INSTALL     Makefile.am  missing  src
build       config.guess  configure      depcomp       install-sh  Makefile.in  NEWS     upgrades
[root@wan zabbix-3.4.12]# mkdir /usr/local/apache/htdocs/zabbix
[root@wan zabbix-3.4.12]# cp -a frontends/php/* /usr/local/apache/htdocs/zabbix/
[root@wan zabbix-3.4.12]# chown -R apache.apache /usr/local/apache/htdocs/
[root@wan zabbix-3.4.12]# cd
[root@wan ~]# vim /etc/httpd24/httpd.conf 
[root@wan ~]# chmod 777 /usr/local/apache/htdocs/zabbix/conf
[root@wan ~]# ll -d /usr/local/apache/htdocs/zabbix/conf
drwxrwxrwx. 2 apache apache 81 7月  30 2018 /usr/local/apache/htdocs/zabbix/conf
[root@wan ~]# source /etc/profile.d/httpd.sh 
[root@wan ~]# apachectl -t
Syntax OK
[root@wan ~]# apachectl restart
[root@wan ~]# apachectl stop
[root@wan ~]# apachectl start
[root@wan ~]# ss -antl
State      Recv-Q Send-Q            Local Address:Port                           Peer Address:Port              
LISTEN     0      128                           *:22                                        *:*                  
LISTEN     0      100                   127.0.0.1:25                                        *:*                  
LISTEN     0      128                           *:10050                                     *:* 
LISTEN     0      128                           *:10051                                     *:*                  
LISTEN     0      128                   127.0.0.1:9000                                      *:*                  
LISTEN     0      128                          :::80                                       :::*                  
LISTEN     0      128                          :::22                                       :::*                  
LISTEN     0      100                         ::1:25                                       :::*                  
LISTEN     0      80                           :::3306                                     :::*

再進入電腦的C盤的 Windows System32 dirvers etc 的hosts 裏面添加映射
zabbix
密碼是zabbix123!
zabbix
再恢復zabbix/conf目錄的權限爲755:

[root@wan ~]# chmod 755 /usr/local/apache/htdocs/zabbix/conf
[root@wan ~]# ll -d  /usr/local/apache/htdocs/zabbix/conf
drwxr-xr-x. 2 apache apache 104 5月  14 22:45 /usr/local/apache/htdocs/zabbix/conf

實如今另外一臺主機安裝zabbix_agentd客戶端,能實現zabbix對客戶端監控。

[root@wlw ~]# yum install -y gcc gcc-c++ pcre-devel
[root@wlw ~]# cd /usr/src/
[root@wlw src]# tar xf zabbix-3.4.12.tar.gz
[root@wlw src]# cd zabbix-3.4.12
[root@wlw zabbix-3.4.12]# ./configure --enable-agent
[root@wlw ~]# groupadd -r zabbix
[root@wlw ~]# useradd -r -M -s /sbin/nologin -g zabbix zabbix
[root@wlw ~]# cd /usr/src/zabbix-3.4.12
[root@wlw zabbix-3.4.12]# make install
[root@wlw ~]# cd /usr/local/etc/
[root@wlw etc]# ls
zabbix_agentd.conf  zabbix_agentd.conf.d
[root@wlw etc]# vim zabbix_agentd.conf
找到server改爲Server=192.168.66.130
找到ServerActive改爲ServerActive=192.168.66.130
找到Hostname改爲Hostname=ww(ww是隨便取的名字要記住)
[root@wlw etc]# zabbix_agentd 
[root@wlw etc]# ss -antl
State      Recv-Q Send-Q            Local Address:Port                           Peer Address:Port              
LISTEN     0      128                           *:80                                        *:*                  
LISTEN     0      128                           *:22                                        *:*                  
LISTEN     0      100                   127.0.0.1:25                                        *:*                  
LISTEN     0      128                           *:10050                                     *:*                  
LISTEN     0      128                   127.0.0.1:9000                                      *:*                  
LISTEN     0      128                          :::22                                       :::*                  
LISTEN     0      100                         ::1:25                                       :::*                  
LISTEN     0      80                           :::3306                                     :::*                  
[root@wlw etc]# systemctl stop firewalld
[root@wlw etc]# 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@wlw etc]# vim /etc/selinux/config 
[root@wlw etc]# setenforce 0
相關文章
相關標籤/搜索