❶ 如何通過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 java api filter怎麼用
#!/usr/bin/env python
#jiayun
#version 1.3
from pyzabbix import ZabbixAPI
import json
import os,sys
import re,time
import logging
rule = json.load(file('D:\pycharm\project\REGION Manage Script\qn_rolerule.json')) #template 文件
def login():
zapi= ZabbixAPI("http://10.4.0.247") #登錄zabbix
zapi.login("admin","zabbix")
return zapi
def get_hostgroups(group_name):
return zapi.hostgroup.get(search={"name":group_name },output="extend") #搜索輸入的組別,提取組id
def get_hosts(groupid):
groupids = [groupid]
return zapi.host.get(groupids=groupids,output="extend") #返回該組id 下的所有host 信息
def get_drules():
return zapi.drule.get(output="extend")
def get_templates_by_names(template_names):
return zapi.template.get(filter={"host": template_names})
def create_group(group_name): #創建組
if not zapi.hostgroup.exists(name=group_name):
zapi.hostgroup.create(name=group_name)
def create_host(group_name,host_name,ip): #創建主機並附加指定模板
groups=get_hostgroups(group_name)
host_name=host_name.lower()
ip_tail=ip.split(".")[-1]
domain = "server-"+ ip_tail +".0." + host_name + ".ustack.in"
for hostgroup in groups:
groupid=hostgroup['groupid']
ip_tail=ip.split(".")[-1]
role = None
for ru in rule:
range = rule[ru]['range']
if "-" in range:
head = range.split("-")[0]
tail = range.split("-")[1]
if int(ip_tail) <= int(tail) and int(ip_tail) >=int(head):
role = ru
else:
if ip_tail == range:
role = ru
template_names = rule[role]['templates']
template_ids = get_templates_by_names(template_names)
print domain,ip,groupid,template_ids
zapi.host.create(host=domain,interfaces=[{
"type":1,
"main":1,
"useip":1,
"ip":ip,
"dns":"",
"port":'10050'
}],groups=[{"groupid":groupid}],templates=template_ids)
print "Add Successfull!!!!!"
#logging.info("%s,%s,%s,%s Add Successfull!!!!!"%(domain,ip,groupid,template_ids))
def create_macro(group_name,traffic,value): #創建macro,不同主機有不同的macro
groups=get_hostgroups(group_name)
for group in groups:
hosts=get_hosts(group['groupid'])
for host in hosts:
hostname=host["name"]
hostid=host["hostid"]
if not re.search("^server",hostname):continue
m=re.search("[0-9]+",hostname).group()
if m == "1":continue
if m in ['64','65','66','67']:
zapi.host.update(hostid=hostid,macros=[{"macro":"{$INP}","value":"35000"},
{"macro":"{$OUP}","value":"35000"},
{"macro":"{$INT}","value":"%s"%traffic},
{"macro":"{$OUT}","value":"%s"%traffic},
{"macro":"{$PDISK}","value":"%s"%value}])
else:
zapi.host.update(hostid=hostid,macros=[{"macro":"{$PDISK}","value":"%s"%value}])
print hostname ,hostid,m,traffic,value
if __name__ == "__main__":
zapi=login()
region="qn"
host_list=["31","32","35","36","39","40","44","45","46","47","48","49","50","53","54","61","62","63","64","65",
"68","69","70","71","72","73","74","75","76","77","79","80","81","82","83","84","85","86","87","88","89","90","91"] #添加主機,不建議用discovery
ip_list=host_list
if type(ip_list) == str:
print "%s Must be a list,please checking !!!"%sys.argv[2]
sys.exit()
group_name="Region [%s 0]"% region.upper()
if not zapi.hostgroup.exists(name=group_name):
create_group(group_name)
ip={"qn":"10.4.0."}
if region in ip:
for num in ip_list:
value="20"
traffic="300M"
ipaddress=ip[region]+str(num)
print group_name,region,ipaddress
create_host(group_name,region,ipaddress) #傳參至函數
time.sleep(5)
create_macro(group_name,traffic,value)
else:
print "you input region error,please checking"
❸ Java怎麼獲取zabbix監控到的信息
第一種方法:通過API進行數據交互,比較繁瑣。
Zabbix使用Json格式的API,官方文檔在這里:網頁鏈接
使用Java通過HTTP的GET和POST獲取信息。
第二種方法:通過資料庫直接交互。速度更快。
但也需要看上面的文檔。API就相當於資料庫了。
這里需要的就是通過Java連接Zabbix資料庫,通過視圖等方式直接讀取信息。
❹ 如何通過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-java-gateway-2.2.2-1.el6.x86
一,zabbix server安裝
1.rpm -ivh
2. yum localinstall zabbix-server-2.2.6-2.el6.zbx.x86_64.rpm
yum localinstall zabbix-web-nginx-2.2.6-2.el6.zbx.noarch.rpm
yum localinstall zabbix-java-gateway-2.2.6-2.el6.zbx.x86_64.rpm
yum localinstall php-5.4.36-1.el6.x86_64.rpm
yum -y install mysql-server
#vi /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
character-set-server=utf8
innodb_file_per_table=1
#yum localinstall zabbix-mysql-2.2.6-2.el6.zbx.x86_64.rpm
root@localhost 0721]# mysqladmin -uroot password admin
[root@localhost 0721]# mysql -uroot -padmin
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.1.73 Source distribution
Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> create database zabbix character set utf8;
Query OK, 1 row affected (0.00 sec)
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
source /usr/share/zabbix-database/mysql/schema.sql;
source /usr/share/zabbix-database/mysql/images.sql;
source /usr/share/zabbix-database/mysql/data.sql;
#egrep -v "(^#|^$)" /etc/zabbix/zabbix_server.conf
LogFile=/var/log/zabbix/zabbix_server.log
LogFileSize=0
PidFile=/var/run/zabbix/zabbix_server.pid
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
DBSocket=/var/lib/mysql/mysql.sock
StartPollers=5
SNMPTrapperFile=/var/log/snmptt/snmptt.log
AlertScriptsPath=/etc/zabbix/alertscripts
ExternalScripts=/etc/zabbix/externalscripts
#/etc/init.d/zabbix-server start
#/etc/init.d/nginx restart
#vi zabbix-server.conf
server {
listen 80;
server_name 10.0.251.84;
#xg-infra-0-zabbix.elenet.me xg-infra-0.elenet.me;
charset utf-8;
access_log /var/log/nginx/zabbix.access.log main;
error_log /var/log/nginx/zabbix.error.log;
root /usr/share/zabbix;
location ~ (/.svn/|etc/passwd|etc/shadow|etc/group|etc/gshadow|etc/sudoers|nginx/nginx.conf|etc/my.cnf|sshd_config|
ifconfig|bin/rm|bin/mkdir|bin/rmdir|bin/touch|usr/bin/vim|rsync.conf|redis.conf) {
deny all;
}
location ~ .*\.(php|php5)?$
{
#fastcgi_pass 127.0.0.1:9000;
fastcgi_pass unix:/var/run/php/php-fpm.sock;
fastcgi_read_timeout 150;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location / {
index index.php;
#if (!-f $request_filename){
# rewrite ^(.*)$ http://$http_host/index.html last;
# break;
# }
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
# location ~ .*\.(php|php5)?$
# {
# #fastcgi_pass 127.0.0.1:9000;
# fastcgi_pass unix:/var/run/php-fpm.sock;
# fastcgi_read_timeout 150;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
# include fastcgi_params;
# }
#location ~ /zabbix {
# index index.php;
# root /usr/share/zabbix;
#}
location /nginxstatus {
stub_status on;
access_log off;
allow 127.0.0.1;
deny all;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 10d;
}
location ~ .*\.(js|css|txt|xml|html|htm)?$
{
expires 12h;
}
}
#chown -R nginx.nginx /var/run/php
#http://ip
❻ 運維監控 zabbix可以做哪些監控
1、監控windows進程內存。在C盤中創建腳本a.bat,內容tasklist。
❼ 怎樣測試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中。
參考:
https://www.zabbix.com/documentation/2.4/manual/config
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這個方法。這種方式實際上最終還是由後台資料庫獲取的。方法提供了豐富的參數,使用非常靈活。但對於一次性大規模的取出大量主機大量監控項的大批數據不太適合。
❽ zabbix可以監控什麼
zabbix server可以通過SNMP,zabbix agent,ping,埠監視等方法提供對遠程伺服器/網路狀態的監視,數據收集等功能,它可以運行在Linux,Solaris,HP-UX,AIX,Free BSD,Open BSD,OS X等平台上。
zabbix agent需要安裝在被監視的目標伺服器上,它主要完成對硬體信息或與操作系統有關的內存,CPU等信息的收集。
(8)zabbixjava擴展閱讀:
1、Agent監控方式
在Agent監控方式下,zabbix-agent會主動收集本機的監控信息並通過TCP協議與zabbix-server傳遞信息。
Agent監控方式分為主動和被動模式。在被動模式下,zabbix-agent監聽10050埠,等待zabbix-server的監控信息收集信息請求;在主動模式下,zabbix-agent收集監控信息並通過10050埠主動將數據傳給zabbix-server所在伺服器的10051埠。
2、Trapper監控方式
Trapper監控方式使用zabbix-sender程序主動向zabbix-server發送數據。key的名稱和發送的數據內容都可以靈活定義。發送的信息採用JSON格式,遵循zabbix-sender協議。可以自定義腳本利用zabbix-sender協議來zabbix-server發送信息。
3、SNMP監控方式
SNMP包括進程管理和被管理設備兩部分。作為一種國際通用的網路管理協議被廣泛的應用於各種交換機,路由器等網路設備的管理上,而現在也越來越多被用於對伺服器的監控上。
4、JMX監控方式
JMX是Java平台為應用程序,設備,系統等植入管理功能的框架。在zabbix中,JMX數據的獲取由zabbix-java-gateway代理程序來負責數據的採集。
5、IPMI監控方式
IPM原本是Intel架構中企業系統的周邊設備所採用的一種工業標准,以後成為業界通用的標准。用戶可以利用IPMI監控伺服器的物理特性,如溫度,電壓,電扇工作狀態,電源供應等指標。
❾ zabbix java gateway是安裝在server端還是客戶端
1.Server zabbix系統核心進程,輪詢並捕獲數據、發送通知等。是zabbix agent和zabbix proxy匯報數據的對象。server自身可遠程檢測網路服務。所有的前後端配置、統計信息、可操作數據存儲於此。包含server、前段界面和後端DB幾部分。