天天看點

zabbix簡介及部署

一、zabbix簡介

   zabbix是一款企業級的監控解決方案,它可以通過SNMP、zabbix專用agent、簡單的系統管理及網絡工具來監控對象,收集資訊,并将收集到的資訊存儲在資料庫中,通過即時繪制來進行資料展示,并根據門檻值,超出及報警,并具有關聯處理的功能,即利用腳本進行服務重新開機等操作。在衆多監控工具中,zabbix是有專用的agent端監控工具,在windowns,linux等衆多作業系統,都有其專用的agent端。在網絡裝置,如路由器,交換機中,zabbix使用SNMP協定或SSH協定來實作監控功能。zabbix支援的資料存儲有mysql和pgsql資料庫。綜上所述,zabbix可謂是功能衆多,在應用領域,zabbix自1.8版本後,廣為流傳。

自動化監控架構圖如下:

 (引自馬哥文檔)

zabbix可監控的對象:

            裝置/軟體

                裝置:伺服器,路由器,交換機,IO系統

                軟體:OS,網絡,應用程式

            意外狀況:

                主機down機,服務不可用,主機不可達

            嚴重事件故障:

                磁盤滿了,資料節點down掉了

            主機性能名額:

                CPU,記憶體使用情況

            趨勢:時間序列資料(一般用于資料展示階段)

zabbix包含的元件:

            zabbix-server

            zabbix-agent

            zabbix-web:GUI,使用者實作zabbix設定和展示

            zabbix-proxy:分布式監控環境中的專用元件    

            zabbix-database:MYSQL,PGSQL(postgreSQL),Oracle,DB2,SQLite

zabbix的常用術語:

            主機(host):要監控的網絡裝置,可由IP或DNS名稱指定

            主機組(host group):主機的邏輯容器,可以包含主機和模闆,但同一個組内的主機和模闆不能互相連結,主機組通常在給使用者或使用者組指派監控權限時使用

            監控項(item);一個特定監控名額的相關的資料,這些資料來自于被監控對象,item是zabbix進行資料收集的核心,沒有item,将沒有資料,相對某監控對象來說,每個item都由“key”進行辨別

            觸發器(trigger):一個表達式,用于評估某監控對象的某特定item内所接收到的資料是否在合理範圍内,即門檻值;接收到的資料量大于門檻值時,觸發器狀态将從“ok”轉變為“problem”,當資料量再次回歸到合理範圍時,其狀态将從“problem”轉換回“ok”;

            事件(event):即發生的一個值得關注的事情,例如觸發器的狀态轉變,新的agent或重新上線的agent的自動注冊等

            動作(action):指對于特定事件事先定義的處理方法,通過包含操作(如發送通知)和條件(何時執行操作)

            報警更新(escclction):發送警報或執行遠端指令的自定義方案,如每隔5分鐘發送一次警報,共發送5次等

            媒介(media):發送通知的手段或通道,如Email、Jabber或SMS等

            通知(notification):通過標明的媒介向使用者發送的有關某事件的資訊

            遠端指令(remote command):預定義的指令,可在被監控主機處于某特定條件下時自動執行

            模闆(template):用于快速定義被監控主機的預設條目集合,通常包含了item、trigger、graph、screen、application以及low-level discovery rule(較低級别的發現規則);模闆可以直接連結至單個主機

            應用(application):一組item的集合

            web場景(web scennario):用于檢測web站點可用性的一個或多個HTTP請求

            前端(frontend):zabbix的web接口

zabbix工作流程:

<a href="http://s3.51cto.com/wyfs02/M00/8A/DB/wKioL1g9joiRC_6hAAA6Vw0AYpI413.png-wh_500x0-wm_3-wmp_4-s_1875017194.png" target="_blank"></a>

            定義HostGroups之後定義Host,Host可以直接使用Template,Template中包含Graphs(展示),Triggers(報警),items(監控項);Host還可以先定義items,再在items上定義Triggers,Triggers其實是定義門檻值,而當被監控數值超過了門檻值,即觸發Events(事件),由Events激活Actions(動作),由Action來執行腳本重新開機服務或其他報警操作,報警操作有郵件,電話等。maintenance定義了在業務上線,軟硬體維護等時期,不産生報警;而items通過agent,snmp,internal,ipmi等方式收集資訊。HostGroups的分組可以基于主機類型,地理位置,業務等方式。

zabbix伺服器端主要程序:

            watchdog:監控server端所有程序

            poller:收取agent端資料

            httppoller:http專用的poller

            discoverer:自動發現agent,并加入監控

            alerter:報警

            housekeeper:内部管理

            pinger:通過ping操作探測主機是否線上

            escalator:報警更新

            timer:計時器

            nodewatcher:監控節點

            db_data_syncer:資料庫資料同步器

            db_config_syncer:資料庫配置同步器

zabbix的介紹完畢,下面咱們來部署zabbix。

二、zabbix部署

在安裝zabbix之前,提前部署好LAMP或者LNMP。

 zabbix官網為我們提供了三種安裝方式:

    (1)源碼編譯安裝      

<code># tar -zxvf zabbix-3.2.1.tar.gz        </code>

<code>同時安裝server和agent,并支援将資料放入mysql資料中,可使用類似如下配置指令:</code>

<code>.</code><code>/configure</code> <code>--</code><code>enable</code><code>-server --</code><code>enable</code><code>-agent --with-mysql --</code><code>enable</code><code>-ipv6 --with-net-snmp --with-libcurl --with-ssh2</code>

<code>        </code> 

<code>如果僅安裝server,并支援将資料放入mysql資料中,可使用類似如下配置指令:</code>

<code>.</code><code>/configure</code> <code>--</code><code>enable</code><code>-server --with-mysql --with-net-snmp --with-libcurl</code>

<code>如果僅安裝proxy,并支援将資料放入mysql資料中,可使用類似如下配置指令:</code>

<code>.</code><code>/configure</code> <code>--prefix=</code><code>/usr</code> <code>--</code><code>enable</code><code>-proxy --with-net-snmp --with-mysql --with-ssh2</code>

<code>如果僅安裝agent,可使用類似如下配置指令:</code>

<code>.</code><code>/configure</code> <code>--</code><code>enable</code><code>-agent</code>

<code>而後編譯安裝zabbix即可:</code>

<code># make</code>

<code># make install</code>

    (2)配置yum源安裝

<code>[root@jymlinux ~]</code><code># rpm -ivh http://repo.zabbix.com/zabbix/2.4/rhel/6/x86_64/zabbix-release-2.4-1.el6.noarch.rpm</code>

<code>Retrieving http:</code><code>//repo</code><code>.zabbix.com</code><code>/zabbix/2</code><code>.4</code><code>/rhel/6/x86_64/zabbix-release-2</code><code>.4-1.el6.noarch.rpm</code>

<code>warning: </code><code>/var/tmp/rpm-tmp</code><code>.QBkmAF: Header V4 DSA</code><code>/SHA1</code> <code>Signature, key ID 79ea5ed4: NOKEY</code>

<code>Preparing...                </code><code>########################################### [100%]</code>

<code>1:zabbix-release         </code><code>########################################### [100%]</code>

<code>[root@jymlinux ~]</code><code># yum clean all</code>

<code>已加載插件:fastestmirror, langpacks</code>

<code>正在清理軟體源: base extras updates zabbix zabbix-non-supported</code>

<code>Cleaning up everything</code>

<code>Cleaning up list of fastest mirrors</code>

<code>[root@jymlinux ~]</code><code># yum makecache</code>

     (3)rpm包下載下傳安裝

 2.配置zabbix-database,以mysql為例,可使用mysql和pgsql

<code>MariaDB [(none)]&gt; create database zabbix character </code><code>set</code> <code>utf8;</code>

<code>MariaDB [(none)]&gt; grant all on zabbix.* to </code><code>'zbxuser'</code><code>@</code><code>'localhost'</code> <code>identified by </code><code>'zbxpass'</code><code>;</code>

<code>MariaDB [(none)]&gt; grant all on zabbix.* to </code><code>'zbxuser'</code><code>@</code><code>'192.168.%.%'</code> <code>identified by </code><code>'zbxpass'</code><code>;</code>

<code>MariaDB [(none)]&gt; flush privileges;</code>

<code>#連接配接測試</code>

<code>[root@jymlinux ~]</code><code># mysql -uzbxuser -hlocalhost -p</code>

<code>Enter password: </code>

<code>Welcome to the MariaDB monitor.  Commands end with ; or \g.</code>

<code>Your MariaDB connection </code><code>id</code> <code>is 4</code>

<code>Server version: 5.5.50-MariaDB MariaDB Server</code>

<code>Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.</code>

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

<code>MariaDB [(none)]&gt; \q</code>

<code>Bye</code>

3.安裝zabbix

<code>[root@jymlinux ~]</code><code># yum install zabbix zabbix-agent zabbix-get zabbix-sender zabbix-server zabbix-server-mysql zabbix-web zabbix-web-mysql</code>

<code>在httpd中生成zabbix-web的配置檔案</code>

<code>[root@jymlinux ~]</code><code># cd /etc/zabbix/</code>

<code>[root@jymlinux zabbix]</code><code># ls</code>

<code>web  zabbix_agentd.conf  zabbix_agentd.d  zabbix_server.conf</code>

<code>[root@jymlinux zabbix]</code><code># service httpd start</code>

<code>Starting httpd: </code>

<code>[root@jymlinux zabbix]</code><code># ls /etc/httpd/conf.d</code>

<code>php.conf  README  welcome.conf  zabbix.conf               </code><code>#有了zabbix.conf這個檔案</code>

<code> </code> 

<code>将zabbix導入資料庫</code>

<code>[root@jymlinux zabbix]</code><code># cd /usr/share/doc/zabbix-server-mysql-2.4.8/</code>

<code>[root@jymlinux zabbix-server-mysql-2.4.8]</code><code># cd create/</code>

<code>[root@jymlinux create]</code><code># mysql zabbix &lt; schema.sql      #注意導入順序</code>

<code>[root@jymlinux create]</code><code># mysql zabbix &lt; images.sql </code>

<code>[root@jymlinux create]</code><code># mysql zabbix &lt; data.sql </code>

<code>#如果僅為proxy建立資料庫,隻導入schema.sql即可</code>

4.配置zabbix-server

<code>[root@jymlinux ~]</code><code># vim /etc/zabbix/zabbix_server.conf</code>

<code>### Option: DBHost</code>

<code>#       Database host name.</code>

<code>#       If set to localhost, socket is used for MySQL.</code>

<code>#       If set to empty string, socket is used for PostgreSQL.</code>

<code>#</code>

<code># Mandatory: no</code>

<code># Default:</code>

<code># DBHost=localhost</code>

<code>DBHost=192.168.3.8                                   </code><code>#填寫連接配接的資料庫伺服器,預設是本機</code>

<code>### Option: DBUser</code>

<code>#       Database user. Ignored for SQLite.</code>

<code># DBUser=</code>

<code>DBUser=zabbix</code>

<code>### Option: DBPassword</code>

<code>#       Database password. Ignored for SQLite.</code>

<code>#       Comment this line if no password is used.</code>

<code>DBUser=zbxuser                                       </code><code>#填寫資料庫使用者名</code>

<code># DBPassword=</code>

<code>DBPassword=zbxpass                                   </code><code>#填寫資料庫密碼</code>

<code>其餘常用修改選項</code>

<code>ListenIP=localhost </code><code>#資料庫ip位址</code>

<code>AlertScriptsPath=</code><code>/usr/local/zabbix/share/zabbix/alertscripts</code> <code>#zabbix運作腳本存放目錄</code>

5.修改PHP時區

<code>[root@jymlinux zabbix]</code><code># vim /etc/php.ini </code>

<code>date</code><code>.timezone = </code><code>'Asia/Chongqing'</code>              <code>#修改時區為重慶</code>

到此,zabbix配置完畢,之後可以使用gui界面來定義對象等監控操作了

如有錯誤,敬請指正。

本文轉自 元嬰期 51CTO部落格,原文連結:http://blog.51cto.com/jiayimeng/1868975