天天看點

如何用Zabbix進行資産管理?

如何用Zabbix進行資産管理?

張世宏(當代張思德) | Zabbix開源社群簽約專家

  • 2017-2021 Zabbix中國峰會演講嘉賓
  • 2020年Zabbix全球峰會演講嘉賓
  • 自主研發開源元件Zabbix報表系統ZbxTable

Zabbix作為企業級開源監控平台,資産管理也是其内置的功能之一,使用自帶的資産管理可自動采集資訊,在中小企業中可完全代替人肉Excel實作簡單的資産管理。

1.初試資産

Zabbix的資産功能在很早之前就已經存在,可進行簡單的資産管理。本次以Zabbix6.0版本為例子。

在主界面上點選Inventory→overview可根據資産類型搜尋對應裝置,

如何用Zabbix進行資産管理?

點選Host可檢視已綁定資産的裝置,

如何用Zabbix進行資産管理?

那這裡的資産是如何綁定到主機的呢?對于此問題是很多人的疑惑,此配置可通過模闆批量配置也可手動錄入。

2.資産模式

Zabbix的資産配置有三種模式,分别為:Disabled,Manual,Automatic

  • Disabled:

    禁用主機資産管理功能

  • Manual:

    通過手動添加相關資産資訊

  • Automatic:

    通過關聯相關的Item名額,自動填充資産資訊

點選Configuration→Hosts,任意選擇一個Hosts,點選Inventory标簽,即可看到目前主機的資産配置模式,預設為禁用。

如何用Zabbix進行資産管理?

Zabbix 提供70個資産字段,可完全滿足對主機資産的管理。

3.映射名額

通常情況下建議使用自動模式,主機Invertory模式可批量開啟配置,點選Configuration→Hosts,選中多個主機點選Mass update按鈕,Inventory mode選擇Automatic即可,此頁面還可對主機的Inventory 名額進行批量配置。

如何用Zabbix進行資産管理?

開啟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即可。

如何用Zabbix進行資産管理?

綁定之後,如果主機綁定了這個模闆,并開啟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進行資産管理?

這裡隻是修改頁面顯示的标題,并不修改資料庫字段,通過此方法修改後,如後期對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版本,衆多功能全新更新,感興趣的朋友歡迎關注“老張談監控"。