zabbix搭建
環境:RHEL7
selinux and iptables disabled
192.168.122.21 zabbix1 zabbix-server
192.168.122.22 zabbix2 zabbix-client
一、安裝 zabbix
下載軟件包,及依賴包
fping-3.10-1.el7.x86_64.rpm
iksemel-1.4-2.el7.centos.x86_64.rpm
php-bcmath-5.4.16-42.el7.x86_64.rpm
php-mbstring-5.4.16-42.el7.x86_64.rpm
zabbix-agent-3.4.6-1.el7.x86_64.rpm
zabbix-server-mysql-3.4.6-1.el7.x86_64.rpm
zabbix-web-3.4.6-1.el7.noarch.rpm
zabbix-web-mysql-3.4.6-1.el7.noarch.rpm
a)安裝數據庫
[root@zabbix1 ~]# yum install -y mariadb mariadb-server
[root@zabbix1 ~]# mysql_secure_installation #安全初始化(設置密碼)
登錄數據庫並授權
[root@zabbix1 ~]# mysql -p
create database zabbix character set utf8 collate utf8_bin; #創建數據庫
grant all privileges on zabbix.* to zabbix@localhost identified by 'redhat'; #授權
b)將數據導入zabbix數據庫
zcat create.sql.gz | mysql -uzabbix -predhat zabbix #不要着急,有可能會慢點
如下,進入數據庫去查看
c)配置 php
修改php date.timezone
[root@zabbix ~]# vim /etc/php.ini
[root@zabbix1 ~]# vim /etc/httpd/conf.d/zabbix.conf
d)建立zabbix與數據庫的聯繫
[root@zabbix1 zabbix]# pwd
/etc/zabbix
[root@zabbix1 zabbix]# vim zabbix_server.conf
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=password
開服務開機自啓動
[root@zabbix1 ~]# systemctl start zabbix-server zabbix-agent httpd
[root@zabbix1 ~]# systemctl enable zabbix-server zabbix-agent httpd
二、登陸 zabbix web
http://192.168.122.21/zabbix 按照提示完成安裝並登陸: (做好解析)
輸入用戶名 Admin 以及密碼 zabbix 以作爲Zabbix超級用戶登陸。
Username: Admin
Password: zabbix
三、添加 agent 主機
在被監控端安裝軟件包:
[root@zabbix2 ~]# yum install -y zabbix-agent-3.4.6-1.el7.x86_64.rpm
[root@zabbix2 ~]# cd /etc/zabbix/
[root@zabbix2 zabbix]# ls
zabbix_agentd.conf zabbix_agentd.d
[root@zabbix2 zabbix]# vim zabbix_agentd.conf
[root@zabbix2 zabbix]# systemctl start zabbix-agent #開啓服務
[root@zabbix2 zabbix]# systemctl enable zabbix-agent
查看端口:
點擊“小人頭像”可修改語言
四、zabbix網頁配置
zabbix完整的監控配置流程大體上由如下步驟組成:並非必須
Host group –> Host –> Application –> Items –> Trigger –>
Events –> Action –> User group –> User –> Media –> graph
–> screen
application:可以將多個功能相近的item定義在一起,以便統一管理。
每一個被監控主機主機上都有N各監控項,每個監控項都要通過或主動或被動方式向服務器端發送數據,服務器上收集到的數據,都要保存在database
中,database中的數據可以通過graph展示,graph展示的數據可以通過screen用一個機和的方式予以顯示。
我們定義的這些監控項所產生的數據有一個合理區間,所以我們需要去定義一個Trigger,由Trigger來觸發事件,從而由action當中的
operation採取某個操作。
(有三種方式,手動加入,自動發現,自動註冊)
新建主機
1、item(監控項)
item是zabbix服務用於監控一個特定對象上的一個特定指標,並負責針對其收集相關的監控數據。比如CPU每分鐘的平均負載可以是一個 item,每五分鐘的平均負載是一個item,某特定網絡接口接收報文的速率又是一個item等。每一個item都擁有相應的類型。例如“zabbix agent“,“SNMP“,“External check“,“IPMI agent“,“SSH agent“,“JMX agent“等。zabbix服務器會使用相應類型的協議或機制同被監控端通信。
item key
每一個item都有其專用的“Key“,zabbix服務器在與被監控端通信時就使用相應的協議或機制取詢問被監控端這個Key的值,被監控端則調 用與此key對應的監控腳本獲取數據並返回給服務器端。zabbix有許多預定義的key,詳細信息請訪問官網。對於每一個item,zabbix服務器 還定義了怎麼存儲這個item的數據,以及數據採集的頻率和歷史數據的保存時長等。多個item還可以歸類爲一個由“application“定義的邏輯 組。
item
默認的item有多種類型:
網卡流量相關:
net.if.in[if,<mode>] []:可選 <>:必須
if:接口,如eth0
mode:bytes,packets,errors,dropped
net.if.out[if,<mode>]
net.if.total[if,<mode>]
端口相關: 監控端口是否處於打開狀態
net.tcp.listen[port] tcp協議監聽了哪些端口
net.tcp.port[<ip>,<port>]
net.service[service,<ip>,<port>] 基於tcp協議的某個服務
net.udp.listen[port]
進程相關:
kernel.maxfiles 內核所允許打開文件的最大數
kernel.maxproc 內核所允許當前用戶運行的最大進程數
cpu相關:
system.cpu.intr 中斷次數
system.cpu.load[<cpu>,<mode>] 負載
system.cpu.num[<type>] cpu的核數
system.cpu.switches 上下文切換的次數
system.cpu.util[<cpu>,<type>,<mode>] 利用率
磁盤I/O相關:
vfs.dev.read[<device>,<type>,<mode>]
虛擬文件接口哪個設備什麼類型什麼模式進行讀取
vfs.dev.write[<device>,<type>,<mode>]
哪個設備什麼類型什麼模式寫入
vfs.fs.inode[fs,<mode>]
哪個文件系統的哪個模式的inode可用量12345678910111213141516171819202122232425262728
一旦默認item無法實現想要的功能,就可以自定義item實現
自定義item: 關鍵:選取唯一的key; 命令:收集數據的命令或腳本;
創建item
點擊上步新建主機後面的items-->create iteam
歷史數據:採樣生成的數據
趨勢數據:每小時的最大值,最小值,平均值,等
2、graph
配置 –> 主機 –> 圖像 –> 創建圖像 Configuration-->items-->graphs-->create graph
將上面創建出來的兩個item同時放進一個圖中:
圖像類型: 線狀圖,堆疊圖,餅圖,漸變圖
3、觸發器(Trigger)
“監控項“僅負責收集數據,而通常收集數據的目的還包括在某指標對應的數據超出合理範圍時給相關人員發送告警信息,“觸發器“正是用於爲監控項所收
集的數據定義閾值。zabbix server每次接收到items新數據時,就會對item當前採樣值進行判斷,即與trigger的表達式進行比較;
每一個觸發器僅能關聯至一個監控項,但可以爲一個監控項同時使用多個觸發器。事實上,爲一個監控項定義多個具有不同閾值的觸發器,可以實現不同級別的報警功能。
一個觸發器由一個表達式構成,它定義了監控項所採取的數據的一個閾值。
一旦某次採集的數據超出了此觸發器定義的閾值,觸發器狀態會轉換爲“Problem“;而當採取的數據再次迴歸至合理範圍內時,其狀態將重新返回到“OK“
觸發器表達式高度靈活,可以以之創建除非常複雜的測試條件。基本的觸發器表達式格式如下所示:
{<server>:<key>.<function>(<parameter)}<operator><constant>1
server:主機名稱
key:主機上關係的相關監控項的key;
function:評估在及道德數據是否在合理範圍內時所使用的函數,其評估過程可以根據採取的數據,當時的事件以及其他因素進行;
目前,觸發器所支持的函數有avg,count,change,date,dayofweek,delta,diff,iregexp,last,max,min,nodata,now,sum等
parmeter:函數參數:大多數數值函數可以接受秒數爲其參數,而如果在數值參數之前使用“#“作爲前綴,則表示爲最近幾次的取值,如sun(300)表示300秒內所有取值之和,而sum(#10)則表示最近10次取值之和;
一個例子: {high1:system.cpu.load[all,avg1].last(0)}>3
high1主機上所有CPU的過去一分鐘內的平均負載的最後一次取值大於3時將觸發狀態變換
對於last函數來說,last(0)相當於last(#1)
創建trigger(觸發器)
配置 –>主機 –>觸發器 –> 創建觸發器
創建表達式的時候可以自己手動寫入,也可以通過選擇系統已存在的配置進行設置。點擊添加即可配置。
Configuration-->items-->Triggers-->create Trigger