導航:首頁 > 程序命令 > zabbix執行遠程命令

zabbix執行遠程命令

發布時間:2023-03-01 17:27:25

㈠ zabbix-ssh 執行命令採集數據

1. 名稱為這個監控項的名稱

2. 類型選 ssh客戶端

3. 鍵值 單獨的描述short description,這個建議寫,如果不寫,一個主機的鍵值就不能重復。一個主機下多個ssh採集監控項就不能用。ip如果不是對應的主機這里就要寫,埠號沒變可留空,有變要填 寫,enconding默認留空即可

鍵值例子ssh.run[ssh-test,1.1.1.1,,]

4.認證方式密碼

5. ssh登錄的用戶名和密碼

6. 登錄 後執行採集數據的命令比如 free -m 

㈡ 在suselinux上怎麼部署zabbix

Linux下常用的系統監控軟體有Nagios、Cacti、Zabbix、Monit等,這些開源的軟體,可以幫助我們更好的管理機器,在第一時間內發現,並警告系統維護人員。

今天開始研究下Zabbix,使用Zabbix的目的,是為了能夠更好的監控mysql資料庫伺服器,並且能夠生成圖形報表,雖然Nagios也能夠生成圖形報表,但沒有Zabbix這么強大。

首先,我們先來介紹下Zabblx:

一.Zabbix簡介

zabbix是一個基於WEB界面的提供分布式系統監視以及網路監視功能的企業級的開源解決方案。
zabbix由zabbix server與可選組件zabbix agent兩部門組成。
zabbix server可以通過SNMP,zabbix agent,ping,埠監視等方法提供對遠程伺服器/網路狀態的監視。
zabbix agent需要安裝在被監視的目標伺服器上,它主要完成對硬體信息或與操作系統有關的內存,CPU等信息的收集。

zabbix的主要特點:
- 安裝與配置簡單,學習成本低
- 支持多語言(包括中文)
- 免費開源
- 自動發現伺服器與網路設備
- 分布式監視以及WEB集中管理功能
- 可以無agent監視
- 用戶安全認證和柔軟的授權方式
- 通過WEB界面設置或查看監視結果
- email等通知功能
等等

Zabbix主要功能:
- CPU負荷
- 內存使用
- 磁碟使用
- 網路狀況
- 埠監視
- 日誌監視

官方也提供了安裝資料:http://www.zabbix.com/wiki/howto/monitor

二.Zabbix安裝

2.1 zabbix WEB環境搭建

zabbix的安裝需要LAMP或者LNMP環境。
需要其它的軟體包

yum install mysql-dev gcc net-snmp-devel curl-devel perl-DBI php-gd php-mysql php-bcmath php-mbstring php-xm

2.2 zabbix 資料庫設置

zabbix資料庫可以和zabbix伺服器分離,採用用專門的mysql伺服器存儲數據,此時要給zabbix資料庫受相應的許可權。

grant all privileges on zabbix.* to zabbix_user@'ip' identified by '123456';

註:ip為zabbix伺服器的IP地址。
關於資料庫的安裝,可以查看Mysql安裝,我習慣使用二進制包。
啟動資料庫

/usr/local/mysql/bin/mysqld_safe --user=mysql &

登錄資料庫,創建帳號和設置許可權:

mysql> use mysql;
mysql>create database zabbix character set utf8;
mysql>grant all privileges on zabbix.* to zabbix_user@'192.168.10.197' identified by '123456';

2.3安裝zabbix服務

增加zabbix用戶和組

#groupadd zabbix
#useradd -g zabbix -m zabbix

官網下載解壓軟體包。
下載地址:
http://www.zabbix.com/download.php
#wget http://fossies.org/unix/misc/zabbix-2.0.3.tar.gz
# tar -zxvf zabbix-2.0.3.tar.gz
#cd zabbix-2.203
導入資料庫表
#cd zabbix-2.0.3/database/mysql
#mysql -uroot -pmysql zabbix < mysql.sql
#mysql -uroot -pmysql zabbix < images.sql
#mysql -uroot -pmysql zabbix < schema.sql

編譯安裝zabbix

./configure --prefix=/usr/local/zabbix --with-mysql --with-net-snmp --with-libcurl --enable-server --enable-agent --enable-proxy

編譯報錯checking for main in -lmysqlclient ... no
yum 安裝mysql-devel即可
#make
#make install

添加服務埠

vim /etc/services
zabbix-agent 10050/tcp # Zabbix Agent
zabbix-agent 10050/udp # Zabbix Agent
zabbix-trapper 10051/tcp # Zabbix Trapper
zabbix-trapper 10051/udp # Zabbix Trapper

添加配置文件

# mkdir -p /etc/zabbix
# cp -r zabbix-2.203/conf/* /etc/zabbix/
# chown -R zabbix:zabbix /etc/zabbix

修改server配置文件,添加zabbix資料庫密碼
vim /etc/zabbix/zabbix_server.conf

LogFile=/tmp/zabbix_server.log

PidFile=/tmp/zabbix_server.pid

DBName=zabbix

DBUser=zabbix_user

DBPassword=123456 #指定zabbix資料庫密碼

ListenIP=192.168.10.197 #伺服器IP地址

修改Agentd配置文件,更改HOSTNAME為本機的hostname
vim /etc/zabbix/zabbix_agentd.conf

PidFile=/tmp/zabbix_agentd.pid #進程PID

LogFile=/tmp/zabbix_agentd.log #日誌保存位置

EnableRemoteCommands=1 #允許執行遠程命令

Server=192.168.10.197 #agent端的ip

Hostname=client1 #必須與zabbix創建的host name相同
如圖設置hostname

添加web前段php文件
# cd zabbix-2.203/frontends/
# cp -rf php /home/httpd/zabbix #虛擬主機目錄
# chown -R zabbix:zabbix zabbix

web前端安裝配置
修改PHP相關參數
vim php.ini

max_execution_time = 300
max_input_time = 300
memory_limit = 128M
post_max_size = 32M
date.timezone = Asia/Shanghai
mbstring.func_overload=2

PHP還必須支持一下模塊,在php源碼包直接編譯安裝。詳細模塊需要在安裝是會提示。
bcmath.so、gettext.so

在客戶端瀏覽器上面訪問zabbix,開始WEB的前端配置,http://ZabbixIP/zabbix,按提示點擊下一步
Step1:下一步。
Step2:如果全部OK的話才能進行下一步的安裝,如果有錯誤請返回到server端檢查相關的軟體包是否安裝。

Step3:需要輸入mysql資料庫帳號密碼,如果資料庫不在zabbix伺服器上面,在Host裡面添加資料庫伺服器的地址,並且要用grant命令給資料庫授權。

Step4:輸入伺服器端 host name or host IP addres;

最後會自動寫入配置文件:zabbix.conf.php,配置完成後出現登陸界面,默認的用戶名為:admin,密碼為:zabbix。

三.啟動zabbix服務
在zabbix安裝目錄下面可以直接啟動
#/usr/local/zabbix/sbin/zabbix_server start
tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 7140/zabbix_agentd

四.設置開啟自動啟動

vim /etc/rc.d/rc.local 最後添加下面兩行

/usr/local/zabbix/sbin/zabbix_server start
/usr/local/zabbix/sbin/zabbix_agentd start

至此,zabbix server端的安裝完畢,我們可以通過瀏覽器來訪問。如圖:

接下來會介紹關於客戶端監控的使用,以及監控模版的新建,自定義監控服務等。

㈢ windows平台 zabbix遠程執行命令(remote commands)

按住WINDOWS微標+R就會出來運行項開始→運行→命令集錦!winver---------檢查Windows版本wmimgmt.msc----打開windows管理體系結構(WMI)wupdmgr--------windows更新程序wscript--------windows腳本宿主設置write----------寫字板winmsd---------系統信息wiaacmgr-------掃描儀和照相機向導winchat--------XP自帶區域網聊天mem.exe--------顯示內存使用情況Msconfig.exe---系統配置實用程序mplayer2-------簡易widnowsmediaplayermspaint--------畫圖板mstsc----------遠程桌面連接mplayer2-------媒體播放機magnify--------放大鏡實用程序mmc------------打開控制台mobsync--------同步命令dxdiag---------檢查DirectX信息drwtsn32------系統醫生devmgmt.msc---設備管理器dfrg.msc-------磁碟碎片整理程序diskmgmt.msc---磁碟管理實用程序dcomcnfg-------打開系統組件服務ddeshare-------打開DDE共享設置dvdplay--------DVD播放器netstopmessenger-----停止信使服務netstartmessenger----開始信使服務notepad--------打開記事本nslookup-------網路管理的工具向導ntbackup-------系統備份和還原narrator-------屏幕「講述人」ntmsmgr.msc----移動存儲管理器ntmsoprq.msc---移動存儲管理員操作請求netstat-an----(TC)命令檢查介面syncapp--------創建一個公文包sysedit--------系統配置編輯器sigverif-------文件簽名驗證程序sndrec32-------錄音機shrpubw--------創建共享文件夾secpol.msc-----本地安全策略syskey---------系統加密,一旦加密就不能解開,保護windowsxp系統的雙重密碼services.msc---本地服務設置Sndvol32-------音量控製程序sfc.exe--------系統文件檢查器sfc/scannow---windows文件保護tsshutdn-------60秒倒計時關機命令tourstart------xp簡介(安裝完成後出現的漫遊xp程序)taskmgr--------任務管理器eventvwr-------事件查看器eudcedit-------造字程序explorer-------打開資源管理器packager-------對象包裝程序perfmon.msc----計算機性能監測程序progman--------程序管理器regedit.exe----注冊表rsop.msc-------組策略結果集regedt32-------注冊表編輯器rononce-p----15秒關機regsvr32/u*.dll----停止dll文件運行regsvr32/uzipfldr.dll------取消ZIP支持cmd.exe--------CMD命令提示符chkdsk.exe-----Chkdsk磁碟檢查certmgr.msc----證書管理實用程序calc-----------啟動計算器charmap--------啟動字元映射表cliconfg-------SQLSERVER客戶端網路實用程序Clipbrd--------剪貼板查看器conf-----------啟動netmeetingcompmgmt.msc---計算機管理cleanmgr-------垃圾整理ciadv.msc------索引服務程序osk------------打開屏幕鍵盤odbcad32-------ODBC數據源管理器oobe/msoobe/a----檢查XP是否激活lusrmgr.msc----本機用戶和組logoff---------注銷命令iexpress-------木馬捆綁工具,系統自帶Nslookup-------IP地址偵測器fsmgmt.msc-----共享文件夾管理器utilman--------輔助工具管理器gpedit.msc-----組策略假如一些命令禁用了如何更改?大家都知道開啟和停止服務要用命令netstartservicename和netstopservicename吧但是怎麼才能在命令行下設置一個服務的啟動狀態呢?比如說禁用它?系統自帶的東東里可能有,但是我沒研究過,我只說pstools里帶的psservice命令在命令行下輸入psservice/?命令可以看到使用說明:Usage:psservice[\\Computer[-uUsername[-pPassword]]]Cmdisoneofthefollowing:這是psservice命令的參數列表,但是今天我們用到的是這個列表裡沒有出現的一個參數:setconfig比如說要禁用UninterruptiblePowerSupply服務(UPS),我們知道它的服務名稱是UPS,那麼只要輸入以下命令:psservicesetconfigupsdisabled就可以把這個服務禁用掉了其中的disabled可以換成auto和demand,分別是對應自動和手動

㈣ zabbix告警配置

概述

假設我們配置了一些監控項和觸發器,現在當觸發器狀態改變時會獲取一些發生的事件,是時候考慮下一步行動了。

我們不可能一直盯著觸發器或者事件列表,當發生一些標志性的事件時發送警告再好不過。當問題發生,關注這些的用戶都會被通知。

zabbix提供主要的功能就是發送告警就是這個原因。哪些人?在什麼時候?應該收到哪些信息是可以被定義的。

為了發送和接收來自zabbix的告警,你必須:

定義媒介

配置發送信息到定義媒介的動作

動作由 觸發條件 和 操作 組成。基本上當條件符合時,操作被執行。兩個主要的操作是 發送消息 和 執行遠程命令

為了發現和自動注冊創建的事件,一些額外的操作是可用的,包含添加或者刪除主機,鏈接模板等

一、媒介(Media types)

概述

Media 是用於發送zabbix的消息與告警的遞送通道

可以定義一下媒介類型

E-mail

SMS

Jabber

Ez Texting

Custom alertscripts

1、 E-mail

為消息定義E-mail發送通道,需要配置e-mail 作為媒介類型並且傳遞指定的地址給用戶

配置

依次點擊 管理——>報警媒介類型,點擊創建媒介類型(或者點擊預先定義的媒介類型 E-mail)

媒介類型表包含通常的媒介類型屬性

所有重要的欄位都會標記紅星

Name 媒介類型名字

Type 選擇Email作為類型

SMTP server 設置stmp伺服器作為處理信息的出口

SMTP server port 設置smtp服務的埠,這個參數從zabbix3.0開始支持

SMTP helo 這是正確的stmp鏈接值,通常為域名

SMTP email 這個地址會被用於信息發送者,用來發送消息,添加發送者的顯示名 如 Zabbix_info則zabbix_info<[email protected]>

幾個可以生效的配置:

[email protected] 只有郵箱地址,不需要尖括弧

zabbix_info<[email protected]> 顯示名與郵件地址,地址寫在尖括弧中

監控系統<[email protected]> 使用UTF-8格式的顯示名

Connection security 選擇鏈接安全級別,None為不使用ssl選項,starttls 使用 CURLOPT_USE_SSL參數,SSL/TLS則CURLOPT_USE_SSL可選

SSL verify peer 標記checkbox同步SMTP服務的SSL證書,

Authentication 認證方法

Username 用戶名

Password 密碼

Enabled 啟用媒介

注意 : 為了使SMTP中的authentication 選項可用,zabbix在編譯時,需要帶--with-libcurl參數 使用cURL7.20.0或更高版本

第二個選項卡options

第二個選項卡options配置了告警的處理流程。同樣的options配置在其他的媒介類型中也存在。

所有媒介都是並行處理的,當前最大會話每個媒介自己定義,但是zabbix服務的告警處理總數被參數(zabbix_sever.conf)StartAlerters所限制。同一觸發器生成的告警會序列化的處理

options表

concurrent sessions 並發會話數,三個選項,one(一個),unlimited(不限制),custom(自定義)

Attempts 嘗試發送告警的次數,如果設置為1,則zabbix會發送以此通知,並且失敗時不會重發

Attempts interval  重發通知的頻率,發送失敗時重發的間隔

配置用戶的媒介

依次點擊 Administration(管理)--->Users(用戶)

點擊用戶的屬性表,在Media(媒介)表中點擊add

type 選擇Email作為類型

send to 指定email地址,可以點擊add添加多個地址,同理此地址也可設置顯示名如Zabbix_admin<[email protected]>或者[email protected]

when active 設置發送時間如工作日(1-5,09:00-18:00)可以使用宏

Use if severity 指定想要接受的告警等級

status 啟用與否

2、SMS

zabbix發送簡訊,使用串列GSM調試解調器連接到zabbix server的serial port

先決條件:

串列設備(正常情況下在linux的/dev/ttyS0)的速度取決於modem。zabbix不設置串列鏈接的速度。

zabbix user擁有對串列設備的讀寫許可權,運行ls -l /dev/ttyS0查看當前許可權

GSM調試解調器擁有PIN碼,PIN也可以禁用使用命令 AT+CPIN="NNNN"輸入PIN, 必須有雙引號。

已經測試好的modem Siemens MC35 Teltonika ModemCOM/G10

配置SMS作為發送通道,需要配置SMS作為媒介類型並且在用戶界面配置接收手機號

配置

依次點擊 Administration--->Media types,點擊創建media type或使用預先的配置

sms的Media type表屬性

Description media type名

Type 選擇SMS

GSM modem 選擇設備如 /dev/ttyS0

options選項卡見E-mail

配置用戶媒介

依次點擊 Administration(管理)--->Users(用戶)

點擊用戶的屬性表,在Media(媒介)表中點擊add

types 選擇SMS作為媒介

Send to 輸入用戶手機號

When active 設置發送時間如工作日(1-5,09:00-18:00)可以使用宏

Use if severity 指定想要接受的告警等級

status 啟用與否

3、Jabber (略)

4、Ez Texing(略)

5、Custom alertscripts

如果不滿足於存在的媒介來發送警告,可以自定義腳本進行發送

警告腳本在zabbix server上執行,這些腳本位於server配置文件AlertScriptsPath變數(默認/usr/local/share/zabbix/alertscripts)

腳本示例:

#!/bin/bash

to=$1

subject=$2

body=$3

cat <<EOF |mail -s "$subject" "$to"

$bodyEOF

從3.4開始zabbix會檢查exit code(shell執行返回碼,0為成功),若exit code 不等於0,則認為執行失敗,zabbix會重復執行

script不保存環境變數,所以環境變數要精確指定

配置

依次點擊 Administration--->Media types,點擊創建media type

mediatype表屬性

Name 輸入媒介的名字

Type 選擇Script作為類型

Script name 輸入腳本的名字(zabbix server中的腳本文件)

Script parameters 添加命令行參數到腳本

可支持ALERT.SENDTO}、{ALERT.SUBJECT}、{ALERT.MESSAGE}等宏,

{ALERT.SENDTO} 用戶媒介中的send to(收件人)的值

{ALERT.SUBJECT} 動作配置中的Default subject(默認標題)

{ALERT.MESSAGE} 動作配置中的Default message(消息內容)

options表中定義了處理流程,見E-mail的說明

配置用戶媒介User media

依次點擊 Administration(管理)--->Users(用戶)

點擊用戶的屬性表,在Media(媒介)表中點擊add

用戶媒介屬性

Type 選擇自定義腳本的媒介類型

Send to 指定告警接收人

When active 設置發送時間如工作日(1-5,09:00-18:00)可以使用宏

Use if serverity 指定想要接受的告警等級

status 啟用與否

二、動作

如果你希望發生事件時會觸發一些操作,那麼你需要配置action

動作可以定義回應所有支持的事件類型,

事件類型:

Trigger events觸發器事件,當觸發器狀態從ok改變到problem或相反。

Discovery events 當自動發現產生

Auto registration events當新的agent自動注冊時,或者經注冊過的主機元數據改變

Internal events當監控項變為不支持或觸發器狀態變為unknown時

配置一個動作

依次 Configuration ——>Actions

從event source中選擇需要的源(分為:觸發器源,自動發現源,自動注冊源,事件源)

點擊創建動作

選擇操作執行的條件

選擇具體操作

選擇恢復操作

動作表的屬性

Name 唯一動作名

Type of calcaulation 選擇條件觸發的計算方法

And 必須符合所有條件

Or 只要一個條件符合即可

And/Or 結合二者,不同類型的條件用And,同一類型的條件用Or

Custom expression 用戶自定義

Conditions 觸發動作的一系列條件、

New condition 選擇新的動作觸發條件

Enabled 啟用動作

條件設置

基於觸發器的條件

Application 應用集

Host group 主機組

Template 模板

Host 主機

Tag 標簽(串)

tag value 標簽值

Trigger 觸發器

Trigger name 觸發器名字

Trigger severity 觸發器等級

Time period 觸發時間

Problem is suppressed 觸發問題是否意料之中,如主機維護

基於自動發現的條件

Host IP 指定主機ip地址自動發現范圍 格式: 單獨的ip:192.168.1.33 范圍ip: 192.168.1-101.1-254  Ip mask: 192.168.4。0/24

Service type 服務類型

service port 服務埠

Discovery rule 指定自動發現規則

Discovery check

Discovery object

Discovery status

Uptime/Downtime

Received value

Proxy

基於自動注冊的條件

Host metadata 由zabbix_agentd.conf 文件中的HostMetadata變數定義

Host name

Proxy

基於內部事件的條件

Application

Event type

Host group

Template

Host

條件匹配後,就需要執行響應的動作了

可以支持以下動作

send a message

execute a remote command

add host

remove host

enable host

disable host

add to host group

remove from host group

link to template

unlink from template

set host inventory mode

執行遠程命令

確保配置文件中(zabbix_agentd.conf)EnableRemoteCommands 參數設置為1

加入zabbix用戶到sudo,vim /etc/sudoer

zabbix ALL=NOPASS: ALL #所有命令不需密碼

zabbix ALL=NOPASS: /etc/init.d/apache restart  #指定某一命令不需要密碼

觸發操作後,使用宏 編輯信息

如 告警信息模板

標題 伺服器:{HOST.NAME} - 發生: {TRIGGER.NAME}故障

信息 告警主機:{HOST.NAME}

告警地址:{HOST.IP}

監控項目:{ITEM.NAME}

監控取值:{ITEM.LASTVALUE}

告警等級:{TRIGGER.SEVERITY}

當前狀態:{TRIGGER.STATUS}

告警信息:{TRIGGER.NAME}

告警時間:{EVENT.DATE} {EVENT.TIME}

事件ID:{EVENT.ID}

恢復信息

標題 伺服器:{HOST.NAME} - {TRIGGER.NAME} 已恢復

信息 告警主機:{HOST.NAME}

告警地址:{HOST.IP}

監控項目:{ITEM.NAME}

監控取值:{ITEM.LASTVALUE}

告警等級:{TRIGGER.SEVERITY}

當前狀態:{TRIGGER.STATUS}

告警信息:{TRIGGER.NAME}

告警時間:{EVENT.DATE} {EVENT.TIME}

恢復時間:{EVENT.RECOVERY.DATE} {EVENT.RECOVERY.TIME}

持續時間:{EVENT.AGE}

事件ID:{EVENT.ID}

㈤ 如何通過Zabbix獲取監控數據

##################################
zabbix基本架構
##################################
1.Server
zabbix系統核心進程,輪詢並捕獲數據、發送通知等。是zabbix agent和zabbix proxy匯報數據的對象。server自身可遠程檢測網路服務。所有的前後端配置、統計信息、可操作數據存儲於此。包含server、前段界面和後端DB幾部分。

2.Agent
部署在被監控主機上用於監控本地資源和應用並向zabbix server匯報結果。使用本地系統調用故非常高效。有主動和被動兩種檢測模式。被動模式下agent根據server或proxy的具體請求來返回數據。主動模式下先主動由server獲取監控項列表在檢測並返回新的數據。採用主動或被動檢測取決於相應監控項的配置。

3.Proxy
可以自由選擇部署或者不部署,主要用於分擔server的負載。在集中化監控遠程位置、分支、網路的場景中是很好的解決方案。可從被監控設備收集數據緩存在proxy本地後傳遞給其所屬的zabbix server。proxy需要單獨的資料庫。

4.java gateway
java實現的守護進程用於監控JMX類型的應用程序。

5.Sender
命令行工具zabbix_sender,用於向zabbix server發送性能數據和可用性數據。多用於用戶腳本定期向server發送數據。
如:
shell> cd bin
shell> ./zabbix_sender -z zabbix -s "Linux DB3" -k db.connections -o 43

6.Get
命令行工具zabbix_get,用於同agent通信從agent獲取數據。可用於zabbix agents的troubleshooting。
如:
shell> cd bin
shell> ./zabbix_get -s 127.0.0.1 -p 10050 -k "system.cpu.load[all,avg1]"

####################################
#zabbix術語表
####################################
host
需要被監控的設備,如交換機、路由器、WEB伺服器、DB伺服器等

host group
被監控設備的邏輯分組,如DB伺服器一組、WEB伺服器一組等。可包含主機和模板。用於許可權控制

item
需要被監控的項,如CPU空閑率、某一塊磁碟的使用率等

trigger
用於評估收到的監控值是否超出設定的閾值的邏輯表達式

event
如trigger狀態改變等值得注意的事件

action
預先定義的響應event的一系列operations

escalation
執行action中的operations的定製場景;一連串的發送通知、執行遠程命令

media
傳遞notification的方式

notification
通過media發送給用戶的關於某個event的消息

remote command
在被監控機器上觸發並自動執行的預定義命令

template
用於簡化和加速主機上大規模監控任務的部署。包含一系列項目,如items, triggers, graphs, screens, applications, low-level discovery rules

application
邏輯組中的一組items

web scenario
一個或多個HTTP request用以檢查web站點可用性

frontend
zabbix的web界面

zabbix api
允許通過JSON RPC 協議創建、更新和獲取zabbix對象如,hosts, items, graphs and others。或者執行其他任務

zabbix server
zabbix核心,履行監控,與zabbix proxies、zabbix client交互、計算trigger、發送notification、存儲數據等任務

zabbix agent
部署在被監控主機上用於監控本地資源和應用

zabbix proxy
可代zabbix server收集數據分擔處理負載

######################################
#zabbix配置
######################################
可通過WEB界面或者模板進行配置
需配置內容包括users、user groups、hosts、host groups、items、Triggers、Events、notification、templates、visualisation等。
最終配置會被存儲在後端database中。

#####################################
zabbix取數方式
####################################
1.zabbix api
基於WEB的API,通過JSON PRC協議獲取或更改zabbix配置,並可用於獲取歷史監控數據。clients和API間的request和response使用JSON格式。包含一系列可從功能上分為不同組別的方法。

發起HTTP請求的格式類似如下:
POST http://company.com/zabbix/api_jsonrpc.php HTTP/1.1
Content-Type: application/json-rpc
{"jsonrpc":"2.0","method":"apiinfo.version","id":1,"auth":null,"params":{}}
其中http://company.com/zabbix/是zabbix前端的地址;Content-Type必須指明且為application/json-rpc, application/json or application/jsonrequest三者之一。{"jsonrpc":"2.0","method":"apiinfo.version","id":1,"auth":null,"params":{}}是請求的具體內容。

一些實例:
*登錄認證
{
"jsonrpc": "2.0",
"method": "user.login",
"params": {
"user": "Admin",
"password": "zabbix"
},
"id": 1,
"auth": null
}
其中:
jsonrpc:指明JSON-RPC協議版本,這里是2.0版本
method:指明調用的API方法,這里是用戶登錄
params:需要傳遞給API method的參數,這里是用戶名和密碼
id:本次請求的標識符
auth:用戶認證令牌,目前尚無所以為null
若參數無誤response將會包含用戶認證令牌,如:
{
"jsonrpc": "2.0",
"result": "",
"id": 1
}

*獲取hosts信息
{
"jsonrpc": "2.0",
"method": "host.get",
"params": {
"output": [
"hostid",
"host"
],
"selectInterfaces": [
"interfaceid",
"ip"
]
},
"id": 2,
"auth": ""
}
本例使用可用的用戶認證令牌通過host.get方法獲取所配置的主機的ID 、name等信息,返回如下
{
"jsonrpc": "2.0",
"result": [
{
"hostid": "10084",
"host": "Zabbix server",
"interfaces": [
{
"interfaceid": "1",
"ip": "127.0.0.1"
}
]
}
],
"id": 2
}
為了考慮性能影響、盡量僅列出所需項而非返回所有數據

*創建新監控項
例如在上一步獲取的host上建立新的監控項、監控/home/joe/目錄的剩餘空間
{
"jsonrpc": "2.0",
"method": "item.create",
"params": {
"name": "Free disk space on $1",
"key_": "vfs.fs.size[/home/joe/,free]",
"hostid": "10084",
"type": 0,
"value_type": 3,
"interfaceid": "1",
"delay": 30
},
"auth": "",
"id": 3
}
其中params參數中的幾個關鍵參數含義如下:
name:監控項的名稱,這個可以自己靈活定義,其中的$1代表key_中的第一個參數,此處為/home/joe/
key_:預定義的監控項,zabbix提供了一系列此類監控內容,此處需從其中進行選擇。
hostid:即上步獲得的hostid
value_type:監控數據值的類型,不同的數字代表不同的類型,此處的3代表整型
delay:zabbix取數時間間隔,此處為30秒取一次

返回結果如下:
{
"jsonrpc": "2.0",
"result": {
"itemids": [
"24759"
]
},
"id": 3
}
itemid為生成的監控項的id

*獲取歷史數據:
從歷史記錄表獲取itemids為23296的按clock降序排列的十條記錄
history參數可能的取值
0 - float;
1 - string;
2 - log;
3 - integer;
4 - text.
{
"jsonrpc": "2.0",
"method": "history.get",
"params": {
"output": "extend",
"history": 0,
"itemids": "23296",
"sortfield": "clock",
"sortorder": "DESC",
"limit": 10
},
"auth": "",
"id": 1
}
返回結果:
{
"jsonrpc": "2.0",
"result": [
{
"itemid": "23296",
"clock": "1351090996",
"value": "0.0850",
"ns": "563157632"
},
{
"itemid": "23296",
"clock": "1351090936",
"value": "0.1600",
"ns": "549216402"
},
...]
}

*錯誤處理
下例忘記了groups這個參數
{
"jsonrpc": "2.0",
"method": "host.create",
"params": {
"host": "Linux server",
"interfaces": [
{
"type": 1,
"main": 1,
"useip": 1,
"ip": "192.168.3.1",
"dns": "",
"port": "10050"
}
]
},
"id": 3,
"auth": ""
}
返回結果如下,包含的不是result屬性而是error屬性
{
"jsonrpc": "2.0",
"error": {
"code": -32602,
"message": "Invalid params.",
"data": "No groups for host \"Linux server\"."
},
"id": 3
}

對於獲取監控數據來說,比較關心的應該是history.get這個方法。這種方式實際上最終還是由後台資料庫獲取的。方法提供了豐富的參數,使用非常靈活。但對於一次性大規模的取出大量主機大量監控項的大批數據不太適合。

2.zabbix_get:
命令行工具,可從遠程的zabbix agent獲取數據
zabbix_get [-hV] [-s <host name or IP>] [-p <port number>] [-I <IP address>] [-k <item key>]
-s, --host <host name or IP>
-p, --port <port number>
-I, --source-address <IP address>
-k, --key <item key>
-h, --help
-V, --version.
如:zabbix_get -s 127.0.0.1 -p 10050 -k system.cpu.load[all,avg1]
zabbix api獲取到的是資料庫中的歷史數據,zabbix_get可獲得實時的數據。可根據工具的特點選擇適合的場景。

3.zabbix databases:
直接由zabbix後台資料庫獲取歷史數據。適用於一次性大規模的取出大量主機大量監控項的大批數據。

*相關表
history系列表分別存儲不同數據類型的歷史數據
表中數據以update interval為時間間隔
zabbix.history -numeric(float)
zabbix.history_log -log
zabbix.history_str -character(up to 255 bytes)
zabbix.history_text -text
zabbix.history_unit -numeric(unsigned intergers)

trends_系列表存儲不同類型的歷史數據統計結果
表中數據以小時為時間間隔,存儲每小時的最小、最大和平均值
zabbix.trends -numeric(float)
zabbix.trends_unit -numeric(unsigned intergers)
character\log\text\類型無歷史統計結果

history系列的表只包含itemid、clock、value等數據
trends系列的表只包含itemid、clock、value_min、value_avg、value_max等數據
history、trends需與items、hosts、hosts_groups、groups表關聯來獲取item名稱、host名稱、組別等。

*表及重要的表欄位
hosts
hosts.hostid 主機id
hosts.host 主機名
hosts.status 主機狀態 0為正常監控,1為關閉,3表示是個Template,5尚不不清楚。

hosts_group
hosts_group.hostid 主機id
hosts_group.groupid 所屬組id

groups
groups.groupid 組id
groups.name 組名

items
items.itemid 監控項id
items.hostid 監控項所在主機id
items.name 監控項別名
items.key_ 監控項標准名稱
items.value_type值類型
items.delay 取數時間間隔
items.history 歷史表數據保留天數
items.trends 歷史統計表數據保留天數
item.units 數據單位

items表中value_type與history的對應關系
(主要為了存取效率將不同值類型存在不同的history表中)
value_type history表
0 history
1 history_str
2 history_log
3 history_uint
4 history_text

history
hisrtory.itemid 監控項id

trends
trends.itemid 監控項id

zabbix後台系統的涉及到大量的表,取歷史數據的話關心這幾個即可

*監控項規則解讀
zabbix.items表中存在類似於如下的配置項(如網路網卡監控、磁碟監控等):
name key_
Free disk space on $1 vfs.fs.size[/,free]
Free disk space on / (percentage) vfs.fs.size[/,pfree]
Free disk space on $1 vfs.fs.size[/boot,free]
Free disk space on /boot (percentage) vfs.fs.size[/boot,pfree]
Free disk space on $1 vfs.fs.size[/data,free]
Free disk space on /data (percentage) vfs.fs.size[/data,pfree]
Free disk space on $1 vfs.fs.size[{#FSNAME},free]
Free disk space on {#FSNAME} (percentage) vfs.fs.size[{#FSNAME},pfree]

其中類似於如下的配置是zabbix提供的low level discovery配置方式,用於自動創建監控項適用於有多塊磁碟、多個目錄、多塊網卡等類型情形下監控項的自動發現
可以把{#FSNAME}看做是模板可以匹配配置好的所有的相關項比如:
Free disk space on {#FSNAME} (percentage) vfs.fs.size[{#FSNAME},pfree]
Free disk space on /data (percentage) vfs.fs.size[/data,pfree]
Free disk space on /boot (percentage) vfs.fs.size[/boot,pfree]
Free disk space on / (percentage) vfs.fs.size[/,pfree]

類似的還有:
Incoming network traffic on $1 net.if.in[{#IFNAME}]
Outgoing network traffic on $1 net.if.out[{#IFNAME}]
IO.util.{#DISK_NAME} IO.util[{#DISK_NAME}]
等等

而上邊例子中的$1、$2等對應key_的參數位置,例如
Free disk space on $1 vfs.fs.size[/,free]
中$1就代表/ ,Free disk space on $1相當於Free disk space on /依次類推

閱讀全文

與zabbix執行遠程命令相關的資料

熱點內容
吃雞手機國際服伺服器超時怎麼辦 瀏覽:68
努比亞Z5無命令 瀏覽:640
展示網站雲伺服器 瀏覽:870
代碼混淆器php 瀏覽:365
貝恩pdf 瀏覽:207
丙烯pdf 瀏覽:366
雲伺服器華碩 瀏覽:711
sublime3運行python 瀏覽:188
怎麼把安卓視頻傳到蘋果上面 瀏覽:81
手機拍鬼片用什麼app 瀏覽:640
爬山虎app是干什麼用的 瀏覽:505
有哪些寫給程序員的歌 瀏覽:49
成都市命令 瀏覽:993
建立系列文件夾 瀏覽:983
蘋果開機白屏帶文件夾問號 瀏覽:733
體驗服為什麼伺服器會關閉 瀏覽:41
酒店命令 瀏覽:750
中走絲線切割編程視頻 瀏覽:80
衣服壓縮袋手泵原理 瀏覽:714
通達信編程書籍 瀏覽:981