zabbix簡單入門

Zabbix:

功能:

  • 1.監控硬件、軟件、業務指標; 【此功能又可稱爲:採樣】

  • 2.告警;

  • 3.將數據存儲下來;

  • 4.展示;

【有云道:我們決不允許任何未經監控的系統服務甚至是業務上線;監控系統是幫助我們瞭解系統運行狀態的、指標非常重要的組件】

  • 監控系統:

    • 硬件:主機、路由器、交換機、UPS、I/O系統(專業的存儲)……;

    • 軟件:操作系統,網絡,以及各種各樣的應用程序;

    • 異常狀態:DB down掉了、從服務器無法使用了或者所有的複製功能無法繼續進行、服務器不可達了;

    • 非常關鍵的事件:磁盤利用率快接近滿值了(還有5%就滿了)、主從複製結構中從服務器落後主服務器(即有大量的從服務器延遲導致);數據節點down;

    • CPU的100%利用率:

    • 趨勢數據(包括時間):通過圖形方式(趨勢曲線)進行展示

      持續多長時間監控磁盤是否佔滿;內存是否佔滿;什麼時候發生事件是峯值還是持續性;多次採樣;多長時間發生一次,是否週期性發生;例如一天一次,或每週日晚上;發生是事件是否導致其它事件發生例如I/O出問題
  • 採樣:主機:系統指標、業務指標(QPS,TPS),告警

  • 週期性地數據指標採樣 –> 存儲 –> 展示

  • 報警:分析採樣得到的數據是否依然在合理區間;

spacer.gif

  • 監控系統工作的兩個關鍵點:1.首先要有一個【網絡傳感器】,它能夠幫我們在關鍵事件上或關鍵組件上獲取數據指標,然後報告給監控系統端(NMS)。

監控系統端稱爲NMS(網絡監控系統),被監控端稱爲agent;可分爲無agent和有agent;無agent方式包括:ssh,snmp,telnet;基於web監控可使用curl命令;agent一般都是專業開發的;

傳感器【agent】在系統當中有個專門的稱呼,它是個安裝在被監控系統上的組件,這個組件能監控多少指標取決於監控的開發和組件自己的能力. 
agent 與監控端之間可以基於專有協議進行通信,agent是按需開發的,所有功能比ssh做起來要簡單很多,同時功能也要完善和強大很多。

  • 監控通道:基於ssh協議(無agent時),SNMP:Simple Network Management Protocol(簡單網絡管理協議),基於telnet,基於agent進行監控。基於IPMI接口。

SNMP:

Simple Network Management Protocol(簡單網絡管理協議),管理和監控數據,但默認不支持存儲數據。

SNMP是一個非常古老的協議,幾乎市面上所有的網絡組件(也包括操作系統)都原生自帶了SNMP的agent接口;因此只要配置了SNMP的監控端,它就能夠到所有支持snmp 的agent的主機節點上實現數據採集,這個agent就屬於監控在每一個監控主機之上的一個進程,這個進程可以獲取幾乎所有能夠被snmp納入進來的監控指標,而幾乎所有關心的硬軟件指標,尤其是系統性指標,snmp都能夠執行監控操作,也就意味着snmp可以採集本地主機上幾乎所有你所關注的指標數據:比如像CPU利用率,網絡帶寬使用狀態,網卡數據報文傳輸速率等等一切都可以採集;

  • snmp:最通用的監控系統;只要配置了snmp的監控端,就能監控所有設備;

    • v1 老版本:沒有認證功能,通信過程沒有加密;很多網絡設備僅支持v1版本;

    • v2c 社區版本:有身份識別機制,基於預密鑰系統,加密方式不成熟;

    • v3: 包括了安全認證,通信過程加密;

以LINUX 來說明,SNMP的監控端就是一個命令行工具,它可以基於snmp協議向被監控端的進程發出請求;

  • 它的命令有:

    • snmpget:獲取某個數據指標;

    • snmpgetnext:獲取一個數據後會連續自動獲取下一個數據;

    • snmpwalk:像散步一樣踩;數據輪詢讀取;

    • snmptrap:捕捉;被監控端(agent)能夠自動發送“關鍵型事件“ (比如再不進行處理就要掛了的、磁盤快滿了等)給SNMP監控端;

MIB 庫描述許多指標,用倒置的樹狀結構描述,每一個被監控對象都有一個全局唯一標識;

  • 唯一標識稱爲:OID 監控對象ID;

snmp支持管理端發送寫操作,在被管理端執行;但不會採樣後,把數據存儲下來,沒有周期地數據指標採樣,不會繪圖;

  • rrd【round-robin database】:輪詢數據庫

  • IPMI:intel公司生產的專用接口;

也是監控工具:

  • cacti(利用snmp週期性的存取數據;繪圖工具,rrd監控,但不能報警;繪製完後存取在rrd(輪詢數據庫)中);

  • nagios(只記錄過去到目前爲止的幾個數據,實現關注的業務指標的數據定義合理區間,在合理區間則不問,不在則;報警功能異常強大。但無法存取數據,無法繪圖

  • ganglia:強大的數據整合功能,分佈式展示;

被監控設備通用支持snmp監控,有些可安裝agent監控,如果是類unix系統也可使用ssh接口進行監控,有些硬件還支持智慧平臺管理接口IPMI(在主版上的跟網卡接 
口相似,現代專用服務器都有這樣的接口,不同公司生產的可能不太一樣)

之前都是通過將cacti 和nagios 一併起來使用。

  • 監控系統存儲的數據:時間序列數據(根據時間的走勢產生的),zabbix是存取在mysql或pdsql這樣的開源系統中的kp;

  • 存儲數據的數據庫:

    • 關係型數據庫

    • 輪詢數據庫(rrd)

    • 時間序列數據庫(非關係型數據庫,NoSQL中的一種)

zabbix (自行升級報警機制,強大的運維聯動工具)

    LTS(長期支持維護的版本):2.2, 3.0   【建立安裝的版本】
  • Zabbix特性:

    • 存儲於數據庫(默認爲兩種數據庫): 
      mysql 
      pgsql

    • 支持告警升級: 
      script 【自定義腳本】 
      notification 【通知】

    • graph 【圖表】

    • map 【網絡拓撲圖】

    • screen 【將多個graph(圖表)整合在一個屏幕上展示】

    • slide show 【支持使用幻燈片的形式展示】

    • 自定義檢測機制:UserParamenter 【用戶參數】

    • 自定義指定時間間隔 【每隔多長時間監控一次】

    • 數據採樣:snmp,ssh/telnet,agent,lpml,jmx【java的管理接口】

    • 實時繪圖方案:展示功能的一種表現

    • 告警功能:

    • 數據存儲:

    • 支持使用模板:好處在於,如果監控200個linux主機,裏面有50個是webserver,但監控的指標應該都是相同的,可以做一個模板,每個主機進行套用,就可以使用模板機制完成快速監控和配置。

    • 支持網絡自動發現機制:如果網絡中新增了200臺主機,不需要手動添加這200臺主機進行監控,而是添加進來之後能夠自動納入到zabbix的監控體系中去;zabbix通過掃描一個網段中的主機,如果發現了某個主機,就自動加進來進行監控,還可以自動把模板機制套上去來完成所有數據指標的監控。

    • 支持API做自己展示的接口:

啓動幾個監控子進程取決於到底監控的指標有多少個。

  • 分佈式監控: 
    proxy:server值監控一部分指標,代理也收集數據,會在某一時刻同一發送給zabbix service。 
    sever <—-> proxy <—-> agent/ssh/ipmi

  • zabbix的組件:

    Zabbix Server:負責接收agent發送的報告信息的核心組件(最關鍵的組成部分,使用C語言所研發,工作性能非常棒),所有配置、統計數據及操作數據均由其組織進行;Database Storage:專用於存儲所有配置信息(使用mysql或pdsql),以及由zabbix收集的數據;Web interface:zabbix的GUI接口,通常與Server運行在同一臺主機上;Proxy:可選組件,常用於分佈監控環境中代理Server收集部分被監控端的監控數據並統一發往Server端;Agent:部署在被監控主機上,負責收集本地數據併發往Server端或Porxy端;
  • zabbix宏觀架構圖1: 
    spacer.gif

spacer.gif

  • zabbix 的宏觀架構圖2: 
    spacer.gif

spacer.gif

  • zabbix程序的組件構成:

    zabbix-server::服務端守護進程;zabbix-database:數據庫;zabbix web GUI:web界面;zabbix-agent:agent端守護進程; 【做分佈式監控纔會用到】zabbix-proxy:代理服務器,可選組件;zabbix-get:命令行工具,手動測試向agent發起數據採集收發;zabbix-sender:命令行工具,運行於agent端,手動向server端發送數據;zabbix-java-geteway:JMX接口用到的組件,zabbix2.0引入,java網關類似於zabbix_agentd,監控java或jam虛擬機的相關程序;只能是單單向,由zabbix server從JMX來取數據;JMX: JVM

zabbix的核心術語:

    host --> host group    【主機是要監控的網絡設備;可能是服務器或者 路由器 或 交換機】    item:key[arg1, arg2], command    【監控項,key+採集到數據】              key:【定義採集命令的別名;配置時可查看官方文檔】    trigger:【觸發器,表達式;】         host: cpu.cs[#1] > 10000    event(狀態變更):trigger events,discovery events;【事件有多種;】    action:condition,operation;【針對特定事件的處理動作】    alert:【報警】    media:【媒介;傳遞報警信息】    templation:【模板,邏輯或者抽象的組件;】    application:【應用,即同類別的多個item構成的組;】    監控項(item):【對於zabbix監控來說,我們真正每一個監控的數據指標,在zabbix中我們用 item 進行描述,而每個item都由一個“key”進行標識;】    hosts (host groups):items      screens:屏幕    maps:拓撲圖

spacer.gif

spacer.gif

spacer.gif 
spacer.gif

zabbix server端的子進程poller通用的,基於agent實現採集;httppoller執行基於http協議監控數據採集;還有很多poller,例如ipmipoller、snmppoller、jmxpoller;housekeeper進程負責清理過期數據;例如每5分鐘檢查一次是否有過期數據;pinger進程探測主機是否在線;nodewatcher進程監控節點是否在線;alerter報警器,執行報警時可分級escalator;可實現自動發現discoverer;db_config_syncer與代理通信時發送數據配置同步;db_data_syncer與代理通信時發送數據同步;watchdog進程是用來監控每個子進程是否OK;

zabbix的進程:

  • 閾(yu)值:一個目標應該存在的合理區間和非合理區間的界限。比如定義閾值爲100,大於100則爲非合理區間,小於等於100則爲合理區間。

  • zabbix的安裝和使用 
    Database: mysql, pgsql 【依賴關係】 
    選用:mariadb

zabbix安裝:

  • 依賴關係:

    • 要求部署apache、php;

    • 其中php要提供的模塊:

            gb 爲php gd的擴展,必須支持--with-png-dir, --with-jpeg-dir, --with-freetype-dir;bcmath 爲php-bcmath模塊,--enable-bcmath;ctype 爲php-ctype模塊,--enable-ctype;libXML 爲php-xml或php5-dom模塊;xmlreader 爲php-xmlreader模塊;xmlwriter 爲php-xmlwriter模塊;session 爲php-session模塊;sockets 爲php-net-socket模塊,--enable-sockets;mbstring 爲多字節字符串模塊,php-mbstring模塊,--enable-mbstring;gettext 爲php-gettext模塊,--with-gettext;ibm_db2 爲如果zabbix後端數據庫是IBM DB2數據庫所提供的模塊;mysql 爲如果zabbix後端數據庫是MYSQL數據庫所提供的模塊;oci8 爲如果zabbix後端數據庫是Oracle數據庫所提供的模塊;pgsql 爲如果zabbix後端數據庫是PostgreSQL數據庫所提供的模塊;sqlite3 爲如果zabbix後端數據庫是SQLite數據庫所提供的模塊;zabbix服務器依賴軟件:OpenIPMI 爲支持IPMI所依賴到的軟件;libssh2 爲支持SSH所依賴到的軟件;fping 爲支持ICMP所依賴到的軟件;libcurl 爲支持web監控所依賴到的軟件;libiksemel 爲支持Jabber即時通信協議所依賴到的軟件;net-snmp 爲支持SNMP所依賴到的軟件;
  • 安裝方式:

    Source code(源代碼):不建議使用; 
    預編譯好的二進制程序包: 
    rpm: 
    epel 
    zabbix repository 【直接指向zabbix的官方源即可】 
    deb 【Debian軟件包格式的文件擴展名】

教室yum源baseurl=ftp://172.16.0.1/pub/Sources/7.x86_64/zabbix/x86_64/ 官方yum源: [epel]name=zabbix epelbaseurl=http://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/gpgcheck=0

2.2,2.4,3.0 【3.0中server.service 由server-mysql 包提供;】

安裝zabbix 【此處以3.0爲例】

[root@localhost ~]# vim /etc/yum.repos.d/zabbix.repo------------------------------------------------------------------------------------[zabbix]name=zabbix.repobaseurl=ftp://172.18.0.1/pub/Sources/7.x86_64/zabbix/x86_64/gpgcheck=0 [root@localhost ~]# yum -y install zabbix-server-mysql         【此處僅爲演示是否這個包就是server包】[root@localhost yum.repos.d]# rpm -q zabbix-server-mysqlzabbix-server-mysql-3.0.2-1.el7.x86_64 [root@localhost ~]# yum install mariadb-server[root@localhost ~]# vim /etc/my.cnf-------------------------------------------------------------------------------------[mysqld_safe]...skip_name_relsolve=on                【跳過名稱解析】innodb_file_per_table=on             【啓動innodb】 [root@localhost ~]# systemctl start mariadb.service[root@localhost ~]# ss -tnlState      Recv-Q Send-Q         Local Address:Port                        Peer Address:Port              LISTEN     0      128                        *:808                                    *:*                  LISTEN     0      50                         *:3306                                   *:*  [root@localhost ~]# mysqlMariaDB [(none)]> create database zabbix charset 'utf8';       【創建一個zabbix 數據庫,並把它的字符集設爲'utf8'】MariaDB [(none)]> gtant all on zabbix.* to zbxuser@'127.0.0.1' identified by 'zbxpass';      【創建一個用戶名爲zbxuser,密碼爲zbxpass的用戶能夠通過本機遠程訪問zabbix 數據庫】MariaDB [(none)]> gtant all on zabbix.* to zbxuser@'172.18.%.%' identified by 'zbxpass';  【創鍵17.18網段的所有主機均可遠程訪問】MariaDB [(none)]> select host,user,password from mysql.user;      【查看當前數據庫中用戶賬號及密碼】 [root@localhost ~]# yum install zabbix-server-mysql zabbix-get zabbix-web zabbix-web-mysql zabbix-agent zabbix-sender                             【安裝所有要用到的程序包】 [root@localhost ~]# ls /usr/lib/systemd/system | grep zabbix            【查找/usr/lib/systemd/system 目錄下關於zabbix的文件】zabbix-agent.servicezabbix-server.service [root@localhost ~]# vim /usr/lib/systemd/system/zabbix-server.service   【查看這個文件】...[Service]Environment="CONFFILE=/etc/zabbix/zabbix_server.conf"    【可以看到服務是由/etc/zabbix/zabbix_server.conf 這個文件提供的】EnvironmentFile=-/etc/sysconfig/zabbix-server [root@localhost ~]# rpm -ql zabbix-server-mysql/usr/share/doc/zabbix-server-mysql-3.0.2/README/usr/share/doc/zabbix-server-mysql-3.0.2/create.sql.gz                 【此sql腳本 用於初始化zabbix server數據庫】 [root@localhost ~]# cd /usr/share/doc/zabbix-server-mysql-3.0.2/[root@localhost zabbix-server-mysql-3.0.2]# lsAUTHORS  ChangeLog  COPYING  create.sql.gz  NEWS  README [root@localhost zabbix-server-mysql-3.0.2]# gzip -d create.sql.gz      【展開解壓壓縮包】[root@localhost zabbix-server-mysql-3.0.2]# lsAUTHORS  ChangeLog  COPYING  create.sql  NEWS  README [root@localhost zabbix-server-mysql-3.0.2]# ll -h-rw-r--r-- 1 root root 3.0M 4月  20 22:36 create.sql [root@localhost zabbix-server-mysql-3.0.2]# mysql -h127.0.0.1 -uzbxuser -p zabbix < create.sql  【以 zbxuser 用戶身份導入數據庫 zabbix 指明給 create sql】Enter password:                 【密碼:zbxpass】 [root@localhost zabbix]# cp /etc/zabbix/zabbix_server.conf /etc/zabbix/zabbix_server.conf.bak [root@localhost zabbix]# vim /etc/zabbix/zabbix_server.conf-----------------------------------------------------------------------------DBHost=127.0.0.1DBName=zabbixDBUser=zbxuserDBPassword=zbxpassDBSocket=/var/lib/mysql/mysql.sock [root@localhost ~]# systemctl start zabbix-server.service  【啓動zabbix服務】   #啓動 web GUI[root@localhost zabbix]# rpm -q php-mysql   【確保此包安裝上】php-mysql-5.4.16-36.el7_1.x86_64 [root@localhost zabbix]# vim /etc/httpd/conf.d/zabbix.conf ---------------------------------------------------------------------------------<Directory "/usr/share/zabbix/conf">        ...        php_value date.timezone Asia/Shanghai  【更改此處時區定爲 亞洲/上海 】    </IfModule></Directory> [root@localhost zabbix]# systemctl start httpd.service   【啓動httpd 服務】 訪問http://172.18.77.84/zabbix/setup.php  首次安裝zabbix 使用;

圖像14.png

安裝服務端: 
# yum install zabbix-server-mysql zabbix-get

安裝web GUI: 
# yum install zabbix-web zabbix-web-mysql

安裝agent端: 
# yum install zabbix-agent zabbix-sender

  • zabbix server數據庫初始化:

    2.x:三個sql腳本; 
    3.x: 一個sql腳本; 
    create.sql 
    mysql -h127.0.0.1 -uzbxuser -p zabbix < create.sql

  • 啓動zabbix-server進程: 
    /usr/lib/systemd/system/zabbix-server.service

    • 配置文件:/etc/zabbix/zabbix_server.conf

  • 指令有四類:

     ############ GENERAL PARAMETERS #################   【通用指令】  ############ ADVANCED PARAMETERS ################  【高級指令;用於定義子進程數量、超時時長以及緩存大小】  ####### LOADABLE MODULES #######      【加載的模塊】  ####### TLS-RELATED PARAMETERS #######     【跟TLS 相關的參數】

通用參數:

    ListenPort=10051            【監聽的端口】    SourceIP=          【指定那個zabbix_serverIP 爲源ip】    LogType=file      【日誌將使用自我獨立格式進行】    LogFile=/var/log/zabbix/zabbix_server.log   【定義日誌文件路徑】    LogFileSize=0   【0 表示不滾動,但是這樣是不合理的;如果此處設爲 1024 則表示1G之後開始滾動】    PidFile=/var/run/zabbix/zabbix_server.pid     【服務端PID文件的文件路徑】 ----------------------上面爲無需更改選項-------------------------------------- 下面爲手動更改選項---------------     DBHost=localhost   【數據庫服務器地址】    DBName=zabbix     【數據庫名稱】    DBUser=zbxuser      【數據庫用戶;千萬不能設爲管理員賬號】    DBPassword=zbxpass    【數據庫用戶密碼;真正生產使用需要使用複雜密碼】    DBSocket=/var/lib/mysql/mysql.sock   【指明DBSocket 的位置(做本地通信的);此處爲默認rpm包安裝所在位置;生產使用時如果database 和 zabbix 不在同一主機上,這個就沒有影響】

啓動服務:systemctl start zabbix-server.service

注意:CentOS 7.0和7.1需要升級trousers程序包版本到0.3.13-1 以上.; 【否則無法啓動 zabbix-server服務】

配置zabbix-web

  • 配置php的時區指定: 
    (1) php.ini 【編輯此文件】 
    (2) /etc/httpd/conf.d/zabbix.conf 【rpm安裝的可以編輯此文件,它是zabbix安裝時主動提供的片段化的配置文件,有個專門的指令用來定義只爲zabbix應用程序所開啓的配置而不至於全局生效】

訪問URL:http://server/zabbix 
安裝後配置文件:/etc/zabbix/web/zabbix.conf.php

登錄: 
用戶名:admin/zabbix——密碼

添加一臺被監控主機:

host group 【首先定義好主機組】–> host 【添加被監控主機】–> appliction【建立應用】 –> item【閾值】 –> graph (simple, customed)【簡單,自定義的】 –> triggers【定義觸發器】 –> action 【完成報警操作】

  • 回顧:

監控系統:採集、存儲(歷史數據:採用某個時間點獲取到的數據;不會保持太長時間,最多90天;和趨勢數據:對於過去的數據基於某種平度求平均值,一般是基於每天來做的;可以保持1年、2年、5年之久)、可視化、報警(發送通知)
  • 採樣:ssh/telnet, IPMI, agent, snmp, …

  • 存儲:

    • 歷史數據、趨勢數據

    • 存儲於何處: 
      (1)rrd 
      (2)sql:MySQL, PGSQL,Oracle, SQLite, DB2 
      (3)時間序列數據庫 
      (4)NoSQL

    • 展示:應用程序(web,比如運行再php上)

    • 告警:通過郵件、短信、微信等方式發送報警信息

  • zabbix的術語:

    主機、主機組;    監控項:key, command        應用(監控項組):application    Graph:         屏幕(graph組):screen    Trigger:表達式     Action:        Operations            remote command            send notification    escalation:報警升級    Maps    ……
  • 程序組成部分: 
    zabbix-server, zabbix-agent, zabbix-get, zabbix-sender, zabbix-database(MySQL), zabbix-web 【zabbix前端接口】 
    zabbix-proxy(分佈式監控會用到)

安裝配置監控系統:

  • zabbix-database: 【可獨立主機實現】 
    CentOS 6:mysql-server 
    CentOS 7:mariadb-server

  • zabbix-server:【獨立的主機、組件】 
    /etc/zabbix/zabbix-server.conf 【指明連接哪個數據庫、服務器等】

  • zabbix-web: 
    依賴於:httpd.php(extensions:擴展)

安裝被監控的系統:

  • zabbix監控接口: 
    (1)ssh:ssh service 【ssh服務】 
    (2)telnet: telnet service 【配置telnet服務】 
    (3)IPMI:有這樣的硬件接口 
    (4)SNMP:snmp agent 【通用的接口機制】 
    (5)agent:OS, 【安裝agent,啓動agent進程纔可以實現監控操作】

zabbix(2)

  • agent端配置: 
    ··· 
    # yum install zabbix-agent zabbix-sender

        /etc/zabbix/zabbix_agentd.conf

    ···

  • zabbix agent:

        ############ GENERAL PARAMETERS ##########                       EnableRemoteCommands=0     【是否允許執行遠程命令;0 爲禁用,設爲1則啓用】             ##### Passive checks related(被動檢測相關的配置:agent等待server過來請求數據) 【被動監控僅需配置此處】      Server=127.0.0.1  【授權執行數據採集監控操作的zabbix server主機的地址】                            【以逗號分隔授權給哪些zabbix-server或zabbix-proxy過來採集數據的服務器地址列表;】                        ListenPort=10050            ListenIP=0.0.0.0   【即監聽所有的IP地址】                        StartAgents=3  【啓動agent進程數:此處爲3】                                    【真正啓動多少取決於併發允許有多少個過來對當前主機上需要監控item 採集數據的線程有多少個,比如有50個線程,則agent需要啓動進程數也要50個】             ##### Active checks related(主動檢測相關的配置:agent主動向server發送監控數據)                        *ServerActive=IP[:Port]                                【以逗號分隔的、由當前agent主動發送監控數據過去的server端;可以指明端口】【主動監控僅需配置處 1】  ServerActive=127.0.0.1  【發送監控數據至哪些地址;地址列表,逗號分隔的IP[:PORT];】【主動監控僅需配置處 2】  Hostname=Zabbix server  【在zabbix主機上的主機名,用於報告給zabbix server,因此,需惟一;】                              HostnameItem=system.hostname   【使用其他方式檢測出來的相關信息給服務器端進行發送,指明一個Item(key)來獲取本機的主機名然後發送給服務端】                              HostMetadata=     【指明一個源數據】                               RefreshActiveChecks=120    【刷新時間間隔;此處爲120秒刷新一次】                              BufferSend=5      【發送時使用多少個緩衝】                              BufferSize=100     【發送時使用多大緩衝】             #systemctl start zabbix-agent.service

例如:配置zabbix被監控端

使用代理方式:]# yum -y install zabbix-agent zabbix-sender]# cd /etc/zabbix/]# cp /etc/zabbix/zabbix_agentd.conf{,.bak} 配置被監控agent端只基於被動模式監控,所以只需配置server地址即可;]# vim /etc/zabbix/zabbix_agentd.confServer=172.18.11.113 服務端ip,爲授權項;可寫多個ip地址授權列表,用逗號分隔; ]# systemctl start zabbix-agent.service]# systemctl status zabbix-agent.service]# ss -tnl 確保10050端口監聽;]# iptables -vnL 確保防火牆沒有阻斷10050端口; ]# vmstat     【查看cpu狀態】]# vmstat 1       【持續查看cpu狀態1秒看一次;】

監控接口 –> Host (設定好相關服務) 
host group –> host –> application –> item –> trigger –> action (condition, operation)

  • 快速添加主機: 
    (1)主機發現:host discover 
    (2)發現事件:

lld: low level discover

快速監控主機: 
、 link

  • 主機:

    • 監控主機的接口(只有4種):【不要基於多種接口進行監控】

      Agent interfaces 【建議首選】 
      SNMP interfaces 
      JMX interfaces 
      IPMI interfaces

  • 在主機上定義item的方式

    • (1)zabbix內建:預定義;內建key有n種分類 
      type:agent【agent端是被動的】,agent(active:主動的),snmp v1,ssh, ……

    • (2)用戶自定義:在客戶端進行定義,在服務端進行添加;

    • item:key+parameters

    • key(2種):

3.0官方文檔:https://www.zabbix.com/documentation/3.0/manual/config/items/itemtypes/zabbix_agent

  • 採集到的信息的種類:

    numeric:數值,無符號,浮點數;charactor:字符串數據;log 日誌數據;text 文本數據;
  • 數據的類型:

    boolean:布爾型;octal:八進制數據;decimal:十進制數據;hexadecimal:十六進制數據;
  • store value:

    AS is:數據不做任何處理;採樣的是什麼就記錄什麼;Delta(Simple change):本次採樣數據減去前一次採樣數據;Delta(speed per second):本次採樣數據減去前一次採樣數據,而後除以採樣間隔時長;
  • trigger:觸發器 
    邏輯表達式;通過邏輯表達式評估通過item獲取到的數據是否位於合理區間;item採集到的數據會直接交由trigger評估; 
    狀態:OK(正常狀態–>較老的版本中,其爲FALSE), PROBLEM(非正常狀態–>較老的版本中,其爲TRUE) 
    OK –> PROBLEM: event 【false】 
    PROBLEM –> OK: event 【true】

  • 通常會用到函數: 
    nodata()【未採集到的數據】,now()【獲取當前時間】, ...

spacer.gif

{node2.mageedu.com:system.cpu.switches.last(#3)}>100 【此主機中 CPU 檢測 最近3次中有1次】 
spacer.gif

  • 媒介:定義告警方式的傳輸信息的通道;

    • (1)Email:郵件; 
      [email protected] 
      [email protected]

    • (2)jabber:即時通信通用框架;基於msn、sq、Yahoo Messenger、google的GTalk的等通信軟件;

    • (3)SMS:短信(北美使用);

    • (4)script:自定義腳本;必須放置在指定路徑下,可調用短信網關、微信網關;自定義腳本文件存放路徑:AlertScriptsPath=/usr/lib/zabbix/alertscripts

    • (5)Ez Texting(USA,Canada):商業;

    • Meida Type類型: 
      默認3種:

  • 安全連接:發郵件時是否使用安全的連接; 
    starttls:使用smtp協議時,自動觸發ssl; 
    ssl/tls:需要額外配置ssl,明確指明使用smtp協議時纔會調用ssl; 
    如果使用的是互聯網上的郵件服務器,基於認證的方式,填入註冊的郵箱、密碼即可;

例如: 

]# ab -n 2000 -c 100 http://172.18.11.11/index.html 
在被監控端測試,以便觸發cpu上下文切換超過100閾值; 

  • 一次完整的(簡單)監控配置: 
    host group –> host –> [application] –> item(必須屬於application) –>trigger(Events) –> (Media Type,User Group,User) –> action (conditions,operation(send message,remote script))

  • 依賴關係:

  • 表達式格式:

    <server>:<key>.<function>(<paramter>)<operator><constant>    key[args]    min(3m)>100
  • events:

  • 事件的種類:

    event source: trigger, discovery, auto registration, internal內部事件:某item從normal轉換爲unsupported、lld發現規則從normal轉換爲unsupported,某trigger從normal轉換爲unsupported等等 ;觸發器事件:發現事件:Service UP, Service Down, Host Up, Host Down, Service Discovered, Service List, Host Discovered, Host Lost自動註冊事件:active模式agent主動與server通信,zabbix server使用agent的ip地址與端口來添加一個被監控主機;

例如:監聽建立 TCP 是否能連接到指定端口

spacer.gif

spacer.gif 
spacer.gif

net.tcp.port[<ip>,port] 檢查是否能建立 TCP 連接到指定端口。返回 0 - 不能連接;1 - 可以連接//   net.tcp.port[172.18.77.84,80]

注意:定義完成後要重啓 httpd 服務纔可生效

告警:

send message(發送信息): 
Media Types:傳遞消息的通道; 
script:用來定義信息通道,完成信息傳遞的腳本;

  • (1)腳本放置路徑:在服務器端/etc/zabbix/zabbix_server.conf 
    AlertScriptsPath=/usr/lib/zabbix/alertscripts

  • (2)zabbix會向腳本傳遞三個參數:

     $1:經由此信道發送的信息的接收目標;可以是郵箱地址,電話號碼; $2:信息的主題,subject; $3:傳遞信息的內容;

    Users:利用指定信道接收消息; 
    Users Groups:用戶的邏輯容器;

  • remote command(執行遠程命令):

  • 功能:

    重啓服務: 
    通過IPMI接口重啓服務器; 
    任何自定義腳本可完成的功能:清理磁盤空間,虛擬機實例遷移等等;

remote command中的腳本是遠程執行的腳本,而sent message中media type裏的腳本是用來發信息的腳本;

在被管理主機上zabbix_agentd進程是以zabbix用戶身份運行的,所以要執行遠程命令時,會用到管理權限,所以zabbix基於sudo的方式執行命令;

前提:

  • 在agent需要完成的配置:

    • (1)zabbix用戶有所需要管理權限(基於sudo授權);

                編輯/etc/suudoers          ]# visudo          1) Defaults requiretty,修改爲 # Defaults requiretty,表示不需要控制終端就可以運行sudo 命令;          2) Defaults requiretty,修改爲 # Defaults:nobody !requiretty,表示僅 nobody 用戶不需要控制終端;
    • (2)agent進程要允許執行遠程命令;/etc/zabbix/zabbix_agentd.conf 
      EnableRemoteCommands=1

  • 可執行的命令的類型(5種方式):

      IPMI  ssh:需要提供賬號、密碼,一般不使用;  telnet  Custom Script:自定義腳本    sudo /usr/bin/systemctl restart httpd.service  Global:全局

告警配置:

spacer.gif 
spacer.gif 
spacer.gif 
spacer.gif 
在被管理端:

第一步:開啓zabbix用戶的sudo管理權限:]# visudo-------------------------------------------------------------## Same thing without a password# %wheel        ALL=(ALL)       NOPASSWD: ALLzabbix          ALL=(ALL)       NOPASSWD: ALL   【手動添加】    表示zabbix用戶擁有所有權限,無需密碼就可執行命令; 其中顯示:#includedir /etc/sudoers.d表示也可自己創建一個配置文件,在/etc/sudoers.d/目錄下: #Defaults requiretty 把此項註釋掉,否則遠程執行命令失敗; 第二步:開啓zabbix server執行遠程命令]# cd /etc/zabbix/]# vim /etc/zabbix/zabbix_agentd.conf---------------------------------------------------------------------------EnableRemoteCommands=1 允許遠程命令在本機執行LogRemoteCommands=1 啓用遠程命名執行的記錄日誌【可選可不選】  ]# systemctl restart zabbix-agent.service]# usermod -s /bin/bash zabbix]# mkdir /var/lib/zabbix
  • 告警升級:

    • (1)remote command

    • (2)send message

在zabbix server端編輯發送郵件的腳本:

例如:]# vim /usr/lib/zabbix/alertscripts/sendmail.sh#!/bin/bash# contact=$1subject=$2body=$3 echo "$body" | mail -s "$subject" "$contact" ]# chmod +x /usr/lib/zabbix/alertscripts/sendmail.sh ]# /usr/lib/zabbix/alertscripts/sendmail.sh root@localhost "test" "test body"手動測試腳本 ]# mail 在web頁面設置:]# vim /etc/zabbix/zabbix_server.confDebugLevel=5 開啓調試級別

spacer.gif 
spacer.gif


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