Linux----------zabbix監控基礎

1、經常使用監控軟件簡介

經常使用監控軟件有:cacti, nagios, zabbix, ganglia,centreon,prometheusjava

1.1 Cacti

Cacti 是一套基於 PHP,MySQL,SNMP 及 RRDTool 開發的網絡流量監測圖形分析工具。 簡單的說 Cacti 就是一個 PHP 程序。它經過使用 SNMP 協議獲取遠端網絡設備和相關信息,並經過 RRDTOOL 工 具繪圖,經過 PHP 程序展示出來。咱們使用它能夠展示出監控對象一段時間內的狀態或者 性能趨勢圖。mysql

1.2 Nagios

Nagios 是一款開源的免費網絡監視工具,能有效監控 Windows、Linux 和 Unix 的主機狀 態,交換機路由器等網絡設置,打印機等。在系統或服務狀態異常時發出郵件或短信報警第 一時間通知網站運維人員,在狀態恢復後發出正常的郵件或短信通知。ios

1.3 Zabbix

zabbix 是一個基於 WEB 界面的提供分佈式系統監視以及網絡監視功能的企業級的開源 解決方案。zabbix 能監視各類網絡參數,保證服務器系統的安全運營;並提供柔軟的通知機 制以讓系統管理員快速定位/解決存在的各類問題。
zabbix 由 2 部分構成,zabbix server 與可選組件 zabbix agent。zabbix server 能夠經過 SNMP, zabbix agent,ping,端口監視等方法提供對遠程服務器/網絡狀態的監視,數據收集等功能, 它能夠運行在 Linux, Solaris, HP-UX, AIX, Free BSD, Open BSD, OS X 等平臺上。web

1.4 Ganglia

Ganglia 是一款爲 HPC(高性能計算)集羣而設計的可擴展的分佈式監控系統,它能夠監視 和顯示集羣中的節點的各類狀態信息,它由運行在各個節點上的 gmond 守護進程來採集 CPU 、內存、硬盤利用率、I/O 負載、網絡流量狀況等方面的數據,而後彙總到 gmetad 守 護進程下,使用 rrdtool 存儲數據,最後將歷史數據以曲線方式經過 PHP 頁面呈現。 Ganglia 監控系統有三部分組成,分別是 gmond、gmetad、webfrontend。sql

1.5 Centreon

Centreon 是一款功能強大的分佈式 IT 監控系統,它經過第三方組件能夠實現對網絡、 操做系統和應用程序的監控:首先,它是開源的,咱們能夠無償使用它;其次,它的底層採用 nagios 做爲監控軟件,同時 nagios 經過 ndoutil 模塊將監控到的數據定時寫入數據庫中, 而 Centreon 實時從數據庫讀取該數據並經過 Web 界面展示監控數據;,最後,咱們能夠經過 Centreon 管理和配置 nagios,或者說 Centreon 就是 nagios 的一個管理配置工具,經過Centreon 提供的 Web 配置界面,能夠輕鬆完成 nagios 的各類繁瑣配置。docker

1.6 Prometheus

Prometheus是一套開源的監控&報警&時間序列數據庫的組合,起始是由SoundCloud公司開發的。隨着發展,愈來愈多公司和組織接受採用Prometheus,社區也十分活躍,他們便將它獨立成開源項目,而且有公司來運做。google SRE的書內也曾提到跟他們BorgMon監控系統類似的實現是Prometheus。如今最多見的Kubernetes容器管理系統中,一般會搭配Prometheus進行監控。數據庫

Prometheus 的優勢:apache

  • 很是少的外部依賴,安裝使用超簡單
  • 已經有很是多的系統集成 例如:docker HAProxy Nginx JMX等等
  • 服務自動化發現
  • 直接集成到代碼
  • 設計思想是按照分佈式、微服務架構來實現的

Prometheus 的特性:vim

  • 自定義多維度的數據模型
  • 很是高效的存儲 平均一個採樣數據佔 ~3.5 bytes左右,320萬的時間序列,每30秒採樣,保持60天,消耗磁盤大概228G。
  • 強大的查詢語句
  • 輕鬆實現數據可視化

1.7 應用場景

一、中小企業監控平臺選擇 Zabbix
Zabbix 是一款綜合了數據收集、數據展現、數據提取、監控報警配置、用戶展現等方面 的一款綜合運維監控平臺。
Zabbix 學習入門較快,功能也很強大,是一個能夠迅速用起來的監控軟件,可以知足中 小企業(服務器數 500 臺一下)的監控報警需求,所以是中小型企業運維監控的首選平臺。
可是,Zabbix 當監控服務器數量較多時,會產生不少問題,如監控數據不及時、報警超 時等等問題,這是由於 Zabbix 對服務器性能要求較高,當監控的服務器數量超過 500 臺後, 監控性能急劇降低,此時須要進行分佈式監控部署,而且須要提高監控服務器的性能。
安全性方面,Zabbix 客戶端的 agent 若是故障,收集到的數據將丟失,同時 Zabbix Server也是單點,可能還須要對 Zabbix Server 作 HA 保證數據的安全和監控的高可用。

二、互聯網大企業監控平臺選擇 Ganglia+Centreon
開源監控軟件組合應用+二次開發
是大型互聯網企業構建監控平臺的一個基本策略,

對於有海量服務器、多業務系統的複雜監控,沒有哪一個軟件能獨立完成企業的全部監控需求, 所以,多種開源監控軟件組合應用+二次開發纔是監控平臺的最終方向。

推薦 ganglia 是由於 ganglia 客戶端軟件對服務資源佔用很是低,而且擴展插件很是多,

監控擴展也很是容易,同時結合專業的 web 監控平臺 centreon,能夠實如今數據收集、數 據展現、數據提取、監控報警配置、用戶展現等方面的完美配合,所以這裏對海量服務器進

行監控

2、zabbix

2.1 zabbix簡介

Zabbix是一個基於WEB界面的分佈式開源監控系統,主要有2部分構成,Zabbix server與Zabbix agent,同時也支持Zabbix proxy。zabbix能監視各類網絡參數,保證服務器系統的安全運營;並提供靈活的通知機制以讓系統管理員快速定位/解決存在的各類問題。

zabbix server能夠單獨監視遠程服務器的服務狀態;同時也能夠與zabbix agent配合,能夠輪詢zabbix agent主動接收監視數據(agent方式),同時還可被動接收zabbix agent發送的數據(trapping方式)。
zabbix agent須要安裝在被監視的目標服務器上,它主要完成對硬件信息或與操做系統有關的內存,CPU等信息的收集。
另外zabbix server還支持SNMP (v1,v2),能夠與SNMP軟件(例如:net-snmp)等配合使用。

Zabbix的底層採集程序是用C語言編寫的Server和Agent,而用戶界面是經過PHP編寫WEB,採用Mysql(Pgsql)數據庫來存儲數據。整個Zabbix其實就是一個框架,其中內置了一些針對各種OS的系統參數採集命令,能夠直接調用,而其它的自定義監控參數,則能夠經過本身來寫一些快捷的Shell命令經過管道傳遞,或經過各類腳本甚至程序來傳遞。Zabbix只管把最後的返回值經過agent拿到,存儲統計,繪圖,根據定義的閥值進行報警等。

2.2 zabbix特色

zabbix的主要特色:

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

zabbix主要功能:

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

zabbix監控的內容

  • 系統基礎監控zabbix agent
    內存、CPU、硬盤....
  • 網絡設備snmp
    路由器、防火牆、交換機....
  • 硬件監控IPMI
    電源、CPU溫度、硬盤溫度....
  • 業務監控
    進程
    端口
    日誌

2.3 zabbix組成

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:Web GUI

zabbix邏輯組件:

  • 主機組
  • 主機
  • 監控項(item)
  • key:實現獲取監控的目標上的數據的命令或腳本的名稱;
  • 應用(application):同一類監控項的集合;
  • 觸發器(trigger):表達式;PROBLEM, OK;
  • 事件(event):
  • 動做(action):由條件(condition)和操做(operation)組件;
  • 媒介(media):發送通知的通道;
  • 通知(notification):
  • 遠程命令(remote command):
  • 報警升級():
  • 模板(template):快速定義被監控主機的各監控項的預設項目集合;
  • 圖形(graph):用於展現歷史數據或趨勢數據的圖像;
  • 屏幕(screen):由多個graph組成;

2.4 zabbix配置文件

zabbix配置文件有兩種:

  • 服務器端配置文件(/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 外部腳本存放路徑

客戶端配置文件zabbix_agentd.conf經常使用配置參數:

參數 做用
Server 指定zabbix服務器的IP或域名
ServerActive 指定zabbix服務器的IP或域名
Hostname 指定本機的主機名,此項必須與web界面配置項一致
UnsafeUserParameters 是否啓用自定義監控項,可選值爲{1
UserParameter 指定自定義監控腳本參數
LogFile 設置客戶端日誌文件存放路徑

2.5 zabbix的工做流程

建立主機組—>建立主機並加入主機組——>建立監控項——>告警觸發器配置——>配置警告動做

3、部署zabbix

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

環境 IP
服務器端 192.168.43.166
客戶端 192.168.43.247

3.1 zabbix服務端安裝

//安裝依賴包
[root@localhost ~]# yum -y install net-snmp-devel libevent-devel

//下載源碼包(速度很慢)
[root@localhost ~]# cd /usr/src/
[root@localhost src]# wget https://nchc.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/4.0.3/zabbix-4.0.3.tar.gz

//解壓
[root@localhost src]# tar xf zabbix-4.0.3.tar.gz

//建立zabbix用戶和組
[root@localhost ~]# groupadd -r zabbix
[root@localhost ~]# useradd -r -g zabbix -M -s /sbin/nologin zabbix


//配置zabbix數據庫
[root@localhost mysql]# mysql 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 5.7.22-log MySQL Community Server (GPL)

Copyright (c) 2000, 2018, 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.00 sec)

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

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

mysql> quit
Bye
[root@localhost ~]# cd /usr/src/zabbix-4.0.3/database/mysql/
[root@localhost mysql]# ls
data.sql  images.sql  Makefile.am  Makefile.in  schema.sql

//導入數據庫文件到zabbix
[root@localhost mysql]# mysql  zabbix < schema.sql 
[root@localhost mysql]# mysql  zabbix < images.sql 
[root@localhost mysql]# mysql  zabbix < data.sql 

//編譯安裝zabbix
[root@localhost ~]# cd /usr/src/zabbix-4.0.3
[root@localhost zabbix-4.0.3]# ./configure --enable-server \
--enable-agent \
--with-mysql \
--with-net-snmp \
--with-libcurl \
--with-libxml2

[root@localhost zabbix-4.0.3]# make install

3.2 zabbix服務端配置

//配置文件路徑
[root@localhost zabbix-4.0.3]# ls /usr/local/etc/
zabbix_agentd.conf  zabbix_agentd.conf.d  zabbix_server.conf  zabbix_server.conf.d

//修改配置文件(經常使用參數),保持默認不變只設置數據庫信息
vim /usr/local/etc/zabbix_server.conf               
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=123456

//啓動zabbix_server和zabbix_agentd
[root@localhost etc]# ln -s /usr/local/mysql/lib/*  /usr/lib/    (mysql庫文件若是沒作軟鏈接會報錯)
[root@localhost etc]# ldconfig -v
[root@localhost etc]# zabbix_agentd 
[root@localhost etc]# zabbix_server 
[root@localhost etc]# ss -ntl
State       Recv-Q Send-Q     Local Address:Port                    Peer Address:Port              
LISTEN      0      128                    *:111                                *:*                  
LISTEN      0      5          192.168.122.1:53                                 *:*                  
LISTEN      0      128                    *:22                                 *:*                  
LISTEN      0      128            127.0.0.1:631                                *:*                  
LISTEN      0      100            127.0.0.1:25                                 *:*                  
LISTEN      0      128            127.0.0.1:6010                               *:*                  
LISTEN      0      128                    *:10050                              *:*                  
LISTEN      0      80                    :::3306                              :::*                  
LISTEN      0      128                   :::111                               :::*                  
LISTEN      0      128                   :::80                                :::*                  
LISTEN      0      128                   :::22                                :::*                  
LISTEN      0      128                  ::1:631                               :::*                  
LISTEN      0      100                  ::1:25                                :::*                  
LISTEN      0      128                  ::1:6010                              :::*

3.3 zabbix客戶端配置

/安裝依賴包
[root@localhost ~]# yum -y install net-snmp-devel libevent-devel

//下載源碼包(速度很慢)
[root@localhost ~]# cd /usr/src/
[root@localhost src]# wget https://nchc.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/4.0.3/zabbix-4.0.3.tar.gz

//解壓
[root@localhost src]# tar xf zabbix-4.0.3.tar.gz

//編譯安裝zabbix
[root@localhost ~]# cd /usr/src/zabbix-4.0.3
[root@localhost zabbix-4.0.3]# ./configure --enable-agent 

//修改配置文件
[root@localhost etc]# vim zabbix_agentd.conf
Server = 192.168.43.166
ServerActive = 192.168.43.166
Hostname = client247
UnsafeUserParameters    = 1
UserParameter = 1 

//啓動zabbix_agent服務
[root@localhost etc]# zabbix_agentd

3.3 zabbix web界面安裝和配置

//修改php配置文件並重啓php-fpm
[root@localhost ~]# sed -ri 's/(post_max_size =).*/\1 16M/g' /etc/php.ini
[root@localhost ~]# sed -ri 's/(max_execution_time =).*/\1 300/g' /etc/php.ini
[root@localhost ~]# sed -ri 's/(max_input_time =).*/\1 300/g' /etc/php.ini
[root@localhost ~]# sed -i '/;date.timezone/a date.timezone = Asia/Shanghai' /etc/php.ini
[root@localhost ~]# service php-fpm restart
Gracefully shutting down php-fpm . done
Starting php-fpm  done

//準備zabbix的php頁面
[root@localhost ~]# cd /usr/src/zabbix-4.0.3
[root@localhost zabbix-4.0.3]# 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@localhost zabbix-4.0.3]# mkdir /usr/local/apache/htdocs/zabbix
[root@localhost zabbix-4.0.3]# cp -a frontends/php/* /usr/local/apache/htdocs/zabbix/
[root@localhost zabbix-4.0.3]# chown -R apache.apache /usr/local/apache/htdocs

//配置apache虛擬主機
[root@localhost ~]# vim /etc/httpd24/httpd.conf
//取消註釋,啓用proxy模塊
#LoadModule proxy_module modules/mod_proxy.so
#LoadModule proxy_http_module modules/mod_proxy_http.so
//在配置文件的末尾加以下內容
<VirtualHost *:80>
    DocumentRoot "/usr/local/apache/htdocs/zabbix"
    ServerName      www.wang.com
    ProxyRequests Off
    ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/usr/local/apache/htdocs/zabbix/$1
    <Directory "/usr/local/apache/htdocs/zabbix">
        Options none
        AllowOverride none
        Require all granted
    </Directory>
</VirtualHost>

//設置zabbix/conf目錄的權限,讓zabbix有權限生成配置文件zabbix.conf.php
[root@localhost ~]# chmod 777 /usr/local/apache/htdocs/zabbix/conf
[root@localhost ~]# ll -d /usr/local/apache/htdocs/zabbix/conf
drwxrwxrwx 2 apache apache 81 Aug 17 13:03 /usr/local/apache/htdocs/zabbix/conf

//重啓Apache
[root@localhost zabbix-4.0.3]# service httpd stop
[root@localhost zabbix-4.0.3]# service httpd start
[root@localhost zabbix-4.0.3]# ss -ntl
State       Recv-Q Send-Q     Local Address:Port                    Peer Address:Port              
LISTEN      0      128                    *:111                                *:*                  
LISTEN      0      5          192.168.122.1:53                                 *:*                  
LISTEN      0      128                    *:22                                 *:*                  
LISTEN      0      128            127.0.0.1:631                                *:*                  
LISTEN      0      100            127.0.0.1:25                                 *:*                  
LISTEN      0      128            127.0.0.1:6010                               *:*                  
LISTEN      0      128                    *:10050                              *:*                  
LISTEN      0      128            127.0.0.1:9000                               *:*                  
LISTEN      0      80                    :::3306                              :::*                  
LISTEN      0      128                   :::111                               :::*                  
LISTEN      0      128                   :::80                                :::*                  
LISTEN      0      128                   :::22                                :::*                  
LISTEN      0      128                  ::1:631                               :::*                  
LISTEN      0      100                  ::1:25                                :::*                  
LISTEN      0      128                  ::1:6010                              :::*

3.2 zabbix登陸

  • 修改/etc/hosts文件,添加域名與IP的映射





zabbix初次默認登陸用戶名和密碼:
用戶名:Admin
密碼: zabbix

3.3 添加客戶端




3.4修改顯示語言

若是出現中文亂碼 解決中文亂碼方法: 上傳本地字體 找到本地C:\Windows\Fonts\STXINWEI.TTF(華文新魏)上傳到/usr/local/apache/htdocs/zabbix/fonts/ 將上傳字體更名成默認字體並覆蓋,zabbix_server命令刷新便可

相關文章
相關標籤/搜索