package com.hotent.uc.model;

import lombok.Data;

/**
 * 主机监控项
 */
@Data
public class Item {

    /**
     * 监控项ID。
     */
    private String itemid;

    /**
     * 监控项类型。
     *
     * 可用值：
     * 0 - Zabbix agent；
     * 2 - zabbix 采集器；
     * 3 - 简单检查；
     * 5 - 内部检查；
     * 7 - Zabbix agent (主动)；
     * 9 - web 监控项；
     * 10 - 外部检查；
     * 11 - 数据库监控；
     * 12 - IPMI agent；
     * 13 - SSH agent；
     * 14 - Telnet agent；
     * 15 - 可计算的监控；
     * 16 - JMX agent；
     * 17 - SNMP trap；
     * 18 - 相关项监控；
     * 19 - HTTP agent；
     * 20 - SNMP agent；
     * 21 - 脚本。
     */
    private String type;

    /**
     *仅用于SNMPv1 and SNMPv2 监控项。
     */
    private String snmpCommunity;

    /**
     * SNMP OID
     */
    private String snmpOid;

    /**
     *监控项所属的主机或模板的 ID。
     */
    private String hostid;

    /**
     * 监控项名称。
     */
    private String name;

    /**
     *监控项关键字。
     */
    private String key_;

    /**
     * 更新监控项的时间间隔
     */
    private String delay;

    /**
     *历史数据应保留多长时间的单位。同样接受用户宏。
     *
     * 默认： 90天。
     */
    private String history;

    /**
     * 趋势数据应保留多长时间的单位。可接受用户宏。
     *
     * 默认：365天。
     */
    private String trends;

    /**
     * 监控项状态。
     *
     * 可用值：
     * 0 - （默认） 启用监控项；
     * 1 - 禁用监控项。
     */
    private String status;

    /**
     * 监控项数据类型
     *
     * 可用值：
     * 0 - 浮点型；
     * 1 - 字符；
     * 2 - 日志；
     * 3 - 无符号数字；
     * 4 - 文本。
     */
    private String valueType;

    /**
     *允许的主机。采集器监控项或 HTTP agent 监控项使用。
     */
    private String trapperHosts;

    /**
     *值的单位。
     */
    private String units;

    /**
     *SNMPv3安全名称。仅用于SNMPv3监控项
     */
    private String snmpv3Securityname;

    /**
     * SNMPv3安全等级。仅用于SNMPv3监控项。
     *
     * Possible values:
     * 0 - noAuthNoPriv;
     * 1 - authNoPriv;
     * 2 - authPriv.
     */
    private String snmpv3Securitylevel;

    /**
     * SNMPv3认证密码。仅用于SNMPv3监控项。
     */
    private String snmpv3Authpassphrase;

    /**
     * SNMPv3私钥。仅用于SNMPv3监控项。
     */
    private String snmpv3Privpassphrase;

    /**
     *
     */
    private String formula;

    /**
     * 当更新监控项出错时的错误文本
     */
    private String error;

    /**
     *
     */
    private String lastlogsize;

    /**
     * 日志条目的时间格式。仅用于日志监控项。
     */
    private String logtimefmt;

    /**
     *只读）父模板的ID。
     */
    private String templateid;

    /**
     *关联映射值的ID。
     */
    private String valuemapid;

    /**
     *取决于监控项类型的附加参数：
     * - executed script for SSH and Telnet items;
     * - SQL query for database monitor items;
     * - formula for calculated items.
     */
    private String params;

    /**
     * IPMI传感器。仅用于IPMI监控项。
     */
    private String ipmiSensor;

    /**
     * 仅在SSH agent items or HTTP agent items中使用。
     *
     * SSH agent authentication method possible values:
     * 0 - (default) password;
     * 1 - public key.
     *
     * HTTP agent authentication method possible values:
     * 0 - (default) none
     * 1 - basic
     * 2 - NTLM
     */
    private String authtype;

    /**
     *认证的用户名。用于simple check, SSH, Telnet, database monitor, JMX and HTTP agent 监控项。
     */
    private String username;

    /**
     *认证的密码
     */
    private String password;

    /**
     *公钥的文件名。
     */
    private String publickey;

    /**
     *  私钥文件名。
     */
    private String privatekey;

    /**
     * . 被监控的日志文件最后一次被更新的时间。仅泳衣日志监控项。
     */
    private String mtime;

    /**
     * (readonly) Origin of the item.
     *
     * Possible values:
     * 0 - a plain item;
     * 4 - a discovered item.
     */
    private String flags;

    /**
     *监控项主机接口的ID。 仅用于主机项。
     */
    private String interfaceid;

    /**
     *监控项监控的端口。仅用于SMNP监控项
     */
    private String port;

    /**
     *监控项说明。
     */
    private String description;

    /**
     *. 监控项填充的主机资产的ID。
     */
    private String inventoryLink;

    /**
     *
     */
    private String lifetime;

    /**
     * SNMPv3认证协议。仅用于SNMPv3监控项。
     *
     * Possible values:
     * 0 - (default) MD5;
     * 1 - SHA.
     */
    private String snmpv3Authprotocol;

    /**
     * SNMPv3文私密协议。仅用于SNMPv3监控项。
     *
     * Possible values:
     * 0 - (default) DES;
     * 1 - AES.
     */
    private String snmpv3Privprotocol;

    /**
     *(readonly) State of the item.
     *
     * Possible values:
     * 0 - (default) normal;
     * 1 - not supported.
     */
    private String state;

    /**
     *SNMPv3文本名称。仅用于SNMPv3监控项。
     */
    private String snmpv3Contextname;

    /**
     *
     */
    private String evaltype;

    /**
     *JMX agent自定义的连接字符串。
     */
    private String jmxEndpoint;

    /**
     *    Master item ID.
     */
    private String masterItemid;

    /**
     *HTTP agent监控项字段。监控项数据轮询超时时间。支持用户宏。
     */
    private String timeout;

    /**
     *URL字符串，仅HTTP agent监控项类型需要。支持用户宏
     */
    private String url;

    /**
     *HTTP agent监控项字段。查询参数。带有键值对的数组对象，值可为空。
     */
    private String queryFelds;

    /**
     *HTTP agent字段。HTTP(S)请求报文。仅用于post_type。
     */
    private String posts;

    /**
     * HTTP agent监控项字段。以逗号分隔的HTTP 状态码的范围。也支持作为逗号分隔的用户宏列表。
     */
    private String statusCodes;

    /**
     *HTTP agent 监控项字段。合并数据时跟随重定向。
     */
    private String followRedirects;

    /**
     *HTTP agent字段。存储在post属性的post的数据类型。
     */
    private String postType;

    /**
     *HTTP agent 监控项字段。HTTP(S)代理连接字符串。
     */
    private String httpProxy;

    /**
     *HTTP agent 监控项字段。带有HTTP(S)请求报头的对象，报头名为键名，报头值为值。
     */
    private String headers;

    /**
     * HTTP agent监控项字段。被存储的响应的部分。
     */
    private String retrieveMode;

    /**
     * HTTP agent监控项字段。请求方法的类型。
     *
     * 0 - GET
     * 1 - (default) POST
     * 2 - PUT
     * 3 - HEAD
     */
    private String requestMethod;

    /**
     *HTTP agent监控项字段。返回数据应被转换成JSON。
     */
    private String outputFormat;

    /**
     * HTTP agent监控项字段。公共SSL 秘钥的文件路径。
     */
    private String sslCertFile;

    /**
     * HTTP agent监控项字段。私有SLL秘钥的文件路径。
     */
    private String sslKeyFile;

    /**
     * HTTP agent监控项字段。SSL 秘钥的文件密码
     */
    private String sslKeyPassword;

    /**
     * HTTP agent字段。验证主机的合法性。
     *
     * 0 - (default) Do not validate.
     * 1 - Validate.
     */
    private String verifyPeer;

    /**
     * HTTP agent字段。验证URL中的主机名处于通用名称字段或主机证书的主题备用名称字段
     *
     * 0 - (default) Do not validate.
     * 1 - Validate.
     */
    private String verifyHost;

    /**
     *HTTP agent监控项字段。允许和trapper监控项一样的填充值。
     *
     * 0 - (default) Do not allow to accept incoming data.
     * 1 - Allow to accept incoming data.
     */
    private String allowTraps;

    /**
     *监控项最后被更新的时间。
     */
    private String lastclock;

    /**
     * 监控项最后被更新的纳秒。
     */
    private String lastns;

    /**
     * 监控项最新的值。
     */
    private String lastvalue;

    /**
     *监控项的前一个值。
     */
    private String prevvalue;
}
