diff --git a/pkg/datasource/zabbix.go b/pkg/datasource/zabbix.go index 5c5e589..23ab529 100644 --- a/pkg/datasource/zabbix.go +++ b/pkg/datasource/zabbix.go @@ -50,8 +50,9 @@ func (ds *ZabbixDatasourceInstance) queryNumericItems(ctx context.Context, query appFilter := query.Application.Filter itemTagFilter := query.ItemTag.Filter itemFilter := query.Item.Filter + showDisabled := query.Options.ShowDisabledItems - items, err := ds.zabbix.GetItems(ctx, groupFilter, hostFilter, appFilter, itemTagFilter, itemFilter, "num") + items, err := ds.zabbix.GetItems(ctx, groupFilter, hostFilter, appFilter, itemTagFilter, itemFilter, "num", showDisabled) if err != nil { return nil, err } diff --git a/pkg/zabbix/methods.go b/pkg/zabbix/methods.go index 0ca60bb..6e2daef 100644 --- a/pkg/zabbix/methods.go +++ b/pkg/zabbix/methods.go @@ -80,7 +80,16 @@ func (ds *Zabbix) getTrend(ctx context.Context, itemids []string, timeRange back return trend, err } -func (ds *Zabbix) GetItems(ctx context.Context, groupFilter string, hostFilter string, appFilter string, itemTagFilter string, itemFilter string, itemType string) ([]*Item, error) { +func (ds *Zabbix) GetItems( + ctx context.Context, + groupFilter string, + hostFilter string, + appFilter string, + itemTagFilter string, + itemFilter string, + itemType string, + showDisabled bool, +) ([]*Item, error) { hosts, err := ds.GetHosts(ctx, groupFilter, hostFilter) if err != nil { return nil, err @@ -105,9 +114,9 @@ func (ds *Zabbix) GetItems(ctx context.Context, groupFilter string, hostFilter s var allItems []*Item if len(appids) > 0 { - allItems, err = ds.GetAllItems(ctx, nil, appids, itemType) + allItems, err = ds.GetAllItems(ctx, nil, appids, itemType, showDisabled) } else if len(hostids) > 0 { - allItems, err = ds.GetAllItems(ctx, hostids, nil, itemType) + allItems, err = ds.GetAllItems(ctx, hostids, nil, itemType, showDisabled) } if isZabbix54orHigher && itemTagFilter != "" { @@ -285,7 +294,7 @@ func filterGroupsByQuery(items []Group, filter string) ([]Group, error) { return filteredItems, nil } -func (ds *Zabbix) GetAllItems(ctx context.Context, hostids []string, appids []string, itemtype string) ([]*Item, error) { +func (ds *Zabbix) GetAllItems(ctx context.Context, hostids []string, appids []string, itemtype string, showDisabled bool) ([]*Item, error) { params := ZabbixAPIParams{ "output": []string{"itemid", "name", "key_", "value_type", "hostid", "status", "state", "units", "valuemapid", "delay"}, "sortfield": "name", @@ -307,6 +316,10 @@ func (ds *Zabbix) GetAllItems(ctx context.Context, hostids []string, appids []st params["selectTags"] = "extend" } + if showDisabled == false { + params["monitored"] = true + } + result, err := ds.Request(ctx, &ZabbixAPIRequest{Method: "item.get", Params: params}) if err != nil { return nil, err