
張世宏(當代張思德) | Zabbix開源社群簽約專家
- 2017-2021 Zabbix中國峰會演講嘉賓
- 2020年Zabbix全球峰會演講嘉賓
- 自主研發開源元件Zabbix報表系統ZbxTable
Zabbix作為企業級開源監控平台,資産管理也是其内置的功能之一,使用自帶的資産管理可自動采集資訊,在中小企業中可完全代替人肉Excel實作簡單的資産管理。
1.初試資産
Zabbix的資産功能在很早之前就已經存在,可進行簡單的資産管理。本次以Zabbix6.0版本為例子。
在主界面上點選Inventory→overview可根據資産類型搜尋對應裝置,
點選Host可檢視已綁定資産的裝置,
那這裡的資産是如何綁定到主機的呢?對于此問題是很多人的疑惑,此配置可通過模闆批量配置也可手動錄入。
2.資産模式
Zabbix的資産配置有三種模式,分别為:Disabled,Manual,Automatic
-
Disabled:
禁用主機資産管理功能
-
Manual:
通過手動添加相關資産資訊
-
Automatic:
通過關聯相關的Item名額,自動填充資産資訊
點選Configuration→Hosts,任意選擇一個Hosts,點選Inventory标簽,即可看到目前主機的資産配置模式,預設為禁用。
Zabbix 提供70個資産字段,可完全滿足對主機資産的管理。
3.映射名額
通常情況下建議使用自動模式,主機Invertory模式可批量開啟配置,點選Configuration→Hosts,選中多個主機點選Mass update按鈕,Inventory mode選擇Automatic即可,此頁面還可對主機的Inventory 名額進行批量配置。
開啟Automatic模式後,可綁定指定的Item到對應的Inventory字段。一般建議按照模闆來綁定,做好名額的對應關系。
4.典型應用
在實際應用中,往往需要對交換機、Linux作業系統、Windows作業系統等不同類型的裝置進行采集固定名額,比如裝置CPU使用率、記憶體使用率、序列号等,由于不同類型的裝置可能綁定不同類型的模闆,而對應的名額又是不同的Item或者Key,是以無法實作統一的方法擷取。此場景下可通過綁定到指定的Inventory字段,通過提取主機對應的Inventory字段即可擷取。在配置Inventory字段映射之前,建議做好配置對應表。例如:
Inventory字段 | Item字段 | 名額含義 |
software_app_a | CPU utilization | CPU使用率 |
software_app_b | Memory utilization | 記憶體使用率 |
software_app_c | Total memory in Bytes | 總記憶體 |
…… | …… | …… |
可将不同模闆的名額綁定到同一個Inventory字段。以綁定CPU utilization為例子,點選Configuration→Templates選擇Linux by Zabbix agent模闆,點選CPU utilization名額,在Populates host inventory field字段下拉選擇對應的Inventory字段,點選Update即可。
綁定之後,如果主機綁定了這個模闆,并開啟Inventory模式為Automatic,即可填充對應主機的CPU使用率名額到主機的Inventory字段,并且此數值會根據采集名額的變化而變化。此方法可大大簡化名額的統一,如做CPU使用率Top名額時可直接對比即可,不用從具體的Item名額擷取,也不用關心具體的Item及Key。
5.原生改造
Zabbix自帶的Inventory字段名稱可能不适用于你的環境,可通過簡單的修改達到顯示的自定義。如需要将Inventory的Type字段修改為HostType,可編輯Zabbix前端的include/hosts.inc.php檔案
vi include/hosts.inc.php
搜尋getHostInventories字段
function getHostInventories($orderedByTitle = false) {
/*
* WARNING! Before modifying this array, make sure changes are synced with C
* C analog is located in function DBget_inventory_field() in src/libs/zbxdbhigh/db.c
*/
$inventoryFields = [
1 => [
'nr' => 1,
'db_field' => 'type',
'title' => _('Type')
],
2 => [
'nr' => 2,
'db_field' => 'type_full',
'title' => _('Type (Full details)')
],
3 => [
'nr' => 3,
'db_field' => 'name',
'title' => _('Name')
],
4 => [
'nr' => 4,
'db_field' => 'alias',
'title' => _('Alias')
],
将
'title' => _('Type')
修改為
'title' => _('HostType')
儲存檔案頁面發現已經修改成功。
這裡隻是修改頁面顯示的标題,并不修改資料庫字段,通過此方法修改後,如後期對Zabbix進行更新後要重新修改。
6.API應用
在Zabbix API中Inventory對應的操作并沒有提供獨立的API,而是通過zabibx的Host api提供,字段介紹
https://www.zabbix.com/documentation/current/en/manual/api/reference/host/object
同時也提供了Inventory配置的代碼Demo
https://www.zabbix.com/documentation/current/en/manual/api/reference/host/update
Request:
{
"jsonrpc": "2.0",
"method": "host.update",
"params": {
"hostid": "10387",
"inventory_mode": 0,
"inventory": {
"location": "Latvia, Riga"
}
},
"auth": "038e1d7b1735c6a5436ee9eae095879e",
"id": 1
}
Response:
{
"jsonrpc": "2.0",
"result": {
"hostids": [
"10387"
]
},
"id": 1
}
7.建議
1.導出功能:Zabbix資産未提供導出功能,實際使用起來隻能進行維護,不能導出,建議官方增加資産導出功能;
2.資産字段自定義:Zabbix的資産字段目前隻能展示特定的字段,不能實作字段的自定義,建議增加自定義顯示字段,實作個性化顯示.
思徳自研的ZbxTable 2.0将于近期釋出,可适配最新的Zabbix 6.0版本,衆多功能全新更新,感興趣的朋友歡迎關注“老張談監控"。