This change introduces the Weather Sensor device type which retrieves data from public APIs, and enhances the core Host/Device interfaces to provide consistent access to inventory and items across all specialized device types. It also improves search logic and fixes several bugs identified during implementation. - Weather Sensor Extension: Added schema and recipe for a device retrieving weather data via Zabbix HTTP agent items. - Interface Enhancements: Added inventory and items fields to Host and Device interfaces to ensure all device specialized types have consistent access to monitoring and inventory data. - Search Logic Improvements: Enhanced ParsedArgs to support searchByAny and technical name (host) searches when a name pattern is provided. - Bug Fixes: - Fixed getLocations argument order in the Zabbix API datasource. - Implemented deduplication for groupids and templateids in HostImporter to prevent Zabbix duplicate value errors. - Added missing url field to CreateTemplateItem for HTTP Agent item support. - Testing: - Extended the regression test suite with 4 new automated checks covering the fixed bugs. - Updated Jest tests to accommodate the improved search parameters. - Documentation: Updated cookbook and test specifications to reflect new features and regression testing obligations.
423 lines
8.2 KiB
GraphQL
423 lines
8.2 KiB
GraphQL
###################################
|
|
# Hosts, items + groups, templates
|
|
###################################
|
|
|
|
"""
|
|
Represents a host group in Zabbix.
|
|
"""
|
|
type HostGroup {
|
|
"""
|
|
Internal Zabbix ID of the host group.
|
|
"""
|
|
groupid: ID!
|
|
"""
|
|
Name of the host group.
|
|
"""
|
|
name: String
|
|
}
|
|
|
|
"""
|
|
Common interface for all host-like entities in Zabbix.
|
|
"""
|
|
interface Host {
|
|
"""
|
|
Internal Zabbix ID of the host.
|
|
"""
|
|
hostid: ID!
|
|
"""
|
|
Technical name of the host (the 'hostname' in Zabbix).
|
|
"""
|
|
host: String!
|
|
"""
|
|
List of host groups this host belongs to.
|
|
"""
|
|
hostgroups: [HostGroup!]
|
|
"""
|
|
Visible name of the host.
|
|
"""
|
|
name: String
|
|
"""
|
|
Specifies the type or category of the device. Used to define the classification
|
|
of a device in the system (capabilities, functionalities, or purpose).
|
|
"""
|
|
deviceType: String
|
|
"""
|
|
Host inventory data.
|
|
"""
|
|
inventory: Inventory
|
|
"""
|
|
List of monitored items for this host.
|
|
"""
|
|
items: [ZabbixItem!]
|
|
}
|
|
|
|
"""
|
|
Represents a Zabbix item (a single data point being monitored).
|
|
"""
|
|
type ZabbixItem {
|
|
"""
|
|
Internal Zabbix ID of the item.
|
|
"""
|
|
itemid: Int!
|
|
"""
|
|
Visible name of the item.
|
|
"""
|
|
name: String!
|
|
"""
|
|
Technical key of the item.
|
|
"""
|
|
key_: String!
|
|
"""
|
|
Internal Zabbix ID of the host this item belongs to.
|
|
"""
|
|
hostid: Int
|
|
"""
|
|
Unix timestamp of the last time the item value was updated.
|
|
"""
|
|
lastclock: Int
|
|
"""
|
|
Last value retrieved for this item.
|
|
"""
|
|
lastvalue: String
|
|
"""
|
|
Type of information (e.g. 0 for Float, 3 for Int, 4 for Text).
|
|
"""
|
|
value_type: Int!
|
|
"""
|
|
Attribute name if this item is part of a hierarchical mapping.
|
|
"""
|
|
attributeName: String
|
|
"""
|
|
Status of the item (ENABLED or DISABLED).
|
|
"""
|
|
status: DeviceStatus
|
|
"""
|
|
Communication type used by the item.
|
|
"""
|
|
type: DeviceCommunicationType
|
|
"""
|
|
Raw Zabbix item type as integer.
|
|
"""
|
|
type_int: Int
|
|
"""
|
|
Raw Zabbix item status as integer.
|
|
"""
|
|
status_int: Int
|
|
"""
|
|
Hosts that this item is linked to.
|
|
"""
|
|
hosts: [Host!]
|
|
"""
|
|
History storage period (e.g. '2d', '90d').
|
|
"""
|
|
history: String
|
|
"""
|
|
Update interval.
|
|
"""
|
|
delay: String
|
|
"""
|
|
Units of the value.
|
|
"""
|
|
units: String
|
|
"""
|
|
Description of the item.
|
|
"""
|
|
description: String
|
|
"""
|
|
Preprocessing steps for the item.
|
|
"""
|
|
preprocessing: [JSONObject!]
|
|
"""
|
|
Tags assigned to the item.
|
|
"""
|
|
tags: [JSONObject!]
|
|
"""
|
|
Master item ID for dependent items.
|
|
"""
|
|
master_itemid: Int
|
|
"""
|
|
Master item for dependent items.
|
|
"""
|
|
master_item: ZabbixItem
|
|
}
|
|
|
|
"""
|
|
Enum representing the different communication methods Zabbix uses to collect data.
|
|
"""
|
|
enum DeviceCommunicationType {
|
|
"""Zabbix agent."""
|
|
ZABBIX_AGENT
|
|
"""Zabbix agent (active)."""
|
|
ZABBIX_AGENT_ACTIVE
|
|
"""Zabbix trapper."""
|
|
ZABBIX_TRAP
|
|
"""Zabbix internal."""
|
|
ZABBIX_INTERNAL_ITEM
|
|
"""Simple check."""
|
|
SIMPLE_CHECK
|
|
"""Dependent item."""
|
|
DEPENDANT_ITEM
|
|
"""Calculated item."""
|
|
SIMULATOR_CALCULATED
|
|
"""JavaScript item."""
|
|
SIMULATOR_JAVASCRIPT
|
|
"""HTTP agent."""
|
|
HTTP_AGENT
|
|
"""IPMI agent."""
|
|
IPMI_AGENT
|
|
"""JMX agent."""
|
|
JMX_AGENT
|
|
"""SNMP agent."""
|
|
SNMP_AGENT
|
|
"""SNMP trap."""
|
|
SNMP_TRAP
|
|
"""Database monitor."""
|
|
DATABASE_MONITOR
|
|
}
|
|
|
|
"""
|
|
Concrete implementation of a Zabbix host.
|
|
"""
|
|
type ZabbixHost implements Host {
|
|
"""
|
|
Internal Zabbix ID of the host.
|
|
"""
|
|
hostid: ID!
|
|
"""
|
|
Technical name of the host.
|
|
"""
|
|
host: String!
|
|
"""
|
|
List of host groups this host belongs to.
|
|
"""
|
|
hostgroups: [HostGroup!]
|
|
"""
|
|
Visible name of the host.
|
|
"""
|
|
name: String
|
|
"""
|
|
Tags assigned to the host as a JSON object.
|
|
"""
|
|
tags: JSONObject
|
|
|
|
"""
|
|
Specifies the type or category of the device. Used to define the classification
|
|
of a device in the system (capabilities, functionalities, or purpose).
|
|
"""
|
|
deviceType: String
|
|
|
|
"""
|
|
List of monitored items for this host.
|
|
"""
|
|
items: [ZabbixItem!]
|
|
"""
|
|
Host inventory data.
|
|
"""
|
|
inventory: Inventory
|
|
"""
|
|
List of templates linked to this host.
|
|
"""
|
|
parentTemplates: [Template!]
|
|
}
|
|
|
|
|
|
"""
|
|
Represents a Zabbix template.
|
|
"""
|
|
type Template {
|
|
"""
|
|
Internal Zabbix ID of the template.
|
|
"""
|
|
templateid: String!
|
|
"""
|
|
Technical name of the template.
|
|
"""
|
|
host: String!
|
|
"""
|
|
Name of the template.
|
|
"""
|
|
name: String
|
|
"""
|
|
List of items for this template.
|
|
"""
|
|
items: [ZabbixItem!]
|
|
}
|
|
|
|
"""
|
|
Represents host inventory information.
|
|
"""
|
|
type Inventory {
|
|
"""
|
|
Location data for the host.
|
|
"""
|
|
location: Location
|
|
}
|
|
|
|
"""
|
|
Interface for entities that have GPS coordinates.
|
|
Hint: WGS84[dd.ddddd] coordinates are used.
|
|
"""
|
|
interface GpsPosition {
|
|
"""
|
|
Latitude coordinate.
|
|
"""
|
|
latitude: Float
|
|
"""
|
|
Longitude coordinate.
|
|
"""
|
|
longitude: Float
|
|
}
|
|
|
|
"""
|
|
Represents a geographical location.
|
|
"""
|
|
type Location implements GpsPosition {
|
|
"""
|
|
Name of the location.
|
|
"""
|
|
name: String
|
|
"""
|
|
Latitude coordinate.
|
|
"""
|
|
latitude: Float
|
|
"""
|
|
Longitude coordinate.
|
|
"""
|
|
longitude: Float
|
|
}
|
|
|
|
"""
|
|
Status of a Zabbix device/item.
|
|
"""
|
|
enum DeviceStatus {
|
|
"""The device/item is enabled."""
|
|
ENABLED
|
|
"""The device/item is disabled."""
|
|
DISABLED
|
|
}
|
|
|
|
########################################################
|
|
# History / Values
|
|
########################################################
|
|
|
|
"""
|
|
Enum representing the storage data types for monitored items.
|
|
"""
|
|
enum StorageItemType {
|
|
"""Floating point number."""
|
|
FLOAT
|
|
"""Unsigned integer."""
|
|
INT
|
|
"""Textual data."""
|
|
TEXT
|
|
}
|
|
|
|
############################
|
|
# Permissions
|
|
############################
|
|
|
|
"""
|
|
Represents the combined user rights (groups and roles).
|
|
"""
|
|
type UserRights {
|
|
"""List of user groups."""
|
|
userGroups: [UserGroup!]
|
|
"""List of user roles."""
|
|
userRoles: [UserRole!]
|
|
}
|
|
|
|
"""
|
|
Represents a Zabbix user role.
|
|
"""
|
|
type UserRole {
|
|
"""Internal Zabbix ID of the role."""
|
|
roleid: Int!
|
|
"""Name of the role."""
|
|
name: String
|
|
"""Type of the role."""
|
|
type: Int
|
|
"""Whether the role is read-only."""
|
|
readonly: Int
|
|
"""Rules assigned to the role."""
|
|
rules: UserRoleRules
|
|
}
|
|
|
|
"""
|
|
Represents the rules assigned to a user role.
|
|
"""
|
|
type UserRoleRules {
|
|
"""UI access rules."""
|
|
ui: [UserRoleRule!]
|
|
"""Default access for UI elements."""
|
|
ui_default_access: Int
|
|
"""Module access rules."""
|
|
modules:[UserRoleModule!]
|
|
"""Default access for modules."""
|
|
modules_default_access: Int
|
|
"""Whether API access is enabled."""
|
|
api_access: Int
|
|
"""API mode."""
|
|
api_mode: Int
|
|
"""List of API methods allowed/denied."""
|
|
api: [String!]
|
|
"""Action rules."""
|
|
actions: [UserRoleRule!]
|
|
"""Default access for actions."""
|
|
actions_default_access: Int
|
|
}
|
|
|
|
"""
|
|
Represents a single rule within a user role.
|
|
"""
|
|
type UserRoleRule {
|
|
"""Name of the rule."""
|
|
name: String
|
|
"""Status of the rule."""
|
|
status: Int
|
|
}
|
|
|
|
"""
|
|
Represents a module assigned to a user role.
|
|
"""
|
|
type UserRoleModule {
|
|
"""Internal Zabbix module ID."""
|
|
moduleid: String
|
|
"""Status of the module."""
|
|
status: Int
|
|
"""Technical ID of the module."""
|
|
id: String
|
|
"""Relative path to the module."""
|
|
relative_path: String
|
|
}
|
|
|
|
"""
|
|
Represents a Zabbix user group.
|
|
"""
|
|
type UserGroup {
|
|
"""Internal Zabbix ID of the user group."""
|
|
usrgrpid: Int!
|
|
"""Name of the user group."""
|
|
name: String!
|
|
"""Frontend access level."""
|
|
gui_access: Int
|
|
"""Status of users in the group."""
|
|
users_status: Int
|
|
"""Permissions for host groups."""
|
|
hostgroup_rights: [ZabbixGroupRight!]
|
|
"""Permissions for template groups."""
|
|
templategroup_rights: [ZabbixGroupRight!]
|
|
}
|
|
|
|
"""
|
|
Represents a specific permission right for a group.
|
|
"""
|
|
type ZabbixGroupRight {
|
|
"""ID of the group the right applies to."""
|
|
id: Int!
|
|
"""Unique ID of the group."""
|
|
uuid: String
|
|
"""Name of the group."""
|
|
name: String
|
|
"""Assigned permission level."""
|
|
permission: Permission
|
|
}
|