一、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)]> create database zabbix character </code><code>set</code> <code>utf8;</code>
<code>MariaDB [(none)]> 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)]> 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)]> 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)]> \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 < schema.sql #注意導入順序</code>
<code>[root@jymlinux create]</code><code># mysql zabbix < images.sql </code>
<code>[root@jymlinux create]</code><code># mysql zabbix < 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