You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1279 lines
41 KiB
1279 lines
41 KiB
/*
|
|
** Zabbix
|
|
** Copyright (C) 2001-2023 Zabbix SIA
|
|
**
|
|
** This program is free software; you can redistribute it and/or modify
|
|
** it under the terms of the GNU General Public License as published by
|
|
** the Free Software Foundation; either version 2 of the License, or
|
|
** (at your option) any later version.
|
|
**
|
|
** This program is distributed in the hope that it will be useful,
|
|
** but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
** GNU General Public License for more details.
|
|
**
|
|
** You should have received a copy of the GNU General Public License
|
|
** along with this program; if not, write to the Free Software
|
|
** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
**/
|
|
|
|
#ifndef ZABBIX_CACHECONFIG_H
|
|
#define ZABBIX_CACHECONFIG_H
|
|
|
|
#include "zbxdbhigh.h"
|
|
#include "zbxcomms.h"
|
|
#include "zbxeval.h"
|
|
#include "zbxavailability.h"
|
|
#include "zbxversion.h"
|
|
#include "zbxvault.h"
|
|
#include "zbxregexp.h"
|
|
#include "zbxtagfilter.h"
|
|
|
|
#define ZBX_NO_POLLER 255
|
|
#define ZBX_POLLER_TYPE_NORMAL 0
|
|
#define ZBX_POLLER_TYPE_UNREACHABLE 1
|
|
#define ZBX_POLLER_TYPE_IPMI 2
|
|
#define ZBX_POLLER_TYPE_PINGER 3
|
|
#define ZBX_POLLER_TYPE_JAVA 4
|
|
#define ZBX_POLLER_TYPE_HISTORY 5
|
|
#define ZBX_POLLER_TYPE_ODBC 6
|
|
#define ZBX_POLLER_TYPE_HTTPAGENT 7
|
|
#define ZBX_POLLER_TYPE_AGENT 8
|
|
#define ZBX_POLLER_TYPE_SNMP 9
|
|
#define ZBX_POLLER_TYPE_COUNT 10 /* number of poller types */
|
|
|
|
typedef enum
|
|
{
|
|
ZBX_SESSION_TYPE_DATA = 0,
|
|
ZBX_SESSION_TYPE_CONFIG,
|
|
ZBX_SESSION_TYPE_COUNT,
|
|
}
|
|
zbx_session_type_t;
|
|
|
|
#define ZBX_MAX_JAVA_ITEMS 32
|
|
#define ZBX_MAX_SNMP_ITEMS 128
|
|
#define ZBX_MAX_POLLER_ITEMS 128 /* MAX(ZBX_MAX_JAVA_ITEMS, ZBX_MAX_SNMP_ITEMS) */
|
|
#define ZBX_MAX_PINGER_ITEMS 128
|
|
#define ZBX_MAX_HTTPAGENT_ITEMS 1000
|
|
#define ZBX_MAX_AGENT_ITEMS 1000
|
|
#define ZBX_MAX_ITEMS 1000
|
|
|
|
#define ZBX_SNMPTRAP_LOGGING_ENABLED 1
|
|
|
|
#define ZBX_AGENT_ZABBIX (INTERFACE_TYPE_AGENT - 1)
|
|
#define ZBX_AGENT_SNMP (INTERFACE_TYPE_SNMP - 1)
|
|
#define ZBX_AGENT_IPMI (INTERFACE_TYPE_IPMI - 1)
|
|
#define ZBX_AGENT_JMX (INTERFACE_TYPE_JMX - 1)
|
|
#define ZBX_AGENT_UNKNOWN 255
|
|
#define ZBX_AGENT_MAX INTERFACE_TYPE_COUNT
|
|
|
|
typedef struct
|
|
{
|
|
zbx_uint64_t interfaceid;
|
|
char ip_orig[ZBX_INTERFACE_IP_LEN_MAX];
|
|
char dns_orig[ZBX_INTERFACE_DNS_LEN_MAX];
|
|
char port_orig[ZBX_INTERFACE_PORT_LEN_MAX];
|
|
char *addr;
|
|
unsigned short port;
|
|
unsigned char useip;
|
|
unsigned char type;
|
|
unsigned char main;
|
|
unsigned char available;
|
|
int disable_until;
|
|
char error[ZBX_INTERFACE_ERROR_LEN_MAX];
|
|
int errors_from;
|
|
}
|
|
zbx_dc_interface_t;
|
|
|
|
typedef struct
|
|
{
|
|
zbx_uint64_t interfaceid;
|
|
char *addr;
|
|
unsigned char type;
|
|
unsigned char main;
|
|
unsigned char bulk;
|
|
unsigned char snmp_version;
|
|
unsigned char useip;
|
|
char ip_orig[ZBX_INTERFACE_IP_LEN_MAX];
|
|
char dns_orig[ZBX_INTERFACE_DNS_LEN_MAX];
|
|
char port_orig[ZBX_INTERFACE_PORT_LEN_MAX];
|
|
}
|
|
zbx_dc_interface2_t;
|
|
|
|
typedef struct
|
|
{
|
|
zbx_uint64_t itemid;
|
|
zbx_uint64_t hostid;
|
|
unsigned char value_type;
|
|
unsigned char flags;
|
|
char *key;
|
|
char *key_orig;
|
|
char host[ZBX_HOSTNAME_BUF_LEN];
|
|
zbx_dc_interface_t interface;
|
|
int ret;
|
|
AGENT_RESULT result;
|
|
}
|
|
zbx_dc_item_context_t;
|
|
|
|
#define ZBX_HOST_IPMI_USERNAME_LEN 16
|
|
#define ZBX_HOST_IPMI_USERNAME_LEN_MAX (ZBX_HOST_IPMI_USERNAME_LEN + 1)
|
|
#define ZBX_HOST_IPMI_PASSWORD_LEN 20
|
|
#define ZBX_HOST_IPMI_PASSWORD_LEN_MAX (ZBX_HOST_IPMI_PASSWORD_LEN + 1)
|
|
#define ZBX_HOST_PROXY_ADDRESS_LEN 255
|
|
#define ZBX_HOST_PROXY_ADDRESS_LEN_MAX (ZBX_HOST_PROXY_ADDRESS_LEN + 1)
|
|
|
|
typedef struct
|
|
{
|
|
zbx_uint64_t hostid;
|
|
zbx_uint64_t proxyid;
|
|
char host[ZBX_HOSTNAME_BUF_LEN];
|
|
char name[ZBX_MAX_HOSTNAME_LEN * ZBX_MAX_BYTES_IN_UTF8_CHAR + 1];
|
|
unsigned char maintenance_status;
|
|
unsigned char maintenance_type;
|
|
int maintenance_from;
|
|
signed char ipmi_authtype;
|
|
unsigned char ipmi_privilege;
|
|
char ipmi_username[ZBX_HOST_IPMI_USERNAME_LEN_MAX];
|
|
char ipmi_password[ZBX_HOST_IPMI_PASSWORD_LEN_MAX];
|
|
unsigned char status;
|
|
unsigned char tls_connect;
|
|
unsigned char tls_accept;
|
|
#if defined(HAVE_GNUTLS) || defined(HAVE_OPENSSL)
|
|
char tls_issuer[HOST_TLS_ISSUER_LEN_MAX];
|
|
char tls_subject[HOST_TLS_SUBJECT_LEN_MAX];
|
|
char tls_psk_identity[HOST_TLS_PSK_IDENTITY_LEN_MAX];
|
|
char tls_psk[HOST_TLS_PSK_LEN_MAX];
|
|
#endif
|
|
}
|
|
zbx_dc_host_t;
|
|
|
|
typedef struct
|
|
{
|
|
zbx_dc_host_t host;
|
|
zbx_dc_interface_t interface;
|
|
zbx_uint64_t itemid;
|
|
zbx_uint64_t lastlogsize;
|
|
unsigned char type;
|
|
unsigned char snmp_version;
|
|
unsigned char value_type;
|
|
unsigned char state;
|
|
unsigned char snmpv3_securitylevel;
|
|
unsigned char authtype;
|
|
unsigned char flags;
|
|
unsigned char snmpv3_authprotocol;
|
|
unsigned char snmpv3_privprotocol;
|
|
unsigned char status;
|
|
unsigned char follow_redirects;
|
|
unsigned char post_type;
|
|
unsigned char retrieve_mode;
|
|
unsigned char request_method;
|
|
unsigned char output_format;
|
|
unsigned char verify_peer;
|
|
unsigned char verify_host;
|
|
unsigned char allow_traps;
|
|
char key_orig[ZBX_ITEM_KEY_LEN * ZBX_MAX_BYTES_IN_UTF8_CHAR + 1], *key;
|
|
char *delay;
|
|
int mtime;
|
|
char trapper_hosts[ZBX_ITEM_TRAPPER_HOSTS_LEN_MAX];
|
|
char logtimefmt[ZBX_ITEM_LOGTIMEFMT_LEN_MAX];
|
|
char snmp_community_orig[ZBX_ITEM_SNMP_COMMUNITY_LEN_MAX], *snmp_community;
|
|
char snmp_oid_orig[ZBX_ITEM_SNMP_OID_LEN_MAX], *snmp_oid;
|
|
char snmpv3_securityname_orig[ZBX_ITEM_SNMPV3_SECURITYNAME_LEN_MAX], *snmpv3_securityname;
|
|
char snmpv3_authpassphrase_orig[ZBX_ITEM_SNMPV3_AUTHPASSPHRASE_LEN_MAX],
|
|
*snmpv3_authpassphrase;
|
|
char snmpv3_privpassphrase_orig[ZBX_ITEM_SNMPV3_PRIVPASSPHRASE_LEN_MAX],
|
|
*snmpv3_privpassphrase;
|
|
char ipmi_sensor[ZBX_ITEM_IPMI_SENSOR_LEN_MAX];
|
|
char *params;
|
|
char username_orig[ZBX_ITEM_USERNAME_LEN_MAX], *username;
|
|
char publickey_orig[ZBX_ITEM_PUBLICKEY_LEN_MAX], *publickey;
|
|
char privatekey_orig[ZBX_ITEM_PRIVATEKEY_LEN_MAX], *privatekey;
|
|
char password_orig[ZBX_ITEM_PASSWORD_LEN_MAX], *password;
|
|
char snmpv3_contextname_orig[ZBX_ITEM_SNMPV3_CONTEXTNAME_LEN_MAX], *snmpv3_contextname;
|
|
char jmx_endpoint_orig[ZBX_ITEM_JMX_ENDPOINT_LEN_MAX], *jmx_endpoint;
|
|
char timeout_orig[ZBX_ITEM_TIMEOUT_LEN_MAX], *timeout;
|
|
char url_orig[ZBX_ITEM_URL_LEN_MAX], *url;
|
|
char query_fields_orig[ZBX_ITEM_QUERY_FIELDS_LEN_MAX], *query_fields;
|
|
char *posts;
|
|
char status_codes_orig[ZBX_ITEM_STATUS_CODES_LEN_MAX], *status_codes;
|
|
char http_proxy_orig[ZBX_ITEM_HTTP_PROXY_LEN_MAX], *http_proxy;
|
|
char *headers;
|
|
char ssl_cert_file_orig[ZBX_ITEM_SSL_CERT_FILE_LEN_MAX], *ssl_cert_file;
|
|
char ssl_key_file_orig[ZBX_ITEM_SSL_KEY_FILE_LEN_MAX], *ssl_key_file;
|
|
char ssl_key_password_orig[ZBX_ITEM_SSL_KEY_PASSWORD_LEN_MAX], *ssl_key_password;
|
|
char *script_params;
|
|
char *error;
|
|
unsigned char *formula_bin;
|
|
int snmp_max_repetitions;
|
|
}
|
|
zbx_dc_item_t;
|
|
|
|
ZBX_PTR_VECTOR_DECL(dc_item, zbx_dc_item_t *)
|
|
|
|
typedef struct
|
|
{
|
|
zbx_uint64_t hostid;
|
|
zbx_uint64_t proxyid;
|
|
char host[ZBX_HOSTNAME_BUF_LEN];
|
|
char name[ZBX_MAX_HOSTNAME_LEN * ZBX_MAX_BYTES_IN_UTF8_CHAR + 1];
|
|
signed char inventory_mode;
|
|
unsigned char status;
|
|
}
|
|
zbx_history_sync_host_t;
|
|
|
|
typedef struct
|
|
{
|
|
zbx_history_sync_host_t host;
|
|
zbx_uint64_t itemid;
|
|
zbx_uint64_t lastlogsize;
|
|
zbx_uint64_t valuemapid;
|
|
char key_orig[ZBX_ITEM_KEY_LEN * ZBX_MAX_BYTES_IN_UTF8_CHAR + 1];
|
|
char *units;
|
|
char *error;
|
|
char *history_period, *trends_period;
|
|
int mtime;
|
|
int history_sec;
|
|
int trends_sec;
|
|
int flags;
|
|
unsigned char type;
|
|
unsigned char value_type;
|
|
unsigned char state;
|
|
unsigned char inventory_link;
|
|
unsigned char status;
|
|
unsigned char history;
|
|
unsigned char trends;
|
|
}
|
|
zbx_history_sync_item_t;
|
|
|
|
typedef struct
|
|
{
|
|
zbx_uint64_t hostid;
|
|
zbx_uint64_t proxyid;
|
|
char host[ZBX_HOSTNAME_BUF_LEN];
|
|
char name[ZBX_MAX_HOSTNAME_LEN * ZBX_MAX_BYTES_IN_UTF8_CHAR + 1];
|
|
unsigned char maintenance_status;
|
|
unsigned char maintenance_type;
|
|
int maintenance_from;
|
|
unsigned char status;
|
|
unsigned char tls_accept;
|
|
#if defined(HAVE_GNUTLS) || defined(HAVE_OPENSSL)
|
|
char tls_issuer[HOST_TLS_ISSUER_LEN_MAX];
|
|
char tls_subject[HOST_TLS_SUBJECT_LEN_MAX];
|
|
char tls_psk_identity[HOST_TLS_PSK_IDENTITY_LEN_MAX];
|
|
char tls_psk[HOST_TLS_PSK_LEN_MAX];
|
|
#endif
|
|
}
|
|
zbx_history_recv_host_t;
|
|
|
|
typedef struct
|
|
{
|
|
zbx_history_recv_host_t host;
|
|
zbx_dc_interface_t interface;
|
|
zbx_uint64_t itemid;
|
|
unsigned char value_type;
|
|
unsigned char state;
|
|
unsigned char flags;
|
|
unsigned char type;
|
|
unsigned char status;
|
|
unsigned char allow_traps;
|
|
char key_orig[ZBX_ITEM_KEY_LEN * ZBX_MAX_BYTES_IN_UTF8_CHAR + 1], *key;
|
|
char trapper_hosts[ZBX_ITEM_TRAPPER_HOSTS_LEN_MAX];
|
|
char logtimefmt[ZBX_ITEM_LOGTIMEFMT_LEN_MAX];
|
|
}
|
|
zbx_history_recv_item_t;
|
|
|
|
typedef struct
|
|
{
|
|
zbx_uint64_t itemid;
|
|
zbx_uint64_t proxyid;
|
|
const char *host;
|
|
const char *key_orig;
|
|
unsigned char value_type;
|
|
}
|
|
zbx_dc_evaluate_item_t;
|
|
|
|
typedef struct
|
|
{
|
|
zbx_uint64_t functionid;
|
|
zbx_uint64_t triggerid;
|
|
zbx_uint64_t itemid;
|
|
char *function;
|
|
char *parameter;
|
|
unsigned char type;
|
|
}
|
|
zbx_dc_function_t;
|
|
|
|
typedef struct
|
|
{
|
|
zbx_uint64_t hostid;
|
|
zbx_uint64_t itemid;
|
|
zbx_tag_t tag;
|
|
}
|
|
zbx_item_tag_t;
|
|
|
|
ZBX_PTR_VECTOR_DECL(item_tag, zbx_item_tag_t *)
|
|
|
|
typedef struct _DC_TRIGGER
|
|
{
|
|
zbx_uint64_t triggerid;
|
|
char *description;
|
|
char *expression;
|
|
char *recovery_expression;
|
|
|
|
char *error;
|
|
char *new_error;
|
|
char *correlation_tag;
|
|
char *opdata;
|
|
char *event_name;
|
|
unsigned char *expression_bin;
|
|
unsigned char *recovery_expression_bin;
|
|
zbx_timespec_t timespec;
|
|
int lastchange;
|
|
unsigned char topoindex;
|
|
unsigned char priority;
|
|
unsigned char type;
|
|
unsigned char value;
|
|
unsigned char state;
|
|
unsigned char new_value;
|
|
unsigned char status;
|
|
unsigned char recovery_mode;
|
|
unsigned char correlation_mode;
|
|
|
|
unsigned char flags;
|
|
|
|
zbx_vector_ptr_t tags;
|
|
zbx_vector_uint64_t itemids;
|
|
|
|
zbx_eval_context_t *eval_ctx;
|
|
zbx_eval_context_t *eval_ctx_r;
|
|
}
|
|
zbx_dc_trigger_t;
|
|
|
|
ZBX_PTR_VECTOR_DECL(dc_trigger, zbx_dc_trigger_t *)
|
|
|
|
typedef struct
|
|
{
|
|
zbx_uint64_t proxyid;
|
|
char name[ZBX_HOSTNAME_BUF_LEN];
|
|
time_t proxy_config_nextcheck;
|
|
time_t proxy_data_nextcheck;
|
|
time_t proxy_tasks_nextcheck;
|
|
time_t last_cfg_error_time; /* time when passive proxy misconfiguration error was */
|
|
/* seen or 0 if no error */
|
|
char version_str[ZBX_VERSION_BUF_LEN];
|
|
int version_int;
|
|
zbx_proxy_compatibility_t compatibility;
|
|
time_t lastaccess;
|
|
char addr_orig[ZBX_INTERFACE_ADDR_LEN_MAX];
|
|
char port_orig[ZBX_INTERFACE_PORT_LEN_MAX];
|
|
char *addr;
|
|
unsigned short port;
|
|
|
|
unsigned char tls_connect;
|
|
unsigned char tls_accept;
|
|
|
|
#if defined(HAVE_GNUTLS) || defined(HAVE_OPENSSL)
|
|
char tls_issuer[HOST_TLS_ISSUER_LEN_MAX];
|
|
char tls_subject[HOST_TLS_SUBJECT_LEN_MAX];
|
|
char tls_psk_identity[HOST_TLS_PSK_IDENTITY_LEN_MAX];
|
|
char tls_psk[HOST_TLS_PSK_LEN_MAX];
|
|
#endif
|
|
zbx_uint64_t revision;
|
|
zbx_uint64_t macro_revision;
|
|
|
|
char allowed_addresses[ZBX_HOST_PROXY_ADDRESS_LEN_MAX];
|
|
time_t last_version_error_time;
|
|
}
|
|
zbx_dc_proxy_t;
|
|
|
|
#define ZBX_ACTION_OPCLASS_NONE 0
|
|
#define ZBX_ACTION_OPCLASS_NORMAL 1
|
|
#define ZBX_ACTION_OPCLASS_RECOVERY 2
|
|
#define ZBX_ACTION_OPCLASS_ACKNOWLEDGE 4
|
|
|
|
typedef struct
|
|
{
|
|
zbx_uint64_t actionid;
|
|
char *formula;
|
|
unsigned char eventsource;
|
|
unsigned char evaltype;
|
|
unsigned char opflags;
|
|
zbx_vector_ptr_t conditions;
|
|
}
|
|
zbx_action_eval_t;
|
|
|
|
typedef struct
|
|
{
|
|
char *host;
|
|
char *key;
|
|
}
|
|
zbx_host_key_t;
|
|
|
|
ZBX_VECTOR_DECL(host_key, zbx_host_key_t)
|
|
|
|
/* housekeeping related configuration data */
|
|
typedef struct
|
|
{
|
|
int events_trigger;
|
|
int events_internal;
|
|
int events_discovery;
|
|
int events_autoreg;
|
|
int events_service;
|
|
int services;
|
|
int audit;
|
|
int sessions;
|
|
int trends;
|
|
int history;
|
|
|
|
unsigned char services_mode;
|
|
unsigned char audit_mode;
|
|
unsigned char sessions_mode;
|
|
unsigned char events_mode;
|
|
unsigned char trends_mode;
|
|
unsigned char trends_global;
|
|
unsigned char history_mode;
|
|
unsigned char history_global;
|
|
}
|
|
zbx_config_hk_t;
|
|
|
|
typedef struct
|
|
{
|
|
char *extension;
|
|
unsigned char history_compression_status;
|
|
int history_compress_older;
|
|
}
|
|
zbx_config_db_t;
|
|
|
|
/* global configuration data (loaded from config table) */
|
|
typedef struct
|
|
{
|
|
/* the fields set by zbx_config_get() function, see ZBX_CONFIG_FLAGS_ defines */
|
|
zbx_uint64_t flags;
|
|
|
|
char **severity_name;
|
|
zbx_uint64_t discovery_groupid;
|
|
int default_inventory_mode;
|
|
unsigned char snmptrap_logging;
|
|
unsigned char autoreg_tls_accept;
|
|
char *default_timezone;
|
|
int auditlog_enabled;
|
|
|
|
/* database configuration data for ZBX_CONFIG_DB_EXTENSION_* extensions */
|
|
zbx_config_db_t db;
|
|
|
|
/* housekeeping related configuration data */
|
|
zbx_config_hk_t hk;
|
|
}
|
|
zbx_config_t;
|
|
|
|
#define ZBX_CONFIG_FLAGS_SEVERITY_NAME __UINT64_C(0x0000000000000001)
|
|
#define ZBX_CONFIG_FLAGS_DISCOVERY_GROUPID __UINT64_C(0x0000000000000002)
|
|
#define ZBX_CONFIG_FLAGS_DEFAULT_INVENTORY_MODE __UINT64_C(0x0000000000000004)
|
|
#define ZBX_CONFIG_FLAGS_SNMPTRAP_LOGGING __UINT64_C(0x0000000000000010)
|
|
#define ZBX_CONFIG_FLAGS_HOUSEKEEPER __UINT64_C(0x0000000000000020)
|
|
#define ZBX_CONFIG_FLAGS_DB_EXTENSION __UINT64_C(0x0000000000000040)
|
|
#define ZBX_CONFIG_FLAGS_AUTOREG_TLS_ACCEPT __UINT64_C(0x0000000000000080)
|
|
#define ZBX_CONFIG_FLAGS_DEFAULT_TIMEZONE __UINT64_C(0x0000000000000100)
|
|
#define ZBX_CONFIG_FLAGS_AUDITLOG_ENABLED __UINT64_C(0x0000000000000200)
|
|
|
|
typedef struct
|
|
{
|
|
zbx_uint64_t hostid;
|
|
unsigned char idx;
|
|
const char *field_name;
|
|
char *value;
|
|
}
|
|
zbx_inventory_value_t;
|
|
|
|
typedef struct
|
|
{
|
|
char *tag;
|
|
}
|
|
zbx_corr_condition_tag_t;
|
|
|
|
typedef struct
|
|
{
|
|
char *tag;
|
|
char *value;
|
|
unsigned char op;
|
|
}
|
|
zbx_corr_condition_tag_value_t;
|
|
|
|
typedef struct
|
|
{
|
|
zbx_uint64_t groupid;
|
|
unsigned char op;
|
|
}
|
|
zbx_corr_condition_group_t;
|
|
|
|
typedef struct
|
|
{
|
|
char *oldtag;
|
|
char *newtag;
|
|
}
|
|
zbx_corr_condition_tag_pair_t;
|
|
|
|
typedef union
|
|
{
|
|
zbx_corr_condition_tag_t tag;
|
|
zbx_corr_condition_tag_value_t tag_value;
|
|
zbx_corr_condition_group_t group;
|
|
zbx_corr_condition_tag_pair_t tag_pair;
|
|
}
|
|
zbx_corr_condition_data_t;
|
|
|
|
typedef struct
|
|
{
|
|
zbx_uint64_t corr_conditionid;
|
|
int type;
|
|
zbx_corr_condition_data_t data;
|
|
}
|
|
zbx_corr_condition_t;
|
|
|
|
typedef struct
|
|
{
|
|
unsigned char type;
|
|
}
|
|
zbx_corr_operation_t;
|
|
|
|
typedef struct
|
|
{
|
|
zbx_uint64_t correlationid;
|
|
char *name;
|
|
char *formula;
|
|
unsigned char evaltype;
|
|
|
|
zbx_vector_ptr_t conditions;
|
|
zbx_vector_ptr_t operations;
|
|
}
|
|
zbx_correlation_t;
|
|
|
|
typedef struct
|
|
{
|
|
zbx_vector_ptr_t correlations;
|
|
zbx_hashset_t conditions;
|
|
|
|
/* Configuration synchronization timestamp of the rules. */
|
|
/* Update the cache if this timesamp is less than the */
|
|
/* current configuration synchronization timestamp. */
|
|
int sync_ts;
|
|
}
|
|
zbx_correlation_rules_t;
|
|
|
|
/* item queue data */
|
|
typedef struct
|
|
{
|
|
zbx_uint64_t itemid;
|
|
zbx_uint64_t proxyid;
|
|
int type;
|
|
int nextcheck;
|
|
}
|
|
zbx_queue_item_t;
|
|
|
|
typedef union
|
|
{
|
|
zbx_uint64_t ui64;
|
|
double dbl;
|
|
}
|
|
zbx_counter_value_t;
|
|
|
|
typedef struct
|
|
{
|
|
zbx_uint64_t proxyid;
|
|
zbx_counter_value_t counter_value;
|
|
}
|
|
zbx_proxy_counter_t;
|
|
|
|
typedef struct
|
|
{
|
|
unsigned char type;
|
|
unsigned char error_handler;
|
|
char *params;
|
|
char *error_handler_params;
|
|
}
|
|
zbx_preproc_op_t;
|
|
|
|
typedef struct
|
|
{
|
|
zbx_uint64_t itemid;
|
|
zbx_uint64_t hostid;
|
|
unsigned char type;
|
|
unsigned char value_type;
|
|
|
|
int dep_itemids_num;
|
|
int preproc_ops_num;
|
|
zbx_uint64_t revision;
|
|
zbx_uint64_t preproc_revision;
|
|
|
|
zbx_uint64_pair_t *dep_itemids;
|
|
zbx_preproc_op_t *preproc_ops;
|
|
}
|
|
zbx_preproc_item_t;
|
|
|
|
typedef struct
|
|
{
|
|
zbx_uint64_t connectorid;
|
|
zbx_uint64_t revision;
|
|
unsigned char protocol;
|
|
unsigned char data_type;
|
|
char *url_orig, *url;
|
|
int max_records;
|
|
int max_senders;
|
|
char *timeout_orig, *timeout;
|
|
unsigned char max_attempts;
|
|
char *token_orig, *token;
|
|
char *http_proxy_orig, *http_proxy;
|
|
unsigned char authtype;
|
|
char *username_orig, *username;
|
|
char *password_orig, *password;
|
|
unsigned char verify_peer;
|
|
unsigned char verify_host;
|
|
char *ssl_cert_file_orig,*ssl_cert_file;
|
|
char *ssl_key_file_orig, *ssl_key_file;
|
|
char *ssl_key_password_orig, *ssl_key_password;
|
|
|
|
zbx_hashset_t data_point_links;
|
|
zbx_list_t data_point_link_queue;
|
|
int time_flush;
|
|
int senders;
|
|
}
|
|
zbx_connector_t;
|
|
|
|
|
|
/* the configuration cache statistics */
|
|
typedef struct
|
|
{
|
|
zbx_uint64_t hosts;
|
|
zbx_uint64_t items;
|
|
zbx_uint64_t items_unsupported;
|
|
double requiredperformance;
|
|
}
|
|
zbx_config_cache_info_t;
|
|
|
|
typedef struct
|
|
{
|
|
zbx_uint64_t dcheckid;
|
|
zbx_uint64_t druleid;
|
|
unsigned char type;
|
|
char *key_;
|
|
char *snmp_community;
|
|
char *ports;
|
|
char *snmpv3_securityname;
|
|
unsigned char snmpv3_securitylevel;
|
|
char *snmpv3_authpassphrase;
|
|
char *snmpv3_privpassphrase;
|
|
unsigned char uniq;
|
|
unsigned char snmpv3_authprotocol;
|
|
unsigned char snmpv3_privprotocol;
|
|
char *snmpv3_contextname;
|
|
unsigned char allow_redirect;
|
|
}
|
|
zbx_dc_dcheck_t;
|
|
|
|
ZBX_PTR_VECTOR_DECL(dc_dcheck_ptr, zbx_dc_dcheck_t *)
|
|
|
|
typedef struct
|
|
{
|
|
zbx_uint64_t druleid;
|
|
zbx_uint64_t proxyid;
|
|
time_t nextcheck;
|
|
int delay;
|
|
char *delay_str;
|
|
char *iprange;
|
|
unsigned char status;
|
|
unsigned char location;
|
|
zbx_uint64_t revision;
|
|
char *name;
|
|
zbx_uint64_t unique_dcheckid;
|
|
zbx_vector_dc_dcheck_ptr_t dchecks;
|
|
int concurrency_max;
|
|
}
|
|
zbx_dc_drule_t;
|
|
|
|
ZBX_PTR_VECTOR_DECL(dc_drule_ptr, zbx_dc_drule_t *)
|
|
|
|
int zbx_is_item_processed_by_server(unsigned char type, const char *key);
|
|
int zbx_is_counted_in_item_queue(unsigned char type, const char *key);
|
|
int zbx_in_maintenance_without_data_collection(unsigned char maintenance_status, unsigned char maintenance_type,
|
|
unsigned char type);
|
|
|
|
#define ZBX_SYNC_NONE 0
|
|
#define ZBX_SYNC_ALL 1
|
|
|
|
/* initial sync, get all data */
|
|
#define ZBX_DBSYNC_INIT 0
|
|
/* update sync, get changed data */
|
|
#define ZBX_DBSYNC_UPDATE 1
|
|
|
|
#define ZBX_DBSYNC_STATUS_INITIALIZED 0
|
|
#define ZBX_DBSYNC_STATUS_UNKNOWN -1
|
|
|
|
typedef enum
|
|
{
|
|
ZBX_SYNCED_NEW_CONFIG_NO,
|
|
ZBX_SYNCED_NEW_CONFIG_YES
|
|
}
|
|
zbx_synced_new_config_t;
|
|
|
|
#define ZBX_ITEM_GET_INTERFACE 0x0001
|
|
#define ZBX_ITEM_GET_HOST 0x0002
|
|
#define ZBX_ITEM_GET_HOSTNAME 0x0004
|
|
#define ZBX_ITEM_GET_HOSTINFO 0x0008
|
|
#define ZBX_ITEM_GET_TRAPPER 0x0010
|
|
|
|
#define ZBX_ITEM_GET_DEFAULT ((unsigned int)~0)
|
|
|
|
#define ZBX_ITEM_GET_SYNC 0
|
|
#define ZBX_ITEM_GET_SYNC_EXPORT (ZBX_ITEM_GET_HOSTNAME)
|
|
|
|
#define ZBX_ITEM_GET_PROCESS 0
|
|
|
|
typedef struct zbx_dc_um_shared_handle zbx_dc_um_shared_handle_t;
|
|
typedef struct zbx_um_cache zbx_um_cache_t;
|
|
|
|
void zbx_dc_sync_configuration(unsigned char mode, zbx_synced_new_config_t synced,
|
|
zbx_vector_uint64_t *deleted_itemids, const zbx_config_vault_t *config_vault,
|
|
int proxyconfig_frequency);
|
|
void zbx_dc_sync_kvs_paths(const struct zbx_json_parse *jp_kvs_paths, const zbx_config_vault_t *config_vault,
|
|
const char *config_source_ip);
|
|
int zbx_init_configuration_cache(zbx_get_program_type_f get_program_type, zbx_get_config_forks_f get_config_forks,
|
|
zbx_uint64_t conf_cache_size, char **error);
|
|
void zbx_free_configuration_cache(void);
|
|
|
|
void zbx_dc_config_get_triggers_by_triggerids(zbx_dc_trigger_t *triggers, const zbx_uint64_t *triggerids,
|
|
int *errcode, size_t num);
|
|
void zbx_dc_config_clean_items(zbx_dc_item_t *items, int *errcodes, size_t num);
|
|
int zbx_dc_get_host_by_hostid(zbx_dc_host_t *host, zbx_uint64_t hostid);
|
|
int zbx_dc_config_get_hostid_by_name(const char *host, zbx_uint64_t *hostid);
|
|
void zbx_dc_config_get_hosts_by_itemids(zbx_dc_host_t *hosts, const zbx_uint64_t *itemids, int *errcodes, size_t num);
|
|
void zbx_dc_config_get_hosts_by_hostids(zbx_dc_host_t *hosts, const zbx_uint64_t *hostids, int *errcodes, int num);
|
|
void zbx_dc_config_get_items_by_keys(zbx_dc_item_t *items, zbx_host_key_t *keys, int *errcodes, size_t num);
|
|
void zbx_dc_config_get_items_by_itemids(zbx_dc_item_t *items, const zbx_uint64_t *itemids, int *errcodes, size_t num);
|
|
|
|
void zbx_dc_config_history_sync_get_items_by_itemids(zbx_history_sync_item_t *items, const zbx_uint64_t *itemids,
|
|
int *errcodes, size_t num, unsigned int mode);
|
|
void zbx_dc_config_history_sync_get_functions_by_functionids(zbx_dc_function_t *functions, zbx_uint64_t *functionids,
|
|
int *errcodes, size_t num);
|
|
void zbx_dc_config_history_sync_get_triggers_by_itemids(zbx_hashset_t *trigger_info,
|
|
zbx_vector_dc_trigger_t *trigger_order, const zbx_uint64_t *itemids, const zbx_timespec_t *timespecs,
|
|
int itemids_num);
|
|
void zbx_dc_config_clean_history_sync_items(zbx_history_sync_item_t *items, int *errcodes, size_t num);
|
|
void zbx_dc_config_history_sync_unset_existing_itemids(zbx_vector_uint64_t *itemids);
|
|
|
|
void zbx_dc_config_history_recv_get_items_by_keys(zbx_history_recv_item_t *items, const zbx_host_key_t *keys,
|
|
int *errcodes, size_t num);
|
|
void zbx_dc_config_history_recv_get_items_by_itemids(zbx_history_recv_item_t *items, const zbx_uint64_t *itemids,
|
|
int *errcodes, size_t num, unsigned int mode);
|
|
void zbx_dc_config_history_sync_get_connector_filters(zbx_vector_connector_filter_t *connector_filters_history,
|
|
zbx_vector_connector_filter_t *connector_filters_events);
|
|
void zbx_dc_config_history_sync_get_connectors(zbx_hashset_t *connectors, zbx_hashset_iter_t *connector_iter,
|
|
zbx_uint64_t *config_revision, zbx_uint64_t *connector_revision,
|
|
zbx_clean_func_t data_point_link_clean);
|
|
void zbx_connector_filter_free(zbx_connector_filter_t connector_filter);
|
|
|
|
int zbx_dc_config_get_active_items_count_by_hostid(zbx_uint64_t hostid);
|
|
void zbx_dc_config_get_active_items_by_hostid(zbx_dc_item_t *items, zbx_uint64_t hostid, int *errcodes, size_t num);
|
|
void zbx_dc_config_get_preprocessable_items(zbx_hashset_t *items, zbx_dc_um_shared_handle_t **um_handle,
|
|
zbx_uint64_t *revision);
|
|
void zbx_dc_config_get_functions_by_functionids(zbx_dc_function_t *functions,
|
|
zbx_uint64_t *functionids, int *errcodes, size_t num);
|
|
void zbx_dc_config_clean_functions(zbx_dc_function_t *functions, int *errcodes, size_t num);
|
|
void zbx_dc_config_clean_triggers(zbx_dc_trigger_t *triggers, int *errcodes, size_t num);
|
|
int zbx_dc_config_lock_triggers_by_history_items(zbx_vector_ptr_t *history_items, zbx_vector_uint64_t *triggerids);
|
|
void zbx_dc_config_lock_triggers_by_triggerids(zbx_vector_uint64_t *triggerids_in,
|
|
zbx_vector_uint64_t *triggerids_out);
|
|
void zbx_dc_config_unlock_triggers(const zbx_vector_uint64_t *triggerids);
|
|
void zbx_dc_config_unlock_all_triggers(void);
|
|
int zbx_dc_config_trigger_exists(zbx_uint64_t triggerid);
|
|
int zbx_config_get_trigger_severity_name(int priority, char **replace_to);
|
|
|
|
void zbx_dc_free_triggers(zbx_vector_dc_trigger_t *triggers);
|
|
void zbx_dc_config_update_interface_snmp_stats(zbx_uint64_t interfaceid, int max_snmp_succeed, int min_snmp_fail);
|
|
int zbx_dc_config_get_suggested_snmp_vars(zbx_uint64_t interfaceid, int *bulk);
|
|
int zbx_dc_config_get_interface_by_type(zbx_dc_interface_t *interface, zbx_uint64_t hostid, unsigned char type);
|
|
int zbx_dc_config_get_interface(zbx_dc_interface_t *interface, zbx_uint64_t hostid, zbx_uint64_t itemid);
|
|
int zbx_dc_config_get_poller_nextcheck(unsigned char poller_type);
|
|
int zbx_dc_config_get_poller_items(unsigned char poller_type, int config_timeout, int processing,
|
|
int config_max_concurrent_checks, zbx_dc_item_t **items);
|
|
#ifdef HAVE_OPENIPMI
|
|
int zbx_dc_config_get_ipmi_poller_items(int now, int items_num, int config_timeout, zbx_dc_item_t *items,
|
|
int *nextcheck);
|
|
#endif
|
|
int zbx_dc_config_get_snmp_interfaceids_by_addr(const char *addr, zbx_uint64_t **interfaceids);
|
|
size_t zbx_dc_config_get_snmp_items_by_interfaceid(zbx_uint64_t interfaceid, zbx_dc_item_t **items);
|
|
|
|
void zbx_dc_config_update_autoreg_host(const char *host, const char *listen_ip, const char *listen_dns,
|
|
unsigned short listen_port, const char *host_metadata, zbx_conn_flags_t flags, int now);
|
|
void zbx_dc_config_delete_autoreg_host(const zbx_vector_ptr_t *autoreg_hosts);
|
|
|
|
#define ZBX_HK_OPTION_DISABLED 0
|
|
#define ZBX_HK_OPTION_ENABLED 1
|
|
|
|
/* options for hk.history_mode, trends_mode, audit_mode */
|
|
#define ZBX_HK_MODE_DISABLED ZBX_HK_OPTION_DISABLED
|
|
#define ZBX_HK_MODE_REGULAR ZBX_HK_OPTION_ENABLED
|
|
#define ZBX_HK_MODE_PARTITION 2
|
|
|
|
#define ZBX_HK_HISTORY_MIN SEC_PER_HOUR
|
|
#define ZBX_HK_TRENDS_MIN SEC_PER_DAY
|
|
#define ZBX_HK_PERIOD_MAX (25 * SEC_PER_YEAR)
|
|
|
|
void zbx_dc_requeue_items(const zbx_uint64_t *itemids, const int *lastclocks, const int *errcodes, size_t num);
|
|
void zbx_dc_poller_requeue_items(const zbx_uint64_t *itemids, const int *lastclocks,
|
|
const int *errcodes, size_t num, unsigned char poller_type, int *nextcheck);
|
|
#ifdef HAVE_OPENIPMI
|
|
void zbx_dc_requeue_unreachable_items(zbx_uint64_t *itemids, size_t itemids_num);
|
|
#endif
|
|
|
|
int zbx_dc_config_check_trigger_dependencies(zbx_uint64_t triggerid);
|
|
|
|
void zbx_dc_config_triggers_apply_changes(zbx_vector_ptr_t *trigger_diff);
|
|
void zbx_dc_config_items_apply_changes(const zbx_vector_ptr_t *item_diff);
|
|
|
|
void zbx_dc_config_update_inventory_values(const zbx_vector_ptr_t *inventory_values);
|
|
int zbx_dc_get_host_inventory_value_by_itemid(zbx_uint64_t itemid, char **replace_to, int value_idx);
|
|
int zbx_dc_get_host_inventory_value_by_hostid(zbx_uint64_t hostid, char **replace_to, int value_idx);
|
|
|
|
#define ZBX_CONFSTATS_BUFFER_TOTAL 1
|
|
#define ZBX_CONFSTATS_BUFFER_USED 2
|
|
#define ZBX_CONFSTATS_BUFFER_FREE 3
|
|
#define ZBX_CONFSTATS_BUFFER_PUSED 4
|
|
#define ZBX_CONFSTATS_BUFFER_PFREE 5
|
|
void *zbx_dc_config_get_stats(int request);
|
|
|
|
int zbx_dc_config_get_last_sync_time(void);
|
|
int zbx_dc_config_get_proxypoller_hosts(zbx_dc_proxy_t *proxies, int max_hosts);
|
|
int zbx_dc_config_get_proxypoller_nextcheck(void);
|
|
|
|
#define ZBX_PROXY_CONFIG_NEXTCHECK 0x01
|
|
#define ZBX_PROXY_DATA_NEXTCHECK 0x02
|
|
#define ZBX_PROXY_TASKS_NEXTCHECK 0x04
|
|
void zbx_dc_requeue_proxy(zbx_uint64_t proxyid, unsigned char update_nextcheck, int proxy_conn_err,
|
|
int proxyconfig_frequency, int proxydata_frequency);
|
|
int zbx_dc_check_host_permissions(const char *host, const zbx_socket_t *sock, zbx_uint64_t *hostid,
|
|
zbx_uint64_t *revision, char **error);
|
|
int zbx_dc_is_autoreg_host_changed(const char *host, unsigned short port, const char *host_metadata,
|
|
zbx_conn_flags_t flag, const char *interface, int now, int heartbeat);
|
|
|
|
#if defined(HAVE_GNUTLS) || defined(HAVE_OPENSSL)
|
|
size_t zbx_dc_get_psk_by_identity(const unsigned char *psk_identity, unsigned char *psk_buf, unsigned int *psk_usage);
|
|
#endif
|
|
void zbx_dc_get_autoregistration_psk(char *psk_identity_buf, size_t psk_identity_buf_len,
|
|
unsigned char *psk_buf, size_t psk_buf_len);
|
|
|
|
#define ZBX_MACRO_ENV_SECURE 0
|
|
#define ZBX_MACRO_ENV_NONSECURE 1
|
|
#define ZBX_MACRO_ENV_DEFAULT 2
|
|
|
|
#define ZBX_MACRO_VALUE_TEXT 0
|
|
#define ZBX_MACRO_VALUE_SECRET 1
|
|
#define ZBX_MACRO_VALUE_VAULT 2
|
|
|
|
#define ZBX_MACRO_SECRET_MASK "******"
|
|
|
|
int zbx_dc_interface_activate(zbx_uint64_t interfaceid, const zbx_timespec_t *ts, zbx_agent_availability_t *in,
|
|
zbx_agent_availability_t *out);
|
|
|
|
int zbx_dc_interface_deactivate(zbx_uint64_t interfaceid, const zbx_timespec_t *ts, int unavailable_delay,
|
|
int unreachable_period, int unreachable_delay, zbx_agent_availability_t *in,
|
|
zbx_agent_availability_t *out, const char *error_msg);
|
|
|
|
#define ZBX_QUEUE_FROM_DEFAULT 6 /* default lower limit for delay (in seconds) */
|
|
#define ZBX_QUEUE_TO_INFINITY -1 /* no upper limit for delay */
|
|
void zbx_dc_free_item_queue(zbx_vector_ptr_t *queue);
|
|
int zbx_dc_get_item_queue(zbx_vector_ptr_t *queue, int from, int to);
|
|
|
|
zbx_uint64_t zbx_dc_get_item_count(zbx_uint64_t hostid);
|
|
zbx_uint64_t zbx_dc_get_item_unsupported_count(zbx_uint64_t hostid);
|
|
zbx_uint64_t zbx_dc_get_trigger_count(void);
|
|
double zbx_dc_get_required_performance(void);
|
|
zbx_uint64_t zbx_dc_get_host_count(void);
|
|
void zbx_dc_get_count_stats_all(zbx_config_cache_info_t *stats);
|
|
|
|
void zbx_dc_get_status(zbx_vector_ptr_t *hosts_monitored, zbx_vector_ptr_t *hosts_not_monitored,
|
|
zbx_vector_ptr_t *items_active_normal, zbx_vector_ptr_t *items_active_notsupported,
|
|
zbx_vector_ptr_t *items_disabled, zbx_uint64_t *triggers_enabled_ok,
|
|
zbx_uint64_t *triggers_enabled_problem, zbx_uint64_t *triggers_disabled,
|
|
zbx_vector_ptr_t *required_performance);
|
|
|
|
void zbx_dc_get_expressions_by_names(zbx_vector_expression_t *expressions, const char * const *names, int names_num);
|
|
void zbx_dc_get_expressions_by_name(zbx_vector_expression_t *expressions, const char *name);
|
|
|
|
int zbx_dc_get_data_expected_from(zbx_uint64_t itemid, int *seconds);
|
|
|
|
void zbx_dc_get_hostids_by_functionids(zbx_vector_uint64_t *functionids, zbx_vector_uint64_t *hostids);
|
|
void zbx_dc_get_hosts_by_functionids(const zbx_vector_uint64_t *functionids, zbx_hashset_t *hosts);
|
|
|
|
int zbx_dc_get_proxy_nodata_win(zbx_uint64_t hostid, zbx_proxy_suppress_t *nodata_win, int *lastaccess);
|
|
int zbx_dc_get_proxy_delay_by_name(const char *name, int *delay, char **error);
|
|
int zbx_dc_get_proxy_lastaccess_by_name(const char *name, time_t *lastaccess, char **error);
|
|
int zbx_proxy_discovery_get(char **data, char **error);
|
|
|
|
unsigned int zbx_dc_get_internal_action_count(void);
|
|
unsigned int zbx_dc_get_auto_registration_action_count(void);
|
|
|
|
/* global configuration support */
|
|
#define ZBX_DISCOVERY_GROUPID_UNDEFINED 0
|
|
void zbx_config_get(zbx_config_t *cfg, zbx_uint64_t flags);
|
|
void zbx_config_clean(zbx_config_t *cfg);
|
|
void zbx_config_get_hk_mode(unsigned char *history_mode, unsigned char *trends_mode);
|
|
|
|
int zbx_dc_set_interfaces_availability(zbx_vector_availability_ptr_t *availabilities);
|
|
|
|
int zbx_dc_reset_interfaces_availability(zbx_vector_availability_ptr_t *interfaces);
|
|
|
|
void zbx_dc_config_history_sync_get_actions_eval(zbx_vector_ptr_t *actions, unsigned char opflags);
|
|
|
|
int zbx_dc_get_interfaces_availability(zbx_vector_ptr_t *interfaces, int *ts);
|
|
void zbx_dc_touch_interfaces_availability(const zbx_vector_uint64_t *interfaceids);
|
|
|
|
void zbx_set_availability_diff_ts(int ts);
|
|
|
|
void zbx_dc_correlation_rules_init(zbx_correlation_rules_t *rules);
|
|
void zbx_dc_correlation_rules_clean(zbx_correlation_rules_t *rules);
|
|
void zbx_dc_correlation_rules_free(zbx_correlation_rules_t *rules);
|
|
void zbx_dc_correlation_rules_get(zbx_correlation_rules_t *rules);
|
|
|
|
void zbx_dc_get_nested_hostgroupids(zbx_uint64_t *groupids, int groupids_num, zbx_vector_uint64_t *nested_groupids);
|
|
void zbx_dc_get_hostids_by_group_name(const char *name, zbx_vector_uint64_t *hostids);
|
|
|
|
|
|
#define ZBX_DC_FLAG_META 0x01 /* contains meta information (lastlogsize and mtime) */
|
|
#define ZBX_DC_FLAG_NOVALUE 0x02 /* entry contains no value */
|
|
#define ZBX_DC_FLAG_LLD 0x04 /* low-level discovery value */
|
|
#define ZBX_DC_FLAG_UNDEF 0x08 /* unsupported or undefined (delta calculation failed) value */
|
|
#define ZBX_DC_FLAG_NOHISTORY 0x10 /* values should not be kept in history */
|
|
#define ZBX_DC_FLAG_NOTRENDS 0x20 /* values should not be kept in trends */
|
|
|
|
typedef struct zbx_hc_data
|
|
{
|
|
zbx_history_value_t value;
|
|
zbx_uint64_t lastlogsize;
|
|
zbx_timespec_t ts;
|
|
int mtime;
|
|
unsigned char value_type;
|
|
unsigned char flags;
|
|
unsigned char state;
|
|
|
|
struct zbx_hc_data *next;
|
|
}
|
|
zbx_hc_data_t;
|
|
|
|
typedef struct
|
|
{
|
|
zbx_uint64_t itemid;
|
|
unsigned char status;
|
|
int values_num;
|
|
|
|
zbx_hc_data_t *tail;
|
|
zbx_hc_data_t *head;
|
|
}
|
|
zbx_hc_item_t;
|
|
|
|
void zbx_free_item_tag(zbx_item_tag_t *item_tag);
|
|
|
|
int zbx_dc_get_active_proxy_by_name(const char *name, zbx_dc_proxy_t *proxy, char **error);
|
|
|
|
typedef struct
|
|
{
|
|
zbx_timespec_t ts;
|
|
char *value; /* NULL in case of meta record (see "meta" field below) */
|
|
char *source;
|
|
zbx_uint64_t lastlogsize;
|
|
zbx_uint64_t id;
|
|
int mtime;
|
|
int timestamp;
|
|
int severity;
|
|
int logeventid;
|
|
unsigned char state;
|
|
unsigned char meta; /* non-zero if contains meta information (lastlogsize and mtime) */
|
|
}
|
|
zbx_agent_value_t;
|
|
|
|
void zbx_dc_items_update_nextcheck(zbx_history_recv_item_t *items, zbx_agent_value_t *values, int *errcodes,
|
|
size_t values_num);
|
|
int zbx_dc_get_host_interfaces(zbx_uint64_t hostid, zbx_dc_interface2_t **interfaces, int *n);
|
|
|
|
void zbx_dc_update_proxy(zbx_proxy_diff_t *diff);
|
|
void zbx_dc_get_proxy_lastaccess(zbx_vector_uint64_pair_t *lastaccess);
|
|
void zbx_dc_proxy_update_nodata(zbx_vector_uint64_pair_t *subscriptions);
|
|
|
|
typedef struct
|
|
{
|
|
zbx_uint64_t triggerid;
|
|
unsigned char status;
|
|
zbx_vector_uint64_t masterids;
|
|
}
|
|
zbx_trigger_dep_t;
|
|
|
|
void zbx_dc_get_trigger_dependencies(const zbx_vector_uint64_t *triggerids, zbx_vector_ptr_t *deps);
|
|
|
|
void zbx_dc_reschedule_items(const zbx_vector_uint64_t *itemids, time_t nextcheck, zbx_uint64_t *proxyids);
|
|
|
|
/* data session support */
|
|
|
|
typedef struct
|
|
{
|
|
zbx_uint64_t hostid;
|
|
zbx_uint64_t last_id;
|
|
const char *token;
|
|
time_t lastaccess;
|
|
}
|
|
zbx_session_t;
|
|
|
|
typedef struct
|
|
{
|
|
zbx_uint64_t config; /* configuration cache revision, increased every sync */
|
|
zbx_uint64_t expression; /* global expression revision */
|
|
zbx_uint64_t autoreg_tls; /* autoregistration tls revision */
|
|
zbx_uint64_t upstream; /* configuration revision received from server */
|
|
zbx_uint64_t config_table; /* the global configuration revision (config table) */
|
|
zbx_uint64_t connector;
|
|
}
|
|
zbx_dc_revision_t;
|
|
|
|
const char *zbx_dc_get_session_token(void);
|
|
zbx_session_t *zbx_dc_get_or_create_session(zbx_uint64_t hostid, const char *token, zbx_session_type_t session_type);
|
|
|
|
int zbx_dc_register_config_session(zbx_uint64_t hostid, const char *token, zbx_uint64_t session_config_revision,
|
|
zbx_dc_revision_t *dc_revision);
|
|
|
|
void zbx_dc_cleanup_sessions(void);
|
|
|
|
void zbx_dc_cleanup_autoreg_host(void);
|
|
|
|
/* maintenance support */
|
|
typedef struct
|
|
{
|
|
zbx_uint64_t hostid;
|
|
zbx_uint64_t maintenanceid;
|
|
int maintenance_from;
|
|
unsigned char maintenance_type;
|
|
unsigned char maintenance_status;
|
|
|
|
unsigned int flags;
|
|
#define ZBX_FLAG_HOST_MAINTENANCE_UPDATE_MAINTENANCEID 0x0001
|
|
#define ZBX_FLAG_HOST_MAINTENANCE_UPDATE_MAINTENANCE_FROM 0x0002
|
|
#define ZBX_FLAG_HOST_MAINTENANCE_UPDATE_MAINTENANCE_TYPE 0x0003
|
|
#define ZBX_FLAG_HOST_MAINTENANCE_UPDATE_MAINTENANCE_STATUS 0x0004
|
|
}
|
|
zbx_host_maintenance_diff_t;
|
|
|
|
/* event maintenance query data, used to get event maintenances from cache */
|
|
typedef struct
|
|
{
|
|
zbx_uint64_t eventid; /* [IN] eventid */
|
|
zbx_uint64_t r_eventid; /* [-] recovery eventid */
|
|
zbx_uint64_t triggerid; /* [-] triggerid */
|
|
zbx_vector_uint64_t functionids; /* [IN] associated functionids */
|
|
zbx_vector_tags_t tags; /* [IN] event tags */
|
|
zbx_vector_uint64_pair_t maintenances; /* [OUT] actual maintenance data for the event in */
|
|
/* (maintenanceid, suppress_until) pairs */
|
|
}
|
|
zbx_event_suppress_query_t;
|
|
|
|
#define ZBX_MAINTENANCE_UPDATE_TRUE 1
|
|
#define ZBX_MAINTENANCE_UPDATE_FALSE 0
|
|
|
|
void zbx_event_suppress_query_free(zbx_event_suppress_query_t *query);
|
|
int zbx_dc_update_maintenances(void);
|
|
void zbx_dc_get_host_maintenance_updates(const zbx_vector_uint64_t *maintenanceids, zbx_vector_ptr_t *updates);
|
|
void zbx_dc_flush_host_maintenance_updates(const zbx_vector_ptr_t *updates);
|
|
int zbx_dc_get_event_maintenances(zbx_vector_ptr_t *event_queries, const zbx_vector_uint64_t *maintenanceids);
|
|
int zbx_dc_get_running_maintenanceids(zbx_vector_uint64_t *maintenanceids);
|
|
|
|
void zbx_dc_maintenance_set_update_flags(void);
|
|
void zbx_dc_maintenance_reset_update_flag(int timer);
|
|
int zbx_dc_maintenance_check_update_flag(int timer);
|
|
int zbx_dc_maintenance_check_update_flags(void);
|
|
|
|
int zbx_dc_maintenance_has_tags(void);
|
|
|
|
typedef struct
|
|
{
|
|
char *lld_macro;
|
|
char *path;
|
|
}
|
|
zbx_lld_macro_path_t;
|
|
|
|
ZBX_PTR_VECTOR_DECL(lld_macro_path, zbx_lld_macro_path_t *)
|
|
|
|
int zbx_lld_macro_paths_get(zbx_uint64_t lld_ruleid, zbx_vector_lld_macro_path_t *lld_macro_paths, char **error);
|
|
void zbx_lld_macro_path_free(zbx_lld_macro_path_t *lld_macro_path);
|
|
int zbx_lld_macro_value_by_name(const struct zbx_json_parse *jp_row,
|
|
const zbx_vector_lld_macro_path_t *lld_macro_paths, const char *macro, char **value);
|
|
int zbx_lld_macro_paths_compare(const void *d1, const void *d2);
|
|
|
|
void zbx_dc_get_item_tags(zbx_uint64_t itemid, zbx_vector_item_tag_t *item_tags);
|
|
void zbx_get_item_tags(zbx_uint64_t itemid, zbx_vector_item_tag_t *item_tags);
|
|
|
|
void zbx_dc_config_history_sync_get_item_tags_by_functionids(const zbx_uint64_t *functionids,
|
|
size_t functionids_num, zbx_vector_item_tag_t *item_tags);
|
|
|
|
const char *zbx_dc_get_instanceid(void);
|
|
|
|
typedef struct
|
|
{
|
|
zbx_uint64_t objectid;
|
|
zbx_uint64_t triggerid;
|
|
zbx_uint64_t hostid;
|
|
zbx_uint32_t type;
|
|
unsigned char lock; /* 1 if the timer has locked trigger, 0 otherwise */
|
|
zbx_uint64_t revision; /* revision */
|
|
time_t lastcheck;
|
|
zbx_timespec_t eval_ts; /* the history time for which trigger must be recalculated */
|
|
zbx_timespec_t check_ts; /* time when timer must be checked */
|
|
zbx_timespec_t exec_ts; /* real time when the timer must be executed */
|
|
const char *parameter; /* function parameters (for trend functions) */
|
|
}
|
|
zbx_trigger_timer_t;
|
|
|
|
void zbx_dc_reschedule_trigger_timers(zbx_vector_ptr_t *timers, int now);
|
|
void zbx_dc_get_trigger_timers(zbx_vector_ptr_t *timers, int now, int soft_limit, int hard_limit);
|
|
void zbx_dc_clear_timer_queue(zbx_vector_ptr_t *timers);
|
|
void zbx_dc_get_triggers_by_timers(zbx_hashset_t *trigger_info, zbx_vector_dc_trigger_t *trigger_order,
|
|
const zbx_vector_ptr_t *timers);
|
|
void zbx_dc_free_timers(zbx_vector_ptr_t *timers);
|
|
|
|
void zbx_get_host_interfaces_availability(zbx_uint64_t hostid, zbx_agent_availability_t *agents);
|
|
|
|
/* external user macro cache API */
|
|
|
|
typedef struct zbx_dc_um_handle_t zbx_dc_um_handle_t;
|
|
|
|
zbx_dc_um_handle_t *zbx_dc_open_user_macros(void);
|
|
zbx_dc_um_handle_t *zbx_dc_open_user_macros_secure(void);
|
|
zbx_dc_um_handle_t *zbx_dc_open_user_macros_masked(void);
|
|
|
|
void zbx_dc_close_user_macros(zbx_dc_um_handle_t *um_handle);
|
|
|
|
void zbx_dc_get_user_macro(const zbx_dc_um_handle_t *um_handle, const char *macro, const zbx_uint64_t *hostids,
|
|
int hostids_num, char **value);
|
|
|
|
int zbx_dc_expand_user_macros(const zbx_dc_um_handle_t *um_handle, char **text, const zbx_uint64_t *hostids,
|
|
int hostids_num, char **error);
|
|
int zbx_dc_expand_user_macros_from_cache(zbx_um_cache_t *um_cache, char **text, const zbx_uint64_t *hostids,
|
|
int hostids_num, char **error);
|
|
|
|
char *zbx_dc_expand_user_macros_in_func_params(const char *params, zbx_uint64_t hostid);
|
|
|
|
/* shared user macro handle can be used to share user macro handle between threads */
|
|
/* without locking configuration cache to update user macro handle reference counter */
|
|
struct zbx_dc_um_shared_handle
|
|
{
|
|
zbx_um_cache_t *um_cache;
|
|
zbx_uint64_t refcount;
|
|
};
|
|
|
|
zbx_dc_um_shared_handle_t *zbx_dc_um_shared_handle_update(zbx_dc_um_shared_handle_t *handle);
|
|
int zbx_dc_um_shared_handle_reacquire(zbx_dc_um_shared_handle_t *old_handle, zbx_dc_um_shared_handle_t *new_handle);
|
|
zbx_dc_um_shared_handle_t *zbx_dc_um_shared_handle_copy(zbx_dc_um_shared_handle_t *handle);
|
|
void zbx_dc_um_shared_handle_release(zbx_dc_um_shared_handle_t *handle);
|
|
|
|
int zbx_dc_get_proxyid_by_name(const char *name, zbx_uint64_t *proxyid, unsigned char *type);
|
|
int zbx_dc_update_passive_proxy_nextcheck(zbx_uint64_t proxyid);
|
|
|
|
typedef struct
|
|
{
|
|
zbx_uint64_t proxyid;
|
|
unsigned char mode;
|
|
char *name;
|
|
}
|
|
zbx_cached_proxy_t;
|
|
|
|
ZBX_PTR_VECTOR_DECL(cached_proxy_ptr, zbx_cached_proxy_t *)
|
|
|
|
void zbx_dc_get_all_proxies(zbx_vector_cached_proxy_ptr_t *proxies);
|
|
void zbx_cached_proxy_free(zbx_cached_proxy_t *proxy);
|
|
|
|
int zbx_dc_get_proxy_name_type_by_id(zbx_uint64_t proxyid, int *status, char **name);
|
|
|
|
/* item snmpv3 security levels */
|
|
#define ZBX_ITEM_SNMPV3_SECURITYLEVEL_NOAUTHNOPRIV 0
|
|
#define ZBX_ITEM_SNMPV3_SECURITYLEVEL_AUTHNOPRIV 1
|
|
#define ZBX_ITEM_SNMPV3_SECURITYLEVEL_AUTHPRIV 2
|
|
|
|
/* maintenance tag operators */
|
|
#define ZBX_MAINTENANCE_TAG_OPERATOR_EQUAL 0
|
|
#define ZBX_MAINTENANCE_TAG_OPERATOR_LIKE 2
|
|
|
|
/* maintenance tag evaluation types */
|
|
/* SYNC WITH PHP! */
|
|
#define ZBX_MAINTENANCE_TAG_EVAL_TYPE_AND_OR 0
|
|
#define ZBX_MAINTENANCE_TAG_EVAL_TYPE_OR 2
|
|
|
|
/* special item key used for ICMP pings */
|
|
#define ZBX_SERVER_ICMPPING_KEY "icmpping"
|
|
/* special item key used for ICMP ping latency */
|
|
#define ZBX_SERVER_ICMPPINGSEC_KEY "icmppingsec"
|
|
/* special item key used for ICMP ping loss packages */
|
|
#define ZBX_SERVER_ICMPPINGLOSS_KEY "icmppingloss"
|
|
|
|
void zbx_dc_drules_get(time_t now, zbx_vector_dc_drule_ptr_t *drules, time_t *nextcheck);
|
|
void zbx_dc_drule_queue(time_t now, zbx_uint64_t druleid, int delay);
|
|
void zbx_dc_drule_revisions_get(zbx_vector_uint64_pair_t *revisions);
|
|
|
|
int zbx_dc_httptest_next(time_t now, zbx_uint64_t *httptestid, time_t *nextcheck);
|
|
void zbx_dc_httptest_queue(time_t now, zbx_uint64_t httptestid, int delay);
|
|
|
|
zbx_uint64_t zbx_dc_get_received_revision(void);
|
|
void zbx_dc_update_received_revision(zbx_uint64_t revision);
|
|
|
|
void zbx_dc_get_proxy_config_updates(zbx_uint64_t proxyid, zbx_uint64_t revision, zbx_vector_uint64_t *hostids,
|
|
zbx_vector_uint64_t *updated_hostids, zbx_vector_uint64_t *removed_hostids,
|
|
zbx_vector_uint64_t *httptestids);
|
|
|
|
void zbx_dc_get_macro_updates(const zbx_vector_uint64_t *hostids, const zbx_vector_uint64_t *updated_hostids,
|
|
zbx_uint64_t revision, zbx_vector_uint64_t *macro_hostids, int *global,
|
|
zbx_vector_uint64_t *del_macro_hostids);
|
|
void zbx_dc_get_unused_macro_templates(zbx_hashset_t *templates, const zbx_vector_uint64_t *hostids,
|
|
zbx_vector_uint64_t *templateids);
|
|
|
|
/* maintenance */
|
|
|
|
typedef enum
|
|
{
|
|
MAINTENANCE_TYPE_NORMAL = 0,
|
|
MAINTENANCE_TYPE_NODATA
|
|
}
|
|
zbx_maintenance_type_t;
|
|
|
|
/* action statuses */
|
|
#define ZBX_ACTION_STATUS_ACTIVE 0
|
|
#define ZBX_ACTION_STATUS_DISABLED 1
|
|
|
|
/* operation types */
|
|
#define ZBX_OPERATION_TYPE_MESSAGE 0
|
|
#define ZBX_OPERATION_TYPE_COMMAND 1
|
|
#define ZBX_OPERATION_TYPE_HOST_ADD 2
|
|
#define ZBX_OPERATION_TYPE_HOST_REMOVE 3
|
|
#define ZBX_OPERATION_TYPE_GROUP_ADD 4
|
|
#define ZBX_OPERATION_TYPE_GROUP_REMOVE 5
|
|
#define ZBX_OPERATION_TYPE_TEMPLATE_ADD 6
|
|
#define ZBX_OPERATION_TYPE_TEMPLATE_REMOVE 7
|
|
#define ZBX_OPERATION_TYPE_HOST_ENABLE 8
|
|
#define ZBX_OPERATION_TYPE_HOST_DISABLE 9
|
|
#define ZBX_OPERATION_TYPE_HOST_INVENTORY 10
|
|
#define ZBX_OPERATION_TYPE_RECOVERY_MESSAGE 11
|
|
#define ZBX_OPERATION_TYPE_UPDATE_MESSAGE 12 /* OPERATION_TYPE_ACK_MESSAGE */
|
|
#define ZBX_OPERATION_TYPE_HOST_TAGS_ADD 13
|
|
#define ZBX_OPERATION_TYPE_HOST_TAGS_REMOVE 14
|
|
|
|
/* proxy_history flags */
|
|
#define ZBX_PROXY_HISTORY_FLAG_META 0x01
|
|
#define ZBX_PROXY_HISTORY_FLAG_NOVALUE 0x02
|
|
#define ZBX_PROXY_HISTORY_MASK_NOVALUE (ZBX_PROXY_HISTORY_FLAG_META | ZBX_PROXY_HISTORY_FLAG_NOVALUE)
|
|
|
|
#define ZBX_CORR_CONDITION_OLD_EVENT_TAG 0
|
|
#define ZBX_CORR_CONDITION_NEW_EVENT_TAG 1
|
|
#define ZBX_CORR_CONDITION_NEW_EVENT_HOSTGROUP 2
|
|
#define ZBX_CORR_CONDITION_EVENT_TAG_PAIR 3
|
|
#define ZBX_CORR_CONDITION_OLD_EVENT_TAG_VALUE 4
|
|
#define ZBX_CORR_CONDITION_NEW_EVENT_TAG_VALUE 5
|
|
|
|
#define ZBX_RECALC_TIME_PERIOD_HISTORY 1
|
|
#define ZBX_RECALC_TIME_PERIOD_TRENDS 2
|
|
void zbx_recalc_time_period(time_t *ts_from, int table_group);
|
|
|
|
#endif
|