设为首页 加入收藏

TOP

zabbix wait for 15s seconds 出现原因及调优建议(三)
2018-12-07 00:08:47 】 浏览:728
Tags:zabbix wait for 15s seconds 出现 原因 建议
用性数据

    //dbconfig.c
    void    zbx_host_availability_init(zbx_host_availability_t *availability, zbx_uint64_t hostid)
    {
        memset(availability, 0, sizeof(zbx_host_availability_t));
        availability->hostid = hostid;
    }

 

#5 同#4一样,只不过是OUT

 

#6 为agent_type赋值,如果agent_type不属于#1中的四种,跳至out处

    1、host_availability_agent_by_item_type 位于poller.c,接收item的type字段,用来判断监控类型
    //poller.c
        static unsigned char    host_availability_agent_by_item_type(unsigned char type)
        {
            switch (type)
            {
                case ITEM_TYPE_ZABBIX:
                    return ZBX_AGENT_ZABBIX;
                    break;
                case ITEM_TYPE_SNMPv1:
                case ITEM_TYPE_SNMPv2c:
                case ITEM_TYPE_SNMPv3:
                    return ZBX_AGENT_SNMP;
                    break;
                case ITEM_TYPE_IPMI:
                    return ZBX_AGENT_IPMI;
                    break;
                case ITEM_TYPE_JMX:
                    return ZBX_AGENT_JMX;
                    break;
                default:
                    return ZBX_AGENT_UNKNOWN;
            }
        }
    2、ZBX_AGENT_UNKNOWN 常量 为 255 对应之前的 #2

 

#7 根据agent_type来判断主机的可用性,网络设备会匹配到ZBX_AGENT_SNMP,四个值分别代表的意思是

    //poller.c
    static int    host_get_availability(const DC_HOST *dc_host, unsigned char agent, zbx_host_availability_t *ha)
    {
        zbx_agent_availability_t    *availability = &ha->agents[agent];

        availability->flags = ZBX_FLAGS_AGENT_STATUS;

        switch (agent)
        {
            case ZBX_AGENT_ZABBIX:
                availability->available = dc_host->available;
                availability->error = zbx_strdup(NULL, dc_host->error);
                availability->errors_from = dc_host->errors_from;
                availability->disable_until = dc_host->disable_until;
                break;
            case ZBX_AGENT_SNMP:
                availability->available = dc_host->snmp_available;  //主机的snmp可用状态
                availability->error = zbx_strdup(NULL, dc_host->snmp_error);  //错误信息
                availability->errors_from = dc_host->snmp_errors_from;      //错误发生时间
                availability->disable_until = dc_host->snmp_disable_until;  //下次延迟检测时间
                break;
            case ZBX_AGENT_IPMI:
                availability->available = dc_host->ipmi_available;
                availability->error = zbx_strdup(NULL, dc_host->ipmi_error);
                availability->errors_from = dc_host->ipmi_errors_from;
                availability->disable_until = dc_host->ipmi_disable_until;
                break;
            case ZBX_AGENT_JMX:
                availability->available = dc_host->jmx_available;
                availability->error = zbx_strdup(NULL, dc_host->jmx_error);
                availability->disable_until = dc_host->jmx_disable_until;
                availability->errors_from = dc_host->jmx_errors_from;
                break;
            default:
                return FAIL;
        }

        ha->hostid = dc_host->hostid;

        return SUCCEED;
    }

    //dbcache.h
    typedef struct
    {
        zbx_uint64_t    hostid;
        zbx_uint64_t    proxy_hostid;
        char        host[HOST_HOST_LEN_MAX];
        char        name[HOST_NAME_LEN * ZBX_MAX_BYTES_IN_UTF8_CHAR + 1];
        unsigned char    maintenance_status;
        unsigned char    maintenance_type;
        int        maintenance_from;
        int        errors_from;
        unsigned char    available;
        int        disable_until;
        int        snmp_errors_from;
        unsigned char    snmp_available;
        int        snmp_disable_until;
        int        ipmi_errors_from;
        unsigned char    ipmi_available;
        int        ipmi_disable_until;
        signed char    ipmi_authtype;
        unsigned char    ipmi_privilege;
        char        ipmi_username[HOST_IPMI_USERNAME_LEN_MAX];
        char        ipmi_password[HOST_IPMI_PASSWORD_LEN_MAX];
        int        jmx_errors_from;
        unsigned char    jmx_available;
        int        jmx_disable_until;
        char        inventory_mode;
        unsigned char    status;
        unsigned char    tls_connect;
        unsigned char    tls_accept;
    #if defined(HAVE_P
首页 上一页 1 2 3 4 5 6 7 下一页 尾页 3/7/7
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇移位操作 下一篇PAT (Basic Level) Practice (中..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目