diff --git a/.erda/migrations/monitor/20211101-sp_alert_notify_template.sql b/.erda/migrations/monitor/20211101-sp_alert_notify_template.sql new file mode 100644 index 00000000000..718b0a03b21 --- /dev/null +++ b/.erda/migrations/monitor/20211101-sp_alert_notify_template.sql @@ -0,0 +1,845 @@ +UPDATE `sp_alert_notify_template` SET `enable` = 0; +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("addon_elasticsearch_cpu","addon","{\"container_id\":\"string:6\",\"cpu_usage_percent_avg\":\"percent:1\",\"limit_value\":\"fraction:1\"}","ElasticSearch实例CPU使用率异常告警","dingding","【ElasticSearch实例CPU使用率异常告警】\n\n组件: {{addon_type}}\n\n实例: {{pod_namespace}} - {{pod_name}} - {{pod_ip}}\n\nCPU平均使用率: {{cpu_usage_percent_avg}}\n\nCPU限制: {{cpu_limit_value}}核\n\nCPU分配: {{cpu_allocation_value}}核\n\n集群 / 机器: {{cluster_name}} / {{host_ip}}\n\n容器ID: {{container_id}}\n\n机器: {{host_ip}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【ElasticSearch实例CPU使用率告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("addon_elasticsearch_cpu","addon","{\"container_id\":\"string:6\",\"cpu_usage_percent_avg\":\"percent:1\",\"limit_value\":\"fraction:1\"}","ElasticSearch实例CPU使用率异常告警","ticket","【ElasticSearch实例CPU使用率异常告警】\n\n组件: {{addon_type}}\n\n实例: {{pod_namespace}} - {{pod_name}} - {{pod_ip}}\n\nCPU平均使用率: {{cpu_usage_percent_avg}}\n\nCPU限制: {{cpu_limit_value}}核\n\nCPU分配: {{cpu_allocation_value}}核\n\n集群 / 机器: {{cluster_name}} / {{host_ip}}\n\n容器ID: {{container_id}}\n\n机器: {{host_ip}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【ElasticSearch实例CPU使用率告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("addon_elasticsearch_cpu","addon","{\"container_id\":\"string:6\",\"cpu_usage_percent_avg\":\"percent:1\",\"limit_value\":\"fraction:1\"}","ElasticSearch实例CPU使用率异常告警","email","【ElasticSearch实例CPU使用率异常告警】\n\n组件: {{addon_type}}\n\n实例: {{pod_namespace}} - {{pod_name}} - {{pod_ip}}\n\nCPU平均使用率: {{cpu_usage_percent_avg}}\n\nCPU限制: {{cpu_limit_value}}核\n\nCPU分配: {{cpu_allocation_value}}核\n\n集群 / 机器: {{cluster_name}} / {{host_ip}}\n\n容器ID: {{container_id}}\n\n机器: {{host_ip}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【ElasticSearch实例CPU使用率告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("addon_elasticsearch_cpu","addon","{\"container_id\":\"string:6\",\"cpu_usage_percent_avg\":\"percent:1\",\"limit_value\":\"fraction:1\"}","ElasticSearch实例CPU使用率异常告警","mbox","【ElasticSearch实例CPU使用率异常告警】\n\n组件: {{addon_type}}\n\n实例: {{pod_namespace}} - {{pod_name}} - {{pod_ip}}\n\nCPU平均使用率: {{cpu_usage_percent_avg}}\n\nCPU限制: {{cpu_limit_value}}核\n\nCPU分配: {{cpu_allocation_value}}核\n\n集群 / 机器: {{cluster_name}} / {{host_ip}}\n\n容器ID: {{container_id}}\n\n机器: {{host_ip}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【ElasticSearch实例CPU使用率告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("addon_elasticsearch_cpu","addon","{\"container_id\":\"string:6\",\"cpu_usage_percent_avg\":\"percent:1\",\"limit_value\":\"fraction:1\"}","ElasticSearch实例CPU使用率异常告警","webhook","【ElasticSearch实例CPU使用率异常告警】\n\n组件: {{addon_type}}\n\n实例: {{pod_namespace}} - {{pod_name}} - {{pod_ip}}\n\nCPU平均使用率: {{cpu_usage_percent_avg}}\n\nCPU限制: {{cpu_limit_value}}核\n\nCPU分配: {{cpu_allocation_value}}核\n\n集群 / 机器: {{cluster_name}} / {{host_ip}}\n\n容器ID: {{container_id}}\n\n机器: {{host_ip}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【ElasticSearch实例CPU使用率告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("addon_elasticsearch_cpu","addon","{\"container_id\":\"string:6\",\"cpu_usage_percent_avg\":\"percent:1\",\"limit_value\":\"fraction:1\"}","ElasticSearch实例CPU使用率异常告警","sms","{{project_name}}项目ElasticSearch实例{{pod_name}}触发CPU使用率告警,组织名称:{{org_name}},CPU平均使用率:{{cpu_usage_percent_avg}}\n","【ElasticSearch实例CPU使用率告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("addon_elasticsearch_cpu","addon","{\"container_id\":\"string:6\",\"cpu_usage_percent_avg\":\"percent:1\",\"limit_value\":\"fraction:1\"}","ElasticSearch实例CPU使用率异常告警","vms","{{project_name}}项目ElasticSearch实例{{pod_name}}触发CPU使用率告警,组织名称:{{org_name}},CPU平均使用率:{{cpu_usage_percent_avg}}\n","【ElasticSearch实例CPU使用率异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("addon_elasticsearch_cpu","addon","{\"container_id\":\"string:6\",\"cpu_usage_percent_avg\":\"percent:1\",\"limit_value\":\"fraction:1\"}","ElasticSearch实例CPU使用率异常恢复","dingding","【ElasticSearch实例CPU使用率恢复】\n\n组件: {{addon_type}}\n\n实例: {{pod_namespace}} - {{pod_name}} - {{pod_ip}}\n\nCPU平均使用率: {{cpu_usage_percent_avg}}\n\n集群 / 机器: {{cluster_name}} / {{host_ip}}\n\n容器ID: {{container_id}}\n\n机器: {{host_ip}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【ElasticSearch实例CPU使用率恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("addon_elasticsearch_cpu","addon","{\"container_id\":\"string:6\",\"cpu_usage_percent_avg\":\"percent:1\",\"limit_value\":\"fraction:1\"}","ElasticSearch实例CPU使用率异常恢复","ticket","【ElasticSearch实例CPU使用率恢复】\n\n组件: {{addon_type}}\n\n实例: {{pod_namespace}} - {{pod_name}} - {{pod_ip}}\n\nCPU平均使用率: {{cpu_usage_percent_avg}}\n\n集群 / 机器: {{cluster_name}} / {{host_ip}}\n\n容器ID: {{container_id}}\n\n机器: {{host_ip}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【ElasticSearch实例CPU使用率恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("addon_elasticsearch_cpu","addon","{\"container_id\":\"string:6\",\"cpu_usage_percent_avg\":\"percent:1\",\"limit_value\":\"fraction:1\"}","ElasticSearch实例CPU使用率异常恢复","email","【ElasticSearch实例CPU使用率恢复】\n\n组件: {{addon_type}}\n\n实例: {{pod_namespace}} - {{pod_name}} - {{pod_ip}}\n\nCPU平均使用率: {{cpu_usage_percent_avg}}\n\n集群 / 机器: {{cluster_name}} / {{host_ip}}\n\n容器ID: {{container_id}}\n\n机器: {{host_ip}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【ElasticSearch实例CPU使用率恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("addon_elasticsearch_cpu","addon","{\"container_id\":\"string:6\",\"cpu_usage_percent_avg\":\"percent:1\",\"limit_value\":\"fraction:1\"}","ElasticSearch实例CPU使用率异常恢复","mbox","【ElasticSearch实例CPU使用率恢复】\n\n组件: {{addon_type}}\n\n实例: {{pod_namespace}} - {{pod_name}} - {{pod_ip}}\n\nCPU平均使用率: {{cpu_usage_percent_avg}}\n\n集群 / 机器: {{cluster_name}} / {{host_ip}}\n\n容器ID: {{container_id}}\n\n机器: {{host_ip}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【ElasticSearch实例CPU使用率恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("addon_elasticsearch_cpu","addon","{\"container_id\":\"string:6\",\"cpu_usage_percent_avg\":\"percent:1\",\"limit_value\":\"fraction:1\"}","ElasticSearch实例CPU使用率异常恢复","webhook","【ElasticSearch实例CPU使用率恢复】\n\n组件: {{addon_type}}\n\n实例: {{pod_namespace}} - {{pod_name}} - {{pod_ip}}\n\nCPU平均使用率: {{cpu_usage_percent_avg}}\n\n集群 / 机器: {{cluster_name}} / {{host_ip}}\n\n容器ID: {{container_id}}\n\n机器: {{host_ip}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【ElasticSearch实例CPU使用率恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("addon_elasticsearch_cpu","addon","{\"container_id\":\"string:6\",\"cpu_usage_percent_avg\":\"percent:1\",\"limit_value\":\"fraction:1\"}","ElasticSearch实例CPU使用率异常恢复","sms","{{project_name}}项目ElasticSearch实例{{pod_name}}CPU使用率告警恢复,组织名称:{{org_name}},CPU平均使用率:{{cpu_usage_percent_avg}}\n","【ElasticSearch实例CPU使用率恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("addon_elasticsearch_cpu","addon","{\"container_id\":\"string:6\",\"cpu_usage_percent_avg\":\"percent:1\",\"limit_value\":\"fraction:1\"}","ElasticSearch实例CPU使用率异常恢复","vms","{{project_name}}项目ElasticSearch实例{{pod_name}}CPU使用率告警恢复,组织名称:{{org_name}},CPU平均使用率:{{cpu_usage_percent_avg}}\n","【ElasticSearch实例CPU使用率恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("addon_elasticsearch_mem","addon","{\"container_id\":\"string:6\",\"mem_limit_value\":\"fraction:1\",\"mem_usage_percent_avg\":\"percent:1\"}","Elasticsearch实例内存使用率异常告警","dingding","【Elasticsearch实例内存使用率告警】\n\n组件: {{addon_type}}\n\n实例ID: {{addon_id}}\n\n实例: {{pod_namespace}} - {{pod_name}} - {{pod_ip}}\n\n平均使用率: {{mem_usage_percent_avg}}\n\n集群 / 机器: {{cluster_name}} / {{host_ip}}\n\n容器ID: {{container_id}}\n\n机器: {{host_ip}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【Elasticsearch实例内存使用率告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("addon_elasticsearch_mem","addon","{\"container_id\":\"string:6\",\"mem_limit_value\":\"fraction:1\",\"mem_usage_percent_avg\":\"percent:1\"}","Elasticsearch实例内存使用率异常告警","ticket","【Elasticsearch实例内存使用率告警】\n\n组件: {{addon_type}}\n\n实例ID: {{addon_id}}\n\n实例: {{pod_namespace}} - {{pod_name}} - {{pod_ip}}\n\n平均使用率: {{mem_usage_percent_avg}}\n\n集群 / 机器: {{cluster_name}} / {{host_ip}}\n\n容器ID: {{container_id}}\n\n机器: {{host_ip}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【Elasticsearch实例内存使用率告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("addon_elasticsearch_mem","addon","{\"container_id\":\"string:6\",\"mem_limit_value\":\"fraction:1\",\"mem_usage_percent_avg\":\"percent:1\"}","Elasticsearch实例内存使用率异常告警","email","【Elasticsearch实例内存使用率告警】\n\n组件: {{addon_type}}\n\n实例ID: {{addon_id}}\n\n实例: {{pod_namespace}} - {{pod_name}} - {{pod_ip}}\n\n平均使用率: {{mem_usage_percent_avg}}\n\n集群 / 机器: {{cluster_name}} / {{host_ip}}\n\n容器ID: {{container_id}}\n\n机器: {{host_ip}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【Elasticsearch实例内存使用率告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("addon_elasticsearch_mem","addon","{\"container_id\":\"string:6\",\"mem_limit_value\":\"fraction:1\",\"mem_usage_percent_avg\":\"percent:1\"}","Elasticsearch实例内存使用率异常告警","mbox","【Elasticsearch实例内存使用率告警】\n\n组件: {{addon_type}}\n\n实例ID: {{addon_id}}\n\n实例: {{pod_namespace}} - {{pod_name}} - {{pod_ip}}\n\n平均使用率: {{mem_usage_percent_avg}}\n\n集群 / 机器: {{cluster_name}} / {{host_ip}}\n\n容器ID: {{container_id}}\n\n机器: {{host_ip}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【Elasticsearch实例内存使用率告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("addon_elasticsearch_mem","addon","{\"container_id\":\"string:6\",\"mem_limit_value\":\"fraction:1\",\"mem_usage_percent_avg\":\"percent:1\"}","Elasticsearch实例内存使用率异常告警","webhook","【Elasticsearch实例内存使用率告警】\n\n组件: {{addon_type}}\n\n实例ID: {{addon_id}}\n\n实例: {{pod_namespace}} - {{pod_name}} - {{pod_ip}}\n\n平均使用率: {{mem_usage_percent_avg}}\n\n集群 / 机器: {{cluster_name}} / {{host_ip}}\n\n容器ID: {{container_id}}\n\n机器: {{host_ip}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【Elasticsearch实例内存使用率告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("addon_elasticsearch_mem","addon","{\"container_id\":\"string:6\",\"mem_limit_value\":\"fraction:1\",\"mem_usage_percent_avg\":\"percent:1\"}","Elasticsearch实例内存使用率异常告警","sms","{{project_name}}项目ElasticSearch实例{{pod_name}}触发内存使用率异常告警,组织名称:{{org_name}},平均使用率:{{mem_usage_percent_avg}}\n","【Elasticsearch实例内存使用率告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("addon_elasticsearch_mem","addon","{\"container_id\":\"string:6\",\"mem_limit_value\":\"fraction:1\",\"mem_usage_percent_avg\":\"percent:1\"}","Elasticsearch实例内存使用率异常告警","vms","{{project_name}}项目ElasticSearch实例{{pod_name}}触发内存使用率异常告警,组织名称:{{org_name}},平均使用率:{{mem_usage_percent_avg}}\n","【Elasticsearch实例内存使用率告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("addon_elasticsearch_mem","addon","{\"container_id\":\"string:6\",\"mem_limit_value\":\"fraction:1\",\"mem_usage_percent_avg\":\"percent:1\"}","Elasticsearch实例内存使用率异常恢复","dingding","【Elasticsearch实例内存使用率恢复】\n\n组件: {{addon_type}}\n\n实例ID: {{addon_id}}\n\n实例: {{pod_namespace}} - {{pod_name}} - {{pod_ip}}\n\n平均使用率: {{mem_usage_percent_avg}}\n\n集群 / 机器: {{cluster_name}} / {{host_ip}}\n\n容器ID: {{container_id}}\n\n机器: {{host_ip}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【Elasticsearch实例内存使用率恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("addon_elasticsearch_mem","addon","{\"container_id\":\"string:6\",\"mem_limit_value\":\"fraction:1\",\"mem_usage_percent_avg\":\"percent:1\"}","Elasticsearch实例内存使用率异常恢复","ticket","【Elasticsearch实例内存使用率恢复】\n\n组件: {{addon_type}}\n\n实例ID: {{addon_id}}\n\n实例: {{pod_namespace}} - {{pod_name}} - {{pod_ip}}\n\n平均使用率: {{mem_usage_percent_avg}}\n\n集群 / 机器: {{cluster_name}} / {{host_ip}}\n\n容器ID: {{container_id}}\n\n机器: {{host_ip}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【Elasticsearch实例内存使用率恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("addon_elasticsearch_mem","addon","{\"container_id\":\"string:6\",\"mem_limit_value\":\"fraction:1\",\"mem_usage_percent_avg\":\"percent:1\"}","Elasticsearch实例内存使用率异常恢复","email","【Elasticsearch实例内存使用率恢复】\n\n组件: {{addon_type}}\n\n实例ID: {{addon_id}}\n\n实例: {{pod_namespace}} - {{pod_name}} - {{pod_ip}}\n\n平均使用率: {{mem_usage_percent_avg}}\n\n集群 / 机器: {{cluster_name}} / {{host_ip}}\n\n容器ID: {{container_id}}\n\n机器: {{host_ip}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【Elasticsearch实例内存使用率恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("addon_elasticsearch_mem","addon","{\"container_id\":\"string:6\",\"mem_limit_value\":\"fraction:1\",\"mem_usage_percent_avg\":\"percent:1\"}","Elasticsearch实例内存使用率异常恢复","mbox","【Elasticsearch实例内存使用率恢复】\n\n组件: {{addon_type}}\n\n实例ID: {{addon_id}}\n\n实例: {{pod_namespace}} - {{pod_name}} - {{pod_ip}}\n\n平均使用率: {{mem_usage_percent_avg}}\n\n集群 / 机器: {{cluster_name}} / {{host_ip}}\n\n容器ID: {{container_id}}\n\n机器: {{host_ip}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【Elasticsearch实例内存使用率恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("addon_elasticsearch_mem","addon","{\"container_id\":\"string:6\",\"mem_limit_value\":\"fraction:1\",\"mem_usage_percent_avg\":\"percent:1\"}","Elasticsearch实例内存使用率异常恢复","webhook","【Elasticsearch实例内存使用率恢复】\n\n组件: {{addon_type}}\n\n实例ID: {{addon_id}}\n\n实例: {{pod_namespace}} - {{pod_name}} - {{pod_ip}}\n\n平均使用率: {{mem_usage_percent_avg}}\n\n集群 / 机器: {{cluster_name}} / {{host_ip}}\n\n容器ID: {{container_id}}\n\n机器: {{host_ip}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【Elasticsearch实例内存使用率恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("addon_elasticsearch_mem","addon","{\"container_id\":\"string:6\",\"mem_limit_value\":\"fraction:1\",\"mem_usage_percent_avg\":\"percent:1\"}","Elasticsearch实例内存使用率异常恢复","sms","{{project_name}}项目ElasticSearch实例{{pod_name}}触发内存使用率异常告警恢复,组织名称: {{org_name}},平均使用率:{{mem_usage_percent_avg}}\n","【Elasticsearch实例内存使用率恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("addon_elasticsearch_mem","addon","{\"container_id\":\"string:6\",\"mem_limit_value\":\"fraction:1\",\"mem_usage_percent_avg\":\"percent:1\"}","Elasticsearch实例内存使用率异常恢复","vms","{{project_name}}项目ElasticSearch实例{{pod_name}}触发内存使用率异常告警恢复,平均使用率:{{mem_usage_percent_avg}}\n","【Elasticsearch实例内存使用率恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("addon_mysql_cpu","addon","{\"container_id\":\"string:6\",\"cpu_limit_value\":\"fraction:1\",\"cpu_usage_percent_avg\":\"percent:1\"}","MySQL实例CPU使用率异常告警","dingding","【MySQL实例CPU使用率异常告警】\n\n组件: {{addon_type}}\n\n实例: {{pod_namespace}} - {{pod_name}} - {{pod_ip}}\n\nCPU平均使用率: {{cpu_usage_percent_avg}}\n\nCPU限制: {{cpu_limit_value}}核\n\nCPU分配: {{cpu_allocation_value}}核\n\n集群 / 机器: {{cluster_name}} / {{host_ip}}\n\n容器ID: {{container_id}}\n\n机器: {{host_ip}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【MySQL实例CPU使用率异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("addon_mysql_cpu","addon","{\"container_id\":\"string:6\",\"cpu_limit_value\":\"fraction:1\",\"cpu_usage_percent_avg\":\"percent:1\"}","MySQL实例CPU使用率异常告警","ticket","【MySQL实例CPU使用率异常告警】\n\n组件: {{addon_type}}\n\n实例: {{pod_namespace}} - {{pod_name}} - {{pod_ip}}\n\nCPU平均使用率: {{cpu_usage_percent_avg}}\n\nCPU限制: {{cpu_limit_value}}核\n\nCPU分配: {{cpu_allocation_value}}核\n\n集群 / 机器: {{cluster_name}} / {{host_ip}}\n\n容器ID: {{container_id}}\n\n机器: {{host_ip}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【MySQL实例CPU使用率异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("addon_mysql_cpu","addon","{\"container_id\":\"string:6\",\"cpu_limit_value\":\"fraction:1\",\"cpu_usage_percent_avg\":\"percent:1\"}","MySQL实例CPU使用率异常告警","email","【MySQL实例CPU使用率异常告警】\n\n组件: {{addon_type}}\n\n实例: {{pod_namespace}} - {{pod_name}} - {{pod_ip}}\n\nCPU平均使用率: {{cpu_usage_percent_avg}}\n\nCPU限制: {{cpu_limit_value}}核\n\nCPU分配: {{cpu_allocation_value}}核\n\n集群 / 机器: {{cluster_name}} / {{host_ip}}\n\n容器ID: {{container_id}}\n\n机器: {{host_ip}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【MySQL实例CPU使用率异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("addon_mysql_cpu","addon","{\"container_id\":\"string:6\",\"cpu_limit_value\":\"fraction:1\",\"cpu_usage_percent_avg\":\"percent:1\"}","MySQL实例CPU使用率异常告警","mbox","【MySQL实例CPU使用率异常告警】\n\n组件: {{addon_type}}\n\n实例: {{pod_namespace}} - {{pod_name}} - {{pod_ip}}\n\nCPU平均使用率: {{cpu_usage_percent_avg}}\n\nCPU限制: {{cpu_limit_value}}核\n\nCPU分配: {{cpu_allocation_value}}核\n\n集群 / 机器: {{cluster_name}} / {{host_ip}}\n\n容器ID: {{container_id}}\n\n机器: {{host_ip}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【MySQL实例CPU使用率异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("addon_mysql_cpu","addon","{\"container_id\":\"string:6\",\"cpu_limit_value\":\"fraction:1\",\"cpu_usage_percent_avg\":\"percent:1\"}","MySQL实例CPU使用率异常告警","webhook","【MySQL实例CPU使用率异常告警】\n\n组件: {{addon_type}}\n\n实例: {{pod_namespace}} - {{pod_name}} - {{pod_ip}}\n\nCPU平均使用率: {{cpu_usage_percent_avg}}\n\nCPU限制: {{cpu_limit_value}}核\n\nCPU分配: {{cpu_allocation_value}}核\n\n集群 / 机器: {{cluster_name}} / {{host_ip}}\n\n容器ID: {{container_id}}\n\n机器: {{host_ip}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【MySQL实例CPU使用率异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("addon_mysql_cpu","addon","{\"container_id\":\"string:6\",\"cpu_limit_value\":\"fraction:1\",\"cpu_usage_percent_avg\":\"percent:1\"}","MySQL实例CPU使用率异常告警","sms","{{project_name}}项目MySQL实例{{pod_name}}触发CPU使用率异常告警,组织名称:{{org_name}},平均使用率:{{cpu_usage_percent_avg}}\n","【MySQL实例CPU使用率异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("addon_mysql_cpu","addon","{\"container_id\":\"string:6\",\"cpu_limit_value\":\"fraction:1\",\"cpu_usage_percent_avg\":\"percent:1\"}","MySQL实例CPU使用率异常告警","vms","{{project_name}}项目MySQL实例{{pod_name}}触发CPU使用率异常告警,组织名称:{{org_name}},平均使用率:{{cpu_usage_percent_avg}}\n","【MySQL实例CPU使用率异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("addon_mysql_cpu","addon","{\"container_id\":\"string:6\",\"cpu_limit_value\":\"fraction:1\",\"cpu_usage_percent_avg\":\"percent:1\"}","MySQL实例CPU使用率异常恢复","dingding","【MySQL实例CPU使用率异常恢复】\n\n组件: {{addon_type}}\n\n实例: {{pod_namespace}} - {{pod_name}} - {{pod_ip}}\n\nCPU平均使用率: {{cpu_usage_percent_avg}}\n\n集群 / 机器: {{cluster_name}} / {{host_ip}}\n\n容器ID: {{container_id}}\n\n机器: {{host_ip}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【MySQL实例CPU使用率异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("addon_mysql_cpu","addon","{\"container_id\":\"string:6\",\"cpu_limit_value\":\"fraction:1\",\"cpu_usage_percent_avg\":\"percent:1\"}","MySQL实例CPU使用率异常恢复","ticket","【MySQL实例CPU使用率异常恢复】\n\n组件: {{addon_type}}\n\n实例: {{pod_namespace}} - {{pod_name}} - {{pod_ip}}\n\nCPU平均使用率: {{cpu_usage_percent_avg}}\n\n集群 / 机器: {{cluster_name}} / {{host_ip}}\n\n容器ID: {{container_id}}\n\n机器: {{host_ip}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【MySQL实例CPU使用率异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("addon_mysql_cpu","addon","{\"container_id\":\"string:6\",\"cpu_limit_value\":\"fraction:1\",\"cpu_usage_percent_avg\":\"percent:1\"}","MySQL实例CPU使用率异常恢复","email","【MySQL实例CPU使用率异常恢复】\n\n组件: {{addon_type}}\n\n实例: {{pod_namespace}} - {{pod_name}} - {{pod_ip}}\n\nCPU平均使用率: {{cpu_usage_percent_avg}}\n\n集群 / 机器: {{cluster_name}} / {{host_ip}}\n\n容器ID: {{container_id}}\n\n机器: {{host_ip}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【MySQL实例CPU使用率异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("addon_mysql_cpu","addon","{\"container_id\":\"string:6\",\"cpu_limit_value\":\"fraction:1\",\"cpu_usage_percent_avg\":\"percent:1\"}","MySQL实例CPU使用率异常恢复","mbox","【MySQL实例CPU使用率异常恢复】\n\n组件: {{addon_type}}\n\n实例: {{pod_namespace}} - {{pod_name}} - {{pod_ip}}\n\nCPU平均使用率: {{cpu_usage_percent_avg}}\n\n集群 / 机器: {{cluster_name}} / {{host_ip}}\n\n容器ID: {{container_id}}\n\n机器: {{host_ip}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【MySQL实例CPU使用率异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("addon_mysql_cpu","addon","{\"container_id\":\"string:6\",\"cpu_limit_value\":\"fraction:1\",\"cpu_usage_percent_avg\":\"percent:1\"}","MySQL实例CPU使用率异常恢复","webhook","【MySQL实例CPU使用率异常恢复】\n\n组件: {{addon_type}}\n\n实例: {{pod_namespace}} - {{pod_name}} - {{pod_ip}}\n\nCPU平均使用率: {{cpu_usage_percent_avg}}\n\n集群 / 机器: {{cluster_name}} / {{host_ip}}\n\n容器ID: {{container_id}}\n\n机器: {{host_ip}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【MySQL实例CPU使用率异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("addon_mysql_cpu","addon","{\"container_id\":\"string:6\",\"cpu_limit_value\":\"fraction:1\",\"cpu_usage_percent_avg\":\"percent:1\"}","MySQL实例CPU使用率异常恢复","sms","{{project_name}}MySQL实例{{pod_name}}CPU使用率异常恢复,组织名称:{{org_name}},CPU平均使用率: {{cpu_usage_percent_avg}}\n","【MySQL实例CPU使用率异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("addon_mysql_cpu","addon","{\"container_id\":\"string:6\",\"cpu_limit_value\":\"fraction:1\",\"cpu_usage_percent_avg\":\"percent:1\"}","MySQL实例CPU使用率异常恢复","vms","{{project_name}}MySQL实例{{pod_name}}CPU使用率异常恢复,组织名称:{{org_name}},CPU平均使用率: {{cpu_usage_percent_avg}}\n","【MySQL实例CPU使用率异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("addon_mysql_mem","addon","{\"container_id\":\"string:6\",\"mem_limit_value\":\"fraction:1\",\"mem_usage_percent_avg\":\"percent:1\"}","MySQL实例内存使用率异常告警","dingding","【MySQL实例内存使用率异常告警】\n\n组件: {{addon_type}}\n\n实例ID: {{addon_id}}\n\n实例: {{pod_namespace}} - {{pod_name}} - {{pod_ip}}\n\n平均使用率: {{mem_usage_percent_avg}}\n\n集群 / 机器: {{cluster_name}} / {{host_ip}}\n\n容器ID: {{container_id}}\n\n机器: {{host_ip}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【MySQL实例内存使用率异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("addon_mysql_mem","addon","{\"container_id\":\"string:6\",\"mem_limit_value\":\"fraction:1\",\"mem_usage_percent_avg\":\"percent:1\"}","MySQL实例内存使用率异常告警","ticket","【MySQL实例内存使用率异常告警】\n\n组件: {{addon_type}}\n\n实例ID: {{addon_id}}\n\n实例: {{pod_namespace}} - {{pod_name}} - {{pod_ip}}\n\n平均使用率: {{mem_usage_percent_avg}}\n\n集群 / 机器: {{cluster_name}} / {{host_ip}}\n\n容器ID: {{container_id}}\n\n机器: {{host_ip}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【MySQL实例内存使用率异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("addon_mysql_mem","addon","{\"container_id\":\"string:6\",\"mem_limit_value\":\"fraction:1\",\"mem_usage_percent_avg\":\"percent:1\"}","MySQL实例内存使用率异常告警","email","【MySQL实例内存使用率异常告警】\n\n组件: {{addon_type}}\n\n实例ID: {{addon_id}}\n\n实例: {{pod_namespace}} - {{pod_name}} - {{pod_ip}}\n\n平均使用率: {{mem_usage_percent_avg}}\n\n集群 / 机器: {{cluster_name}} / {{host_ip}}\n\n容器ID: {{container_id}}\n\n机器: {{host_ip}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【MySQL实例内存使用率异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("addon_mysql_mem","addon","{\"container_id\":\"string:6\",\"mem_limit_value\":\"fraction:1\",\"mem_usage_percent_avg\":\"percent:1\"}","MySQL实例内存使用率异常告警","mbox","【MySQL实例内存使用率异常告警】\n\n组件: {{addon_type}}\n\n实例ID: {{addon_id}}\n\n实例: {{pod_namespace}} - {{pod_name}} - {{pod_ip}}\n\n平均使用率: {{mem_usage_percent_avg}}\n\n集群 / 机器: {{cluster_name}} / {{host_ip}}\n\n容器ID: {{container_id}}\n\n机器: {{host_ip}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【MySQL实例内存使用率异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("addon_mysql_mem","addon","{\"container_id\":\"string:6\",\"mem_limit_value\":\"fraction:1\",\"mem_usage_percent_avg\":\"percent:1\"}","MySQL实例内存使用率异常告警","webhook","【MySQL实例内存使用率异常告警】\n\n组件: {{addon_type}}\n\n实例ID: {{addon_id}}\n\n实例: {{pod_namespace}} - {{pod_name}} - {{pod_ip}}\n\n平均使用率: {{mem_usage_percent_avg}}\n\n集群 / 机器: {{cluster_name}} / {{host_ip}}\n\n容器ID: {{container_id}}\n\n机器: {{host_ip}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【MySQL实例内存使用率异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("addon_mysql_mem","addon","{\"container_id\":\"string:6\",\"mem_limit_value\":\"fraction:1\",\"mem_usage_percent_avg\":\"percent:1\"}","MySQL实例内存使用率异常告警","sms","{{project_name}}项目MySQL实例{{pod_name}}触发内存使用率异常告警,组织名称:{{org_name}},平均使用率:{{mem_usage_percent_avg}}\n","【MySQL实例内存使用率异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("addon_mysql_mem","addon","{\"container_id\":\"string:6\",\"mem_limit_value\":\"fraction:1\",\"mem_usage_percent_avg\":\"percent:1\"}","MySQL实例内存使用率异常告警","vms","{{project_name}}项目MySQL实例{{pod_name}}触发内存使用率异常告警,组织名称:{{org_name}},平均使用率:{{mem_usage_percent_avg}}\n","【MySQL实例内存使用率异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("addon_mysql_mem","addon","{\"container_id\":\"string:6\",\"mem_limit_value\":\"fraction:1\",\"mem_usage_percent_avg\":\"percent:1\"}","MySQL实例内存使用率异常恢复","dingding","【MySQL实例内存使用率异常恢复】\n\n组件: {{addon_type}}\n\n实例ID: {{addon_id}}\n\n实例: {{pod_namespace}} - {{pod_name}} - {{pod_ip}}\n\n平均使用率: {{mem_usage_percent_avg}}\n\n集群 / 机器: {{cluster_name}} / {{host_ip}}\n\n容器ID: {{container_id}}\n\n机器: {{host_ip}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【MySQL实例内存使用率异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("addon_mysql_mem","addon","{\"container_id\":\"string:6\",\"mem_limit_value\":\"fraction:1\",\"mem_usage_percent_avg\":\"percent:1\"}","MySQL实例内存使用率异常恢复","ticket","【MySQL实例内存使用率异常恢复】\n\n组件: {{addon_type}}\n\n实例ID: {{addon_id}}\n\n实例: {{pod_namespace}} - {{pod_name}} - {{pod_ip}}\n\n平均使用率: {{mem_usage_percent_avg}}\n\n集群 / 机器: {{cluster_name}} / {{host_ip}}\n\n容器ID: {{container_id}}\n\n机器: {{host_ip}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【MySQL实例内存使用率异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("addon_mysql_mem","addon","{\"container_id\":\"string:6\",\"mem_limit_value\":\"fraction:1\",\"mem_usage_percent_avg\":\"percent:1\"}","MySQL实例内存使用率异常恢复","email","【MySQL实例内存使用率异常恢复】\n\n组件: {{addon_type}}\n\n实例ID: {{addon_id}}\n\n实例: {{pod_namespace}} - {{pod_name}} - {{pod_ip}}\n\n平均使用率: {{mem_usage_percent_avg}}\n\n集群 / 机器: {{cluster_name}} / {{host_ip}}\n\n容器ID: {{container_id}}\n\n机器: {{host_ip}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【MySQL实例内存使用率异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("addon_mysql_mem","addon","{\"container_id\":\"string:6\",\"mem_limit_value\":\"fraction:1\",\"mem_usage_percent_avg\":\"percent:1\"}","MySQL实例内存使用率异常恢复","mbox","【MySQL实例内存使用率异常恢复】\n\n组件: {{addon_type}}\n\n实例ID: {{addon_id}}\n\n实例: {{pod_namespace}} - {{pod_name}} - {{pod_ip}}\n\n平均使用率: {{mem_usage_percent_avg}}\n\n集群 / 机器: {{cluster_name}} / {{host_ip}}\n\n容器ID: {{container_id}}\n\n机器: {{host_ip}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【MySQL实例内存使用率异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("addon_mysql_mem","addon","{\"container_id\":\"string:6\",\"mem_limit_value\":\"fraction:1\",\"mem_usage_percent_avg\":\"percent:1\"}","MySQL实例内存使用率异常恢复","webhook","【MySQL实例内存使用率异常恢复】\n\n组件: {{addon_type}}\n\n实例ID: {{addon_id}}\n\n实例: {{pod_namespace}} - {{pod_name}} - {{pod_ip}}\n\n平均使用率: {{mem_usage_percent_avg}}\n\n集群 / 机器: {{cluster_name}} / {{host_ip}}\n\n容器ID: {{container_id}}\n\n机器: {{host_ip}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【MySQL实例内存使用率异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("addon_mysql_mem","addon","{\"container_id\":\"string:6\",\"mem_limit_value\":\"fraction:1\",\"mem_usage_percent_avg\":\"percent:1\"}","MySQL实例内存使用率异常恢复","sms","{{project_name}}项目MySQL实例{{pod_name}}触发内存使用率异常告警恢复,组织名称:{{org_name}},平均使用率:{{mem_usage_percent_avg}}\n","【MySQL实例内存使用率异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("addon_mysql_mem","addon","{\"container_id\":\"string:6\",\"mem_limit_value\":\"fraction:1\",\"mem_usage_percent_avg\":\"percent:1\"}","MySQL实例内存使用率异常恢复","vms","{{project_name}}项目MySQL实例{{pod_name}}触发内存使用率异常告警恢复,组织名称:{{org_name}},平均使用率:{{mem_usage_percent_avg}}\n","【MySQL实例内存使用率异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("addon_mysql_slave_status","addon","{\"limit_value\":\"fraction:1\",\"usage_percent_avg\":\"percent:1\"}","MySQL实例主从同步异常告警","dingding","【MySQL实例主从同步异常】\n\n组件: \"mysql\"\n\n实例ID: {{addon_id}}\n\n从节点IO异常状态: {{slave_slave_io_running_value}}\n\n从节点连接异常状态: {{slave_slave_sql_running_value}}\n\n集群 / 机器: {{cluster_name}} / {{host_ip}}\n\n机器: {{host_ip}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【MySQL实例主从同步异常】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("addon_mysql_slave_status","addon","{\"limit_value\":\"fraction:1\",\"usage_percent_avg\":\"percent:1\"}","MySQL实例主从同步异常告警","ticket","【MySQL实例主从同步异常】\n\n组件: \"mysql\"\n\n实例ID: {{addon_id}}\n\n从节点IO异常状态: {{slave_slave_io_running_value}}\n\n从节点连接异常状态: {{slave_slave_sql_running_value}}\n\n集群 / 机器: {{cluster_name}} / {{host_ip}}\n\n机器: {{host_ip}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【MySQL实例主从同步异常】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("addon_mysql_slave_status","addon","{\"limit_value\":\"fraction:1\",\"usage_percent_avg\":\"percent:1\"}","MySQL实例主从同步异常告警","email","【MySQL实例主从同步异常】\n\n组件: \"mysql\"\n\n实例ID: {{addon_id}}\n\n从节点IO异常状态: {{slave_slave_io_running_value}}\n\n从节点连接异常状态: {{slave_slave_sql_running_value}}\n\n集群 / 机器: {{cluster_name}} / {{host_ip}}\n\n机器: {{host_ip}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【MySQL实例主从同步异常】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("addon_mysql_slave_status","addon","{\"limit_value\":\"fraction:1\",\"usage_percent_avg\":\"percent:1\"}","MySQL实例主从同步异常告警","mbox","【MySQL实例主从同步异常】\n\n组件: \"mysql\"\n\n实例ID: {{addon_id}}\n\n从节点IO异常状态: {{slave_slave_io_running_value}}\n\n从节点连接异常状态: {{slave_slave_sql_running_value}}\n\n集群 / 机器: {{cluster_name}} / {{host_ip}}\n\n机器: {{host_ip}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【MySQL实例主从同步异常】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("addon_mysql_slave_status","addon","{\"limit_value\":\"fraction:1\",\"usage_percent_avg\":\"percent:1\"}","MySQL实例主从同步异常告警","webhook","【MySQL实例主从同步异常】\n\n组件: \"mysql\"\n\n实例ID: {{addon_id}}\n\n从节点IO异常状态: {{slave_slave_io_running_value}}\n\n从节点连接异常状态: {{slave_slave_sql_running_value}}\n\n集群 / 机器: {{cluster_name}} / {{host_ip}}\n\n机器: {{host_ip}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【MySQL实例主从同步异常】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("addon_mysql_slave_status","addon","{\"limit_value\":\"fraction:1\",\"usage_percent_avg\":\"percent:1\"}","MySQL实例主从同步异常告警","sms","MySQL实例{{addon_id}}主从同步异常,从节点IO异常状态: {{slave_slave_io_running_value}},从节点连接异常状态: {{slave_slave_sql_running_value}}\n","【MySQL实例主从同步异常】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("addon_mysql_slave_status","addon","{\"limit_value\":\"fraction:1\",\"usage_percent_avg\":\"percent:1\"}","MySQL实例主从同步异常告警","vms","MySQL实例{{addon_id}}主从同步异常,从节点IO异常状态: {{slave_slave_io_running_value}},从节点连接异常状态: {{slave_slave_sql_running_value}}\n","【MySQL实例主从同步异常】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("addon_mysql_slave_status","addon","{\"limit_value\":\"fraction:1\",\"usage_percent_avg\":\"percent:1\"}","MySQL实例主从同步异常恢复","dingding","【MySQL实例主从同步恢复】\n\n组件: \"mysql\"\n\n实例ID: {{addon_id}}\n\n从节点IO异常状态: {{slave_slave_io_running_value}}\n\n从节点连接异常状态: {{slave_slave_sql_running_value}}\n\n集群 / 机器: {{cluster_name}} / {{host_ip}}\n\n机器: {{host_ip}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【MySQL实例主从同步恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("addon_mysql_slave_status","addon","{\"limit_value\":\"fraction:1\",\"usage_percent_avg\":\"percent:1\"}","MySQL实例主从同步异常恢复","ticket","【MySQL实例主从同步恢复】\n\n组件: \"mysql\"\n\n实例ID: {{addon_id}}\n\n从节点IO异常状态: {{slave_slave_io_running_value}}\n\n从节点连接异常状态: {{slave_slave_sql_running_value}}\n\n集群 / 机器: {{cluster_name}} / {{host_ip}}\n\n机器: {{host_ip}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【MySQL实例主从同步恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("addon_mysql_slave_status","addon","{\"limit_value\":\"fraction:1\",\"usage_percent_avg\":\"percent:1\"}","MySQL实例主从同步异常恢复","email","【MySQL实例主从同步恢复】\n\n组件: \"mysql\"\n\n实例ID: {{addon_id}}\n\n从节点IO异常状态: {{slave_slave_io_running_value}}\n\n从节点连接异常状态: {{slave_slave_sql_running_value}}\n\n集群 / 机器: {{cluster_name}} / {{host_ip}}\n\n机器: {{host_ip}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【MySQL实例主从同步恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("addon_mysql_slave_status","addon","{\"limit_value\":\"fraction:1\",\"usage_percent_avg\":\"percent:1\"}","MySQL实例主从同步异常恢复","mbox","【MySQL实例主从同步恢复】\n\n组件: \"mysql\"\n\n实例ID: {{addon_id}}\n\n从节点IO异常状态: {{slave_slave_io_running_value}}\n\n从节点连接异常状态: {{slave_slave_sql_running_value}}\n\n集群 / 机器: {{cluster_name}} / {{host_ip}}\n\n机器: {{host_ip}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【MySQL实例主从同步恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("addon_mysql_slave_status","addon","{\"limit_value\":\"fraction:1\",\"usage_percent_avg\":\"percent:1\"}","MySQL实例主从同步异常恢复","webhook","【MySQL实例主从同步恢复】\n\n组件: \"mysql\"\n\n实例ID: {{addon_id}}\n\n从节点IO异常状态: {{slave_slave_io_running_value}}\n\n从节点连接异常状态: {{slave_slave_sql_running_value}}\n\n集群 / 机器: {{cluster_name}} / {{host_ip}}\n\n机器: {{host_ip}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【MySQL实例主从同步恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("addon_mysql_slave_status","addon","{\"limit_value\":\"fraction:1\",\"usage_percent_avg\":\"percent:1\"}","MySQL实例主从同步异常恢复","sms","MySQL实例{{addon_id}}主从同步恢复,从节点IO异常状态: {{slave_slave_io_running_value}},从节点连接异常状态: {{slave_slave_sql_running_value}}\n","【MySQL实例主从同步恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("addon_mysql_slave_status","addon","{\"limit_value\":\"fraction:1\",\"usage_percent_avg\":\"percent:1\"}","MySQL实例主从同步异常恢复","vms","MySQL实例{{addon_id}}主从同步恢复,从节点IO异常状态: {{slave_slave_io_running_value}},从节点连接异常状态: {{slave_slave_sql_running_value}}\n","【MySQL实例主从同步恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("addon_redis_mem","addon","{\"container_id\":\"string:6\",\"mem_limit_value\":\"fraction:1\",\"mem_usage_percent_avg\":\"percent:1\"}","redis实例内存使用率异常告警","dingding","【redis实例内存使用率异常告警】\n\n组件: {{addon_type}}\n\n实例ID: {{addon_id}}\n\n实例: {{pod_namespace}} - {{pod_name}} - {{pod_ip}}\n\n平均使用率: {{mem_usage_percent_avg}}\n\n集群 / 机器: {{cluster_name}} / {{host_ip}}\n\n容器ID: {{container_id}}\n\n机器: {{host_ip}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【redis实例内存使用率异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("addon_redis_mem","addon","{\"container_id\":\"string:6\",\"mem_limit_value\":\"fraction:1\",\"mem_usage_percent_avg\":\"percent:1\"}","redis实例内存使用率异常告警","ticket","【redis实例内存使用率异常告警】\n\n组件: {{addon_type}}\n\n实例ID: {{addon_id}}\n\n实例: {{pod_namespace}} - {{pod_name}} - {{pod_ip}}\n\n平均使用率: {{mem_usage_percent_avg}}\n\n集群 / 机器: {{cluster_name}} / {{host_ip}}\n\n容器ID: {{container_id}}\n\n机器: {{host_ip}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【redis实例内存使用率异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("addon_redis_mem","addon","{\"container_id\":\"string:6\",\"mem_limit_value\":\"fraction:1\",\"mem_usage_percent_avg\":\"percent:1\"}","redis实例内存使用率异常告警","email","【redis实例内存使用率异常告警】\n\n组件: {{addon_type}}\n\n实例ID: {{addon_id}}\n\n实例: {{pod_namespace}} - {{pod_name}} - {{pod_ip}}\n\n平均使用率: {{mem_usage_percent_avg}}\n\n集群 / 机器: {{cluster_name}} / {{host_ip}}\n\n容器ID: {{container_id}}\n\n机器: {{host_ip}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【redis实例内存使用率异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("addon_redis_mem","addon","{\"container_id\":\"string:6\",\"mem_limit_value\":\"fraction:1\",\"mem_usage_percent_avg\":\"percent:1\"}","redis实例内存使用率异常告警","mbox","【redis实例内存使用率异常告警】\n\n组件: {{addon_type}}\n\n实例ID: {{addon_id}}\n\n实例: {{pod_namespace}} - {{pod_name}} - {{pod_ip}}\n\n平均使用率: {{mem_usage_percent_avg}}\n\n集群 / 机器: {{cluster_name}} / {{host_ip}}\n\n容器ID: {{container_id}}\n\n机器: {{host_ip}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【redis实例内存使用率异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("addon_redis_mem","addon","{\"container_id\":\"string:6\",\"mem_limit_value\":\"fraction:1\",\"mem_usage_percent_avg\":\"percent:1\"}","redis实例内存使用率异常告警","webhook","【redis实例内存使用率异常告警】\n\n组件: {{addon_type}}\n\n实例ID: {{addon_id}}\n\n实例: {{pod_namespace}} - {{pod_name}} - {{pod_ip}}\n\n平均使用率: {{mem_usage_percent_avg}}\n\n集群 / 机器: {{cluster_name}} / {{host_ip}}\n\n容器ID: {{container_id}}\n\n机器: {{host_ip}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【redis实例内存使用率异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("addon_redis_mem","addon","{\"container_id\":\"string:6\",\"mem_limit_value\":\"fraction:1\",\"mem_usage_percent_avg\":\"percent:1\"}","redis实例内存使用率异常告警","sms","{{project_name}}项目redis实例{{pod_name}}触发内存使用率异常告警,平均使用率: {{mem_usage_percent_avg}}\n","【redis实例内存使用率异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("addon_redis_mem","addon","{\"container_id\":\"string:6\",\"mem_limit_value\":\"fraction:1\",\"mem_usage_percent_avg\":\"percent:1\"}","redis实例内存使用率异常告警","vms","{{project_name}}项目redis实例{{pod_name}}触发内存使用率异常告警,平均使用率: {{mem_usage_percent_avg}}\n","【redis实例内存使用率异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("addon_redis_mem","addon","{\"container_id\":\"string:6\",\"mem_limit_value\":\"fraction:1\",\"mem_usage_percent_avg\":\"percent:1\"}","redis实例内存使用率异常恢复","dingding","【redis实例内存使用率异常恢复】\n\n组件: {{addon_type}}\n\n实例ID: {{addon_id}}\n\n实例: {{pod_namespace}} - {{pod_name}} - {{pod_ip}}\n\n平均使用率: {{mem_usage_percent_avg}}\n\n集群 / 机器: {{cluster_name}} / {{host_ip}}\n\n容器ID: {{container_id}}\n\n机器: {{host_ip}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【redis实例内存使用率异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("addon_redis_mem","addon","{\"container_id\":\"string:6\",\"mem_limit_value\":\"fraction:1\",\"mem_usage_percent_avg\":\"percent:1\"}","redis实例内存使用率异常恢复","ticket","【redis实例内存使用率异常恢复】\n\n组件: {{addon_type}}\n\n实例ID: {{addon_id}}\n\n实例: {{pod_namespace}} - {{pod_name}} - {{pod_ip}}\n\n平均使用率: {{mem_usage_percent_avg}}\n\n集群 / 机器: {{cluster_name}} / {{host_ip}}\n\n容器ID: {{container_id}}\n\n机器: {{host_ip}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【redis实例内存使用率异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("addon_redis_mem","addon","{\"container_id\":\"string:6\",\"mem_limit_value\":\"fraction:1\",\"mem_usage_percent_avg\":\"percent:1\"}","redis实例内存使用率异常恢复","email","【redis实例内存使用率异常恢复】\n\n组件: {{addon_type}}\n\n实例ID: {{addon_id}}\n\n实例: {{pod_namespace}} - {{pod_name}} - {{pod_ip}}\n\n平均使用率: {{mem_usage_percent_avg}}\n\n集群 / 机器: {{cluster_name}} / {{host_ip}}\n\n容器ID: {{container_id}}\n\n机器: {{host_ip}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【redis实例内存使用率异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("addon_redis_mem","addon","{\"container_id\":\"string:6\",\"mem_limit_value\":\"fraction:1\",\"mem_usage_percent_avg\":\"percent:1\"}","redis实例内存使用率异常恢复","mbox","【redis实例内存使用率异常恢复】\n\n组件: {{addon_type}}\n\n实例ID: {{addon_id}}\n\n实例: {{pod_namespace}} - {{pod_name}} - {{pod_ip}}\n\n平均使用率: {{mem_usage_percent_avg}}\n\n集群 / 机器: {{cluster_name}} / {{host_ip}}\n\n容器ID: {{container_id}}\n\n机器: {{host_ip}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【redis实例内存使用率异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("addon_redis_mem","addon","{\"container_id\":\"string:6\",\"mem_limit_value\":\"fraction:1\",\"mem_usage_percent_avg\":\"percent:1\"}","redis实例内存使用率异常恢复","webhook","【redis实例内存使用率异常恢复】\n\n组件: {{addon_type}}\n\n实例ID: {{addon_id}}\n\n实例: {{pod_namespace}} - {{pod_name}} - {{pod_ip}}\n\n平均使用率: {{mem_usage_percent_avg}}\n\n集群 / 机器: {{cluster_name}} / {{host_ip}}\n\n容器ID: {{container_id}}\n\n机器: {{host_ip}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【redis实例内存使用率异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("addon_redis_mem","addon","{\"container_id\":\"string:6\",\"mem_limit_value\":\"fraction:1\",\"mem_usage_percent_avg\":\"percent:1\"}","redis实例内存使用率异常恢复","sms","{{project_name}}项目redis实例{{pod_name}}触发内存使用率异常告警恢复,组织名称:{{org_name}},平均使用率: {{mem_usage_percent_avg}}\n","【redis实例内存使用率异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("addon_redis_mem","addon","{\"container_id\":\"string:6\",\"mem_limit_value\":\"fraction:1\",\"mem_usage_percent_avg\":\"percent:1\"}","redis实例内存使用率异常恢复","vms","{{project_name}}项目redis实例{{pod_name}}触发内存使用率异常告警恢复,组织名称:{{org_name}},平均使用率: {{mem_usage_percent_avg}}\n","【redis实例内存使用率异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_browser_ajax_req","app_browser","{\"tt\":\"time:s\"}","Ajax接口访问性能告警","dingding","【Ajax接口访问性能告警】\n\n事件: {{req_path}} Ajax接口慢响应\n\n时间: {{timestamp}}\n\n域名: {{host}}\n\n平均响应时间: {{tt_avg}} ms\n\ntk: {{tk}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【Ajax接口 ({{req_path}}) 访问性能告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_browser_ajax_req","app_browser","{\"tt\":\"time:s\"}","Ajax接口访问性能告警","ticket","【Ajax接口访问性能告警】\n\n事件: {{req_path}} Ajax接口慢响应\n\n时间: {{timestamp}}\n\n域名: {{host}}\n\n平均响应时间: {{tt_avg}} ms\n\ntk: {{tk}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【Ajax接口 ({{req_path}}) 访问性能告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_browser_ajax_req","app_browser","{\"tt\":\"time:s\"}","Ajax接口访问性能告警","email","【Ajax接口访问性能告警】\n\n事件: {{req_path}} Ajax接口慢响应\n\n时间: {{timestamp}}\n\n域名: {{host}}\n\n平均响应时间: {{tt_avg}} ms\n\ntk: {{tk}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【Ajax接口 ({{req_path}}) 访问性能告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_browser_ajax_req","app_browser","{\"tt\":\"time:s\"}","Ajax接口访问性能告警","mbox","【Ajax接口访问性能告警】\n\n事件: {{req_path}} Ajax接口慢响应\n\n时间: {{timestamp}}\n\n域名: {{host}}\n\n平均响应时间: {{tt_avg}} ms\n\ntk: {{tk}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【Ajax接口 ({{req_path}}) 访问性能告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_browser_ajax_req","app_browser","{\"tt\":\"time:s\"}","Ajax接口访问性能告警","webhook","【Ajax接口访问性能告警】\n\n事件: {{req_path}} Ajax接口慢响应\n\n时间: {{timestamp}}\n\n域名: {{host}}\n\n平均响应时间: {{tt_avg}} ms\n\ntk: {{tk}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【Ajax接口 ({{req_path}}) 访问性能告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_browser_ajax_req","app_browser","{\"tt\":\"time:s\"}","Ajax接口访问性能告警","sms","{{req_path}} Ajax接口慢响应告警触发,tk:{{tk}},平均响应时间: {{tt_avg}} ms\n","【Ajax接口 ({{req_path}}) 访问性能告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_browser_ajax_req","app_browser","{\"tt\":\"time:s\"}","Ajax接口访问性能告警","vms","Ajax接口慢响应告警触发,tk:{{tk}},平均响应时间: {{tt_avg}} ms\n","【Ajax接口 ({{req_path}}) 访问性能告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_browser_apdex","app_browser","{\"plt\":\"time:s\"}","用户体验告警","dingding","【用户体验告警】\n\n事件: 访问时间过长\n\n时间: {{timestamp}}\n\n域名: {{host}}\n\n页面: {{doc_path}}\n\n平均响应时间: {{plt_avg}} ms\n\ntk: {{tk}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【({{doc_path}}) 接口用户体验告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_browser_apdex","app_browser","{\"plt\":\"time:s\"}","用户体验告警","ticket","【用户体验告警】\n\n事件: 访问时间过长\n\n时间: {{timestamp}}\n\n域名: {{host}}\n\n页面: {{doc_path}}\n\n平均响应时间: {{plt_avg}} ms\n\ntk: {{tk}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【({{doc_path}}) 接口用户体验告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_browser_apdex","app_browser","{\"plt\":\"time:s\"}","用户体验告警","email","【用户体验告警】\n\n事件: 访问时间过长\n\n时间: {{timestamp}}\n\n域名: {{host}}\n\n页面: {{doc_path}}\n\n平均响应时间: {{plt_avg}} ms\n\ntk: {{tk}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【({{doc_path}}) 接口用户体验告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_browser_apdex","app_browser","{\"plt\":\"time:s\"}","用户体验告警","mbox","【用户体验告警】\n\n事件: 访问时间过长\n\n时间: {{timestamp}}\n\n域名: {{host}}\n\n页面: {{doc_path}}\n\n平均响应时间: {{plt_avg}} ms\n\ntk: {{tk}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【({{doc_path}}) 接口用户体验告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_browser_apdex","app_browser","{\"plt\":\"time:s\"}","用户体验告警","webhook","【用户体验告警】\n\n事件: 访问时间过长\n\n时间: {{timestamp}}\n\n域名: {{host}}\n\n页面: {{doc_path}}\n\n平均响应时间: {{plt_avg}} ms\n\ntk: {{tk}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【({{doc_path}}) 接口用户体验告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_browser_apdex","app_browser","{\"plt\":\"time:s\"}","用户体验告警","sms","{{doc_path}} 因访问时间过长触发用户体验告警,tk:{{tk}},平均响应时间: {{plt_avg}} ms\n","【({{doc_path}}) 接口用户体验告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_browser_apdex","app_browser","{\"plt\":\"time:s\"}","用户体验告警","vms","因访问时间过长触发用户体验告警,tk:{{tk}},平均响应时间: {{plt_avg}} ms\n","【({{doc_path}}) 接口用户体验告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_browser_host_req","app_browser","{\"plt\":\"time:s\"}","域名访问性能告警","dingding","【域名访问性能告警】\n\n事件: ({{host}}) 域名慢响应\n\n时间: {{timestamp}}\n\n域名: {{host}}\n\n平均响应时间: {{plt_avg}} ms\n\ntk: {{tk}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【({{host}}) 域名访问性能告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_browser_host_req","app_browser","{\"plt\":\"time:s\"}","域名访问性能告警","ticket","【域名访问性能告警】\n\n事件: ({{host}}) 域名慢响应\n\n时间: {{timestamp}}\n\n域名: {{host}}\n\n平均响应时间: {{plt_avg}} ms\n\ntk: {{tk}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【({{host}}) 域名访问性能告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_browser_host_req","app_browser","{\"plt\":\"time:s\"}","域名访问性能告警","email","【域名访问性能告警】\n\n事件: ({{host}}) 域名慢响应\n\n时间: {{timestamp}}\n\n域名: {{host}}\n\n平均响应时间: {{plt_avg}} ms\n\ntk: {{tk}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【({{host}}) 域名访问性能告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_browser_host_req","app_browser","{\"plt\":\"time:s\"}","域名访问性能告警","mbox","【域名访问性能告警】\n\n事件: ({{host}}) 域名慢响应\n\n时间: {{timestamp}}\n\n域名: {{host}}\n\n平均响应时间: {{plt_avg}} ms\n\ntk: {{tk}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【({{host}}) 域名访问性能告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_browser_host_req","app_browser","{\"plt\":\"time:s\"}","域名访问性能告警","webhook","【域名访问性能告警】\n\n事件: ({{host}}) 域名慢响应\n\n时间: {{timestamp}}\n\n域名: {{host}}\n\n平均响应时间: {{plt_avg}} ms\n\ntk: {{tk}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【({{host}}) 域名访问性能告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_browser_host_req","app_browser","{\"plt\":\"time:s\"}","域名访问性能告警","sms","{{host}}触发域名访问性能告警,tk:{{tk},平均响应时间: {{plt_avg}} ms\n","【({{host}}) 域名访问性能告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_browser_host_req","app_browser","{\"plt\":\"time:s\"}","域名访问性能告警","vms","因域名慢响应触发域名访问性能告警,tk:{{tk},平均响应时间: {{plt_avg}} ms\n","【({{host}}) 域名访问性能告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_browser_page_req","app_browser","{\"plt\":\"time:s\"}","页面访问性能告警","dingding","【页面访问性能告警】\n\n事件: {{doc_path}} 页面慢响应\n\n域名: {{host}}\n\n页面: {{doc_path}}\n\n页面平均响应时间: {{plt_avg}} ms\n\n时间: {{timestamp}}\n\ntk: {{tk}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【页面 ({{doc_path}}) 访问性能告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_browser_page_req","app_browser","{\"plt\":\"time:s\"}","页面访问性能告警","ticket","【页面访问性能告警】\n\n事件: {{doc_path}} 页面慢响应\n\n域名: {{host}}\n\n页面: {{doc_path}}\n\n页面平均响应时间: {{plt_avg}} ms\n\n时间: {{timestamp}}\n\ntk: {{tk}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【页面 ({{doc_path}}) 访问性能告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_browser_page_req","app_browser","{\"plt\":\"time:s\"}","页面访问性能告警","email","【页面访问性能告警】\n\n事件: {{doc_path}} 页面慢响应\n\n域名: {{host}}\n\n页面: {{doc_path}}\n\n页面平均响应时间: {{plt_avg}} ms\n\n时间: {{timestamp}}\n\ntk: {{tk}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【页面 ({{doc_path}}) 访问性能告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_browser_page_req","app_browser","{\"plt\":\"time:s\"}","页面访问性能告警","mbox","【页面访问性能告警】\n\n事件: {{doc_path}} 页面慢响应\n\n域名: {{host}}\n\n页面: {{doc_path}}\n\n页面平均响应时间: {{plt_avg}} ms\n\n时间: {{timestamp}}\n\ntk: {{tk}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【页面 ({{doc_path}}) 访问性能告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_browser_page_req","app_browser","{\"plt\":\"time:s\"}","页面访问性能告警","webhook","【页面访问性能告警】\n\n事件: {{doc_path}} 页面慢响应\n\n域名: {{host}}\n\n页面: {{doc_path}}\n\n页面平均响应时间: {{plt_avg}} ms\n\n时间: {{timestamp}}\n\ntk: {{tk}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【页面 ({{doc_path}}) 访问性能告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_browser_page_req","app_browser","{\"plt\":\"time:s\"}","页面访问性能告警","sms","{{doc_path}}触发页面访问性能告警,tk: {{tk}},页面平均响应时间: {{plt_avg}} ms\n","【页面 ({{doc_path}}) 访问性能告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_browser_page_req","app_browser","{\"plt\":\"time:s\"}","页面访问性能告警","vms","触发页面访问性能告警,tk: {{tk}},页面平均响应时间: {{plt_avg}} ms\n","【页面 ({{doc_path}}) 访问性能告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_browser_script_error","app_browser","{\"count\":\"string\"}","脚本错误告警","dingding","【脚本错误告警】\n\n事件: {{window}} 分钟内,脚本错误次数: {{count_sum}}\n\n访问域名:{{host}}\n\n访问页面:{{doc_path}}\n\n时间: {{timestamp}}\n\ntk: {{tk}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【页面 ({{doc_path}}) 脚本错误告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_browser_script_error","app_browser","{\"count\":\"string\"}","脚本错误告警","ticket","【脚本错误告警】\n\n事件: {{window}} 分钟内,脚本错误次数: {{count_sum}}\n\n访问域名:{{host}}\n\n访问页面:{{doc_path}}\n\n时间: {{timestamp}}\n\ntk: {{tk}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【页面 ({{doc_path}}) 脚本错误告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_browser_script_error","app_browser","{\"count\":\"string\"}","脚本错误告警","email","【脚本错误告警】\n\n事件: {{window}} 分钟内,脚本错误次数: {{count_sum}}\n\n访问域名:{{host}}\n\n访问页面:{{doc_path}}\n\n时间: {{timestamp}}\n\ntk: {{tk}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【页面 ({{doc_path}}) 脚本错误告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_browser_script_error","app_browser","{\"count\":\"string\"}","脚本错误告警","mbox","【脚本错误告警】\n\n事件: {{window}} 分钟内,脚本错误次数: {{count_sum}}\n\n访问域名:{{host}}\n\n访问页面:{{doc_path}}\n\n时间: {{timestamp}}\n\ntk: {{tk}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【页面 ({{doc_path}}) 脚本错误告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_browser_script_error","app_browser","{\"count\":\"string\"}","脚本错误告警","webhook","【脚本错误告警】\n\n事件: {{window}} 分钟内,脚本错误次数: {{count_sum}}\n\n访问域名:{{host}}\n\n访问页面:{{doc_path}}\n\n时间: {{timestamp}}\n\ntk: {{tk}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【页面 ({{doc_path}}) 脚本错误告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_browser_script_error","app_browser","{\"count\":\"string\"}","脚本错误告警","sms","{{window}} 分钟内触发脚本错误告警,tk: {{tk}},脚本错误次数: {{count_sum}}\n","【页面 ({{doc_path}}) 脚本错误告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_browser_script_error","app_browser","{\"count\":\"string\"}","脚本错误告警","vms","{{window}} 分钟内触发脚本错误告警,tk: {{tk}},脚本错误次数: {{count_sum}}\n","【页面 ({{doc_path}}) 脚本错误告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_exception_count","app_exception","","应用异常","dingding","【应用异常告警】\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} - {{service_name}}\n\n实例: {{instance_id}}\n\n类: {{class}}\n\n方法: {{method}}\n\n行数: {{line}}\n\n错误: {{type}}\n\n事件: {{window}}分钟内出现 {{count_sum}} 次\n\nterminus_key: {{terminus_key}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【{{application_name}}应用{{service_name}}服务异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_exception_count","app_exception","","应用异常","ticket","【应用异常告警】\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} - {{service_name}}\n\n实例: {{instance_id}}\n\n类: {{class}}\n\n方法: {{method}}\n\n行数: {{line}}\n\n错误: {{type}}\n\n事件: {{window}}分钟内出现 {{count_sum}} 次\n\nterminus_key: {{terminus_key}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【{{application_name}}应用{{service_name}}服务异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_exception_count","app_exception","","应用异常","email","【应用异常告警】\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} - {{service_name}}\n\n实例: {{instance_id}}\n\n类: {{class}}\n\n方法: {{method}}\n\n行数: {{line}}\n\n错误: {{type}}\n\n事件: {{window}}分钟内出现 {{count_sum}} 次\n\nterminus_key: {{terminus_key}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【{{application_name}}应用{{service_name}}服务异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_exception_count","app_exception","","应用异常","mbox","【应用异常告警】\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} - {{service_name}}\n\n实例: {{instance_id}}\n\n类: {{class}}\n\n方法: {{method}}\n\n行数: {{line}}\n\n错误: {{type}}\n\n事件: {{window}}分钟内出现 {{count_sum}} 次\n\nterminus_key: {{terminus_key}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【{{application_name}}应用{{service_name}}服务异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_exception_count","app_exception","","应用异常","webhook","【应用异常告警】\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} - {{service_name}}\n\n实例: {{instance_id}}\n\n类: {{class}}\n\n方法: {{method}}\n\n行数: {{line}}\n\n错误: {{type}}\n\n事件: {{window}}分钟内出现 {{count_sum}} 次\n\nterminus_key: {{terminus_key}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【{{application_name}}应用{{service_name}}服务异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_exception_count","app_exception","","应用异常","sms","{{application_name}}应用{{service_name}}触发服务异常告警,terminus_key: {{terminus_key}},{{window}}分钟内应用错误出现{{count_sum}}次\n","【{{application_name}}应用{{service_name}}服务异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_exception_count","app_exception","","应用异常","vms","{{application_name}}应用{{service_name}}触发服务异常告警,terminus_key: {{terminus_key}},{{window}}分钟内应用错误出现{{count_sum}}次\n","【{{application_name}}应用{{service_name}}服务异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_exception_count","app_exception","","应用异常恢复","dingding","【应用异常恢复】\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} - {{service_name}}\n\n实例: {{instance_id}}\n\n类: {{class}}\n\n方法: {{method}}\n\n行数: {{line}}\n\n错误: {{type}}\n\nterminus_key: {{terminus_key}}\n\n持续时间: {{trigger_duration_min}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{application_name}}应用{{service_name}}服务异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_exception_count","app_exception","","应用异常恢复","ticket","【应用异常恢复】\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} - {{service_name}}\n\n实例: {{instance_id}}\n\n类: {{class}}\n\n方法: {{method}}\n\n行数: {{line}}\n\n错误: {{type}}\n\nterminus_key: {{terminus_key}}\n\n持续时间: {{trigger_duration_min}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{application_name}}应用{{service_name}}服务异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_exception_count","app_exception","","应用异常恢复","email","【应用异常恢复】\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} - {{service_name}}\n\n实例: {{instance_id}}\n\n类: {{class}}\n\n方法: {{method}}\n\n行数: {{line}}\n\n错误: {{type}}\n\nterminus_key: {{terminus_key}}\n\n持续时间: {{trigger_duration_min}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{application_name}}应用{{service_name}}服务异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_exception_count","app_exception","","应用异常恢复","mbox","【应用异常恢复】\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} - {{service_name}}\n\n实例: {{instance_id}}\n\n类: {{class}}\n\n方法: {{method}}\n\n行数: {{line}}\n\n错误: {{type}}\n\nterminus_key: {{terminus_key}}\n\n持续时间: {{trigger_duration_min}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{application_name}}应用{{service_name}}服务异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_exception_count","app_exception","","应用异常恢复","webhook","【应用异常恢复】\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} - {{service_name}}\n\n实例: {{instance_id}}\n\n类: {{class}}\n\n方法: {{method}}\n\n行数: {{line}}\n\n错误: {{type}}\n\nterminus_key: {{terminus_key}}\n\n持续时间: {{trigger_duration_min}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{application_name}}应用{{service_name}}服务异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_exception_count","app_exception","","应用异常恢复","sms","{{application_name}}应用{{service_name}}触发服务异常恢复,terminus_key: {{terminus_key}}\n","【{{application_name}}应用{{service_name}}服务异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_exception_count","app_exception","","应用异常恢复","vms","{{application_name}}应用{{service_name}}触发服务异常恢复,terminus_key: {{terminus_key}}\n","【{{application_name}}应用{{service_name}}服务异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_resource_container_cpu","app_resource","{\"container_id\":\"string:6\",\"cpu_limit_value\":\"fraction:1\",\"cpu_usage_percent_avg\":\"percent:1\"}","应用实例CPU使用率异常","dingding","【应用实例CPU使用率异常告警】\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务实例: {{runtime_name}} - {{service_name}}.{{container_id}} - {{pod_ip}}\n\nCPU平均使用率: {{cpu_usage_percent_avg}}\n\nCPU限制: {{cpu_limit_value}}核\n\n机器: {{host_ip}}\n\nterminus_key: {{terminus_key}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【{{application_name}}应用{{service_name}}服务实例CPU使用率告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_resource_container_cpu","app_resource","{\"container_id\":\"string:6\",\"cpu_limit_value\":\"fraction:1\",\"cpu_usage_percent_avg\":\"percent:1\"}","应用实例CPU使用率异常","ticket","【应用实例CPU使用率异常告警】\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务实例: {{runtime_name}} - {{service_name}}.{{container_id}} - {{pod_ip}}\n\nCPU平均使用率: {{cpu_usage_percent_avg}}\n\nCPU限制: {{cpu_limit_value}}核\n\n机器: {{host_ip}}\n\nterminus_key: {{terminus_key}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【{{application_name}}应用{{service_name}}服务实例CPU使用率告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_resource_container_cpu","app_resource","{\"container_id\":\"string:6\",\"cpu_limit_value\":\"fraction:1\",\"cpu_usage_percent_avg\":\"percent:1\"}","应用实例CPU使用率异常","email","【应用实例CPU使用率异常告警】\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务实例: {{runtime_name}} - {{service_name}}.{{container_id}} - {{pod_ip}}\n\nCPU平均使用率: {{cpu_usage_percent_avg}}\n\nCPU限制: {{cpu_limit_value}}核\n\n机器: {{host_ip}}\n\nterminus_key: {{terminus_key}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【{{application_name}}应用{{service_name}}服务实例CPU使用率告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_resource_container_cpu","app_resource","{\"container_id\":\"string:6\",\"cpu_limit_value\":\"fraction:1\",\"cpu_usage_percent_avg\":\"percent:1\"}","应用实例CPU使用率异常","mbox","【应用实例CPU使用率异常告警】\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务实例: {{runtime_name}} - {{service_name}}.{{container_id}} - {{pod_ip}}\n\nCPU平均使用率: {{cpu_usage_percent_avg}}\n\nCPU限制: {{cpu_limit_value}}核\n\n机器: {{host_ip}}\n\nterminus_key: {{terminus_key}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【{{application_name}}应用{{service_name}}服务实例CPU使用率告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_resource_container_cpu","app_resource","{\"container_id\":\"string:6\",\"cpu_limit_value\":\"fraction:1\",\"cpu_usage_percent_avg\":\"percent:1\"}","应用实例CPU使用率异常","webhook","【应用实例CPU使用率异常告警】\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务实例: {{runtime_name}} - {{service_name}}.{{container_id}} - {{pod_ip}}\n\nCPU平均使用率: {{cpu_usage_percent_avg}}\n\nCPU限制: {{cpu_limit_value}}核\n\n机器: {{host_ip}}\n\nterminus_key: {{terminus_key}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【{{application_name}}应用{{service_name}}服务实例CPU使用率告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_resource_container_cpu","app_resource","{\"container_id\":\"string:6\",\"cpu_limit_value\":\"fraction:1\",\"cpu_usage_percent_avg\":\"percent:1\"}","应用实例CPU使用率异常告警","sms","{{application_name}}应用{{service_name}}触发服务实例CPU使用率异常告警,terminus_key: {{terminus_key}},CPU平均使用率: {{cpu_usage_percent_avg}}\n","【{{application_name}}应用{{service_name}}服务实例CPU使用率告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_resource_container_cpu","app_resource","{\"container_id\":\"string:6\",\"cpu_limit_value\":\"fraction:1\",\"cpu_usage_percent_avg\":\"percent:1\"}","应用实例CPU使用率异常告警","vms","{{application_name}}应用{{service_name}}触发服务实例CPU使用率异常告警,terminus_key: {{terminus_key}},CPU平均使用率: {{cpu_usage_percent_avg}}\n","【{{application_name}}应用{{service_name}}服务实例CPU使用率告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_resource_container_cpu","app_resource","{\"container_id\":\"string:6\",\"cpu_usage_percent_avg\":\"percent:1\",\"trigger_duration\":\"time:ms\"}","应用实例CPU使用率恢复","dingding","【应用实例CPU使用率恢复】\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务实例: {{runtime_name}} - {{service_name}}.{{container_id}} - {{pod_ip}}\n\n平均使用率: {{cpu_usage_percent_avg}}\n\n机器: {{host_ip}}\n\nterminus_key: {{terminus_key}}\n\n容器ID: {{container_id}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{application_name}}应用{{service_name}}服务实例CPU使用率恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_resource_container_cpu","app_resource","{\"container_id\":\"string:6\",\"cpu_usage_percent_avg\":\"percent:1\",\"trigger_duration\":\"time:ms\"}","应用实例CPU使用率恢复","ticket","【应用实例CPU使用率恢复】\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务实例: {{runtime_name}} - {{service_name}}.{{container_id}} - {{pod_ip}}\n\n平均使用率: {{cpu_usage_percent_avg}}\n\n机器: {{host_ip}}\n\nterminus_key: {{terminus_key}}\n\n容器ID: {{container_id}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{application_name}}应用{{service_name}}服务实例CPU使用率恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_resource_container_cpu","app_resource","{\"container_id\":\"string:6\",\"cpu_usage_percent_avg\":\"percent:1\",\"trigger_duration\":\"time:ms\"}","应用实例CPU使用率恢复","email","【应用实例CPU使用率恢复】\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务实例: {{runtime_name}} - {{service_name}}.{{container_id}} - {{pod_ip}}\n\n平均使用率: {{cpu_usage_percent_avg}}\n\n机器: {{host_ip}}\n\nterminus_key: {{terminus_key}}\n\n容器ID: {{container_id}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{application_name}}应用{{service_name}}服务实例CPU使用率恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_resource_container_cpu","app_resource","{\"container_id\":\"string:6\",\"cpu_usage_percent_avg\":\"percent:1\",\"trigger_duration\":\"time:ms\"}","应用实例CPU使用率恢复","mbox","【应用实例CPU使用率恢复】\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务实例: {{runtime_name}} - {{service_name}}.{{container_id}} - {{pod_ip}}\n\n平均使用率: {{cpu_usage_percent_avg}}\n\n机器: {{host_ip}}\n\nterminus_key: {{terminus_key}}\n\n容器ID: {{container_id}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{application_name}}应用{{service_name}}服务实例CPU使用率恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_resource_container_cpu","app_resource","{\"container_id\":\"string:6\",\"cpu_usage_percent_avg\":\"percent:1\",\"trigger_duration\":\"time:ms\"}","应用实例CPU使用率恢复","webhook","【应用实例CPU使用率恢复】\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务实例: {{runtime_name}} - {{service_name}}.{{container_id}} - {{pod_ip}}\n\n平均使用率: {{cpu_usage_percent_avg}}\n\n机器: {{host_ip}}\n\nterminus_key: {{terminus_key}}\n\n容器ID: {{container_id}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{application_name}}应用{{service_name}}服务实例CPU使用率恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_resource_container_cpu","app_resource","{\"container_id\":\"string:6\",\"cpu_usage_percent_avg\":\"percent:1\",\"trigger_duration\":\"time:ms\"}","应用实例CPU使用率恢复","sms","{{application_name}}应用{{service_name}}服务实例CPU使用率异常恢复,terminus_key: {{terminus_key}},平均使用率: {{cpu_usage_percent_avg}}\n","【{{application_name}}应用{{service_name}}服务实例CPU使用率恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_resource_container_cpu","app_resource","{\"container_id\":\"string:6\",\"cpu_usage_percent_avg\":\"percent:1\",\"trigger_duration\":\"time:ms\"}","应用实例CPU使用率恢复","vms","{{application_name}}应用{{service_name}}服务实例CPU使用率异常恢复,terminus_key: {{terminus_key}},平均使用率: {{cpu_usage_percent_avg}}。\n","【{{application_name}}应用{{service_name}}服务实例CPU使用率恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_resource_container_mem","app_resource","{\"container_id\":\"string:6\",\"mem_limit_value\":\"size:byte\",\"mem_usage_percent_avg\":\"percent:1\",\"mem_usage_value\":\"size:byte\"}","应用实例内存使用率异常","dingding","【应用实例内存使用率异常告警】\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务实例: {{runtime_name}} - {{service_name}}.{{container_id}} - {{pod_ip}}\n\n内存使用率: {{mem_usage_percent_avg}}\n\n内存使用: {{mem_usage_value}}\n\n内存限制: {{mem_limit_value}}\n\n机器: {{host_ip}}\n\nterminus_key: {{terminus_key}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【{{application_name}}应用{{service_name}}服务内存使用率异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_resource_container_mem","app_resource","{\"container_id\":\"string:6\",\"mem_limit_value\":\"size:byte\",\"mem_usage_percent_avg\":\"percent:1\",\"mem_usage_value\":\"size:byte\"}","应用实例内存使用率异常","ticket","【应用实例内存使用率异常告警】\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务实例: {{runtime_name}} - {{service_name}}.{{container_id}} - {{pod_ip}}\n\n内存使用率: {{mem_usage_percent_avg}}\n\n内存使用: {{mem_usage_value}}\n\n内存限制: {{mem_limit_value}}\n\n机器: {{host_ip}}\n\nterminus_key: {{terminus_key}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【{{application_name}}应用{{service_name}}服务内存使用率异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_resource_container_mem","app_resource","{\"container_id\":\"string:6\",\"mem_limit_value\":\"size:byte\",\"mem_usage_percent_avg\":\"percent:1\",\"mem_usage_value\":\"size:byte\"}","应用实例内存使用率异常","email","【应用实例内存使用率异常告警】\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务实例: {{runtime_name}} - {{service_name}}.{{container_id}} - {{pod_ip}}\n\n内存使用率: {{mem_usage_percent_avg}}\n\n内存使用: {{mem_usage_value}}\n\n内存限制: {{mem_limit_value}}\n\n机器: {{host_ip}}\n\nterminus_key: {{terminus_key}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【{{application_name}}应用{{service_name}}服务内存使用率异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_resource_container_mem","app_resource","{\"container_id\":\"string:6\",\"mem_limit_value\":\"size:byte\",\"mem_usage_percent_avg\":\"percent:1\",\"mem_usage_value\":\"size:byte\"}","应用实例内存使用率异常","mbox","【应用实例内存使用率异常告警】\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务实例: {{runtime_name}} - {{service_name}}.{{container_id}} - {{pod_ip}}\n\n内存使用率: {{mem_usage_percent_avg}}\n\n内存使用: {{mem_usage_value}}\n\n内存限制: {{mem_limit_value}}\n\n机器: {{host_ip}}\n\nterminus_key: {{terminus_key}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【{{application_name}}应用{{service_name}}服务内存使用率异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_resource_container_mem","app_resource","{\"container_id\":\"string:6\",\"mem_limit_value\":\"size:byte\",\"mem_usage_percent_avg\":\"percent:1\",\"mem_usage_value\":\"size:byte\"}","应用实例内存使用率异常","webhook","【应用实例内存使用率异常告警】\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务实例: {{runtime_name}} - {{service_name}}.{{container_id}} - {{pod_ip}}\n\n内存使用率: {{mem_usage_percent_avg}}\n\n内存使用: {{mem_usage_value}}\n\n内存限制: {{mem_limit_value}}\n\n机器: {{host_ip}}\n\nterminus_key: {{terminus_key}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【{{application_name}}应用{{service_name}}服务内存使用率异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_resource_container_mem","app_resource","{\"container_id\":\"string:6\",\"mem_limit_value\":\"size:byte\",\"mem_usage_percent_avg\":\"percent:1\",\"mem_usage_value\":\"size:byte\"}","应用实例内存使用率异常","sms","{{application_name}}应用{{service_name}}服务触发内存使用率异常告警,terminus_key: {{terminus_key}},内存使用率: {{mem_usage_percent_avg}}\n","【{{application_name}}应用{{service_name}}服务内存使用率异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_resource_container_mem","app_resource","{\"container_id\":\"string:6\",\"mem_limit_value\":\"size:byte\",\"mem_usage_percent_avg\":\"percent:1\",\"mem_usage_value\":\"size:byte\"}","应用实例内存使用率异常","vms","{{application_name}}应用{{service_name}}服务触发内存使用率异常告警,terminus_key: {{terminus_key}},内存使用率: {{mem_usage_percent_avg}}\n","【{{application_name}}应用{{service_name}}服务内存使用率异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_resource_container_mem","app_resource","{\"container_id\":\"string:6\",\"mem_usage_percent_avg\":\"percent:1\",\"trigger_duration\":\"time:ms\"}","应用实例内存异常恢复","dingding","【应用实例内存使用率异常恢复】\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务实例: {{runtime_name}} - {{service_name}}.{{container_id}} - {{pod_ip}}\n\n内存使用率: {{mem_usage_percent_avg}}\n\n内存使用: {{mem_usage_value}}\n\n内存限制: {{mem_limit_value}}\n\n机器: {{host_ip}}\n\nterminus_key: {{terminus_key}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{application_name}}应用{{service_name}}服务内存使用率异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_resource_container_mem","app_resource","{\"container_id\":\"string:6\",\"mem_usage_percent_avg\":\"percent:1\",\"trigger_duration\":\"time:ms\"}","应用实例内存异常恢复","ticket","【应用实例内存使用率异常恢复】\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务实例: {{runtime_name}} - {{service_name}}.{{container_id}} - {{pod_ip}}\n\n内存使用率: {{mem_usage_percent_avg}}\n\n内存使用: {{mem_usage_value}}\n\n内存限制: {{mem_limit_value}}\n\n机器: {{host_ip}}\n\nterminus_key: {{terminus_key}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{application_name}}应用{{service_name}}服务内存使用率异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_resource_container_mem","app_resource","{\"container_id\":\"string:6\",\"mem_usage_percent_avg\":\"percent:1\",\"trigger_duration\":\"time:ms\"}","应用实例内存异常恢复","email","【应用实例内存使用率异常恢复】\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务实例: {{runtime_name}} - {{service_name}}.{{container_id}} - {{pod_ip}}\n\n内存使用率: {{mem_usage_percent_avg}}\n\n内存使用: {{mem_usage_value}}\n\n内存限制: {{mem_limit_value}}\n\n机器: {{host_ip}}\n\nterminus_key: {{terminus_key}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{application_name}}应用{{service_name}}服务内存使用率异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_resource_container_mem","app_resource","{\"container_id\":\"string:6\",\"mem_usage_percent_avg\":\"percent:1\",\"trigger_duration\":\"time:ms\"}","应用实例内存异常恢复","mbox","【应用实例内存使用率异常恢复】\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务实例: {{runtime_name}} - {{service_name}}.{{container_id}} - {{pod_ip}}\n\n内存使用率: {{mem_usage_percent_avg}}\n\n内存使用: {{mem_usage_value}}\n\n内存限制: {{mem_limit_value}}\n\n机器: {{host_ip}}\n\nterminus_key: {{terminus_key}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{application_name}}应用{{service_name}}服务内存使用率异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_resource_container_mem","app_resource","{\"container_id\":\"string:6\",\"mem_usage_percent_avg\":\"percent:1\",\"trigger_duration\":\"time:ms\"}","应用实例内存异常恢复","webhook","【应用实例内存使用率异常恢复】\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务实例: {{runtime_name}} - {{service_name}}.{{container_id}} - {{pod_ip}}\n\n内存使用率: {{mem_usage_percent_avg}}\n\n内存使用: {{mem_usage_value}}\n\n内存限制: {{mem_limit_value}}\n\n机器: {{host_ip}}\n\nterminus_key: {{terminus_key}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{application_name}}应用{{service_name}}服务内存使用率异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_resource_container_mem","app_resource","{\"container_id\":\"string:6\",\"mem_usage_percent_avg\":\"percent:1\",\"trigger_duration\":\"time:ms\"}","应用实例内存异常恢复","sms","{{application_name}}应用{{service_name}}服务触发内存使用率异常恢复,terminus_key: {{terminus_key}},内存使用率: {{mem_usage_percent_avg}}\n","【{{application_name}}应用{{service_name}}服务内存使用率异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_resource_container_mem","app_resource","{\"container_id\":\"string:6\",\"mem_usage_percent_avg\":\"percent:1\",\"trigger_duration\":\"time:ms\"}","应用实例内存异常恢复","vms","{{application_name}}应用{{service_name}}服务触发内存使用率异常恢复,terminus_key: {{terminus_key}},内存使用率: {{mem_usage_percent_avg}}\n","【{{application_name}}应用{{service_name}}服务内存使用率异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_resource_container_oom","app_resource","{\"container_id\":\"string:6\"}","应用实例OOM告警","dingding","【应用实例OOM告警】\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务实例: {{runtime_name}} - {{service_name}}.{{container_id}} - {{pod_ip}}\n\n事件: 服务实例发生OOM\n\n机器: {{host_ip}}\n\nterminus_key: {{terminus_key}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【{{application_name}}应用{{service_name}}服务实例OOM告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_resource_container_oom","app_resource","{\"container_id\":\"string:6\"}","应用实例OOM告警","ticket","【应用实例OOM告警】\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务实例: {{runtime_name}} - {{service_name}}.{{container_id}} - {{pod_ip}}\n\n事件: 服务实例发生OOM\n\n机器: {{host_ip}}\n\nterminus_key: {{terminus_key}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【{{application_name}}应用{{service_name}}服务实例OOM告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_resource_container_oom","app_resource","{\"container_id\":\"string:6\"}","应用实例OOM告警","email","【应用实例OOM告警】\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务实例: {{runtime_name}} - {{service_name}}.{{container_id}} - {{pod_ip}}\n\n事件: 服务实例发生OOM\n\n机器: {{host_ip}}\n\nterminus_key: {{terminus_key}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【{{application_name}}应用{{service_name}}服务实例OOM告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_resource_container_oom","app_resource","{\"container_id\":\"string:6\"}","应用实例OOM告警","mbox","【应用实例OOM告警】\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务实例: {{runtime_name}} - {{service_name}}.{{container_id}} - {{pod_ip}}\n\n事件: 服务实例发生OOM\n\n机器: {{host_ip}}\n\nterminus_key: {{terminus_key}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【{{application_name}}应用{{service_name}}服务实例OOM告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_resource_container_oom","app_resource","{\"container_id\":\"string:6\"}","应用实例OOM告警","webhook","【应用实例OOM告警】\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务实例: {{runtime_name}} - {{service_name}}.{{container_id}} - {{pod_ip}}\n\n事件: 服务实例发生OOM\n\n机器: {{host_ip}}\n\nterminus_key: {{terminus_key}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【{{application_name}}应用{{service_name}}服务实例OOM告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_resource_container_oom","app_resource","{\"container_id\":\"string:6\"}","应用实例OOM告警","sms","{{application_name}}应用{{service_name}}服务触发实例发生OOM告警,terminus_key: {{terminus_key}},Pod_Ip: {{pod_ip}}\n","【{{application_name}}应用{{service_name}}服务实例OOM告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_resource_container_oom","app_resource","{\"container_id\":\"string:6\"}","应用实例OOM告警","vms","{{application_name}}应用{{service_name}}服务触发实例发生OOM告警,terminus_key: {{terminus_key}},Pod_Ip: {{pod_ip}}\n","【{{application_name}}应用{{service_name}}服务实例OOM告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_resource_container_oom","app_resource","{\"container_id\":\"string:6\"}","应用实例OOM告警恢复","dingding","【应用实例OOM告警恢复】\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务实例: {{runtime_name}} - {{service_name}}.{{container_id}} - {{pod_ip}}\n\n事件: 服务实例发生OOM\n\n机器: {{host_ip}}\n\nterminus_key: {{terminus_key}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{application_name}}应用{{service_name}}服务实例OOM告警恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_resource_container_oom","app_resource","{\"container_id\":\"string:6\"}","应用实例OOM告警恢复","ticket","【应用实例OOM告警恢复】\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务实例: {{runtime_name}} - {{service_name}}.{{container_id}} - {{pod_ip}}\n\n事件: 服务实例发生OOM\n\n机器: {{host_ip}}\n\nterminus_key: {{terminus_key}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{application_name}}应用{{service_name}}服务实例OOM告警恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_resource_container_oom","app_resource","{\"container_id\":\"string:6\"}","应用实例OOM告警恢复","email","【应用实例OOM告警恢复】\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务实例: {{runtime_name}} - {{service_name}}.{{container_id}} - {{pod_ip}}\n\n事件: 服务实例发生OOM\n\n机器: {{host_ip}}\n\nterminus_key: {{terminus_key}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{application_name}}应用{{service_name}}服务实例OOM告警恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_resource_container_oom","app_resource","{\"container_id\":\"string:6\"}","应用实例OOM告警恢复","mbox","【应用实例OOM告警恢复】\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务实例: {{runtime_name}} - {{service_name}}.{{container_id}} - {{pod_ip}}\n\n事件: 服务实例发生OOM\n\n机器: {{host_ip}}\n\nterminus_key: {{terminus_key}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{application_name}}应用{{service_name}}服务实例OOM告警恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_resource_container_oom","app_resource","{\"container_id\":\"string:6\"}","应用实例OOM告警恢复","webhook","【应用实例OOM告警恢复】\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务实例: {{runtime_name}} - {{service_name}}.{{container_id}} - {{pod_ip}}\n\n事件: 服务实例发生OOM\n\n机器: {{host_ip}}\n\nterminus_key: {{terminus_key}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{application_name}}应用{{service_name}}服务实例OOM告警恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_resource_container_oom","app_resource","{\"container_id\":\"string:6\"}","应用实例OOM告警恢复","sms","{{application_name}}应用{{service_name}}服务触发实例发生OOM告警恢复,terminus_key: {{terminus_key}},Pod_Ip: {{pod_ip}}\n","【{{application_name}}应用{{service_name}}服务实例OOM告警恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_resource_container_oom","app_resource","{\"container_id\":\"string:6\"}","应用实例OOM告警恢复","vms","{{application_name}}应用{{service_name}}服务触发实例发生OOM告警恢复,terminus_key: {{terminus_key}},Pod_Ip: {{pod_ip}}\n","【{{application_name}}应用{{service_name}}服务实例OOM告警恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_resource_jvm_gc_count","app_resource","","应用JVM GC次数异常","dingding","【应用JVM GC次数异常告警】\n\n实例GC次数太多 !\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} / {{service_name}}\n\n老年代GC次数: {{count_sum}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\nterminus_key: {{terminus_key}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【{{application_name}}应用{{service_name}}服务JVM GC次数异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_resource_jvm_gc_count","app_resource","","应用JVM GC次数异常","ticket","【应用JVM GC次数异常告警】\n\n实例GC次数太多 !\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} / {{service_name}}\n\n老年代GC次数: {{count_sum}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\nterminus_key: {{terminus_key}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【{{application_name}}应用{{service_name}}服务JVM GC次数异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_resource_jvm_gc_count","app_resource","","应用JVM GC次数异常","email","【应用JVM GC次数异常告警】\n\n实例GC次数太多 !\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} / {{service_name}}\n\n老年代GC次数: {{count_sum}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\nterminus_key: {{terminus_key}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【{{application_name}}应用{{service_name}}服务JVM GC次数异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_resource_jvm_gc_count","app_resource","","应用JVM GC次数异常","mbox","【应用JVM GC次数异常告警】\n\n实例GC次数太多 !\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} / {{service_name}}\n\n老年代GC次数: {{count_sum}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\nterminus_key: {{terminus_key}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【{{application_name}}应用{{service_name}}服务JVM GC次数异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_resource_jvm_gc_count","app_resource","","应用JVM GC次数异常","webhook","【应用JVM GC次数异常告警】\n\n实例GC次数太多 !\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} / {{service_name}}\n\n老年代GC次数: {{count_sum}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\nterminus_key: {{terminus_key}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【{{application_name}}应用{{service_name}}服务JVM GC次数异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_resource_jvm_gc_count","app_resource","","应用JVM GC次数异常","sms","{{application_name}}应用{{service_name}}服务触发JVM GC次数异常告警,terminus_key: {{terminus_key}},老年代GC次数: {{count_sum}}\n","【{{application_name}}应用{{service_name}}服务JVM GC次数异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_resource_jvm_gc_count","app_resource","","应用JVM GC次数异常","vms","{{application_name}}应用{{service_name}}服务触发JVM GC次数异常告警,terminus_key: {{terminus_key}},老年代GC次数: {{count_sum}}\n","【{{application_name}}应用{{service_name}}服务JVM GC次数异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_resource_jvm_gc_count","app_resource","","应用JVM GC次数异常恢复","dingding","【应用JVM GC次数异常恢复】\n\n实例GC次数已恢复正常值 .\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} / {{service_name}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\nterminus_key: {{terminus_key}}\n\n持续时间: {{trigger_duration_min}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{application_name}}应用{{service_name}}服务JVM GC次数异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_resource_jvm_gc_count","app_resource","","应用JVM GC次数异常恢复","ticket","【应用JVM GC次数异常恢复】\n\n实例GC次数已恢复正常值 .\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} / {{service_name}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\nterminus_key: {{terminus_key}}\n\n持续时间: {{trigger_duration_min}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{application_name}}应用{{service_name}}服务JVM GC次数异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_resource_jvm_gc_count","app_resource","","应用JVM GC次数异常恢复","email","【应用JVM GC次数异常恢复】\n\n实例GC次数已恢复正常值 .\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} / {{service_name}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\nterminus_key: {{terminus_key}}\n\n持续时间: {{trigger_duration_min}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{application_name}}应用{{service_name}}服务JVM GC次数异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_resource_jvm_gc_count","app_resource","","应用JVM GC次数异常恢复","mbox","【应用JVM GC次数异常恢复】\n\n实例GC次数已恢复正常值 .\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} / {{service_name}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\nterminus_key: {{terminus_key}}\n\n持续时间: {{trigger_duration_min}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{application_name}}应用{{service_name}}服务JVM GC次数异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_resource_jvm_gc_count","app_resource","","应用JVM GC次数异常恢复","webhook","【应用JVM GC次数异常恢复】\n\n实例GC次数已恢复正常值 .\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} / {{service_name}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\nterminus_key: {{terminus_key}}\n\n持续时间: {{trigger_duration_min}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{application_name}}应用{{service_name}}服务JVM GC次数异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_resource_jvm_gc_count","app_resource","","应用JVM GC次数异常恢复","sms","{{application_name}}应用{{service_name}}服务触发JVM GC次数异常告警恢复,terminus_key: {{terminus_key}}\n","【{{application_name}}应用{{service_name}}服务JVM GC次数异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_resource_jvm_gc_count","app_resource","","应用JVM GC次数异常恢复","vms","{{application_name}}应用{{service_name}}服务触发JVM GC次数异常告警恢复,terminus_key: {{terminus_key}}\n","【{{application_name}}应用{{service_name}}服务JVM GC次数异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_resource_jvm_gc_time","app_resource","{\"time_sum\":\"time:ms\",\"time_value\":\"time:ms\"}","应用JVM GC耗时异常","dingding","【应用JVM GC耗时异常告警】\n\n实例GC耗时过长 !\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} / {{service_name}}\n\n老年代GC耗时: 总耗时{{time_sum}},最长一次耗时{{time_value}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\nterminus_key: {{terminus_key}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【{{application_name}}应用{{service_name}}服务JVM GC耗时异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_resource_jvm_gc_time","app_resource","{\"time_sum\":\"time:ms\",\"time_value\":\"time:ms\"}","应用JVM GC耗时异常","ticket","【应用JVM GC耗时异常告警】\n\n实例GC耗时过长 !\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} / {{service_name}}\n\n老年代GC耗时: 总耗时{{time_sum}},最长一次耗时{{time_value}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\nterminus_key: {{terminus_key}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【{{application_name}}应用{{service_name}}服务JVM GC耗时异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_resource_jvm_gc_time","app_resource","{\"time_sum\":\"time:ms\",\"time_value\":\"time:ms\"}","应用JVM GC耗时异常","email","【应用JVM GC耗时异常告警】\n\n实例GC耗时过长 !\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} / {{service_name}}\n\n老年代GC耗时: 总耗时{{time_sum}},最长一次耗时{{time_value}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\nterminus_key: {{terminus_key}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【{{application_name}}应用{{service_name}}服务JVM GC耗时异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_resource_jvm_gc_time","app_resource","{\"time_sum\":\"time:ms\",\"time_value\":\"time:ms\"}","应用JVM GC耗时异常","mbox","【应用JVM GC耗时异常告警】\n\n实例GC耗时过长 !\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} / {{service_name}}\n\n老年代GC耗时: 总耗时{{time_sum}},最长一次耗时{{time_value}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\nterminus_key: {{terminus_key}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【{{application_name}}应用{{service_name}}服务JVM GC耗时异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_resource_jvm_gc_time","app_resource","{\"time_sum\":\"time:ms\",\"time_value\":\"time:ms\"}","应用JVM GC耗时异常","webhook","【应用JVM GC耗时异常告警】\n\n实例GC耗时过长 !\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} / {{service_name}}\n\n老年代GC耗时: 总耗时{{time_sum}},最长一次耗时{{time_value}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\nterminus_key: {{terminus_key}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【{{application_name}}应用{{service_name}}服务JVM GC耗时异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_resource_jvm_gc_time","app_resource","{\"time_sum\":\"time:ms\",\"time_value\":\"time:ms\"}","应用JVM GC耗时异常","sms","{{application_name}}应用{{service_name}}服务触发JVM GC耗时异常告警,terminus_key: {{terminus_key}},老年代GC耗时: 总耗时{{time_sum}},最长一次耗时{{time_value}}\n","【{{application_name}}应用{{service_name}}服务JVM GC耗时异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_resource_jvm_gc_time","app_resource","{\"time_sum\":\"time:ms\",\"time_value\":\"time:ms\"}","应用JVM GC耗时异常","vms","{{application_name}}应用{{service_name}}服务触发JVM GC耗时异常告警,terminus_key: {{terminus_key}},老年代GC耗时: 总耗时{{time_sum}},最长一次耗时{{time_value}}\n","【{{application_name}}应用{{service_name}}服务JVM GC耗时异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_resource_jvm_gc_time","app_resource","","应用JVM GC耗时异常恢复","dingding","【应用JVM GC耗时异常恢复】\n\n实例GC耗时已恢复正常值 .\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} / {{service_name}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\nterminus_key: {{terminus_key}}\n\n持续时间: {{trigger_duration_min}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{application_name}}应用{{service_name}}服务JVM GC耗时异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_resource_jvm_gc_time","app_resource","","应用JVM GC耗时异常恢复","ticket","【应用JVM GC耗时异常恢复】\n\n实例GC耗时已恢复正常值 .\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} / {{service_name}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\nterminus_key: {{terminus_key}}\n\n持续时间: {{trigger_duration_min}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{application_name}}应用{{service_name}}服务JVM GC耗时异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_resource_jvm_gc_time","app_resource","","应用JVM GC耗时异常恢复","email","【应用JVM GC耗时异常恢复】\n\n实例GC耗时已恢复正常值 .\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} / {{service_name}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\nterminus_key: {{terminus_key}}\n\n持续时间: {{trigger_duration_min}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{application_name}}应用{{service_name}}服务JVM GC耗时异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_resource_jvm_gc_time","app_resource","","应用JVM GC耗时异常恢复","mbox","【应用JVM GC耗时异常恢复】\n\n实例GC耗时已恢复正常值 .\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} / {{service_name}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\nterminus_key: {{terminus_key}}\n\n持续时间: {{trigger_duration_min}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{application_name}}应用{{service_name}}服务JVM GC耗时异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_resource_jvm_gc_time","app_resource","","应用JVM GC耗时异常恢复","webhook","【应用JVM GC耗时异常恢复】\n\n实例GC耗时已恢复正常值 .\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} / {{service_name}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\nterminus_key: {{terminus_key}}\n\n持续时间: {{trigger_duration_min}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{application_name}}应用{{service_name}}服务JVM GC耗时异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_resource_jvm_gc_time","app_resource","","应用JVM GC耗时异常恢复","sms","{{application_name}}应用{{service_name}}服务触发JVM GC耗时异常告警,terminus_key: {{terminus_key}}\n","【{{application_name}}应用{{service_name}}服务JVM GC耗时异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_resource_jvm_gc_time","app_resource","","应用JVM GC耗时异常恢复","vms","{{application_name}}应用{{service_name}}服务触发JVM GC耗时异常告警,terminus_key: {{terminus_key}}\n","【{{application_name}}应用{{service_name}}服务JVM GC耗时异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_resource_jvm_heap","app_resource","{\"max_value\":\"size:byte\",\"usage_percent_avg\":\"percent\",\"used_value\":\"size:byte\"}","JVM堆内存使用异常告警","dingding","【JVM堆内存使用异常告警】\n\n实例JVM堆内存使用过高 !\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} / {{service_name}}\n\n实例: {{instance_id}}\n\n堆内存使用率: {{usage_percent_avg}}\n\n已使用: {{used_value}}\n\n最大使用: {{max_value}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\nterminus_key: {{terminus_key}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【{{application_name}}应用{{service_name}}服务JVM堆内存使用异常告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_resource_jvm_heap","app_resource","{\"max_value\":\"size:byte\",\"usage_percent_avg\":\"percent\",\"used_value\":\"size:byte\"}","JVM堆内存使用异常告警","ticket","【JVM堆内存使用异常告警】\n\n实例JVM堆内存使用过高 !\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} / {{service_name}}\n\n实例: {{instance_id}}\n\n堆内存使用率: {{usage_percent_avg}}\n\n已使用: {{used_value}}\n\n最大使用: {{max_value}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\nterminus_key: {{terminus_key}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【{{application_name}}应用{{service_name}}服务JVM堆内存使用异常告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_resource_jvm_heap","app_resource","{\"max_value\":\"size:byte\",\"usage_percent_avg\":\"percent\",\"used_value\":\"size:byte\"}","JVM堆内存使用异常告警","email","【JVM堆内存使用异常告警】\n\n实例JVM堆内存使用过高 !\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} / {{service_name}}\n\n实例: {{instance_id}}\n\n堆内存使用率: {{usage_percent_avg}}\n\n已使用: {{used_value}}\n\n最大使用: {{max_value}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\nterminus_key: {{terminus_key}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【{{application_name}}应用{{service_name}}服务JVM堆内存使用异常告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_resource_jvm_heap","app_resource","{\"max_value\":\"size:byte\",\"usage_percent_avg\":\"percent\",\"used_value\":\"size:byte\"}","JVM堆内存使用异常告警","mbox","【JVM堆内存使用异常告警】\n\n实例JVM堆内存使用过高 !\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} / {{service_name}}\n\n实例: {{instance_id}}\n\n堆内存使用率: {{usage_percent_avg}}\n\n已使用: {{used_value}}\n\n最大使用: {{max_value}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\nterminus_key: {{terminus_key}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【{{application_name}}应用{{service_name}}服务JVM堆内存使用异常告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_resource_jvm_heap","app_resource","{\"max_value\":\"size:byte\",\"usage_percent_avg\":\"percent\",\"used_value\":\"size:byte\"}","JVM堆内存使用异常告警","webhook","【JVM堆内存使用异常告警】\n\n实例JVM堆内存使用过高 !\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} / {{service_name}}\n\n实例: {{instance_id}}\n\n堆内存使用率: {{usage_percent_avg}}\n\n已使用: {{used_value}}\n\n最大使用: {{max_value}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\nterminus_key: {{terminus_key}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【{{application_name}}应用{{service_name}}服务JVM堆内存使用异常告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_resource_jvm_heap","app_resource","{\"max_value\":\"size:byte\",\"usage_percent_avg\":\"percent\",\"used_value\":\"size:byte\"}","JVM堆内存使用异常告警","sms","{{application_name}}应用{{service_name}}服务触发JVM堆内存使用异常告警,terminus_key: {{terminus_key}},堆内存使用率: {{usage_percent_avg}}\n","【{{application_name}}应用{{service_name}}服务JVM堆内存使用异常告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_resource_jvm_heap","app_resource","{\"max_value\":\"size:byte\",\"usage_percent_avg\":\"percent\",\"used_value\":\"size:byte\"}","JVM堆内存使用异常告警","vms","{{application_name}}应用{{service_name}}服务触发JVM堆内存使用异常告警,terminus_key: {{terminus_key}},堆内存使用率: {{usage_percent_avg}}\n","【{{application_name}}应用{{service_name}}服务JVM堆内存使用异常告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_resource_jvm_heap","app_resource","{\"usage_percent_avg\":\"percent\"}","JVM堆内存使用异常恢复","dingding","【JVM堆内存使用异常恢复】\n\n实例JVM堆内存已恢复正常使用状态 .\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} / {{service_name}}\n\n实例: {{instance_id}}\n\n堆内存使用率: {{usage_percent_avg}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\nterminus_key: {{terminus_key}}\n\n持续时间: {{trigger_duration_min}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{application_name}}应用{{service_name}}服务JVM堆内存使用异常恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_resource_jvm_heap","app_resource","{\"usage_percent_avg\":\"percent\"}","JVM堆内存使用异常恢复","ticket","【JVM堆内存使用异常恢复】\n\n实例JVM堆内存已恢复正常使用状态 .\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} / {{service_name}}\n\n实例: {{instance_id}}\n\n堆内存使用率: {{usage_percent_avg}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\nterminus_key: {{terminus_key}}\n\n持续时间: {{trigger_duration_min}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{application_name}}应用{{service_name}}服务JVM堆内存使用异常恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_resource_jvm_heap","app_resource","{\"usage_percent_avg\":\"percent\"}","JVM堆内存使用异常恢复","email","【JVM堆内存使用异常恢复】\n\n实例JVM堆内存已恢复正常使用状态 .\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} / {{service_name}}\n\n实例: {{instance_id}}\n\n堆内存使用率: {{usage_percent_avg}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\nterminus_key: {{terminus_key}}\n\n持续时间: {{trigger_duration_min}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{application_name}}应用{{service_name}}服务JVM堆内存使用异常恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_resource_jvm_heap","app_resource","{\"usage_percent_avg\":\"percent\"}","JVM堆内存使用异常恢复","mbox","【JVM堆内存使用异常恢复】\n\n实例JVM堆内存已恢复正常使用状态 .\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} / {{service_name}}\n\n实例: {{instance_id}}\n\n堆内存使用率: {{usage_percent_avg}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\nterminus_key: {{terminus_key}}\n\n持续时间: {{trigger_duration_min}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{application_name}}应用{{service_name}}服务JVM堆内存使用异常恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_resource_jvm_heap","app_resource","{\"usage_percent_avg\":\"percent\"}","JVM堆内存使用异常恢复","webhook","【JVM堆内存使用异常恢复】\n\n实例JVM堆内存已恢复正常使用状态 .\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} / {{service_name}}\n\n实例: {{instance_id}}\n\n堆内存使用率: {{usage_percent_avg}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\nterminus_key: {{terminus_key}}\n\n持续时间: {{trigger_duration_min}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{application_name}}应用{{service_name}}服务JVM堆内存使用异常恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_resource_jvm_heap","app_resource","{\"usage_percent_avg\":\"percent\"}","JVM堆内存使用异常恢复","sms","{{application_name}}应用{{service_name}}服务触发JVM堆内存使用率告警恢复,terminus_key: {{terminus_key}},堆内存使用率: {{usage_percent_avg}}\n","【{{application_name}}应用{{service_name}}服务JVM堆内存使用异常恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_resource_jvm_heap","app_resource","{\"usage_percent_avg\":\"percent\"}","JVM堆内存使用异常恢复","vms","{{application_name}}应用{{service_name}}服务触发JVM堆内存使用率告警恢复,terminus_key: {{terminus_key}},堆内存使用率: {{usage_percent_avg}}\n","【{{application_name}}应用{{service_name}}服务JVM堆内存使用异常恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_resource_nodejs_heap","app_resource","{\"heap_used_value\":\"size:byte\",\"max_value\":\"size:byte\",\"rss_value\":\"size:byte\",\"usage_percent_avg\":\"percent\"}","应用NodeJS堆内存使用异常告警","dingding","【应用NodeJS堆内存使用异常告警】\n\n实例NodeJS堆内存使用过高 !\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} / {{service_name}}\n\n实例: {{instance_id}}\n\n堆内存使用率: {{usage_percent_avg}}\n\n已使用: {{heap_used_value}}\n\n常驻内存: {{rss_value}}\n\n最大使用: {{max_value}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\nterminus_key: {{terminus_key}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【{{application_name}}应用{{service_name}}服务NodeJS堆内存使用异常告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_resource_nodejs_heap","app_resource","{\"heap_used_value\":\"size:byte\",\"max_value\":\"size:byte\",\"rss_value\":\"size:byte\",\"usage_percent_avg\":\"percent\"}","应用NodeJS堆内存使用异常告警","ticket","【应用NodeJS堆内存使用异常告警】\n\n实例NodeJS堆内存使用过高 !\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} / {{service_name}}\n\n实例: {{instance_id}}\n\n堆内存使用率: {{usage_percent_avg}}\n\n已使用: {{heap_used_value}}\n\n常驻内存: {{rss_value}}\n\n最大使用: {{max_value}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\nterminus_key: {{terminus_key}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【{{application_name}}应用{{service_name}}服务NodeJS堆内存使用异常告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_resource_nodejs_heap","app_resource","{\"heap_used_value\":\"size:byte\",\"max_value\":\"size:byte\",\"rss_value\":\"size:byte\",\"usage_percent_avg\":\"percent\"}","应用NodeJS堆内存使用异常告警","email","【应用NodeJS堆内存使用异常告警】\n\n实例NodeJS堆内存使用过高 !\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} / {{service_name}}\n\n实例: {{instance_id}}\n\n堆内存使用率: {{usage_percent_avg}}\n\n已使用: {{heap_used_value}}\n\n常驻内存: {{rss_value}}\n\n最大使用: {{max_value}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\nterminus_key: {{terminus_key}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【{{application_name}}应用{{service_name}}服务NodeJS堆内存使用异常告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_resource_nodejs_heap","app_resource","{\"heap_used_value\":\"size:byte\",\"max_value\":\"size:byte\",\"rss_value\":\"size:byte\",\"usage_percent_avg\":\"percent\"}","应用NodeJS堆内存使用异常告警","mbox","【应用NodeJS堆内存使用异常告警】\n\n实例NodeJS堆内存使用过高 !\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} / {{service_name}}\n\n实例: {{instance_id}}\n\n堆内存使用率: {{usage_percent_avg}}\n\n已使用: {{heap_used_value}}\n\n常驻内存: {{rss_value}}\n\n最大使用: {{max_value}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\nterminus_key: {{terminus_key}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【{{application_name}}应用{{service_name}}服务NodeJS堆内存使用异常告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_resource_nodejs_heap","app_resource","{\"heap_used_value\":\"size:byte\",\"max_value\":\"size:byte\",\"rss_value\":\"size:byte\",\"usage_percent_avg\":\"percent\"}","应用NodeJS堆内存使用异常告警","webhook","【应用NodeJS堆内存使用异常告警】\n\n实例NodeJS堆内存使用过高 !\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} / {{service_name}}\n\n实例: {{instance_id}}\n\n堆内存使用率: {{usage_percent_avg}}\n\n已使用: {{heap_used_value}}\n\n常驻内存: {{rss_value}}\n\n最大使用: {{max_value}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\nterminus_key: {{terminus_key}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【{{application_name}}应用{{service_name}}服务NodeJS堆内存使用异常告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_resource_nodejs_heap","app_resource","{\"heap_used_value\":\"size:byte\",\"max_value\":\"size:byte\",\"rss_value\":\"size:byte\",\"usage_percent_avg\":\"percent\"}","应用NodeJS堆内存使用率异常告警","sms","{{application_name}}应用{{service_name}}服务触发NodeJS堆内存使用率过高异常告警,terminus_key: {{terminus_key}},堆内存使用率: {{usage_percent_avg}}\n","【{{application_name}}应用{{service_name}}服务NodeJS堆内存使用异常告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_resource_nodejs_heap","app_resource","{\"heap_used_value\":\"size:byte\",\"max_value\":\"size:byte\",\"rss_value\":\"size:byte\",\"usage_percent_avg\":\"percent\"}","应用NodeJS堆内存使用异常告警","vms","{{application_name}}应用{{service_name}}服务触发NodeJS堆内存使用率过高异常告警,terminus_key: {{terminus_key}},堆内存使用率: {{usage_percent_avg}}\n","【{{application_name}}应用{{service_name}}服务NodeJS堆内存使用异常告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_resource_nodejs_heap","app_resource","{\"usage_percent_avg\":\"percent\"}","应用NodeJS堆内存使用率异常恢复","dingding","【应用NodeJS堆内存使用异常恢复】\n\nNodeJS堆内存已恢复恢复正常状态 .\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} / {{service_name}}\n\n实例: {{instance_id}}\n\n堆内存使用率: {{usage_percent_avg}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\nterminus_key: {{terminus_key}}\n\n持续时间: {{trigger_duration_min}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{application_name}}应用{{service_name}}服务NodeJS堆内存使用异常恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_resource_nodejs_heap","app_resource","{\"usage_percent_avg\":\"percent\"}","应用NodeJS堆内存使用率异常恢复","ticket","【应用NodeJS堆内存使用异常恢复】\n\nNodeJS堆内存已恢复恢复正常状态 .\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} / {{service_name}}\n\n实例: {{instance_id}}\n\n堆内存使用率: {{usage_percent_avg}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\nterminus_key: {{terminus_key}}\n\n持续时间: {{trigger_duration_min}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{application_name}}应用{{service_name}}服务NodeJS堆内存使用异常恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_resource_nodejs_heap","app_resource","{\"usage_percent_avg\":\"percent\"}","应用NodeJS堆内存使用率异常恢复","email","【应用NodeJS堆内存使用异常恢复】\n\nNodeJS堆内存已恢复恢复正常状态 .\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} / {{service_name}}\n\n实例: {{instance_id}}\n\n堆内存使用率: {{usage_percent_avg}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\nterminus_key: {{terminus_key}}\n\n持续时间: {{trigger_duration_min}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{application_name}}应用{{service_name}}服务NodeJS堆内存使用异常恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_resource_nodejs_heap","app_resource","{\"usage_percent_avg\":\"percent\"}","应用NodeJS堆内存使用率异常恢复","mbox","【应用NodeJS堆内存使用异常恢复】\n\nNodeJS堆内存已恢复恢复正常状态 .\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} / {{service_name}}\n\n实例: {{instance_id}}\n\n堆内存使用率: {{usage_percent_avg}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\nterminus_key: {{terminus_key}}\n\n持续时间: {{trigger_duration_min}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{application_name}}应用{{service_name}}服务NodeJS堆内存使用异常恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_resource_nodejs_heap","app_resource","{\"usage_percent_avg\":\"percent\"}","应用NodeJS堆内存使用率异常恢复","webhook","【应用NodeJS堆内存使用异常恢复】\n\nNodeJS堆内存已恢复恢复正常状态 .\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} / {{service_name}}\n\n实例: {{instance_id}}\n\n堆内存使用率: {{usage_percent_avg}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\nterminus_key: {{terminus_key}}\n\n持续时间: {{trigger_duration_min}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{application_name}}应用{{service_name}}服务NodeJS堆内存使用异常恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_resource_nodejs_heap","app_resource","{\"usage_percent_avg\":\"percent\"}","应用NodeJS堆内存使用异常恢复","sms","{application_name}}应用{{service_name}}服务触发NodeJS堆内存使用率异常告警恢复,terminus_key: {{terminus_key}},堆内存使用率: {{usage_percent_avg}}\n","【{{application_name}}应用{{service_name}}服务NodeJS堆内存使用异常恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_resource_nodejs_heap","app_resource","{\"usage_percent_avg\":\"percent\"}","应用NodeJS堆内存使用异常恢复","vms","{application_name}}应用{{service_name}}服务触发NodeJS堆内存使用率异常告警恢复,terminus_key: {{terminus_key}},堆内存使用率: {{usage_percent_avg}}\n","【{{application_name}}应用{{service_name}}服务NodeJS堆内存使用异常恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_status_browser","app_status",""," 页面内容改变","dingding","【页面内容改变告警】\n\n项目: {{project_name}}\n\n环境: {{workspace}}\n\nterminus_key: {{terminus_key}}\n\n事件:[{{status_metric_name}}]({{url}})页面内容和基准点对比不一致\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【{{project_name}}项目{{status_metric_name}}页面内容改变告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_status_browser","app_status",""," 页面内容改变","ticket","【页面内容改变告警】\n\n项目: {{project_name}}\n\n环境: {{workspace}}\n\nterminus_key: {{terminus_key}}\n\n事件:[{{status_metric_name}}]({{url}})页面内容和基准点对比不一致\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【{{project_name}}项目{{status_metric_name}}页面内容改变告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_status_browser","app_status",""," 页面内容改变","email","【页面内容改变告警】\n\n项目: {{project_name}}\n\n环境: {{workspace}}\n\nterminus_key: {{terminus_key}}\n\n事件:[{{status_metric_name}}]({{url}})页面内容和基准点对比不一致\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【{{project_name}}项目{{status_metric_name}}页面内容改变告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_status_browser","app_status",""," 页面内容改变","mbox","【页面内容改变告警】\n\n项目: {{project_name}}\n\n环境: {{workspace}}\n\nterminus_key: {{terminus_key}}\n\n事件:[{{status_metric_name}}]({{url}})页面内容和基准点对比不一致\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【{{project_name}}项目{{status_metric_name}}页面内容改变告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_status_browser","app_status",""," 页面内容改变","webhook","【页面内容改变告警】\n\n项目: {{project_name}}\n\n环境: {{workspace}}\n\nterminus_key: {{terminus_key}}\n\n事件:[{{status_metric_name}}]({{url}})页面内容和基准点对比不一致\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【{{project_name}}项目{{status_metric_name}}页面内容改变告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_status_browser","app_status",""," 页面内容改变","sms","[{{project_name}}]页面内容和基准点对比不一致,触发页面内容改变告警,terminus_key: {{terminus_key}}\n","【{{project_name}}项目{{status_metric_name}}页面内容改变告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_status_browser","app_status",""," 页面内容改变","vms","{{project_name}}项目页面内容和基准点对比不一致,触发页面内容改变告警,terminus_key: {{terminus_key}}\n","【{{project_name}}项目{{status_metric_name}}页面内容改变告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_status_browser","app_status","{\"trigger_duration\":\"time:ms\"}"," 页面内容改变告警恢复","dingding","【页面内容改变恢复】\n\n{{status_metric_name}}]({{url}})触发页面内容改变告警恢复\n\n项目: {{project_name}}\n\n环境: {{workspace}}\n\nterminus_key: {{terminus_key}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{project_name}}项目{{status_metric_name}}页面内容改变恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_status_browser","app_status","{\"trigger_duration\":\"time:ms\"}"," 页面内容改变告警恢复","ticket","【页面内容改变恢复】\n\n{{status_metric_name}}]({{url}})触发页面内容改变告警恢复\n\n项目: {{project_name}}\n\n环境: {{workspace}}\n\nterminus_key: {{terminus_key}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{project_name}}项目{{status_metric_name}}页面内容改变恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_status_browser","app_status","{\"trigger_duration\":\"time:ms\"}"," 页面内容改变告警恢复","email","【页面内容改变恢复】\n\n{{status_metric_name}}]({{url}})触发页面内容改变告警恢复\n\n项目: {{project_name}}\n\n环境: {{workspace}}\n\nterminus_key: {{terminus_key}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{project_name}}项目{{status_metric_name}}页面内容改变恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_status_browser","app_status","{\"trigger_duration\":\"time:ms\"}"," 页面内容改变告警恢复","mbox","【页面内容改变恢复】\n\n{{status_metric_name}}]({{url}})触发页面内容改变告警恢复\n\n项目: {{project_name}}\n\n环境: {{workspace}}\n\nterminus_key: {{terminus_key}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{project_name}}项目{{status_metric_name}}页面内容改变恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_status_browser","app_status","{\"trigger_duration\":\"time:ms\"}"," 页面内容改变告警恢复","webhook","【页面内容改变恢复】\n\n{{status_metric_name}}]({{url}})触发页面内容改变告警恢复\n\n项目: {{project_name}}\n\n环境: {{workspace}}\n\nterminus_key: {{terminus_key}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{project_name}}项目{{status_metric_name}}页面内容改变恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_status_browser","app_status","{\"trigger_duration\":\"time:ms\"}"," 业务请求状态异常告警恢复","sms","{{project_name}}项目触发页面内容改变告警恢复,terminus_key: {{terminus_key}}\n","【{{project_name}}项目{{status_metric_name}}页面内容改变恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_status_browser","app_status","{\"trigger_duration\":\"time:ms\"}"," 业务请求状态异常告警恢复","vms","{{project_name}}项目触发页面内容改变告警恢复,terminus_key: {{terminus_key}}\n","【{{project_name}}项目{{status_metric_name}}页面内容改变恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_status_code","app_status",""," 主动监控HTTP状态异常","dingding","【主动监控HTTP状态异常】\n\n项目: {{project_name}}\n\n环境: {{workspace}}\n\n事件: [{{status_metric_name}}]({{url}}) 指标状态异常\n\n响应状态码: {{code_min}}\n\nterminus_key: {{terminus_key}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【{{project_name}}项目{{status_metric_name}}指标HTTP状态异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_status_code","app_status",""," 主动监控HTTP状态异常","ticket","【主动监控HTTP状态异常】\n\n项目: {{project_name}}\n\n环境: {{workspace}}\n\n事件: [{{status_metric_name}}]({{url}}) 指标状态异常\n\n响应状态码: {{code_min}}\n\nterminus_key: {{terminus_key}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【{{project_name}}项目{{status_metric_name}}指标HTTP状态异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_status_code","app_status",""," 主动监控HTTP状态异常","email","【主动监控HTTP状态异常】\n\n项目: {{project_name}}\n\n环境: {{workspace}}\n\n事件: [{{status_metric_name}}]({{url}}) 指标状态异常\n\n响应状态码: {{code_min}}\n\nterminus_key: {{terminus_key}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【{{project_name}}项目{{status_metric_name}}指标HTTP状态异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_status_code","app_status",""," 主动监控HTTP状态异常","mbox","【主动监控HTTP状态异常】\n\n项目: {{project_name}}\n\n环境: {{workspace}}\n\n事件: [{{status_metric_name}}]({{url}}) 指标状态异常\n\n响应状态码: {{code_min}}\n\nterminus_key: {{terminus_key}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【{{project_name}}项目{{status_metric_name}}指标HTTP状态异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_status_code","app_status",""," 主动监控HTTP状态异常","webhook","【主动监控HTTP状态异常】\n\n项目: {{project_name}}\n\n环境: {{workspace}}\n\n事件: [{{status_metric_name}}]({{url}}) 指标状态异常\n\n响应状态码: {{code_min}}\n\nterminus_key: {{terminus_key}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【{{project_name}}项目{{status_metric_name}}指标HTTP状态异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_status_code","app_status",""," 主动监控HTTP状态异常","sms","{{project_name}}项目{{status_metric_name}}指标状态异常,terminus_key: {{terminus_key}},响应状态码: {{code_min}}\n","【{{project_name}}项目{{status_metric_name}}指标HTTP状态异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_status_code","app_status",""," 主动监控HTTP状态异常","vms","{{project_name}}项目{{status_metric_name}}指标状态异常,terminus_key: {{terminus_key}},响应状态码: {{code_min}}\n","【{{project_name}}项目{{status_metric_name}}指标HTTP状态异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_status_code","app_status","{\"trigger_duration\":\"time:ms\"}","主动监控HTTP状态恢复","dingding","【主动监控HTTP状态恢复】\n\n项目: {{project_name}}\n\n环境: {{workspace}}\n\n事件: [{{status_metric_name}}]({{url}}) 指标状态恢复\n\n响应状态码: {{code_min}}\n\nterminus_key: {{terminus_key}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{project_name}}项目{{status_metric_name}}指标HTTP状态恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_status_code","app_status","{\"trigger_duration\":\"time:ms\"}","主动监控HTTP状态恢复","ticket","【主动监控HTTP状态恢复】\n\n项目: {{project_name}}\n\n环境: {{workspace}}\n\n事件: [{{status_metric_name}}]({{url}}) 指标状态恢复\n\n响应状态码: {{code_min}}\n\nterminus_key: {{terminus_key}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{project_name}}项目{{status_metric_name}}指标HTTP状态恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_status_code","app_status","{\"trigger_duration\":\"time:ms\"}","主动监控HTTP状态恢复","email","【主动监控HTTP状态恢复】\n\n项目: {{project_name}}\n\n环境: {{workspace}}\n\n事件: [{{status_metric_name}}]({{url}}) 指标状态恢复\n\n响应状态码: {{code_min}}\n\nterminus_key: {{terminus_key}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{project_name}}项目{{status_metric_name}}指标HTTP状态恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_status_code","app_status","{\"trigger_duration\":\"time:ms\"}","主动监控HTTP状态恢复","mbox","【主动监控HTTP状态恢复】\n\n项目: {{project_name}}\n\n环境: {{workspace}}\n\n事件: [{{status_metric_name}}]({{url}}) 指标状态恢复\n\n响应状态码: {{code_min}}\n\nterminus_key: {{terminus_key}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{project_name}}项目{{status_metric_name}}指标HTTP状态恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_status_code","app_status","{\"trigger_duration\":\"time:ms\"}","主动监控HTTP状态恢复","webhook","【主动监控HTTP状态恢复】\n\n项目: {{project_name}}\n\n环境: {{workspace}}\n\n事件: [{{status_metric_name}}]({{url}}) 指标状态恢复\n\n响应状态码: {{code_min}}\n\nterminus_key: {{terminus_key}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{project_name}}项目{{status_metric_name}}指标HTTP状态恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_status_code","app_status","{\"trigger_duration\":\"time:ms\"}","主动监控HTTP状态恢复","sms","{{project_name}}项目{{status_metric_name}}指标状态恢复,terminus_key: {{terminus_key}},响应状态码: {{code_min}}\n","【{{project_name}}项目{{status_metric_name}}指标HTTP状态恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_status_code","app_status","{\"trigger_duration\":\"time:ms\"}","主动监控HTTP状态恢复","vms","{{project_name}}项目{{status_metric_name}}指标状态恢复,terminus_key: {{terminus_key}},响应状态码: {{code_min}}\n","【{{project_name}}项目{{status_metric_name}}指标HTTP状态恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_transaction_http_path_error","app_transaction","{\"error_percent_value\":\"percent\"}","服务接口HTTP错误率异常","dingding","【服务接口HTTP错误率异常告警】\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} - {{service_name}}\n\n接口: {{http_method}} {{http_url}}\n\n事件: {{ window }}分钟内HTTP错误率{{ error_percent_value }} 错误请求次数{{ error_count_sum }} 总请求次数{{ elapsed_count_sum }}\n\nterminus_key: {{target_terminus_key}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【{{service_name}}服务接口HTTP错误率异常告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_transaction_http_path_error","app_transaction","{\"error_percent_value\":\"percent\"}","服务接口HTTP错误率异常","ticket","【服务接口HTTP错误率异常告警】\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} - {{service_name}}\n\n接口: {{http_method}} {{http_url}}\n\n事件: {{ window }}分钟内HTTP错误率{{ error_percent_value }} 错误请求次数{{ error_count_sum }} 总请求次数{{ elapsed_count_sum }}\n\nterminus_key: {{target_terminus_key}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【{{service_name}}服务接口HTTP错误率异常告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_transaction_http_path_error","app_transaction","{\"error_percent_value\":\"percent\"}","服务接口HTTP错误率异常","email","【服务接口HTTP错误率异常告警】\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} - {{service_name}}\n\n接口: {{http_method}} {{http_url}}\n\n事件: {{ window }}分钟内HTTP错误率{{ error_percent_value }} 错误请求次数{{ error_count_sum }} 总请求次数{{ elapsed_count_sum }}\n\nterminus_key: {{target_terminus_key}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【{{service_name}}服务接口HTTP错误率异常告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_transaction_http_path_error","app_transaction","{\"error_percent_value\":\"percent\"}","服务接口HTTP错误率异常","mbox","【服务接口HTTP错误率异常告警】\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} - {{service_name}}\n\n接口: {{http_method}} {{http_url}}\n\n事件: {{ window }}分钟内HTTP错误率{{ error_percent_value }} 错误请求次数{{ error_count_sum }} 总请求次数{{ elapsed_count_sum }}\n\nterminus_key: {{target_terminus_key}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【{{service_name}}服务接口HTTP错误率异常告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_transaction_http_path_error","app_transaction","{\"error_percent_value\":\"percent\"}","服务接口HTTP错误率异常","webhook","【服务接口HTTP错误率异常告警】\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} - {{service_name}}\n\n接口: {{http_method}} {{http_url}}\n\n事件: {{ window }}分钟内HTTP错误率{{ error_percent_value }} 错误请求次数{{ error_count_sum }} 总请求次数{{ elapsed_count_sum }}\n\nterminus_key: {{target_terminus_key}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【{{service_name}}服务接口HTTP错误率异常告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_transaction_http_path_error","app_transaction","{\"error_percent_value\":\"percent\"}","服务接口HTTP错误率异常","sms","{{ window }}分钟内HTTP错误率{{ error_percent_value }}触发服务接口HTTP错误率异常告警。terminus_key: {{target_terminus_key}},错误请求次数{{ error_count_sum }} 总请求次数{{ elapsed_count_sum }}\n","【{{service_name}}服务接口HTTP错误率异常告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_transaction_http_path_error","app_transaction","{\"error_percent_value\":\"percent\"}","服务接口HTTP错误率异常","vms","{{ window }}分钟内HTTP错误率{{ error_percent_value }}触发服务接口HTTP错误率异常告警。terminus_key: {{target_terminus_key}},错误请求次数{{ error_count_sum }} 总请求次数{{ elapsed_count_sum }}\n","【{{service_name}}服务接口HTTP错误率异常告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_transaction_http_path_error","app_transaction","{\"trigger_duration\":\"time:ms\"}","服务接口HTTP错误率恢复","dingding","【服务接口HTTP错误率异常恢复】\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} - {{service_name}}\n\n接口: {{http_method}} {{http_url}}\n\nterminus_key: {{target_terminus_key}}\n\n持续时间: {{trigger_duration_min}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{service_name}}服务接口HTTP错误率异常恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_transaction_http_path_error","app_transaction","{\"trigger_duration\":\"time:ms\"}","服务接口HTTP错误率恢复","ticket","【服务接口HTTP错误率异常恢复】\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} - {{service_name}}\n\n接口: {{http_method}} {{http_url}}\n\nterminus_key: {{target_terminus_key}}\n\n持续时间: {{trigger_duration_min}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{service_name}}服务接口HTTP错误率异常恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_transaction_http_path_error","app_transaction","{\"trigger_duration\":\"time:ms\"}","服务接口HTTP错误率恢复","email","【服务接口HTTP错误率异常恢复】\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} - {{service_name}}\n\n接口: {{http_method}} {{http_url}}\n\nterminus_key: {{target_terminus_key}}\n\n持续时间: {{trigger_duration_min}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{service_name}}服务接口HTTP错误率异常恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_transaction_http_path_error","app_transaction","{\"trigger_duration\":\"time:ms\"}","服务接口HTTP错误率恢复","mbox","【服务接口HTTP错误率异常恢复】\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} - {{service_name}}\n\n接口: {{http_method}} {{http_url}}\n\nterminus_key: {{target_terminus_key}}\n\n持续时间: {{trigger_duration_min}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{service_name}}服务接口HTTP错误率异常恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_transaction_http_path_error","app_transaction","{\"trigger_duration\":\"time:ms\"}","服务接口HTTP错误率恢复","webhook","【服务接口HTTP错误率异常恢复】\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} - {{service_name}}\n\n接口: {{http_method}} {{http_url}}\n\nterminus_key: {{target_terminus_key}}\n\n持续时间: {{trigger_duration_min}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{service_name}}服务接口HTTP错误率异常恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_transaction_http_path_error","app_transaction","{\"trigger_duration\":\"time:ms\"}","服务接口HTTP错误率恢复","sms","{{service_name}}触发服务接口HTTP错误率异常恢复,接口: {{http_method}},terminus_key: {{target_terminus_key}}\n","【{{service_name}}服务接口HTTP错误率异常恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_transaction_http_path_error","app_transaction","{\"trigger_duration\":\"time:ms\"}","服务接口HTTP错误率恢复","vms","{{service_name}}触发服务接口HTTP错误率异常恢复,接口: {{http_method}},terminus_key: {{target_terminus_key}}\n","【{{service_name}}服务接口HTTP错误率异常恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_transaction_http_path_rt","app_transaction","{\"elapsed_avg_value\":\"time:ms\",\"elapsed_sum\":\"time:ms\"}","服务接口HTTP慢事务异常","dingding","【服务接口HTTP慢事务异常告警】\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} - {{service_name}}\n\n接口: {{http_method}} {{http_url}}\n\n事件: {{window}}分钟内平均响应时间{{elapsed_avg_value}} 请求次数{{elapsed_count_sum}}\n\nterminus_key: {{target_terminus_key}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【{{service_name}}服务接口HTTP慢事务异常告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_transaction_http_path_rt","app_transaction","{\"elapsed_avg_value\":\"time:ms\",\"elapsed_sum\":\"time:ms\"}","服务接口HTTP慢事务异常","ticket","【服务接口HTTP慢事务异常告警】\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} - {{service_name}}\n\n接口: {{http_method}} {{http_url}}\n\n事件: {{window}}分钟内平均响应时间{{elapsed_avg_value}} 请求次数{{elapsed_count_sum}}\n\nterminus_key: {{target_terminus_key}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【{{service_name}}服务接口HTTP慢事务异常告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_transaction_http_path_rt","app_transaction","{\"elapsed_avg_value\":\"time:ms\",\"elapsed_sum\":\"time:ms\"}","服务接口HTTP慢事务异常","email","【服务接口HTTP慢事务异常告警】\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} - {{service_name}}\n\n接口: {{http_method}} {{http_url}}\n\n事件: {{window}}分钟内平均响应时间{{elapsed_avg_value}} 请求次数{{elapsed_count_sum}}\n\nterminus_key: {{target_terminus_key}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【{{service_name}}服务接口HTTP慢事务异常告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_transaction_http_path_rt","app_transaction","{\"elapsed_avg_value\":\"time:ms\",\"elapsed_sum\":\"time:ms\"}","服务接口HTTP慢事务异常","mbox","【服务接口HTTP慢事务异常告警】\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} - {{service_name}}\n\n接口: {{http_method}} {{http_url}}\n\n事件: {{window}}分钟内平均响应时间{{elapsed_avg_value}} 请求次数{{elapsed_count_sum}}\n\nterminus_key: {{target_terminus_key}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【{{service_name}}服务接口HTTP慢事务异常告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_transaction_http_path_rt","app_transaction","{\"elapsed_avg_value\":\"time:ms\",\"elapsed_sum\":\"time:ms\"}","服务接口HTTP慢事务异常","webhook","【服务接口HTTP慢事务异常告警】\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} - {{service_name}}\n\n接口: {{http_method}} {{http_url}}\n\n事件: {{window}}分钟内平均响应时间{{elapsed_avg_value}} 请求次数{{elapsed_count_sum}}\n\nterminus_key: {{target_terminus_key}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【{{service_name}}服务接口HTTP慢事务异常告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_transaction_http_path_rt","app_transaction","{\"elapsed_avg_value\":\"time:ms\",\"elapsed_sum\":\"time:ms\"}","服务接口HTTP慢事务异常","sms","{{service_name}}服务接口HTTP慢事务异常,{{window}}分钟内平均响应时间{{elapsed_avg_value}} 请求次数{{elapsed_count_sum}},请及时处理。查看记录:{{record_url}}\n","【{{service_name}}服务接口HTTP慢事务异常告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_transaction_http_path_rt","app_transaction","{\"elapsed_avg_value\":\"time:ms\",\"elapsed_sum\":\"time:ms\"}","服务接口HTTP慢事务异常","vms","{{service_name}}服务触发服务接口HTTP慢事务异常告警,terminus_key: {{target_terminus_key}},{{window}}分钟内平均响应时间{{elapsed_avg_value}},请求次数{{elapsed_count_sum}}\n","【{{service_name}}服务接口HTTP慢事务异常告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_transaction_http_path_rt","app_transaction","{\"trigger_duration\":\"time:ms\"}","服务接口HTTP慢事务恢复","dingding","【服务接口HTTP慢事务恢复】\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} - {{service_name}}\n\n接口: {{http_method}} {{http_url}}\n\nterminus_key: {{target_terminus_key}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{service_name}}服务接口HTTP慢事务恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_transaction_http_path_rt","app_transaction","{\"trigger_duration\":\"time:ms\"}","服务接口HTTP慢事务恢复","ticket","【服务接口HTTP慢事务恢复】\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} - {{service_name}}\n\n接口: {{http_method}} {{http_url}}\n\nterminus_key: {{target_terminus_key}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{service_name}}服务接口HTTP慢事务恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_transaction_http_path_rt","app_transaction","{\"trigger_duration\":\"time:ms\"}","服务接口HTTP慢事务恢复","email","【服务接口HTTP慢事务恢复】\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} - {{service_name}}\n\n接口: {{http_method}} {{http_url}}\n\nterminus_key: {{target_terminus_key}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{service_name}}服务接口HTTP慢事务恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_transaction_http_path_rt","app_transaction","{\"trigger_duration\":\"time:ms\"}","服务接口HTTP慢事务恢复","mbox","【服务接口HTTP慢事务恢复】\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} - {{service_name}}\n\n接口: {{http_method}} {{http_url}}\n\nterminus_key: {{target_terminus_key}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{service_name}}服务接口HTTP慢事务恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_transaction_http_path_rt","app_transaction","{\"trigger_duration\":\"time:ms\"}","服务接口HTTP慢事务恢复","webhook","【服务接口HTTP慢事务恢复】\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} - {{service_name}}\n\n接口: {{http_method}} {{http_url}}\n\nterminus_key: {{target_terminus_key}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{service_name}}服务接口HTTP慢事务恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_transaction_http_path_rt","app_transaction","{\"trigger_duration\":\"time:ms\"}","服务接口HTTP慢事务恢复","sms","{{service_name}}服务接口{{http_method}} {{http_url}}触发服务接口HTTP慢事务告警恢复,terminus_key: {{target_terminus_key}}\n","【{{service_name}}服务接口HTTP慢事务恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_transaction_http_path_rt","app_transaction","{\"trigger_duration\":\"time:ms\"}","服务接口HTTP慢事务恢复","vms","{{service_name}}服务接口{{http_method}} {{http_url}}触发服务接口HTTP慢事务告警恢复,terminus_key: {{target_terminus_key}}\n","【{{service_name}}服务接口HTTP慢事务恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_transaction_http_service_error","app_transaction","{\"error_percent_value\":\"percent\"}","服务HTTP错误率异常","dingding","【服务HTTP错误率异常告警】\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} - {{service_name}}\n\n事件: {{ window }}分钟内HTTP错误率{{ error_percent_value }} 错误请求次数{{ error_count_sum }} 总请求次数{{ elapsed_count_sum }}\n\nterminus_key: {{target_terminus_key}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【{{service_name}}服务HTTP错误率异常告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_transaction_http_service_error","app_transaction","{\"error_percent_value\":\"percent\"}","服务HTTP错误率异常","ticket","【服务HTTP错误率异常告警】\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} - {{service_name}}\n\n事件: {{ window }}分钟内HTTP错误率{{ error_percent_value }} 错误请求次数{{ error_count_sum }} 总请求次数{{ elapsed_count_sum }}\n\nterminus_key: {{target_terminus_key}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【{{service_name}}服务HTTP错误率异常告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_transaction_http_service_error","app_transaction","{\"error_percent_value\":\"percent\"}","服务HTTP错误率异常","email","【服务HTTP错误率异常告警】\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} - {{service_name}}\n\n事件: {{ window }}分钟内HTTP错误率{{ error_percent_value }} 错误请求次数{{ error_count_sum }} 总请求次数{{ elapsed_count_sum }}\n\nterminus_key: {{target_terminus_key}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【{{service_name}}服务HTTP错误率异常告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_transaction_http_service_error","app_transaction","{\"error_percent_value\":\"percent\"}","服务HTTP错误率异常","mbox","【服务HTTP错误率异常告警】\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} - {{service_name}}\n\n事件: {{ window }}分钟内HTTP错误率{{ error_percent_value }} 错误请求次数{{ error_count_sum }} 总请求次数{{ elapsed_count_sum }}\n\nterminus_key: {{target_terminus_key}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【{{service_name}}服务HTTP错误率异常告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_transaction_http_service_error","app_transaction","{\"error_percent_value\":\"percent\"}","服务HTTP错误率异常","webhook","【服务HTTP错误率异常告警】\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} - {{service_name}}\n\n事件: {{ window }}分钟内HTTP错误率{{ error_percent_value }} 错误请求次数{{ error_count_sum }} 总请求次数{{ elapsed_count_sum }}\n\nterminus_key: {{target_terminus_key}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【{{service_name}}服务HTTP错误率异常告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_transaction_http_service_error","app_transaction","{\"error_percent_value\":\"percent\"}","服务HTTP错误率异常","sms","{{project_name}}项目{{application_name}}应用触发服务HTTP错误率异常告警,terminus_key: {{target_terminus_key}},{{ window }}分钟内HTTP错误率{{ error_percent_value }} 错误请求次数{{ error_count_sum }} 总请求次数{{ elapsed_count_sum }}\n","【{{service_name}}服务HTTP错误率异常告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_transaction_http_service_error","app_transaction","{\"error_percent_value\":\"percent\"}","服务HTTP错误率异常","vms","{{project_name}}项目{{application_name}}应用触发服务HTTP错误率异常告警,terminus_key: {{target_terminus_key}},{{ window }}分钟内HTTP错误率{{ error_percent_value }} 错误请求次数{{ error_count_sum }} 总请求次数{{ elapsed_count_sum }}\n","【{{service_name}}服务HTTP错误率异常告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_transaction_http_service_error","app_transaction","{\"trigger_duration\":\"time:ms\"}","服务HTTP错误率恢复","dingding","【服务HTTP错误率异常恢复】\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} - {{service_name}}\n\nterminus_key: {{target_terminus_key}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{service_name}}服务HTTP错误率恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_transaction_http_service_error","app_transaction","{\"trigger_duration\":\"time:ms\"}","服务HTTP错误率恢复","ticket","【服务HTTP错误率异常恢复】\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} - {{service_name}}\n\nterminus_key: {{target_terminus_key}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{service_name}}服务HTTP错误率恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_transaction_http_service_error","app_transaction","{\"trigger_duration\":\"time:ms\"}","服务HTTP错误率恢复","email","【服务HTTP错误率异常恢复】\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} - {{service_name}}\n\nterminus_key: {{target_terminus_key}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{service_name}}服务HTTP错误率恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_transaction_http_service_error","app_transaction","{\"trigger_duration\":\"time:ms\"}","服务HTTP错误率恢复","mbox","【服务HTTP错误率异常恢复】\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} - {{service_name}}\n\nterminus_key: {{target_terminus_key}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{service_name}}服务HTTP错误率恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_transaction_http_service_error","app_transaction","{\"trigger_duration\":\"time:ms\"}","服务HTTP错误率恢复","webhook","【服务HTTP错误率异常恢复】\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} - {{service_name}}\n\nterminus_key: {{target_terminus_key}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{service_name}}服务HTTP错误率恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_transaction_http_service_error","app_transaction","{\"trigger_duration\":\"time:ms\"}","服务HTTP错误率恢复","sms","{{project_name}}项目{{application_name}}应用触发服务HTTP错误率异常告警恢复,terminus_key: {{target_terminus_key}}\n","【{{service_name}}服务HTTP错误率恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_transaction_http_service_error","app_transaction","{\"trigger_duration\":\"time:ms\"}","服务HTTP错误率恢复","vms","{{project_name}}项目{{application_name}}应用触发服务HTTP错误率异常告警恢复,terminus_key: {{target_terminus_key}}\n","【{{service_name}}服务HTTP错误率恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_transaction_http_service_rt","app_transaction","{\"elapsed_avg_value\":\"time:ms\",\"elapsed_sum\":\"time:ms\"}","服务HTTP慢事务异常","dingding","【服务HTTP慢事务异常告警】\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} - {{service_name}}\n\n事件: {{window}}分钟内HTTP事务平均响应时间{{elapsed_avg_value}} 请求次数{{elapsed_count_sum}}\n\nterminus_key: {{target_terminus_key}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【应用{{service_name}}服务HTTP慢事务异常告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_transaction_http_service_rt","app_transaction","{\"elapsed_avg_value\":\"time:ms\",\"elapsed_sum\":\"time:ms\"}","服务HTTP慢事务异常","ticket","【服务HTTP慢事务异常告警】\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} - {{service_name}}\n\n事件: {{window}}分钟内HTTP事务平均响应时间{{elapsed_avg_value}} 请求次数{{elapsed_count_sum}}\n\nterminus_key: {{target_terminus_key}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【应用{{service_name}}服务HTTP慢事务异常告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_transaction_http_service_rt","app_transaction","{\"elapsed_avg_value\":\"time:ms\",\"elapsed_sum\":\"time:ms\"}","服务HTTP慢事务异常","email","【服务HTTP慢事务异常告警】\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} - {{service_name}}\n\n事件: {{window}}分钟内HTTP事务平均响应时间{{elapsed_avg_value}} 请求次数{{elapsed_count_sum}}\n\nterminus_key: {{target_terminus_key}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【应用{{service_name}}服务HTTP慢事务异常告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_transaction_http_service_rt","app_transaction","{\"elapsed_avg_value\":\"time:ms\",\"elapsed_sum\":\"time:ms\"}","服务HTTP慢事务异常","mbox","【服务HTTP慢事务异常告警】\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} - {{service_name}}\n\n事件: {{window}}分钟内HTTP事务平均响应时间{{elapsed_avg_value}} 请求次数{{elapsed_count_sum}}\n\nterminus_key: {{target_terminus_key}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【应用{{service_name}}服务HTTP慢事务异常告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_transaction_http_service_rt","app_transaction","{\"elapsed_avg_value\":\"time:ms\",\"elapsed_sum\":\"time:ms\"}","服务HTTP慢事务异常","webhook","【服务HTTP慢事务异常告警】\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} - {{service_name}}\n\n事件: {{window}}分钟内HTTP事务平均响应时间{{elapsed_avg_value}} 请求次数{{elapsed_count_sum}}\n\nterminus_key: {{target_terminus_key}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【应用{{service_name}}服务HTTP慢事务异常告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_transaction_http_service_rt","app_transaction","{\"elapsed_avg_value\":\"time:ms\",\"elapsed_sum\":\"time:ms\"}","服务HTTP慢事务异常","sms","{{application_name}}应用{{service_name}}服务触发服务HTTP慢事务异常告警,terminus_key: {{target_terminus_key}},{{window}}分钟内HTTP事务平均响应时间{{elapsed_avg_value}}请求次数{{elapsed_count_sum}}\n","【应用{{service_name}}服务HTTP慢事务异常告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_transaction_http_service_rt","app_transaction","{\"elapsed_avg_value\":\"time:ms\",\"elapsed_sum\":\"time:ms\"}","服务HTTP慢事务异常","vms","{{application_name}}应用{{service_name}}服务触发服务HTTP慢事务异常告警,terminus_key: {{target_terminus_key}},{{window}}分钟内HTTP事务平均响应时间{{elapsed_avg_value}}请求次数{{elapsed_count_sum}}\n","【应用{{service_name}}服务HTTP慢事务异常告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_transaction_http_service_rt","app_transaction","{\"trigger_duration\":\"time:ms\"}","服务HTTP慢事务异常恢复","dingding","【服务HTTP慢事务异常恢复】\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} - {{service_name}}\n\nterminus_key: {{target_terminus_key}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【应用{{service_name}}服务HTTP慢事务异常恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_transaction_http_service_rt","app_transaction","{\"trigger_duration\":\"time:ms\"}","服务HTTP慢事务异常恢复","ticket","【服务HTTP慢事务异常恢复】\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} - {{service_name}}\n\nterminus_key: {{target_terminus_key}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【应用{{service_name}}服务HTTP慢事务异常恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_transaction_http_service_rt","app_transaction","{\"trigger_duration\":\"time:ms\"}","服务HTTP慢事务异常恢复","email","【服务HTTP慢事务异常恢复】\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} - {{service_name}}\n\nterminus_key: {{target_terminus_key}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【应用{{service_name}}服务HTTP慢事务异常恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_transaction_http_service_rt","app_transaction","{\"trigger_duration\":\"time:ms\"}","服务HTTP慢事务异常恢复","mbox","【服务HTTP慢事务异常恢复】\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} - {{service_name}}\n\nterminus_key: {{target_terminus_key}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【应用{{service_name}}服务HTTP慢事务异常恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_transaction_http_service_rt","app_transaction","{\"trigger_duration\":\"time:ms\"}","服务HTTP慢事务异常恢复","webhook","【服务HTTP慢事务异常恢复】\n\n项目: {{project_name}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} - {{service_name}}\n\nterminus_key: {{target_terminus_key}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【应用{{service_name}}服务HTTP慢事务异常恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_transaction_http_service_rt","app_transaction","{\"trigger_duration\":\"time:ms\"}","服务HTTP慢事务异常恢复","sms","{{application_name}}应用{{service_name}}服务触发服务HTTP慢事务异常恢复,terminus_key: {{target_terminus_key}}\n","【应用{{service_name}}服务HTTP慢事务异常恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("app_transaction_http_service_rt","app_transaction","{\"trigger_duration\":\"time:ms\"}","服务HTTP慢事务异常恢复","vms","{{application_name}}应用{{service_name}}服务触发服务HTTP慢事务异常恢复,terminus_key: {{target_terminus_key}}\n","【应用{{service_name}}服务HTTP慢事务异常恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("slave_dly_alert","custom_addon","{\"limit_value\":\"fraction:1\",\"usage_percent_avg\":\"percent:1\"}","MySQL SLAVE DELAY ALERT","dingding","【MySQL {{window}}M 聚合时间内 SLAVE 延迟 {{slave_seconds_behind_master_max}}s】\n\n集群: {{cluster_name}}\n\nmysql: {{server_id}}\n\n延迟时间: {{slave_seconds_behind_master_max}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【MySQL {{window}}M 聚合时间内 SLAVE 延迟 {{slave_seconds_behind_master_max}}s】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("slave_dly_alert","custom_addon","{\"limit_value\":\"fraction:1\",\"usage_percent_avg\":\"percent:1\"}","MySQL SLAVE DELAY RECOVER","dingding","【MySQL {{window}}M 聚合时间内 SLAVE 延迟恢复】\n\n集群: {{cluster_name}}\n\nmysql: {{server_id}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【MySQL {{window}}M 聚合时间内 SLAVE 延迟恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("slave_sync_alert","custom_addon","{\"limit_value\":\"fraction:1\",\"usage_percent_avg\":\"percent:1\"}","MySQL SLAVE SYNC ALERT","dingding","【MySQL SLAVE 同步异常】\n\n集群: {{cluster_name}}\n\nmysql: {{server_id}}\n\nSlave_IO_Running: {{slave_slave_io_running_value}}\n\nSlave_SQL_Running: {{slave_slave_sql_running_value}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【MySQL SLAVE 同步异常】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("slave_sync_alert","custom_addon","{\"limit_value\":\"fraction:1\",\"usage_percent_avg\":\"percent:1\"}","MySQL SLAVE SYNC RECOVER","dingding","【MySQL SLAVE 同步异常恢复】\n\n集群: {{cluster_name}}\n\nmysql: {{server_id}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【MySQL SLAVE 同步异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_cassandra_gc_count","dice_addon","","平台中间件cassandra GC次数异常","dingding","【平台中间件cassandra GC次数告警】\n\n中间件: {{addon_id}}\n\n老年代GC次数: {{CollectionCount_win_value}}\n\n集群: {{cluster_name}}\n\n机器: {{node_host}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【平台中间件cassandra GC次数告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_cassandra_gc_count","dice_addon","","平台中间件cassandra GC次数异常","ticket","【平台中间件cassandra GC次数告警】\n\n中间件: {{addon_id}}\n\n老年代GC次数: {{CollectionCount_win_value}}\n\n集群: {{cluster_name}}\n\n机器: {{node_host}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【平台中间件cassandra GC次数告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_cassandra_gc_count","dice_addon","","平台中间件cassandra GC次数异常","email","【平台中间件cassandra GC次数告警】\n\n中间件: {{addon_id}}\n\n老年代GC次数: {{CollectionCount_win_value}}\n\n集群: {{cluster_name}}\n\n机器: {{node_host}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【平台中间件cassandra GC次数告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_cassandra_gc_count","dice_addon","","平台中间件cassandra GC次数异常","mbox","【平台中间件cassandra GC次数告警】\n\n中间件: {{addon_id}}\n\n老年代GC次数: {{CollectionCount_win_value}}\n\n集群: {{cluster_name}}\n\n机器: {{node_host}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【平台中间件cassandra GC次数告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_cassandra_gc_count","dice_addon","","平台中间件cassandra GC次数异常","webhook","【平台中间件cassandra GC次数告警】\n\n中间件: {{addon_id}}\n\n老年代GC次数: {{CollectionCount_win_value}}\n\n集群: {{cluster_name}}\n\n机器: {{node_host}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【平台中间件cassandra GC次数告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_cassandra_gc_count","dice_addon","","平台中间件cassandra GC次数异常","sms","中间件{{addon_id}}触发平台中间件cassandra GC次数异常告警,组织名称: {{org_name}},老年代GC次数: {{CollectionCount_win_value}}\n","【平台中间件cassandra GC次数异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_cassandra_gc_count","dice_addon","","平台中间件cassandra GC次数异常","vms","中间件{{addon_id}}触发平台中间件cassandra GC次数异常告警,组织名称: {{org_name}},老年代GC次数: {{CollectionCount_win_value}}\n","【平台中间件cassandra GC次数异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_cassandra_gc_count","dice_addon","{\"trigger_duration\":\"time:ms\"}","平台中间件cassandra GC次数异常恢复","dingding","【平台中间件cassandra GC次数恢复】\n\n中间件: {{addon_id}}\n\n老年代GC次数: {{CollectionCount_win_value}}\n\n集群: {{cluster_name}}\n\n机器: {{node_host}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台中间件cassandra GC次数恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_cassandra_gc_count","dice_addon","{\"trigger_duration\":\"time:ms\"}","平台中间件cassandra GC次数异常恢复","ticket","【平台中间件cassandra GC次数恢复】\n\n中间件: {{addon_id}}\n\n老年代GC次数: {{CollectionCount_win_value}}\n\n集群: {{cluster_name}}\n\n机器: {{node_host}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台中间件cassandra GC次数恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_cassandra_gc_count","dice_addon","{\"trigger_duration\":\"time:ms\"}","平台中间件cassandra GC次数异常恢复","email","【平台中间件cassandra GC次数恢复】\n\n中间件: {{addon_id}}\n\n老年代GC次数: {{CollectionCount_win_value}}\n\n集群: {{cluster_name}}\n\n机器: {{node_host}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台中间件cassandra GC次数恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_cassandra_gc_count","dice_addon","{\"trigger_duration\":\"time:ms\"}","平台中间件cassandra GC次数异常恢复","mbox","【平台中间件cassandra GC次数恢复】\n\n中间件: {{addon_id}}\n\n老年代GC次数: {{CollectionCount_win_value}}\n\n集群: {{cluster_name}}\n\n机器: {{node_host}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台中间件cassandra GC次数恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_cassandra_gc_count","dice_addon","{\"trigger_duration\":\"time:ms\"}","平台中间件cassandra GC次数异常恢复","webhook","【平台中间件cassandra GC次数恢复】\n\n中间件: {{addon_id}}\n\n老年代GC次数: {{CollectionCount_win_value}}\n\n集群: {{cluster_name}}\n\n机器: {{node_host}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台中间件cassandra GC次数恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_cassandra_gc_count","dice_addon","{\"trigger_duration\":\"time:ms\"}","平台中间件cassandra GC次数异常恢复","sms","中间件{{addon_id}}触发平台中间件cassandra GC次数异常告警恢复,组织名称: {{org_name}},老年代GC次数: {{CollectionCount_win_value}}\n","【平台中间件cassandra GC次数恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_cassandra_gc_count","dice_addon","{\"trigger_duration\":\"time:ms\"}","平台中间件cassandra GC次数异常恢复","vms","中间件{{addon_id}}触发平台中间件cassandra GC次数异常告警恢复,组织名称: {{org_name}},老年代GC次数: {{CollectionCount_win_value}}\n","【平台中间件cassandra GC次数恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_cassandra_gc_time","dice_addon","{\"CollectionTime_win_value\":\"time:ms\"}","平台中间件cassandra GC耗时异常","dingding","【平台中间件cassandra GC耗时告警】\n\n中间件: {{addon_id}}\n\n老年代GC耗时: {{CollectionTime_win_value}}\n\n集群: {{cluster_name}}\n\n机器: {{node_host}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【平台中间件cassandra GC耗时告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_cassandra_gc_time","dice_addon","{\"CollectionTime_win_value\":\"time:ms\"}","平台中间件cassandra GC耗时异常","ticket","【平台中间件cassandra GC耗时告警】\n\n中间件: {{addon_id}}\n\n老年代GC耗时: {{CollectionTime_win_value}}\n\n集群: {{cluster_name}}\n\n机器: {{node_host}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【平台中间件cassandra GC耗时告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_cassandra_gc_time","dice_addon","{\"CollectionTime_win_value\":\"time:ms\"}","平台中间件cassandra GC耗时异常","email","【平台中间件cassandra GC耗时告警】\n\n中间件: {{addon_id}}\n\n老年代GC耗时: {{CollectionTime_win_value}}\n\n集群: {{cluster_name}}\n\n机器: {{node_host}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【平台中间件cassandra GC耗时告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_cassandra_gc_time","dice_addon","{\"CollectionTime_win_value\":\"time:ms\"}","平台中间件cassandra GC耗时异常","mbox","【平台中间件cassandra GC耗时告警】\n\n中间件: {{addon_id}}\n\n老年代GC耗时: {{CollectionTime_win_value}}\n\n集群: {{cluster_name}}\n\n机器: {{node_host}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【平台中间件cassandra GC耗时告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_cassandra_gc_time","dice_addon","{\"CollectionTime_win_value\":\"time:ms\"}","平台中间件cassandra GC耗时异常","webhook","【平台中间件cassandra GC耗时告警】\n\n中间件: {{addon_id}}\n\n老年代GC耗时: {{CollectionTime_win_value}}\n\n集群: {{cluster_name}}\n\n机器: {{node_host}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【平台中间件cassandra GC耗时告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_cassandra_gc_time","dice_addon","{\"CollectionTime_win_value\":\"time:ms\"}","平台中间件cassandra GC耗时异常","sms","中间件{{addon_id}}触发平台中间件cassandra GC耗时异常告警,组织名称: {{org_name}},老年代GC耗时: {{CollectionTime_win_value}}\n","【平台中间件cassandra GC耗时异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_cassandra_gc_time","dice_addon","{\"CollectionTime_win_value\":\"time:ms\"}","平台中间件cassandra GC耗时异常","vms","中间件{{addon_id}}触发平台中间件cassandra GC耗时异常告警,组织名称: {{org_name}},老年代GC耗时: {{CollectionTime_win_value}}\n","【平台中间件cassandra GC耗时异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_cassandra_gc_time","dice_addon","{\"CollectionTime_win_value\":\"time:ms\",\"trigger_duration\":\"time:ms\"}","平台中间件cassandra GC耗时异常恢复","dingding","【平台中间件cassandra GC耗时恢复】\n\n中间件: {{addon_id}}\n\n老年代GC耗时: {{CollectionTime_win_value}}\n\n集群: {{cluster_name}}\n\n机器: {{node_host}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台中间件cassandra GC耗时恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_cassandra_gc_time","dice_addon","{\"CollectionTime_win_value\":\"time:ms\",\"trigger_duration\":\"time:ms\"}","平台中间件cassandra GC耗时异常恢复","ticket","【平台中间件cassandra GC耗时恢复】\n\n中间件: {{addon_id}}\n\n老年代GC耗时: {{CollectionTime_win_value}}\n\n集群: {{cluster_name}}\n\n机器: {{node_host}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台中间件cassandra GC耗时恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_cassandra_gc_time","dice_addon","{\"CollectionTime_win_value\":\"time:ms\",\"trigger_duration\":\"time:ms\"}","平台中间件cassandra GC耗时异常恢复","email","【平台中间件cassandra GC耗时恢复】\n\n中间件: {{addon_id}}\n\n老年代GC耗时: {{CollectionTime_win_value}}\n\n集群: {{cluster_name}}\n\n机器: {{node_host}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台中间件cassandra GC耗时恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_cassandra_gc_time","dice_addon","{\"CollectionTime_win_value\":\"time:ms\",\"trigger_duration\":\"time:ms\"}","平台中间件cassandra GC耗时异常恢复","mbox","【平台中间件cassandra GC耗时恢复】\n\n中间件: {{addon_id}}\n\n老年代GC耗时: {{CollectionTime_win_value}}\n\n集群: {{cluster_name}}\n\n机器: {{node_host}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台中间件cassandra GC耗时恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_cassandra_gc_time","dice_addon","{\"CollectionTime_win_value\":\"time:ms\",\"trigger_duration\":\"time:ms\"}","平台中间件cassandra GC耗时异常恢复","webhook","【平台中间件cassandra GC耗时恢复】\n\n中间件: {{addon_id}}\n\n老年代GC耗时: {{CollectionTime_win_value}}\n\n集群: {{cluster_name}}\n\n机器: {{node_host}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台中间件cassandra GC耗时恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_cassandra_gc_time","dice_addon","{\"CollectionTime_win_value\":\"time:ms\",\"trigger_duration\":\"time:ms\"}","平台中间件cassandra GC耗时异常恢复","sms","中间件{{addon_id}}触发平台中间件cassandra GC耗时恢复告警,组织名称: {{org_name}},老年代GC耗时: {{CollectionTime_win_value}}\n","【平台中间件cassandra GC耗时恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_cassandra_gc_time","dice_addon","{\"CollectionTime_win_value\":\"time:ms\",\"trigger_duration\":\"time:ms\"}","平台中间件cassandra GC耗时异常恢复","vms","中间件{{addon_id}}触发平台中间件cassandra GC耗时恢复告警,组织名称: {{org_name}},老年代GC耗时: {{CollectionTime_win_value}}\n","【平台中间件cassandra GC耗时恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_container_cpu","dice_addon","{\"cpu_allocation_value\":\"fraction:2\",\"cpu_limit_value\":\"fraction:2\",\"cpu_usage_percent_avg\":\"percent:2\"}","平台中间件实例CPU异常","dingding","【平台中间件CPU使用率告警】\n\n中间件: {{addon_id}}\n\n使用率: {{cpu_usage_percent_avg}}\n\n限制: {{cpu_limit_value}}核\n\n分配: {{cpu_allocation_value}}核\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n容器ID: {{container_id}}\n\nPod_Ip: {{pod_ip}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台中间件{{addon_id}} CPU使用率告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_container_cpu","dice_addon","{\"cpu_allocation_value\":\"fraction:2\",\"cpu_limit_value\":\"fraction:2\",\"cpu_usage_percent_avg\":\"percent:2\"}","平台中间件实例CPU异常","ticket","【平台中间件CPU使用率告警】\n\n中间件: {{addon_id}}\n\n使用率: {{cpu_usage_percent_avg}}\n\n限制: {{cpu_limit_value}}核\n\n分配: {{cpu_allocation_value}}核\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n容器ID: {{container_id}}\n\nPod_Ip: {{pod_ip}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台中间件{{addon_id}} CPU使用率告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_container_cpu","dice_addon","{\"cpu_allocation_value\":\"fraction:2\",\"cpu_limit_value\":\"fraction:2\",\"cpu_usage_percent_avg\":\"percent:2\"}","平台中间件实例CPU异常","email","【平台中间件CPU使用率告警】\n\n中间件: {{addon_id}}\n\n使用率: {{cpu_usage_percent_avg}}\n\n限制: {{cpu_limit_value}}核\n\n分配: {{cpu_allocation_value}}核\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n容器ID: {{container_id}}\n\nPod_Ip: {{pod_ip}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台中间件{{addon_id}} CPU使用率告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_container_cpu","dice_addon","{\"cpu_allocation_value\":\"fraction:2\",\"cpu_limit_value\":\"fraction:2\",\"cpu_usage_percent_avg\":\"percent:2\"}","平台中间件实例CPU异常","mbox","【平台中间件CPU使用率告警】\n\n中间件: {{addon_id}}\n\n使用率: {{cpu_usage_percent_avg}}\n\n限制: {{cpu_limit_value}}核\n\n分配: {{cpu_allocation_value}}核\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n容器ID: {{container_id}}\n\nPod_Ip: {{pod_ip}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台中间件{{addon_id}} CPU使用率告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_container_cpu","dice_addon","{\"cpu_allocation_value\":\"fraction:2\",\"cpu_limit_value\":\"fraction:2\",\"cpu_usage_percent_avg\":\"percent:2\"}","平台中间件实例CPU异常","webhook","【平台中间件CPU使用率告警】\n\n中间件: {{addon_id}}\n\n使用率: {{cpu_usage_percent_avg}}\n\n限制: {{cpu_limit_value}}核\n\n分配: {{cpu_allocation_value}}核\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n容器ID: {{container_id}}\n\nPod_Ip: {{pod_ip}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台中间件{{addon_id}} CPU使用率告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_container_cpu","dice_addon","{\"cpu_allocation_value\":\"fraction:2\",\"cpu_limit_value\":\"fraction:2\",\"cpu_usage_percent_avg\":\"percent:2\"}","平台中间件实例CPU异常","sms","{{addon_id}}中间件触发平台中间CPU使用率异常,组织名称: {{org_name}},使用率: {{cpu_usage_percent_avg}}\n","【平台中间件{{addon_id}} CPU使用率异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_container_cpu","dice_addon","{\"cpu_allocation_value\":\"fraction:2\",\"cpu_limit_value\":\"fraction:2\",\"cpu_usage_percent_avg\":\"percent:2\"}","平台中间件实例CPU异常","vms","{{addon_id}}中间件触发平台中间CPU使用率异常,组织名称: {{org_name}},使用率: {{cpu_usage_percent_avg}}\n","【平台中间件{{addon_id}} CPU使用率异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_container_cpu","dice_addon","{\"cpu_usage_percent_avg\":\"percent:2\",\"trigger_duration\":\"time:ms\"}","平台中间件实例CPU异常恢复","dingding","【平台中间件CPU使用率恢复】\n\n中间件: {{addon_id}}\n\n使用率: {{cpu_usage_percent_avg}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n容器ID: {{container_id}}\n\nPod_Ip: {{pod_ip}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台中间件{{addon_id}} CPU使用率恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_container_cpu","dice_addon","{\"cpu_usage_percent_avg\":\"percent:2\",\"trigger_duration\":\"time:ms\"}","平台中间件实例CPU异常恢复","ticket","【平台中间件CPU使用率恢复】\n\n中间件: {{addon_id}}\n\n使用率: {{cpu_usage_percent_avg}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n容器ID: {{container_id}}\n\nPod_Ip: {{pod_ip}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台中间件{{addon_id}} CPU使用率恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_container_cpu","dice_addon","{\"cpu_usage_percent_avg\":\"percent:2\",\"trigger_duration\":\"time:ms\"}","平台中间件实例CPU异常恢复","email","【平台中间件CPU使用率恢复】\n\n中间件: {{addon_id}}\n\n使用率: {{cpu_usage_percent_avg}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n容器ID: {{container_id}}\n\nPod_Ip: {{pod_ip}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台中间件{{addon_id}} CPU使用率恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_container_cpu","dice_addon","{\"cpu_usage_percent_avg\":\"percent:2\",\"trigger_duration\":\"time:ms\"}","平台中间件实例CPU异常恢复","mbox","【平台中间件CPU使用率恢复】\n\n中间件: {{addon_id}}\n\n使用率: {{cpu_usage_percent_avg}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n容器ID: {{container_id}}\n\nPod_Ip: {{pod_ip}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台中间件{{addon_id}} CPU使用率恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_container_cpu","dice_addon","{\"cpu_usage_percent_avg\":\"percent:2\",\"trigger_duration\":\"time:ms\"}","平台中间件实例CPU异常恢复","webhook","【平台中间件CPU使用率恢复】\n\n中间件: {{addon_id}}\n\n使用率: {{cpu_usage_percent_avg}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n容器ID: {{container_id}}\n\nPod_Ip: {{pod_ip}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台中间件{{addon_id}} CPU使用率恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_container_cpu","dice_addon","{\"cpu_usage_percent_avg\":\"percent:2\",\"trigger_duration\":\"time:ms\"}","平台中间件实例CPU异常恢复","sms","{{addon_id}}中间件触发平台中间CPU使用率异常告警恢复,组织名称: {{org_name}},使用率: {{cpu_usage_percent_avg}}\n","【平台中间件{{addon_id}} CPU使用率恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_container_cpu","dice_addon","{\"cpu_usage_percent_avg\":\"percent:2\",\"trigger_duration\":\"time:ms\"}","平台中间件实例CPU异常恢复","vms","{{addon_id}}中间件触发平台中间CPU使用率异常告警恢复,组织名称: {{org_name}},使用率: {{cpu_usage_percent_avg}}\n","【平台中间件{{addon_id}} CPU使用率恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_container_exit","dice_addon","{\"finished_at_value\":\"date\",\"started_at_value\":\"date\"}","平台中间件异常退出","dingding","【平台中间件异常退出告警】\n\n中间件: {{addon_id}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\nPod_Ip: {{pod_ip}}\n\n启动时间: {{started_at_value}}\n\n退出时间: {{finished_at_value}}\n\n退出原因: {{terminated_reason_value}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【平台中间件{{addon_id}}异常退出告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_container_exit","dice_addon","{\"finished_at_value\":\"date\",\"started_at_value\":\"date\"}","平台中间件异常退出","ticket","【平台中间件异常退出告警】\n\n中间件: {{addon_id}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\nPod_Ip: {{pod_ip}}\n\n启动时间: {{started_at_value}}\n\n退出时间: {{finished_at_value}}\n\n退出原因: {{terminated_reason_value}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【平台中间件{{addon_id}}异常退出告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_container_exit","dice_addon","{\"finished_at_value\":\"date\",\"started_at_value\":\"date\"}","平台中间件异常退出","email","【平台中间件异常退出告警】\n\n中间件: {{addon_id}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\nPod_Ip: {{pod_ip}}\n\n启动时间: {{started_at_value}}\n\n退出时间: {{finished_at_value}}\n\n退出原因: {{terminated_reason_value}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【平台中间件{{addon_id}}异常退出告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_container_exit","dice_addon","{\"finished_at_value\":\"date\",\"started_at_value\":\"date\"}","平台中间件异常退出","mbox","【平台中间件异常退出告警】\n\n中间件: {{addon_id}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\nPod_Ip: {{pod_ip}}\n\n启动时间: {{started_at_value}}\n\n退出时间: {{finished_at_value}}\n\n退出原因: {{terminated_reason_value}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【平台中间件{{addon_id}}异常退出告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_container_exit","dice_addon","{\"finished_at_value\":\"date\",\"started_at_value\":\"date\"}","平台中间件异常退出","webhook","【平台中间件异常退出告警】\n\n中间件: {{addon_id}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\nPod_Ip: {{pod_ip}}\n\n启动时间: {{started_at_value}}\n\n退出时间: {{finished_at_value}}\n\n退出原因: {{terminated_reason_value}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【平台中间件{{addon_id}}异常退出告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_container_exit","dice_addon","{\"finished_at_value\":\"date\",\"started_at_value\":\"date\"}","平台中间件异常退出","sms","{{addon_id}}中间件触发平台中间件异常退出,组织名称: {{org_name}},退出原因: {{terminated_reason_value}}\n","【平台中间件{{addon_id}}异常退出告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_container_exit","dice_addon","{\"finished_at_value\":\"date\",\"started_at_value\":\"date\"}","平台中间件异常退出","vms","{{addon_id}}中间件触发平台中间件异常退出,组织名称: {{org_name}},退出原因: {{terminated_reason_value}}\n","【平台中间件{{addon_id}}异常退出告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_container_exit","dice_addon","{\"trigger_duration\":\"time:ms\"}","平台中间件异常退出恢复","dingding","【平台中间件异常退出恢复】\n\n中间件: {{addon_id}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\nPod_Ip: {{pod_ip}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台中间件{{addon_id}}异常退出恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_container_exit","dice_addon","{\"trigger_duration\":\"time:ms\"}","平台中间件异常退出恢复","ticket","【平台中间件异常退出恢复】\n\n中间件: {{addon_id}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\nPod_Ip: {{pod_ip}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台中间件{{addon_id}}异常退出恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_container_exit","dice_addon","{\"trigger_duration\":\"time:ms\"}","平台中间件异常退出恢复","email","【平台中间件异常退出恢复】\n\n中间件: {{addon_id}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\nPod_Ip: {{pod_ip}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台中间件{{addon_id}}异常退出恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_container_exit","dice_addon","{\"trigger_duration\":\"time:ms\"}","平台中间件异常退出恢复","mbox","【平台中间件异常退出恢复】\n\n中间件: {{addon_id}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\nPod_Ip: {{pod_ip}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台中间件{{addon_id}}异常退出恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_container_exit","dice_addon","{\"trigger_duration\":\"time:ms\"}","平台中间件异常退出恢复","webhook","【平台中间件异常退出恢复】\n\n中间件: {{addon_id}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\nPod_Ip: {{pod_ip}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台中间件{{addon_id}}异常退出恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_container_exit","dice_addon","{\"finished_at_value\":\"date\",\"started_at_value\":\"date\"}","平台中间件异常退出告警恢复","sms","{{addon_id}}中间件触发平台中间件异常退出告警恢复,组织名称: {{org_name}}\n","【平台中间件{{addon_id}}异常退出告警】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_container_exit","dice_addon","{\"finished_at_value\":\"date\",\"started_at_value\":\"date\"}","平台中间件异常退出","vms","{{addon_id}}中间件触发平台中间件异常退出告警恢复,组织名称: {{org_name}}\n","【平台中间件{{addon_id}}异常退出告警】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_container_mem","dice_addon","{\"mem_allocation_value\":\"size:byte\",\"mem_limit_value\":\"size:byte\",\"mem_usage_percent_avg\":\"percent:2\",\"mem_usage_value\":\"size:byte\"}","平台中间件实例内存异常","dingding","【平台中间件内存使用率告警】\n\n中间件: {{addon_id}}\n\n使用率: {{mem_usage_percent_avg}}\n\n使用: {{mem_usage_value}}\n\n限制: {{mem_limit_value}}\n\n分配: {{mem_allocation_value}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\nPod_Ip: {{pod_ip}}\n\n容器ID: {{container_id}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台中间件{{addon_id}}内存使用率告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_container_mem","dice_addon","{\"mem_allocation_value\":\"size:byte\",\"mem_limit_value\":\"size:byte\",\"mem_usage_percent_avg\":\"percent:2\",\"mem_usage_value\":\"size:byte\"}","平台中间件实例内存异常","ticket","【平台中间件内存使用率告警】\n\n中间件: {{addon_id}}\n\n使用率: {{mem_usage_percent_avg}}\n\n使用: {{mem_usage_value}}\n\n限制: {{mem_limit_value}}\n\n分配: {{mem_allocation_value}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\nPod_Ip: {{pod_ip}}\n\n容器ID: {{container_id}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台中间件{{addon_id}}内存使用率告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_container_mem","dice_addon","{\"mem_allocation_value\":\"size:byte\",\"mem_limit_value\":\"size:byte\",\"mem_usage_percent_avg\":\"percent:2\",\"mem_usage_value\":\"size:byte\"}","平台中间件实例内存异常","email","【平台中间件内存使用率告警】\n\n中间件: {{addon_id}}\n\n使用率: {{mem_usage_percent_avg}}\n\n使用: {{mem_usage_value}}\n\n限制: {{mem_limit_value}}\n\n分配: {{mem_allocation_value}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\nPod_Ip: {{pod_ip}}\n\n容器ID: {{container_id}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台中间件{{addon_id}}内存使用率告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_container_mem","dice_addon","{\"mem_allocation_value\":\"size:byte\",\"mem_limit_value\":\"size:byte\",\"mem_usage_percent_avg\":\"percent:2\",\"mem_usage_value\":\"size:byte\"}","平台中间件实例内存异常","mbox","【平台中间件内存使用率告警】\n\n中间件: {{addon_id}}\n\n使用率: {{mem_usage_percent_avg}}\n\n使用: {{mem_usage_value}}\n\n限制: {{mem_limit_value}}\n\n分配: {{mem_allocation_value}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\nPod_Ip: {{pod_ip}}\n\n容器ID: {{container_id}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台中间件{{addon_id}}内存使用率告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_container_mem","dice_addon","{\"mem_allocation_value\":\"size:byte\",\"mem_limit_value\":\"size:byte\",\"mem_usage_percent_avg\":\"percent:2\",\"mem_usage_value\":\"size:byte\"}","平台中间件实例内存异常","webhook","【平台中间件内存使用率告警】\n\n中间件: {{addon_id}}\n\n使用率: {{mem_usage_percent_avg}}\n\n使用: {{mem_usage_value}}\n\n限制: {{mem_limit_value}}\n\n分配: {{mem_allocation_value}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\nPod_Ip: {{pod_ip}}\n\n容器ID: {{container_id}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台中间件{{addon_id}}内存使用率告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_container_mem","dice_addon","{\"mem_allocation_value\":\"size:byte\",\"mem_limit_value\":\"size:byte\",\"mem_usage_percent_avg\":\"percent:2\",\"mem_usage_value\":\"size:byte\"}","平台中间件实例内存异常","sms","{{addon_id}}中间件触发平台中间件内存使用率异常,组织名称: {{org_name}},使用率: {{mem_usage_percent_avg}}\n","【平台中间件{{addon_id}}内存使用率异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_container_mem","dice_addon","{\"mem_allocation_value\":\"size:byte\",\"mem_limit_value\":\"size:byte\",\"mem_usage_percent_avg\":\"percent:2\",\"mem_usage_value\":\"size:byte\"}","平台中间件实例内存异常","vms","{{addon_id}}中间件触发平台中间件内存使用率异常,组织名称: {{org_name}},使用率: {{mem_usage_percent_avg}}\n","【平台中间件{{addon_id}}内存使用率异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_container_mem","dice_addon","{\"mem_usage_percent_avg\":\"percent:2\",\"trigger_duration\":\"time:ms\"}","平台中间件实例内存异常","dingding","【平台中间件内存使用率恢复】\n\n中间件: {{addon_id}}\n\n使用率: {{mem_usage_percent_avg}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n容器ID: {{container_id}}\n\nPod_Ip: {{pod_ip}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台中间件{{addon_id}}内存使用率恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_container_mem","dice_addon","{\"mem_usage_percent_avg\":\"percent:2\",\"trigger_duration\":\"time:ms\"}","平台中间件实例内存异常","ticket","【平台中间件内存使用率恢复】\n\n中间件: {{addon_id}}\n\n使用率: {{mem_usage_percent_avg}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n容器ID: {{container_id}}\n\nPod_Ip: {{pod_ip}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台中间件{{addon_id}}内存使用率恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_container_mem","dice_addon","{\"mem_usage_percent_avg\":\"percent:2\",\"trigger_duration\":\"time:ms\"}","平台中间件实例内存异常","email","【平台中间件内存使用率恢复】\n\n中间件: {{addon_id}}\n\n使用率: {{mem_usage_percent_avg}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n容器ID: {{container_id}}\n\nPod_Ip: {{pod_ip}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台中间件{{addon_id}}内存使用率恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_container_mem","dice_addon","{\"mem_usage_percent_avg\":\"percent:2\",\"trigger_duration\":\"time:ms\"}","平台中间件实例内存异常","mbox","【平台中间件内存使用率恢复】\n\n中间件: {{addon_id}}\n\n使用率: {{mem_usage_percent_avg}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n容器ID: {{container_id}}\n\nPod_Ip: {{pod_ip}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台中间件{{addon_id}}内存使用率恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_container_mem","dice_addon","{\"mem_usage_percent_avg\":\"percent:2\",\"trigger_duration\":\"time:ms\"}","平台中间件实例内存异常","webhook","【平台中间件内存使用率恢复】\n\n中间件: {{addon_id}}\n\n使用率: {{mem_usage_percent_avg}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n容器ID: {{container_id}}\n\nPod_Ip: {{pod_ip}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台中间件{{addon_id}}内存使用率恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_container_mem","dice_addon","{\"mem_usage_percent_avg\":\"percent:2\",\"trigger_duration\":\"time:ms\"}","平台中间件实例内存异常","sms","{{addon_id}}中间件触发平台中间件内存使用率异常恢复,组织名称: {{org_name}},使用率: {{mem_usage_percent_avg}}\n","【平台中间件{{addon_id}}内存使用率恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_container_mem","dice_addon","{\"mem_usage_percent_avg\":\"percent:2\",\"trigger_duration\":\"time:ms\"}","平台中间件实例内存异常","vms","{{addon_id}}中间件触发平台中间件内存使用率异常恢复,组织名称: {{org_name}},使用率: {{mem_usage_percent_avg}}\n","【平台中间件{{addon_id}}内存使用率恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_container_ready","dice_addon","","平台中间件实例Ready状态异常","dingding","【平台中间件Ready状态异常告警】\n\n中间件: {{addon_id}}\n\n不可用实例: {{not_ready_value}}\n\n期望实例: {{total_value}}\n\n集群: {{cluster_name}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台中间件{{addon_id}} Ready状态异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_container_ready","dice_addon","","平台中间件实例Ready状态异常","ticket","【平台中间件Ready状态异常告警】\n\n中间件: {{addon_id}}\n\n不可用实例: {{not_ready_value}}\n\n期望实例: {{total_value}}\n\n集群: {{cluster_name}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台中间件{{addon_id}} Ready状态异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_container_ready","dice_addon","","平台中间件实例Ready状态异常","email","【平台中间件Ready状态异常告警】\n\n中间件: {{addon_id}}\n\n不可用实例: {{not_ready_value}}\n\n期望实例: {{total_value}}\n\n集群: {{cluster_name}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台中间件{{addon_id}} Ready状态异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_container_ready","dice_addon","","平台中间件实例Ready状态异常","mbox","【平台中间件Ready状态异常告警】\n\n中间件: {{addon_id}}\n\n不可用实例: {{not_ready_value}}\n\n期望实例: {{total_value}}\n\n集群: {{cluster_name}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台中间件{{addon_id}} Ready状态异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_container_ready","dice_addon","","平台中间件实例Ready状态异常","webhook","【平台中间件Ready状态异常告警】\n\n中间件: {{addon_id}}\n\n不可用实例: {{not_ready_value}}\n\n期望实例: {{total_value}}\n\n集群: {{cluster_name}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台中间件{{addon_id}} Ready状态异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_container_ready","dice_addon","","平台中间件实例Ready状态异常","sms","{{addon_id}}中间件触发平台中间件Ready状态异常告警,组织名称: {{org_name}},不可用实例: {{not_ready_value}}\n","【平台中间件{{addon_id}} Ready状态异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_container_ready","dice_addon","","平台中间件实例Ready状态异常","vms","{{addon_id}}中间件触发平台中间件Ready状态异常告警,组织名称: {{org_name}},不可用实例: {{not_ready_value}}\n","【平台中间件{{addon_id}} Ready状态异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_container_ready","dice_addon","{\"trigger_duration\":\"time:ms\"}","平台中间件实例Ready状态异常恢复","dingding","【平台中间件Ready状态异常恢复】\n\n中间件: {{addon_id}}\n\n可用实例: {{ready_value}}\n\n期望实例: {{total_value}}\n\n集群: {{cluster_name}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台中间件{{addon_id}} Ready状态异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_container_ready","dice_addon","{\"trigger_duration\":\"time:ms\"}","平台中间件实例Ready状态异常恢复","ticket","【平台中间件Ready状态异常恢复】\n\n中间件: {{addon_id}}\n\n可用实例: {{ready_value}}\n\n期望实例: {{total_value}}\n\n集群: {{cluster_name}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台中间件{{addon_id}} Ready状态异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_container_ready","dice_addon","{\"trigger_duration\":\"time:ms\"}","平台中间件实例Ready状态异常恢复","email","【平台中间件Ready状态异常恢复】\n\n中间件: {{addon_id}}\n\n可用实例: {{ready_value}}\n\n期望实例: {{total_value}}\n\n集群: {{cluster_name}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台中间件{{addon_id}} Ready状态异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_container_ready","dice_addon","{\"trigger_duration\":\"time:ms\"}","平台中间件实例Ready状态异常恢复","mbox","【平台中间件Ready状态异常恢复】\n\n中间件: {{addon_id}}\n\n可用实例: {{ready_value}}\n\n期望实例: {{total_value}}\n\n集群: {{cluster_name}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台中间件{{addon_id}} Ready状态异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_container_ready","dice_addon","{\"trigger_duration\":\"time:ms\"}","平台中间件实例Ready状态异常恢复","webhook","【平台中间件Ready状态异常恢复】\n\n中间件: {{addon_id}}\n\n可用实例: {{ready_value}}\n\n期望实例: {{total_value}}\n\n集群: {{cluster_name}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台中间件{{addon_id}} Ready状态异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_container_ready","dice_addon","{\"trigger_duration\":\"time:ms\"}","平台中间件实例Ready状态异常恢复","sms","{{addon_id}}中间件触发平台中间件Ready状态异常告警恢复,组织名称: {{org_name}},可用实例: {{ready_value}}\n","【平台中间件{{addon_id}} Ready状态异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_container_ready","dice_addon","{\"trigger_duration\":\"time:ms\"}","平台中间件实例Ready状态异常恢复","vms","{{addon_id}}中间件触发平台中间件Ready状态异常告警恢复,组织名称: {{org_name}},可用实例: {{ready_value}}\n","【平台中间件{{addon_id}} Ready状态异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_elasticsearch_gc_count","dice_addon","","平台中间件elasticsearch GC次数异常","dingding","【平台中间件elasticsearch GC次数告警】\n\n中间件: {{addon_id}}\n\n老年代GC次数: {{gc_collectors_old_collection_count_win_value}}\n\n集群: {{cluster_name}}\n\n机器: {{node_host}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【平台中间件elasticsearch GC次数告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_elasticsearch_gc_count","dice_addon","","平台中间件elasticsearch GC次数异常","ticket","【平台中间件elasticsearch GC次数告警】\n\n中间件: {{addon_id}}\n\n老年代GC次数: {{gc_collectors_old_collection_count_win_value}}\n\n集群: {{cluster_name}}\n\n机器: {{node_host}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【平台中间件elasticsearch GC次数告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_elasticsearch_gc_count","dice_addon","","平台中间件elasticsearch GC次数异常","email","【平台中间件elasticsearch GC次数告警】\n\n中间件: {{addon_id}}\n\n老年代GC次数: {{gc_collectors_old_collection_count_win_value}}\n\n集群: {{cluster_name}}\n\n机器: {{node_host}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【平台中间件elasticsearch GC次数告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_elasticsearch_gc_count","dice_addon","","平台中间件elasticsearch GC次数异常","mbox","【平台中间件elasticsearch GC次数告警】\n\n中间件: {{addon_id}}\n\n老年代GC次数: {{gc_collectors_old_collection_count_win_value}}\n\n集群: {{cluster_name}}\n\n机器: {{node_host}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【平台中间件elasticsearch GC次数告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_elasticsearch_gc_count","dice_addon","","平台中间件elasticsearch GC次数异常","webhook","【平台中间件elasticsearch GC次数告警】\n\n中间件: {{addon_id}}\n\n老年代GC次数: {{gc_collectors_old_collection_count_win_value}}\n\n集群: {{cluster_name}}\n\n机器: {{node_host}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【平台中间件elasticsearch GC次数告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_elasticsearch_gc_count","dice_addon","","平台中间件elasticsearch GC次数异常","sms","{{addon_id}}中间件触发平台中间件elasticsearch GC次数异常,组织名称: {{org_name}},老年代GC次数: {{gc_collectors_old_collection_count_win_value}}\n","【平台中间件elasticsearch GC次数告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_elasticsearch_gc_count","dice_addon","","平台中间件elasticsearch GC次数异常","vms","{{addon_id}}中间件触发平台中间件elasticsearch GC次数异常,组织名称: {{org_name}},老年代GC次数: {{gc_collectors_old_collection_count_win_value}}\n","【平台中间件elasticsearch GC次数告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_elasticsearch_gc_count","dice_addon","{\"trigger_duration\":\"time:ms\"}","平台中间件elasticsearch GC次数异常恢复","dingding","【平台中间件elasticsearch GC次数恢复】\n\n中间件: {{addon_id}}\n\n老年代GC次数: {{gc_collectors_old_collection_count_win_value}}\n\n集群: {{cluster_name}}\n\n机器: {{node_host}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台中间件elasticsearch GC次数恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_elasticsearch_gc_count","dice_addon","{\"trigger_duration\":\"time:ms\"}","平台中间件elasticsearch GC次数异常恢复","ticket","【平台中间件elasticsearch GC次数恢复】\n\n中间件: {{addon_id}}\n\n老年代GC次数: {{gc_collectors_old_collection_count_win_value}}\n\n集群: {{cluster_name}}\n\n机器: {{node_host}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台中间件elasticsearch GC次数恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_elasticsearch_gc_count","dice_addon","{\"trigger_duration\":\"time:ms\"}","平台中间件elasticsearch GC次数异常恢复","email","【平台中间件elasticsearch GC次数恢复】\n\n中间件: {{addon_id}}\n\n老年代GC次数: {{gc_collectors_old_collection_count_win_value}}\n\n集群: {{cluster_name}}\n\n机器: {{node_host}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台中间件elasticsearch GC次数恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_elasticsearch_gc_count","dice_addon","{\"trigger_duration\":\"time:ms\"}","平台中间件elasticsearch GC次数异常恢复","mbox","【平台中间件elasticsearch GC次数恢复】\n\n中间件: {{addon_id}}\n\n老年代GC次数: {{gc_collectors_old_collection_count_win_value}}\n\n集群: {{cluster_name}}\n\n机器: {{node_host}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台中间件elasticsearch GC次数恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_elasticsearch_gc_count","dice_addon","{\"trigger_duration\":\"time:ms\"}","平台中间件elasticsearch GC次数异常恢复","webhook","【平台中间件elasticsearch GC次数恢复】\n\n中间件: {{addon_id}}\n\n老年代GC次数: {{gc_collectors_old_collection_count_win_value}}\n\n集群: {{cluster_name}}\n\n机器: {{node_host}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台中间件elasticsearch GC次数恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_elasticsearch_gc_count","dice_addon","{\"trigger_duration\":\"time:ms\"}","平台中间件elasticsearch GC次数异常恢复","sms","{{addon_id}}中间件触发平台中间件elasticsearch GC次数异常告警恢复,组织名称: {{org_name}},老年代GC次数: {{gc_collectors_old_collection_count_win_value}}\n","【平台中间件elasticsearch GC次数恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_elasticsearch_gc_count","dice_addon","{\"trigger_duration\":\"time:ms\"}","平台中间件elasticsearch GC次数异常恢复","vms","{{addon_id}}中间件触发平台中间件elasticsearch GC次数异常告警恢复,组织名称: {{org_name}},老年代GC次数: {{gc_collectors_old_collection_count_win_value}}\n","【平台中间件elasticsearch GC次数恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_elasticsearch_gc_time","dice_addon","{\"gc_collectors_old_collection_time_in_millis_win_value\":\"time:ms\"}","平台中间件elasticsearch GC耗时异常","dingding","【平台中间件elasticsearch GC耗时告警】\n\n中间件: {{addon_id}}\n\n老年代GC耗时: {{gc_collectors_old_collection_time_in_millis_win_value}}\n\n集群: {{cluster_name}}\n\n机器: {{node_name}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【平台中间件elasticsearch GC耗时告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_elasticsearch_gc_time","dice_addon","{\"gc_collectors_old_collection_time_in_millis_win_value\":\"time:ms\"}","平台中间件elasticsearch GC耗时异常","ticket","【平台中间件elasticsearch GC耗时告警】\n\n中间件: {{addon_id}}\n\n老年代GC耗时: {{gc_collectors_old_collection_time_in_millis_win_value}}\n\n集群: {{cluster_name}}\n\n机器: {{node_name}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【平台中间件elasticsearch GC耗时告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_elasticsearch_gc_time","dice_addon","{\"gc_collectors_old_collection_time_in_millis_win_value\":\"time:ms\"}","平台中间件elasticsearch GC耗时异常","email","【平台中间件elasticsearch GC耗时告警】\n\n中间件: {{addon_id}}\n\n老年代GC耗时: {{gc_collectors_old_collection_time_in_millis_win_value}}\n\n集群: {{cluster_name}}\n\n机器: {{node_name}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【平台中间件elasticsearch GC耗时告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_elasticsearch_gc_time","dice_addon","{\"gc_collectors_old_collection_time_in_millis_win_value\":\"time:ms\"}","平台中间件elasticsearch GC耗时异常","mbox","【平台中间件elasticsearch GC耗时告警】\n\n中间件: {{addon_id}}\n\n老年代GC耗时: {{gc_collectors_old_collection_time_in_millis_win_value}}\n\n集群: {{cluster_name}}\n\n机器: {{node_name}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【平台中间件elasticsearch GC耗时告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_elasticsearch_gc_time","dice_addon","{\"gc_collectors_old_collection_time_in_millis_win_value\":\"time:ms\"}","平台中间件elasticsearch GC耗时异常","webhook","【平台中间件elasticsearch GC耗时告警】\n\n中间件: {{addon_id}}\n\n老年代GC耗时: {{gc_collectors_old_collection_time_in_millis_win_value}}\n\n集群: {{cluster_name}}\n\n机器: {{node_name}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【平台中间件elasticsearch GC耗时告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_elasticsearch_gc_time","dice_addon","{\"gc_collectors_old_collection_time_in_millis_win_value\":\"time:ms\"}","平台中间件elasticsearch GC耗时异常","sms","{{addon_id}}中间件触发平台中间件elasticsearch GC耗时异常,组织名称: {{org_name}},老年代GC耗时: {{gc_collectors_old_collection_time_in_millis_win_value}}\n","【平台中间件elasticsearch GC耗时告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_elasticsearch_gc_time","dice_addon","{\"gc_collectors_old_collection_time_in_millis_win_value\":\"time:ms\"}","平台中间件elasticsearch GC耗时异常","vms","{{addon_id}}中间件触发平台中间件elasticsearch GC耗时异常,组织名称: {{org_name}},老年代GC耗时: {{gc_collectors_old_collection_time_in_millis_win_value}}\n","【平台中间件elasticsearch GC耗时告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_elasticsearch_gc_time","dice_addon","{\"gc_collectors_old_collection_time_in_millis_win_value\":\"time:ms\",\"trigger_duration\":\"time:ms\"}","平台中间件elasticsearch GC耗时异常恢复","dingding","【平台中间件elasticsearch GC耗时恢复】\n\n中间件: {{addon_id}}\n\n老年代GC耗时: {{gc_collectors_old_collection_time_in_millis_win_value}}\n\n集群: {{cluster_name}}\n\n机器: {{node_name}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台中间件elasticsearch GC耗时恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_elasticsearch_gc_time","dice_addon","{\"gc_collectors_old_collection_time_in_millis_win_value\":\"time:ms\",\"trigger_duration\":\"time:ms\"}","平台中间件elasticsearch GC耗时异常恢复","ticket","【平台中间件elasticsearch GC耗时恢复】\n\n中间件: {{addon_id}}\n\n老年代GC耗时: {{gc_collectors_old_collection_time_in_millis_win_value}}\n\n集群: {{cluster_name}}\n\n机器: {{node_name}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台中间件elasticsearch GC耗时恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_elasticsearch_gc_time","dice_addon","{\"gc_collectors_old_collection_time_in_millis_win_value\":\"time:ms\",\"trigger_duration\":\"time:ms\"}","平台中间件elasticsearch GC耗时异常恢复","email","【平台中间件elasticsearch GC耗时恢复】\n\n中间件: {{addon_id}}\n\n老年代GC耗时: {{gc_collectors_old_collection_time_in_millis_win_value}}\n\n集群: {{cluster_name}}\n\n机器: {{node_name}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台中间件elasticsearch GC耗时恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_elasticsearch_gc_time","dice_addon","{\"gc_collectors_old_collection_time_in_millis_win_value\":\"time:ms\",\"trigger_duration\":\"time:ms\"}","平台中间件elasticsearch GC耗时异常恢复","mbox","【平台中间件elasticsearch GC耗时恢复】\n\n中间件: {{addon_id}}\n\n老年代GC耗时: {{gc_collectors_old_collection_time_in_millis_win_value}}\n\n集群: {{cluster_name}}\n\n机器: {{node_name}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台中间件elasticsearch GC耗时恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_elasticsearch_gc_time","dice_addon","{\"gc_collectors_old_collection_time_in_millis_win_value\":\"time:ms\",\"trigger_duration\":\"time:ms\"}","平台中间件elasticsearch GC耗时异常恢复","webhook","【平台中间件elasticsearch GC耗时恢复】\n\n中间件: {{addon_id}}\n\n老年代GC耗时: {{gc_collectors_old_collection_time_in_millis_win_value}}\n\n集群: {{cluster_name}}\n\n机器: {{node_name}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台中间件elasticsearch GC耗时恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_elasticsearch_gc_time","dice_addon","{\"gc_collectors_old_collection_time_in_millis_win_value\":\"time:ms\",\"trigger_duration\":\"time:ms\"}","平台中间件elasticsearch GC耗时异常恢复","sms","{{addon_id}}中间件触发平台中间件elasticsearch GC耗时恢复,组织名称: {{org_name}},老年代GC耗时: {{gc_collectors_old_collection_time_in_millis_win_value}}\n","【平台中间件elasticsearch GC耗时恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_elasticsearch_gc_time","dice_addon","{\"gc_collectors_old_collection_time_in_millis_win_value\":\"time:ms\",\"trigger_duration\":\"time:ms\"}","平台中间件elasticsearch GC耗时异常恢复","vms","{{addon_id}}中间件触发平台中间件elasticsearch GC耗时恢复,组织名称: {{org_name}},老年代GC耗时: {{gc_collectors_old_collection_time_in_millis_win_value}}\n","【平台中间件elasticsearch GC耗时恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_kafka_gc_count","dice_addon","","平台中间件Kafka GC次数异常","dingding","【平台中间件Kafka GC次数告警】\n\n中间件: {{addon_id}}\n\n老年代GC次数: {{CollectionCount_win_value}}\n\n集群: {{cluster_name}}\n\n集群: {{node_host}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【平台中间件Kafka GC次数告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_kafka_gc_count","dice_addon","","平台中间件Kafka GC次数异常","ticket","【平台中间件Kafka GC次数告警】\n\n中间件: {{addon_id}}\n\n老年代GC次数: {{CollectionCount_win_value}}\n\n集群: {{cluster_name}}\n\n集群: {{node_host}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【平台中间件Kafka GC次数告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_kafka_gc_count","dice_addon","","平台中间件Kafka GC次数异常","email","【平台中间件Kafka GC次数告警】\n\n中间件: {{addon_id}}\n\n老年代GC次数: {{CollectionCount_win_value}}\n\n集群: {{cluster_name}}\n\n集群: {{node_host}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【平台中间件Kafka GC次数告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_kafka_gc_count","dice_addon","","平台中间件Kafka GC次数异常","mbox","【平台中间件Kafka GC次数告警】\n\n中间件: {{addon_id}}\n\n老年代GC次数: {{CollectionCount_win_value}}\n\n集群: {{cluster_name}}\n\n集群: {{node_host}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【平台中间件Kafka GC次数告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_kafka_gc_count","dice_addon","","平台中间件Kafka GC次数异常","webhook","【平台中间件Kafka GC次数告警】\n\n中间件: {{addon_id}}\n\n老年代GC次数: {{CollectionCount_win_value}}\n\n集群: {{cluster_name}}\n\n集群: {{node_host}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【平台中间件Kafka GC次数告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_kafka_gc_count","dice_addon","","平台中间件Kafka GC次数异常","sms","{{addon_id}}中间件触发平台中间件Kafka GC次数异常,组织名称: {{org_name}},老年代GC次数: {{CollectionCount_win_value}}\n","【平台中间件Kafka GC次数告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_kafka_gc_count","dice_addon","","平台中间件Kafka GC次数异常","vms","{{addon_id}}中间件触发平台中间件Kafka GC次数异常,组织名称: {{org_name}},老年代GC次数: {{CollectionCount_win_value}}\n","【平台中间件Kafka GC次数告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_kafka_gc_count","dice_addon","{\"trigger_duration\":\"time:ms\"}","平台中间件Kafka GC次数异常恢复","dingding","【平台中间件Kafka GC次数恢复】\n\n中间件: {{addon_id}}\n\n老年代GC次数: {{CollectionCount_win_value}}\n\n集群: {{cluster_name}}\n\n机器: {{node_host}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台中间件Kafka GC次数恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_kafka_gc_count","dice_addon","{\"trigger_duration\":\"time:ms\"}","平台中间件Kafka GC次数异常恢复","ticket","【平台中间件Kafka GC次数恢复】\n\n中间件: {{addon_id}}\n\n老年代GC次数: {{CollectionCount_win_value}}\n\n集群: {{cluster_name}}\n\n机器: {{node_host}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台中间件Kafka GC次数恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_kafka_gc_count","dice_addon","{\"trigger_duration\":\"time:ms\"}","平台中间件Kafka GC次数异常恢复","email","【平台中间件Kafka GC次数恢复】\n\n中间件: {{addon_id}}\n\n老年代GC次数: {{CollectionCount_win_value}}\n\n集群: {{cluster_name}}\n\n机器: {{node_host}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台中间件Kafka GC次数恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_kafka_gc_count","dice_addon","{\"trigger_duration\":\"time:ms\"}","平台中间件Kafka GC次数异常恢复","mbox","【平台中间件Kafka GC次数恢复】\n\n中间件: {{addon_id}}\n\n老年代GC次数: {{CollectionCount_win_value}}\n\n集群: {{cluster_name}}\n\n机器: {{node_host}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台中间件Kafka GC次数恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_kafka_gc_count","dice_addon","{\"trigger_duration\":\"time:ms\"}","平台中间件Kafka GC次数异常恢复","webhook","【平台中间件Kafka GC次数恢复】\n\n中间件: {{addon_id}}\n\n老年代GC次数: {{CollectionCount_win_value}}\n\n集群: {{cluster_name}}\n\n机器: {{node_host}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台中间件Kafka GC次数恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_kafka_gc_count","dice_addon","{\"trigger_duration\":\"time:ms\"}","平台中间件Kafka GC次数异常恢复","sms","{{addon_id}}中间件触发平台中间件Kafka GC次数异常恢复,组织名称: {{org_name}},老年代GC次数: {{CollectionCount_win_value}}\n","【平台中间件Kafka GC次数恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_kafka_gc_count","dice_addon","{\"trigger_duration\":\"time:ms\"}","平台中间件Kafka GC次数异常恢复","vms","{{addon_id}}中间件触发平台中间件Kafka GC次数异常恢复,组织名称: {{org_name}},老年代GC次数: {{CollectionCount_win_value}}\n","【平台中间件Kafka GC次数恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_kafka_gc_time","dice_addon","{\"CollectionTime_win_value\":\"time:ms\"}","平台中间件kafka GC耗时异常","dingding","【平台中间件kafka GC耗时告警】\n\n中间件: {{addon_id}}\n\n老年代GC耗时: {{CollectionTime_win_value}}\n\n集群: {{cluster_name}}\n\n机器: {{node_host}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【平台中间件kafka GC耗时告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_kafka_gc_time","dice_addon","{\"CollectionTime_win_value\":\"time:ms\"}","平台中间件kafka GC耗时异常","ticket","【平台中间件kafka GC耗时告警】\n\n中间件: {{addon_id}}\n\n老年代GC耗时: {{CollectionTime_win_value}}\n\n集群: {{cluster_name}}\n\n机器: {{node_host}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【平台中间件kafka GC耗时告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_kafka_gc_time","dice_addon","{\"CollectionTime_win_value\":\"time:ms\"}","平台中间件kafka GC耗时异常","email","【平台中间件kafka GC耗时告警】\n\n中间件: {{addon_id}}\n\n老年代GC耗时: {{CollectionTime_win_value}}\n\n集群: {{cluster_name}}\n\n机器: {{node_host}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【平台中间件kafka GC耗时告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_kafka_gc_time","dice_addon","{\"CollectionTime_win_value\":\"time:ms\"}","平台中间件kafka GC耗时异常","mbox","【平台中间件kafka GC耗时告警】\n\n中间件: {{addon_id}}\n\n老年代GC耗时: {{CollectionTime_win_value}}\n\n集群: {{cluster_name}}\n\n机器: {{node_host}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【平台中间件kafka GC耗时告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_kafka_gc_time","dice_addon","{\"CollectionTime_win_value\":\"time:ms\"}","平台中间件kafka GC耗时异常","webhook","【平台中间件kafka GC耗时告警】\n\n中间件: {{addon_id}}\n\n老年代GC耗时: {{CollectionTime_win_value}}\n\n集群: {{cluster_name}}\n\n机器: {{node_host}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【平台中间件kafka GC耗时告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_kafka_gc_time","dice_addon","{\"CollectionTime_win_value\":\"time:ms\"}","平台中间件kafka GC耗时异常","sms","{{addon_id}}中间件触发平台中间件kafka GC耗时异常,组织名称: {{org_name}},老年代GC耗时: {{CollectionTime_win_value}}\n","【平台中间件kafka GC耗时告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_kafka_gc_time","dice_addon","{\"CollectionTime_win_value\":\"time:ms\"}","平台中间件kafka GC耗时异常","vms","{{addon_id}}中间件触发平台中间件kafka GC耗时异常,组织名称: {{org_name}},老年代GC耗时: {{CollectionTime_win_value}}\n","【平台中间件kafka GC耗时告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_kafka_gc_time","dice_addon","{\"CollectionTime_win_value\":\"time:ms\",\"trigger_duration\":\"time:ms\"}","平台中间件kafka GC耗时异常恢复","dingding","【平台中间件kafka GC耗时恢复】\n\n中间件: {{addon_id}}\n\n老年代GC耗时: {{CollectionTime_win_value}}\n\n集群: {{cluster_name}}\n\n机器: {{node_host}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台中间件kafka GC耗时恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_kafka_gc_time","dice_addon","{\"CollectionTime_win_value\":\"time:ms\",\"trigger_duration\":\"time:ms\"}","平台中间件kafka GC耗时异常恢复","ticket","【平台中间件kafka GC耗时恢复】\n\n中间件: {{addon_id}}\n\n老年代GC耗时: {{CollectionTime_win_value}}\n\n集群: {{cluster_name}}\n\n机器: {{node_host}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台中间件kafka GC耗时恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_kafka_gc_time","dice_addon","{\"CollectionTime_win_value\":\"time:ms\",\"trigger_duration\":\"time:ms\"}","平台中间件kafka GC耗时异常恢复","email","【平台中间件kafka GC耗时恢复】\n\n中间件: {{addon_id}}\n\n老年代GC耗时: {{CollectionTime_win_value}}\n\n集群: {{cluster_name}}\n\n机器: {{node_host}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台中间件kafka GC耗时恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_kafka_gc_time","dice_addon","{\"CollectionTime_win_value\":\"time:ms\",\"trigger_duration\":\"time:ms\"}","平台中间件kafka GC耗时异常恢复","mbox","【平台中间件kafka GC耗时恢复】\n\n中间件: {{addon_id}}\n\n老年代GC耗时: {{CollectionTime_win_value}}\n\n集群: {{cluster_name}}\n\n机器: {{node_host}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台中间件kafka GC耗时恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_kafka_gc_time","dice_addon","{\"CollectionTime_win_value\":\"time:ms\",\"trigger_duration\":\"time:ms\"}","平台中间件kafka GC耗时异常恢复","webhook","【平台中间件kafka GC耗时恢复】\n\n中间件: {{addon_id}}\n\n老年代GC耗时: {{CollectionTime_win_value}}\n\n集群: {{cluster_name}}\n\n机器: {{node_host}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台中间件kafka GC耗时恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_kafka_gc_time","dice_addon","{\"CollectionTime_win_value\":\"time:ms\",\"trigger_duration\":\"time:ms\"}","平台中间件kafka GC耗时异常恢复","sms","{{addon_id}}中间件触发平台中间件kafka GC耗时异常恢复,组织名称: {{org_name}},老年代GC耗时: {{CollectionTime_win_value}}\n","【平台中间件kafka GC耗时恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_kafka_gc_time","dice_addon","{\"CollectionTime_win_value\":\"time:ms\",\"trigger_duration\":\"time:ms\"}","平台中间件kafka GC耗时异常恢复","vms","{{addon_id}}中间件触发平台中间件kafka GC耗时异常恢复,组织名称: {{org_name}},老年代GC耗时: {{CollectionTime_win_value}}\n","【平台中间件kafka GC耗时恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_kafka_lag","dice_addon","","平台中间件kafka消费堆积","dingding","【平台中间件kafka消费堆积告警】\n\n中间件: {{addon_id}}\n\n消费者组: {{group}}\n\nTopic: {{topic}}\n\n当前消息堆积: {{lag_avg}}\n\n消费速度: {{consume_rate_per_sec_avg}} /s\n\n生产速度: {{produce_rate_per_sec_avg}} /s\n\n集群: {{cluster_name}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【平台中间件kafka消费堆积告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_kafka_lag","dice_addon","","平台中间件kafka消费堆积","ticket","【平台中间件kafka消费堆积告警】\n\n中间件: {{addon_id}}\n\n消费者组: {{group}}\n\nTopic: {{topic}}\n\n当前消息堆积: {{lag_avg}}\n\n消费速度: {{consume_rate_per_sec_avg}} /s\n\n生产速度: {{produce_rate_per_sec_avg}} /s\n\n集群: {{cluster_name}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【平台中间件kafka消费堆积告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_kafka_lag","dice_addon","","平台中间件kafka消费堆积","email","【平台中间件kafka消费堆积告警】\n\n中间件: {{addon_id}}\n\n消费者组: {{group}}\n\nTopic: {{topic}}\n\n当前消息堆积: {{lag_avg}}\n\n消费速度: {{consume_rate_per_sec_avg}} /s\n\n生产速度: {{produce_rate_per_sec_avg}} /s\n\n集群: {{cluster_name}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【平台中间件kafka消费堆积告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_kafka_lag","dice_addon","","平台中间件kafka消费堆积","mbox","【平台中间件kafka消费堆积告警】\n\n中间件: {{addon_id}}\n\n消费者组: {{group}}\n\nTopic: {{topic}}\n\n当前消息堆积: {{lag_avg}}\n\n消费速度: {{consume_rate_per_sec_avg}} /s\n\n生产速度: {{produce_rate_per_sec_avg}} /s\n\n集群: {{cluster_name}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【平台中间件kafka消费堆积告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_kafka_lag","dice_addon","","平台中间件kafka消费堆积","webhook","【平台中间件kafka消费堆积告警】\n\n中间件: {{addon_id}}\n\n消费者组: {{group}}\n\nTopic: {{topic}}\n\n当前消息堆积: {{lag_avg}}\n\n消费速度: {{consume_rate_per_sec_avg}} /s\n\n生产速度: {{produce_rate_per_sec_avg}} /s\n\n集群: {{cluster_name}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【平台中间件kafka消费堆积告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_kafka_lag","dice_addon","","平台中间件kafka消费堆积","sms","{{addon_id}}中间件触发平台中间件kafka消费异常堆积告警,组织名称: {{org_name}},Topic: {{topic}},消费速度: {{consume_rate_per_sec_avg}} /s,生产速度: {{produce_rate_per_sec_avg}} /s\n","【平台中间件kafka消费堆积告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_kafka_lag","dice_addon","","平台中间件kafka消费堆积","vms","{{addon_id}}中间件触发平台中间件kafka消费异常堆积告警,组织名称: {{org_name}},Topic: {{topic}},消费速度: {{consume_rate_per_sec_avg}} /s,生产速度: {{produce_rate_per_sec_avg}} /s\n","【平台中间件kafka消费堆积告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_kafka_lag","dice_addon","{\"trigger_duration\":\"time:ms\"}","平台中间件kafka消费堆积","dingding","【平台中间件kafka消费堆积恢复】\n\n中间件: {{addon_id}}\n\n消费者组: {{group}}\n\nTopic: {{topic}}\n\n当前消息堆积: {{lag_avg}}\n\n集群: {{cluster_name}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台中间件kafka消费堆积恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_kafka_lag","dice_addon","{\"trigger_duration\":\"time:ms\"}","平台中间件kafka消费堆积","ticket","【平台中间件kafka消费堆积恢复】\n\n中间件: {{addon_id}}\n\n消费者组: {{group}}\n\nTopic: {{topic}}\n\n当前消息堆积: {{lag_avg}}\n\n集群: {{cluster_name}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台中间件kafka消费堆积恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_kafka_lag","dice_addon","{\"trigger_duration\":\"time:ms\"}","平台中间件kafka消费堆积","email","【平台中间件kafka消费堆积恢复】\n\n中间件: {{addon_id}}\n\n消费者组: {{group}}\n\nTopic: {{topic}}\n\n当前消息堆积: {{lag_avg}}\n\n集群: {{cluster_name}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台中间件kafka消费堆积恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_kafka_lag","dice_addon","{\"trigger_duration\":\"time:ms\"}","平台中间件kafka消费堆积","mbox","【平台中间件kafka消费堆积恢复】\n\n中间件: {{addon_id}}\n\n消费者组: {{group}}\n\nTopic: {{topic}}\n\n当前消息堆积: {{lag_avg}}\n\n集群: {{cluster_name}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台中间件kafka消费堆积恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_kafka_lag","dice_addon","{\"trigger_duration\":\"time:ms\"}","平台中间件kafka消费堆积","webhook","【平台中间件kafka消费堆积恢复】\n\n中间件: {{addon_id}}\n\n消费者组: {{group}}\n\nTopic: {{topic}}\n\n当前消息堆积: {{lag_avg}}\n\n集群: {{cluster_name}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台中间件kafka消费堆积恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_kafka_lag","dice_addon","{\"trigger_duration\":\"time:ms\"}","平台中间件kafka消费堆积恢复","sms","{{addon_id}}中间件触发平台中间件kafka消费堆积恢复,组织名称: {{org_name}},Topic: {{topic}},当前消息堆积: {{lag_avg}}\n","【平台中间件kafka消费堆积恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_addon_kafka_lag","dice_addon","{\"trigger_duration\":\"time:ms\"}","平台中间件kafka消费堆积恢复","vms","{{addon_id}}中间件触发平台中间件kafka消费堆积恢复,组织名称: {{org_name}},Topic: {{topic}},当前消息堆积: {{lag_avg}}\n","【平台中间件kafka消费堆积恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_container_cpu","dice_component","{\"cpu_allocation_value\":\"fraction:2\",\"cpu_limit_value\":\"fraction:2\",\"cpu_usage_percent_avg\":\"percent:2\"}","平台组件实例CPU异常","dingding","【平台组件CPU使用率告警】\n\n组件: {{component_name}}\n\n使用率: {{cpu_usage_percent_avg}}\n\n限制: {{cpu_limit_value}}核\n\n分配: {{cpu_allocation_value}}核\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n容器ID: {{container_id}}\n\nPod_Ip: {{pod_ip}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台组件{{component_name}} CPU使用率告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_container_cpu","dice_component","{\"cpu_allocation_value\":\"fraction:2\",\"cpu_limit_value\":\"fraction:2\",\"cpu_usage_percent_avg\":\"percent:2\"}","平台组件实例CPU异常","ticket","【平台组件CPU使用率告警】\n\n组件: {{component_name}}\n\n使用率: {{cpu_usage_percent_avg}}\n\n限制: {{cpu_limit_value}}核\n\n分配: {{cpu_allocation_value}}核\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n容器ID: {{container_id}}\n\nPod_Ip: {{pod_ip}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台组件{{component_name}} CPU使用率告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_container_cpu","dice_component","{\"cpu_allocation_value\":\"fraction:2\",\"cpu_limit_value\":\"fraction:2\",\"cpu_usage_percent_avg\":\"percent:2\"}","平台组件实例CPU异常","email","【平台组件CPU使用率告警】\n\n组件: {{component_name}}\n\n使用率: {{cpu_usage_percent_avg}}\n\n限制: {{cpu_limit_value}}核\n\n分配: {{cpu_allocation_value}}核\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n容器ID: {{container_id}}\n\nPod_Ip: {{pod_ip}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台组件{{component_name}} CPU使用率告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_container_cpu","dice_component","{\"cpu_allocation_value\":\"fraction:2\",\"cpu_limit_value\":\"fraction:2\",\"cpu_usage_percent_avg\":\"percent:2\"}","平台组件实例CPU异常","mbox","【平台组件CPU使用率告警】\n\n组件: {{component_name}}\n\n使用率: {{cpu_usage_percent_avg}}\n\n限制: {{cpu_limit_value}}核\n\n分配: {{cpu_allocation_value}}核\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n容器ID: {{container_id}}\n\nPod_Ip: {{pod_ip}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台组件{{component_name}} CPU使用率告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_container_cpu","dice_component","{\"cpu_allocation_value\":\"fraction:2\",\"cpu_limit_value\":\"fraction:2\",\"cpu_usage_percent_avg\":\"percent:2\"}","平台组件实例CPU异常","webhook","【平台组件CPU使用率告警】\n\n组件: {{component_name}}\n\n使用率: {{cpu_usage_percent_avg}}\n\n限制: {{cpu_limit_value}}核\n\n分配: {{cpu_allocation_value}}核\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n容器ID: {{container_id}}\n\nPod_Ip: {{pod_ip}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台组件{{component_name}} CPU使用率告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_container_cpu","dice_component","{\"cpu_allocation_value\":\"fraction:2\",\"cpu_limit_value\":\"fraction:2\",\"cpu_usage_percent_avg\":\"percent:2\"}","平台组件实例CPU异常","sms","{{component_name}}组件触发CPU使用率异常告警,组织名称: {{org_name}},使用率: {{cpu_usage_percent_avg}}\n","【平台组件{{component_name}} CPU使用率告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_container_cpu","dice_component","{\"cpu_allocation_value\":\"fraction:2\",\"cpu_limit_value\":\"fraction:2\",\"cpu_usage_percent_avg\":\"percent:2\"}","平台组件实例CPU异常","vms","{{component_name}}组件触发平台组件实例CPU使用率异常告警,组织名称: {{org_name}},使用率: {{cpu_usage_percent_avg}}\n","【平台组件{{component_name}} CPU使用率告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_container_cpu","dice_component","{\"cpu_usage_percent_avg\":\"percent:2\",\"trigger_duration\":\"time:ms\"}","平台组件实例CPU异常恢复","dingding","【平台组件CPU使用率恢复】\n\n组件: {{component_name}}\n\n使用率: {{cpu_usage_percent_avg}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n容器ID: {{container_id}}\n\nPod_Ip: {{pod_ip}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台组件{{component_name}} CPU使用率恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_container_cpu","dice_component","{\"cpu_usage_percent_avg\":\"percent:2\",\"trigger_duration\":\"time:ms\"}","平台组件实例CPU异常恢复","ticket","【平台组件CPU使用率恢复】\n\n组件: {{component_name}}\n\n使用率: {{cpu_usage_percent_avg}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n容器ID: {{container_id}}\n\nPod_Ip: {{pod_ip}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台组件{{component_name}} CPU使用率恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_container_cpu","dice_component","{\"cpu_usage_percent_avg\":\"percent:2\",\"trigger_duration\":\"time:ms\"}","平台组件实例CPU异常恢复","email","【平台组件CPU使用率恢复】\n\n组件: {{component_name}}\n\n使用率: {{cpu_usage_percent_avg}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n容器ID: {{container_id}}\n\nPod_Ip: {{pod_ip}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台组件{{component_name}} CPU使用率恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_container_cpu","dice_component","{\"cpu_usage_percent_avg\":\"percent:2\",\"trigger_duration\":\"time:ms\"}","平台组件实例CPU异常恢复","mbox","【平台组件CPU使用率恢复】\n\n组件: {{component_name}}\n\n使用率: {{cpu_usage_percent_avg}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n容器ID: {{container_id}}\n\nPod_Ip: {{pod_ip}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台组件{{component_name}} CPU使用率恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_container_cpu","dice_component","{\"cpu_usage_percent_avg\":\"percent:2\",\"trigger_duration\":\"time:ms\"}","平台组件实例CPU异常恢复","webhook","【平台组件CPU使用率恢复】\n\n组件: {{component_name}}\n\n使用率: {{cpu_usage_percent_avg}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n容器ID: {{container_id}}\n\nPod_Ip: {{pod_ip}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台组件{{component_name}} CPU使用率恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_container_cpu","dice_component","{\"cpu_usage_percent_avg\":\"percent:2\",\"trigger_duration\":\"time:ms\"}","平台组件实例CPU异常恢复","sms","{{component_name}}组件触发平台组件实例CPU使用率异常告警恢复,组织名称: {{org_name}},使用率: {{cpu_usage_percent_avg}\n","【平台组件{{component_name}} CPU使用率恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_container_cpu","dice_component","{\"cpu_usage_percent_avg\":\"percent:2\",\"trigger_duration\":\"time:ms\"}","平台组件实例CPU异常恢复","vms","{{component_name}}组件触发平台组件实例CPU使用率异常告警恢复,组织名称: {{org_name}},使用率: {{cpu_usage_percent_avg}\n","【平台组件{{component_name}} CPU使用率恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_container_exit","dice_component","{\"finished_at_value\":\"date\",\"started_at_value\":\"date\"}","平台组件异常退出","dingding","【平台组件异常退出告警】\n\n组件: {{component_name}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\nPod_Ip: {{pod_ip}}\n\n启动时间: {{started_at_value}}\n\n退出时间: {{finished_at_value}}\n\n退出原因: {{terminated_reason_value}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【平台组件{{component_name}}异常退出告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_container_exit","dice_component","{\"finished_at_value\":\"date\",\"started_at_value\":\"date\"}","平台组件异常退出","ticket","【平台组件异常退出告警】\n\n组件: {{component_name}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\nPod_Ip: {{pod_ip}}\n\n启动时间: {{started_at_value}}\n\n退出时间: {{finished_at_value}}\n\n退出原因: {{terminated_reason_value}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【平台组件{{component_name}}异常退出告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_container_exit","dice_component","{\"finished_at_value\":\"date\",\"started_at_value\":\"date\"}","平台组件异常退出","email","【平台组件异常退出告警】\n\n组件: {{component_name}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\nPod_Ip: {{pod_ip}}\n\n启动时间: {{started_at_value}}\n\n退出时间: {{finished_at_value}}\n\n退出原因: {{terminated_reason_value}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【平台组件{{component_name}}异常退出告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_container_exit","dice_component","{\"finished_at_value\":\"date\",\"started_at_value\":\"date\"}","平台组件异常退出","mbox","【平台组件异常退出告警】\n\n组件: {{component_name}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\nPod_Ip: {{pod_ip}}\n\n启动时间: {{started_at_value}}\n\n退出时间: {{finished_at_value}}\n\n退出原因: {{terminated_reason_value}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【平台组件{{component_name}}异常退出告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_container_exit","dice_component","{\"finished_at_value\":\"date\",\"started_at_value\":\"date\"}","平台组件异常退出","webhook","【平台组件异常退出告警】\n\n组件: {{component_name}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\nPod_Ip: {{pod_ip}}\n\n启动时间: {{started_at_value}}\n\n退出时间: {{finished_at_value}}\n\n退出原因: {{terminated_reason_value}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【平台组件{{component_name}}异常退出告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_container_exit","dice_component","{\"finished_at_value\":\"date\",\"started_at_value\":\"date\"}","平台组件异常退出","sms","{{component_name}}组件触发平台组件异常退出,组织名称: {{org_name}},退出原因: {{terminated_reason_value}}\n","【平台组件{{component_name}}异常退出告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_container_exit","dice_component","{\"finished_at_value\":\"date\",\"started_at_value\":\"date\"}","平台组件异常退出","vms","{{component_name}}组件触发平台组件异常退出,组织名称: {{org_name}},退出原因: {{terminated_reason_value}}\n","【平台组件{{component_name}}异常退出告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_container_exit","dice_component","{\"trigger_duration\":\"time:ms\"}","平台组件异常退出","dingding","【平台组件异常退出恢复】\n\n组件: {{component_name}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\nPod_Ip: {{pod_ip}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台组件{{component_name}}异常退出恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_container_exit","dice_component","{\"trigger_duration\":\"time:ms\"}","平台组件异常退出","ticket","【平台组件异常退出恢复】\n\n组件: {{component_name}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\nPod_Ip: {{pod_ip}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台组件{{component_name}}异常退出恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_container_exit","dice_component","{\"trigger_duration\":\"time:ms\"}","平台组件异常退出","email","【平台组件异常退出恢复】\n\n组件: {{component_name}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\nPod_Ip: {{pod_ip}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台组件{{component_name}}异常退出恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_container_exit","dice_component","{\"trigger_duration\":\"time:ms\"}","平台组件异常退出","mbox","【平台组件异常退出恢复】\n\n组件: {{component_name}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\nPod_Ip: {{pod_ip}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台组件{{component_name}}异常退出恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_container_exit","dice_component","{\"trigger_duration\":\"time:ms\"}","平台组件异常退出","webhook","【平台组件异常退出恢复】\n\n组件: {{component_name}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\nPod_Ip: {{pod_ip}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台组件{{component_name}}异常退出恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_container_exit","dice_component","{\"trigger_duration\":\"time:ms\"}","平台组件异常退出","sms","{{component_name}}组件触发平台组件异常退出恢复,组织名称: {{org_name}}\n","【平台组件{{component_name}}异常退出恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_container_exit","dice_component","{\"trigger_duration\":\"time:ms\"}","平台组件异常退出","vms","{{component_name}}组件触发平台组件异常退出恢复,组织名称: {{org_name}}\n","【平台组件{{component_name}}异常退出恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_container_mem","dice_component","{\"mem_allocation_value\":\"size:byte\",\"mem_limit_value\":\"size:byte\",\"mem_usage_percent_avg\":\"percent:2\",\"mem_usage_value\":\"size:byte\"}","平台组件实例内存异常","dingding","【平台组件内存使用率告警】\n\n组件: {{component_name}}\n\n使用率: {{mem_usage_percent_avg}}\n\n使用: {{mem_usage_value}}\n\n限制: {{mem_limit_value}}\n\n分配: {{mem_allocation_value}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\nPod_Ip: {{pod_ip}}\n\n容器ID: {{container_id}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台组件{{component_name}}内存使用率告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_container_mem","dice_component","{\"mem_allocation_value\":\"size:byte\",\"mem_limit_value\":\"size:byte\",\"mem_usage_percent_avg\":\"percent:2\",\"mem_usage_value\":\"size:byte\"}","平台组件实例内存异常","ticket","【平台组件内存使用率告警】\n\n组件: {{component_name}}\n\n使用率: {{mem_usage_percent_avg}}\n\n使用: {{mem_usage_value}}\n\n限制: {{mem_limit_value}}\n\n分配: {{mem_allocation_value}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\nPod_Ip: {{pod_ip}}\n\n容器ID: {{container_id}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台组件{{component_name}}内存使用率告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_container_mem","dice_component","{\"mem_allocation_value\":\"size:byte\",\"mem_limit_value\":\"size:byte\",\"mem_usage_percent_avg\":\"percent:2\",\"mem_usage_value\":\"size:byte\"}","平台组件实例内存异常","email","【平台组件内存使用率告警】\n\n组件: {{component_name}}\n\n使用率: {{mem_usage_percent_avg}}\n\n使用: {{mem_usage_value}}\n\n限制: {{mem_limit_value}}\n\n分配: {{mem_allocation_value}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\nPod_Ip: {{pod_ip}}\n\n容器ID: {{container_id}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台组件{{component_name}}内存使用率告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_container_mem","dice_component","{\"mem_allocation_value\":\"size:byte\",\"mem_limit_value\":\"size:byte\",\"mem_usage_percent_avg\":\"percent:2\",\"mem_usage_value\":\"size:byte\"}","平台组件实例内存异常","mbox","【平台组件内存使用率告警】\n\n组件: {{component_name}}\n\n使用率: {{mem_usage_percent_avg}}\n\n使用: {{mem_usage_value}}\n\n限制: {{mem_limit_value}}\n\n分配: {{mem_allocation_value}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\nPod_Ip: {{pod_ip}}\n\n容器ID: {{container_id}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台组件{{component_name}}内存使用率告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_container_mem","dice_component","{\"mem_allocation_value\":\"size:byte\",\"mem_limit_value\":\"size:byte\",\"mem_usage_percent_avg\":\"percent:2\",\"mem_usage_value\":\"size:byte\"}","平台组件实例内存异常","webhook","【平台组件内存使用率告警】\n\n组件: {{component_name}}\n\n使用率: {{mem_usage_percent_avg}}\n\n使用: {{mem_usage_value}}\n\n限制: {{mem_limit_value}}\n\n分配: {{mem_allocation_value}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\nPod_Ip: {{pod_ip}}\n\n容器ID: {{container_id}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台组件{{component_name}}内存使用率告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_container_mem","dice_component","{\"mem_allocation_value\":\"size:byte\",\"mem_limit_value\":\"size:byte\",\"mem_usage_percent_avg\":\"percent:2\",\"mem_usage_value\":\"size:byte\"}","平台组件实例内存异常","sms","{{component_name}}组件触发平台组件实例内存使用率异常,组织名称: {{org_name}},使用率: {{mem_usage_percent_avg}}\n","【平台组件{{component_name}}内存使用率告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_container_mem","dice_component","{\"mem_allocation_value\":\"size:byte\",\"mem_limit_value\":\"size:byte\",\"mem_usage_percent_avg\":\"percent:2\",\"mem_usage_value\":\"size:byte\"}","平台组件实例内存异常","vms","{{component_name}}组件触发平台组件实例内存使用率异常,组织名称: {{org_name}},使用率: {{mem_usage_percent_avg}}\n","【平台组件{{component_name}}内存使用率告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_container_mem","dice_component","{\"trigger_duration\":\"time:ms\",\"usage_percent_avg\":\"percent:2\"}","平台组件实例内存异常","dingding","【平台组件内存使用率恢复】\n\n组件: {{component_name}}\n\n使用率: {{mem_usage_percent_avg}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n容器ID: {{container_id}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台组件{{component_name}}内存使用率恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_container_mem","dice_component","{\"trigger_duration\":\"time:ms\",\"usage_percent_avg\":\"percent:2\"}","平台组件实例内存异常","ticket","【平台组件内存使用率恢复】\n\n组件: {{component_name}}\n\n使用率: {{mem_usage_percent_avg}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n容器ID: {{container_id}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台组件{{component_name}}内存使用率恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_container_mem","dice_component","{\"trigger_duration\":\"time:ms\",\"usage_percent_avg\":\"percent:2\"}","平台组件实例内存异常","email","【平台组件内存使用率恢复】\n\n组件: {{component_name}}\n\n使用率: {{mem_usage_percent_avg}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n容器ID: {{container_id}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台组件{{component_name}}内存使用率恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_container_mem","dice_component","{\"trigger_duration\":\"time:ms\",\"usage_percent_avg\":\"percent:2\"}","平台组件实例内存异常","mbox","【平台组件内存使用率恢复】\n\n组件: {{component_name}}\n\n使用率: {{mem_usage_percent_avg}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n容器ID: {{container_id}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台组件{{component_name}}内存使用率恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_container_mem","dice_component","{\"trigger_duration\":\"time:ms\",\"usage_percent_avg\":\"percent:2\"}","平台组件实例内存异常","webhook","【平台组件内存使用率恢复】\n\n组件: {{component_name}}\n\n使用率: {{mem_usage_percent_avg}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n容器ID: {{container_id}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台组件{{component_name}}内存使用率恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_container_mem","dice_component","{\"trigger_duration\":\"time:ms\",\"usage_percent_avg\":\"percent:2\"}","平台组件实例内存异常","sms","{{component_name}}组件触发平台组件实例内存使用率恢复,组织名称: {{org_name}},使用率: {{mem_usage_percent_avg}}\n","【平台组件{{component_name}}内存使用率恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_container_mem","dice_component","{\"trigger_duration\":\"time:ms\",\"usage_percent_avg\":\"percent:2\"}","平台组件实例内存异常","vms","{{component_name}}组件触发平台组件实例内存使用率恢复,组织名称: {{org_name}},使用率: {{mem_usage_percent_avg}}\n","【平台组件{{component_name}}内存使用率恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_container_ready","dice_component","","平台组件实例Ready状态异常","dingding","【平台组件Ready状态异常告警】\n\n组件: {{resource_name_value}}\n\n不可用实例: {{not_ready_value}}\n\n期望实例: {{total_value}}\n\n集群: {{cluster_name}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台组件{{resource_name_value}} Ready状态异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_container_ready","dice_component","","平台组件实例Ready状态异常","ticket","【平台组件Ready状态异常告警】\n\n组件: {{resource_name_value}}\n\n不可用实例: {{not_ready_value}}\n\n期望实例: {{total_value}}\n\n集群: {{cluster_name}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台组件{{resource_name_value}} Ready状态异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_container_ready","dice_component","","平台组件实例Ready状态异常","email","【平台组件Ready状态异常告警】\n\n组件: {{resource_name_value}}\n\n不可用实例: {{not_ready_value}}\n\n期望实例: {{total_value}}\n\n集群: {{cluster_name}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台组件{{resource_name_value}} Ready状态异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_container_ready","dice_component","","平台组件实例Ready状态异常","mbox","【平台组件Ready状态异常告警】\n\n组件: {{resource_name_value}}\n\n不可用实例: {{not_ready_value}}\n\n期望实例: {{total_value}}\n\n集群: {{cluster_name}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台组件{{resource_name_value}} Ready状态异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_container_ready","dice_component","","平台组件实例Ready状态异常","webhook","【平台组件Ready状态异常告警】\n\n组件: {{resource_name_value}}\n\n不可用实例: {{not_ready_value}}\n\n期望实例: {{total_value}}\n\n集群: {{cluster_name}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台组件{{resource_name_value}} Ready状态异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_container_ready","dice_component","","平台组件实例Ready状态异常","sms","{{resource_name_value}}组件触发平台组件实例Ready状态异常,组织名称: {{org_name}},不可用实例: {{not_ready_value}}\n","【平台组件{{resource_name_value}} Ready状态异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_container_ready","dice_component","","平台组件实例Ready状态异常","vms","{{resource_name_value}}组件触发平台组件实例Ready状态异常,组织名称: {{org_name}},不可用实例: {{not_ready_value}}\n","【平台组件{{resource_name_value}} Ready状态异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_container_ready","dice_component","{\"trigger_duration\":\"time:ms\"}","平台组件实例Ready状态异常恢复","dingding","【平台组件Ready状态异常恢复】\n\n组件: {{resource_name_value}}\n\n可用实例: {{ready_value}}\n\n期望实例: {{total_value}}\n\n集群: {{cluster_name}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台组件{{resource_name_value}} Ready状态异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_container_ready","dice_component","{\"trigger_duration\":\"time:ms\"}","平台组件实例Ready状态异常恢复","ticket","【平台组件Ready状态异常恢复】\n\n组件: {{resource_name_value}}\n\n可用实例: {{ready_value}}\n\n期望实例: {{total_value}}\n\n集群: {{cluster_name}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台组件{{resource_name_value}} Ready状态异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_container_ready","dice_component","{\"trigger_duration\":\"time:ms\"}","平台组件实例Ready状态异常恢复","email","【平台组件Ready状态异常恢复】\n\n组件: {{resource_name_value}}\n\n可用实例: {{ready_value}}\n\n期望实例: {{total_value}}\n\n集群: {{cluster_name}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台组件{{resource_name_value}} Ready状态异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_container_ready","dice_component","{\"trigger_duration\":\"time:ms\"}","平台组件实例Ready状态异常恢复","mbox","【平台组件Ready状态异常恢复】\n\n组件: {{resource_name_value}}\n\n可用实例: {{ready_value}}\n\n期望实例: {{total_value}}\n\n集群: {{cluster_name}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台组件{{resource_name_value}} Ready状态异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_container_ready","dice_component","{\"trigger_duration\":\"time:ms\"}","平台组件实例Ready状态异常恢复","webhook","【平台组件Ready状态异常恢复】\n\n组件: {{resource_name_value}}\n\n可用实例: {{ready_value}}\n\n期望实例: {{total_value}}\n\n集群: {{cluster_name}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台组件{{resource_name_value}} Ready状态异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_container_ready","dice_component","{\"trigger_duration\":\"time:ms\"}","平台组件实例Ready状态异常恢复","sms","{{resource_name_value}}组件触发平台组件实例Ready状态异常恢复,组织名称: {{org_name}},可用实例: {{ready_value}}\n","【平台组件{{resource_name_value}} Ready状态异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_container_ready","dice_component","{\"trigger_duration\":\"time:ms\"}","平台组件实例Ready状态异常恢复","vms","{{resource_name_value}}组件触发平台组件实例Ready状态异常恢复,组织名称: {{org_name}},可用实例: {{ready_value}}\n","【平台组件{{resource_name_value}} Ready状态异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_flink_checkpoint_duration","dice_component","平台组件Flink任务checkpoint延迟异常告警","dingding","【平台组件Flink任务checkpoint延迟异常告警】\n\n延迟: {{lastCheckpointDuration_value}}ms\n\n任务ID: {{job_id}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台组件Flink任务checkpoint延迟异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_flink_checkpoint_duration","dice_component","平台组件Flink任务checkpoint延迟异常告警","ticket","【平台组件Flink任务checkpoint延迟异常告警】\n\n延迟: {{lastCheckpointDuration_value}}ms\n\n任务ID: {{job_id}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台组件Flink任务checkpoint延迟异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_flink_checkpoint_duration","dice_component","平台组件Flink任务checkpoint延迟异常告警","email","【平台组件Flink任务checkpoint延迟异常告警】\n\n延迟: {{lastCheckpointDuration_value}}ms\n\n任务ID: {{job_id}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台组件Flink任务checkpoint延迟异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_flink_checkpoint_duration","dice_component","平台组件Flink任务checkpoint延迟异常告警","mbox","【平台组件Flink任务checkpoint延迟异常告警】\n\n延迟: {{lastCheckpointDuration_value}}ms\n\n任务ID: {{job_id}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台组件Flink任务checkpoint延迟异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_flink_checkpoint_duration","dice_component","平台组件Flink任务checkpoint延迟异常告警","webhook","【平台组件Flink任务checkpoint延迟异常告警】\n\n延迟: {{lastCheckpointDuration_value}}ms\n\n任务ID: {{job_id}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台组件Flink任务checkpoint延迟异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_flink_checkpoint_duration","dice_component","平台组件Flink任务checkpoint延迟异常告警","sms","触发平台组件Flink任务checkpoint延迟异常,延迟: {{lastCheckpointDuration_value}}ms\n","【平台组件Flink任务checkpoint延迟异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_flink_checkpoint_duration","dice_component","平台组件Flink任务checkpoint延迟异常告警","vms","触发平台组件Flink任务checkpoint延迟异常,延迟: {{lastCheckpointDuration_value}}ms\n","【平台组件Flink任务checkpoint延迟异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_flink_checkpoint_duration","dice_component","平台组件Flink任务checkpoint延迟异常恢复","dingding","【平台组件Flink任务checkpoint延迟异常恢复】\n\n任务ID: {{job_id}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台组件Flink任务checkpoint延迟异恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_flink_checkpoint_duration","dice_component","平台组件Flink任务checkpoint延迟异常恢复","ticket","【平台组件Flink任务checkpoint延迟异常恢复】\n\n任务ID: {{job_id}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台组件Flink任务checkpoint延迟异恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_flink_checkpoint_duration","dice_component","平台组件Flink任务checkpoint延迟异常恢复","email","【平台组件Flink任务checkpoint延迟异常恢复】\n\n任务ID: {{job_id}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台组件Flink任务checkpoint延迟异恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_flink_checkpoint_duration","dice_component","平台组件Flink任务checkpoint延迟异常恢复","mbox","【平台组件Flink任务checkpoint延迟异常恢复】\n\n任务ID: {{job_id}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台组件Flink任务checkpoint延迟异恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_flink_checkpoint_duration","dice_component","平台组件Flink任务checkpoint延迟异常恢复","webhook","【平台组件Flink任务checkpoint延迟异常恢复】\n\n任务ID: {{job_id}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台组件Flink任务checkpoint延迟异恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_flink_checkpoint_duration","dice_component","平台组件Flink任务checkpoint延迟异常恢复","sms","{{job_id}}触发平台组件Flink任务checkpoint延迟异常恢复\n","【平台组件Flink任务checkpoint延迟异恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_flink_checkpoint_duration","dice_component","平台组件Flink任务checkpoint延迟异常恢复","vms","{{job_id}}平台组件Flink任务checkpoint延迟异常恢复\n","【平台组件Flink任务checkpoint延迟异恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_flink_throughput","dice_component","平台组件Flink吞吐量异常告警","dingding","【平台组件Flink吞吐量异常告警】\n\noperator每秒输出量: {{numRecordsOutPerSecond_count_value}}\n\n任务ID: {{job_id}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台组件Flink吞吐量异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_flink_throughput","dice_component","平台组件Flink吞吐量异常告警","ticket","【平台组件Flink吞吐量异常告警】\n\noperator每秒输出量: {{numRecordsOutPerSecond_count_value}}\n\n任务ID: {{job_id}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台组件Flink吞吐量异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_flink_throughput","dice_component","平台组件Flink吞吐量异常告警","email","【平台组件Flink吞吐量异常告警】\n\noperator每秒输出量: {{numRecordsOutPerSecond_count_value}}\n\n任务ID: {{job_id}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台组件Flink吞吐量异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_flink_throughput","dice_component","平台组件Flink吞吐量异常告警","mbox","【平台组件Flink吞吐量异常告警】\n\noperator每秒输出量: {{numRecordsOutPerSecond_count_value}}\n\n任务ID: {{job_id}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台组件Flink吞吐量异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_flink_throughput","dice_component","平台组件Flink吞吐量异常告警","webhook","【平台组件Flink吞吐量异常告警】\n\noperator每秒输出量: {{numRecordsOutPerSecond_count_value}}\n\n任务ID: {{job_id}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台组件Flink吞吐量异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_flink_throughput","dice_component","平台组件Flink吞吐量异常告警","sms","{{job_id}}触发平台组件Flink吞吐量异常告警,operator每秒输出量: {{numRecordsOutPerSecond_count_value}}\n","【平台组件Flink吞吐量异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_flink_throughput","dice_component","平台组件Flink吞吐量异常告警","vms","{{job_id}}触发平台组件Flink吞吐量异常告警,operator每秒输出量: {{numRecordsOutPerSecond_count_value}}\n","【平台组件Flink吞吐量异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_flink_throughput","dice_component","平台组件Flink吞吐量异常告警恢复","dingding","【平台组件Flink吞吐量异常恢复】\n\n任务ID: {{job_id}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台组件Flink吞吐量异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_flink_throughput","dice_component","平台组件Flink吞吐量异常告警恢复","ticket","【平台组件Flink吞吐量异常恢复】\n\n任务ID: {{job_id}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台组件Flink吞吐量异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_flink_throughput","dice_component","平台组件Flink吞吐量异常告警恢复","email","【平台组件Flink吞吐量异常恢复】\n\n任务ID: {{job_id}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台组件Flink吞吐量异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_flink_throughput","dice_component","平台组件Flink吞吐量异常告警恢复","mbox","【平台组件Flink吞吐量异常恢复】\n\n任务ID: {{job_id}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台组件Flink吞吐量异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_flink_throughput","dice_component","平台组件Flink吞吐量异常告警恢复","webhook","【平台组件Flink吞吐量异常恢复】\n\n任务ID: {{job_id}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台组件Flink吞吐量异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_flink_throughput","dice_component","平台组件Flink吞吐量异常告警恢复","sms","{{job_id}}触发平台组件Flink吞吐量异常告警恢复\n","【平台组件Flink吞吐量异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_flink_throughput","dice_component","平台组件Flink吞吐量异常告警恢复","vms","{{job_id}}触发平台组件Flink吞吐量异常告警恢复\n","【平台组件Flink吞吐量异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_gfs_status","dice_component","平台组件网盘不可用告警","dingding","【平台组件网盘疑似不可用告警】\n\n组件: {{component_name}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台组件网盘疑似不可用告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_gfs_status","dice_component","平台组件网盘不可用告警","ticket","【平台组件网盘疑似不可用告警】\n\n组件: {{component_name}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台组件网盘疑似不可用告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_gfs_status","dice_component","平台组件网盘不可用告警","email","【平台组件网盘疑似不可用告警】\n\n组件: {{component_name}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台组件网盘疑似不可用告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_gfs_status","dice_component","平台组件网盘不可用告警","mbox","【平台组件网盘疑似不可用告警】\n\n组件: {{component_name}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台组件网盘疑似不可用告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_gfs_status","dice_component","平台组件网盘不可用告警","webhook","【平台组件网盘疑似不可用告警】\n\n组件: {{component_name}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台组件网盘疑似不可用告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_gfs_status","dice_component","平台组件网盘不可用告警","sms","{{component_name}}组件触发平台组件网盘疑似不可用告警\n","【平台组件网盘疑似不可用告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_gfs_status","dice_component","平台组件网盘不可用告警","sms","{{component_name}}组件触发平台组件网盘疑似不可用告警\n","【平台组件网盘疑似不可用告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_gfs_status","dice_component","平台组件网盘不可用告警恢复","dingding","【平台组件网盘疑似不可用告警恢复】\n\n组件: {{component_name}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台组件网盘疑似不可用告警恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_gfs_status","dice_component","平台组件网盘不可用告警恢复","ticket","【平台组件网盘疑似不可用告警恢复】\n\n组件: {{component_name}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台组件网盘疑似不可用告警恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_gfs_status","dice_component","平台组件网盘不可用告警恢复","email","【平台组件网盘疑似不可用告警恢复】\n\n组件: {{component_name}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台组件网盘疑似不可用告警恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_gfs_status","dice_component","平台组件网盘不可用告警恢复","mbox","【平台组件网盘疑似不可用告警恢复】\n\n组件: {{component_name}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台组件网盘疑似不可用告警恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_gfs_status","dice_component","平台组件网盘不可用告警恢复","webhook","【平台组件网盘疑似不可用告警恢复】\n\n组件: {{component_name}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【平台组件网盘疑似不可用告警恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_gfs_status","dice_component","平台组件网盘不可用告警恢复","sms","{{component_name}}组件触发平台组件网盘疑似不可用告警恢复\n","【平台组件网盘疑似不可用告警恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_gfs_status","dice_component","平台组件网盘不可用告警恢复","vms","{{component_name}}组件触发平台组件网盘疑似不可用告警恢复\n","【平台组件网盘疑似不可用告警恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_log_protector","dice_component","【事件】LOG_STORE保护器状态变化","dingding","【【事件】LOG_STORE保护器状态变化】\n\n集群: {{cluster_name}}\n\n之前状态: {{pre_level}}\n\n当前状态: {{cur_level}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【【事件】LOG_STORE保护器状态变化】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_log_protector","dice_component","【事件】LOG_STORE保护器状态变化","ticket","【【事件】LOG_STORE保护器状态变化】\n\n集群: {{cluster_name}}\n\n之前状态: {{pre_level}}\n\n当前状态: {{cur_level}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【【事件】LOG_STORE保护器状态变化】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_log_protector","dice_component","【事件】LOG_STORE保护器状态变化","email","【【事件】LOG_STORE保护器状态变化】\n\n集群: {{cluster_name}}\n\n之前状态: {{pre_level}}\n\n当前状态: {{cur_level}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【【事件】LOG_STORE保护器状态变化】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_log_protector","dice_component","【事件】LOG_STORE保护器状态变化","mbox","【【事件】LOG_STORE保护器状态变化】\n\n集群: {{cluster_name}}\n\n之前状态: {{pre_level}}\n\n当前状态: {{cur_level}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【【事件】LOG_STORE保护器状态变化】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_log_protector","dice_component","【事件】LOG_STORE保护器状态变化","webhook","【【事件】LOG_STORE保护器状态变化】\n\n集群: {{cluster_name}}\n\n之前状态: {{pre_level}}\n\n当前状态: {{cur_level}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【【事件】LOG_STORE保护器状态变化】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_log_protector","dice_component","【事件】LOG_STORE保护器状态变化","sms","触发【事件】LOG_STORE保护器状态变化告警,之前状态: {{pre_level}},当前状态: {{cur_level}}\n","【【事件】LOG_STORE保护器状态变化】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`name`,`target`,`template`,`title`,`trigger`) VALUES("dice_component_log_protector","dice_component","【事件】LOG_STORE保护器状态变化","vms","触发【事件】LOG_STORE保护器状态变化告警,之前状态: {{pre_level}},当前状态: {{cur_level}}\n","【【事件】LOG_STORE保护器状态变化】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("kubernetes_instance_cpu","kubernetes","{\"cpu_allocation_value\":\"fraction:2\",\"cpu_limit_value\":\"fraction:2\",\"cpu_usage_percent_avg\":\"percent:2\"}","kubernetes组件实例CPU异常","dingding","【kubernetes组件CPU使用率告警】\n\nPod: {{pod_name}}\n\nPod_Ip: {{pod_ip}}\n\n使用率: {{cpu_usage_percent_avg}}\n\n限制: {{cpu_limit_value}}核\n\n分配: {{cpu_allocation_value}}核\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n容器ID: {{container_id}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群kubernetes组件{{pod_name}} CPU使用率告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("kubernetes_instance_cpu","kubernetes","{\"cpu_allocation_value\":\"fraction:2\",\"cpu_limit_value\":\"fraction:2\",\"cpu_usage_percent_avg\":\"percent:2\"}","kubernetes组件实例CPU异常","ticket","【kubernetes组件CPU使用率告警】\n\nPod: {{pod_name}}\n\nPod_Ip: {{pod_ip}}\n\n使用率: {{cpu_usage_percent_avg}}\n\n限制: {{cpu_limit_value}}核\n\n分配: {{cpu_allocation_value}}核\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n容器ID: {{container_id}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群kubernetes组件{{pod_name}} CPU使用率告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("kubernetes_instance_cpu","kubernetes","{\"cpu_allocation_value\":\"fraction:2\",\"cpu_limit_value\":\"fraction:2\",\"cpu_usage_percent_avg\":\"percent:2\"}","kubernetes组件实例CPU异常","email","【kubernetes组件CPU使用率告警】\n\nPod: {{pod_name}}\n\nPod_Ip: {{pod_ip}}\n\n使用率: {{cpu_usage_percent_avg}}\n\n限制: {{cpu_limit_value}}核\n\n分配: {{cpu_allocation_value}}核\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n容器ID: {{container_id}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群kubernetes组件{{pod_name}} CPU使用率告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("kubernetes_instance_cpu","kubernetes","{\"cpu_allocation_value\":\"fraction:2\",\"cpu_limit_value\":\"fraction:2\",\"cpu_usage_percent_avg\":\"percent:2\"}","kubernetes组件实例CPU异常","mbox","【kubernetes组件CPU使用率告警】\n\nPod: {{pod_name}}\n\nPod_Ip: {{pod_ip}}\n\n使用率: {{cpu_usage_percent_avg}}\n\n限制: {{cpu_limit_value}}核\n\n分配: {{cpu_allocation_value}}核\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n容器ID: {{container_id}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群kubernetes组件{{pod_name}} CPU使用率告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("kubernetes_instance_cpu","kubernetes","{\"cpu_allocation_value\":\"fraction:2\",\"cpu_limit_value\":\"fraction:2\",\"cpu_usage_percent_avg\":\"percent:2\"}","kubernetes组件实例CPU异常","webhook","【kubernetes组件CPU使用率告警】\n\nPod: {{pod_name}}\n\nPod_Ip: {{pod_ip}}\n\n使用率: {{cpu_usage_percent_avg}}\n\n限制: {{cpu_limit_value}}核\n\n分配: {{cpu_allocation_value}}核\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n容器ID: {{container_id}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群kubernetes组件{{pod_name}} CPU使用率告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("kubernetes_instance_cpu","kubernetes","{\"cpu_allocation_value\":\"fraction:2\",\"cpu_limit_value\":\"fraction:2\",\"cpu_usage_percent_avg\":\"percent:2\"}","kubernetes组件实例CPU异常","sms","{{cluster_name}}集群{{pod_name}}组件触发kubernetes组件实例CPU使用率异常,组织名称: {{org_name}},使用率: {{cpu_usage_percent_avg}}\n","【{{cluster_name}}集群kubernetes组件{{pod_name}} CPU使用率告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("kubernetes_instance_cpu","kubernetes","{\"cpu_allocation_value\":\"fraction:2\",\"cpu_limit_value\":\"fraction:2\",\"cpu_usage_percent_avg\":\"percent:2\"}","kubernetes组件实例CPU异常","vms","{{cluster_name}}集群{{pod_name}}组件触发kubernetes组件实例CPU使用率异常,组织名称: {{org_name}},使用率: {{cpu_usage_percent_avg}}\n","【{{cluster_name}}集群kubernetes组件{{pod_name}} CPU使用率告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("kubernetes_instance_cpu","kubernetes","{\"cpu_usage_percent_avg\":\"percent:2\",\"trigger_duration\":\"time:ms\"}","kubernetes组件实例CPU异常恢复","dingding","【kubernetes组件CPU使用率恢复】\n\nPod: {{pod_name}}\n\nPod_Ip: {{pod_ip}}\n\n使用率: {{cpu_usage_percent_avg}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n容器ID: {{container_id}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群kubernetes组件{{pod_name}} CPU使用率恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("kubernetes_instance_cpu","kubernetes","{\"cpu_usage_percent_avg\":\"percent:2\",\"trigger_duration\":\"time:ms\"}","kubernetes组件实例CPU异常恢复","ticket","【kubernetes组件CPU使用率恢复】\n\nPod: {{pod_name}}\n\nPod_Ip: {{pod_ip}}\n\n使用率: {{cpu_usage_percent_avg}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n容器ID: {{container_id}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群kubernetes组件{{pod_name}} CPU使用率恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("kubernetes_instance_cpu","kubernetes","{\"cpu_usage_percent_avg\":\"percent:2\",\"trigger_duration\":\"time:ms\"}","kubernetes组件实例CPU异常恢复","email","【kubernetes组件CPU使用率恢复】\n\nPod: {{pod_name}}\n\nPod_Ip: {{pod_ip}}\n\n使用率: {{cpu_usage_percent_avg}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n容器ID: {{container_id}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群kubernetes组件{{pod_name}} CPU使用率恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("kubernetes_instance_cpu","kubernetes","{\"cpu_usage_percent_avg\":\"percent:2\",\"trigger_duration\":\"time:ms\"}","kubernetes组件实例CPU异常恢复","mbox","【kubernetes组件CPU使用率恢复】\n\nPod: {{pod_name}}\n\nPod_Ip: {{pod_ip}}\n\n使用率: {{cpu_usage_percent_avg}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n容器ID: {{container_id}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群kubernetes组件{{pod_name}} CPU使用率恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("kubernetes_instance_cpu","kubernetes","{\"cpu_usage_percent_avg\":\"percent:2\",\"trigger_duration\":\"time:ms\"}","kubernetes组件实例CPU异常恢复","webhook","【kubernetes组件CPU使用率恢复】\n\nPod: {{pod_name}}\n\nPod_Ip: {{pod_ip}}\n\n使用率: {{cpu_usage_percent_avg}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n容器ID: {{container_id}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群kubernetes组件{{pod_name}} CPU使用率恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("kubernetes_instance_cpu","kubernetes","{\"cpu_usage_percent_avg\":\"percent:2\",\"trigger_duration\":\"time:ms\"}","kubernetes组件实例CPU异常恢复","sms","{{cluster_name}}集群{{pod_name}}组件触发kubernetes组件实例CPU使用率异常,组织名称: {{org_name}},使用率: {{cpu_usage_percent_avg}}\n","【{{cluster_name}}集群kubernetes组件{{pod_name}} CPU使用率恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("kubernetes_instance_cpu","kubernetes","{\"cpu_usage_percent_avg\":\"percent:2\",\"trigger_duration\":\"time:ms\"}","kubernetes组件实例CPU异常恢复","vms","{{cluster_name}}集群{{pod_name}}组件触发kubernetes组件实例CPU使用率异常,组织名称: {{org_name}},使用率: {{cpu_usage_percent_avg}}\n","【{{cluster_name}}集群kubernetes组件{{pod_name}} CPU使用率恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("kubernetes_instance_exit","kubernetes","{\"finished_at_value\":\"date\",\"started_at_value\":\"date\"}","kubernetes组件异常退出","dingding","【kubernetes组件异常退出告警】\n\n组件: {{pod_name}}\n\nPod_Ip: {{pod_ip}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n启动时间: {{started_at_value}}\n\n退出时间: {{finished_at_value}}\n\n退出原因: {{terminated_reason_value}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群kubernetes组件{{pod_name}}异常退出告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("kubernetes_instance_exit","kubernetes","{\"finished_at_value\":\"date\",\"started_at_value\":\"date\"}","kubernetes组件异常退出","ticket","【kubernetes组件异常退出告警】\n\n组件: {{pod_name}}\n\nPod_Ip: {{pod_ip}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n启动时间: {{started_at_value}}\n\n退出时间: {{finished_at_value}}\n\n退出原因: {{terminated_reason_value}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群kubernetes组件{{pod_name}}异常退出告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("kubernetes_instance_exit","kubernetes","{\"finished_at_value\":\"date\",\"started_at_value\":\"date\"}","kubernetes组件异常退出","email","【kubernetes组件异常退出告警】\n\n组件: {{pod_name}}\n\nPod_Ip: {{pod_ip}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n启动时间: {{started_at_value}}\n\n退出时间: {{finished_at_value}}\n\n退出原因: {{terminated_reason_value}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群kubernetes组件{{pod_name}}异常退出告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("kubernetes_instance_exit","kubernetes","{\"finished_at_value\":\"date\",\"started_at_value\":\"date\"}","kubernetes组件异常退出","mbox","【kubernetes组件异常退出告警】\n\n组件: {{pod_name}}\n\nPod_Ip: {{pod_ip}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n启动时间: {{started_at_value}}\n\n退出时间: {{finished_at_value}}\n\n退出原因: {{terminated_reason_value}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群kubernetes组件{{pod_name}}异常退出告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("kubernetes_instance_exit","kubernetes","{\"finished_at_value\":\"date\",\"started_at_value\":\"date\"}","kubernetes组件异常退出","webhook","【kubernetes组件异常退出告警】\n\n组件: {{pod_name}}\n\nPod_Ip: {{pod_ip}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n启动时间: {{started_at_value}}\n\n退出时间: {{finished_at_value}}\n\n退出原因: {{terminated_reason_value}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群kubernetes组件{{pod_name}}异常退出告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("kubernetes_instance_exit","kubernetes","{\"finished_at_value\":\"date\",\"started_at_value\":\"date\"}","kubernetes组件异常退出","sms","{{cluster_name}}集群{{pod_name}}组件触发kubernetes组件异常退出,组织名称: {{org_name}},退出原因:{{terminated_reason_value}}\n","【{{cluster_name}}集群kubernetes组件{{pod_name}}异常退出告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("kubernetes_instance_exit","kubernetes","{\"finished_at_value\":\"date\",\"started_at_value\":\"date\"}","kubernetes组件异常退出","vms","{{cluster_name}}集群{{pod_name}}组件触发kubernetes组件异常退出,组织名称: {{org_name}},退出原因:{{terminated_reason_value}}\n","【{{cluster_name}}集群kubernetes组件{{pod_name}}异常退出告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("kubernetes_instance_exit","kubernetes","{\"trigger_duration\":\"time:ms\"}","kubernetes组件异常退出恢复","dingding","【kubernetes组件异常退出恢复】\n\n组件: {{pod_name}}\n\nPod_Ip: {{pod_ip}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群kubernetes组件{{pod_name}}异常退出恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("kubernetes_instance_exit","kubernetes","{\"trigger_duration\":\"time:ms\"}","kubernetes组件异常退出恢复","ticket","【kubernetes组件异常退出恢复】\n\n组件: {{pod_name}}\n\nPod_Ip: {{pod_ip}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群kubernetes组件{{pod_name}}异常退出恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("kubernetes_instance_exit","kubernetes","{\"trigger_duration\":\"time:ms\"}","kubernetes组件异常退出恢复","email","【kubernetes组件异常退出恢复】\n\n组件: {{pod_name}}\n\nPod_Ip: {{pod_ip}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群kubernetes组件{{pod_name}}异常退出恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("kubernetes_instance_exit","kubernetes","{\"trigger_duration\":\"time:ms\"}","kubernetes组件异常退出恢复","mbox","【kubernetes组件异常退出恢复】\n\n组件: {{pod_name}}\n\nPod_Ip: {{pod_ip}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群kubernetes组件{{pod_name}}异常退出恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("kubernetes_instance_exit","kubernetes","{\"trigger_duration\":\"time:ms\"}","kubernetes组件异常退出恢复","webhook","【kubernetes组件异常退出恢复】\n\n组件: {{pod_name}}\n\nPod_Ip: {{pod_ip}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群kubernetes组件{{pod_name}}异常退出恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("kubernetes_instance_exit","kubernetes","{\"trigger_duration\":\"time:ms\"}","kubernetes组件异常退出恢复","sms","{{cluster_name}}集群{{pod_name}}组件触发kubernetes组件异常退出告警恢复\n","【{{cluster_name}}集群kubernetes组件{{pod_name}}异常退出恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("kubernetes_instance_exit","kubernetes","{\"trigger_duration\":\"time:ms\"}","kubernetes组件异常退出","vms","{{cluster_name}}集群{{pod_name}}组件触发kubernetes组件异常退出告警恢复\n","【{{cluster_name}}集群kubernetes组件{{pod_name}}异常退出恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("kubernetes_instance_mem","kubernetes","{\"mem_allocation_value\":\"size:byte\",\"mem_limit_value\":\"size:byte\",\"mem_usage_percent_avg\":\"percent:2\",\"mem_usage_value\":\"size:byte\"}","kubernetes组件实例内存异常","dingding","【kubernetes组件内存使用率告警】\n\nPod: {{pod_name}}\n\nPod_Ip: {{pod_ip}}\n\n使用率: {{mem_usage_percent_avg}}\n\n使用: {{mem_usage_value}}\n\n限制: {{mem_limit_value}}\n\n分配: {{mem_allocation_value}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n容器ID: {{container_id}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群kubernetes组件{{pod_name}}内存使用率告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("kubernetes_instance_mem","kubernetes","{\"mem_allocation_value\":\"size:byte\",\"mem_limit_value\":\"size:byte\",\"mem_usage_percent_avg\":\"percent:2\",\"mem_usage_value\":\"size:byte\"}","kubernetes组件实例内存异常","ticket","【kubernetes组件内存使用率告警】\n\nPod: {{pod_name}}\n\nPod_Ip: {{pod_ip}}\n\n使用率: {{mem_usage_percent_avg}}\n\n使用: {{mem_usage_value}}\n\n限制: {{mem_limit_value}}\n\n分配: {{mem_allocation_value}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n容器ID: {{container_id}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群kubernetes组件{{pod_name}}内存使用率告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("kubernetes_instance_mem","kubernetes","{\"mem_allocation_value\":\"size:byte\",\"mem_limit_value\":\"size:byte\",\"mem_usage_percent_avg\":\"percent:2\",\"mem_usage_value\":\"size:byte\"}","kubernetes组件实例内存异常","email","【kubernetes组件内存使用率告警】\n\nPod: {{pod_name}}\n\nPod_Ip: {{pod_ip}}\n\n使用率: {{mem_usage_percent_avg}}\n\n使用: {{mem_usage_value}}\n\n限制: {{mem_limit_value}}\n\n分配: {{mem_allocation_value}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n容器ID: {{container_id}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群kubernetes组件{{pod_name}}内存使用率告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("kubernetes_instance_mem","kubernetes","{\"mem_allocation_value\":\"size:byte\",\"mem_limit_value\":\"size:byte\",\"mem_usage_percent_avg\":\"percent:2\",\"mem_usage_value\":\"size:byte\"}","kubernetes组件实例内存异常","mbox","【kubernetes组件内存使用率告警】\n\nPod: {{pod_name}}\n\nPod_Ip: {{pod_ip}}\n\n使用率: {{mem_usage_percent_avg}}\n\n使用: {{mem_usage_value}}\n\n限制: {{mem_limit_value}}\n\n分配: {{mem_allocation_value}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n容器ID: {{container_id}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群kubernetes组件{{pod_name}}内存使用率告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("kubernetes_instance_mem","kubernetes","{\"mem_allocation_value\":\"size:byte\",\"mem_limit_value\":\"size:byte\",\"mem_usage_percent_avg\":\"percent:2\",\"mem_usage_value\":\"size:byte\"}","kubernetes组件实例内存异常","webhook","【kubernetes组件内存使用率告警】\n\nPod: {{pod_name}}\n\nPod_Ip: {{pod_ip}}\n\n使用率: {{mem_usage_percent_avg}}\n\n使用: {{mem_usage_value}}\n\n限制: {{mem_limit_value}}\n\n分配: {{mem_allocation_value}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n容器ID: {{container_id}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群kubernetes组件{{pod_name}}内存使用率告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("kubernetes_instance_mem","kubernetes","{\"mem_allocation_value\":\"size:byte\",\"mem_limit_value\":\"size:byte\",\"mem_usage_percent_avg\":\"percent:2\",\"mem_usage_value\":\"size:byte\"}","kubernetes组件实例内存异常","sms","{{cluster_name}}集群{{pod_name}}组件触发kubernetes组件实例内存使用率异常告警,组织名称: {{org_name}},使用率: {{mem_usage_percent_avg}}\n","【{{cluster_name}}集群kubernetes组件{{pod_name}}内存使用率告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("kubernetes_instance_mem","kubernetes","{\"mem_allocation_value\":\"size:byte\",\"mem_limit_value\":\"size:byte\",\"mem_usage_percent_avg\":\"percent:2\",\"mem_usage_value\":\"size:byte\"}","kubernetes组件实例内存异常","vms","{{cluster_name}}集群{{pod_name}}组件触发kubernetes组件实例内存使用率异常告警,组织名称: {{org_name}},使用率: {{mem_usage_percent_avg}}\n","【{{cluster_name}}集群kubernetes组件{{pod_name}}内存使用率告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("kubernetes_instance_mem","kubernetes","{\"mem_usage_percent_avg\":\"percent:2\",\"trigger_duration\":\"time:ms\"}","kubernetes组件实例内存异常","dingding","【kubernetes组件内存使用率恢复】\n\nPod: {{pod_name}}\n\nPod_Ip: {{pod_ip}}\n\n使用率: {{mem_usage_percent_avg}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n容器ID: {{container_id}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群kubernetes组件{{pod_name}}内存使用率恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("kubernetes_instance_mem","kubernetes","{\"mem_usage_percent_avg\":\"percent:2\",\"trigger_duration\":\"time:ms\"}","kubernetes组件实例内存异常","ticket","【kubernetes组件内存使用率恢复】\n\nPod: {{pod_name}}\n\nPod_Ip: {{pod_ip}}\n\n使用率: {{mem_usage_percent_avg}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n容器ID: {{container_id}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群kubernetes组件{{pod_name}}内存使用率恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("kubernetes_instance_mem","kubernetes","{\"mem_usage_percent_avg\":\"percent:2\",\"trigger_duration\":\"time:ms\"}","kubernetes组件实例内存异常","email","【kubernetes组件内存使用率恢复】\n\nPod: {{pod_name}}\n\nPod_Ip: {{pod_ip}}\n\n使用率: {{mem_usage_percent_avg}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n容器ID: {{container_id}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群kubernetes组件{{pod_name}}内存使用率恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("kubernetes_instance_mem","kubernetes","{\"mem_usage_percent_avg\":\"percent:2\",\"trigger_duration\":\"time:ms\"}","kubernetes组件实例内存异常","mbox","【kubernetes组件内存使用率恢复】\n\nPod: {{pod_name}}\n\nPod_Ip: {{pod_ip}}\n\n使用率: {{mem_usage_percent_avg}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n容器ID: {{container_id}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群kubernetes组件{{pod_name}}内存使用率恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("kubernetes_instance_mem","kubernetes","{\"mem_usage_percent_avg\":\"percent:2\",\"trigger_duration\":\"time:ms\"}","kubernetes组件实例内存异常","webhook","【kubernetes组件内存使用率恢复】\n\nPod: {{pod_name}}\n\nPod_Ip: {{pod_ip}}\n\n使用率: {{mem_usage_percent_avg}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n容器ID: {{container_id}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群kubernetes组件{{pod_name}}内存使用率恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("kubernetes_instance_mem","kubernetes","{\"mem_usage_percent_avg\":\"percent:2\",\"trigger_duration\":\"time:ms\"}","kubernetes组件实例内存异常","sms","{{cluster_name}}集群{{pod_name}}组件触发kubernetes组件实例内存使用率异常告警恢复,组织名称: {{org_name}},使用率: {{mem_usage_percent_avg}}\n","【{{cluster_name}}集群kubernetes组件{{pod_name}}内存使用率恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("kubernetes_instance_mem","kubernetes","{\"mem_usage_percent_avg\":\"percent:2\",\"trigger_duration\":\"time:ms\"}","kubernetes组件实例内存异常","vms","{{cluster_name}}集群{{pod_name}}组件触发kubernetes组件实例内存使用率异常告警恢复,组织名称: {{org_name}},使用率: {{mem_usage_percent_avg}}\n","【{{cluster_name}}集群kubernetes组件{{pod_name}}内存使用率恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("kubernetes_instance_ready","kubernetes","","kubernetes组件实例Ready状态异常","dingding","【kubernetes组件Ready状态告警】\n\n组件: {{resource_name_value}}\n\n不可用实例: {{not_ready_value}}\n\n期望实例: {{total_value}}\n\n集群: {{cluster_name}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群kubernetes组件{{resource_name_value}} Ready状态告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("kubernetes_instance_ready","kubernetes","","kubernetes组件实例Ready状态异常","ticket","【kubernetes组件Ready状态告警】\n\n组件: {{resource_name_value}}\n\n不可用实例: {{not_ready_value}}\n\n期望实例: {{total_value}}\n\n集群: {{cluster_name}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群kubernetes组件{{resource_name_value}} Ready状态告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("kubernetes_instance_ready","kubernetes","","kubernetes组件实例Ready状态异常","email","【kubernetes组件Ready状态告警】\n\n组件: {{resource_name_value}}\n\n不可用实例: {{not_ready_value}}\n\n期望实例: {{total_value}}\n\n集群: {{cluster_name}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群kubernetes组件{{resource_name_value}} Ready状态告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("kubernetes_instance_ready","kubernetes","","kubernetes组件实例Ready状态异常","mbox","【kubernetes组件Ready状态告警】\n\n组件: {{resource_name_value}}\n\n不可用实例: {{not_ready_value}}\n\n期望实例: {{total_value}}\n\n集群: {{cluster_name}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群kubernetes组件{{resource_name_value}} Ready状态告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("kubernetes_instance_ready","kubernetes","","kubernetes组件实例Ready状态异常","webhook","【kubernetes组件Ready状态告警】\n\n组件: {{resource_name_value}}\n\n不可用实例: {{not_ready_value}}\n\n期望实例: {{total_value}}\n\n集群: {{cluster_name}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群kubernetes组件{{resource_name_value}} Ready状态告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("kubernetes_instance_ready","kubernetes","","kubernetes组件实例Ready状态异常","sms","{{cluster_name}}集群{{resource_name_value}}组件触发kubernetes组件实例Ready状态异常,组织名称: {{org_name}},不可用实例: {{not_ready_value}}\n","【{{cluster_name}}集群kubernetes组件{{resource_name_value}} Ready状态告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("kubernetes_instance_ready","kubernetes","","kubernetes组件实例Ready状态异常","vms","{{cluster_name}}集群{{resource_name_value}}组件触发kubernetes组件实例Ready状态异常,组织名称: {{org_name}},不可用实例: {{not_ready_value}}\n","【{{cluster_name}}集群kubernetes组件{{resource_name_value}} Ready状态告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("kubernetes_instance_ready","kubernetes","{\"trigger_duration\":\"time:ms\"}","kubernetes组件实例Ready状态异常","dingding","【kubernetes组件Ready状态恢复】\n\n组件: {{resource_name_value}}\n\n可用实例: {{ready_value}}\n\n期望实例: {{total_value}}\n\n集群: {{cluster_name}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群kubernetes组件{{resource_name_value}} Ready状态恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("kubernetes_instance_ready","kubernetes","{\"trigger_duration\":\"time:ms\"}","kubernetes组件实例Ready状态异常","ticket","【kubernetes组件Ready状态恢复】\n\n组件: {{resource_name_value}}\n\n可用实例: {{ready_value}}\n\n期望实例: {{total_value}}\n\n集群: {{cluster_name}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群kubernetes组件{{resource_name_value}} Ready状态恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("kubernetes_instance_ready","kubernetes","{\"trigger_duration\":\"time:ms\"}","kubernetes组件实例Ready状态异常","email","【kubernetes组件Ready状态恢复】\n\n组件: {{resource_name_value}}\n\n可用实例: {{ready_value}}\n\n期望实例: {{total_value}}\n\n集群: {{cluster_name}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群kubernetes组件{{resource_name_value}} Ready状态恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("kubernetes_instance_ready","kubernetes","{\"trigger_duration\":\"time:ms\"}","kubernetes组件实例Ready状态异常","mbox","【kubernetes组件Ready状态恢复】\n\n组件: {{resource_name_value}}\n\n可用实例: {{ready_value}}\n\n期望实例: {{total_value}}\n\n集群: {{cluster_name}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群kubernetes组件{{resource_name_value}} Ready状态恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("kubernetes_instance_ready","kubernetes","{\"trigger_duration\":\"time:ms\"}","kubernetes组件实例Ready状态异常","webhook","【kubernetes组件Ready状态恢复】\n\n组件: {{resource_name_value}}\n\n可用实例: {{ready_value}}\n\n期望实例: {{total_value}}\n\n集群: {{cluster_name}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群kubernetes组件{{resource_name_value}} Ready状态恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("kubernetes_instance_ready","kubernetes","{\"trigger_duration\":\"time:ms\"}","kubernetes组件实例Ready状态异常","sms","{{cluster_name}}集群{{resource_name_value}}组件触发kubernetes组件实例Ready状态异常恢复,组织名称: {{org_name}},可用实例: {{ready_value}}\n","【{{cluster_name}}集群kubernetes组件{{resource_name_value}} Ready状态恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("kubernetes_instance_ready","kubernetes","{\"trigger_duration\":\"time:ms\"}","kubernetes组件实例Ready状态异常","vms","{{cluster_name}}集群{{resource_name_value}}组件触发kubernetes组件实例Ready状态异常恢复,组织名称: {{org_name}},可用实例: {{ready_value}}\n","【{{cluster_name}}集群kubernetes组件{{resource_name_value}} Ready状态恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("kubernetes_node","kubernetes","{\"allocatable_memory_bytes_value\":\"size:byte\",\"capacity_memory_bytes_value\":\"size:byte\"}","kubernetes节点异常","dingding","【kubernetes节点状态异常告警】\n\n集群: {{cluster_name}}\n\n机器: {{node_name}}\n\n信息: {{ready_message_value}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n","【{{cluster_name}}集群kubernetes节点{{node_name}}节点异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("kubernetes_node","kubernetes","{\"allocatable_memory_bytes_value\":\"size:byte\",\"capacity_memory_bytes_value\":\"size:byte\"}","kubernetes节点异常","ticket","【kubernetes节点状态异常告警】\n\n集群: {{cluster_name}}\n\n机器: {{node_name}}\n\n信息: {{ready_message_value}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n","【{{cluster_name}}集群kubernetes节点{{node_name}}节点异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("kubernetes_node","kubernetes","{\"allocatable_memory_bytes_value\":\"size:byte\",\"capacity_memory_bytes_value\":\"size:byte\"}","kubernetes节点异常","email","【kubernetes节点状态异常告警】\n\n集群: {{cluster_name}}\n\n机器: {{node_name}}\n\n信息: {{ready_message_value}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n","【{{cluster_name}}集群kubernetes节点{{node_name}}节点异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("kubernetes_node","kubernetes","{\"allocatable_memory_bytes_value\":\"size:byte\",\"capacity_memory_bytes_value\":\"size:byte\"}","kubernetes节点异常","mbox","【kubernetes节点状态异常告警】\n\n集群: {{cluster_name}}\n\n机器: {{node_name}}\n\n信息: {{ready_message_value}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n","【{{cluster_name}}集群kubernetes节点{{node_name}}节点异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("kubernetes_node","kubernetes","{\"allocatable_memory_bytes_value\":\"size:byte\",\"capacity_memory_bytes_value\":\"size:byte\"}","kubernetes节点异常","webhook","【kubernetes节点状态异常告警】\n\n集群: {{cluster_name}}\n\n机器: {{node_name}}\n\n信息: {{ready_message_value}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n","【{{cluster_name}}集群kubernetes节点{{node_name}}节点异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("kubernetes_node","kubernetes","{\"allocatable_memory_bytes_value\":\"size:byte\",\"capacity_memory_bytes_value\":\"size:byte\"}","kubernetes节点异常","sms","{{cluster_name}}集群{{node_name}}节点触发kubernetes节点异常,组织名称: {{org_name}},信息: {{ready_message_value}}\n","【{{cluster_name}}集群kubernetes节点{{node_name}}节点异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("kubernetes_node","kubernetes","{\"allocatable_memory_bytes_value\":\"size:byte\",\"capacity_memory_bytes_value\":\"size:byte\"}","kubernetes节点异常","vms","{{cluster_name}}集群{{node_name}}节点触发kubernetes节点异常,组织名称: {{org_name}},信息: {{ready_message_value}}\n","【{{cluster_name}}集群kubernetes节点{{node_name}}节点异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("kubernetes_node","kubernetes","{\"trigger_duration\":\"time:ms\"}","kubernetes节点异常恢复","dingding","【kubernetes节点状态异常恢复】\n\n集群: {{cluster_name}}\n\n机器: {{node_name}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n","【{{cluster_name}}集群kubernetes节点{{node_name}}节点异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("kubernetes_node","kubernetes","{\"trigger_duration\":\"time:ms\"}","kubernetes节点异常恢复","ticket","【kubernetes节点状态异常恢复】\n\n集群: {{cluster_name}}\n\n机器: {{node_name}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n","【{{cluster_name}}集群kubernetes节点{{node_name}}节点异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("kubernetes_node","kubernetes","{\"trigger_duration\":\"time:ms\"}","kubernetes节点异常恢复","email","【kubernetes节点状态异常恢复】\n\n集群: {{cluster_name}}\n\n机器: {{node_name}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n","【{{cluster_name}}集群kubernetes节点{{node_name}}节点异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("kubernetes_node","kubernetes","{\"trigger_duration\":\"time:ms\"}","kubernetes节点异常恢复","mbox","【kubernetes节点状态异常恢复】\n\n集群: {{cluster_name}}\n\n机器: {{node_name}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n","【{{cluster_name}}集群kubernetes节点{{node_name}}节点异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("kubernetes_node","kubernetes","{\"trigger_duration\":\"time:ms\"}","kubernetes节点异常恢复","webhook","【kubernetes节点状态异常恢复】\n\n集群: {{cluster_name}}\n\n机器: {{node_name}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n","【{{cluster_name}}集群kubernetes节点{{node_name}}节点异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("kubernetes_node","kubernetes","{\"trigger_duration\":\"time:ms\"}","kubernetes节点异常恢复","sms","{{cluster_name}}集群{{node_name}}节点触发kubernetes节点异常恢复,组织名称: {{org_name}}\n","【{{cluster_name}}集群kubernetes节点{{node_name}}节点异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("kubernetes_node","kubernetes","{\"trigger_duration\":\"time:ms\"}","kubernetes节点异常恢复","vms","{{cluster_name}}集群{{node_name}}节点触发kubernetes节点异常恢复,组织名称: {{org_name}}\n","【{{cluster_name}}集群kubernetes节点{{node_name}}节点异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_cluster_clock","machine","{\"elapsed_abs_avg\":\"time:ms\"}","机器时钟一致性异常告警","dingding","【机器时钟一致性异常告警】\n\n时钟偏移绝对值: {{elapsed_abs_avg}}\n\n发送时间戳(ms): {{send_timestamp}}\n\n接收时间戳(ms): {{receive_timestamp}}\n\n源机器: {{source_host_ip}}\n\n目标机器: {{host_ip}}\n\n集群: {{cluster_name}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群机器{{host_ip}} 时钟一致性异常告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_cluster_clock","machine","{\"elapsed_abs_avg\":\"time:ms\"}","机器时钟一致性异常告警","ticket","【机器时钟一致性异常告警】\n\n时钟偏移绝对值: {{elapsed_abs_avg}}\n\n发送时间戳(ms): {{send_timestamp}}\n\n接收时间戳(ms): {{receive_timestamp}}\n\n源机器: {{source_host_ip}}\n\n目标机器: {{host_ip}}\n\n集群: {{cluster_name}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群机器{{host_ip}} 时钟一致性异常告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_cluster_clock","machine","{\"elapsed_abs_avg\":\"time:ms\"}","机器时钟一致性异常告警","email","【机器时钟一致性异常告警】\n\n时钟偏移绝对值: {{elapsed_abs_avg}}\n\n发送时间戳(ms): {{send_timestamp}}\n\n接收时间戳(ms): {{receive_timestamp}}\n\n源机器: {{source_host_ip}}\n\n目标机器: {{host_ip}}\n\n集群: {{cluster_name}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群机器{{host_ip}} 时钟一致性异常告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_cluster_clock","machine","{\"elapsed_abs_avg\":\"time:ms\"}","机器时钟一致性异常告警","mbox","【机器时钟一致性异常告警】\n\n时钟偏移绝对值: {{elapsed_abs_avg}}\n\n发送时间戳(ms): {{send_timestamp}}\n\n接收时间戳(ms): {{receive_timestamp}}\n\n源机器: {{source_host_ip}}\n\n目标机器: {{host_ip}}\n\n集群: {{cluster_name}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群机器{{host_ip}} 时钟一致性异常告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_cluster_clock","machine","{\"elapsed_abs_avg\":\"time:ms\"}","机器时钟一致性异常告警","webhook","【机器时钟一致性异常告警】\n\n时钟偏移绝对值: {{elapsed_abs_avg}}\n\n发送时间戳(ms): {{send_timestamp}}\n\n接收时间戳(ms): {{receive_timestamp}}\n\n源机器: {{source_host_ip}}\n\n目标机器: {{host_ip}}\n\n集群: {{cluster_name}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群机器{{host_ip}} 时钟一致性异常告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_cluster_clock","machine","{\"elapsed_abs_avg\":\"time:ms\"}","机器时钟一致性异常告警","sms","{{cluster_name}}集群机器{{host_ip}}触发时钟一致性异常告警,组织名称: {{org_name}},时钟偏移绝对值: {{elapsed_abs_avg}}\n","【{{cluster_name}}集群机器{{host_ip}} 时钟一致性异常告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_cluster_clock","machine","{\"elapsed_abs_avg\":\"time:ms\"}","机器时钟一致性异常告警","vms","{{cluster_name}}集群机器{{host_ip}}触发时钟一致性异常告警,组织名称: {{org_name}},时钟偏移绝对值: {{elapsed_abs_avg}}\n","【{{cluster_name}}集群机器{{host_ip}} 时钟一致性异常告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_cluster_clock","machine","{\"elapsed_abs_avg\":\"time:ms\",\"trigger_duration\":\"time:ms\"}","时钟一致性异常恢复","dingding","【机器时钟一致性异常恢复】\n\n时钟偏移绝对值: {{elapsed_abs_avg}}\n\n源机器: {{source_host_ip}}\n\n目标机器: {{host_ip}}\n\n集群: {{cluster_name}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群机器{{host_ip}} 时钟一致性异常恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_cluster_clock","machine","{\"elapsed_abs_avg\":\"time:ms\",\"trigger_duration\":\"time:ms\"}","时钟一致性异常恢复","ticket","【机器时钟一致性异常恢复】\n\n时钟偏移绝对值: {{elapsed_abs_avg}}\n\n源机器: {{source_host_ip}}\n\n目标机器: {{host_ip}}\n\n集群: {{cluster_name}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群机器{{host_ip}} 时钟一致性异常恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_cluster_clock","machine","{\"elapsed_abs_avg\":\"time:ms\",\"trigger_duration\":\"time:ms\"}","时钟一致性异常恢复","email","【机器时钟一致性异常恢复】\n\n时钟偏移绝对值: {{elapsed_abs_avg}}\n\n源机器: {{source_host_ip}}\n\n目标机器: {{host_ip}}\n\n集群: {{cluster_name}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群机器{{host_ip}} 时钟一致性异常恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_cluster_clock","machine","{\"elapsed_abs_avg\":\"time:ms\",\"trigger_duration\":\"time:ms\"}","时钟一致性异常恢复","mbox","【机器时钟一致性异常恢复】\n\n时钟偏移绝对值: {{elapsed_abs_avg}}\n\n源机器: {{source_host_ip}}\n\n目标机器: {{host_ip}}\n\n集群: {{cluster_name}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群机器{{host_ip}} 时钟一致性异常恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_cluster_clock","machine","{\"elapsed_abs_avg\":\"time:ms\",\"trigger_duration\":\"time:ms\"}","时钟一致性异常恢复","webhook","【机器时钟一致性异常恢复】\n\n时钟偏移绝对值: {{elapsed_abs_avg}}\n\n源机器: {{source_host_ip}}\n\n目标机器: {{host_ip}}\n\n集群: {{cluster_name}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群机器{{host_ip}} 时钟一致性异常恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_cluster_clock","machine","{\"elapsed_abs_avg\":\"time:ms\",\"trigger_duration\":\"time:ms\"}","时钟一致性异常恢复","sms","{{cluster_name}}集群机器{{host_ip}}触发时钟一致性异常告警恢复,组织名称: {{org_name}},时钟偏移绝对值: {{elapsed_abs_avg}}\n","【{{cluster_name}}集群机器{{host_ip}} 时钟一致性异常恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_cluster_clock","machine","{\"elapsed_abs_avg\":\"time:ms\",\"trigger_duration\":\"time:ms\"}","时钟一致性异常恢复","vms","{{cluster_name}}集群机器{{host_ip}}触发时钟一致性异常告警恢复,组织名称: {{org_name}},时钟偏移绝对值: {{elapsed_abs_avg}}\n","【{{cluster_name}}集群机器{{host_ip}} 时钟一致性异常恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_cpu","machine","{\"cpu_usage_active_avg\":\"percent:2\"}","机器CPU异常告警","dingding","【机器CPU使用率异常告警】\n\nCPU平均使用率: {{cpu_usage_active_avg}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群机器{{host_ip}} CPU使用率异常告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_cpu","machine","{\"cpu_usage_active_avg\":\"percent:2\"}","机器CPU异常告警","ticket","【机器CPU使用率异常告警】\n\nCPU平均使用率: {{cpu_usage_active_avg}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群机器{{host_ip}} CPU使用率异常告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_cpu","machine","{\"cpu_usage_active_avg\":\"percent:2\"}","机器CPU异常告警","email","【机器CPU使用率异常告警】\n\nCPU平均使用率: {{cpu_usage_active_avg}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群机器{{host_ip}} CPU使用率异常告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_cpu","machine","{\"cpu_usage_active_avg\":\"percent:2\"}","机器CPU异常告警","mbox","【机器CPU使用率异常告警】\n\nCPU平均使用率: {{cpu_usage_active_avg}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群机器{{host_ip}} CPU使用率异常告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_cpu","machine","{\"cpu_usage_active_avg\":\"percent:2\"}","机器CPU异常告警","webhook","【机器CPU使用率异常告警】\n\nCPU平均使用率: {{cpu_usage_active_avg}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群机器{{host_ip}} CPU使用率异常告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_cpu","machine","{\"cpu_usage_active_avg\":\"percent:2\"}","机器CPU异常告警","sms","{{cluster_name}}集群机器{{host_ip}}触发机器CPU使用率异常告警,组织名称: {{org_name}},CPU平均使用率: {{cpu_usage_active_avg}}\n","【{{cluster_name}}集群机器{{host_ip}} CPU使用率异常告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_cpu","machine","{\"cpu_usage_active_avg\":\"percent:2\"}","机器CPU异常告警","vms","{{cluster_name}}集群机器{{host_ip}}触发机器CPU使用率异常告警,组织名称: {{org_name}},CPU平均使用率: {{cpu_usage_active_avg}}\n","【{{cluster_name}}集群机器{{host_ip}} CPU使用率异常告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_cpu","machine","{\"trigger_duration\":\"time:ms\",\"usage_active_avg\":\"percent:2\"}","机器CPU异常恢复","dingding","【机器CPU使用率异常恢复】\n\nCPU平均使用率: {{cpu_usage_active_avg}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群机器{{host_ip}} CPU使用率异常恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_cpu","machine","{\"trigger_duration\":\"time:ms\",\"usage_active_avg\":\"percent:2\"}","机器CPU异常恢复","ticket","【机器CPU使用率异常恢复】\n\nCPU平均使用率: {{cpu_usage_active_avg}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群机器{{host_ip}} CPU使用率异常恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_cpu","machine","{\"trigger_duration\":\"time:ms\",\"usage_active_avg\":\"percent:2\"}","机器CPU异常恢复","email","【机器CPU使用率异常恢复】\n\nCPU平均使用率: {{cpu_usage_active_avg}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群机器{{host_ip}} CPU使用率异常恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_cpu","machine","{\"trigger_duration\":\"time:ms\",\"usage_active_avg\":\"percent:2\"}","机器CPU异常恢复","mbox","【机器CPU使用率异常恢复】\n\nCPU平均使用率: {{cpu_usage_active_avg}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群机器{{host_ip}} CPU使用率异常恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_cpu","machine","{\"trigger_duration\":\"time:ms\",\"usage_active_avg\":\"percent:2\"}","机器CPU异常恢复","webhook","【机器CPU使用率异常恢复】\n\nCPU平均使用率: {{cpu_usage_active_avg}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群机器{{host_ip}} CPU使用率异常恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_cpu","machine","{\"trigger_duration\":\"time:ms\",\"usage_active_avg\":\"percent:2\"}","机器CPU异常恢复","sms","{{cluster_name}}集群机器{{host_ip}}触发机器CPU使用率异常告警恢复,组织名称: {{org_name}},CPU平均使用率: {{cpu_usage_active_avg}}\n","【{{cluster_name}}集群机器{{host_ip}} CPU使用率异常恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_cpu","machine","{\"trigger_duration\":\"time:ms\",\"usage_active_avg\":\"percent:2\"}","机器CPU异常恢复","vms","{{cluster_name}}集群机器{{host_ip}}触发机器CPU使用率异常告警恢复,组织名称: {{org_name}}CPU平均使用率: {{cpu_usage_active_avg}}\n","【{{cluster_name}}集群机器{{host_ip}} CPU使用率异常恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_disk","machine","{\"total_value\":\"size:byte\",\"used_percent_value\":\"percent:2\"}","磁盘容量异常告警","dingding","【磁盘使用率异常告警】\n\n使用率: {{used_percent_value}}\n\n容量: {{total_value}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n设备: {{device}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群机器{{host_ip}}磁盘使用率异常告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_disk","machine","{\"total_value\":\"size:byte\",\"used_percent_value\":\"percent:2\"}","磁盘容量异常告警","ticket","【磁盘使用率异常告警】\n\n使用率: {{used_percent_value}}\n\n容量: {{total_value}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n设备: {{device}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群机器{{host_ip}}磁盘使用率异常告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_disk","machine","{\"total_value\":\"size:byte\",\"used_percent_value\":\"percent:2\"}","磁盘容量异常告警","email","【磁盘使用率异常告警】\n\n使用率: {{used_percent_value}}\n\n容量: {{total_value}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n设备: {{device}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群机器{{host_ip}}磁盘使用率异常告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_disk","machine","{\"total_value\":\"size:byte\",\"used_percent_value\":\"percent:2\"}","磁盘容量异常告警","mbox","【磁盘使用率异常告警】\n\n使用率: {{used_percent_value}}\n\n容量: {{total_value}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n设备: {{device}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群机器{{host_ip}}磁盘使用率异常告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_disk","machine","{\"total_value\":\"size:byte\",\"used_percent_value\":\"percent:2\"}","磁盘容量异常告警","webhook","【磁盘使用率异常告警】\n\n使用率: {{used_percent_value}}\n\n容量: {{total_value}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n设备: {{device}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群机器{{host_ip}}磁盘使用率异常告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_disk","machine","{\"total_value\":\"size:byte\",\"used_percent_value\":\"percent:2\"}","磁盘容量异常告警","sms","{{cluster_name}}集群机器{{host_ip}}触发磁盘使用率异常告警,组织名称: {{org_name}},使用率: {{used_percent_value}}\n","【{{cluster_name}}集群机器{{host_ip}}磁盘使用率异常告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_disk","machine","{\"total_value\":\"size:byte\",\"used_percent_value\":\"percent:2\"}","磁盘容量异常告警","vms","{{cluster_name}}集群机器{{host_ip}}触发磁盘使用率异常告警,组织名称: {{org_name}},使用率: {{used_percent_value}}\n","【{{cluster_name}}集群机器{{host_ip}}磁盘使用率异常告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_disk","machine","{\"trigger_duration\":\"time:ms\",\"used_percent_value\":\"percent:2\"}","磁盘容量异常恢复","dingding","【磁盘使用率异常恢复】\n\n使用率: {{used_percent_value}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n设备: {{device}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群机器{{host_ip}}磁盘使用率异常恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_disk","machine","{\"trigger_duration\":\"time:ms\",\"used_percent_value\":\"percent:2\"}","磁盘容量异常恢复","ticket","【磁盘使用率异常恢复】\n\n使用率: {{used_percent_value}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n设备: {{device}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群机器{{host_ip}}磁盘使用率异常恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_disk","machine","{\"trigger_duration\":\"time:ms\",\"used_percent_value\":\"percent:2\"}","磁盘容量异常恢复","email","【磁盘使用率异常恢复】\n\n使用率: {{used_percent_value}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n设备: {{device}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群机器{{host_ip}}磁盘使用率异常恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_disk","machine","{\"trigger_duration\":\"time:ms\",\"used_percent_value\":\"percent:2\"}","磁盘容量异常恢复","mbox","【磁盘使用率异常恢复】\n\n使用率: {{used_percent_value}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n设备: {{device}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群机器{{host_ip}}磁盘使用率异常恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_disk","machine","{\"trigger_duration\":\"time:ms\",\"used_percent_value\":\"percent:2\"}","磁盘容量异常恢复","webhook","【磁盘使用率异常恢复】\n\n使用率: {{used_percent_value}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n设备: {{device}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群机器{{host_ip}}磁盘使用率异常恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_disk","machine","{\"trigger_duration\":\"time:ms\",\"used_percent_value\":\"percent:2\"}","磁盘容量异常恢复","sms","{{cluster_name}}集群机器{{host_ip}}触发磁盘使用率异常告警恢复,组织名称: {{org_name}},使用率: {{used_percent_value}}\n","【{{cluster_name}}集群机器{{host_ip}}磁盘使用率异常恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_disk","machine","{\"trigger_duration\":\"time:ms\",\"used_percent_value\":\"percent:2\"}","磁盘容量异常恢复","vms","{{cluster_name}}集群机器{{host_ip}}触发磁盘使用率异常告警恢复,组织名称: {{org_name}},使用率: {{used_percent_value}}\n","【{{cluster_name}}集群机器{{host_ip}}磁盘使用率异常恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_disk_inode","machine","{\"inode_used_percent_value\":\"percent:2\",\"inodes_total_value\":\"size:byte\"}","磁盘Inode异常告警","dingding","【磁盘Inode异常告警】\n\n使用率: {{inode_used_percent_value}}\n\n容量: {{inodes_total_value}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n设备: {{device}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群机器{{host_ip}}磁盘Inode异常告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_disk_inode","machine","{\"inode_used_percent_value\":\"percent:2\",\"inodes_total_value\":\"size:byte\"}","磁盘Inode异常告警","ticket","【磁盘Inode异常告警】\n\n使用率: {{inode_used_percent_value}}\n\n容量: {{inodes_total_value}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n设备: {{device}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群机器{{host_ip}}磁盘Inode异常告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_disk_inode","machine","{\"inode_used_percent_value\":\"percent:2\",\"inodes_total_value\":\"size:byte\"}","磁盘Inode异常告警","email","【磁盘Inode异常告警】\n\n使用率: {{inode_used_percent_value}}\n\n容量: {{inodes_total_value}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n设备: {{device}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群机器{{host_ip}}磁盘Inode异常告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_disk_inode","machine","{\"inode_used_percent_value\":\"percent:2\",\"inodes_total_value\":\"size:byte\"}","磁盘Inode异常告警","mbox","【磁盘Inode异常告警】\n\n使用率: {{inode_used_percent_value}}\n\n容量: {{inodes_total_value}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n设备: {{device}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群机器{{host_ip}}磁盘Inode异常告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_disk_inode","machine","{\"inode_used_percent_value\":\"percent:2\",\"inodes_total_value\":\"size:byte\"}","磁盘Inode异常告警","webhook","【磁盘Inode异常告警】\n\n使用率: {{inode_used_percent_value}}\n\n容量: {{inodes_total_value}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n设备: {{device}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群机器{{host_ip}}磁盘Inode异常告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_disk_inode","machine","{\"inode_used_percent_value\":\"percent:2\",\"inodes_total_value\":\"size:byte\"}","磁盘Inode异常告警","sms","{{cluster_name}}集群机器{{host_ip}}触发磁盘Inode异常告警,组织名称: {{org_name}},使用率: {{inode_used_percent_value}}\n","【{{cluster_name}}集群机器{{host_ip}}磁盘Inode异常告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_disk_inode","machine","{\"inode_used_percent_value\":\"percent:2\",\"inodes_total_value\":\"size:byte\"}","磁盘Inode异常告警","vms","{{cluster_name}}集群机器{{host_ip}}触发磁盘Inode异常告警,组织名称: {{org_name}},使用率: {{inode_used_percent_value}}\n","【{{cluster_name}}集群机器{{host_ip}}磁盘Inode异常告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_disk_inode","machine","{\"inode_used_percent_value\":\"percent:2\",\"trigger_duration\":\"time:ms\"}","磁盘Inode异常恢复","dingding","【磁盘Inode异常恢复】\n\n使用率: {{inode_used_percent_value}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n设备: {{device}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群机器{{host_ip}}磁盘Inode异常恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_disk_inode","machine","{\"inode_used_percent_value\":\"percent:2\",\"trigger_duration\":\"time:ms\"}","磁盘Inode异常恢复","ticket","【磁盘Inode异常恢复】\n\n使用率: {{inode_used_percent_value}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n设备: {{device}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群机器{{host_ip}}磁盘Inode异常恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_disk_inode","machine","{\"inode_used_percent_value\":\"percent:2\",\"trigger_duration\":\"time:ms\"}","磁盘Inode异常恢复","email","【磁盘Inode异常恢复】\n\n使用率: {{inode_used_percent_value}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n设备: {{device}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群机器{{host_ip}}磁盘Inode异常恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_disk_inode","machine","{\"inode_used_percent_value\":\"percent:2\",\"trigger_duration\":\"time:ms\"}","磁盘Inode异常恢复","mbox","【磁盘Inode异常恢复】\n\n使用率: {{inode_used_percent_value}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n设备: {{device}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群机器{{host_ip}}磁盘Inode异常恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_disk_inode","machine","{\"inode_used_percent_value\":\"percent:2\",\"trigger_duration\":\"time:ms\"}","磁盘Inode异常恢复","webhook","【磁盘Inode异常恢复】\n\n使用率: {{inode_used_percent_value}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n设备: {{device}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群机器{{host_ip}}磁盘Inode异常恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_disk_inode","machine","{\"inode_used_percent_value\":\"percent:2\",\"trigger_duration\":\"time:ms\"}","磁盘Inode异常恢复","sms","{{cluster_name}}集群机器{{host_ip}}触发磁盘Inode异常告警恢复,组织名称: {{org_name}},使用率: {{inode_used_percent_value}}\n","【{{cluster_name}}集群机器{{host_ip}}磁盘Inode异常恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_disk_inode","machine","{\"inode_used_percent_value\":\"percent:2\",\"trigger_duration\":\"time:ms\"}","磁盘Inode异常恢复","vms","{{cluster_name}}集群机器{{host_ip}}触发磁盘Inode异常告警恢复,组织名称: {{org_name}},使用率: {{inode_used_percent_value}}\n","【{{cluster_name}}集群机器{{host_ip}}磁盘Inode异常恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_disk_util","machine","{\"pct_util_p75\":\"percent:2\"}","磁盘IO异常告警","dingding","【磁盘IO操作百分比异常告警】\n\nIO操作百分比: {{pct_util_p75}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群机器{{host_ip}}磁盘IO操作百分比异常告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_disk_util","machine","{\"pct_util_p75\":\"percent:2\"}","磁盘IO异常告警","ticket","【磁盘IO操作百分比异常告警】\n\nIO操作百分比: {{pct_util_p75}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群机器{{host_ip}}磁盘IO操作百分比异常告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_disk_util","machine","{\"pct_util_p75\":\"percent:2\"}","磁盘IO异常告警","email","【磁盘IO操作百分比异常告警】\n\nIO操作百分比: {{pct_util_p75}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群机器{{host_ip}}磁盘IO操作百分比异常告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_disk_util","machine","{\"pct_util_p75\":\"percent:2\"}","磁盘IO异常告警","mbox","【磁盘IO操作百分比异常告警】\n\nIO操作百分比: {{pct_util_p75}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群机器{{host_ip}}磁盘IO操作百分比异常告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_disk_util","machine","{\"pct_util_p75\":\"percent:2\"}","磁盘IO异常告警","webhook","【磁盘IO操作百分比异常告警】\n\nIO操作百分比: {{pct_util_p75}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群机器{{host_ip}}磁盘IO操作百分比异常告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_disk_util","machine","{\"pct_util_p75\":\"percent:2\"}","磁盘IO异常告警","sms","{{cluster_name}}集群机器{{host_ip}}触发磁盘IO操作百分比异常告警,组织名称: {{org_name}},IO操作百分比: {{pct_util_p75}}\n","【{{cluster_name}}集群机器{{host_ip}}磁盘IO操作百分比异常告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_disk_util","machine","{\"pct_util_p75\":\"percent:2\"}","磁盘IO异常告警","vms","{{cluster_name}}集群机器{{host_ip}}触发磁盘IO操作百分比异常告警,组织名称: {{org_name}},IO操作百分比: {{pct_util_p75}}\n","【{{cluster_name}}集群机器{{host_ip}}磁盘IO操作百分比异常告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_disk_util","machine","{\"pct_util_p75\":\"percent:2\",\"trigger_duration\":\"time:ms\"}","磁盘IO异常恢复","dingding","【磁盘IO操作百分比异常恢复】\n\nIO操作百分比: {{pct_util_p75}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群机器{{host_ip}}磁盘IO操作百分比异常恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_disk_util","machine","{\"pct_util_p75\":\"percent:2\",\"trigger_duration\":\"time:ms\"}","磁盘IO异常恢复","ticket","【磁盘IO操作百分比异常恢复】\n\nIO操作百分比: {{pct_util_p75}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群机器{{host_ip}}磁盘IO操作百分比异常恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_disk_util","machine","{\"pct_util_p75\":\"percent:2\",\"trigger_duration\":\"time:ms\"}","磁盘IO异常恢复","email","【磁盘IO操作百分比异常恢复】\n\nIO操作百分比: {{pct_util_p75}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群机器{{host_ip}}磁盘IO操作百分比异常恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_disk_util","machine","{\"pct_util_p75\":\"percent:2\",\"trigger_duration\":\"time:ms\"}","磁盘IO异常恢复","mbox","【磁盘IO操作百分比异常恢复】\n\nIO操作百分比: {{pct_util_p75}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群机器{{host_ip}}磁盘IO操作百分比异常恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_disk_util","machine","{\"pct_util_p75\":\"percent:2\",\"trigger_duration\":\"time:ms\"}","磁盘IO异常恢复","webhook","【磁盘IO操作百分比异常恢复】\n\nIO操作百分比: {{pct_util_p75}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群机器{{host_ip}}磁盘IO操作百分比异常恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_disk_util","machine","{\"pct_util_p75\":\"percent:2\",\"trigger_duration\":\"time:ms\"}","磁盘IO异常恢复","sms","{{cluster_name}}集群机器{{host_ip}}触发磁盘IO操作百分比异常告警恢复,组织名称: {{org_name}},IO操作百分比: {{pct_util_p75}}\n","【{{cluster_name}}集群机器{{host_ip}}磁盘IO操作百分比异常恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_disk_util","machine","{\"pct_util_p75\":\"percent:2\",\"trigger_duration\":\"time:ms\"}","磁盘IO异常恢复","vms","{{cluster_name}}集群机器{{host_ip}}触发磁盘IO操作百分比异常告警恢复,组织名称: {{org_name}},IO操作百分比: {{pct_util_p75}}\n","【{{cluster_name}}集群机器{{host_ip}}磁盘IO操作百分比异常恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_load5","machine","","机器负载异常告警","dingding","【机器负载异常告警】\n\nLoad5: {{load5_avg}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群机器{{host_ip}}负载异常告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_load5","machine","","机器负载异常告警","ticket","【机器负载异常告警】\n\nLoad5: {{load5_avg}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群机器{{host_ip}}负载异常告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_load5","machine","","机器负载异常告警","email","【机器负载异常告警】\n\nLoad5: {{load5_avg}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群机器{{host_ip}}负载异常告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_load5","machine","","机器负载异常告警","mbox","【机器负载异常告警】\n\nLoad5: {{load5_avg}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群机器{{host_ip}}负载异常告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_load5","machine","","机器负载异常告警","webhook","【机器负载异常告警】\n\nLoad5: {{load5_avg}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群机器{{host_ip}}负载异常告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_load5","machine","","机器负载异常告警","sms","{{cluster_name}}集群机器{{host_ip}}触发机器负载异常告警,组织名称: {{org_name}},Load5: {{load5_avg}}\n","【{{cluster_name}}集群机器{{host_ip}}负载异常告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_load5","machine","","机器负载异常告警","vms","{{cluster_name}}集群机器{{host_ip}}触发机器负载异常告警,组织名称: {{org_name}},Load5: {{load5_avg}}\n","【{{cluster_name}}集群机器{{host_ip}}负载异常告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_load5","machine","{\"trigger_duration\":\"time:ms\"}","机器负载异常恢复","dingding","【机器负载异常恢复】\n\nLoad5: {{load5_avg}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群机器{{host_ip}}负载异常恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_load5","machine","{\"trigger_duration\":\"time:ms\"}","机器负载异常恢复","ticket","【机器负载异常恢复】\n\nLoad5: {{load5_avg}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群机器{{host_ip}}负载异常恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_load5","machine","{\"trigger_duration\":\"time:ms\"}","机器负载异常恢复","email","【机器负载异常恢复】\n\nLoad5: {{load5_avg}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群机器{{host_ip}}负载异常恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_load5","machine","{\"trigger_duration\":\"time:ms\"}","机器负载异常恢复","mbox","【机器负载异常恢复】\n\nLoad5: {{load5_avg}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群机器{{host_ip}}负载异常恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_load5","machine","{\"trigger_duration\":\"time:ms\"}","机器负载异常恢复","webhook","【机器负载异常恢复】\n\nLoad5: {{load5_avg}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群机器{{host_ip}}负载异常恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_load5","machine","{\"trigger_duration\":\"time:ms\"}","机器负载异常恢复","sms","{{cluster_name}}集群机器{{host_ip}}触发机器负载异常告警恢复,组织名称: {{org_name}},Load5: {{load5_avg}}\n","【{{cluster_name}}集群机器{{host_ip}}负载异常恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_load5","machine","{\"trigger_duration\":\"time:ms\"}","机器负载异常恢复","vms","{{cluster_name}}集群机器{{host_ip}}触发机器负载异常告警恢复,组织名称: {{org_name}},Load5: {{load5_avg}}\n","【{{cluster_name}}集群机器{{host_ip}}负载异常恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_netdisk","machine","{\"total_value\":\"size:byte\",\"used_percent_value\":\"percent:2\"}","网盘容量异常告警","dingding","【网盘使用率异常告警】\n\n使用率: {{used_percent_value}}\n\n容量: {{total_value}}\n\n集群: {{cluster_name}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群网盘使用率异常告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_netdisk","machine","{\"total_value\":\"size:byte\",\"used_percent_value\":\"percent:2\"}","网盘容量异常告警","ticket","【网盘使用率异常告警】\n\n使用率: {{used_percent_value}}\n\n容量: {{total_value}}\n\n集群: {{cluster_name}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群网盘使用率异常告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_netdisk","machine","{\"total_value\":\"size:byte\",\"used_percent_value\":\"percent:2\"}","网盘容量异常告警","email","【网盘使用率异常告警】\n\n使用率: {{used_percent_value}}\n\n容量: {{total_value}}\n\n集群: {{cluster_name}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群网盘使用率异常告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_netdisk","machine","{\"total_value\":\"size:byte\",\"used_percent_value\":\"percent:2\"}","网盘容量异常告警","mbox","【网盘使用率异常告警】\n\n使用率: {{used_percent_value}}\n\n容量: {{total_value}}\n\n集群: {{cluster_name}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群网盘使用率异常告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_netdisk","machine","{\"total_value\":\"size:byte\",\"used_percent_value\":\"percent:2\"}","网盘容量异常告警","webhook","【网盘使用率异常告警】\n\n使用率: {{used_percent_value}}\n\n容量: {{total_value}}\n\n集群: {{cluster_name}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群网盘使用率异常告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_netdisk","machine","{\"total_value\":\"size:byte\",\"used_percent_value\":\"percent:2\"}","网盘容量异常告警","sms","{{cluster_name}}集群触发网盘使用率异常告警,组织名称: {{org_name}},使用率: {{used_percent_value}}\n","【{{cluster_name}}集群网盘使用率异常告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_netdisk","machine","{\"total_value\":\"size:byte\",\"used_percent_value\":\"percent:2\"}","网盘容量异常告警","vms","{{cluster_name}}集群触发网盘使用率异常告警,组织名称: {{org_name}},使用率: {{used_percent_value}}\n","【{{cluster_name}}集群网盘使用率异常告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_netdisk","machine","{\"trigger_duration\":\"time:ms\",\"used_percent_value\":\"percent:2\"}","网盘容量异常恢复","dingding","【网盘使用率异常恢复】\n\n使用率: {{used_percent_value}}\n\n集群: {{cluster_name}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群网盘使用率异常恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_netdisk","machine","{\"trigger_duration\":\"time:ms\",\"used_percent_value\":\"percent:2\"}","网盘容量异常恢复","ticket","【网盘使用率异常恢复】\n\n使用率: {{used_percent_value}}\n\n集群: {{cluster_name}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群网盘使用率异常恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_netdisk","machine","{\"trigger_duration\":\"time:ms\",\"used_percent_value\":\"percent:2\"}","网盘容量异常恢复","email","【网盘使用率异常恢复】\n\n使用率: {{used_percent_value}}\n\n集群: {{cluster_name}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群网盘使用率异常恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_netdisk","machine","{\"trigger_duration\":\"time:ms\",\"used_percent_value\":\"percent:2\"}","网盘容量异常恢复","mbox","【网盘使用率异常恢复】\n\n使用率: {{used_percent_value}}\n\n集群: {{cluster_name}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群网盘使用率异常恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_netdisk","machine","{\"trigger_duration\":\"time:ms\",\"used_percent_value\":\"percent:2\"}","网盘容量异常恢复","webhook","【网盘使用率异常恢复】\n\n使用率: {{used_percent_value}}\n\n集群: {{cluster_name}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群网盘使用率异常恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_netdisk","machine","{\"trigger_duration\":\"time:ms\",\"used_percent_value\":\"percent:2\"}","网盘容量异常恢复","sms","{{cluster_name}}集群触发网盘使用率异常告警恢复,使用率: {{used_percent_value}}\n","【{{cluster_name}}集群网盘使用率异常恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_netdisk","machine","{\"trigger_duration\":\"time:ms\",\"used_percent_value\":\"percent:2\"}","网盘容量异常恢复","vms","{{cluster_name}}集群触发网盘使用率异常告警恢复,使用率: {{used_percent_value}}\n","【{{cluster_name}}集群网盘使用率异常恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_netdisk_used","machine","网盘容量使用量异常告警","dingding","【网盘使用异常告警】\n\n使用: {{used}}GB\n\n容量: {{total}}GB\n\n集群: {{cluster_name}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群网盘使用率异常告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_netdisk_used","machine","网盘容量使用量异常告警","ticket","【网盘使用异常告警】\n\n使用: {{used}}GB\n\n容量: {{total}}GB\n\n集群: {{cluster_name}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群网盘使用率异常告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_netdisk_used","machine","网盘容量使用量异常告警","email","【网盘使用异常告警】\n\n使用: {{used}}GB\n\n容量: {{total}}GB\n\n集群: {{cluster_name}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群网盘使用率异常告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_netdisk_used","machine","网盘容量使用量异常告警","mbox","【网盘使用异常告警】\n\n使用: {{used}}GB\n\n容量: {{total}}GB\n\n集群: {{cluster_name}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群网盘使用率异常告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_netdisk_used","machine","网盘容量使用量异常告警","webhook","【网盘使用异常告警】\n\n使用: {{used}}GB\n\n容量: {{total}}GB\n\n集群: {{cluster_name}}\n\n组织名称: {{org_name}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群网盘使用率异常告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_netdisk_used","machine","网盘容量使用量异常告警","sms","{{cluster_name}}集群触发网盘使用量异常告警,组织名称: {{org_name}},使用: {{used}}GB,容量: {{total}}GB\n","【{{cluster_name}}集群网盘使用率异常告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_netdisk_used","machine","网盘容量使用量异常告警","vms","{{cluster_name}}集群触发网盘使用量异常告警,组织名称: {{org_name}},使用: {{used}}GB,容量: {{total}}GB\n","【{{cluster_name}}集群网盘使用率异常告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_netdisk_used","machine","{\"trigger_duration\":\"time:ms\"}","网盘容量异常恢复","dingding","【网盘使用率异常恢复】\n\n使用: {{used}}GB\n\n集群: {{cluster_name}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群网盘使用率异常恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_netdisk_used","machine","{\"trigger_duration\":\"time:ms\"}","网盘容量异常恢复","ticket","【网盘使用率异常恢复】\n\n使用: {{used}}GB\n\n集群: {{cluster_name}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群网盘使用率异常恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_netdisk_used","machine","{\"trigger_duration\":\"time:ms\"}","网盘容量异常恢复","email","【网盘使用率异常恢复】\n\n使用: {{used}}GB\n\n集群: {{cluster_name}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群网盘使用率异常恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_netdisk_used","machine","{\"trigger_duration\":\"time:ms\"}","网盘容量异常恢复","mbox","【网盘使用率异常恢复】\n\n使用: {{used}}GB\n\n集群: {{cluster_name}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群网盘使用率异常恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_netdisk_used","machine","{\"trigger_duration\":\"time:ms\"}","网盘容量异常恢复","webhook","【网盘使用率异常恢复】\n\n使用: {{used}}GB\n\n集群: {{cluster_name}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群网盘使用率异常恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_netdisk_used","machine","{\"trigger_duration\":\"time:ms\"}","网盘容量异常恢复","sms","{{cluster_name}}集群触发网盘使用量异常告警恢复,组织名称: {{org_name}},使用: {{used}}GB\n","【{{cluster_name}}集群网盘使用率异常恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_netdisk_used","machine","{\"trigger_duration\":\"time:ms\"}","网盘容量异常恢复","vms","{{cluster_name}}集群触发网盘使用量异常告警恢复,组织名称: {{org_name}},使用: {{used}}GB\n","【{{cluster_name}}集群网盘使用率异常恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_status","machine","{\"last_timestamp_value\":\"date\"}","宕机告警","dingding","【宕机告警】\n\n机器{{window}}分钟内无消息, 疑似发生宕机\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n组织名称: {{org_name}}\n\n最近活跃时间: {{last_timestamp_value}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群机器{{host_ip}}宕机告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_status","machine","{\"last_timestamp_value\":\"date\"}","宕机告警","ticket","【宕机告警】\n\n机器{{window}}分钟内无消息, 疑似发生宕机\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n组织名称: {{org_name}}\n\n最近活跃时间: {{last_timestamp_value}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群机器{{host_ip}}宕机告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_status","machine","{\"last_timestamp_value\":\"date\"}","宕机告警","email","【宕机告警】\n\n机器{{window}}分钟内无消息, 疑似发生宕机\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n组织名称: {{org_name}}\n\n最近活跃时间: {{last_timestamp_value}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群机器{{host_ip}}宕机告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_status","machine","{\"last_timestamp_value\":\"date\"}","宕机告警","mbox","【宕机告警】\n\n机器{{window}}分钟内无消息, 疑似发生宕机\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n组织名称: {{org_name}}\n\n最近活跃时间: {{last_timestamp_value}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群机器{{host_ip}}宕机告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_status","machine","{\"last_timestamp_value\":\"date\"}","宕机告警","webhook","【宕机告警】\n\n机器{{window}}分钟内无消息, 疑似发生宕机\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n组织名称: {{org_name}}\n\n最近活跃时间: {{last_timestamp_value}}\n\n时间: {{timestamp}}\n\n[查看详情]({{display_url}})\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群机器{{host_ip}}宕机告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_status","machine","{\"last_timestamp_value\":\"date\"}","宕机告警","sms","{{cluster_name}}集群机器{{host_ip}}在{{window}}分钟内无消息触发宕机告警,组织名称: {{org_name}}\n","【{{cluster_name}}集群机器{{host_ip}}宕机告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_status","machine","{\"last_timestamp_value\":\"date\"}","宕机告警","vms","{{cluster_name}}集群机器{{host_ip}}在{{window}}分钟内无消息触发宕机告警,组织名称: {{org_name}}\n","【{{cluster_name}}集群机器{{host_ip}}宕机告警】","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_status","machine","{\"trigger_duration\":\"time:ms\"}","宕机恢复","dingding","【宕机恢复】\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群机器{{host_ip}}宕机恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_status","machine","{\"trigger_duration\":\"time:ms\"}","宕机恢复","ticket","【宕机恢复】\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群机器{{host_ip}}宕机恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_status","machine","{\"trigger_duration\":\"time:ms\"}","宕机恢复","email","【宕机恢复】\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群机器{{host_ip}}宕机恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_status","machine","{\"trigger_duration\":\"time:ms\"}","宕机恢复","mbox","【宕机恢复】\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群机器{{host_ip}}宕机恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_status","machine","{\"trigger_duration\":\"time:ms\"}","宕机恢复","webhook","【宕机恢复】\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n组织名称: {{org_name}}\n\n持续时间: {{trigger_duration}}\n\n恢复时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{cluster_name}}集群机器{{host_ip}}宕机恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_status","machine","{\"trigger_duration\":\"time:ms\"}","宕机恢复","sms","{{cluster_name}}集群机器{{host_ip}}触发宕机告警恢复,组织名称: {{org_name}}\n","【{{cluster_name}}集群机器{{host_ip}}宕机恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("machine_status","machine","{\"trigger_duration\":\"time:ms\"}","宕机恢复","vms","{{cluster_name}}集群机器{{host_ip}}触发宕机告警恢复,组织名称: {{org_name}}\n","【{{cluster_name}}集群机器{{host_ip}}宕机恢复】","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("api_gateway_cpu","micro_service","{\"container_id\":\"string:6\",\"cpu_allocation_value\":\"fraction:1\",\"cpu_limit_value\":\"fraction:1\",\"cpu_usage_percent_avg\":\"percent:1\"}","API网关实例CPU使用率异常","dingding","【API网关实例CPU使用率异常告警】\n\n组件: {{addon_type}}\n\n实例: {{pod_namespace}} - {{pod_name}} - {{pod_ip}}\n\nCPU平均使用率: {{cpu_usage_percent_avg}}\n\nCPU限制: {{cpu_limit_value}}核\n\nCPU分配: {{cpu_allocation_value}}核\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【API网关实例CPU使用率告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("api_gateway_cpu","micro_service","{\"container_id\":\"string:6\",\"cpu_allocation_value\":\"fraction:1\",\"cpu_limit_value\":\"fraction:1\",\"cpu_usage_percent_avg\":\"percent:1\"}","API网关实例CPU使用率异常","ticket","【API网关实例CPU使用率异常告警】\n\n组件: {{addon_type}}\n\n实例: {{pod_namespace}} - {{pod_name}} - {{pod_ip}}\n\nCPU平均使用率: {{cpu_usage_percent_avg}}\n\nCPU限制: {{cpu_limit_value}}核\n\nCPU分配: {{cpu_allocation_value}}核\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【API网关实例CPU使用率告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("api_gateway_cpu","micro_service","{\"container_id\":\"string:6\",\"cpu_allocation_value\":\"fraction:1\",\"cpu_limit_value\":\"fraction:1\",\"cpu_usage_percent_avg\":\"percent:1\"}","API网关实例CPU使用率异常","email","【API网关实例CPU使用率异常告警】\n\n组件: {{addon_type}}\n\n实例: {{pod_namespace}} - {{pod_name}} - {{pod_ip}}\n\nCPU平均使用率: {{cpu_usage_percent_avg}}\n\nCPU限制: {{cpu_limit_value}}核\n\nCPU分配: {{cpu_allocation_value}}核\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【API网关实例CPU使用率告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("api_gateway_cpu","micro_service","{\"container_id\":\"string:6\",\"cpu_allocation_value\":\"fraction:1\",\"cpu_limit_value\":\"fraction:1\",\"cpu_usage_percent_avg\":\"percent:1\"}","API网关实例CPU使用率异常","mbox","【API网关实例CPU使用率异常告警】\n\n组件: {{addon_type}}\n\n实例: {{pod_namespace}} - {{pod_name}} - {{pod_ip}}\n\nCPU平均使用率: {{cpu_usage_percent_avg}}\n\nCPU限制: {{cpu_limit_value}}核\n\nCPU分配: {{cpu_allocation_value}}核\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【API网关实例CPU使用率告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("api_gateway_cpu","micro_service","{\"container_id\":\"string:6\",\"cpu_allocation_value\":\"fraction:1\",\"cpu_limit_value\":\"fraction:1\",\"cpu_usage_percent_avg\":\"percent:1\"}","API网关实例CPU使用率异常","webhook","【API网关实例CPU使用率异常告警】\n\n组件: {{addon_type}}\n\n实例: {{pod_namespace}} - {{pod_name}} - {{pod_ip}}\n\nCPU平均使用率: {{cpu_usage_percent_avg}}\n\nCPU限制: {{cpu_limit_value}}核\n\nCPU分配: {{cpu_allocation_value}}核\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【API网关实例CPU使用率告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("api_gateway_cpu","micro_service","{\"container_id\":\"string:6\",\"cpu_allocation_value\":\"fraction:1\",\"cpu_limit_value\":\"fraction:1\",\"cpu_usage_percent_avg\":\"percent:1\"}","API网关实例CPU使用率异常","sms","{{addon_type}}组件{{pod_namespace}} - {{pod_name}}实例触发API网关实例CPU使用率异常告警,CPU平均使用率: {{cpu_usage_percent_avg}}\n","【API网关实例CPU使用率告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("api_gateway_cpu","micro_service","{\"container_id\":\"string:6\",\"cpu_allocation_value\":\"fraction:1\",\"cpu_limit_value\":\"fraction:1\",\"cpu_usage_percent_avg\":\"percent:1\"}","API网关实例CPU使用率异常","vms","{{addon_type}}组件{{pod_namespace}} - {{pod_name}}实例触发API网关实例CPU使用率异常告警,CPU平均使用率: {{cpu_usage_percent_avg}}\n","【API网关实例CPU使用率告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("api_gateway_cpu","micro_service","{\"container_id\":\"string:6\",\"cpu_allocation_value\":\"fraction:1\",\"cpu_limit_value\":\"fraction:1\",\"cpu_usage_percent_avg\":\"percent:1\"}","API网关实例CPU使用率异常恢复","dingding","【API网关实例CPU使用率异常恢复】\n\n组件: {{addon_type}}\n\n实例: {{pod_namespace}} - {{pod_name}} - {{pod_ip}}\n\nCPU平均使用率: {{cpu_usage_percent_avg}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【API网关实例CPU使用率异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("api_gateway_cpu","micro_service","{\"container_id\":\"string:6\",\"cpu_allocation_value\":\"fraction:1\",\"cpu_limit_value\":\"fraction:1\",\"cpu_usage_percent_avg\":\"percent:1\"}","API网关实例CPU使用率异常恢复","ticket","【API网关实例CPU使用率异常恢复】\n\n组件: {{addon_type}}\n\n实例: {{pod_namespace}} - {{pod_name}} - {{pod_ip}}\n\nCPU平均使用率: {{cpu_usage_percent_avg}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【API网关实例CPU使用率异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("api_gateway_cpu","micro_service","{\"container_id\":\"string:6\",\"cpu_allocation_value\":\"fraction:1\",\"cpu_limit_value\":\"fraction:1\",\"cpu_usage_percent_avg\":\"percent:1\"}","API网关实例CPU使用率异常恢复","email","【API网关实例CPU使用率异常恢复】\n\n组件: {{addon_type}}\n\n实例: {{pod_namespace}} - {{pod_name}} - {{pod_ip}}\n\nCPU平均使用率: {{cpu_usage_percent_avg}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【API网关实例CPU使用率异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("api_gateway_cpu","micro_service","{\"container_id\":\"string:6\",\"cpu_allocation_value\":\"fraction:1\",\"cpu_limit_value\":\"fraction:1\",\"cpu_usage_percent_avg\":\"percent:1\"}","API网关实例CPU使用率异常恢复","mbox","【API网关实例CPU使用率异常恢复】\n\n组件: {{addon_type}}\n\n实例: {{pod_namespace}} - {{pod_name}} - {{pod_ip}}\n\nCPU平均使用率: {{cpu_usage_percent_avg}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【API网关实例CPU使用率异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("api_gateway_cpu","micro_service","{\"container_id\":\"string:6\",\"cpu_allocation_value\":\"fraction:1\",\"cpu_limit_value\":\"fraction:1\",\"cpu_usage_percent_avg\":\"percent:1\"}","API网关实例CPU使用率异常恢复","webhook","【API网关实例CPU使用率异常恢复】\n\n组件: {{addon_type}}\n\n实例: {{pod_namespace}} - {{pod_name}} - {{pod_ip}}\n\nCPU平均使用率: {{cpu_usage_percent_avg}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【API网关实例CPU使用率异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("api_gateway_cpu","micro_service","{\"container_id\":\"string:6\",\"cpu_allocation_value\":\"fraction:1\",\"cpu_limit_value\":\"fraction:1\",\"cpu_usage_percent_avg\":\"percent:1\"}","API网关实例CPU使用率异常恢复","sms","{{addon_type}}组件{{pod_namespace}} - {{pod_name}}实例触发API网关实例CPU使用率异常告警恢复,CPU平均使用率: {{cpu_usage_percent_avg}}\n","【API网关实例CPU使用率异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("api_gateway_cpu","micro_service","{\"container_id\":\"string:6\",\"cpu_allocation_value\":\"fraction:1\",\"cpu_limit_value\":\"fraction:1\",\"cpu_usage_percent_avg\":\"percent:1\"}","API网关实例CPU使用率异常恢复","sms","{{addon_type}}组件{{pod_namespace}} - {{pod_name}}实例触发API网关实例CPU使用率异常告警恢复,CPU平均使用率: {{cpu_usage_percent_avg}}\n","【API网关实例CPU使用率异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("api_gateway_mem","micro_service","{\"container_id\":\"string:6\",\"mem_limit_value\":\"size:byte\",\"mem_usage_percent_avg\":\"percent:1\",\"mem_usage_value\":\"size:byte\"}","API网关实例内存使用率异常","dingding","【API网关实例内存使用率异常告警】\n\n组件: {{addon_type}}\n\n实例: {{pod_namespace}} - {{pod_name}} - {{pod_ip}}\n\n内存使用率: {{mem_usage_percent_avg}}\n\n内存使用: {{mem_usage_value}}\n\n内存限制: {{mem_limit_value}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【API网关实例内存使用率异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("api_gateway_mem","micro_service","{\"container_id\":\"string:6\",\"mem_limit_value\":\"size:byte\",\"mem_usage_percent_avg\":\"percent:1\",\"mem_usage_value\":\"size:byte\"}","API网关实例内存使用率异常","ticket","【API网关实例内存使用率异常告警】\n\n组件: {{addon_type}}\n\n实例: {{pod_namespace}} - {{pod_name}} - {{pod_ip}}\n\n内存使用率: {{mem_usage_percent_avg}}\n\n内存使用: {{mem_usage_value}}\n\n内存限制: {{mem_limit_value}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【API网关实例内存使用率异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("api_gateway_mem","micro_service","{\"container_id\":\"string:6\",\"mem_limit_value\":\"size:byte\",\"mem_usage_percent_avg\":\"percent:1\",\"mem_usage_value\":\"size:byte\"}","API网关实例内存使用率异常","email","【API网关实例内存使用率异常告警】\n\n组件: {{addon_type}}\n\n实例: {{pod_namespace}} - {{pod_name}} - {{pod_ip}}\n\n内存使用率: {{mem_usage_percent_avg}}\n\n内存使用: {{mem_usage_value}}\n\n内存限制: {{mem_limit_value}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【API网关实例内存使用率异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("api_gateway_mem","micro_service","{\"container_id\":\"string:6\",\"mem_limit_value\":\"size:byte\",\"mem_usage_percent_avg\":\"percent:1\",\"mem_usage_value\":\"size:byte\"}","API网关实例内存使用率异常","mbox","【API网关实例内存使用率异常告警】\n\n组件: {{addon_type}}\n\n实例: {{pod_namespace}} - {{pod_name}} - {{pod_ip}}\n\n内存使用率: {{mem_usage_percent_avg}}\n\n内存使用: {{mem_usage_value}}\n\n内存限制: {{mem_limit_value}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【API网关实例内存使用率异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("api_gateway_mem","micro_service","{\"container_id\":\"string:6\",\"mem_limit_value\":\"size:byte\",\"mem_usage_percent_avg\":\"percent:1\",\"mem_usage_value\":\"size:byte\"}","API网关实例内存使用率异常","webhook","【API网关实例内存使用率异常告警】\n\n组件: {{addon_type}}\n\n实例: {{pod_namespace}} - {{pod_name}} - {{pod_ip}}\n\n内存使用率: {{mem_usage_percent_avg}}\n\n内存使用: {{mem_usage_value}}\n\n内存限制: {{mem_limit_value}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【API网关实例内存使用率异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("api_gateway_mem","micro_service","{\"container_id\":\"string:6\",\"mem_limit_value\":\"size:byte\",\"mem_usage_percent_avg\":\"percent:1\",\"mem_usage_value\":\"size:byte\"}","API网关实例内存使用率异常","sms","{{addon_type}}组件{{pod_namespace}} - {{pod_name}}实例触发API网关实例内存使用率异常告警,内存使用率: {{mem_usage_percent_avg}}\n","【API网关实例内存使用率异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("api_gateway_mem","micro_service","{\"container_id\":\"string:6\",\"mem_limit_value\":\"size:byte\",\"mem_usage_percent_avg\":\"percent:1\",\"mem_usage_value\":\"size:byte\"}","API网关实例内存使用率异常","vms","{{addon_type}}组件{{pod_namespace}} - {{pod_name}}实例触发API网关实例内存使用率异常告警,内存使用率: {{mem_usage_percent_avg}}\n","【API网关实例内存使用率异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("api_gateway_mem","micro_service","{\"container_id\":\"string:6\",\"mem_limit_value\":\"size:byte\",\"mem_usage_percent_avg\":\"percent:1\",\"mem_usage_value\":\"size:byte\"}","API网关实例内存使用率异常恢复","dingding","【API网关实例内存使用率异常恢复】\n\n组件: {{addon_type}}\n\n实例: {{pod_namespace}} - {{pod_name}} - {{pod_ip}}\n\n内存使用率: {{mem_usage_percent_avg}}\n\n内存使用: {{mem_usage_value}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【API网关实例内存使用率异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("api_gateway_mem","micro_service","{\"container_id\":\"string:6\",\"mem_limit_value\":\"size:byte\",\"mem_usage_percent_avg\":\"percent:1\",\"mem_usage_value\":\"size:byte\"}","API网关实例内存使用率异常恢复","ticket","【API网关实例内存使用率异常恢复】\n\n组件: {{addon_type}}\n\n实例: {{pod_namespace}} - {{pod_name}} - {{pod_ip}}\n\n内存使用率: {{mem_usage_percent_avg}}\n\n内存使用: {{mem_usage_value}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【API网关实例内存使用率异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("api_gateway_mem","micro_service","{\"container_id\":\"string:6\",\"mem_limit_value\":\"size:byte\",\"mem_usage_percent_avg\":\"percent:1\",\"mem_usage_value\":\"size:byte\"}","API网关实例内存使用率异常恢复","email","【API网关实例内存使用率异常恢复】\n\n组件: {{addon_type}}\n\n实例: {{pod_namespace}} - {{pod_name}} - {{pod_ip}}\n\n内存使用率: {{mem_usage_percent_avg}}\n\n内存使用: {{mem_usage_value}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【API网关实例内存使用率异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("api_gateway_mem","micro_service","{\"container_id\":\"string:6\",\"mem_limit_value\":\"size:byte\",\"mem_usage_percent_avg\":\"percent:1\",\"mem_usage_value\":\"size:byte\"}","API网关实例内存使用率异常恢复","mbox","【API网关实例内存使用率异常恢复】\n\n组件: {{addon_type}}\n\n实例: {{pod_namespace}} - {{pod_name}} - {{pod_ip}}\n\n内存使用率: {{mem_usage_percent_avg}}\n\n内存使用: {{mem_usage_value}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【API网关实例内存使用率异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("api_gateway_mem","micro_service","{\"container_id\":\"string:6\",\"mem_limit_value\":\"size:byte\",\"mem_usage_percent_avg\":\"percent:1\",\"mem_usage_value\":\"size:byte\"}","API网关实例内存使用率异常恢复","webhook","【API网关实例内存使用率异常恢复】\n\n组件: {{addon_type}}\n\n实例: {{pod_namespace}} - {{pod_name}} - {{pod_ip}}\n\n内存使用率: {{mem_usage_percent_avg}}\n\n内存使用: {{mem_usage_value}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【API网关实例内存使用率异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("api_gateway_mem","micro_service","{\"container_id\":\"string:6\",\"mem_limit_value\":\"size:byte\",\"mem_usage_percent_avg\":\"percent:1\",\"mem_usage_value\":\"size:byte\"}","API网关实例内存使用率异常恢复","sms","{{addon_type}}组件{{pod_namespace}} - {{pod_name}}实例触发API网关实例内存使用率异常告警恢复,内存使用率: {{mem_usage_percent_avg}}\n","【API网关实例内存使用率异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("api_gateway_mem","micro_service","{\"container_id\":\"string:6\",\"mem_limit_value\":\"size:byte\",\"mem_usage_percent_avg\":\"percent:1\",\"mem_usage_value\":\"size:byte\"}","API网关实例内存使用率异常恢复","vms","{{addon_type}}组件{{pod_namespace}} - {{pod_name}}实例触发API网关实例内存使用率异常告警恢复,内存使用率: {{mem_usage_percent_avg}}\n","【API网关实例内存使用率异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("register_center_cpu","micro_service","{\"container_id\":\"string:6\",\"cpu_allocation_value\":\"fraction:1\",\"cpu_limit_value\":\"fraction:1\",\"cpu_usage_percent_avg\":\"percent:1\"}","注册中心实例CPU使用率异常","dingding","【注册中心实例CPU使用率异常告警】\n\n组件: {{addon_type}}\n\n实例: {{pod_namespace}} - {{pod_name}} - {{pod_ip}}\n\nCPU平均使用率: {{cpu_usage_percent_avg}}\n\nCPU限制: {{cpu_limit_value}}核\n\nCPU分配: {{cpu_allocation_value}}核\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【注册中心实例CPU使用率异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("register_center_cpu","micro_service","{\"container_id\":\"string:6\",\"cpu_allocation_value\":\"fraction:1\",\"cpu_limit_value\":\"fraction:1\",\"cpu_usage_percent_avg\":\"percent:1\"}","注册中心实例CPU使用率异常","ticket","【注册中心实例CPU使用率异常告警】\n\n组件: {{addon_type}}\n\n实例: {{pod_namespace}} - {{pod_name}} - {{pod_ip}}\n\nCPU平均使用率: {{cpu_usage_percent_avg}}\n\nCPU限制: {{cpu_limit_value}}核\n\nCPU分配: {{cpu_allocation_value}}核\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【注册中心实例CPU使用率异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("register_center_cpu","micro_service","{\"container_id\":\"string:6\",\"cpu_allocation_value\":\"fraction:1\",\"cpu_limit_value\":\"fraction:1\",\"cpu_usage_percent_avg\":\"percent:1\"}","注册中心实例CPU使用率异常","email","【注册中心实例CPU使用率异常告警】\n\n组件: {{addon_type}}\n\n实例: {{pod_namespace}} - {{pod_name}} - {{pod_ip}}\n\nCPU平均使用率: {{cpu_usage_percent_avg}}\n\nCPU限制: {{cpu_limit_value}}核\n\nCPU分配: {{cpu_allocation_value}}核\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【注册中心实例CPU使用率异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("register_center_cpu","micro_service","{\"container_id\":\"string:6\",\"cpu_allocation_value\":\"fraction:1\",\"cpu_limit_value\":\"fraction:1\",\"cpu_usage_percent_avg\":\"percent:1\"}","注册中心实例CPU使用率异常","mbox","【注册中心实例CPU使用率异常告警】\n\n组件: {{addon_type}}\n\n实例: {{pod_namespace}} - {{pod_name}} - {{pod_ip}}\n\nCPU平均使用率: {{cpu_usage_percent_avg}}\n\nCPU限制: {{cpu_limit_value}}核\n\nCPU分配: {{cpu_allocation_value}}核\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【注册中心实例CPU使用率异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("register_center_cpu","micro_service","{\"container_id\":\"string:6\",\"cpu_allocation_value\":\"fraction:1\",\"cpu_limit_value\":\"fraction:1\",\"cpu_usage_percent_avg\":\"percent:1\"}","注册中心实例CPU使用率异常","webhook","【注册中心实例CPU使用率异常告警】\n\n组件: {{addon_type}}\n\n实例: {{pod_namespace}} - {{pod_name}} - {{pod_ip}}\n\nCPU平均使用率: {{cpu_usage_percent_avg}}\n\nCPU限制: {{cpu_limit_value}}核\n\nCPU分配: {{cpu_allocation_value}}核\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【注册中心实例CPU使用率异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("register_center_cpu","micro_service","{\"container_id\":\"string:6\",\"cpu_allocation_value\":\"fraction:1\",\"cpu_limit_value\":\"fraction:1\",\"cpu_usage_percent_avg\":\"percent:1\"}","注册中心实例CPU使用率异常","sms","{{addon_type}}组件{{pod_namespace}} - {{pod_name}}实例触发注册中心实例CPU使用率异常,CPU平均使用率: {{cpu_usage_percent_avg}}\n","【注册中心实例CPU使用率异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("register_center_cpu","micro_service","{\"container_id\":\"string:6\",\"cpu_allocation_value\":\"fraction:1\",\"cpu_limit_value\":\"fraction:1\",\"cpu_usage_percent_avg\":\"percent:1\"}","注册中心实例CPU使用率异常","vms","{{addon_type}}组件{{pod_namespace}} - {{pod_name}}实例触发注册中心实例CPU使用率异常,CPU平均使用率: {{cpu_usage_percent_avg}}\n","【注册中心实例CPU使用率异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("register_center_cpu","micro_service","{\"container_id\":\"string:6\",\"cpu_allocation_value\":\"fraction:1\",\"cpu_limit_value\":\"fraction:1\",\"cpu_usage_percent_avg\":\"percent:1\"}","注册中心实例CPU使用率异常恢复","dingding","【注册中心实例CPU使用率异常恢复】\n\n组件: {{addon_type}}\n\n实例: {{pod_namespace}} - {{pod_name}} - {{pod_ip}}\n\nCPU平均使用率: {{cpu_usage_percent_avg}}\n\nCPU分配: {{cpu_allocation_value}}核\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【注册中心实例CPU使用率异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("register_center_cpu","micro_service","{\"container_id\":\"string:6\",\"cpu_allocation_value\":\"fraction:1\",\"cpu_limit_value\":\"fraction:1\",\"cpu_usage_percent_avg\":\"percent:1\"}","注册中心实例CPU使用率异常恢复","ticket","【注册中心实例CPU使用率异常恢复】\n\n组件: {{addon_type}}\n\n实例: {{pod_namespace}} - {{pod_name}} - {{pod_ip}}\n\nCPU平均使用率: {{cpu_usage_percent_avg}}\n\nCPU分配: {{cpu_allocation_value}}核\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【注册中心实例CPU使用率异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("register_center_cpu","micro_service","{\"container_id\":\"string:6\",\"cpu_allocation_value\":\"fraction:1\",\"cpu_limit_value\":\"fraction:1\",\"cpu_usage_percent_avg\":\"percent:1\"}","注册中心实例CPU使用率异常恢复","email","【注册中心实例CPU使用率异常恢复】\n\n组件: {{addon_type}}\n\n实例: {{pod_namespace}} - {{pod_name}} - {{pod_ip}}\n\nCPU平均使用率: {{cpu_usage_percent_avg}}\n\nCPU分配: {{cpu_allocation_value}}核\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【注册中心实例CPU使用率异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("register_center_cpu","micro_service","{\"container_id\":\"string:6\",\"cpu_allocation_value\":\"fraction:1\",\"cpu_limit_value\":\"fraction:1\",\"cpu_usage_percent_avg\":\"percent:1\"}","注册中心实例CPU使用率异常恢复","mbox","【注册中心实例CPU使用率异常恢复】\n\n组件: {{addon_type}}\n\n实例: {{pod_namespace}} - {{pod_name}} - {{pod_ip}}\n\nCPU平均使用率: {{cpu_usage_percent_avg}}\n\nCPU分配: {{cpu_allocation_value}}核\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【注册中心实例CPU使用率异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("register_center_cpu","micro_service","{\"container_id\":\"string:6\",\"cpu_allocation_value\":\"fraction:1\",\"cpu_limit_value\":\"fraction:1\",\"cpu_usage_percent_avg\":\"percent:1\"}","注册中心实例CPU使用率异常恢复","webhook","【注册中心实例CPU使用率异常恢复】\n\n组件: {{addon_type}}\n\n实例: {{pod_namespace}} - {{pod_name}} - {{pod_ip}}\n\nCPU平均使用率: {{cpu_usage_percent_avg}}\n\nCPU分配: {{cpu_allocation_value}}核\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【注册中心实例CPU使用率异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("register_center_cpu","micro_service","{\"container_id\":\"string:6\",\"cpu_allocation_value\":\"fraction:1\",\"cpu_limit_value\":\"fraction:1\",\"cpu_usage_percent_avg\":\"percent:1\"}","注册中心实例CPU使用率异常恢复","sms","{{addon_type}}组件{{pod_namespace}} - {{pod_name}}实例触发注册中心实例CPU使用率异常恢复,CPU平均使用率: {{cpu_usage_percent_avg}}\n","【注册中心实例CPU使用率异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("register_center_cpu","micro_service","{\"container_id\":\"string:6\",\"cpu_allocation_value\":\"fraction:1\",\"cpu_limit_value\":\"fraction:1\",\"cpu_usage_percent_avg\":\"percent:1\"}","注册中心实例CPU使用率异常恢复","vms","{{addon_type}}组件{{pod_namespace}} - {{pod_name}}实例触发注册中心实例CPU使用率异常恢复,CPU平均使用率: {{cpu_usage_percent_avg}}\n","【注册中心实例CPU使用率异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("register_center_mem","micro_service","{\"container_id\":\"string:6\",\"mem_limit_value\":\"size:byte\",\"mem_usage_percent_avg\":\"percent:1\",\"mem_usage_value\":\"size:byte\"}","注册中心实例内存使用率异常","dingding","【注册中心实例内存使用率异常告警】\n\n组件: {{addon_type}}\n\n实例: {{pod_namespace}} - {{pod_name}} - {{host_ip}}\n\n内存使用率: {{mem_usage_percent_avg}}\n\n内存使用: {{mem_usage_value}}\n\n内存限制: {{mem_limit_value}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【注册中心实例内存使用率异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("register_center_mem","micro_service","{\"container_id\":\"string:6\",\"mem_limit_value\":\"size:byte\",\"mem_usage_percent_avg\":\"percent:1\",\"mem_usage_value\":\"size:byte\"}","注册中心实例内存使用率异常","ticket","【注册中心实例内存使用率异常告警】\n\n组件: {{addon_type}}\n\n实例: {{pod_namespace}} - {{pod_name}} - {{host_ip}}\n\n内存使用率: {{mem_usage_percent_avg}}\n\n内存使用: {{mem_usage_value}}\n\n内存限制: {{mem_limit_value}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【注册中心实例内存使用率异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("register_center_mem","micro_service","{\"container_id\":\"string:6\",\"mem_limit_value\":\"size:byte\",\"mem_usage_percent_avg\":\"percent:1\",\"mem_usage_value\":\"size:byte\"}","注册中心实例内存使用率异常","email","【注册中心实例内存使用率异常告警】\n\n组件: {{addon_type}}\n\n实例: {{pod_namespace}} - {{pod_name}} - {{host_ip}}\n\n内存使用率: {{mem_usage_percent_avg}}\n\n内存使用: {{mem_usage_value}}\n\n内存限制: {{mem_limit_value}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【注册中心实例内存使用率异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("register_center_mem","micro_service","{\"container_id\":\"string:6\",\"mem_limit_value\":\"size:byte\",\"mem_usage_percent_avg\":\"percent:1\",\"mem_usage_value\":\"size:byte\"}","注册中心实例内存使用率异常","mbox","【注册中心实例内存使用率异常告警】\n\n组件: {{addon_type}}\n\n实例: {{pod_namespace}} - {{pod_name}} - {{host_ip}}\n\n内存使用率: {{mem_usage_percent_avg}}\n\n内存使用: {{mem_usage_value}}\n\n内存限制: {{mem_limit_value}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【注册中心实例内存使用率异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("register_center_mem","micro_service","{\"container_id\":\"string:6\",\"mem_limit_value\":\"size:byte\",\"mem_usage_percent_avg\":\"percent:1\",\"mem_usage_value\":\"size:byte\"}","注册中心实例内存使用率异常","webhook","【注册中心实例内存使用率异常告警】\n\n组件: {{addon_type}}\n\n实例: {{pod_namespace}} - {{pod_name}} - {{host_ip}}\n\n内存使用率: {{mem_usage_percent_avg}}\n\n内存使用: {{mem_usage_value}}\n\n内存限制: {{mem_limit_value}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【注册中心实例内存使用率异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("register_center_mem","micro_service","{\"container_id\":\"string:6\",\"mem_limit_value\":\"size:byte\",\"mem_usage_percent_avg\":\"percent:1\",\"mem_usage_value\":\"size:byte\"}","注册中心实例内存使用率异常","sms","{{addon_type}}组件{{pod_namespace}} - {{pod_name}}实例触发注册中心实例内存使用率异常告警,内存使用率: {{mem_usage_percent_avg}}\n","【注册中心实例内存使用率异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("register_center_mem","micro_service","{\"container_id\":\"string:6\",\"mem_limit_value\":\"size:byte\",\"mem_usage_percent_avg\":\"percent:1\",\"mem_usage_value\":\"size:byte\"}","注册中心实例内存使用率异常","vms","{{addon_type}}组件{{pod_namespace}} - {{pod_name}}实例触发注册中心实例内存使用率异常告警,内存使用率: {{mem_usage_percent_avg}}\n","【注册中心实例内存使用率异常告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("register_center_mem","micro_service","{\"container_id\":\"string:6\",\"mem_limit_value\":\"size:byte\",\"mem_usage_percent_avg\":\"percent:1\",\"mem_usage_value\":\"size:byte\"}","注册中心实例内存使用率异常恢复","dingding","【注册中心实例内存使用率异常恢复】\n\n组件: {{addon_type}}\n\n实例: {{pod_namespace}} - {{pod_name}} - {{pod_ip}}\n\n内存使用率: {{mem_usage_percent_avg}}\n\n内存使用: {{mem_usage_value}}\n\n内存限制: {{mem_limit_value}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【注册中心实例内存使用率异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("register_center_mem","micro_service","{\"container_id\":\"string:6\",\"mem_limit_value\":\"size:byte\",\"mem_usage_percent_avg\":\"percent:1\",\"mem_usage_value\":\"size:byte\"}","注册中心实例内存使用率异常恢复","ticket","【注册中心实例内存使用率异常恢复】\n\n组件: {{addon_type}}\n\n实例: {{pod_namespace}} - {{pod_name}} - {{pod_ip}}\n\n内存使用率: {{mem_usage_percent_avg}}\n\n内存使用: {{mem_usage_value}}\n\n内存限制: {{mem_limit_value}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【注册中心实例内存使用率异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("register_center_mem","micro_service","{\"container_id\":\"string:6\",\"mem_limit_value\":\"size:byte\",\"mem_usage_percent_avg\":\"percent:1\",\"mem_usage_value\":\"size:byte\"}","注册中心实例内存使用率异常恢复","email","【注册中心实例内存使用率异常恢复】\n\n组件: {{addon_type}}\n\n实例: {{pod_namespace}} - {{pod_name}} - {{pod_ip}}\n\n内存使用率: {{mem_usage_percent_avg}}\n\n内存使用: {{mem_usage_value}}\n\n内存限制: {{mem_limit_value}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【注册中心实例内存使用率异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("register_center_mem","micro_service","{\"container_id\":\"string:6\",\"mem_limit_value\":\"size:byte\",\"mem_usage_percent_avg\":\"percent:1\",\"mem_usage_value\":\"size:byte\"}","注册中心实例内存使用率异常恢复","mbox","【注册中心实例内存使用率异常恢复】\n\n组件: {{addon_type}}\n\n实例: {{pod_namespace}} - {{pod_name}} - {{pod_ip}}\n\n内存使用率: {{mem_usage_percent_avg}}\n\n内存使用: {{mem_usage_value}}\n\n内存限制: {{mem_limit_value}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【注册中心实例内存使用率异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("register_center_mem","micro_service","{\"container_id\":\"string:6\",\"mem_limit_value\":\"size:byte\",\"mem_usage_percent_avg\":\"percent:1\",\"mem_usage_value\":\"size:byte\"}","注册中心实例内存使用率异常恢复","webhook","【注册中心实例内存使用率异常恢复】\n\n组件: {{addon_type}}\n\n实例: {{pod_namespace}} - {{pod_name}} - {{pod_ip}}\n\n内存使用率: {{mem_usage_percent_avg}}\n\n内存使用: {{mem_usage_value}}\n\n内存限制: {{mem_limit_value}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【注册中心实例内存使用率异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("register_center_mem","micro_service","{\"container_id\":\"string:6\",\"mem_limit_value\":\"size:byte\",\"mem_usage_percent_avg\":\"percent:1\",\"mem_usage_value\":\"size:byte\"}","注册中心实例内存使用率异常恢复","sms","{{addon_type}}组件{{pod_namespace}} - {{pod_name}}实例触发注册中心实例内存使用率异常告警恢复,内存使用率: {{mem_usage_percent_avg}}\n","【注册中心实例内存使用率异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("register_center_mem","micro_service","{\"container_id\":\"string:6\",\"mem_limit_value\":\"size:byte\",\"mem_usage_percent_avg\":\"percent:1\",\"mem_usage_value\":\"size:byte\"}","注册中心实例内存使用率异常恢复","vms","{{addon_type}}组件{{pod_namespace}} - {{pod_name}}实例触发注册中心实例内存使用率异常告警恢复,内存使用率: {{mem_usage_percent_avg}}\n","【注册中心实例内存使用率异常恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("sidecar_circuit_breaker","micro_service","","服务熔断通知告警","dingding","【服务熔断告警】\n\n服务发生熔断 !\n\n项目: {{project_name}}\n\n环境: {{workspace}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} / {{service_name}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\nterminus_key: {{terminus_key}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{application_name}}应用{{service_name}}服务发生熔断告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("sidecar_circuit_breaker","micro_service","","服务熔断通知告警","ticket","【服务熔断告警】\n\n服务发生熔断 !\n\n项目: {{project_name}}\n\n环境: {{workspace}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} / {{service_name}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\nterminus_key: {{terminus_key}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{application_name}}应用{{service_name}}服务发生熔断告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("sidecar_circuit_breaker","micro_service","","服务熔断通知告警","email","【服务熔断告警】\n\n服务发生熔断 !\n\n项目: {{project_name}}\n\n环境: {{workspace}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} / {{service_name}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\nterminus_key: {{terminus_key}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{application_name}}应用{{service_name}}服务发生熔断告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("sidecar_circuit_breaker","micro_service","","服务熔断通知告警","mbox","【服务熔断告警】\n\n服务发生熔断 !\n\n项目: {{project_name}}\n\n环境: {{workspace}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} / {{service_name}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\nterminus_key: {{terminus_key}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{application_name}}应用{{service_name}}服务发生熔断告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("sidecar_circuit_breaker","micro_service","","服务熔断通知告警","webhook","【服务熔断告警】\n\n服务发生熔断 !\n\n项目: {{project_name}}\n\n环境: {{workspace}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} / {{service_name}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\nterminus_key: {{terminus_key}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{application_name}}应用{{service_name}}服务发生熔断告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("sidecar_circuit_breaker","micro_service","","服务熔断通知告警","sms","{{application_name}}应用{{service_name}}服务触发服务熔断通知告警,terminus_key: {{terminus_key}}\n","【{{application_name}}应用{{service_name}}服务发生熔断告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("sidecar_circuit_breaker","micro_service","","服务熔断通知告警","vms","{{application_name}}应用{{service_name}}服务触发服务熔断通知告警,terminus_key: {{terminus_key}}\n","【{{application_name}}应用{{service_name}}服务发生熔断告警】\n","alert"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("sidecar_circuit_breaker","micro_service","","服务熔断通知告警恢复","dingding","【服务熔断告警恢复】\n\n服务熔断告警恢复 !\n\n项目: {{project_name}}\n\n环境: {{workspace}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} / {{service_name}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\nterminus_key: {{terminus_key}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{application_name}}应用{{service_name}}服务发生熔断恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("sidecar_circuit_breaker","micro_service","","服务熔断通知告警恢复","ticket","【服务熔断告警恢复】\n\n服务熔断告警恢复 !\n\n项目: {{project_name}}\n\n环境: {{workspace}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} / {{service_name}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\nterminus_key: {{terminus_key}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{application_name}}应用{{service_name}}服务发生熔断恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("sidecar_circuit_breaker","micro_service","","服务熔断通知告警恢复","email","【服务熔断告警恢复】\n\n服务熔断告警恢复 !\n\n项目: {{project_name}}\n\n环境: {{workspace}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} / {{service_name}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\nterminus_key: {{terminus_key}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{application_name}}应用{{service_name}}服务发生熔断恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("sidecar_circuit_breaker","micro_service","","服务熔断通知告警恢复","mbox","【服务熔断告警恢复】\n\n服务熔断告警恢复 !\n\n项目: {{project_name}}\n\n环境: {{workspace}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} / {{service_name}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\nterminus_key: {{terminus_key}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{application_name}}应用{{service_name}}服务发生熔断恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("sidecar_circuit_breaker","micro_service","","服务熔断通知告警恢复","webhook","【服务熔断告警恢复】\n\n服务熔断告警恢复 !\n\n项目: {{project_name}}\n\n环境: {{workspace}}\n\n应用: {{application_name}}\n\n服务: {{runtime_name}} / {{service_name}}\n\n集群: {{cluster_name}}\n\n机器: {{host_ip}}\n\nterminus_key: {{terminus_key}}\n\n时间: {{timestamp}}\n\n[查看记录]({{record_url}})\n","【{{application_name}}应用{{service_name}}服务发生熔断恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("sidecar_circuit_breaker","micro_service","","服务熔断通知告警恢复","sms","{{application_name}}应用{{service_name}}服务触发服务熔断通知告警恢复,terminus_key: {{terminus_key}}\n","【{{application_name}}应用{{service_name}}服务发生熔断恢复】\n","recover"); +INSERT `sp_alert_notify_template`(`alert_index`,`alert_type`,`formats`,`name`,`target`,`template`,`title`,`trigger`) VALUES("sidecar_circuit_breaker","micro_service","","服务熔断通知告警恢复","vms","{{application_name}}应用{{service_name}}服务触发服务熔断通知告警恢复,terminus_key: {{terminus_key}}\n","【{{application_name}}应用{{service_name}}服务熔断恢复】\n","recover"); diff --git a/.erda/migrations/monitor/20211101-sp_alert_rules.sql b/.erda/migrations/monitor/20211101-sp_alert_rules.sql new file mode 100644 index 00000000000..a11e6690a61 --- /dev/null +++ b/.erda/migrations/monitor/20211101-sp_alert_rules.sql @@ -0,0 +1,66 @@ +UPDATE `sp_alert_rules` SET `enable` = 0; +INSERT `sp_alert_rules`(`alert_index`,`alert_scope`,`alert_type`,`attributes`,`name`,`template`) VALUES("addon_elasticsearch_cpu","org","addon","{\"alert_group\":\"{{cluster_name}}-{{container_id}}\",\"level\":\"WARNING\",\"recover\":\"true\",\"tickets_metric_key\":\"{{container_id}}\"}","ElasticSearch实例CPU使用率异常告警","{\"filters\":[{\"operator\":\"eq\",\"tag\":\"org_name\",\"value\":\"$org_name\"},{\"operator\":\"in\",\"tag\":\"addon_type\",\"value\":[\"terminus-elasticsearch\",\"elasticsearch-operator\"]}],\"functions\":[{\"aggregator\":\"avg\",\"field\":\"cpu_usage_percent\",\"field_script\":\"function invoke(fields,tags){return fields.cpu_limit===0?fields.cpu_usage_percent:fields.cpu_usage_percent/fields.cpu_limit}\",\"operator\":\"gte\",\"value\":90},{\"aggregator\":\"max\",\"alias\":\"cpu_limit_value\",\"field\":\"cpu_limit\"},{\"aggregator\":\"max\",\"alias\":\"cpu_allocation_value\",\"field\":\"cpu_allocation\"}],\"group\":[\"container_id\"],\"metric\":\"docker_container_summary\",\"outputs\":[\"alert\"],\"select\":{\"addon_id\":\"#addon_id\",\"addon_type\":\"#addon_type\",\"cluster_name\":\"#cluster_name\",\"container_id\":\"#container_id\",\"host_ip\":\"#host_ip\",\"org_name\":\"#org_name\",\"pod_ip\":\"#pod_ip\",\"pod_name\":\"#pod_name\",\"pod_namespace\":\"#pod_namespace\"},\"window\":1}"); +INSERT `sp_alert_rules`(`alert_index`,`alert_scope`,`alert_type`,`attributes`,`name`,`template`) VALUES("addon_elasticsearch_mem","org","addon","{\"alert_group\":\"{{cluster_name}}-{{container_id}}\",\"level\":\"WARNING\",\"recover\":\"true\",\"tickets_metric_key\":\"{{container_id}}\"}","Elasticsearch实例内存使用率异常告警","{\"filters\":[{\"operator\":\"eq\",\"tag\":\"org_name\",\"value\":\"$org_name\"},{\"operator\":\"in\",\"tag\":\"addon_type\",\"value\":[\"terminus-elasticsearch\",\"elasticsearch-operator\"]}],\"functions\":[{\"aggregator\":\"avg\",\"field\":\"mem_usage_percent\",\"operator\":\"gte\",\"value\":90},{\"aggregator\":\"max\",\"alias\":\"mem_limit_value\",\"field\":\"mem_limit\"},{\"aggregator\":\"max\",\"alias\":\"mem_allocation_value\",\"field\":\"mem_allocation\"}],\"group\":[\"container_id\"],\"metric\":\"docker_container_summary\",\"outputs\":[\"alert\"],\"select\":{\"addon_id\":\"#addon_id\",\"addon_type\":\"#addon_type\",\"cluster_name\":\"#cluster_name\",\"container_id\":\"#container_id\",\"host_ip\":\"#host_ip\",\"org_name\":\"#org_name\",\"pod_ip\":\"#pod_ip\",\"pod_name\":\"#pod_name\",\"pod_namespace\":\"#pod_namespace\"},\"window\":1}"); +INSERT `sp_alert_rules`(`alert_index`,`alert_scope`,`alert_type`,`attributes`,`name`,`template`) VALUES("addon_mysql_cpu","org","addon","{\"alert_group\":\"{{cluster_name}}-{{container_id}}\",\"level\":\"WARNING\",\"recover\":\"true\",\"tickets_metric_key\":\"{{container_id}}\"}","MySQL实例CPU使用率异常告警","{\"filters\":[{\"operator\":\"eq\",\"tag\":\"org_name\",\"value\":\"$org_name\"},{\"operator\":\"in\",\"tag\":\"addon_type\",\"value\":[\"mysql\"]}],\"functions\":[{\"aggregator\":\"avg\",\"field\":\"cpu_usage_percent\",\"field_script\":\"function invoke(fields,tags){return fields.cpu_limit===0?fields.cpu_usage_percent:fields.cpu_usage_percent/fields.cpu_limit}\",\"operator\":\"gte\",\"value\":90},{\"aggregator\":\"max\",\"alias\":\"cpu_limit_value\",\"field\":\"cpu_limit\"},{\"aggregator\":\"max\",\"alias\":\"cpu_allocation_value\",\"field\":\"cpu_allocation\"}],\"group\":[\"container_id\"],\"metric\":\"docker_container_summary\",\"outputs\":[\"alert\"],\"select\":{\"addon_id\":\"#addon_id\",\"addon_type\":\"#addon_type\",\"cluster_name\":\"#cluster_name\",\"container_id\":\"#container_id\",\"host_ip\":\"#host_ip\",\"org_name\":\"#org_name\",\"pod_ip\":\"#pod_ip\",\"pod_name\":\"#pod_name\",\"pod_namespace\":\"#pod_namespace\"},\"window\":1}"); +INSERT `sp_alert_rules`(`alert_index`,`alert_scope`,`alert_type`,`attributes`,`name`,`template`) VALUES("addon_mysql_mem","org","addon","{\"alert_group\":\"{{cluster_name}}-{{container_id}}\",\"level\":\"WARNING\",\"recover\":\"true\",\"tickets_metric_key\":\"{{container_id}}\"}","MySQL实例内存使用率异常告警","{\"filters\":[{\"operator\":\"eq\",\"tag\":\"org_name\",\"value\":\"$org_name\"},{\"operator\":\"in\",\"tag\":\"addon_type\",\"value\":[\"mysql\"]}],\"functions\":[{\"aggregator\":\"avg\",\"field\":\"mem_usage_percent\",\"operator\":\"gte\",\"value\":85},{\"aggregator\":\"max\",\"alias\":\"mem_limit_value\",\"field\":\"mem_limit\"},{\"aggregator\":\"max\",\"alias\":\"mem_allocation_value\",\"field\":\"mem_allocation\"}],\"group\":[\"container_id\"],\"metric\":\"docker_container_summary\",\"outputs\":[\"alert\"],\"select\":{\"addon_id\":\"#addon_id\",\"addon_type\":\"#addon_type\",\"cluster_name\":\"#cluster_name\",\"container_id\":\"#container_id\",\"host_ip\":\"#host_ip\",\"org_name\":\"#org_name\",\"pod_ip\":\"#pod_ip\",\"pod_name\":\"#pod_name\",\"pod_namespace\":\"#pod_namespace\"},\"window\":1}"); +INSERT `sp_alert_rules`(`alert_index`,`alert_scope`,`alert_type`,`attributes`,`name`,`template`) VALUES("addon_mysql_slave_status","org","addon","{\"alert_group\":\"{{cluster_name}}-{{addon_id}}\",\"level\":\"WARNING\",\"recover\":\"true\",\"tickets_metric_key\":\"{{addon_id}}\"}","MySQL实例主从同步异常告警","{\"filters\":[{\"operator\":\"eq\",\"tag\":\"org_name\",\"value\":\"$org_name\"},{\"operator\":\"eq\",\"tag\":\"is_slave\",\"value\":\"true\"}],\"functions\":[{\"aggregator\":\"max\",\"alias\":\"slave_slave_running_ok_value\",\"field\":\"slave_slave_running_ok\",\"field_script\":\"function invoke(fields,tags){return (fields.slave_slave_io_running==0 || fields.slave_slave_sql_running==0)?0:1}\",\"operator\":\"neq\",\"value\":1},{\"aggregator\":\"max\",\"alias\":\"slave_slave_sql_running_value\",\"field\":\"slave_slave_sql_running\"},{\"aggregator\":\"max\",\"alias\":\"slave_slave_io_running_value\",\"field\":\"slave_slave_io_running\"}],\"group\":[\"addon_id\",\"server\"],\"metric\":\"mysql\",\"outputs\":[\"alert\"],\"select\":{\"addon_id\":\"#addon_id\",\"cluster_name\":\"#cluster_name\",\"host_ip\":\"#host_ip\",\"org_name\":\"#org_name\"},\"window\":1}"); +INSERT `sp_alert_rules`(`alert_index`,`alert_scope`,`alert_type`,`attributes`,`name`,`template`) VALUES("addon_redis_mem","org","addon","{\"alert_group\":\"{{cluster_name}}-{{container_id}}\",\"level\":\"WARNING\",\"recover\":\"true\",\"tickets_metric_key\":\"{{container_id}}\"}","redis实例内存使用率异常告警","{\"filters\":[{\"operator\":\"eq\",\"tag\":\"org_name\",\"value\":\"$org_name\"},{\"operator\":\"in\",\"tag\":\"addon_type\",\"value\":[\"redis\"]}],\"functions\":[{\"aggregator\":\"avg\",\"field\":\"mem_usage_percent\",\"operator\":\"gte\",\"value\":85},{\"aggregator\":\"max\",\"alias\":\"mem_limit_value\",\"field\":\"mem_limit\"},{\"aggregator\":\"max\",\"alias\":\"mem_allocation_value\",\"field\":\"mem_allocation\"}],\"group\":[\"container_id\"],\"metric\":\"docker_container_summary\",\"outputs\":[\"alert\"],\"select\":{\"addon_id\":\"#addon_id\",\"addon_type\":\"#addon_type\",\"cluster_name\":\"#cluster_name\",\"container_id\":\"#container_id\",\"host_ip\":\"#host_ip\",\"org_name\":\"#org_name\",\"pod_ip\":\"#pod_ip\",\"pod_name\":\"#pod_name\",\"pod_namespace\":\"#pod_namespace\"},\"window\":1}"); +INSERT `sp_alert_rules`(`alert_index`,`alert_scope`,`alert_type`,`attributes`,`name`,`template`) VALUES("app_browser_ajax_req","micro_service","app_browser","{\"alert_group\":\"{{tk}}-{{req_path}}-{{host}}\",\"display_url_id\":\"micro_bi_ajax\",\"level\":\"WARNING\",\"recover\":\"false\"}","Ajax接口访问性能","{\"filters\":[{\"operator\":\"eq\",\"tag\":\"tk\",\"value\":\"$tk\"},{\"operator\":\"eq\",\"tag\":\"type\",\"value\":\"browser\"}],\"functions\":[{\"aggregator\":\"avg\",\"field\":\"tt\",\"operator\":\"gt\",\"value\":1000}],\"group\":[\"tk\",\"req_path\",\"host\"],\"metric\":\"ta_req\",\"outputs\":[\"alert\"],\"select\":{\"doc_path\":\"#doc_path\",\"host\":\"#host\",\"req_path\":\"#req_path\",\"tk\":\"#tk\",\"type\":\"#type\"},\"window\":1}"); +INSERT `sp_alert_rules`(`alert_index`,`alert_scope`,`alert_type`,`attributes`,`name`,`template`) VALUES("app_browser_apdex","micro_service","app_browser","{\"alert_group\":\"{{tk}}-{{doc_path}}-{{host}}\",\"display_url_id\":\"micro_bi_position\",\"level\":\"WARNING\",\"recover\":\"false\"}","用户体验","{\"filters\":[{\"operator\":\"eq\",\"tag\":\"tk\",\"value\":\"$tk\"},{\"operator\":\"eq\",\"tag\":\"type\",\"value\":\"browser\"}],\"functions\":[{\"aggregator\":\"avg\",\"field\":\"plt\",\"operator\":\"gt\",\"value\":3000}],\"group\":[\"tk\",\"doc_path\",\"host\"],\"metric\":\"ta_timing\",\"outputs\":[\"alert\"],\"select\":{\"doc_path\":\"#doc_path\",\"host\":\"#host\",\"tk\":\"#tk\",\"type\":\"#type\"},\"window\":1}"); +INSERT `sp_alert_rules`(`alert_index`,`alert_scope`,`alert_type`,`attributes`,`name`,`template`) VALUES("app_browser_host_req","micro_service","app_browser","{\"alert_group\":\"{{tk}}-{{host}}\",\"display_url_id\":\"micro_bi_domain\",\"level\":\"WARNING\",\"recover\":\"false\"}","域名访问性能","{\"filters\":[{\"operator\":\"eq\",\"tag\":\"tk\",\"value\":\"$tk\"},{\"operator\":\"eq\",\"tag\":\"type\",\"value\":\"browser\"}],\"functions\":[{\"aggregator\":\"avg\",\"field\":\"plt\",\"operator\":\"gt\",\"value\":1000}],\"group\":[\"tk\",\"host\"],\"metric\":\"ta_timing\",\"outputs\":[\"alert\"],\"select\":{\"doc_path\":\"#doc_path\",\"host\":\"#host\",\"tk\":\"#tk\",\"type\":\"#type\"},\"window\":1}"); +INSERT `sp_alert_rules`(`alert_index`,`alert_scope`,`alert_type`,`attributes`,`name`,`template`) VALUES("app_browser_page_req","micro_service","app_browser","{\"alert_group\":\"{{tk}}-{{doc_path}}-{{host}}\",\"display_url_id\":\"micro_bi_page\",\"level\":\"WARNING\",\"recover\":\"false\"}","页面访问性能","{\"filters\":[{\"operator\":\"eq\",\"tag\":\"tk\",\"value\":\"$tk\"},{\"operator\":\"eq\",\"tag\":\"type\",\"value\":\"browser\"}],\"functions\":[{\"aggregator\":\"avg\",\"field\":\"plt\",\"operator\":\"gt\",\"value\":1000}],\"group\":[\"tk\",\"doc_path\",\"host\"],\"metric\":\"ta_timing\",\"outputs\":[\"alert\"],\"select\":{\"doc_path\":\"#doc_path\",\"host\":\"#host\",\"tk\":\"#tk\",\"type\":\"#type\"},\"window\":1}"); +INSERT `sp_alert_rules`(`alert_index`,`alert_scope`,`alert_type`,`attributes`,`name`,`template`) VALUES("app_browser_script_error","micro_service","app_browser","{\"alert_group\":\"{{tk}}-{{doc_path}}-{{host}}\",\"display_url_id\":\"micro_bi_script\",\"level\":\"WARNING\",\"recover\":\"false\"}","脚本错误","{\"filters\":[{\"operator\":\"eq\",\"tag\":\"tk\",\"value\":\"$tk\"},{\"operator\":\"eq\",\"tag\":\"type\",\"value\":\"browser\"}],\"functions\":[{\"aggregator\":\"sum\",\"field\":\"count\",\"operator\":\"gte\",\"value\":10}],\"group\":[\"tk\",\"doc_path\",\"host\"],\"metric\":\"ta_error\",\"outputs\":[\"alert\"],\"select\":{\"browser\":\"#browser\",\"count\":\"#count\",\"doc_path\":\"#doc_path\",\"host\":\"#host\",\"ip\":\"#ip\",\"source\":\"#source\",\"tk\":\"#tk\",\"type\":\"#type\",\"url\":\"#url\"},\"window\":1}"); +INSERT `sp_alert_rules`(`alert_index`,`alert_scope`,`alert_type`,`attributes`,`name`,`template`) VALUES("app_exception_count","micro_service","app_exception","{\"alert_group\":\"{{terminus_key}}-{{error_id}}\",\"display_url_id\":\"micro_error_detail\",\"level\":\"WARNING\",\"recover\":\"true\",\"tickets_metric_key\":\"{{error_id}}\"}","应用错误次数","{\"filters\":[{\"operator\":\"eq\",\"tag\":\"org_name\",\"value\":\"$org_name\"},{\"operator\":\"eq\",\"tag\":\"terminus_key\",\"value\":\"$terminus_key\"}],\"functions\":[{\"aggregator\":\"sum\",\"field\":\"count\",\"operator\":\"gte\",\"value\":20}],\"group\":[\"error_id\"],\"metric\":\"error_alert\",\"outputs\":[\"alert\"],\"select\":{\"application_id\":\"#application_id\",\"application_name\":\"#application_name\",\"class\":\"#class\",\"cluster_name\":\"#cluster_name\",\"error_id\":\"#error_id\",\"host_ip\":\"#host_ip\",\"instance_id\":\"#instance_id\",\"line\":\"#line\",\"method\":\"#method\",\"org_name\":\"#org_name\",\"project_id\":\"#project_id\",\"project_name\":\"#project_name\",\"runtime_id\":\"#runtime_id\",\"runtime_name\":\"#runtime_name\",\"service_name\":\"#service_name\",\"terminus_key\":\"#terminus_key\",\"type\":\"#type\",\"workspace\":\"#workspace\"},\"window\":5}"); +INSERT `sp_alert_rules`(`alert_index`,`alert_scope`,`alert_type`,`attributes`,`name`,`template`) VALUES("app_resource_container_cpu","micro_service","app_resource","{\"alert_group\":\"{{terminus_key}}-{{container_id}}\",\"display_url_id\":\"workbench_runtime\",\"level\":\"WARNING\",\"recover\":\"true\",\"tickets_metric_key\":\"{{container_id}}\"}","应用实例CPU使用率异常","{\"filters\":[{\"operator\":\"eq\",\"tag\":\"org_name\",\"value\":\"$org_name\"},{\"operator\":\"eq\",\"tag\":\"terminus_key\",\"value\":\"$terminus_key\"}],\"functions\":[{\"aggregator\":\"avg\",\"field\":\"cpu_usage_percent\",\"field_script\":\"function invoke(fields,tags){return fields.cpu_limit===0?fields.cpu_usage_percent:fields.cpu_usage_percent/fields.cpu_limit}\",\"operator\":\"gte\",\"value\":90},{\"aggregator\":\"max\",\"alias\":\"cpu_limit_value\",\"field\":\"cpu_limit\"},{\"aggregator\":\"max\",\"alias\":\"cpu_allocation_value\",\"field\":\"cpu_allocation\"}],\"group\":[\"container_id\"],\"metric\":\"docker_container_summary\",\"outputs\":[\"alert\"],\"select\":{\"application_id\":\"#application_id\",\"application_name\":\"#application_name\",\"cluster_name\":\"#cluster_name\",\"container_id\":\"#container_id\",\"host_ip\":\"#host_ip\",\"instance_id\":\"#instance_id\",\"org_name\":\"#org_name\",\"pod_ip\":\"#pod_ip\",\"project_id\":\"#project_id\",\"project_name\":\"#project_name\",\"runtime_id\":\"#runtime_id\",\"runtime_name\":\"#runtime_name\",\"service_name\":\"#service_name\",\"terminus_key\":\"#terminus_key\"},\"window\":1}"); +INSERT `sp_alert_rules`(`alert_index`,`alert_scope`,`alert_type`,`attributes`,`name`,`template`) VALUES("app_resource_container_mem","micro_service","app_resource","{\"alert_group\":\"{{terminus_key}}-{{container_id}}\",\"display_url_id\":\"workbench_runtime\",\"level\":\"WARNING\",\"recover\":\"true\",\"tickets_metric_key\":\"{{container_id}}\"}","应用实例内存使用率异常","{\"filters\":[{\"operator\":\"eq\",\"tag\":\"org_name\",\"value\":\"$org_name\"},{\"operator\":\"eq\",\"tag\":\"terminus_key\",\"value\":\"$terminus_key\"}],\"functions\":[{\"aggregator\":\"avg\",\"field\":\"mem_usage_percent\",\"operator\":\"gte\",\"value\":90},{\"aggregator\":\"max\",\"alias\":\"mem_usage_value\",\"field\":\"mem_usage\"},{\"aggregator\":\"max\",\"alias\":\"mem_limit_value\",\"field\":\"mem_limit\"},{\"aggregator\":\"max\",\"alias\":\"mem_max_usage_value\",\"field\":\"mem_max_usage\"}],\"group\":[\"container_id\"],\"metric\":\"docker_container_summary\",\"outputs\":[\"alert\"],\"select\":{\"application_id\":\"#application_id\",\"application_name\":\"#application_name\",\"cluster_name\":\"#cluster_name\",\"container_id\":\"#container_id\",\"host_ip\":\"#host_ip\",\"instance_id\":\"#instance_id\",\"org_name\":\"#org_name\",\"pod_ip\":\"#pod_ip\",\"project_id\":\"#project_id\",\"project_name\":\"#project_name\",\"runtime_id\":\"#runtime_id\",\"runtime_name\":\"#runtime_name\",\"service_name\":\"#service_name\",\"terminus_key\":\"#terminus_key\"},\"window\":1}"); +INSERT `sp_alert_rules`(`alert_index`,`alert_scope`,`alert_type`,`attributes`,`name`,`template`) VALUES("app_resource_container_oom","micro_service","app_resource","{\"alert_group\":\"{{terminus_key}}-{{container_id}}\",\"display_url_id\":\"workbench_runtime\",\"level\":\"WARNING\",\"recover\":\"true\",\"tickets_metric_key\":\"{{container_id}}\"}","应用实例OOM","{\"filters\":[{\"operator\":\"eq\",\"tag\":\"org_name\",\"value\":\"$org_name\"},{\"operator\":\"eq\",\"tag\":\"terminus_key\",\"value\":\"$terminus_key\"}],\"functions\":[{\"aggregator\":\"values\",\"field\":\"oomkilled\",\"operator\":\"contains\",\"value\":true}],\"group\":[\"container_id\"],\"metric\":\"docker_container_summary\",\"outputs\":[\"alert\"],\"select\":{\"application_id\":\"#application_id\",\"application_name\":\"#application_name\",\"cluster_name\":\"#cluster_name\",\"container_id\":\"#container_id\",\"host_ip\":\"#host_ip\",\"instance_id\":\"#instance_id\",\"org_name\":\"#org_name\",\"pod_ip\":\"#pod_ip\",\"project_id\":\"#project_id\",\"project_name\":\"#project_name\",\"runtime_id\":\"#runtime_id\",\"runtime_name\":\"#runtime_name\",\"service_name\":\"#service_name\",\"terminus_key\":\"#terminus_key\"},\"window\":1}"); +INSERT `sp_alert_rules`(`alert_index`,`alert_scope`,`alert_type`,`attributes`,`name`,`template`) VALUES("app_resource_jvm_gc_count","micro_service","app_resource","{\"alert_group\":\"{{terminus_key}}-{{instance_id}}\",\"display_url_id\":\"micro_jvm\",\"level\":\"WARNING\",\"recover\":\"true\",\"tickets_metric_key\":\"{{instance_id}}\"}","应用JVM GC次数","{\"filters\":[{\"operator\":\"eq\",\"tag\":\"name\",\"value\":\"concurrentmarksweep\"},{\"operator\":\"eq\",\"tag\":\"terminus_key\",\"value\":\"$terminus_key\"},{\"operator\":\"eq\",\"tag\":\"org_name\",\"value\":\"$org_name\"}],\"functions\":[{\"aggregator\":\"sum\",\"field\":\"count\",\"operator\":\"gte\",\"value\":5}],\"group\":[\"instance_id\"],\"metric\":\"jvm_gc\",\"outputs\":[\"alert\"],\"select\":{\"application_id\":\"#application_id\",\"application_name\":\"#application_name\",\"cluster_name\":\"#cluster_name\",\"host_ip\":\"#host_ip\",\"instance_id\":\"#instance_id\",\"org_name\":\"#org_name\",\"project_id\":\"#project_id\",\"project_name\":\"#project_name\",\"runtime_id\":\"#runtime_id\",\"runtime_name\":\"#runtime_name\",\"service_name\":\"#service_name\",\"terminus_key\":\"#terminus_key\",\"workspace\":\"#workspace\"},\"window\":3}"); +INSERT `sp_alert_rules`(`alert_index`,`alert_scope`,`alert_type`,`attributes`,`name`,`template`) VALUES("app_resource_jvm_gc_time","micro_service","app_resource","{\"alert_group\":\"{{terminus_key}}-{{instance_id}}\",\"display_url_id\":\"micro_jvm\",\"level\":\"WARNING\",\"recover\":\"true\",\"tickets_metric_key\":\"{{instance_id}}\"}","应用JVM GC 耗时","{\"condition\":\"or\",\"filters\":[{\"operator\":\"eq\",\"tag\":\"name\",\"value\":\"concurrentmarksweep\"},{\"operator\":\"eq\",\"tag\":\"terminus_key\",\"value\":\"$terminus_key\"},{\"operator\":\"eq\",\"tag\":\"org_name\",\"value\":\"$org_name\"}],\"functions\":[{\"aggregator\":\"max\",\"alias\":\"time_value\",\"field\":\"time\",\"operator\":\"gte\",\"value\":400},{\"aggregator\":\"sum\",\"field\":\"time\",\"operator\":\"gte\",\"value\":1000}],\"group\":[\"instance_id\"],\"metric\":\"jvm_gc\",\"outputs\":[\"alert\"],\"select\":{\"application_id\":\"#application_id\",\"application_name\":\"#application_name\",\"cluster_name\":\"#cluster_name\",\"host_ip\":\"#host_ip\",\"instance_id\":\"#instance_id\",\"org_name\":\"#org_name\",\"project_id\":\"#project_id\",\"project_name\":\"#project_name\",\"runtime_id\":\"#runtime_id\",\"runtime_name\":\"#runtime_name\",\"service_name\":\"#service_name\",\"terminus_key\":\"#terminus_key\",\"workspace\":\"#workspace\"},\"window\":1}"); +INSERT `sp_alert_rules`(`alert_index`,`alert_scope`,`alert_type`,`attributes`,`name`,`template`) VALUES("app_resource_jvm_heap","micro_service","app_resource","{\"alert_group\":\"{{terminus_key}}-{{instance_id}}\",\"display_url_id\":\"micro_jvm\",\"level\":\"WARNING\",\"recover\":\"true\",\"tickets_metric_key\":\"{{instance_id}}\"}","应用JVM堆内存","{\"condition\":\"and\",\"filters\":[{\"operator\":\"eq\",\"tag\":\"name\",\"value\":\"heap_memory\"},{\"operator\":\"eq\",\"tag\":\"terminus_key\",\"value\":\"$terminus_key\"},{\"operator\":\"eq\",\"tag\":\"org_name\",\"value\":\"$org_name\"}],\"functions\":[{\"aggregator\":\"avg\",\"field\":\"usage_percent\",\"field_script\":\"function invoke(field, tag){ return field.used / field.max * 100; }\",\"operator\":\"gte\",\"value\":75},{\"aggregator\":\"max\",\"alias\":\"used_value\",\"field\":\"used\"},{\"aggregator\":\"max\",\"alias\":\"max_value\",\"field\":\"max\"}],\"group\":[\"instance_id\"],\"metric\":\"jvm_memory\",\"outputs\":[\"alert\"],\"select\":{\"application_id\":\"#application_id\",\"application_name\":\"#application_name\",\"cluster_name\":\"#cluster_name\",\"host_ip\":\"#host_ip\",\"instance_id\":\"#instance_id\",\"org_name\":\"#org_name\",\"project_id\":\"#project_id\",\"project_name\":\"#project_name\",\"runtime_id\":\"#runtime_id\",\"runtime_name\":\"#runtime_name\",\"service_name\":\"#service_name\",\"terminus_key\":\"#terminus_key\",\"workspace\":\"#workspace\"},\"window\":1}"); +INSERT `sp_alert_rules`(`alert_index`,`alert_scope`,`alert_type`,`attributes`,`name`,`template`) VALUES("app_resource_nodejs_heap","micro_service","app_resource","{\"alert_group\":\"{{terminus_key}}-{{instance_id}}\",\"display_url_id\":\"micro_nodejs\",\"level\":\"WARNING\",\"recover\":\"true\",\"tickets_metric_key\":\"{{instance_id}}\"}","应用NodeJS堆内存使用率","{\"filters\":[{\"operator\":\"eq\",\"tag\":\"terminus_key\",\"value\":\"$terminus_key\"},{\"operator\":\"eq\",\"tag\":\"org_name\",\"value\":\"$org_name\"}],\"functions\":[{\"aggregator\":\"avg\",\"field\":\"usage_percent\",\"field_script\":\"function invoke(field, tag){ if(!field.max) { return 0; } return field.rss / field.max * 100; }\",\"operator\":\"gte\",\"value\":75},{\"aggregator\":\"max\",\"alias\":\"heap_used_value\",\"field\":\"heap_used\"},{\"aggregator\":\"max\",\"alias\":\"heap_total_value\",\"field\":\"heap_total\"},{\"aggregator\":\"max\",\"alias\":\"rss_value\",\"field\":\"rss\"},{\"aggregator\":\"max\",\"alias\":\"max_value\",\"field\":\"max\"}],\"group\":[\"instance_id\"],\"metric\":\"nodejs_memory\",\"outputs\":[\"alert\"],\"select\":{\"application_id\":\"#application_id\",\"application_name\":\"#application_name\",\"cluster_name\":\"#cluster_name\",\"host_ip\":\"#host_ip\",\"instance_id\":\"#instance_id\",\"org_name\":\"#org_name\",\"project_id\":\"#project_id\",\"project_name\":\"#project_name\",\"runtime_id\":\"#runtime_id\",\"runtime_name\":\"#runtime_name\",\"service_name\":\"#service_name\",\"terminus_key\":\"#terminus_key\",\"workspace\":\"#workspace\"},\"window\":1}"); +INSERT `sp_alert_rules`(`alert_index`,`alert_scope`,`alert_type`,`attributes`,`name`,`template`) VALUES("app_status_browser","micro_service","app_status","{\"alert_group\":\"{{terminus_key}}-{{metric_id}}\",\"display_url_id\":\"micro_status_detail\",\"level\":\"ERROR\",\"recover\":\"false\",\"tickets_metric_key\":\"{{metric_id}}\"}","页面内容改变","{\"alias\":\"status_page_browser\",\"filters\":[{\"operator\":\"eq\",\"tag\":\"terminus_key\",\"value\":\"$terminus_key\"},{\"operator\":\"eq\",\"tag\":\"type\",\"value\":\"browser\"}],\"functions\":[{\"aggregator\":\"min\",\"field\":\"diff_screenshot\",\"operator\":\"eq\",\"value\":false}],\"group\":[\"metric\"],\"metric\":\"status_page\",\"outputs\":[\"alert\"],\"select\":{\"metric_id\":\"#metric\",\"project_id\":\"#project_id\",\"project_name\":\"#project_name\",\"status_metric_name\":\"#metric_name\",\"terminus_key\":\"#terminus_key\",\"type\":\"#type\",\"url\":\"#url\",\"workspace\":\"#env\"},\"window\":1}"); +INSERT `sp_alert_rules`(`alert_index`,`alert_scope`,`alert_type`,`attributes`,`name`,`template`) VALUES("app_status_code","micro_service","app_status","{\"alert_group\":\"{{terminus_key}}-{{metric_id}}\",\"display_url_id\":\"micro_status_detail\",\"level\":\"ERROR\",\"recover\":\"true\",\"tickets_metric_key\":\"{{metric_id}}\"}","主动监控HTTP状态异常","{\"filters\":[{\"operator\":\"eq\",\"tag\":\"terminus_key\",\"value\":\"$terminus_key\"},{\"operator\":\"eq\",\"tag\":\"type\",\"value\":\"http\"}],\"functions\":[{\"aggregator\":\"sum\",\"field\":\"retry\"},{\"aggregator\":\"min\",\"field\":\"code\",\"operator\":\"gte\",\"value\":400}],\"group\":[\"metric\"],\"metric\":\"status_page\",\"outputs\":[\"alert\"],\"select\":{\"metric_id\":\"#metric\",\"project_id\":\"#project_id\",\"project_name\":\"#project_name\",\"status_metric_name\":\"#metric_name\",\"terminus_key\":\"#terminus_key\",\"type\":\"#type\",\"url\":\"#url\",\"workspace\":\"#env\"},\"window\":1}"); +INSERT `sp_alert_rules`(`alert_index`,`alert_scope`,`alert_type`,`attributes`,`name`,`template`) VALUES("app_transaction_http_path_error","micro_service","app_transaction","{\"alert_group\":\"{{target_terminus_key}}-{{target_runtime_id}}-{{target_service_name}}-{{http_path}}-{{http_method}}\",\"display_url_id\":\"micro_si_web\",\"level\":\"WARNING\",\"recover\":\"true\",\"tickets_metric_key\":\"{{target_application_id}}\"}","服务接口HTTP错误率异常","{\"condition\":\"and\",\"filters\":[{\"operator\":\"eq\",\"tag\":\"target_terminus_key\",\"value\":\"$terminus_key\"}],\"functions\":[{\"aggregator\":\"sum\",\"field\":\"elapsed_count\",\"operator\":\"gte\",\"value\":10},{\"aggregator\":\"sum\",\"field\":\"error_count\",\"field_script\":\"function invoke(field, tag){ if(field.http_status_code_mean \\u003c 500) { return 0; } return field.elapsed_count; }\"},{\"aggregator\":\"value\",\"field\":\"error_percent\",\"field_script\":\"function invoke(field, tag){ if(!field.elapsed_count_sum) return 0; return field.elapsed_count_sum === 0 ? 0 : (field.error_count_sum / field.elapsed_count_sum * 100);}\",\"operator\":\"gte\",\"trigger\":\"aggregated\",\"value\":50}],\"group\":[\"target_runtime_id\",\"target_service_name\",\"http_path\",\"http_method\"],\"metric\":\"application_http\",\"outputs\":[\"alert\"],\"select\":{\"application_name\":\"#target_application_name\",\"http_method\":\"#http_method\",\"http_path\":\"#http_path\",\"http_url\":\"#http_url\",\"project_id\":\"#target_project_id\",\"project_name\":\"#target_project_name\",\"runtime_id\":\"#target_runtime_id\",\"runtime_name\":\"#target_runtime_name\",\"service_name\":\"#target_service_name\",\"terminus_key\":\"#target_terminus_key\",\"workspace\":\"#target_workspace\"},\"window\":1}"); +INSERT `sp_alert_rules`(`alert_index`,`alert_scope`,`alert_type`,`attributes`,`name`,`template`) VALUES("app_transaction_http_path_rt","micro_service","app_transaction","{\"alert_group\":\"{{target_terminus_key}}-{{target_runtime_id}}-{{target_service_name}}-{{http_path}}-{{http_method}}\",\"display_url_id\":\"micro_si_web\",\"level\":\"WARNING\",\"recover\":\"true\",\"tickets_metric_key\":\"{{target_application_id}}\"}","服务接口HTTP慢事务异常","{\"condition\":\"and\",\"filters\":[{\"operator\":\"eq\",\"tag\":\"target_terminus_key\",\"value\":\"$terminus_key\"}],\"functions\":[{\"aggregator\":\"sum\",\"field\":\"elapsed\",\"field_script\":\"function invoke(field, tag){ return field.elapsed_sum / 1000000; }\"},{\"aggregator\":\"sum\",\"field\":\"elapsed_count\",\"operator\":\"gte\",\"value\":10},{\"aggregator\":\"value\",\"field\":\"elapsed_avg\",\"field_script\":\"function invoke(field, tag){ if(!field.elapsed_count_sum) return 0; return field.elapsed_count_sum === 0 ? 0 : (field.elapsed_sum / field.elapsed_count_sum);}\",\"operator\":\"gte\",\"trigger\":\"aggregated\",\"value\":3000}],\"group\":[\"target_runtime_id\",\"target_service_name\",\"http_path\",\"http_method\"],\"metric\":\"application_http\",\"outputs\":[\"alert\"],\"select\":{\"application_name\":\"#target_application_name\",\"http_method\":\"#http_method\",\"http_path\":\"#http_path\",\"http_url\":\"#http_url\",\"project_id\":\"#target_project_id\",\"project_name\":\"#target_project_name\",\"runtime_id\":\"#target_runtime_id\",\"runtime_name\":\"#target_runtime_name\",\"service_name\":\"#target_service_name\",\"terminus_key\":\"#target_terminus_key\",\"workspace\":\"#target_workspace\"},\"window\":1}"); +INSERT `sp_alert_rules`(`alert_index`,`alert_scope`,`alert_type`,`attributes`,`name`,`template`) VALUES("app_transaction_http_service_error","micro_service","app_transaction","{\"alert_group\":\"{{target_terminus_key}}-{{target_runtime_id}}-{{target_service_name}}\",\"display_url_id\":\"micro_si_web\",\"level\":\"WARNING\",\"recover\":\"true\",\"tickets_metric_key\":\"{{target_application_id}}\"}","服务HTTP错误率异常","{\"condition\":\"and\",\"filters\":[{\"operator\":\"eq\",\"tag\":\"target_terminus_key\",\"value\":\"$terminus_key\"}],\"functions\":[{\"aggregator\":\"sum\",\"field\":\"elapsed_count\"},{\"aggregator\":\"sum\",\"field\":\"error_count\",\"field_script\":\"function invoke(field, tag){ if(field.http_status_code_mean \\u003c 500) { return 0; } return field.elapsed_count; }\"},{\"aggregator\":\"value\",\"field\":\"error_percent\",\"field_script\":\"function invoke(field, tag){ if(!field.elapsed_count_sum) return 0; return field.elapsed_count_sum === 0 ? 0 : (field.error_count_sum / field.elapsed_count_sum * 100);}\",\"operator\":\"gte\",\"trigger\":\"aggregated\",\"value\":30}],\"group\":[\"target_runtime_id\",\"target_service_name\"],\"metric\":\"application_http\",\"outputs\":[\"alert\"],\"select\":{\"application_name\":\"#target_application_name\",\"project_id\":\"#target_project_id\",\"project_name\":\"#target_project_name\",\"runtime_id\":\"#target_runtime_id\",\"runtime_name\":\"#target_runtime_name\",\"service_name\":\"#target_service_name\",\"terminus_key\":\"#target_terminus_key\",\"workspace\":\"#target_workspace\"},\"window\":1}"); +INSERT `sp_alert_rules`(`alert_index`,`alert_scope`,`alert_type`,`attributes`,`name`,`template`) VALUES("app_transaction_http_service_rt","micro_service","app_transaction","{\"alert_group\":\"{{target_terminus_key}}-{{target_runtime_id}}-{{target_service_name}}\",\"display_url_id\":\"micro_si_web\",\"level\":\"WARNING\",\"recover\":\"true\",\"tickets_metric_key\":\"{{target_application_id}}\"}","服务HTTP慢事务异常","{\"condition\":\"and\",\"filters\":[{\"operator\":\"eq\",\"tag\":\"target_terminus_key\",\"value\":\"$terminus_key\"}],\"functions\":[{\"aggregator\":\"sum\",\"field\":\"elapsed\",\"field_script\":\"function invoke(field, tag){ return field.elapsed_sum / 1000000; }\"},{\"aggregator\":\"sum\",\"field\":\"elapsed_count\"},{\"aggregator\":\"value\",\"field\":\"elapsed_avg\",\"field_script\":\"function invoke(field, tag){ if(!field.elapsed_count_sum) return 0; return field.elapsed_count_sum === 0 ? 0 : (field.elapsed_sum / field.elapsed_count_sum);}\",\"operator\":\"gte\",\"trigger\":\"aggregated\",\"value\":1000}],\"group\":[\"target_runtime_id\",\"target_service_name\"],\"metric\":\"application_http\",\"outputs\":[\"alert\"],\"select\":{\"application_name\":\"#target_application_name\",\"project_id\":\"#target_project_id\",\"project_name\":\"#target_project_name\",\"runtime_id\":\"#target_runtime_id\",\"runtime_name\":\"#target_runtime_name\",\"service_name\":\"#target_service_name\",\"terminus_key\":\"#target_terminus_key\",\"workspace\":\"#target_workspace\"},\"window\":1}"); +INSERT `sp_alert_rules`(`alert_index`,`alert_scope`,`alert_type`,`attributes`,`name`,`template`) VALUES("slave_dly_alert","org","custom_addon","{\"alert_group\":\"{{cluster_name}}-{{addon_id}}\",\"level\":\"WARNING\",\"recover\":\"true\"}","MySQL SLAVE DELAY ALERT","{\"condition\":\"or\",\"filters\":[{\"operator\":\"eq\",\"tag\":\"org_name\",\"value\":\"$org_name\"},{\"operator\":\"eq\",\"tag\":\"is_slave\",\"value\":\"true\"}],\"functions\":[{\"aggregator\":\"values\",\"field\":\"slave_slave_sql_running_state\",\"field_script\":\"function invoke(fields,tags){if (fields.slave_slave_sql_running_state == 'Slave has read all relay log; waiting for more updates') {return 'no delay'} return 'delay';}\",\"operator\":\"all\",\"value\":\"delay\"},{\"aggregator\":\"max\",\"field\":\"slave_seconds_behind_master\",\"operator\":\"gt\",\"value\":1800}],\"group\":[\"addon_id\",\"server\"],\"metric\":\"mysql\",\"outputs\":[\"alert\"],\"select\":{\"addon_id\":\"#addon_id\",\"cluster_name\":\"#cluster_name\",\"org_name\":\"#org_name\",\"server_id\":\"#server\"},\"window\":30}"); +INSERT `sp_alert_rules`(`alert_index`,`alert_scope`,`alert_type`,`attributes`,`name`,`template`) VALUES("slave_sync_alert","org","custom_addon","{\"alert_group\":\"{{cluster_name}}-{{addon_id}}\",\"level\":\"WARNING\",\"recover\":\"true\"}","MySQL SLAVE SYNC ALERT","{\"filters\":[{\"operator\":\"eq\",\"tag\":\"org_name\",\"value\":\"$org_name\"},{\"operator\":\"eq\",\"tag\":\"is_slave\",\"value\":\"true\"}],\"functions\":[{\"aggregator\":\"max\",\"alias\":\"slave_slave_sync_ok_value\",\"field\":\"slave_slave_sync_ok\",\"field_script\":\"function invoke(fields,tags){if (fields.slave_slave_io_running == 0 || fields.slave_slave_sql_running == 0) {return 0} return 1}\",\"operator\":\"eq\",\"value\":0},{\"aggregator\":\"max\",\"alias\":\"slave_slave_io_running_value\",\"field\":\"slave_slave_io_running\"},{\"aggregator\":\"max\",\"alias\":\"slave_slave_sql_running_value\",\"field\":\"slave_slave_sql_running\"}],\"group\":[\"addon_id\",\"server\"],\"metric\":\"mysql\",\"outputs\":[\"alert\"],\"select\":{\"addon_id\":\"#addon_id\",\"cluster_name\":\"#cluster_name\",\"org_name\":\"#org_name\",\"server_id\":\"#server\"},\"window\":1}"); +INSERT `sp_alert_rules`(`alert_index`,`alert_scope`,`alert_type`,`attributes`,`name`,`template`) VALUES("dice_addon_cassandra_gc_count","org","dice_addon","{\"alert_group\":\"{{cluster_name}}-{{addon_id}}\",\"display_url_id\":\"org_addon\",\"level\":\"WARNING\",\"recover\":\"true\",\"tickets_metric_key\":\"{{addon_id}}\"}","平台中间件Cassandra GC次数异常","{\"filters\":[{\"operator\":\"eq\",\"tag\":\"org_name\",\"value\":\"$org_name\"},{\"operator\":\"eq\",\"tag\":\"addon_id\",\"value\":\"cassandra\"},{\"operator\":\"like\",\"tag\":\"name\",\"value\":\"Old\"}],\"functions\":[{\"aggregator\":\"min\",\"field\":\"CollectionCount_min\",\"field_script\":\"function invoke(fields,tags){return fields.CollectionCount;}\"},{\"aggregator\":\"max\",\"field\":\"CollectionCount_max\",\"field_script\":\"function invoke(fields,tags){return fields.CollectionCount;}\"},{\"aggregator\":\"value\",\"field\":\"CollectionCount_win\",\"field_script\":\"function invoke(fields,tags){return fields.CollectionCount_max-fields.CollectionCount_min;}\",\"operator\":\"gte\",\"trigger\":\"aggregated\",\"value\":10}],\"group\":[\"cluster_name\",\"node_id\"],\"metrics\":[\"addon_java_GarbageCollector\"],\"outputs\":[\"alert\"],\"select\":{\"_meta\":\"#_meta\",\"_metric_scope\":\"#_metric_scope\",\"_metric_scope_id\":\"#_metric_scope_id\",\"addon_id\":\"#addon_id\",\"addon_type\":\"#addon_type\",\"cluster_name\":\"#cluster_name\",\"node_host\":\"#jolokia_host\",\"org_name\":\"#org_name\"},\"window\":3}"); +INSERT `sp_alert_rules`(`alert_index`,`alert_scope`,`alert_type`,`attributes`,`name`,`template`) VALUES("dice_addon_cassandra_gc_time","org","dice_addon","{\"alert_group\":\"{{cluster_name}}-{{addon_id}}\",\"display_url_id\":\"org_addon\",\"level\":\"WARNING\",\"recover\":\"true\",\"tickets_metric_key\":\"{{addon_id}}\"}","平台中间件Cassandra GC耗时异常","{\"filters\":[{\"operator\":\"eq\",\"tag\":\"org_name\",\"value\":\"$org_name\"},{\"operator\":\"eq\",\"tag\":\"addon_id\",\"value\":\"cassandra\"},{\"operator\":\"like\",\"tag\":\"name\",\"value\":\"Old\"}],\"functions\":[{\"aggregator\":\"min\",\"field\":\"CollectionTime_min\",\"field_script\":\"function invoke(fields,tags){return fields.CollectionTime;}\"},{\"aggregator\":\"max\",\"field\":\"CollectionTime_max\",\"field_script\":\"function invoke(fields,tags){return fields.CollectionTime;}\"},{\"aggregator\":\"value\",\"field\":\"CollectionTime_win\",\"field_script\":\"function invoke(fields,tags){return fields.CollectionTime_max-fields.CollectionTime_min;}\",\"operator\":\"gte\",\"trigger\":\"aggregated\",\"value\":15000}],\"group\":[\"cluster_name\",\"node_id\"],\"metrics\":[\"addon_java_GarbageCollector\"],\"outputs\":[\"alert\"],\"select\":{\"_meta\":\"#_meta\",\"_metric_scope\":\"#_metric_scope\",\"_metric_scope_id\":\"#_metric_scope_id\",\"addon_id\":\"#addon_id\",\"addon_type\":\"#addon_type\",\"cluster_name\":\"#cluster_name\",\"node_host\":\"#jolokia_host\",\"org_name\":\"#org_name\"},\"window\":3}"); +INSERT `sp_alert_rules`(`alert_index`,`alert_scope`,`alert_type`,`attributes`,`name`,`template`) VALUES("dice_addon_container_cpu","org","dice_addon","{\"alert_group\":\"{{cluster_name}}-{{container_id}}\",\"level\":\"WARNING\",\"recover\":\"true\",\"tickets_metric_key\":\"{{container_id}}\"}","平台中间件实例CPU状态","{\"filters\":[{\"operator\":\"eq\",\"tag\":\"org_name\",\"value\":\"$org_name\"},{\"operator\":\"eq\",\"tag\":\"pod_namespace\",\"value\":\"default\"},{\"operator\":\"any\",\"tag\":\"addon_id\"}],\"functions\":[{\"aggregator\":\"avg\",\"field\":\"cpu_usage_percent\",\"field_script\":\"function invoke(fields,tags){return fields.cpu_limit===0?fields.cpu_usage_percent:fields.cpu_usage_percent/fields.cpu_limit}\",\"operator\":\"gte\",\"value\":95},{\"aggregator\":\"max\",\"alias\":\"cpu_limit_value\",\"field\":\"cpu_limit\"},{\"aggregator\":\"max\",\"alias\":\"cpu_allocation_value\",\"field\":\"cpu_allocation\"}],\"group\":[\"cluster_name\",\"container_id\"],\"metrics\":[\"docker_container_summary\"],\"outputs\":[\"alert\"],\"select\":{\"_meta\":\"#_meta\",\"_metric_scope\":\"#_metric_scope\",\"_metric_scope_id\":\"#_metric_scope_id\",\"addon_id\":\"#addon_id\",\"cluster_name\":\"#cluster_name\",\"container_id\":\"#container_id\",\"host_ip\":\"#host_ip\",\"org_name\":\"#org_name\",\"pod_ip\":\"#pod_ip\",\"pod_name\":\"#pod_name\",\"pod_namespace\":\"#pod_namespace\"},\"window\":2}"); +INSERT `sp_alert_rules`(`alert_index`,`alert_scope`,`alert_type`,`attributes`,`name`,`template`) VALUES("dice_addon_container_exit","org","dice_addon","{\"alert_group\":\"{{cluster_name}}-{{container_id}}\",\"display_url_id\":\"org_pod\",\"level\":\"FATAL\",\"recover\":\"true\",\"tickets_metric_key\":\"{{container_id}}\"}","平台中间件异常退出","{\"filters\":[{\"operator\":\"eq\",\"tag\":\"org_name\",\"value\":\"$org_name\"},{\"operator\":\"eq\",\"tag\":\"pod_namespace\",\"value\":\"default\"},{\"operator\":\"any\",\"tag\":\"addon_id\"}],\"functions\":[{\"aggregator\":\"max\",\"field\":\"exitcode\",\"operator\":\"gt\",\"value\":0},{\"aggregator\":\"max\",\"field\":\"oomkilled\"},{\"aggregator\":\"value\",\"field\":\"pid\"},{\"aggregator\":\"max\",\"field\":\"finished_at\",\"field_script\":\"function invoke(fields,tags){if(fields.finished_at!=null\\u0026\\u0026fields.finished_at!=undefined) return fields.finished_at/1000000;return 0}\"},{\"aggregator\":\"max\",\"field\":\"started_at\",\"field_script\":\"function invoke(fields,tags){if(fields.started_at!=null\\u0026\\u0026fields.started_at!=undefined) return fields.started_at/1000000;return 0}\"},{\"aggregator\":\"value\",\"field\":\"finished_at\",\"field_script\":\"function invoke(fields,tags){if(fields.finished_at_max\\u003e0) return fields.finished_at_max;return '-'}\",\"trigger\":\"aggregated\"},{\"aggregator\":\"value\",\"field\":\"started_at\",\"field_script\":\"function invoke(fields,tags){if(fields.started_at_max\\u003e0) return fields.started_at_max;return '-'}\",\"trigger\":\"aggregated\"},{\"aggregator\":\"value\",\"field\":\"terminated_reason\",\"field_script\":\"function invoke(fields,tags){if(fields.oomkilled) return 'Out Of Memory';return 'Error Exit Code '+fields.exitcode_max;}\",\"trigger\":\"aggregated\"}],\"group\":[\"cluster_name\",\"pod_namespace\",\"pod_name\"],\"metrics\":[\"docker_container_summary\"],\"outputs\":[\"alert\"],\"select\":{\"_meta\":\"#_meta\",\"_metric_scope\":\"#_metric_scope\",\"_metric_scope_id\":\"#_metric_scope_id\",\"addon_id\":\"#addon_id\",\"cluster_name\":\"#cluster_name\",\"container_id\":\"#container_id\",\"host_ip\":\"#host_ip\",\"org_name\":\"#org_name\",\"pod_ip\":\"#pod_ip\",\"pod_name\":\"#pod_name\",\"pod_namespace\":\"#pod_namespace\"},\"window\":1}"); +INSERT `sp_alert_rules`(`alert_index`,`alert_scope`,`alert_type`,`attributes`,`name`,`template`) VALUES("dice_addon_container_mem","org","dice_addon","{\"alert_group\":\"{{cluster_name}}-{{container_id}}\",\"level\":\"WARNING\",\"recover\":\"true\",\"tickets_metric_key\":\"{{container_id}}\"}","平台中间件实例内存状态","{\"filters\":[{\"operator\":\"eq\",\"tag\":\"org_name\",\"value\":\"$org_name\"},{\"operator\":\"eq\",\"tag\":\"pod_namespace\",\"value\":\"default\"},{\"operator\":\"any\",\"tag\":\"addon_id\"}],\"functions\":[{\"aggregator\":\"avg\",\"field\":\"mem_usage_percent\",\"operator\":\"gt\",\"value\":80},{\"aggregator\":\"max\",\"alias\":\"mem_usage_value\",\"field\":\"mem_usage\"},{\"aggregator\":\"max\",\"alias\":\"mem_limit_value\",\"field\":\"mem_limit\"},{\"aggregator\":\"max\",\"alias\":\"mem_max_value\",\"field\":\"mem_max_usage\"},{\"aggregator\":\"max\",\"alias\":\"mem_allocation_value\",\"field\":\"mem_allocation\"}],\"group\":[\"cluster_name\",\"container_id\"],\"metrics\":[\"docker_container_summary\"],\"outputs\":[\"alert\"],\"select\":{\"_meta\":\"#_meta\",\"_metric_scope\":\"#_metric_scope\",\"_metric_scope_id\":\"#_metric_scope_id\",\"addon_id\":\"#addon_id\",\"cluster_name\":\"#cluster_name\",\"container_id\":\"#container_id\",\"host_ip\":\"#host_ip\",\"org_name\":\"#org_name\",\"pod_ip\":\"#pod_ip\",\"pod_name\":\"#pod_name\",\"pod_namespace\":\"#pod_namespace\"},\"window\":2}"); +INSERT `sp_alert_rules`(`alert_index`,`alert_scope`,`alert_type`,`attributes`,`name`,`template`) VALUES("dice_addon_container_ready","org","dice_addon","{\"alert_group\":\"{{cluster_name}}-{{daemonset_name}}-{{statefulset_name}}-{{deployment_name}}\",\"level\":\"FATAL\",\"recover\":\"true\",\"tickets_metric_key\":\"{{daemonset_name}}-{{statefulset_name}}-{{deployment_name}}\"}","平台中间件实例Ready状态异常","{\"filters\":[{\"operator\":\"eq\",\"tag\":\"org_name\",\"value\":\"$org_name\"},{\"operator\":\"eq\",\"tag\":\"namespace\",\"value\":\"default\"},{\"operator\":\"any\",\"tag\":\"addon_id\"}],\"functions\":[{\"aggregator\":\"max\",\"alias\":\"not_ready_value\",\"field\":\"not_ready\",\"field_script\":\"function invoke(fields,tags){if(tags.daemonset_name){return fields.number_unavailable}else{if(tags.statefulset_name){return fields.replicas-fields.replicas_ready}else{if(tags.deployment_name){return fields.replicas_unavailable}}}return 0}\",\"operator\":\"gt\",\"value\":0},{\"aggregator\":\"max\",\"alias\":\"ready_value\",\"field\":\"ready_value\",\"field_script\":\"function invoke(fields,tags){if(tags.daemonset_name){return fields.number_available}else{if(tags.statefulset_name){return fields.replicas_ready}else{if(tags.deployment_name){return fields.replicas_available}}}return 0}\"},{\"aggregator\":\"max\",\"alias\":\"total_value\",\"field\":\"total_value\",\"field_script\":\"function invoke(fields,tags){if(tags.daemonset_name){return fields.number_unavailable+fields.number_available}else{if(tags.statefulset_name){return fields.replicas}else{if(tags.deployment_name){return fields.replicas}}}return 0}\"},{\"aggregator\":\"value\",\"alias\":\"resource_name_value\",\"field\":\"resource_name_value\",\"field_script\":\"function invoke(fields,tags){if(tags.daemonset_name){return tags.daemonset_name}else{if(tags.statefulset_name){return tags.statefulset_name}else{if(tags.deployment_name){return tags.deployment_name}}}return null};\"}],\"group\":[\"cluster_name\",\"namespace\",\"daemonset_name\",\"statefulset_name\",\"deployment_name\"],\"metrics\":[\"kubernetes_daemonset\",\"kubernetes_statefulset\",\"kubernetes_deployment\"],\"outputs\":[\"alert\"],\"select\":{\"_meta\":\"#_meta\",\"_metric_scope\":\"#_metric_scope\",\"_metric_scope_id\":\"#_metric_scope_id\",\"addon_id\":\"#addon_id\",\"cluster_name\":\"#cluster_name\",\"daemonset_name\":\"#daemonset_name\",\"deployment_name\":\"#deployment_name\",\"namespace\":\"#namespace\",\"org_name\":\"#org_name\",\"statefulset_name\":\"#statefulset_name\"},\"window\":1}"); +INSERT `sp_alert_rules`(`alert_index`,`alert_scope`,`alert_type`,`attributes`,`name`,`template`) VALUES("dice_addon_elasticsearch_gc_count","org","dice_addon","{\"alert_group\":\"{{cluster_name}}-{{addon_id}}\",\"display_url_id\":\"org_addon\",\"level\":\"WARNING\",\"recover\":\"true\",\"tickets_metric_key\":\"{{addon_id}}\"}","平台中间件Elasticsearch GC次数异常","{\"filters\":[{\"operator\":\"eq\",\"tag\":\"org_name\",\"value\":\"$org_name\"},{\"operator\":\"eq\",\"tag\":\"addon_id\",\"value\":\"elasticsearch\"}],\"functions\":[{\"aggregator\":\"min\",\"field\":\"gc_collectors_old_collection_count\"},{\"aggregator\":\"max\",\"field\":\"gc_collectors_old_collection_count\"},{\"aggregator\":\"value\",\"field\":\"gc_collectors_old_collection_count_win\",\"field_script\":\"function invoke(fields,tags){return fields.gc_collectors_old_collection_count_max-fields.gc_collectors_old_collection_count_min;}\",\"operator\":\"gte\",\"trigger\":\"aggregated\",\"value\":10}],\"group\":[\"cluster_name\",\"node_id\"],\"metrics\":[\"elasticsearch_jvm\"],\"outputs\":[\"alert\"],\"select\":{\"_meta\":\"#_meta\",\"_metric_scope\":\"#_metric_scope\",\"_metric_scope_id\":\"#_metric_scope_id\",\"addon_id\":\"#addon_id\",\"addon_type\":\"#addon_type\",\"cluster_name\":\"#cluster_name\",\"node_host\":\"#node_host\",\"node_id\":\"#node_id\",\"node_name\":\"#node_name\",\"org_name\":\"#org_name\"},\"window\":3}"); +INSERT `sp_alert_rules`(`alert_index`,`alert_scope`,`alert_type`,`attributes`,`name`,`template`) VALUES("dice_addon_elasticsearch_gc_time","org","dice_addon","{\"alert_group\":\"{{cluster_name}}-{{addon_id}}\",\"display_url_id\":\"org_addon\",\"level\":\"WARNING\",\"recover\":\"true\",\"tickets_metric_key\":\"{{addon_id}}\"}","平台中间件Elasticsearch GC耗时异常","{\"filters\":[{\"operator\":\"eq\",\"tag\":\"org_name\",\"value\":\"$org_name\"},{\"operator\":\"eq\",\"tag\":\"addon_id\",\"value\":\"elasticsearch\"}],\"functions\":[{\"aggregator\":\"min\",\"field\":\"gc_collectors_old_collection_time_in_millis\"},{\"aggregator\":\"max\",\"field\":\"gc_collectors_old_collection_time_in_millis\"},{\"aggregator\":\"value\",\"field\":\"gc_collectors_old_collection_time_in_millis_win\",\"field_script\":\"function invoke(fields,tags){return fields.gc_collectors_old_collection_time_in_millis_max-fields.gc_collectors_old_collection_time_in_millis_min;}\",\"operator\":\"gte\",\"trigger\":\"aggregated\",\"value\":15000}],\"group\":[\"cluster_name\",\"node_id\"],\"metrics\":[\"elasticsearch_jvm\"],\"outputs\":[\"alert\"],\"select\":{\"_meta\":\"#_meta\",\"_metric_scope\":\"#_metric_scope\",\"_metric_scope_id\":\"#_metric_scope_id\",\"addon_id\":\"#addon_id\",\"addon_type\":\"#addon_type\",\"cluster_name\":\"#cluster_name\",\"node_host\":\"#node_host\",\"node_id\":\"#node_id\",\"node_name\":\"#node_name\",\"org_name\":\"#org_name\"},\"window\":3}"); +INSERT `sp_alert_rules`(`alert_index`,`alert_scope`,`alert_type`,`attributes`,`name`,`template`) VALUES("dice_addon_kafka_gc_count","org","dice_addon","{\"alert_group\":\"{{cluster_name}}-{{addon_id}}\",\"display_url_id\":\"org_addon\",\"level\":\"WARNING\",\"recover\":\"true\",\"tickets_metric_key\":\"{{addon_id}}\"}","平台中间件Kafka GC次数异常","{\"filters\":[{\"operator\":\"eq\",\"tag\":\"org_name\",\"value\":\"$org_name\"},{\"operator\":\"eq\",\"tag\":\"addon_id\",\"value\":\"kafka\"},{\"operator\":\"like\",\"tag\":\"name\",\"value\":\"Old\"}],\"functions\":[{\"aggregator\":\"min\",\"field\":\"CollectionCount\"},{\"aggregator\":\"max\",\"field\":\"CollectionCount\"},{\"aggregator\":\"value\",\"field\":\"CollectionCount_win\",\"field_script\":\"function invoke(fields,tags){return fields.CollectionCount_max-fields.CollectionCount_min;}\",\"operator\":\"gte\",\"trigger\":\"aggregated\",\"value\":10}],\"group\":[\"cluster_name\",\"node_id\"],\"metrics\":[\"addon_java_GarbageCollector\"],\"outputs\":[\"alert\"],\"select\":{\"_meta\":\"#_meta\",\"_metric_scope\":\"#_metric_scope\",\"_metric_scope_id\":\"#_metric_scope_id\",\"addon_id\":\"#addon_id\",\"addon_type\":\"#addon_type\",\"cluster_name\":\"#cluster_name\",\"node_host\":\"#jolokia_host\",\"org_name\":\"#org_name\"},\"window\":3}"); +INSERT `sp_alert_rules`(`alert_index`,`alert_scope`,`alert_type`,`attributes`,`name`,`template`) VALUES("dice_addon_kafka_gc_time","org","dice_addon","{\"alert_group\":\"{{cluster_name}}-{{addon_id}}\",\"display_url_id\":\"org_addon\",\"level\":\"WARNING\",\"recover\":\"true\",\"tickets_metric_key\":\"{{addon_id}}\"}","平台中间件Kafka GC耗时异常","{\"filters\":[{\"operator\":\"eq\",\"tag\":\"org_name\",\"value\":\"$org_name\"},{\"operator\":\"eq\",\"tag\":\"addon_id\",\"value\":\"kafka\"},{\"operator\":\"like\",\"tag\":\"name\",\"value\":\"Old\"}],\"functions\":[{\"aggregator\":\"min\",\"field\":\"CollectionTime\"},{\"aggregator\":\"max\",\"field\":\"CollectionTime\"},{\"aggregator\":\"value\",\"field\":\"CollectionTime_win\",\"field_script\":\"function invoke(fields,tags){return fields.CollectionTime_max-fields.CollectionTime_min;}\",\"operator\":\"gte\",\"trigger\":\"aggregated\",\"value\":15000}],\"group\":[\"cluster_name\",\"node_id\"],\"metrics\":[\"addon_java_GarbageCollector\"],\"outputs\":[\"alert\"],\"select\":{\"_meta\":\"#_meta\",\"_metric_scope\":\"#_metric_scope\",\"_metric_scope_id\":\"#_metric_scope_id\",\"addon_id\":\"#addon_id\",\"addon_type\":\"#addon_type\",\"cluster_name\":\"#cluster_name\",\"node_host\":\"#jolokia_host\",\"org_name\":\"#org_name\"},\"window\":3}"); +INSERT `sp_alert_rules`(`alert_index`,`alert_scope`,`alert_type`,`attributes`,`name`,`template`) VALUES("dice_addon_kafka_lag","org","dice_addon","{\"alert_group\":\"{{cluster_name}}-{{group}}-{{topic}}\",\"display_url_id\":\"org_addon\",\"level\":\"WARNING\",\"recover\":\"true\",\"tickets_metric_key\":\"{{group}}-{{topic}}\"}","平台中间件kafka消费堆积","{\"filters\":[{\"operator\":\"eq\",\"tag\":\"org_name\",\"value\":\"$org_name\"},{\"operator\":\"eq\",\"tag\":\"addon_id\",\"value\":\"kafka\"}],\"functions\":[{\"aggregator\":\"avg\",\"field\":\"lag\",\"operator\":\"gte\",\"value\":100000},{\"aggregator\":\"avg\",\"field\":\"consume_rate_per_sec\"},{\"aggregator\":\"avg\",\"field\":\"produce_rate_per_sec\"}],\"group\":[\"cluster_name\",\"addon_id\",\"group\",\"topic\"],\"metrics\":[\"kafka_consumer\"],\"outputs\":[\"alert\"],\"select\":{\"_meta\":\"#_meta\",\"_metric_scope\":\"#_metric_scope\",\"_metric_scope_id\":\"#_metric_scope_id\",\"addon_id\":\"#addon_id\",\"addon_type\":\"#addon_type\",\"cluster_name\":\"#cluster_name\",\"group\":\"#group\",\"org_name\":\"#org_name\",\"topic\":\"#topic\"},\"window\":3}"); +INSERT `sp_alert_rules`(`alert_index`,`alert_scope`,`alert_type`,`attributes`,`name`,`template`) VALUES("dice_component_container_cpu","org","dice_component","{\"alert_group\":\"{{cluster_name}}-{{container_id}}\",\"level\":\"WARNING\",\"recover\":\"true\",\"tickets_metric_key\":\"{{container_id}}\"}","平台组件实例CPU状态","{\"filters\":[{\"operator\":\"eq\",\"tag\":\"org_name\",\"value\":\"$org_name\"},{\"operator\":\"eq\",\"tag\":\"pod_namespace\",\"value\":\"default\"},{\"operator\":\"any\",\"tag\":\"component_name\"}],\"functions\":[{\"aggregator\":\"avg\",\"field\":\"cpu_usage_percent\",\"field_script\":\"function invoke(fields,tags){return fields.cpu_limit===0?fields.cpu_usage_percent:fields.cpu_usage_percent/fields.cpu_limit}\",\"operator\":\"gte\",\"value\":95},{\"aggregator\":\"max\",\"alias\":\"cpu_limit_value\",\"field\":\"cpu_limit\"},{\"aggregator\":\"max\",\"alias\":\"cpu_allocation_value\",\"field\":\"cpu_allocation\"}],\"group\":[\"cluster_name\",\"container_id\"],\"metrics\":[\"docker_container_summary\"],\"outputs\":[\"alert\"],\"select\":{\"_meta\":\"#_meta\",\"_metric_scope\":\"#_metric_scope\",\"_metric_scope_id\":\"#_metric_scope_id\",\"cluster_name\":\"#cluster_name\",\"component_name\":\"#component_name\",\"container_id\":\"#container_id\",\"host_ip\":\"#host_ip\",\"org_name\":\"#org_name\",\"pod_ip\":\"#pod_ip\",\"pod_name\":\"#pod_name\",\"pod_namespace\":\"#pod_namespace\"},\"window\":2}"); +INSERT `sp_alert_rules`(`alert_index`,`alert_scope`,`alert_type`,`attributes`,`name`,`template`) VALUES("dice_component_container_exit","org","dice_component","{\"alert_group\":\"{{cluster_name}}-{{container_id}}\",\"display_url_id\":\"org_pod\",\"level\":\"WARNING\",\"recover\":\"true\",\"tickets_metric_key\":\"{{container_id}}\"}","平台组件异常退出","{\"filters\":[{\"operator\":\"eq\",\"tag\":\"org_name\",\"value\":\"$org_name\"},{\"operator\":\"eq\",\"tag\":\"pod_namespace\",\"value\":\"default\"},{\"operator\":\"any\",\"tag\":\"component_name\"}],\"functions\":[{\"aggregator\":\"max\",\"field\":\"exitcode\",\"operator\":\"gt\",\"value\":0},{\"aggregator\":\"max\",\"field\":\"oomkilled\"},{\"aggregator\":\"value\",\"field\":\"pid\"},{\"aggregator\":\"max\",\"field\":\"finished_at\",\"field_script\":\"function invoke(fields,tags){if(fields.finished_at!=null\\u0026\\u0026fields.finished_at!=undefined) return fields.finished_at/1000000;return 0}\"},{\"aggregator\":\"max\",\"field\":\"started_at\",\"field_script\":\"function invoke(fields,tags){if(fields.started_at!=null\\u0026\\u0026fields.started_at!=undefined) return fields.started_at/1000000;return 0}\"},{\"aggregator\":\"value\",\"field\":\"finished_at\",\"field_script\":\"function invoke(fields,tags){if(fields.finished_at_max\\u003e0) return fields.finished_at_max;return '-'}\",\"trigger\":\"aggregated\"},{\"aggregator\":\"value\",\"field\":\"started_at\",\"field_script\":\"function invoke(fields,tags){if(fields.started_at_max\\u003e0) return fields.started_at_max;return '-'}\",\"trigger\":\"aggregated\"},{\"aggregator\":\"value\",\"field\":\"terminated_reason\",\"field_script\":\"function invoke(fields,tags){if(fields.oomkilled) return 'Out Of Memory';return 'Error Exit Code '+fields.exitcode_max;}\",\"trigger\":\"aggregated\"}],\"group\":[\"cluster_name\",\"container_id\"],\"metrics\":[\"docker_container_summary\"],\"outputs\":[\"alert\"],\"select\":{\"_meta\":\"#_meta\",\"_metric_scope\":\"#_metric_scope\",\"_metric_scope_id\":\"#_metric_scope_id\",\"cluster_name\":\"#cluster_name\",\"component_name\":\"#component_name\",\"container_id\":\"#container_id\",\"host_ip\":\"#host_ip\",\"org_name\":\"#org_name\",\"pod_ip\":\"#pod_ip\",\"pod_name\":\"#pod_name\",\"pod_namespace\":\"#pod_namespace\"},\"window\":1}"); +INSERT `sp_alert_rules`(`alert_index`,`alert_scope`,`alert_type`,`attributes`,`name`,`template`) VALUES("dice_component_container_mem","org","dice_component","{\"alert_group\":\"{{cluster_name}}-{{container_id}}\",\"level\":\"WARNING\",\"recover\":\"false\",\"tickets_metric_key\":\"{{container_id}}\"}","平台组件实例内存状态","{\"filters\":[{\"operator\":\"eq\",\"tag\":\"org_name\",\"value\":\"$org_name\"},{\"operator\":\"eq\",\"tag\":\"pod_namespace\",\"value\":\"default\"},{\"operator\":\"any\",\"tag\":\"component_name\"}],\"functions\":[{\"aggregator\":\"avg\",\"field\":\"mem_usage_percent\",\"operator\":\"gt\",\"value\":70},{\"aggregator\":\"max\",\"alias\":\"mem_usage_value\",\"field\":\"mem_usage\"},{\"aggregator\":\"max\",\"alias\":\"mem_limit_value\",\"field\":\"mem_limit\"},{\"aggregator\":\"max\",\"alias\":\"mem_max_usage_value\",\"field\":\"mem_max_usage\"},{\"aggregator\":\"max\",\"alias\":\"mem_allocation_value\",\"field\":\"mem_allocation\"}],\"group\":[\"cluster_name\",\"container_id\"],\"metrics\":[\"docker_container_summary\"],\"outputs\":[\"alert\"],\"select\":{\"_meta\":\"#_meta\",\"_metric_scope\":\"#_metric_scope\",\"_metric_scope_id\":\"#_metric_scope_id\",\"cluster_name\":\"#cluster_name\",\"component_name\":\"#component_name\",\"container_id\":\"#container_id\",\"host_ip\":\"#host_ip\",\"org_name\":\"#org_name\",\"pod_ip\":\"#pod_ip\",\"pod_name\":\"#pod_name\",\"pod_namespace\":\"#pod_namespace\"},\"window\":2}"); +INSERT `sp_alert_rules`(`alert_index`,`alert_scope`,`alert_type`,`attributes`,`name`,`template`) VALUES("dice_component_container_ready","org","dice_component","{\"alert_group\":\"{{cluster_name}}-{{daemonset_name}}-{{statefulset_name}}-{{deployment_name}}\",\"level\":\"WARNING\",\"recover\":\"true\",\"tickets_metric_key\":\"{{daemonset_name}}-{{statefulset_name}}-{{deployment_name}}\"}","平台组件实例Ready状态异常","{\"filters\":[{\"operator\":\"eq\",\"tag\":\"org_name\",\"value\":\"$org_name\"},{\"operator\":\"eq\",\"tag\":\"namespace\",\"value\":\"default\"},{\"operator\":\"any\",\"tag\":\"component_name\"}],\"functions\":[{\"aggregator\":\"max\",\"alias\":\"not_ready_value\",\"field\":\"not_ready\",\"field_script\":\"function invoke(fields,tags){if(tags.daemonset_name){return fields.number_unavailable}else{if(tags.statefulset_name){return fields.replicas-fields.replicas_ready}else{if(tags.deployment_name){return fields.replicas_unavailable}}}return 0}\",\"operator\":\"gt\",\"value\":0},{\"aggregator\":\"max\",\"alias\":\"ready_value\",\"field\":\"ready_value\",\"field_script\":\"function invoke(fields,tags){if(tags.daemonset_name){return fields.number_available}else{if(tags.statefulset_name){return fields.replicas_ready}else{if(tags.deployment_name){return fields.replicas_available}}}return 0}\"},{\"aggregator\":\"max\",\"alias\":\"total_value\",\"field\":\"total_value\",\"field_script\":\"function invoke(fields,tags){if(tags.daemonset_name){return fields.number_unavailable+fields.number_available}else{if(tags.statefulset_name){return fields.replicas}else{if(tags.deployment_name){return fields.replicas}}}return 0}\"},{\"aggregator\":\"value\",\"alias\":\"resource_name_value\",\"field\":\"resource_name_value\",\"field_script\":\"function invoke(fields,tags){if(tags.daemonset_name){return tags.daemonset_name}else{if(tags.statefulset_name){return tags.statefulset_name}else{if(tags.deployment_name){return tags.deployment_name}}}return null};\"}],\"group\":[\"cluster_name\",\"namespace\",\"daemonset_name\",\"statefulset_name\",\"deployment_name\"],\"metrics\":[\"kubernetes_daemonset\",\"kubernetes_statefulset\",\"kubernetes_deployment\"],\"outputs\":[\"alert\"],\"select\":{\"_meta\":\"#_meta\",\"_metric_scope\":\"#_metric_scope\",\"_metric_scope_id\":\"#_metric_scope_id\",\"cluster_name\":\"#cluster_name\",\"component_name\":\"#component_name\",\"daemonset_name\":\"#daemonset_name\",\"deployment_name\":\"#deployment_name\",\"namespace\":\"#namespace\",\"org_name\":\"#org_name\",\"statefulset_name\":\"#statefulset_name\"},\"window\":3}"); +INSERT `sp_alert_rules`(`alert_index`,`alert_scope`,`alert_type`,`attributes`,`name`,`template`) VALUES("dice_component_flink_checkpoint_duration","org","dice_component","{\"alert_group\":\"{{cluster_name}}-{{container_id}}-{{job_id}}\",\"level\":\"WARNING\",\"recover\":\"true\",\"tickets_metric_key\":\"{{container_id}}-{{job_id}}\"}","平台组件Flink任务checkpoint延迟异常告警","{\"filters\":[{\"operator\":\"eq\",\"tag\":\"org_name\",\"value\":\"$org_name\"}],\"functions\":[{\"aggregator\":\"max\",\"alias\":\"lastCheckpointDuration_value\",\"field\":\"lastCheckpointDuration\",\"operator\":\"gte\",\"value\":3000}],\"group\":[\"cluster_name\",\"container_id\",\"job_id\"],\"metric\":\"flink_jm_job\",\"outputs\":[\"alert\"],\"select\":{\"cluster_name\":\"#cluster_name\",\"host_ip\":\"#host_ip\",\"job_id\":\"#job_id\",\"org_name\":\"#org_name\"},\"window\":1}"); +INSERT `sp_alert_rules`(`alert_index`,`alert_scope`,`alert_type`,`attributes`,`name`,`template`) VALUES("dice_component_flink_throughput","org","dice_component","{\"alert_group\":\"{{cluster_name}}-{{container_id}}-{{job_id}}\",\"level\":\"WARNING\",\"recover\":\"true\",\"tickets_metric_key\":\"{{container_id}}-{{job_id}}\"}","平台组件Flink吞吐量异常告警","{\"filters\":[{\"operator\":\"eq\",\"tag\":\"org_name\",\"value\":\"$org_name\"}],\"functions\":[{\"aggregator\":\"max\",\"alias\":\"numRecordsOutPerSecond_count_value\",\"field\":\"numRecordsOutPerSecond_count\",\"operator\":\"eq\",\"value\":0}],\"group\":[\"cluster_name\",\"container_id\",\"job_id\",\"task_id\",\"subtask_index\",\"operator_id\"],\"metric\":\"flink_tm_operator\",\"outputs\":[\"alert\"],\"select\":{\"cluster_name\":\"#cluster_name\",\"host_ip\":\"#host_ip\",\"job_id\":\"#job_id\",\"operator_id\":\"#operator_id\",\"org_name\":\"#org_name\",\"subtask_index\":\"#subtask_index\",\"tm_id\":\"#tm_id\"},\"window\":1}"); +INSERT `sp_alert_rules`(`alert_index`,`alert_scope`,`alert_type`,`attributes`,`name`,`template`) VALUES("dice_component_gfs_status","org","dice_component","{\"alert_group\":\"{{cluster_name}}\",\"level\":\"FATAL\",\"recover\":\"true\",\"tickets_metric_key\":\"{{cluster_name}}\"}","平台组件网盘不可用告警","{\"filters\":[{\"operator\":\"eq\",\"tag\":\"org_name\",\"value\":\"$org_name\"}],\"functions\":[{\"aggregator\":\"values\",\"field\":\"status\",\"operator\":\"all\",\"value\":\"Disconnected\"}],\"group\":[\"cluster_name\",\"host_ip\"],\"metric\":\"glusterfs\",\"outputs\":[\"alert\"],\"select\":{\"cluster_name\":\"#cluster_name\",\"component_name\":\"#component_name\",\"host_ip\":\"#host_ip\",\"node_uuid\":\"#node_uuid\"},\"window\":5}"); +INSERT `sp_alert_rules`(`alert_index`,`alert_scope`,`alert_type`,`attributes`,`name`,`template`) VALUES("dice_component_log_protector","org","dice_component","{\"alert_group\":\"{{cluster_name}}\",\"level\":\"INFO\",\"recover\":\"false\",\"tickets_metric_key\":\"{{cluster_name}}\"}","平台组价日志存储保护器状态变化","{\"filters\":[{\"operator\":\"eq\",\"tag\":\"org_name\",\"value\":\"$org_name\"},{\"operator\":\"eq\",\"tag\":\"field\",\"value\":\"log_store_protector_triggered\"}],\"functions\":[{\"aggregator\":\"value\",\"field\":\"triggered\",\"operator\":\"eq\",\"value\":1}],\"group\":[\"cluster_name\"],\"metric\":\"dice_monitor\",\"outputs\":[\"alert\"],\"select\":{\"cluster_name\":\"#cluster_name\",\"cur_level\":\"#cur_level\",\"org_name\":\"#org_name\",\"pre_level\":\"#pre_level\"},\"window\":1}"); +INSERT `sp_alert_rules`(`alert_index`,`alert_scope`,`alert_type`,`attributes`,`name`,`template`) VALUES("kubernetes_instance_cpu","org","kubernetes","{\"alert_group\":\"{{cluster_name}}-{{container_id}}\",\"level\":\"WARNING\",\"recover\":\"true\",\"tickets_metric_key\":\"{{container_id}}\"}","kubernetes组件实例CPU状态","{\"filters\":[{\"operator\":\"eq\",\"tag\":\"org_name\",\"value\":\"$org_name\"},{\"operator\":\"eq\",\"tag\":\"pod_namespace\",\"value\":\"kube-system\"}],\"functions\":[{\"aggregator\":\"avg\",\"field\":\"cpu_usage_percent\",\"field_script\":\"function invoke(fields,tags){return fields.cpu_limit===0?fields.cpu_usage_percent:fields.cpu_usage_percent/fields.cpu_limit}\",\"operator\":\"gte\",\"value\":95},{\"aggregator\":\"max\",\"alias\":\"cpu_limit_value\",\"field\":\"cpu_limit\"},{\"aggregator\":\"max\",\"alias\":\"cpu_allocation_value\",\"field\":\"cpu_allocation\"}],\"group\":[\"cluster_name\",\"container_id\"],\"metrics\":[\"docker_container_summary\"],\"outputs\":[\"alert\"],\"select\":{\"_meta\":\"#_meta\",\"_metric_scope\":\"#_metric_scope\",\"_metric_scope_id\":\"#_metric_scope_id\",\"cluster_name\":\"#cluster_name\",\"component_name\":\"#pod_name\",\"container_id\":\"#container_id\",\"host_ip\":\"#host_ip\",\"org_name\":\"#org_name\",\"pod_ip\":\"#pod_ip\",\"pod_name\":\"#pod_name\",\"pod_namespace\":\"#pod_namespace\"},\"window\":2}"); +INSERT `sp_alert_rules`(`alert_index`,`alert_scope`,`alert_type`,`attributes`,`name`,`template`) VALUES("kubernetes_instance_exit","org","kubernetes","{\"alert_group\":\"{{cluster_name}}-{{container_id}}\",\"display_url_id\":\"org_pod\",\"level\":\"FATAL\",\"recover\":\"true\",\"tickets_metric_key\":\"{{container_id}}\"}","kubernetes组件异常退出","{\"filters\":[{\"operator\":\"eq\",\"tag\":\"org_name\",\"value\":\"$org_name\"},{\"operator\":\"eq\",\"tag\":\"pod_namespace\",\"value\":\"kube-system\"}],\"functions\":[{\"aggregator\":\"max\",\"field\":\"exitcode\",\"operator\":\"gt\",\"value\":0},{\"aggregator\":\"max\",\"field\":\"oomkilled\"},{\"aggregator\":\"value\",\"field\":\"pid\"},{\"aggregator\":\"max\",\"field\":\"finished_at\",\"field_script\":\"function invoke(fields,tags){if(fields.finished_at!=null\\u0026\\u0026fields.finished_at!=undefined) return fields.finished_at/1000000;return 0}\"},{\"aggregator\":\"max\",\"field\":\"started_at\",\"field_script\":\"function invoke(fields,tags){if(fields.started_at!=null\\u0026\\u0026fields.started_at!=undefined) return fields.started_at/1000000;return 0}\"},{\"aggregator\":\"value\",\"field\":\"finished_at\",\"field_script\":\"function invoke(fields,tags){if(fields.finished_at_max\\u003e0) return fields.finished_at_max;return '-'}\",\"trigger\":\"aggregated\"},{\"aggregator\":\"value\",\"field\":\"started_at\",\"field_script\":\"function invoke(fields,tags){if(fields.started_at_max\\u003e0) return fields.started_at_max;return '-'}\",\"trigger\":\"aggregated\"},{\"aggregator\":\"value\",\"field\":\"terminated_reason\",\"field_script\":\"function invoke(fields,tags){if(fields.oomkilled) return 'Out Of Memory';return 'Error Exit Code '+fields.exitcode_max;}\",\"trigger\":\"aggregated\"}],\"group\":[\"cluster_name\",\"pod_namespace\",\"pod_name\"],\"metrics\":[\"docker_container_summary\"],\"outputs\":[\"alert\"],\"select\":{\"_meta\":\"#_meta\",\"_metric_scope\":\"#_metric_scope\",\"_metric_scope_id\":\"#_metric_scope_id\",\"cluster_name\":\"#cluster_name\",\"component_name\":\"#component_name\",\"container_id\":\"#container_id\",\"host_ip\":\"#host_ip\",\"org_name\":\"#org_name\",\"pod_ip\":\"#pod_ip\",\"pod_name\":\"#pod_name\",\"pod_namespace\":\"#pod_namespace\"},\"window\":1}"); +INSERT `sp_alert_rules`(`alert_index`,`alert_scope`,`alert_type`,`attributes`,`name`,`template`) VALUES("kubernetes_instance_mem","org","kubernetes","{\"alert_group\":\"{{cluster_name}}-{{container_id}}\",\"level\":\"WARNING\",\"recover\":\"true\",\"tickets_metric_key\":\"{{container_id}}\"}","kubernetes组件实例内存状态","{\"filters\":[{\"operator\":\"eq\",\"tag\":\"org_name\",\"value\":\"$org_name\"},{\"operator\":\"eq\",\"tag\":\"pod_namespace\",\"value\":\"kube-system\"}],\"functions\":[{\"aggregator\":\"avg\",\"field\":\"mem_usage_percent\",\"operator\":\"gt\",\"value\":70},{\"aggregator\":\"max\",\"alias\":\"mem_usage_value\",\"field\":\"mem_usage\"},{\"aggregator\":\"max\",\"alias\":\"mem_limit_value\",\"field\":\"mem_limit\"},{\"aggregator\":\"max\",\"alias\":\"mem_max_usage_value\",\"field\":\"mem_max_usage\"},{\"aggregator\":\"max\",\"alias\":\"mem_allocation_value\",\"field\":\"mem_allocation\"}],\"group\":[\"cluster_name\",\"container_id\"],\"metrics\":[\"docker_container_summary\"],\"outputs\":[\"alert\"],\"select\":{\"_meta\":\"#_meta\",\"_metric_scope\":\"#_metric_scope\",\"_metric_scope_id\":\"#_metric_scope_id\",\"cluster_name\":\"#cluster_name\",\"component_name\":\"#pod_name\",\"container_id\":\"#container_id\",\"host_ip\":\"#host_ip\",\"org_name\":\"#org_name\",\"pod_ip\":\"#pod_ip\",\"pod_name\":\"#pod_name\",\"pod_namespace\":\"#pod_namespace\"},\"window\":2}"); +INSERT `sp_alert_rules`(`alert_index`,`alert_scope`,`alert_type`,`attributes`,`name`,`template`) VALUES("kubernetes_instance_ready","org","kubernetes","{\"alert_group\":\"{{cluster_name}}-{{daemonset_name}}-{{statefulset_name}}-{{deployment_name}}\",\"level\":\"FATAL\",\"recover\":\"true\",\"tickets_metric_key\":\"{{daemonset_name}}-{{statefulset_name}}-{{deployment_name}}\"}","kubernetes组件实例Ready状态异常","{\"filters\":[{\"operator\":\"eq\",\"tag\":\"org_name\",\"value\":\"$org_name\"},{\"operator\":\"eq\",\"tag\":\"namespace\",\"value\":\"kube-system\"}],\"functions\":[{\"aggregator\":\"max\",\"alias\":\"not_ready_value\",\"field\":\"not_ready\",\"field_script\":\"function invoke(fields,tags){if(tags.daemonset_name){return fields.number_unavailable}else{if(tags.statefulset_name){return fields.replicas-fields.replicas_ready}else{if(tags.deployment_name){return fields.replicas_unavailable}}}return 0}\",\"operator\":\"gt\",\"value\":0},{\"aggregator\":\"max\",\"alias\":\"ready_value\",\"field\":\"ready_value\",\"field_script\":\"function invoke(fields,tags){if(tags.daemonset_name){return fields.number_available}else{if(tags.statefulset_name){return fields.replicas_ready}else{if(tags.deployment_name){return fields.replicas_available}}}return 0}\"},{\"aggregator\":\"max\",\"alias\":\"total_value\",\"field\":\"total_value\",\"field_script\":\"function invoke(fields,tags){if(tags.daemonset_name){return fields.number_unavailable+fields.number_available}else{if(tags.statefulset_name){return fields.replicas}else{if(tags.deployment_name){return fields.replicas}}}return 0}\"},{\"aggregator\":\"value\",\"alias\":\"resource_name_value\",\"field\":\"resource_name_value\",\"field_script\":\"function invoke(fields,tags){if(tags.daemonset_name){return tags.daemonset_name}else{if(tags.statefulset_name){return tags.statefulset_name}else{if(tags.deployment_name){return tags.deployment_name}}}return null};\"}],\"group\":[\"cluster_name\",\"namespace\",\"daemonset_name\",\"statefulset_name\",\"deployment_name\"],\"metrics\":[\"kubernetes_daemonset\",\"kubernetes_statefulset\",\"kubernetes_deployment\"],\"outputs\":[\"alert\"],\"select\":{\"_meta\":\"#_meta\",\"_metric_scope\":\"#_metric_scope\",\"_metric_scope_id\":\"#_metric_scope_id\",\"cluster_name\":\"#cluster_name\",\"component_name\":\"#resource_name_value\",\"daemonset_name\":\"#daemonset_name\",\"deployment_name\":\"#deployment_name\",\"namespace\":\"#namespace\",\"org_name\":\"#org_name\",\"statefulset_name\":\"#statefulset_name\"},\"window\":1}"); +INSERT `sp_alert_rules`(`alert_index`,`alert_scope`,`alert_type`,`attributes`,`name`,`template`) VALUES("kubernetes_node","org","kubernetes","{\"alert_group\":\"{{cluster_name}}-{{node_name}}\",\"level\":\"WARNING\",\"recover\":\"true\",\"tickets_metric_key\":\"{{node_name}}\"}","kubernetes节点异常","{\"filters\":[{\"operator\":\"eq\",\"tag\":\"org_name\",\"value\":\"$org_name\"},{\"operator\":\"neq\",\"tag\":\"offline\",\"value\":\"true\"}],\"functions\":[{\"aggregator\":\"values\",\"field\":\"ready\",\"operator\":\"all\",\"value\":false},{\"aggregator\":\"max\",\"alias\":\"allocatable_pods_value\",\"field\":\"allocatable_pods\"},{\"aggregator\":\"max\",\"alias\":\"capacity_pods_value\",\"field\":\"capacity_pods\"},{\"aggregator\":\"max\",\"alias\":\"allocatable_cpu_cores_value\",\"field\":\"allocatable_cpu_cores\"},{\"aggregator\":\"max\",\"alias\":\"capacity_cpu_cores_value\",\"field\":\"capacity_cpu_cores\"},{\"aggregator\":\"max\",\"alias\":\"allocatable_memory_bytes_value\",\"field\":\"allocatable_memory_bytes\"},{\"aggregator\":\"max\",\"alias\":\"capacity_memory_bytes_value\",\"field\":\"capacity_memory_bytes\"}],\"group\":[\"cluster_name\",\"node_name\"],\"metrics\":[\"kubernetes_node\"],\"outputs\":[\"alert\"],\"select\":{\"_meta\":\"#_meta\",\"_metric_scope\":\"#_metric_scope\",\"_metric_scope_id\":\"#_metric_scope_id\",\"cluster_name\":\"#cluster_name\",\"component_name\":\"#node_name\",\"node_name\":\"#node_name\",\"org_name\":\"#org_name\"},\"window\":1}"); +INSERT `sp_alert_rules`(`alert_index`,`alert_scope`,`alert_type`,`attributes`,`name`,`template`) VALUES("machine_cluster_clock","org","machine","{\"alert_group\":\"{{cluster_name}}-{{host_ip}}\",\"display_url_id\":\"machine_cluster_clock\",\"level\":\"WARNING\",\"recover\":\"true\",\"tickets_metric_key\":\"{{host_ip}}\"}","机器时钟一致性异常告警","{\"filters\":[{\"operator\":\"eq\",\"tag\":\"org_name\",\"value\":\"$org_name\"}],\"functions\":[{\"aggregator\":\"avg\",\"field\":\"elapsed_abs\",\"operator\":\"gte\",\"value\":5000},{\"aggregator\":\"avg\",\"alias\":\"send_timestamp\",\"field\":\"send_timestamp\"},{\"aggregator\":\"avg\",\"alias\":\"receive_timestamp\",\"field\":\"receive_timestamp\"}],\"group\":[\"cluster_name\",\"host_ip\"],\"metric\":\"cluster_clock\",\"outputs\":[\"alert\"],\"select\":{\"_meta\":\"#_meta\",\"_metric_scope\":\"#_metric_scope\",\"_metric_scope_id\":\"#_metric_scope_id\",\"cluster_name\":\"#cluster_name\",\"host_ip\":\"#host_ip\",\"labels\":\"#labels\",\"org_name\":\"#org_name\",\"source_host_ip\":\"#source_host_ip\"},\"window\":5}"); +INSERT `sp_alert_rules`(`alert_index`,`alert_scope`,`alert_type`,`attributes`,`name`,`template`) VALUES("machine_cpu","org","machine","{\"alert_group\":\"{{cluster_name}}-{{host_ip}}\",\"display_url_id\":\"machine_cpu\",\"level\":\"WARNING\",\"recover\":\"true\",\"tickets_metric_key\":\"{{host_ip}}\"}","机器CPU","{\"filters\":[{\"operator\":\"eq\",\"tag\":\"org_name\",\"value\":\"$org_name\"}],\"functions\":[{\"aggregator\":\"avg\",\"field\":\"cpu_usage_active\",\"operator\":\"gte\",\"value\":95}],\"group\":[\"cluster_name\",\"host_ip\"],\"metric\":\"host_summary\",\"outputs\":[\"alert\"],\"select\":{\"_meta\":\"#_meta\",\"_metric_scope\":\"#_metric_scope\",\"_metric_scope_id\":\"#_metric_scope_id\",\"cluster_name\":\"#cluster_name\",\"host_ip\":\"#host_ip\",\"labels\":\"#labels\",\"org_name\":\"#org_name\"},\"window\":5}"); +INSERT `sp_alert_rules`(`alert_index`,`alert_scope`,`alert_type`,`attributes`,`name`,`template`) VALUES("machine_disk","org","machine","{\"alert_group\":\"{{cluster_name}}-{{host_ip}}-{{device}}\",\"display_url_id\":\"machine_disk\",\"level\":\"WARNING\",\"recover\":\"true\",\"tickets_metric_key\":\"{{host_ip}}\"}","机器磁盘","{\"filters\":[{\"operator\":\"eq\",\"tag\":\"org_name\",\"value\":\"$org_name\"},{\"operator\":\"neq\",\"tag\":\"type\",\"value\":\"netdata\"}],\"functions\":[{\"aggregator\":\"max\",\"alias\":\"used_percent_value\",\"field\":\"used_percent\",\"operator\":\"gte\",\"value\":86},{\"aggregator\":\"max\",\"alias\":\"total_value\",\"field\":\"total\"}],\"group\":[\"host_ip\",\"device\"],\"metric\":\"disk\",\"outputs\":[\"alert\"],\"select\":{\"_meta\":\"#_meta\",\"_metric_scope\":\"#_metric_scope\",\"_metric_scope_id\":\"#_metric_scope_id\",\"cluster_name\":\"#cluster_name\",\"device\":\"#device\",\"host_ip\":\"#host_ip\",\"labels\":\"#labels\",\"org_name\":\"#org_name\"},\"window\":5}"); +INSERT `sp_alert_rules`(`alert_index`,`alert_scope`,`alert_type`,`attributes`,`name`,`template`) VALUES("machine_disk_inode","org","machine","{\"alert_group\":\"{{cluster_name}}-{{host_ip}}-{{device}}\",\"display_url_id\":\"machine_disk\",\"level\":\"WARNING\",\"recover\":\"true\",\"tickets_metric_key\":\"{{host_ip}}\"}","磁盘Inode异常告警","{\"filters\":[{\"operator\":\"eq\",\"tag\":\"org_name\",\"value\":\"$org_name\"},{\"operator\":\"neq\",\"tag\":\"type\",\"value\":\"netdata\"}],\"functions\":[{\"aggregator\":\"max\",\"alias\":\"inode_used_percent_value\",\"field\":\"inode_used_percent\",\"field_script\":\"function invoke(field, tag){ return field.inodes_used/field.inodes_total*100 }\",\"operator\":\"gte\",\"value\":85},{\"aggregator\":\"max\",\"alias\":\"inodes_total_value\",\"field\":\"inodes_total\"}],\"group\":[\"host_ip\",\"device\"],\"metric\":\"disk\",\"outputs\":[\"alert\"],\"select\":{\"_meta\":\"#_meta\",\"_metric_scope\":\"#_metric_scope\",\"_metric_scope_id\":\"#_metric_scope_id\",\"cluster_name\":\"#cluster_name\",\"device\":\"#device\",\"host_ip\":\"#host_ip\",\"labels\":\"#labels\",\"org_name\":\"#org_name\"},\"window\":5}"); +INSERT `sp_alert_rules`(`alert_index`,`alert_scope`,`alert_type`,`attributes`,`name`,`template`) VALUES("machine_disk_util","org","machine","{\"alert_group\":\"{{cluster_name}}-{{host_ip}}\",\"display_url_id\":\"machine_disk_io\",\"level\":\"WARNING\",\"recover\":\"true\",\"tickets_metric_key\":\"{{host_ip}}\"}","机器磁盘IO","{\"filters\":[{\"operator\":\"eq\",\"tag\":\"org_name\",\"value\":\"$org_name\"},{\"operator\":\"eq\",\"tag\":\"path\",\"value\":null}],\"functions\":[{\"aggregator\":\"p75\",\"field\":\"pct_util\",\"operator\":\"gte\",\"value\":95}],\"group\":[\"host_ip\"],\"metric\":\"disk\",\"outputs\":[\"alert\"],\"select\":{\"_meta\":\"#_meta\",\"_metric_scope\":\"#_metric_scope\",\"_metric_scope_id\":\"#_metric_scope_id\",\"cluster_name\":\"#cluster_name\",\"host_ip\":\"#host_ip\",\"labels\":\"#labels\",\"org_name\":\"#org_name\"},\"window\":5}"); +INSERT `sp_alert_rules`(`alert_index`,`alert_scope`,`alert_type`,`attributes`,`name`,`template`) VALUES("machine_load5","org","machine","{\"alert_group\":\"{{cluster_name}}-{{host_ip}}\",\"display_url_id\":\"machine_load\",\"level\":\"WARNING\",\"recover\":\"true\",\"tickets_metric_key\":\"{{host_ip}}\"}","机器Load5","{\"filters\":[{\"operator\":\"eq\",\"tag\":\"org_name\",\"value\":\"$org_name\"}],\"functions\":[{\"aggregator\":\"avg\",\"field\":\"load5\",\"operator\":\"gte\",\"value\":20}],\"group\":[\"host_ip\"],\"metric\":\"host_summary\",\"outputs\":[\"alert\"],\"select\":{\"_meta\":\"#_meta\",\"_metric_scope\":\"#_metric_scope\",\"_metric_scope_id\":\"#_metric_scope_id\",\"cluster_name\":\"#cluster_name\",\"host_ip\":\"#host_ip\",\"labels\":\"#labels\",\"org_name\":\"#org_name\"},\"window\":5}"); +INSERT `sp_alert_rules`(`alert_index`,`alert_scope`,`alert_type`,`attributes`,`name`,`template`) VALUES("machine_netdisk","org","machine","{\"alert_group\":\"{{cluster_name}}\",\"level\":\"WARNING\",\"recover\":\"true\",\"tickets_metric_key\":\"{{cluster_name}}\"}","网盘","{\"filters\":[{\"operator\":\"eq\",\"tag\":\"org_name\",\"value\":\"$org_name\"},{\"operator\":\"eq\",\"tag\":\"type\",\"value\":\"netdata\"}],\"functions\":[{\"aggregator\":\"max\",\"alias\":\"used_percent_value\",\"field\":\"used_percent\",\"operator\":\"gte\",\"value\":75},{\"aggregator\":\"max\",\"alias\":\"total_value\",\"field\":\"total\"}],\"group\":null,\"metric\":\"disk\",\"outputs\":[\"alert\"],\"select\":{\"_meta\":\"#_meta\",\"_metric_scope\":\"#_metric_scope\",\"_metric_scope_id\":\"#_metric_scope_id\",\"cluster_name\":\"#cluster_name\",\"labels\":\"#labels\",\"org_name\":\"#org_name\"},\"window\":5}"); +INSERT `sp_alert_rules`(`alert_index`,`alert_scope`,`alert_type`,`attributes`,`name`,`template`) VALUES("machine_netdisk_used","org","machine","{\"alert_group\":\"{{cluster_name}}\",\"level\":\"WARNING\",\"recover\":\"true\",\"tickets_metric_key\":\"{{cluster_name}}\"}","网盘容量使用量异常告警","{\"filters\":[{\"operator\":\"eq\",\"tag\":\"org_name\",\"value\":\"$org_name\"},{\"operator\":\"eq\",\"tag\":\"type\",\"value\":\"netdata\"}],\"functions\":[{\"aggregator\":\"max\",\"alias\":\"used\",\"field\":\"used\",\"field_script\":\"function invoke(field, tag){ return field.used/1024/1024/1024 }\",\"operator\":\"gte\",\"value\":300},{\"aggregator\":\"max\",\"alias\":\"total\",\"field_script\":\"function invoke(field, tag){ return field.total/1024/1024/1024 }\"}],\"group\":null,\"metric\":\"disk\",\"outputs\":[\"alert\"],\"select\":{\"_meta\":\"#_meta\",\"_metric_scope\":\"#_metric_scope\",\"_metric_scope_id\":\"#_metric_scope_id\",\"cluster_name\":\"#cluster_name\",\"labels\":\"#labels\",\"org_name\":\"#org_name\"},\"window\":5}"); +INSERT `sp_alert_rules`(`alert_index`,`alert_scope`,`alert_type`,`attributes`,`name`,`template`) VALUES("machine_status","org","machine","{\"alert_group\":\"{{cluster_name}}-{{host_ip}}\",\"display_url_id\":\"machine_crash\",\"level\":\"FATAL\",\"recover\":\"true\",\"tickets_metric_key\":\"{{host_ip}}\"}","机器宕机","{\"filters\":[{\"operator\":\"eq\",\"tag\":\"org_name\",\"value\":\"$org_name\"}],\"functions\":[{\"aggregator\":\"values\",\"field\":\"status\",\"operator\":\"all\",\"value\":\"not_ready\"},{\"aggregator\":\"max\",\"alias\":\"last_timestamp_value\",\"field\":\"last_timestamp\"}],\"group\":[\"host_ip\"],\"metric\":\"machine_status\",\"outputs\":[\"alert\"],\"select\":{\"_meta\":\"#_meta\",\"_metric_scope\":\"#_metric_scope\",\"_metric_scope_id\":\"#_metric_scope_id\",\"cluster_name\":\"#cluster_name\",\"host_ip\":\"#host_ip\",\"labels\":\"#labels\",\"org_name\":\"#org_name\"},\"window\":5}"); +INSERT `sp_alert_rules`(`alert_index`,`alert_scope`,`alert_type`,`attributes`,`name`,`template`) VALUES("api_gateway_cpu","org","micro_service","{\"alert_group\":\"{{cluster_name}}-{{container_id}}\",\"level\":\"WARNING\",\"recover\":\"false\",\"tickets_metric_key\":\"{{container_id}}\"}","API网关实例CPU使用率异常","{\"filters\":[{\"operator\":\"eq\",\"tag\":\"org_name\",\"value\":\"$org_name\"},{\"operator\":\"in\",\"tag\":\"addon_type\",\"value\":[\"api-gateway\",\"postgresql\"]}],\"functions\":[{\"aggregator\":\"avg\",\"field\":\"cpu_usage_percent\",\"field_script\":\"function invoke(fields,tags){return fields.cpu_limit===0?fields.cpu_usage_percent:fields.cpu_usage_percent/fields.cpu_limit}\",\"operator\":\"gte\",\"value\":90},{\"aggregator\":\"max\",\"alias\":\"cpu_limit_value\",\"field\":\"cpu_limit\"},{\"aggregator\":\"max\",\"alias\":\"cpu_allocation_value\",\"field\":\"cpu_allocation\"}],\"group\":[\"container_id\"],\"metric\":\"docker_container_summary\",\"outputs\":[\"alert\"],\"select\":{\"addon_id\":\"#addon_id\",\"addon_type\":\"#addon_type\",\"cluster_name\":\"#cluster_name\",\"container_id\":\"#container_id\",\"host_ip\":\"#host_ip\",\"org_name\":\"#org_name\",\"pod_ip\":\"#pod_ip\",\"pod_name\":\"#pod_name\",\"pod_namespace\":\"#pod_namespace\"},\"window\":1}"); +INSERT `sp_alert_rules`(`alert_index`,`alert_scope`,`alert_type`,`attributes`,`name`,`template`) VALUES("api_gateway_mem","org","micro_service","{\"alert_group\":\"{{cluster_name}}-{{container_id}}\",\"level\":\"WARNING\",\"recover\":\"true\",\"tickets_metric_key\":\"{{container_id}}\"}","API网关实例内存使用率异常","{\"filters\":[{\"operator\":\"eq\",\"tag\":\"org_name\",\"value\":\"$org_name\"},{\"operator\":\"in\",\"tag\":\"addon_type\",\"value\":[\"api-gateway\",\"postgresql\"]}],\"functions\":[{\"aggregator\":\"avg\",\"field\":\"mem_usage_percent\",\"operator\":\"gte\",\"value\":90},{\"aggregator\":\"max\",\"alias\":\"mem_usage_value\",\"field\":\"mem_usage\"},{\"aggregator\":\"max\",\"alias\":\"mem_limit_value\",\"field\":\"mem_limit\"},{\"aggregator\":\"max\",\"alias\":\"mem_max_usage_value\",\"field\":\"mem_max_usage\"}],\"group\":[\"container_id\"],\"metric\":\"docker_container_summary\",\"outputs\":[\"alert\"],\"select\":{\"addon_id\":\"#addon_id\",\"addon_type\":\"#addon_type\",\"cluster_name\":\"#cluster_name\",\"container_id\":\"#container_id\",\"host_ip\":\"#host_ip\",\"org_name\":\"#org_name\",\"pod_ip\":\"#pod_ip\",\"pod_name\":\"#pod_name\",\"pod_namespace\":\"#pod_namespace\"},\"window\":1}"); +INSERT `sp_alert_rules`(`alert_index`,`alert_scope`,`alert_type`,`attributes`,`name`,`template`) VALUES("register_center_cpu","org","micro_service","{\"alert_group\":\"{{cluster_name}}-{{container_id}}\",\"level\":\"WARNING\",\"recover\":\"true\",\"tickets_metric_key\":\"{{container_id}}\"}","注册中心实例CPU使用率异常","{\"filters\":[{\"operator\":\"eq\",\"tag\":\"org_name\",\"value\":\"$org_name\"},{\"operator\":\"in\",\"tag\":\"addon_type\",\"value\":[\"nacos\",\"zkproxy\"]}],\"functions\":[{\"aggregator\":\"avg\",\"field\":\"cpu_usage_percent\",\"field_script\":\"function invoke(fields,tags){return fields.cpu_limit===0?fields.cpu_usage_percent:fields.cpu_usage_percent/fields.cpu_limit}\",\"operator\":\"gte\",\"value\":90},{\"aggregator\":\"max\",\"alias\":\"cpu_limit_value\",\"field\":\"cpu_limit\"},{\"aggregator\":\"max\",\"alias\":\"cpu_allocation_value\",\"field\":\"cpu_allocation\"}],\"group\":[\"container_id\"],\"metric\":\"docker_container_summary\",\"outputs\":[\"alert\"],\"select\":{\"addon_id\":\"#addon_id\",\"addon_type\":\"#addon_type\",\"cluster_name\":\"#cluster_name\",\"container_id\":\"#container_id\",\"host_ip\":\"#host_ip\",\"org_name\":\"#org_name\",\"pod_ip\":\"#pod_ip\",\"pod_name\":\"#pod_name\",\"pod_namespace\":\"#pod_namespace\"},\"window\":1}"); +INSERT `sp_alert_rules`(`alert_index`,`alert_scope`,`alert_type`,`attributes`,`name`,`template`) VALUES("register_center_mem","org","micro_service","{\"alert_group\":\"{{cluster_name}}-{{container_id}}\",\"level\":\"WARNING\",\"recover\":\"true\",\"tickets_metric_key\":\"{{container_id}}\"}","注册中心实例内存使用率异常","{\"filters\":[{\"operator\":\"eq\",\"tag\":\"org_name\",\"value\":\"$org_name\"},{\"operator\":\"in\",\"tag\":\"addon_type\",\"value\":[\"nacos\",\"zkproxy\"]}],\"functions\":[{\"aggregator\":\"avg\",\"field\":\"mem_usage_percent\",\"operator\":\"gte\",\"value\":90},{\"aggregator\":\"max\",\"alias\":\"mem_usage_value\",\"field\":\"mem_usage\"},{\"aggregator\":\"max\",\"alias\":\"mem_limit_value\",\"field\":\"mem_limit\"},{\"aggregator\":\"max\",\"alias\":\"mem_max_usage_value\",\"field\":\"mem_max_usage\"}],\"group\":[\"container_id\"],\"metric\":\"docker_container_summary\",\"outputs\":[\"alert\"],\"select\":{\"addon_id\":\"#addon_id\",\"addon_type\":\"#addon_type\",\"cluster_name\":\"#cluster_name\",\"container_id\":\"#container_id\",\"host_ip\":\"#host_ip\",\"org_name\":\"#org_name\",\"pod_ip\":\"#pod_ip\",\"pod_name\":\"#pod_name\",\"pod_namespace\":\"#pod_namespace\"},\"window\":1}"); +INSERT `sp_alert_rules`(`alert_index`,`alert_scope`,`alert_type`,`attributes`,`name`,`template`) VALUES("sidecar_circuit_breaker","micro_service","micro_service","{\"alert_group\":\"{{terminus_key}}\",\"level\":\"WARNING\",\"recover\":\"true\",\"tickets_metric_key\":\"{{terminus_key}}\"}","服务熔断通知告警","{\"filters\":[{\"operator\":\"eq\",\"tag\":\"terminus_key\",\"value\":\"$terminus_key\"},{\"operator\":\"eq\",\"tag\":\"org_name\",\"value\":\"$org_name\"}],\"functions\":[{\"aggregator\":\"sum\",\"field\":\"count\",\"operator\":\"gte\",\"value\":1}],\"group\":[\"service_name\"],\"metric\":\"sidecar_circuit_breaker\",\"outputs\":[\"alert\"],\"select\":{\"application_id\":\"#application_id\",\"application_name\":\"#application_name\",\"cluster_name\":\"#cluster_name\",\"host_ip\":\"#host_ip\",\"org_name\":\"#org_name\",\"project_name\":\"#project_name\",\"runtime_name\":\"#runtime_name\",\"service_name\":\"#service_name\",\"terminus_key\":\"#terminus_key\",\"workspace\":\"#workspace\"},\"window\":1}"); diff --git a/api/proto-go/all.go b/api/proto-go/all.go index 9a5599155ae..26cc9bb94b6 100644 --- a/api/proto-go/all.go +++ b/api/proto-go/all.go @@ -4,6 +4,7 @@ package proto import ( _ "github.com/erda-project/erda-proto-go/admin/pb" + _ "github.com/erda-project/erda-proto-go/cmp/alert/pb" _ "github.com/erda-project/erda-proto-go/cmp/dashboard/pb" _ "github.com/erda-project/erda-proto-go/common/pb" _ "github.com/erda-project/erda-proto-go/core/dicehub/extension/pb" diff --git a/api/proto-go/cmp/alert/client/client.go b/api/proto-go/cmp/alert/client/client.go new file mode 100644 index 00000000000..eba576e87d2 --- /dev/null +++ b/api/proto-go/cmp/alert/client/client.go @@ -0,0 +1,46 @@ +// Code generated by protoc-gen-go-client. DO NOT EDIT. +// Sources: cmp_alert.proto + +package client + +import ( + context "context" + + grpc "github.com/erda-project/erda-infra/pkg/transport/grpc" + pb "github.com/erda-project/erda-proto-go/cmp/alert/pb" + grpc1 "google.golang.org/grpc" +) + +// Client provide all service clients. +type Client interface { + // AlertService cmp_alert.proto + AlertService() pb.AlertServiceClient +} + +// New create client +func New(cc grpc.ClientConnInterface) Client { + return &serviceClients{ + alertService: pb.NewAlertServiceClient(cc), + } +} + +type serviceClients struct { + alertService pb.AlertServiceClient +} + +func (c *serviceClients) AlertService() pb.AlertServiceClient { + return c.alertService +} + +type alertServiceWrapper struct { + client pb.AlertServiceClient + opts []grpc1.CallOption +} + +func (s *alertServiceWrapper) GetAlertConditions(ctx context.Context, req *pb.GetAlertConditionsRequest) (*pb.GetAlertConditionsResponse, error) { + return s.client.GetAlertConditions(ctx, req, append(grpc.CallOptionFromContext(ctx), s.opts...)...) +} + +func (s *alertServiceWrapper) GetAlertConditionsValue(ctx context.Context, req *pb.GetAlertConditionsValueRequest) (*pb.GetAlertConditionsValueResponse, error) { + return s.client.GetAlertConditionsValue(ctx, req, append(grpc.CallOptionFromContext(ctx), s.opts...)...) +} diff --git a/api/proto-go/cmp/alert/client/provider.go b/api/proto-go/cmp/alert/client/provider.go new file mode 100644 index 00000000000..6653a694556 --- /dev/null +++ b/api/proto-go/cmp/alert/client/provider.go @@ -0,0 +1,93 @@ +// Code generated by protoc-gen-go-client. DO NOT EDIT. +// Sources: cmp_alert.proto + +package client + +import ( + fmt "fmt" + reflect "reflect" + strings "strings" + + servicehub "github.com/erda-project/erda-infra/base/servicehub" + grpc "github.com/erda-project/erda-infra/pkg/transport/grpc" + pb "github.com/erda-project/erda-proto-go/cmp/alert/pb" + grpc1 "google.golang.org/grpc" +) + +var dependencies = []string{ + "grpc-client@erda.cmp.alert", + "grpc-client", +} + +// +provider +type provider struct { + client Client +} + +func (p *provider) Init(ctx servicehub.Context) error { + var conn grpc.ClientConnInterface + for _, dep := range dependencies { + c, ok := ctx.Service(dep).(grpc.ClientConnInterface) + if ok { + conn = c + break + } + } + if conn == nil { + return fmt.Errorf("not found connector in (%s)", strings.Join(dependencies, ", ")) + } + p.client = New(conn) + return nil +} + +var ( + clientsType = reflect.TypeOf((*Client)(nil)).Elem() + alertServiceClientType = reflect.TypeOf((*pb.AlertServiceClient)(nil)).Elem() + alertServiceServerType = reflect.TypeOf((*pb.AlertServiceServer)(nil)).Elem() +) + +func (p *provider) Provide(ctx servicehub.DependencyContext, args ...interface{}) interface{} { + var opts []grpc1.CallOption + for _, arg := range args { + if opt, ok := arg.(grpc1.CallOption); ok { + opts = append(opts, opt) + } + } + switch ctx.Service() { + case "erda.cmp.alert-client": + return p.client + case "erda.cmp.alert.AlertService": + return &alertServiceWrapper{client: p.client.AlertService(), opts: opts} + case "erda.cmp.alert.AlertService.client": + return p.client.AlertService() + } + switch ctx.Type() { + case clientsType: + return p.client + case alertServiceClientType: + return p.client.AlertService() + case alertServiceServerType: + return &alertServiceWrapper{client: p.client.AlertService(), opts: opts} + } + return p +} + +func init() { + servicehub.Register("erda.cmp.alert-client", &servicehub.Spec{ + Services: []string{ + "erda.cmp.alert.AlertService", + "erda.cmp.alert-client", + }, + Types: []reflect.Type{ + clientsType, + // client types + alertServiceClientType, + // server types + alertServiceServerType, + }, + OptionalDependencies: dependencies, + Creator: func() servicehub.Provider { + return &provider{} + }, + }) +} diff --git a/api/proto-go/cmp/alert/pb/cmp_alert.form.pb.go b/api/proto-go/cmp/alert/pb/cmp_alert.form.pb.go new file mode 100644 index 00000000000..7c525b1583c --- /dev/null +++ b/api/proto-go/cmp/alert/pb/cmp_alert.form.pb.go @@ -0,0 +1,71 @@ +// Code generated by protoc-gen-go-form. DO NOT EDIT. +// Source: cmp_alert.proto + +package pb + +import ( + url "net/url" + + urlenc "github.com/erda-project/erda-infra/pkg/urlenc" + pb "github.com/erda-project/erda-proto-go/core/monitor/alert/pb" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the "github.com/erda-project/erda-infra/pkg/urlenc" package it is being compiled against. +var _ urlenc.URLValuesUnmarshaler = (*GetAlertConditionsRequest)(nil) +var _ urlenc.URLValuesUnmarshaler = (*GetAlertConditionsResponse)(nil) +var _ urlenc.URLValuesUnmarshaler = (*GetAlertConditionsValueRequest)(nil) +var _ urlenc.URLValuesUnmarshaler = (*GetAlertConditionsValueResponse)(nil) + +// GetAlertConditionsRequest implement urlenc.URLValuesUnmarshaler. +func (m *GetAlertConditionsRequest) UnmarshalURLValues(prefix string, values url.Values) error { + for key, vals := range values { + if len(vals) > 0 { + switch prefix + key { + case "scopeType": + m.ScopeType = vals[0] + } + } + } + return nil +} + +// GetAlertConditionsResponse implement urlenc.URLValuesUnmarshaler. +func (m *GetAlertConditionsResponse) UnmarshalURLValues(prefix string, values url.Values) error { + return nil +} + +// GetAlertConditionsValueRequest implement urlenc.URLValuesUnmarshaler. +func (m *GetAlertConditionsValueRequest) UnmarshalURLValues(prefix string, values url.Values) error { + for key, vals := range values { + if len(vals) > 0 { + switch prefix + key { + case "condition": + m.Condition = vals[0] + case "index": + m.Index = vals[0] + } + } + } + return nil +} + +// GetAlertConditionsValueResponse implement urlenc.URLValuesUnmarshaler. +func (m *GetAlertConditionsValueResponse) UnmarshalURLValues(prefix string, values url.Values) error { + for key, vals := range values { + if len(vals) > 0 { + switch prefix + key { + case "data": + if m.Data == nil { + m.Data = &pb.AlertConditionsValue{} + } + case "data.key": + if m.Data == nil { + m.Data = &pb.AlertConditionsValue{} + } + m.Data.Key = vals[0] + } + } + } + return nil +} diff --git a/api/proto-go/cmp/alert/pb/cmp_alert.http.pb.go b/api/proto-go/cmp/alert/pb/cmp_alert.http.pb.go new file mode 100644 index 00000000000..10cd9e79f6d --- /dev/null +++ b/api/proto-go/cmp/alert/pb/cmp_alert.http.pb.go @@ -0,0 +1,124 @@ +// Code generated by protoc-gen-go-http. DO NOT EDIT. +// Source: cmp_alert.proto + +package pb + +import ( + context "context" + http1 "net/http" + + transport "github.com/erda-project/erda-infra/pkg/transport" + http "github.com/erda-project/erda-infra/pkg/transport/http" + urlenc "github.com/erda-project/erda-infra/pkg/urlenc" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the "github.com/erda-project/erda-infra/pkg/transport/http" package it is being compiled against. +const _ = http.SupportPackageIsVersion1 + +// AlertServiceHandler is the server API for AlertService service. +type AlertServiceHandler interface { + // GET /api/cmp/alerts/conditions + GetAlertConditions(context.Context, *GetAlertConditionsRequest) (*GetAlertConditionsResponse, error) + // POST /api/cmp/alerts/conditions/value + GetAlertConditionsValue(context.Context, *GetAlertConditionsValueRequest) (*GetAlertConditionsValueResponse, error) +} + +// RegisterAlertServiceHandler register AlertServiceHandler to http.Router. +func RegisterAlertServiceHandler(r http.Router, srv AlertServiceHandler, opts ...http.HandleOption) { + h := http.DefaultHandleOptions() + for _, op := range opts { + op(h) + } + encodeFunc := func(fn func(http1.ResponseWriter, *http1.Request) (interface{}, error)) http.HandlerFunc { + handler := func(w http1.ResponseWriter, r *http1.Request) { + out, err := fn(w, r) + if err != nil { + h.Error(w, r, err) + return + } + if err := h.Encode(w, r, out); err != nil { + h.Error(w, r, err) + } + } + if h.HTTPInterceptor != nil { + handler = h.HTTPInterceptor(handler) + } + return handler + } + + add_GetAlertConditions := func(method, path string, fn func(context.Context, *GetAlertConditionsRequest) (*GetAlertConditionsResponse, error)) { + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return fn(ctx, req.(*GetAlertConditionsRequest)) + } + var GetAlertConditions_info transport.ServiceInfo + if h.Interceptor != nil { + GetAlertConditions_info = transport.NewServiceInfo("erda.cmp.alert.AlertService", "GetAlertConditions", srv) + handler = h.Interceptor(handler) + } + r.Add(method, path, encodeFunc( + func(w http1.ResponseWriter, r *http1.Request) (interface{}, error) { + ctx := http.WithRequest(r.Context(), r) + ctx = transport.WithHTTPHeaderForServer(ctx, r.Header) + if h.Interceptor != nil { + ctx = context.WithValue(ctx, transport.ServiceInfoContextKey, GetAlertConditions_info) + } + r = r.WithContext(ctx) + var in GetAlertConditionsRequest + if err := h.Decode(r, &in); err != nil { + return nil, err + } + var input interface{} = &in + if u, ok := (input).(urlenc.URLValuesUnmarshaler); ok { + if err := u.UnmarshalURLValues("", r.URL.Query()); err != nil { + return nil, err + } + } + out, err := handler(ctx, &in) + if err != nil { + return out, err + } + return out, nil + }), + ) + } + + add_GetAlertConditionsValue := func(method, path string, fn func(context.Context, *GetAlertConditionsValueRequest) (*GetAlertConditionsValueResponse, error)) { + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return fn(ctx, req.(*GetAlertConditionsValueRequest)) + } + var GetAlertConditionsValue_info transport.ServiceInfo + if h.Interceptor != nil { + GetAlertConditionsValue_info = transport.NewServiceInfo("erda.cmp.alert.AlertService", "GetAlertConditionsValue", srv) + handler = h.Interceptor(handler) + } + r.Add(method, path, encodeFunc( + func(w http1.ResponseWriter, r *http1.Request) (interface{}, error) { + ctx := http.WithRequest(r.Context(), r) + ctx = transport.WithHTTPHeaderForServer(ctx, r.Header) + if h.Interceptor != nil { + ctx = context.WithValue(ctx, transport.ServiceInfoContextKey, GetAlertConditionsValue_info) + } + r = r.WithContext(ctx) + var in GetAlertConditionsValueRequest + if err := h.Decode(r, &in); err != nil { + return nil, err + } + var input interface{} = &in + if u, ok := (input).(urlenc.URLValuesUnmarshaler); ok { + if err := u.UnmarshalURLValues("", r.URL.Query()); err != nil { + return nil, err + } + } + out, err := handler(ctx, &in) + if err != nil { + return out, err + } + return out, nil + }), + ) + } + + add_GetAlertConditions("GET", "/api/cmp/alerts/conditions", srv.GetAlertConditions) + add_GetAlertConditionsValue("POST", "/api/cmp/alerts/conditions/value", srv.GetAlertConditionsValue) +} diff --git a/api/proto-go/cmp/alert/pb/cmp_alert.json.pb.go b/api/proto-go/cmp/alert/pb/cmp_alert.json.pb.go new file mode 100644 index 00000000000..e372a205f69 --- /dev/null +++ b/api/proto-go/cmp/alert/pb/cmp_alert.json.pb.go @@ -0,0 +1,95 @@ +// Code generated by protoc-gen-go-json. DO NOT EDIT. +// Source: cmp_alert.proto + +package pb + +import ( + bytes "bytes" + json "encoding/json" + + jsonpb "github.com/erda-project/erda-infra/pkg/transport/http/encoding/jsonpb" + protojson "google.golang.org/protobuf/encoding/protojson" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the "encoding/json" package it is being compiled against. +var _ json.Marshaler = (*GetAlertConditionsRequest)(nil) +var _ json.Unmarshaler = (*GetAlertConditionsRequest)(nil) +var _ json.Marshaler = (*GetAlertConditionsResponse)(nil) +var _ json.Unmarshaler = (*GetAlertConditionsResponse)(nil) +var _ json.Marshaler = (*GetAlertConditionsValueRequest)(nil) +var _ json.Unmarshaler = (*GetAlertConditionsValueRequest)(nil) +var _ json.Marshaler = (*GetAlertConditionsValueResponse)(nil) +var _ json.Unmarshaler = (*GetAlertConditionsValueResponse)(nil) + +// GetAlertConditionsRequest implement json.Marshaler. +func (m *GetAlertConditionsRequest) MarshalJSON() ([]byte, error) { + buf := &bytes.Buffer{} + err := (&jsonpb.Marshaler{ + OrigName: false, + EnumsAsInts: false, + EmitDefaults: true, + }).Marshal(buf, m) + return buf.Bytes(), err +} + +// GetAlertConditionsRequest implement json.Marshaler. +func (m *GetAlertConditionsRequest) UnmarshalJSON(b []byte) error { + return (&protojson.UnmarshalOptions{ + DiscardUnknown: true, + }).Unmarshal(b, m) +} + +// GetAlertConditionsResponse implement json.Marshaler. +func (m *GetAlertConditionsResponse) MarshalJSON() ([]byte, error) { + buf := &bytes.Buffer{} + err := (&jsonpb.Marshaler{ + OrigName: false, + EnumsAsInts: false, + EmitDefaults: true, + }).Marshal(buf, m) + return buf.Bytes(), err +} + +// GetAlertConditionsResponse implement json.Marshaler. +func (m *GetAlertConditionsResponse) UnmarshalJSON(b []byte) error { + return (&protojson.UnmarshalOptions{ + DiscardUnknown: true, + }).Unmarshal(b, m) +} + +// GetAlertConditionsValueRequest implement json.Marshaler. +func (m *GetAlertConditionsValueRequest) MarshalJSON() ([]byte, error) { + buf := &bytes.Buffer{} + err := (&jsonpb.Marshaler{ + OrigName: false, + EnumsAsInts: false, + EmitDefaults: true, + }).Marshal(buf, m) + return buf.Bytes(), err +} + +// GetAlertConditionsValueRequest implement json.Marshaler. +func (m *GetAlertConditionsValueRequest) UnmarshalJSON(b []byte) error { + return (&protojson.UnmarshalOptions{ + DiscardUnknown: true, + }).Unmarshal(b, m) +} + +// GetAlertConditionsValueResponse implement json.Marshaler. +func (m *GetAlertConditionsValueResponse) MarshalJSON() ([]byte, error) { + buf := &bytes.Buffer{} + err := (&jsonpb.Marshaler{ + OrigName: false, + EnumsAsInts: false, + EmitDefaults: true, + }).Marshal(buf, m) + return buf.Bytes(), err +} + +// GetAlertConditionsValueResponse implement json.Marshaler. +func (m *GetAlertConditionsValueResponse) UnmarshalJSON(b []byte) error { + return (&protojson.UnmarshalOptions{ + DiscardUnknown: true, + }).Unmarshal(b, m) +} diff --git a/api/proto-go/cmp/alert/pb/cmp_alert.pb.go b/api/proto-go/cmp/alert/pb/cmp_alert.pb.go new file mode 100644 index 00000000000..e24ffdab28e --- /dev/null +++ b/api/proto-go/cmp/alert/pb/cmp_alert.pb.go @@ -0,0 +1,409 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.26.0 +// protoc v3.15.8 +// source: cmp_alert.proto + +package pb + +import ( + reflect "reflect" + sync "sync" + + pb "github.com/erda-project/erda-proto-go/core/monitor/alert/pb" + _ "google.golang.org/genproto/googleapis/api/annotations" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + _ "google.golang.org/protobuf/types/known/structpb" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type GetAlertConditionsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ScopeType string `protobuf:"bytes,1,opt,name=scopeType,proto3" json:"scopeType,omitempty"` +} + +func (x *GetAlertConditionsRequest) Reset() { + *x = GetAlertConditionsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_cmp_alert_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetAlertConditionsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetAlertConditionsRequest) ProtoMessage() {} + +func (x *GetAlertConditionsRequest) ProtoReflect() protoreflect.Message { + mi := &file_cmp_alert_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetAlertConditionsRequest.ProtoReflect.Descriptor instead. +func (*GetAlertConditionsRequest) Descriptor() ([]byte, []int) { + return file_cmp_alert_proto_rawDescGZIP(), []int{0} +} + +func (x *GetAlertConditionsRequest) GetScopeType() string { + if x != nil { + return x.ScopeType + } + return "" +} + +type GetAlertConditionsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Data []*pb.Conditions `protobuf:"bytes,1,rep,name=data,json=conditions,proto3" json:"data,omitempty"` +} + +func (x *GetAlertConditionsResponse) Reset() { + *x = GetAlertConditionsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_cmp_alert_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetAlertConditionsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetAlertConditionsResponse) ProtoMessage() {} + +func (x *GetAlertConditionsResponse) ProtoReflect() protoreflect.Message { + mi := &file_cmp_alert_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetAlertConditionsResponse.ProtoReflect.Descriptor instead. +func (*GetAlertConditionsResponse) Descriptor() ([]byte, []int) { + return file_cmp_alert_proto_rawDescGZIP(), []int{1} +} + +func (x *GetAlertConditionsResponse) GetData() []*pb.Conditions { + if x != nil { + return x.Data + } + return nil +} + +type GetAlertConditionsValueRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Condition string `protobuf:"bytes,1,opt,name=condition,proto3" json:"condition,omitempty"` + Filters map[string]string `protobuf:"bytes,2,rep,name=filters,proto3" json:"filters,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Index string `protobuf:"bytes,3,opt,name=index,proto3" json:"index,omitempty"` +} + +func (x *GetAlertConditionsValueRequest) Reset() { + *x = GetAlertConditionsValueRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_cmp_alert_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetAlertConditionsValueRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetAlertConditionsValueRequest) ProtoMessage() {} + +func (x *GetAlertConditionsValueRequest) ProtoReflect() protoreflect.Message { + mi := &file_cmp_alert_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetAlertConditionsValueRequest.ProtoReflect.Descriptor instead. +func (*GetAlertConditionsValueRequest) Descriptor() ([]byte, []int) { + return file_cmp_alert_proto_rawDescGZIP(), []int{2} +} + +func (x *GetAlertConditionsValueRequest) GetCondition() string { + if x != nil { + return x.Condition + } + return "" +} + +func (x *GetAlertConditionsValueRequest) GetFilters() map[string]string { + if x != nil { + return x.Filters + } + return nil +} + +func (x *GetAlertConditionsValueRequest) GetIndex() string { + if x != nil { + return x.Index + } + return "" +} + +type GetAlertConditionsValueResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Data *pb.AlertConditionsValue `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"` +} + +func (x *GetAlertConditionsValueResponse) Reset() { + *x = GetAlertConditionsValueResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_cmp_alert_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetAlertConditionsValueResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetAlertConditionsValueResponse) ProtoMessage() {} + +func (x *GetAlertConditionsValueResponse) ProtoReflect() protoreflect.Message { + mi := &file_cmp_alert_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetAlertConditionsValueResponse.ProtoReflect.Descriptor instead. +func (*GetAlertConditionsValueResponse) Descriptor() ([]byte, []int) { + return file_cmp_alert_proto_rawDescGZIP(), []int{3} +} + +func (x *GetAlertConditionsValueResponse) GetData() *pb.AlertConditionsValue { + if x != nil { + return x.Data + } + return nil +} + +var File_cmp_alert_proto protoreflect.FileDescriptor + +var file_cmp_alert_proto_rawDesc = []byte{ + 0x0a, 0x0f, 0x63, 0x6d, 0x70, 0x5f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x12, 0x0e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6d, 0x70, 0x2e, 0x61, 0x6c, 0x65, 0x72, + 0x74, 0x1a, 0x1e, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2f, + 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, + 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x39, 0x0a, + 0x19, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x63, + 0x6f, 0x70, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, + 0x63, 0x6f, 0x70, 0x65, 0x54, 0x79, 0x70, 0x65, 0x22, 0x5b, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x41, + 0x6c, 0x65, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, + 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x43, + 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x64, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xe7, 0x01, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, + 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x64, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6e, + 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x55, 0x0a, 0x07, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, + 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, + 0x6d, 0x70, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, + 0x74, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x12, 0x14, 0x0a, + 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x69, 0x6e, + 0x64, 0x65, 0x78, 0x1a, 0x3a, 0x0a, 0x0c, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, + 0x64, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x64, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x41, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x2d, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, + 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x41, 0x6c, 0x65, 0x72, 0x74, + 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, + 0x04, 0x64, 0x61, 0x74, 0x61, 0x32, 0xc7, 0x02, 0x0a, 0x0c, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x53, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x8f, 0x01, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x41, 0x6c, + 0x65, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x29, 0x2e, + 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6d, 0x70, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x47, + 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, + 0x63, 0x6d, 0x70, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, + 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x22, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x12, 0x1a, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x63, 0x6d, 0x70, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x2f, 0x63, 0x6f, + 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0xa4, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, + 0x41, 0x6c, 0x65, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x12, 0x2e, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6d, 0x70, 0x2e, + 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x43, 0x6f, + 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6d, 0x70, 0x2e, + 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x43, 0x6f, + 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x22, 0x20, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6d, 0x70, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x2f, 0x63, + 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, + 0x34, 0x5a, 0x32, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x65, 0x72, + 0x64, 0x61, 0x2d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x2f, 0x65, 0x72, 0x64, 0x61, 0x2d, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2d, 0x67, 0x6f, 0x2f, 0x63, 0x6d, 0x70, 0x2f, 0x61, 0x6c, 0x65, + 0x72, 0x74, 0x2f, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_cmp_alert_proto_rawDescOnce sync.Once + file_cmp_alert_proto_rawDescData = file_cmp_alert_proto_rawDesc +) + +func file_cmp_alert_proto_rawDescGZIP() []byte { + file_cmp_alert_proto_rawDescOnce.Do(func() { + file_cmp_alert_proto_rawDescData = protoimpl.X.CompressGZIP(file_cmp_alert_proto_rawDescData) + }) + return file_cmp_alert_proto_rawDescData +} + +var file_cmp_alert_proto_msgTypes = make([]protoimpl.MessageInfo, 5) +var file_cmp_alert_proto_goTypes = []interface{}{ + (*GetAlertConditionsRequest)(nil), // 0: erda.cmp.alert.GetAlertConditionsRequest + (*GetAlertConditionsResponse)(nil), // 1: erda.cmp.alert.GetAlertConditionsResponse + (*GetAlertConditionsValueRequest)(nil), // 2: erda.cmp.alert.GetAlertConditionsValueRequest + (*GetAlertConditionsValueResponse)(nil), // 3: erda.cmp.alert.GetAlertConditionsValueResponse + nil, // 4: erda.cmp.alert.GetAlertConditionsValueRequest.FiltersEntry + (*pb.Conditions)(nil), // 5: erda.core.monitor.alert.Conditions + (*pb.AlertConditionsValue)(nil), // 6: erda.core.monitor.alert.AlertConditionsValue +} +var file_cmp_alert_proto_depIdxs = []int32{ + 5, // 0: erda.cmp.alert.GetAlertConditionsResponse.data:type_name -> erda.core.monitor.alert.Conditions + 4, // 1: erda.cmp.alert.GetAlertConditionsValueRequest.filters:type_name -> erda.cmp.alert.GetAlertConditionsValueRequest.FiltersEntry + 6, // 2: erda.cmp.alert.GetAlertConditionsValueResponse.data:type_name -> erda.core.monitor.alert.AlertConditionsValue + 0, // 3: erda.cmp.alert.AlertService.GetAlertConditions:input_type -> erda.cmp.alert.GetAlertConditionsRequest + 2, // 4: erda.cmp.alert.AlertService.GetAlertConditionsValue:input_type -> erda.cmp.alert.GetAlertConditionsValueRequest + 1, // 5: erda.cmp.alert.AlertService.GetAlertConditions:output_type -> erda.cmp.alert.GetAlertConditionsResponse + 3, // 6: erda.cmp.alert.AlertService.GetAlertConditionsValue:output_type -> erda.cmp.alert.GetAlertConditionsValueResponse + 5, // [5:7] is the sub-list for method output_type + 3, // [3:5] is the sub-list for method input_type + 3, // [3:3] is the sub-list for extension type_name + 3, // [3:3] is the sub-list for extension extendee + 0, // [0:3] is the sub-list for field type_name +} + +func init() { file_cmp_alert_proto_init() } +func file_cmp_alert_proto_init() { + if File_cmp_alert_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_cmp_alert_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetAlertConditionsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_cmp_alert_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetAlertConditionsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_cmp_alert_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetAlertConditionsValueRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_cmp_alert_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetAlertConditionsValueResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_cmp_alert_proto_rawDesc, + NumEnums: 0, + NumMessages: 5, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_cmp_alert_proto_goTypes, + DependencyIndexes: file_cmp_alert_proto_depIdxs, + MessageInfos: file_cmp_alert_proto_msgTypes, + }.Build() + File_cmp_alert_proto = out.File + file_cmp_alert_proto_rawDesc = nil + file_cmp_alert_proto_goTypes = nil + file_cmp_alert_proto_depIdxs = nil +} diff --git a/api/proto-go/cmp/alert/pb/cmp_alert.validator.pb.go b/api/proto-go/cmp/alert/pb/cmp_alert.validator.pb.go new file mode 100644 index 00000000000..fed75b4ee00 --- /dev/null +++ b/api/proto-go/cmp/alert/pb/cmp_alert.validator.pb.go @@ -0,0 +1,46 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: cmp_alert.proto + +package pb + +import ( + fmt "fmt" + math "math" + + _ "github.com/erda-project/erda-proto-go/core/monitor/alert/pb" + proto "github.com/golang/protobuf/proto" + github_com_mwitkow_go_proto_validators "github.com/mwitkow/go-proto-validators" + _ "google.golang.org/genproto/googleapis/api/annotations" + _ "google.golang.org/protobuf/types/known/structpb" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +func (this *GetAlertConditionsRequest) Validate() error { + return nil +} +func (this *GetAlertConditionsResponse) Validate() error { + for _, item := range this.Data { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Data", err) + } + } + } + return nil +} +func (this *GetAlertConditionsValueRequest) Validate() error { + // Validation of proto3 map<> fields is unsupported. + return nil +} +func (this *GetAlertConditionsValueResponse) Validate() error { + if this.Data != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.Data); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Data", err) + } + } + return nil +} diff --git a/api/proto-go/cmp/alert/pb/cmp_alert_grpc.pb.go b/api/proto-go/cmp/alert/pb/cmp_alert_grpc.pb.go new file mode 100644 index 00000000000..83a7e8c437d --- /dev/null +++ b/api/proto-go/cmp/alert/pb/cmp_alert_grpc.pb.go @@ -0,0 +1,159 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// Source: cmp_alert.proto + +package pb + +import ( + context "context" + + transport "github.com/erda-project/erda-infra/pkg/transport" + grpc1 "github.com/erda-project/erda-infra/pkg/transport/grpc" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +const _ = grpc.SupportPackageIsVersion5 + +// AlertServiceClient is the client API for AlertService service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type AlertServiceClient interface { + GetAlertConditions(ctx context.Context, in *GetAlertConditionsRequest, opts ...grpc.CallOption) (*GetAlertConditionsResponse, error) + GetAlertConditionsValue(ctx context.Context, in *GetAlertConditionsValueRequest, opts ...grpc.CallOption) (*GetAlertConditionsValueResponse, error) +} + +type alertServiceClient struct { + cc grpc1.ClientConnInterface +} + +func NewAlertServiceClient(cc grpc1.ClientConnInterface) AlertServiceClient { + return &alertServiceClient{cc} +} + +func (c *alertServiceClient) GetAlertConditions(ctx context.Context, in *GetAlertConditionsRequest, opts ...grpc.CallOption) (*GetAlertConditionsResponse, error) { + out := new(GetAlertConditionsResponse) + err := c.cc.Invoke(ctx, "/erda.cmp.alert.AlertService/GetAlertConditions", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *alertServiceClient) GetAlertConditionsValue(ctx context.Context, in *GetAlertConditionsValueRequest, opts ...grpc.CallOption) (*GetAlertConditionsValueResponse, error) { + out := new(GetAlertConditionsValueResponse) + err := c.cc.Invoke(ctx, "/erda.cmp.alert.AlertService/GetAlertConditionsValue", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// AlertServiceServer is the server API for AlertService service. +// All implementations should embed UnimplementedAlertServiceServer +// for forward compatibility +type AlertServiceServer interface { + GetAlertConditions(context.Context, *GetAlertConditionsRequest) (*GetAlertConditionsResponse, error) + GetAlertConditionsValue(context.Context, *GetAlertConditionsValueRequest) (*GetAlertConditionsValueResponse, error) +} + +// UnimplementedAlertServiceServer should be embedded to have forward compatible implementations. +type UnimplementedAlertServiceServer struct { +} + +func (*UnimplementedAlertServiceServer) GetAlertConditions(context.Context, *GetAlertConditionsRequest) (*GetAlertConditionsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetAlertConditions not implemented") +} +func (*UnimplementedAlertServiceServer) GetAlertConditionsValue(context.Context, *GetAlertConditionsValueRequest) (*GetAlertConditionsValueResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetAlertConditionsValue not implemented") +} + +func RegisterAlertServiceServer(s grpc1.ServiceRegistrar, srv AlertServiceServer, opts ...grpc1.HandleOption) { + s.RegisterService(_get_AlertService_serviceDesc(srv, opts...), srv) +} + +var _AlertService_serviceDesc = grpc.ServiceDesc{ + ServiceName: "erda.cmp.alert.AlertService", + HandlerType: (*AlertServiceServer)(nil), + Methods: []grpc.MethodDesc{}, + Streams: []grpc.StreamDesc{}, + Metadata: "cmp_alert.proto", +} + +func _get_AlertService_serviceDesc(srv AlertServiceServer, opts ...grpc1.HandleOption) *grpc.ServiceDesc { + h := grpc1.DefaultHandleOptions() + for _, op := range opts { + op(h) + } + + _AlertService_GetAlertConditions_Handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.GetAlertConditions(ctx, req.(*GetAlertConditionsRequest)) + } + var _AlertService_GetAlertConditions_info transport.ServiceInfo + if h.Interceptor != nil { + _AlertService_GetAlertConditions_info = transport.NewServiceInfo("erda.cmp.alert.AlertService", "GetAlertConditions", srv) + _AlertService_GetAlertConditions_Handler = h.Interceptor(_AlertService_GetAlertConditions_Handler) + } + + _AlertService_GetAlertConditionsValue_Handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.GetAlertConditionsValue(ctx, req.(*GetAlertConditionsValueRequest)) + } + var _AlertService_GetAlertConditionsValue_info transport.ServiceInfo + if h.Interceptor != nil { + _AlertService_GetAlertConditionsValue_info = transport.NewServiceInfo("erda.cmp.alert.AlertService", "GetAlertConditionsValue", srv) + _AlertService_GetAlertConditionsValue_Handler = h.Interceptor(_AlertService_GetAlertConditionsValue_Handler) + } + + var serviceDesc = _AlertService_serviceDesc + serviceDesc.Methods = []grpc.MethodDesc{ + { + MethodName: "GetAlertConditions", + Handler: func(_ interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetAlertConditionsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil && h.Interceptor == nil { + return srv.(AlertServiceServer).GetAlertConditions(ctx, in) + } + if h.Interceptor != nil { + ctx = context.WithValue(ctx, transport.ServiceInfoContextKey, _AlertService_GetAlertConditions_info) + } + if interceptor == nil { + return _AlertService_GetAlertConditions_Handler(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/erda.cmp.alert.AlertService/GetAlertConditions", + } + return interceptor(ctx, in, info, _AlertService_GetAlertConditions_Handler) + }, + }, + { + MethodName: "GetAlertConditionsValue", + Handler: func(_ interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetAlertConditionsValueRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil && h.Interceptor == nil { + return srv.(AlertServiceServer).GetAlertConditionsValue(ctx, in) + } + if h.Interceptor != nil { + ctx = context.WithValue(ctx, transport.ServiceInfoContextKey, _AlertService_GetAlertConditionsValue_info) + } + if interceptor == nil { + return _AlertService_GetAlertConditionsValue_Handler(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/erda.cmp.alert.AlertService/GetAlertConditionsValue", + } + return interceptor(ctx, in, info, _AlertService_GetAlertConditionsValue_Handler) + }, + }, + } + return &serviceDesc +} diff --git a/api/proto-go/cmp/alert/pb/register.services.pb.go b/api/proto-go/cmp/alert/pb/register.services.pb.go new file mode 100644 index 00000000000..b11e620fca3 --- /dev/null +++ b/api/proto-go/cmp/alert/pb/register.services.pb.go @@ -0,0 +1,53 @@ +// Code generated by protoc-gen-go-register. DO NOT EDIT. +// Sources: cmp_alert.proto + +package pb + +import ( + reflect "reflect" + + transport "github.com/erda-project/erda-infra/pkg/transport" +) + +// RegisterAlertServiceImp cmp_alert.proto +func RegisterAlertServiceImp(regester transport.Register, srv AlertServiceServer, opts ...transport.ServiceOption) { + _ops := transport.DefaultServiceOptions() + for _, op := range opts { + op(_ops) + } + RegisterAlertServiceHandler(regester, AlertServiceHandler(srv), _ops.HTTP...) + RegisterAlertServiceServer(regester, srv, _ops.GRPC...) +} + +// ServiceNames return all service names +func ServiceNames(svr ...string) []string { + return append(svr, + "erda.cmp.alert.AlertService", + ) +} + +var ( + alertServiceClientType = reflect.TypeOf((*AlertServiceClient)(nil)).Elem() + alertServiceServerType = reflect.TypeOf((*AlertServiceServer)(nil)).Elem() + alertServiceHandlerType = reflect.TypeOf((*AlertServiceHandler)(nil)).Elem() +) + +// AlertServiceClientType . +func AlertServiceClientType() reflect.Type { return alertServiceClientType } + +// AlertServiceServerType . +func AlertServiceServerType() reflect.Type { return alertServiceServerType } + +// AlertServiceHandlerType . +func AlertServiceHandlerType() reflect.Type { return alertServiceHandlerType } + +func Types() []reflect.Type { + return []reflect.Type{ + // client types + alertServiceClientType, + // server types + alertServiceServerType, + // handler types + alertServiceHandlerType, + } +} diff --git a/api/proto-go/core/monitor/alert/client/client.go b/api/proto-go/core/monitor/alert/client/client.go index 3be5b17d7e0..6be3e0a6eac 100644 --- a/api/proto-go/core/monitor/alert/client/client.go +++ b/api/proto-go/core/monitor/alert/client/client.go @@ -224,3 +224,11 @@ func (s *alertServiceWrapper) CreateOrgAlertIssue(ctx context.Context, req *pb.C func (s *alertServiceWrapper) UpdateOrgAlertIssue(ctx context.Context, req *pb.UpdateOrgAlertIssueRequest) (*pb.UpdateOrgAlertIssueResponse, error) { return s.client.UpdateOrgAlertIssue(ctx, req, append(grpc.CallOptionFromContext(ctx), s.opts...)...) } + +func (s *alertServiceWrapper) GetAlertConditions(ctx context.Context, req *pb.GetAlertConditionsRequest) (*pb.GetAlertConditionsResponse, error) { + return s.client.GetAlertConditions(ctx, req, append(grpc.CallOptionFromContext(ctx), s.opts...)...) +} + +func (s *alertServiceWrapper) GetAlertConditionsValue(ctx context.Context, req *pb.GetAlertConditionsValueRequest) (*pb.GetAlertConditionsValueResponse, error) { + return s.client.GetAlertConditionsValue(ctx, req, append(grpc.CallOptionFromContext(ctx), s.opts...)...) +} diff --git a/api/proto-go/core/monitor/alert/pb/alert.form.pb.go b/api/proto-go/core/monitor/alert/pb/alert.form.pb.go index b909a51e36e..e76443c152f 100644 --- a/api/proto-go/core/monitor/alert/pb/alert.form.pb.go +++ b/api/proto-go/core/monitor/alert/pb/alert.form.pb.go @@ -110,6 +110,7 @@ var _ urlenc.URLValuesUnmarshaler = (*QueryOrgAlertData)(nil) var _ urlenc.URLValuesUnmarshaler = (*GetOrgAlertDetailRequest)(nil) var _ urlenc.URLValuesUnmarshaler = (*GetOrgAlertDetailResponse)(nil) var _ urlenc.URLValuesUnmarshaler = (*CreateOrgAlertRequest)(nil) +var _ urlenc.URLValuesUnmarshaler = (*TriggerCondition)(nil) var _ urlenc.URLValuesUnmarshaler = (*CreateOrgAlertResponse)(nil) var _ urlenc.URLValuesUnmarshaler = (*UpdateOrgAlertRequest)(nil) var _ urlenc.URLValuesUnmarshaler = (*UpdateOrgAlertResponse)(nil) @@ -148,6 +149,12 @@ var _ urlenc.URLValuesUnmarshaler = (*CreateOrgAlertIssueRequest)(nil) var _ urlenc.URLValuesUnmarshaler = (*CreateOrgAlertIssueResponse)(nil) var _ urlenc.URLValuesUnmarshaler = (*UpdateOrgAlertIssueRequest)(nil) var _ urlenc.URLValuesUnmarshaler = (*UpdateOrgAlertIssueResponse)(nil) +var _ urlenc.URLValuesUnmarshaler = (*GetAlertConditionsRequest)(nil) +var _ urlenc.URLValuesUnmarshaler = (*GetAlertConditionsResponse)(nil) +var _ urlenc.URLValuesUnmarshaler = (*Conditions)(nil) +var _ urlenc.URLValuesUnmarshaler = (*GetAlertConditionsValueRequest)(nil) +var _ urlenc.URLValuesUnmarshaler = (*GetAlertConditionsValueResponse)(nil) +var _ urlenc.URLValuesUnmarshaler = (*AlertConditionsValue)(nil) // QueryCustomizeMetricRequest implement urlenc.URLValuesUnmarshaler. func (m *QueryCustomizeMetricRequest) UnmarshalURLValues(prefix string, values url.Values) error { @@ -4184,6 +4191,8 @@ func (m *AlertExpression) UnmarshalURLValues(prefix string, values url.Values) e return err } m.UpdateTime = val + case "level": + m.Level = vals[0] } } } @@ -4353,6 +4362,8 @@ func (m *AlertNotify) UnmarshalURLValues(prefix string, values url.Values) error return err } m.UpdateTime = val + case "level": + m.Level = vals[0] } } } @@ -5038,6 +5049,23 @@ func (m *CreateOrgAlertRequest) UnmarshalURLValues(prefix string, values url.Val return nil } +// TriggerCondition implement urlenc.URLValuesUnmarshaler. +func (m *TriggerCondition) UnmarshalURLValues(prefix string, values url.Values) error { + for key, vals := range values { + if len(vals) > 0 { + switch prefix + key { + case "condition": + m.Condition = vals[0] + case "operator": + m.Operator = vals[0] + case "values": + m.Values = vals[0] + } + } + } + return nil +} + // CreateOrgAlertResponse implement urlenc.URLValuesUnmarshaler. func (m *CreateOrgAlertResponse) UnmarshalURLValues(prefix string, values url.Values) error { for key, vals := range values { @@ -6699,3 +6727,88 @@ func (m *UpdateOrgAlertIssueRequest) UnmarshalURLValues(prefix string, values ur func (m *UpdateOrgAlertIssueResponse) UnmarshalURLValues(prefix string, values url.Values) error { return nil } + +// GetAlertConditionsRequest implement urlenc.URLValuesUnmarshaler. +func (m *GetAlertConditionsRequest) UnmarshalURLValues(prefix string, values url.Values) error { + for key, vals := range values { + if len(vals) > 0 { + switch prefix + key { + case "scopeType": + m.ScopeType = vals[0] + } + } + } + return nil +} + +// GetAlertConditionsResponse implement urlenc.URLValuesUnmarshaler. +func (m *GetAlertConditionsResponse) UnmarshalURLValues(prefix string, values url.Values) error { + return nil +} + +// Conditions implement urlenc.URLValuesUnmarshaler. +func (m *Conditions) UnmarshalURLValues(prefix string, values url.Values) error { + for key, vals := range values { + if len(vals) > 0 { + switch prefix + key { + case "key": + m.Key = vals[0] + case "filters": + m.Filters = vals + case "displayName": + m.DisplayName = vals[0] + case "index": + m.Index = vals[0] + } + } + } + return nil +} + +// GetAlertConditionsValueRequest implement urlenc.URLValuesUnmarshaler. +func (m *GetAlertConditionsValueRequest) UnmarshalURLValues(prefix string, values url.Values) error { + for key, vals := range values { + if len(vals) > 0 { + switch prefix + key { + case "condition": + m.Condition = vals[0] + case "index": + m.Index = vals[0] + } + } + } + return nil +} + +// GetAlertConditionsValueResponse implement urlenc.URLValuesUnmarshaler. +func (m *GetAlertConditionsValueResponse) UnmarshalURLValues(prefix string, values url.Values) error { + for key, vals := range values { + if len(vals) > 0 { + switch prefix + key { + case "data": + if m.Data == nil { + m.Data = &AlertConditionsValue{} + } + case "data.key": + if m.Data == nil { + m.Data = &AlertConditionsValue{} + } + m.Data.Key = vals[0] + } + } + } + return nil +} + +// AlertConditionsValue implement urlenc.URLValuesUnmarshaler. +func (m *AlertConditionsValue) UnmarshalURLValues(prefix string, values url.Values) error { + for key, vals := range values { + if len(vals) > 0 { + switch prefix + key { + case "key": + m.Key = vals[0] + } + } + } + return nil +} diff --git a/api/proto-go/core/monitor/alert/pb/alert.json.pb.go b/api/proto-go/core/monitor/alert/pb/alert.json.pb.go index 395fecb8978..527fa976a62 100644 --- a/api/proto-go/core/monitor/alert/pb/alert.json.pb.go +++ b/api/proto-go/core/monitor/alert/pb/alert.json.pb.go @@ -201,6 +201,8 @@ var _ json.Marshaler = (*GetOrgAlertDetailResponse)(nil) var _ json.Unmarshaler = (*GetOrgAlertDetailResponse)(nil) var _ json.Marshaler = (*CreateOrgAlertRequest)(nil) var _ json.Unmarshaler = (*CreateOrgAlertRequest)(nil) +var _ json.Marshaler = (*TriggerCondition)(nil) +var _ json.Unmarshaler = (*TriggerCondition)(nil) var _ json.Marshaler = (*CreateOrgAlertResponse)(nil) var _ json.Unmarshaler = (*CreateOrgAlertResponse)(nil) var _ json.Marshaler = (*UpdateOrgAlertRequest)(nil) @@ -277,6 +279,18 @@ var _ json.Marshaler = (*UpdateOrgAlertIssueRequest)(nil) var _ json.Unmarshaler = (*UpdateOrgAlertIssueRequest)(nil) var _ json.Marshaler = (*UpdateOrgAlertIssueResponse)(nil) var _ json.Unmarshaler = (*UpdateOrgAlertIssueResponse)(nil) +var _ json.Marshaler = (*GetAlertConditionsRequest)(nil) +var _ json.Unmarshaler = (*GetAlertConditionsRequest)(nil) +var _ json.Marshaler = (*GetAlertConditionsResponse)(nil) +var _ json.Unmarshaler = (*GetAlertConditionsResponse)(nil) +var _ json.Marshaler = (*Conditions)(nil) +var _ json.Unmarshaler = (*Conditions)(nil) +var _ json.Marshaler = (*GetAlertConditionsValueRequest)(nil) +var _ json.Unmarshaler = (*GetAlertConditionsValueRequest)(nil) +var _ json.Marshaler = (*GetAlertConditionsValueResponse)(nil) +var _ json.Unmarshaler = (*GetAlertConditionsValueResponse)(nil) +var _ json.Marshaler = (*AlertConditionsValue)(nil) +var _ json.Unmarshaler = (*AlertConditionsValue)(nil) // QueryCustomizeMetricRequest implement json.Marshaler. func (m *QueryCustomizeMetricRequest) MarshalJSON() ([]byte, error) { @@ -1970,6 +1984,24 @@ func (m *CreateOrgAlertRequest) UnmarshalJSON(b []byte) error { }).Unmarshal(b, m) } +// TriggerCondition implement json.Marshaler. +func (m *TriggerCondition) MarshalJSON() ([]byte, error) { + buf := &bytes.Buffer{} + err := (&jsonpb.Marshaler{ + OrigName: false, + EnumsAsInts: false, + EmitDefaults: true, + }).Marshal(buf, m) + return buf.Bytes(), err +} + +// TriggerCondition implement json.Marshaler. +func (m *TriggerCondition) UnmarshalJSON(b []byte) error { + return (&protojson.UnmarshalOptions{ + DiscardUnknown: true, + }).Unmarshal(b, m) +} + // CreateOrgAlertResponse implement json.Marshaler. func (m *CreateOrgAlertResponse) MarshalJSON() ([]byte, error) { buf := &bytes.Buffer{} @@ -2653,3 +2685,111 @@ func (m *UpdateOrgAlertIssueResponse) UnmarshalJSON(b []byte) error { DiscardUnknown: true, }).Unmarshal(b, m) } + +// GetAlertConditionsRequest implement json.Marshaler. +func (m *GetAlertConditionsRequest) MarshalJSON() ([]byte, error) { + buf := &bytes.Buffer{} + err := (&jsonpb.Marshaler{ + OrigName: false, + EnumsAsInts: false, + EmitDefaults: true, + }).Marshal(buf, m) + return buf.Bytes(), err +} + +// GetAlertConditionsRequest implement json.Marshaler. +func (m *GetAlertConditionsRequest) UnmarshalJSON(b []byte) error { + return (&protojson.UnmarshalOptions{ + DiscardUnknown: true, + }).Unmarshal(b, m) +} + +// GetAlertConditionsResponse implement json.Marshaler. +func (m *GetAlertConditionsResponse) MarshalJSON() ([]byte, error) { + buf := &bytes.Buffer{} + err := (&jsonpb.Marshaler{ + OrigName: false, + EnumsAsInts: false, + EmitDefaults: true, + }).Marshal(buf, m) + return buf.Bytes(), err +} + +// GetAlertConditionsResponse implement json.Marshaler. +func (m *GetAlertConditionsResponse) UnmarshalJSON(b []byte) error { + return (&protojson.UnmarshalOptions{ + DiscardUnknown: true, + }).Unmarshal(b, m) +} + +// Conditions implement json.Marshaler. +func (m *Conditions) MarshalJSON() ([]byte, error) { + buf := &bytes.Buffer{} + err := (&jsonpb.Marshaler{ + OrigName: false, + EnumsAsInts: false, + EmitDefaults: true, + }).Marshal(buf, m) + return buf.Bytes(), err +} + +// Conditions implement json.Marshaler. +func (m *Conditions) UnmarshalJSON(b []byte) error { + return (&protojson.UnmarshalOptions{ + DiscardUnknown: true, + }).Unmarshal(b, m) +} + +// GetAlertConditionsValueRequest implement json.Marshaler. +func (m *GetAlertConditionsValueRequest) MarshalJSON() ([]byte, error) { + buf := &bytes.Buffer{} + err := (&jsonpb.Marshaler{ + OrigName: false, + EnumsAsInts: false, + EmitDefaults: true, + }).Marshal(buf, m) + return buf.Bytes(), err +} + +// GetAlertConditionsValueRequest implement json.Marshaler. +func (m *GetAlertConditionsValueRequest) UnmarshalJSON(b []byte) error { + return (&protojson.UnmarshalOptions{ + DiscardUnknown: true, + }).Unmarshal(b, m) +} + +// GetAlertConditionsValueResponse implement json.Marshaler. +func (m *GetAlertConditionsValueResponse) MarshalJSON() ([]byte, error) { + buf := &bytes.Buffer{} + err := (&jsonpb.Marshaler{ + OrigName: false, + EnumsAsInts: false, + EmitDefaults: true, + }).Marshal(buf, m) + return buf.Bytes(), err +} + +// GetAlertConditionsValueResponse implement json.Marshaler. +func (m *GetAlertConditionsValueResponse) UnmarshalJSON(b []byte) error { + return (&protojson.UnmarshalOptions{ + DiscardUnknown: true, + }).Unmarshal(b, m) +} + +// AlertConditionsValue implement json.Marshaler. +func (m *AlertConditionsValue) MarshalJSON() ([]byte, error) { + buf := &bytes.Buffer{} + err := (&jsonpb.Marshaler{ + OrigName: false, + EnumsAsInts: false, + EmitDefaults: true, + }).Marshal(buf, m) + return buf.Bytes(), err +} + +// AlertConditionsValue implement json.Marshaler. +func (m *AlertConditionsValue) UnmarshalJSON(b []byte) error { + return (&protojson.UnmarshalOptions{ + DiscardUnknown: true, + }).Unmarshal(b, m) +} diff --git a/api/proto-go/core/monitor/alert/pb/alert.pb.go b/api/proto-go/core/monitor/alert/pb/alert.pb.go index 57b0f9c80cf..c8b2d044103 100644 --- a/api/proto-go/core/monitor/alert/pb/alert.pb.go +++ b/api/proto-go/core/monitor/alert/pb/alert.pb.go @@ -4494,19 +4494,20 @@ type Alert struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - AlertScope string `protobuf:"bytes,3,opt,name=alertScope,proto3" json:"alertScope,omitempty"` - AlertScopeId string `protobuf:"bytes,4,opt,name=alertScopeId,proto3" json:"alertScopeId,omitempty"` - Enable bool `protobuf:"varint,5,opt,name=enable,proto3" json:"enable,omitempty"` - Rules []*AlertExpression `protobuf:"bytes,6,rep,name=rules,proto3" json:"rules,omitempty"` - Notifies []*AlertNotify `protobuf:"bytes,7,rep,name=notifies,proto3" json:"notifies,omitempty"` - Filters map[string]*structpb.Value `protobuf:"bytes,8,rep,name=filters,proto3" json:"filters,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - Attributes map[string]*structpb.Value `protobuf:"bytes,9,rep,name=attributes,proto3" json:"attributes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - ClusterNames []string `protobuf:"bytes,10,rep,name=clusterNames,proto3" json:"clusterNames,omitempty"` - Domain string `protobuf:"bytes,11,opt,name=domain,proto3" json:"domain,omitempty"` - CreateTime int64 `protobuf:"varint,12,opt,name=createTime,proto3" json:"createTime,omitempty"` - UpdateTime int64 `protobuf:"varint,13,opt,name=updateTime,proto3" json:"updateTime,omitempty"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + AlertScope string `protobuf:"bytes,3,opt,name=alertScope,proto3" json:"alertScope,omitempty"` + AlertScopeId string `protobuf:"bytes,4,opt,name=alertScopeId,proto3" json:"alertScopeId,omitempty"` + Enable bool `protobuf:"varint,5,opt,name=enable,proto3" json:"enable,omitempty"` + Rules []*AlertExpression `protobuf:"bytes,6,rep,name=rules,proto3" json:"rules,omitempty"` + Notifies []*AlertNotify `protobuf:"bytes,7,rep,name=notifies,proto3" json:"notifies,omitempty"` + Filters map[string]*structpb.Value `protobuf:"bytes,8,rep,name=filters,proto3" json:"filters,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Attributes map[string]*structpb.Value `protobuf:"bytes,9,rep,name=attributes,proto3" json:"attributes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + ClusterNames []string `protobuf:"bytes,10,rep,name=clusterNames,proto3" json:"clusterNames,omitempty"` + Domain string `protobuf:"bytes,11,opt,name=domain,proto3" json:"domain,omitempty"` + CreateTime int64 `protobuf:"varint,12,opt,name=createTime,proto3" json:"createTime,omitempty"` + UpdateTime int64 `protobuf:"varint,13,opt,name=updateTime,proto3" json:"updateTime,omitempty"` + TriggerCondition []*TriggerCondition `protobuf:"bytes,14,rep,name=triggerCondition,proto3" json:"triggerCondition,omitempty"` } func (x *Alert) Reset() { @@ -4632,6 +4633,13 @@ func (x *Alert) GetUpdateTime() int64 { return 0 } +func (x *Alert) GetTriggerCondition() []*TriggerCondition { + if x != nil { + return x.TriggerCondition + } + return nil +} + type AlertExpression struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -4645,6 +4653,7 @@ type AlertExpression struct { IsRecover bool `protobuf:"varint,6,opt,name=isRecover,proto3" json:"isRecover,omitempty"` CreateTime int64 `protobuf:"varint,7,opt,name=createTime,proto3" json:"createTime,omitempty"` UpdateTime int64 `protobuf:"varint,8,opt,name=updateTime,proto3" json:"updateTime,omitempty"` + Level string `protobuf:"bytes,9,opt,name=level,proto3" json:"level,omitempty"` } func (x *AlertExpression) Reset() { @@ -4735,6 +4744,13 @@ func (x *AlertExpression) GetUpdateTime() int64 { return 0 } +func (x *AlertExpression) GetLevel() string { + if x != nil { + return x.Level + } + return "" +} + type AlertExpressionFunction struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -4820,6 +4836,7 @@ type AlertNotify struct { Silence *AlertNotifySilence `protobuf:"bytes,7,opt,name=silence,proto3" json:"silence,omitempty"` CreateTime int64 `protobuf:"varint,8,opt,name=createTime,proto3" json:"createTime,omitempty"` UpdateTime int64 `protobuf:"varint,9,opt,name=updateTime,proto3" json:"updateTime,omitempty"` + Level string `protobuf:"bytes,10,opt,name=level,proto3" json:"level,omitempty"` } func (x *AlertNotify) Reset() { @@ -4917,6 +4934,13 @@ func (x *AlertNotify) GetUpdateTime() int64 { return 0 } +func (x *AlertNotify) GetLevel() string { + if x != nil { + return x.Level + } + return "" +} + type NotifyGroup struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -5378,19 +5402,20 @@ type CreateAlertRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - AlertScope string `protobuf:"bytes,3,opt,name=alertScope,proto3" json:"alertScope,omitempty"` - AlertScopeId string `protobuf:"bytes,4,opt,name=alertScopeId,proto3" json:"alertScopeId,omitempty"` - Enable bool `protobuf:"varint,5,opt,name=enable,proto3" json:"enable,omitempty"` - Rules []*AlertExpression `protobuf:"bytes,6,rep,name=rules,proto3" json:"rules,omitempty"` - Notifies []*AlertNotify `protobuf:"bytes,7,rep,name=notifies,proto3" json:"notifies,omitempty"` - Filters map[string]*structpb.Value `protobuf:"bytes,8,rep,name=filters,proto3" json:"filters,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - Attributes map[string]*structpb.Value `protobuf:"bytes,9,rep,name=attributes,proto3" json:"attributes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - ClusterNames []string `protobuf:"bytes,10,rep,name=clusterNames,proto3" json:"clusterNames,omitempty"` - Domain string `protobuf:"bytes,11,opt,name=domain,proto3" json:"domain,omitempty"` - CreateTime int64 `protobuf:"varint,12,opt,name=createTime,proto3" json:"createTime,omitempty"` - UpdateTime int64 `protobuf:"varint,13,opt,name=updateTime,proto3" json:"updateTime,omitempty"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + AlertScope string `protobuf:"bytes,3,opt,name=alertScope,proto3" json:"alertScope,omitempty"` + AlertScopeId string `protobuf:"bytes,4,opt,name=alertScopeId,proto3" json:"alertScopeId,omitempty"` + Enable bool `protobuf:"varint,5,opt,name=enable,proto3" json:"enable,omitempty"` + Rules []*AlertExpression `protobuf:"bytes,6,rep,name=rules,proto3" json:"rules,omitempty"` + Notifies []*AlertNotify `protobuf:"bytes,7,rep,name=notifies,proto3" json:"notifies,omitempty"` + Filters map[string]*structpb.Value `protobuf:"bytes,8,rep,name=filters,proto3" json:"filters,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Attributes map[string]*structpb.Value `protobuf:"bytes,9,rep,name=attributes,proto3" json:"attributes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + ClusterNames []string `protobuf:"bytes,10,rep,name=clusterNames,proto3" json:"clusterNames,omitempty"` + Domain string `protobuf:"bytes,11,opt,name=domain,proto3" json:"domain,omitempty"` + CreateTime int64 `protobuf:"varint,12,opt,name=createTime,proto3" json:"createTime,omitempty"` + UpdateTime int64 `protobuf:"varint,13,opt,name=updateTime,proto3" json:"updateTime,omitempty"` + TriggerCondition []*TriggerCondition `protobuf:"bytes,14,rep,name=triggerCondition,proto3" json:"triggerCondition,omitempty"` } func (x *CreateAlertRequest) Reset() { @@ -5516,6 +5541,13 @@ func (x *CreateAlertRequest) GetUpdateTime() int64 { return 0 } +func (x *CreateAlertRequest) GetTriggerCondition() []*TriggerCondition { + if x != nil { + return x.TriggerCondition + } + return nil +} + type CreateAlertResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -5568,19 +5600,20 @@ type UpdateAlertRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - AlertScope string `protobuf:"bytes,3,opt,name=alertScope,proto3" json:"alertScope,omitempty"` - AlertScopeId string `protobuf:"bytes,4,opt,name=alertScopeId,proto3" json:"alertScopeId,omitempty"` - Enable bool `protobuf:"varint,5,opt,name=enable,proto3" json:"enable,omitempty"` - Rules []*AlertExpression `protobuf:"bytes,6,rep,name=rules,proto3" json:"rules,omitempty"` - Notifies []*AlertNotify `protobuf:"bytes,7,rep,name=notifies,proto3" json:"notifies,omitempty"` - Filters map[string]*structpb.Value `protobuf:"bytes,8,rep,name=filters,proto3" json:"filters,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - Attributes map[string]*structpb.Value `protobuf:"bytes,9,rep,name=attributes,proto3" json:"attributes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - ClusterNames []string `protobuf:"bytes,10,rep,name=clusterNames,proto3" json:"clusterNames,omitempty"` - Domain string `protobuf:"bytes,11,opt,name=domain,proto3" json:"domain,omitempty"` - CreateTime int64 `protobuf:"varint,12,opt,name=createTime,proto3" json:"createTime,omitempty"` - UpdateTime int64 `protobuf:"varint,13,opt,name=updateTime,proto3" json:"updateTime,omitempty"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + AlertScope string `protobuf:"bytes,3,opt,name=alertScope,proto3" json:"alertScope,omitempty"` + AlertScopeId string `protobuf:"bytes,4,opt,name=alertScopeId,proto3" json:"alertScopeId,omitempty"` + Enable bool `protobuf:"varint,5,opt,name=enable,proto3" json:"enable,omitempty"` + Rules []*AlertExpression `protobuf:"bytes,6,rep,name=rules,proto3" json:"rules,omitempty"` + Notifies []*AlertNotify `protobuf:"bytes,7,rep,name=notifies,proto3" json:"notifies,omitempty"` + Filters map[string]*structpb.Value `protobuf:"bytes,8,rep,name=filters,proto3" json:"filters,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Attributes map[string]*structpb.Value `protobuf:"bytes,9,rep,name=attributes,proto3" json:"attributes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + ClusterNames []string `protobuf:"bytes,10,rep,name=clusterNames,proto3" json:"clusterNames,omitempty"` + Domain string `protobuf:"bytes,11,opt,name=domain,proto3" json:"domain,omitempty"` + CreateTime int64 `protobuf:"varint,12,opt,name=createTime,proto3" json:"createTime,omitempty"` + UpdateTime int64 `protobuf:"varint,13,opt,name=updateTime,proto3" json:"updateTime,omitempty"` + TriggerCondition []*TriggerCondition `protobuf:"bytes,14,rep,name=triggerCondition,proto3" json:"triggerCondition,omitempty"` } func (x *UpdateAlertRequest) Reset() { @@ -5706,6 +5739,13 @@ func (x *UpdateAlertRequest) GetUpdateTime() int64 { return 0 } +func (x *UpdateAlertRequest) GetTriggerCondition() []*TriggerCondition { + if x != nil { + return x.TriggerCondition + } + return nil +} + type UpdateAlertResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -6272,19 +6312,20 @@ type CreateOrgAlertRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - AlertScope string `protobuf:"bytes,3,opt,name=alertScope,proto3" json:"alertScope,omitempty"` - AlertScopeId string `protobuf:"bytes,4,opt,name=alertScopeId,proto3" json:"alertScopeId,omitempty"` - Enable bool `protobuf:"varint,5,opt,name=enable,proto3" json:"enable,omitempty"` - Rules []*AlertExpression `protobuf:"bytes,6,rep,name=rules,proto3" json:"rules,omitempty"` - Notifies []*AlertNotify `protobuf:"bytes,7,rep,name=notifies,proto3" json:"notifies,omitempty"` - Filters map[string]*structpb.Value `protobuf:"bytes,8,rep,name=filters,proto3" json:"filters,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - Attributes map[string]*structpb.Value `protobuf:"bytes,9,rep,name=attributes,proto3" json:"attributes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - ClusterNames []string `protobuf:"bytes,10,rep,name=clusterNames,proto3" json:"clusterNames,omitempty"` - Domain string `protobuf:"bytes,11,opt,name=domain,proto3" json:"domain,omitempty"` - CreateTime int64 `protobuf:"varint,12,opt,name=createTime,proto3" json:"createTime,omitempty"` - UpdateTime int64 `protobuf:"varint,13,opt,name=updateTime,proto3" json:"updateTime,omitempty"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + AlertScope string `protobuf:"bytes,3,opt,name=alertScope,proto3" json:"alertScope,omitempty"` + AlertScopeId string `protobuf:"bytes,4,opt,name=alertScopeId,proto3" json:"alertScopeId,omitempty"` + Enable bool `protobuf:"varint,5,opt,name=enable,proto3" json:"enable,omitempty"` + Rules []*AlertExpression `protobuf:"bytes,6,rep,name=rules,proto3" json:"rules,omitempty"` + Notifies []*AlertNotify `protobuf:"bytes,7,rep,name=notifies,proto3" json:"notifies,omitempty"` + Filters map[string]*structpb.Value `protobuf:"bytes,8,rep,name=filters,proto3" json:"filters,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Attributes map[string]*structpb.Value `protobuf:"bytes,9,rep,name=attributes,proto3" json:"attributes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + ClusterNames []string `protobuf:"bytes,10,rep,name=clusterNames,proto3" json:"clusterNames,omitempty"` + Domain string `protobuf:"bytes,11,opt,name=domain,proto3" json:"domain,omitempty"` + CreateTime int64 `protobuf:"varint,12,opt,name=createTime,proto3" json:"createTime,omitempty"` + UpdateTime int64 `protobuf:"varint,13,opt,name=updateTime,proto3" json:"updateTime,omitempty"` + TriggerCondition []*TriggerCondition `protobuf:"bytes,14,rep,name=triggerCondition,proto3" json:"triggerCondition,omitempty"` } func (x *CreateOrgAlertRequest) Reset() { @@ -6410,6 +6451,76 @@ func (x *CreateOrgAlertRequest) GetUpdateTime() int64 { return 0 } +func (x *CreateOrgAlertRequest) GetTriggerCondition() []*TriggerCondition { + if x != nil { + return x.TriggerCondition + } + return nil +} + +type TriggerCondition struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Condition string `protobuf:"bytes,1,opt,name=condition,proto3" json:"condition,omitempty"` + Operator string `protobuf:"bytes,2,opt,name=operator,proto3" json:"operator,omitempty"` + Values string `protobuf:"bytes,3,opt,name=values,proto3" json:"values,omitempty"` +} + +func (x *TriggerCondition) Reset() { + *x = TriggerCondition{} + if protoimpl.UnsafeEnabled { + mi := &file_alert_proto_msgTypes[94] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TriggerCondition) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TriggerCondition) ProtoMessage() {} + +func (x *TriggerCondition) ProtoReflect() protoreflect.Message { + mi := &file_alert_proto_msgTypes[94] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TriggerCondition.ProtoReflect.Descriptor instead. +func (*TriggerCondition) Descriptor() ([]byte, []int) { + return file_alert_proto_rawDescGZIP(), []int{94} +} + +func (x *TriggerCondition) GetCondition() string { + if x != nil { + return x.Condition + } + return "" +} + +func (x *TriggerCondition) GetOperator() string { + if x != nil { + return x.Operator + } + return "" +} + +func (x *TriggerCondition) GetValues() string { + if x != nil { + return x.Values + } + return "" +} + type CreateOrgAlertResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -6421,7 +6532,7 @@ type CreateOrgAlertResponse struct { func (x *CreateOrgAlertResponse) Reset() { *x = CreateOrgAlertResponse{} if protoimpl.UnsafeEnabled { - mi := &file_alert_proto_msgTypes[94] + mi := &file_alert_proto_msgTypes[95] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6434,7 +6545,7 @@ func (x *CreateOrgAlertResponse) String() string { func (*CreateOrgAlertResponse) ProtoMessage() {} func (x *CreateOrgAlertResponse) ProtoReflect() protoreflect.Message { - mi := &file_alert_proto_msgTypes[94] + mi := &file_alert_proto_msgTypes[95] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6447,7 +6558,7 @@ func (x *CreateOrgAlertResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateOrgAlertResponse.ProtoReflect.Descriptor instead. func (*CreateOrgAlertResponse) Descriptor() ([]byte, []int) { - return file_alert_proto_rawDescGZIP(), []int{94} + return file_alert_proto_rawDescGZIP(), []int{95} } func (x *CreateOrgAlertResponse) GetId() uint64 { @@ -6462,25 +6573,26 @@ type UpdateOrgAlertRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - AlertScope string `protobuf:"bytes,3,opt,name=alertScope,proto3" json:"alertScope,omitempty"` - AlertScopeId string `protobuf:"bytes,4,opt,name=alertScopeId,proto3" json:"alertScopeId,omitempty"` - Enable bool `protobuf:"varint,5,opt,name=enable,proto3" json:"enable,omitempty"` - Rules []*AlertExpression `protobuf:"bytes,6,rep,name=rules,proto3" json:"rules,omitempty"` - Notifies []*AlertNotify `protobuf:"bytes,7,rep,name=notifies,proto3" json:"notifies,omitempty"` - Filters map[string]*structpb.Value `protobuf:"bytes,8,rep,name=filters,proto3" json:"filters,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - Attributes map[string]*structpb.Value `protobuf:"bytes,9,rep,name=attributes,proto3" json:"attributes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - ClusterNames []string `protobuf:"bytes,10,rep,name=clusterNames,proto3" json:"clusterNames,omitempty"` - Domain string `protobuf:"bytes,11,opt,name=domain,proto3" json:"domain,omitempty"` - CreateTime int64 `protobuf:"varint,12,opt,name=createTime,proto3" json:"createTime,omitempty"` - UpdateTime int64 `protobuf:"varint,13,opt,name=updateTime,proto3" json:"updateTime,omitempty"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + AlertScope string `protobuf:"bytes,3,opt,name=alertScope,proto3" json:"alertScope,omitempty"` + AlertScopeId string `protobuf:"bytes,4,opt,name=alertScopeId,proto3" json:"alertScopeId,omitempty"` + Enable bool `protobuf:"varint,5,opt,name=enable,proto3" json:"enable,omitempty"` + Rules []*AlertExpression `protobuf:"bytes,6,rep,name=rules,proto3" json:"rules,omitempty"` + Notifies []*AlertNotify `protobuf:"bytes,7,rep,name=notifies,proto3" json:"notifies,omitempty"` + Filters map[string]*structpb.Value `protobuf:"bytes,8,rep,name=filters,proto3" json:"filters,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Attributes map[string]*structpb.Value `protobuf:"bytes,9,rep,name=attributes,proto3" json:"attributes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + ClusterNames []string `protobuf:"bytes,10,rep,name=clusterNames,proto3" json:"clusterNames,omitempty"` + Domain string `protobuf:"bytes,11,opt,name=domain,proto3" json:"domain,omitempty"` + CreateTime int64 `protobuf:"varint,12,opt,name=createTime,proto3" json:"createTime,omitempty"` + UpdateTime int64 `protobuf:"varint,13,opt,name=updateTime,proto3" json:"updateTime,omitempty"` + TriggerCondition []*TriggerCondition `protobuf:"bytes,14,rep,name=triggerCondition,proto3" json:"triggerCondition,omitempty"` } func (x *UpdateOrgAlertRequest) Reset() { *x = UpdateOrgAlertRequest{} if protoimpl.UnsafeEnabled { - mi := &file_alert_proto_msgTypes[95] + mi := &file_alert_proto_msgTypes[96] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6493,7 +6605,7 @@ func (x *UpdateOrgAlertRequest) String() string { func (*UpdateOrgAlertRequest) ProtoMessage() {} func (x *UpdateOrgAlertRequest) ProtoReflect() protoreflect.Message { - mi := &file_alert_proto_msgTypes[95] + mi := &file_alert_proto_msgTypes[96] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6506,7 +6618,7 @@ func (x *UpdateOrgAlertRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateOrgAlertRequest.ProtoReflect.Descriptor instead. func (*UpdateOrgAlertRequest) Descriptor() ([]byte, []int) { - return file_alert_proto_rawDescGZIP(), []int{95} + return file_alert_proto_rawDescGZIP(), []int{96} } func (x *UpdateOrgAlertRequest) GetId() uint64 { @@ -6600,6 +6712,13 @@ func (x *UpdateOrgAlertRequest) GetUpdateTime() int64 { return 0 } +func (x *UpdateOrgAlertRequest) GetTriggerCondition() []*TriggerCondition { + if x != nil { + return x.TriggerCondition + } + return nil +} + type UpdateOrgAlertResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -6609,7 +6728,7 @@ type UpdateOrgAlertResponse struct { func (x *UpdateOrgAlertResponse) Reset() { *x = UpdateOrgAlertResponse{} if protoimpl.UnsafeEnabled { - mi := &file_alert_proto_msgTypes[96] + mi := &file_alert_proto_msgTypes[97] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6622,7 +6741,7 @@ func (x *UpdateOrgAlertResponse) String() string { func (*UpdateOrgAlertResponse) ProtoMessage() {} func (x *UpdateOrgAlertResponse) ProtoReflect() protoreflect.Message { - mi := &file_alert_proto_msgTypes[96] + mi := &file_alert_proto_msgTypes[97] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6635,7 +6754,7 @@ func (x *UpdateOrgAlertResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateOrgAlertResponse.ProtoReflect.Descriptor instead. func (*UpdateOrgAlertResponse) Descriptor() ([]byte, []int) { - return file_alert_proto_rawDescGZIP(), []int{96} + return file_alert_proto_rawDescGZIP(), []int{97} } type UpdateOrgAlertEnableRequest struct { @@ -6650,7 +6769,7 @@ type UpdateOrgAlertEnableRequest struct { func (x *UpdateOrgAlertEnableRequest) Reset() { *x = UpdateOrgAlertEnableRequest{} if protoimpl.UnsafeEnabled { - mi := &file_alert_proto_msgTypes[97] + mi := &file_alert_proto_msgTypes[98] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6663,7 +6782,7 @@ func (x *UpdateOrgAlertEnableRequest) String() string { func (*UpdateOrgAlertEnableRequest) ProtoMessage() {} func (x *UpdateOrgAlertEnableRequest) ProtoReflect() protoreflect.Message { - mi := &file_alert_proto_msgTypes[97] + mi := &file_alert_proto_msgTypes[98] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6676,7 +6795,7 @@ func (x *UpdateOrgAlertEnableRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateOrgAlertEnableRequest.ProtoReflect.Descriptor instead. func (*UpdateOrgAlertEnableRequest) Descriptor() ([]byte, []int) { - return file_alert_proto_rawDescGZIP(), []int{97} + return file_alert_proto_rawDescGZIP(), []int{98} } func (x *UpdateOrgAlertEnableRequest) GetId() int64 { @@ -6702,7 +6821,7 @@ type UpdateOrgAlertEnableResponse struct { func (x *UpdateOrgAlertEnableResponse) Reset() { *x = UpdateOrgAlertEnableResponse{} if protoimpl.UnsafeEnabled { - mi := &file_alert_proto_msgTypes[98] + mi := &file_alert_proto_msgTypes[99] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6715,7 +6834,7 @@ func (x *UpdateOrgAlertEnableResponse) String() string { func (*UpdateOrgAlertEnableResponse) ProtoMessage() {} func (x *UpdateOrgAlertEnableResponse) ProtoReflect() protoreflect.Message { - mi := &file_alert_proto_msgTypes[98] + mi := &file_alert_proto_msgTypes[99] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6728,7 +6847,7 @@ func (x *UpdateOrgAlertEnableResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateOrgAlertEnableResponse.ProtoReflect.Descriptor instead. func (*UpdateOrgAlertEnableResponse) Descriptor() ([]byte, []int) { - return file_alert_proto_rawDescGZIP(), []int{98} + return file_alert_proto_rawDescGZIP(), []int{99} } type DeleteOrgAlertRequest struct { @@ -6742,7 +6861,7 @@ type DeleteOrgAlertRequest struct { func (x *DeleteOrgAlertRequest) Reset() { *x = DeleteOrgAlertRequest{} if protoimpl.UnsafeEnabled { - mi := &file_alert_proto_msgTypes[99] + mi := &file_alert_proto_msgTypes[100] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6755,7 +6874,7 @@ func (x *DeleteOrgAlertRequest) String() string { func (*DeleteOrgAlertRequest) ProtoMessage() {} func (x *DeleteOrgAlertRequest) ProtoReflect() protoreflect.Message { - mi := &file_alert_proto_msgTypes[99] + mi := &file_alert_proto_msgTypes[100] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6768,7 +6887,7 @@ func (x *DeleteOrgAlertRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteOrgAlertRequest.ProtoReflect.Descriptor instead. func (*DeleteOrgAlertRequest) Descriptor() ([]byte, []int) { - return file_alert_proto_rawDescGZIP(), []int{99} + return file_alert_proto_rawDescGZIP(), []int{100} } func (x *DeleteOrgAlertRequest) GetId() int64 { @@ -6789,7 +6908,7 @@ type DeleteOrgAlertResponse struct { func (x *DeleteOrgAlertResponse) Reset() { *x = DeleteOrgAlertResponse{} if protoimpl.UnsafeEnabled { - mi := &file_alert_proto_msgTypes[100] + mi := &file_alert_proto_msgTypes[101] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6802,7 +6921,7 @@ func (x *DeleteOrgAlertResponse) String() string { func (*DeleteOrgAlertResponse) ProtoMessage() {} func (x *DeleteOrgAlertResponse) ProtoReflect() protoreflect.Message { - mi := &file_alert_proto_msgTypes[100] + mi := &file_alert_proto_msgTypes[101] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6815,7 +6934,7 @@ func (x *DeleteOrgAlertResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteOrgAlertResponse.ProtoReflect.Descriptor instead. func (*DeleteOrgAlertResponse) Descriptor() ([]byte, []int) { - return file_alert_proto_rawDescGZIP(), []int{100} + return file_alert_proto_rawDescGZIP(), []int{101} } func (x *DeleteOrgAlertResponse) GetData() map[string]*structpb.Value { @@ -6836,7 +6955,7 @@ type GetAlertRecordAttrRequest struct { func (x *GetAlertRecordAttrRequest) Reset() { *x = GetAlertRecordAttrRequest{} if protoimpl.UnsafeEnabled { - mi := &file_alert_proto_msgTypes[101] + mi := &file_alert_proto_msgTypes[102] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6849,7 +6968,7 @@ func (x *GetAlertRecordAttrRequest) String() string { func (*GetAlertRecordAttrRequest) ProtoMessage() {} func (x *GetAlertRecordAttrRequest) ProtoReflect() protoreflect.Message { - mi := &file_alert_proto_msgTypes[101] + mi := &file_alert_proto_msgTypes[102] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6862,7 +6981,7 @@ func (x *GetAlertRecordAttrRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetAlertRecordAttrRequest.ProtoReflect.Descriptor instead. func (*GetAlertRecordAttrRequest) Descriptor() ([]byte, []int) { - return file_alert_proto_rawDescGZIP(), []int{101} + return file_alert_proto_rawDescGZIP(), []int{102} } func (x *GetAlertRecordAttrRequest) GetScope() string { @@ -6883,7 +7002,7 @@ type GetAlertRecordAttrResponse struct { func (x *GetAlertRecordAttrResponse) Reset() { *x = GetAlertRecordAttrResponse{} if protoimpl.UnsafeEnabled { - mi := &file_alert_proto_msgTypes[102] + mi := &file_alert_proto_msgTypes[103] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6896,7 +7015,7 @@ func (x *GetAlertRecordAttrResponse) String() string { func (*GetAlertRecordAttrResponse) ProtoMessage() {} func (x *GetAlertRecordAttrResponse) ProtoReflect() protoreflect.Message { - mi := &file_alert_proto_msgTypes[102] + mi := &file_alert_proto_msgTypes[103] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6909,7 +7028,7 @@ func (x *GetAlertRecordAttrResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetAlertRecordAttrResponse.ProtoReflect.Descriptor instead. func (*GetAlertRecordAttrResponse) Descriptor() ([]byte, []int) { - return file_alert_proto_rawDescGZIP(), []int{102} + return file_alert_proto_rawDescGZIP(), []int{103} } func (x *GetAlertRecordAttrResponse) GetData() *AlertRecordAttr { @@ -6932,7 +7051,7 @@ type AlertRecordAttr struct { func (x *AlertRecordAttr) Reset() { *x = AlertRecordAttr{} if protoimpl.UnsafeEnabled { - mi := &file_alert_proto_msgTypes[103] + mi := &file_alert_proto_msgTypes[104] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6945,7 +7064,7 @@ func (x *AlertRecordAttr) String() string { func (*AlertRecordAttr) ProtoMessage() {} func (x *AlertRecordAttr) ProtoReflect() protoreflect.Message { - mi := &file_alert_proto_msgTypes[103] + mi := &file_alert_proto_msgTypes[104] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6958,7 +7077,7 @@ func (x *AlertRecordAttr) ProtoReflect() protoreflect.Message { // Deprecated: Use AlertRecordAttr.ProtoReflect.Descriptor instead. func (*AlertRecordAttr) Descriptor() ([]byte, []int) { - return file_alert_proto_rawDescGZIP(), []int{103} + return file_alert_proto_rawDescGZIP(), []int{104} } func (x *AlertRecordAttr) GetAlertState() []*DisplayKey { @@ -7001,7 +7120,7 @@ type QueryAlertRecordRequest struct { func (x *QueryAlertRecordRequest) Reset() { *x = QueryAlertRecordRequest{} if protoimpl.UnsafeEnabled { - mi := &file_alert_proto_msgTypes[104] + mi := &file_alert_proto_msgTypes[105] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7014,7 +7133,7 @@ func (x *QueryAlertRecordRequest) String() string { func (*QueryAlertRecordRequest) ProtoMessage() {} func (x *QueryAlertRecordRequest) ProtoReflect() protoreflect.Message { - mi := &file_alert_proto_msgTypes[104] + mi := &file_alert_proto_msgTypes[105] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7027,7 +7146,7 @@ func (x *QueryAlertRecordRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use QueryAlertRecordRequest.ProtoReflect.Descriptor instead. func (*QueryAlertRecordRequest) Descriptor() ([]byte, []int) { - return file_alert_proto_rawDescGZIP(), []int{104} + return file_alert_proto_rawDescGZIP(), []int{105} } func (x *QueryAlertRecordRequest) GetScope() string { @@ -7104,7 +7223,7 @@ type QueryAlertRecordResponse struct { func (x *QueryAlertRecordResponse) Reset() { *x = QueryAlertRecordResponse{} if protoimpl.UnsafeEnabled { - mi := &file_alert_proto_msgTypes[105] + mi := &file_alert_proto_msgTypes[106] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7117,7 +7236,7 @@ func (x *QueryAlertRecordResponse) String() string { func (*QueryAlertRecordResponse) ProtoMessage() {} func (x *QueryAlertRecordResponse) ProtoReflect() protoreflect.Message { - mi := &file_alert_proto_msgTypes[105] + mi := &file_alert_proto_msgTypes[106] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7130,7 +7249,7 @@ func (x *QueryAlertRecordResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use QueryAlertRecordResponse.ProtoReflect.Descriptor instead. func (*QueryAlertRecordResponse) Descriptor() ([]byte, []int) { - return file_alert_proto_rawDescGZIP(), []int{105} + return file_alert_proto_rawDescGZIP(), []int{106} } func (x *QueryAlertRecordResponse) GetData() *ListResult { @@ -7152,7 +7271,7 @@ type ListResult struct { func (x *ListResult) Reset() { *x = ListResult{} if protoimpl.UnsafeEnabled { - mi := &file_alert_proto_msgTypes[106] + mi := &file_alert_proto_msgTypes[107] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7165,7 +7284,7 @@ func (x *ListResult) String() string { func (*ListResult) ProtoMessage() {} func (x *ListResult) ProtoReflect() protoreflect.Message { - mi := &file_alert_proto_msgTypes[106] + mi := &file_alert_proto_msgTypes[107] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7178,7 +7297,7 @@ func (x *ListResult) ProtoReflect() protoreflect.Message { // Deprecated: Use ListResult.ProtoReflect.Descriptor instead. func (*ListResult) Descriptor() ([]byte, []int) { - return file_alert_proto_rawDescGZIP(), []int{106} + return file_alert_proto_rawDescGZIP(), []int{107} } func (x *ListResult) GetList() []*AlertRecord { @@ -7225,7 +7344,7 @@ type AlertRecord struct { func (x *AlertRecord) Reset() { *x = AlertRecord{} if protoimpl.UnsafeEnabled { - mi := &file_alert_proto_msgTypes[107] + mi := &file_alert_proto_msgTypes[108] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7238,7 +7357,7 @@ func (x *AlertRecord) String() string { func (*AlertRecord) ProtoMessage() {} func (x *AlertRecord) ProtoReflect() protoreflect.Message { - mi := &file_alert_proto_msgTypes[107] + mi := &file_alert_proto_msgTypes[108] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7251,7 +7370,7 @@ func (x *AlertRecord) ProtoReflect() protoreflect.Message { // Deprecated: Use AlertRecord.ProtoReflect.Descriptor instead. func (*AlertRecord) Descriptor() ([]byte, []int) { - return file_alert_proto_rawDescGZIP(), []int{107} + return file_alert_proto_rawDescGZIP(), []int{108} } func (x *AlertRecord) GetGroupId() string { @@ -7405,7 +7524,7 @@ type GetAlertRecordRequest struct { func (x *GetAlertRecordRequest) Reset() { *x = GetAlertRecordRequest{} if protoimpl.UnsafeEnabled { - mi := &file_alert_proto_msgTypes[108] + mi := &file_alert_proto_msgTypes[109] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7418,7 +7537,7 @@ func (x *GetAlertRecordRequest) String() string { func (*GetAlertRecordRequest) ProtoMessage() {} func (x *GetAlertRecordRequest) ProtoReflect() protoreflect.Message { - mi := &file_alert_proto_msgTypes[108] + mi := &file_alert_proto_msgTypes[109] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7431,7 +7550,7 @@ func (x *GetAlertRecordRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetAlertRecordRequest.ProtoReflect.Descriptor instead. func (*GetAlertRecordRequest) Descriptor() ([]byte, []int) { - return file_alert_proto_rawDescGZIP(), []int{108} + return file_alert_proto_rawDescGZIP(), []int{109} } func (x *GetAlertRecordRequest) GetGroupId() string { @@ -7452,7 +7571,7 @@ type GetAlertRecordResponse struct { func (x *GetAlertRecordResponse) Reset() { *x = GetAlertRecordResponse{} if protoimpl.UnsafeEnabled { - mi := &file_alert_proto_msgTypes[109] + mi := &file_alert_proto_msgTypes[110] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7465,7 +7584,7 @@ func (x *GetAlertRecordResponse) String() string { func (*GetAlertRecordResponse) ProtoMessage() {} func (x *GetAlertRecordResponse) ProtoReflect() protoreflect.Message { - mi := &file_alert_proto_msgTypes[109] + mi := &file_alert_proto_msgTypes[110] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7478,7 +7597,7 @@ func (x *GetAlertRecordResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetAlertRecordResponse.ProtoReflect.Descriptor instead. func (*GetAlertRecordResponse) Descriptor() ([]byte, []int) { - return file_alert_proto_rawDescGZIP(), []int{109} + return file_alert_proto_rawDescGZIP(), []int{110} } func (x *GetAlertRecordResponse) GetData() *AlertRecord { @@ -7502,7 +7621,7 @@ type QueryAlertHistoryRequest struct { func (x *QueryAlertHistoryRequest) Reset() { *x = QueryAlertHistoryRequest{} if protoimpl.UnsafeEnabled { - mi := &file_alert_proto_msgTypes[110] + mi := &file_alert_proto_msgTypes[111] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7515,7 +7634,7 @@ func (x *QueryAlertHistoryRequest) String() string { func (*QueryAlertHistoryRequest) ProtoMessage() {} func (x *QueryAlertHistoryRequest) ProtoReflect() protoreflect.Message { - mi := &file_alert_proto_msgTypes[110] + mi := &file_alert_proto_msgTypes[111] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7528,7 +7647,7 @@ func (x *QueryAlertHistoryRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use QueryAlertHistoryRequest.ProtoReflect.Descriptor instead. func (*QueryAlertHistoryRequest) Descriptor() ([]byte, []int) { - return file_alert_proto_rawDescGZIP(), []int{110} + return file_alert_proto_rawDescGZIP(), []int{111} } func (x *QueryAlertHistoryRequest) GetGroupId() string { @@ -7570,7 +7689,7 @@ type QueryAlertHistoryResponse struct { func (x *QueryAlertHistoryResponse) Reset() { *x = QueryAlertHistoryResponse{} if protoimpl.UnsafeEnabled { - mi := &file_alert_proto_msgTypes[111] + mi := &file_alert_proto_msgTypes[112] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7583,7 +7702,7 @@ func (x *QueryAlertHistoryResponse) String() string { func (*QueryAlertHistoryResponse) ProtoMessage() {} func (x *QueryAlertHistoryResponse) ProtoReflect() protoreflect.Message { - mi := &file_alert_proto_msgTypes[111] + mi := &file_alert_proto_msgTypes[112] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7596,7 +7715,7 @@ func (x *QueryAlertHistoryResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use QueryAlertHistoryResponse.ProtoReflect.Descriptor instead. func (*QueryAlertHistoryResponse) Descriptor() ([]byte, []int) { - return file_alert_proto_rawDescGZIP(), []int{111} + return file_alert_proto_rawDescGZIP(), []int{112} } func (x *QueryAlertHistoryResponse) GetData() []*AlertHistory { @@ -7622,7 +7741,7 @@ type AlertHistory struct { func (x *AlertHistory) Reset() { *x = AlertHistory{} if protoimpl.UnsafeEnabled { - mi := &file_alert_proto_msgTypes[112] + mi := &file_alert_proto_msgTypes[113] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7635,7 +7754,7 @@ func (x *AlertHistory) String() string { func (*AlertHistory) ProtoMessage() {} func (x *AlertHistory) ProtoReflect() protoreflect.Message { - mi := &file_alert_proto_msgTypes[112] + mi := &file_alert_proto_msgTypes[113] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7648,7 +7767,7 @@ func (x *AlertHistory) ProtoReflect() protoreflect.Message { // Deprecated: Use AlertHistory.ProtoReflect.Descriptor instead. func (*AlertHistory) Descriptor() ([]byte, []int) { - return file_alert_proto_rawDescGZIP(), []int{112} + return file_alert_proto_rawDescGZIP(), []int{113} } func (x *AlertHistory) GetGroupId() string { @@ -7727,7 +7846,7 @@ type CreateAlertIssueRequest struct { func (x *CreateAlertIssueRequest) Reset() { *x = CreateAlertIssueRequest{} if protoimpl.UnsafeEnabled { - mi := &file_alert_proto_msgTypes[113] + mi := &file_alert_proto_msgTypes[114] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7740,7 +7859,7 @@ func (x *CreateAlertIssueRequest) String() string { func (*CreateAlertIssueRequest) ProtoMessage() {} func (x *CreateAlertIssueRequest) ProtoReflect() protoreflect.Message { - mi := &file_alert_proto_msgTypes[113] + mi := &file_alert_proto_msgTypes[114] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7753,7 +7872,7 @@ func (x *CreateAlertIssueRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateAlertIssueRequest.ProtoReflect.Descriptor instead. func (*CreateAlertIssueRequest) Descriptor() ([]byte, []int) { - return file_alert_proto_rawDescGZIP(), []int{113} + return file_alert_proto_rawDescGZIP(), []int{114} } func (x *CreateAlertIssueRequest) GetGroupId() string { @@ -7941,7 +8060,7 @@ type IssueManHour struct { func (x *IssueManHour) Reset() { *x = IssueManHour{} if protoimpl.UnsafeEnabled { - mi := &file_alert_proto_msgTypes[114] + mi := &file_alert_proto_msgTypes[115] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7954,7 +8073,7 @@ func (x *IssueManHour) String() string { func (*IssueManHour) ProtoMessage() {} func (x *IssueManHour) ProtoReflect() protoreflect.Message { - mi := &file_alert_proto_msgTypes[114] + mi := &file_alert_proto_msgTypes[115] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7967,7 +8086,7 @@ func (x *IssueManHour) ProtoReflect() protoreflect.Message { // Deprecated: Use IssueManHour.ProtoReflect.Descriptor instead. func (*IssueManHour) Descriptor() ([]byte, []int) { - return file_alert_proto_rawDescGZIP(), []int{114} + return file_alert_proto_rawDescGZIP(), []int{115} } func (x *IssueManHour) GetEstimateTime() int64 { @@ -8028,7 +8147,7 @@ type CreateAlertIssueResponse struct { func (x *CreateAlertIssueResponse) Reset() { *x = CreateAlertIssueResponse{} if protoimpl.UnsafeEnabled { - mi := &file_alert_proto_msgTypes[115] + mi := &file_alert_proto_msgTypes[116] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8041,7 +8160,7 @@ func (x *CreateAlertIssueResponse) String() string { func (*CreateAlertIssueResponse) ProtoMessage() {} func (x *CreateAlertIssueResponse) ProtoReflect() protoreflect.Message { - mi := &file_alert_proto_msgTypes[115] + mi := &file_alert_proto_msgTypes[116] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8054,7 +8173,7 @@ func (x *CreateAlertIssueResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateAlertIssueResponse.ProtoReflect.Descriptor instead. func (*CreateAlertIssueResponse) Descriptor() ([]byte, []int) { - return file_alert_proto_rawDescGZIP(), []int{115} + return file_alert_proto_rawDescGZIP(), []int{116} } type UpdateAlertIssueRequest struct { @@ -8091,7 +8210,7 @@ type UpdateAlertIssueRequest struct { func (x *UpdateAlertIssueRequest) Reset() { *x = UpdateAlertIssueRequest{} if protoimpl.UnsafeEnabled { - mi := &file_alert_proto_msgTypes[116] + mi := &file_alert_proto_msgTypes[117] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8104,7 +8223,7 @@ func (x *UpdateAlertIssueRequest) String() string { func (*UpdateAlertIssueRequest) ProtoMessage() {} func (x *UpdateAlertIssueRequest) ProtoReflect() protoreflect.Message { - mi := &file_alert_proto_msgTypes[116] + mi := &file_alert_proto_msgTypes[117] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8117,7 +8236,7 @@ func (x *UpdateAlertIssueRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateAlertIssueRequest.ProtoReflect.Descriptor instead. func (*UpdateAlertIssueRequest) Descriptor() ([]byte, []int) { - return file_alert_proto_rawDescGZIP(), []int{116} + return file_alert_proto_rawDescGZIP(), []int{117} } func (x *UpdateAlertIssueRequest) GetGroupId() string { @@ -8297,7 +8416,7 @@ type UpdateAlertIssueResponse struct { func (x *UpdateAlertIssueResponse) Reset() { *x = UpdateAlertIssueResponse{} if protoimpl.UnsafeEnabled { - mi := &file_alert_proto_msgTypes[117] + mi := &file_alert_proto_msgTypes[118] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8310,7 +8429,7 @@ func (x *UpdateAlertIssueResponse) String() string { func (*UpdateAlertIssueResponse) ProtoMessage() {} func (x *UpdateAlertIssueResponse) ProtoReflect() protoreflect.Message { - mi := &file_alert_proto_msgTypes[117] + mi := &file_alert_proto_msgTypes[118] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8323,7 +8442,7 @@ func (x *UpdateAlertIssueResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateAlertIssueResponse.ProtoReflect.Descriptor instead. func (*UpdateAlertIssueResponse) Descriptor() ([]byte, []int) { - return file_alert_proto_rawDescGZIP(), []int{117} + return file_alert_proto_rawDescGZIP(), []int{118} } type GetOrgAlertRecordAttrRequest struct { @@ -8335,7 +8454,7 @@ type GetOrgAlertRecordAttrRequest struct { func (x *GetOrgAlertRecordAttrRequest) Reset() { *x = GetOrgAlertRecordAttrRequest{} if protoimpl.UnsafeEnabled { - mi := &file_alert_proto_msgTypes[118] + mi := &file_alert_proto_msgTypes[119] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8348,7 +8467,7 @@ func (x *GetOrgAlertRecordAttrRequest) String() string { func (*GetOrgAlertRecordAttrRequest) ProtoMessage() {} func (x *GetOrgAlertRecordAttrRequest) ProtoReflect() protoreflect.Message { - mi := &file_alert_proto_msgTypes[118] + mi := &file_alert_proto_msgTypes[119] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8361,7 +8480,7 @@ func (x *GetOrgAlertRecordAttrRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetOrgAlertRecordAttrRequest.ProtoReflect.Descriptor instead. func (*GetOrgAlertRecordAttrRequest) Descriptor() ([]byte, []int) { - return file_alert_proto_rawDescGZIP(), []int{118} + return file_alert_proto_rawDescGZIP(), []int{119} } type GetOrgAlertRecordAttrResponse struct { @@ -8375,7 +8494,7 @@ type GetOrgAlertRecordAttrResponse struct { func (x *GetOrgAlertRecordAttrResponse) Reset() { *x = GetOrgAlertRecordAttrResponse{} if protoimpl.UnsafeEnabled { - mi := &file_alert_proto_msgTypes[119] + mi := &file_alert_proto_msgTypes[120] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8388,7 +8507,7 @@ func (x *GetOrgAlertRecordAttrResponse) String() string { func (*GetOrgAlertRecordAttrResponse) ProtoMessage() {} func (x *GetOrgAlertRecordAttrResponse) ProtoReflect() protoreflect.Message { - mi := &file_alert_proto_msgTypes[119] + mi := &file_alert_proto_msgTypes[120] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8401,7 +8520,7 @@ func (x *GetOrgAlertRecordAttrResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetOrgAlertRecordAttrResponse.ProtoReflect.Descriptor instead. func (*GetOrgAlertRecordAttrResponse) Descriptor() ([]byte, []int) { - return file_alert_proto_rawDescGZIP(), []int{119} + return file_alert_proto_rawDescGZIP(), []int{120} } func (x *GetOrgAlertRecordAttrResponse) GetData() *AlertRecordAttr { @@ -8428,7 +8547,7 @@ type QueryOrgAlertRecordRequest struct { func (x *QueryOrgAlertRecordRequest) Reset() { *x = QueryOrgAlertRecordRequest{} if protoimpl.UnsafeEnabled { - mi := &file_alert_proto_msgTypes[120] + mi := &file_alert_proto_msgTypes[121] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8441,7 +8560,7 @@ func (x *QueryOrgAlertRecordRequest) String() string { func (*QueryOrgAlertRecordRequest) ProtoMessage() {} func (x *QueryOrgAlertRecordRequest) ProtoReflect() protoreflect.Message { - mi := &file_alert_proto_msgTypes[120] + mi := &file_alert_proto_msgTypes[121] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8454,7 +8573,7 @@ func (x *QueryOrgAlertRecordRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use QueryOrgAlertRecordRequest.ProtoReflect.Descriptor instead. func (*QueryOrgAlertRecordRequest) Descriptor() ([]byte, []int) { - return file_alert_proto_rawDescGZIP(), []int{120} + return file_alert_proto_rawDescGZIP(), []int{121} } func (x *QueryOrgAlertRecordRequest) GetAlertGroup() []string { @@ -8524,7 +8643,7 @@ type QueryOrgHostsAlertRecordRequest struct { func (x *QueryOrgHostsAlertRecordRequest) Reset() { *x = QueryOrgHostsAlertRecordRequest{} if protoimpl.UnsafeEnabled { - mi := &file_alert_proto_msgTypes[121] + mi := &file_alert_proto_msgTypes[122] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8537,7 +8656,7 @@ func (x *QueryOrgHostsAlertRecordRequest) String() string { func (*QueryOrgHostsAlertRecordRequest) ProtoMessage() {} func (x *QueryOrgHostsAlertRecordRequest) ProtoReflect() protoreflect.Message { - mi := &file_alert_proto_msgTypes[121] + mi := &file_alert_proto_msgTypes[122] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8550,7 +8669,7 @@ func (x *QueryOrgHostsAlertRecordRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use QueryOrgHostsAlertRecordRequest.ProtoReflect.Descriptor instead. func (*QueryOrgHostsAlertRecordRequest) Descriptor() ([]byte, []int) { - return file_alert_proto_rawDescGZIP(), []int{121} + return file_alert_proto_rawDescGZIP(), []int{122} } func (x *QueryOrgHostsAlertRecordRequest) GetClusters() []*ClusterReq { @@ -8621,7 +8740,7 @@ type ClusterReq struct { func (x *ClusterReq) Reset() { *x = ClusterReq{} if protoimpl.UnsafeEnabled { - mi := &file_alert_proto_msgTypes[122] + mi := &file_alert_proto_msgTypes[123] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8634,7 +8753,7 @@ func (x *ClusterReq) String() string { func (*ClusterReq) ProtoMessage() {} func (x *ClusterReq) ProtoReflect() protoreflect.Message { - mi := &file_alert_proto_msgTypes[122] + mi := &file_alert_proto_msgTypes[123] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8647,7 +8766,7 @@ func (x *ClusterReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ClusterReq.ProtoReflect.Descriptor instead. func (*ClusterReq) Descriptor() ([]byte, []int) { - return file_alert_proto_rawDescGZIP(), []int{122} + return file_alert_proto_rawDescGZIP(), []int{123} } func (x *ClusterReq) GetClusterName() string { @@ -8675,7 +8794,7 @@ type QueryOrgAlertRecordResponse struct { func (x *QueryOrgAlertRecordResponse) Reset() { *x = QueryOrgAlertRecordResponse{} if protoimpl.UnsafeEnabled { - mi := &file_alert_proto_msgTypes[123] + mi := &file_alert_proto_msgTypes[124] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8688,7 +8807,7 @@ func (x *QueryOrgAlertRecordResponse) String() string { func (*QueryOrgAlertRecordResponse) ProtoMessage() {} func (x *QueryOrgAlertRecordResponse) ProtoReflect() protoreflect.Message { - mi := &file_alert_proto_msgTypes[123] + mi := &file_alert_proto_msgTypes[124] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8701,7 +8820,7 @@ func (x *QueryOrgAlertRecordResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use QueryOrgAlertRecordResponse.ProtoReflect.Descriptor instead. func (*QueryOrgAlertRecordResponse) Descriptor() ([]byte, []int) { - return file_alert_proto_rawDescGZIP(), []int{123} + return file_alert_proto_rawDescGZIP(), []int{124} } func (x *QueryOrgAlertRecordResponse) GetData() *ListResult { @@ -8722,7 +8841,7 @@ type GetOrgAlertRecordRequest struct { func (x *GetOrgAlertRecordRequest) Reset() { *x = GetOrgAlertRecordRequest{} if protoimpl.UnsafeEnabled { - mi := &file_alert_proto_msgTypes[124] + mi := &file_alert_proto_msgTypes[125] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8735,7 +8854,7 @@ func (x *GetOrgAlertRecordRequest) String() string { func (*GetOrgAlertRecordRequest) ProtoMessage() {} func (x *GetOrgAlertRecordRequest) ProtoReflect() protoreflect.Message { - mi := &file_alert_proto_msgTypes[124] + mi := &file_alert_proto_msgTypes[125] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8748,7 +8867,7 @@ func (x *GetOrgAlertRecordRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetOrgAlertRecordRequest.ProtoReflect.Descriptor instead. func (*GetOrgAlertRecordRequest) Descriptor() ([]byte, []int) { - return file_alert_proto_rawDescGZIP(), []int{124} + return file_alert_proto_rawDescGZIP(), []int{125} } func (x *GetOrgAlertRecordRequest) GetGroupId() string { @@ -8769,7 +8888,7 @@ type GetOrgAlertRecordResponse struct { func (x *GetOrgAlertRecordResponse) Reset() { *x = GetOrgAlertRecordResponse{} if protoimpl.UnsafeEnabled { - mi := &file_alert_proto_msgTypes[125] + mi := &file_alert_proto_msgTypes[126] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8782,7 +8901,7 @@ func (x *GetOrgAlertRecordResponse) String() string { func (*GetOrgAlertRecordResponse) ProtoMessage() {} func (x *GetOrgAlertRecordResponse) ProtoReflect() protoreflect.Message { - mi := &file_alert_proto_msgTypes[125] + mi := &file_alert_proto_msgTypes[126] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8795,7 +8914,7 @@ func (x *GetOrgAlertRecordResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetOrgAlertRecordResponse.ProtoReflect.Descriptor instead. func (*GetOrgAlertRecordResponse) Descriptor() ([]byte, []int) { - return file_alert_proto_rawDescGZIP(), []int{125} + return file_alert_proto_rawDescGZIP(), []int{126} } func (x *GetOrgAlertRecordResponse) GetData() *AlertRecord { @@ -8819,7 +8938,7 @@ type QueryOrgAlertHistoryRequest struct { func (x *QueryOrgAlertHistoryRequest) Reset() { *x = QueryOrgAlertHistoryRequest{} if protoimpl.UnsafeEnabled { - mi := &file_alert_proto_msgTypes[126] + mi := &file_alert_proto_msgTypes[127] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8832,7 +8951,7 @@ func (x *QueryOrgAlertHistoryRequest) String() string { func (*QueryOrgAlertHistoryRequest) ProtoMessage() {} func (x *QueryOrgAlertHistoryRequest) ProtoReflect() protoreflect.Message { - mi := &file_alert_proto_msgTypes[126] + mi := &file_alert_proto_msgTypes[127] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8845,7 +8964,7 @@ func (x *QueryOrgAlertHistoryRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use QueryOrgAlertHistoryRequest.ProtoReflect.Descriptor instead. func (*QueryOrgAlertHistoryRequest) Descriptor() ([]byte, []int) { - return file_alert_proto_rawDescGZIP(), []int{126} + return file_alert_proto_rawDescGZIP(), []int{127} } func (x *QueryOrgAlertHistoryRequest) GetGroupId() string { @@ -8887,7 +9006,7 @@ type QueryOrgAlertHistoryResponse struct { func (x *QueryOrgAlertHistoryResponse) Reset() { *x = QueryOrgAlertHistoryResponse{} if protoimpl.UnsafeEnabled { - mi := &file_alert_proto_msgTypes[127] + mi := &file_alert_proto_msgTypes[128] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8900,7 +9019,7 @@ func (x *QueryOrgAlertHistoryResponse) String() string { func (*QueryOrgAlertHistoryResponse) ProtoMessage() {} func (x *QueryOrgAlertHistoryResponse) ProtoReflect() protoreflect.Message { - mi := &file_alert_proto_msgTypes[127] + mi := &file_alert_proto_msgTypes[128] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8913,7 +9032,7 @@ func (x *QueryOrgAlertHistoryResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use QueryOrgAlertHistoryResponse.ProtoReflect.Descriptor instead. func (*QueryOrgAlertHistoryResponse) Descriptor() ([]byte, []int) { - return file_alert_proto_rawDescGZIP(), []int{127} + return file_alert_proto_rawDescGZIP(), []int{128} } func (x *QueryOrgAlertHistoryResponse) GetData() []*AlertHistory { @@ -8957,7 +9076,7 @@ type CreateOrgAlertIssueRequest struct { func (x *CreateOrgAlertIssueRequest) Reset() { *x = CreateOrgAlertIssueRequest{} if protoimpl.UnsafeEnabled { - mi := &file_alert_proto_msgTypes[128] + mi := &file_alert_proto_msgTypes[129] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8970,7 +9089,7 @@ func (x *CreateOrgAlertIssueRequest) String() string { func (*CreateOrgAlertIssueRequest) ProtoMessage() {} func (x *CreateOrgAlertIssueRequest) ProtoReflect() protoreflect.Message { - mi := &file_alert_proto_msgTypes[128] + mi := &file_alert_proto_msgTypes[129] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8983,7 +9102,7 @@ func (x *CreateOrgAlertIssueRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateOrgAlertIssueRequest.ProtoReflect.Descriptor instead. func (*CreateOrgAlertIssueRequest) Descriptor() ([]byte, []int) { - return file_alert_proto_rawDescGZIP(), []int{128} + return file_alert_proto_rawDescGZIP(), []int{129} } func (x *CreateOrgAlertIssueRequest) GetGroupId() string { @@ -9165,7 +9284,7 @@ type CreateOrgAlertIssueResponse struct { func (x *CreateOrgAlertIssueResponse) Reset() { *x = CreateOrgAlertIssueResponse{} if protoimpl.UnsafeEnabled { - mi := &file_alert_proto_msgTypes[129] + mi := &file_alert_proto_msgTypes[130] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9178,7 +9297,7 @@ func (x *CreateOrgAlertIssueResponse) String() string { func (*CreateOrgAlertIssueResponse) ProtoMessage() {} func (x *CreateOrgAlertIssueResponse) ProtoReflect() protoreflect.Message { - mi := &file_alert_proto_msgTypes[129] + mi := &file_alert_proto_msgTypes[130] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9191,7 +9310,7 @@ func (x *CreateOrgAlertIssueResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateOrgAlertIssueResponse.ProtoReflect.Descriptor instead. func (*CreateOrgAlertIssueResponse) Descriptor() ([]byte, []int) { - return file_alert_proto_rawDescGZIP(), []int{129} + return file_alert_proto_rawDescGZIP(), []int{130} } func (x *CreateOrgAlertIssueResponse) GetData() uint64 { @@ -9234,7 +9353,7 @@ type UpdateOrgAlertIssueRequest struct { func (x *UpdateOrgAlertIssueRequest) Reset() { *x = UpdateOrgAlertIssueRequest{} if protoimpl.UnsafeEnabled { - mi := &file_alert_proto_msgTypes[130] + mi := &file_alert_proto_msgTypes[131] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9247,7 +9366,7 @@ func (x *UpdateOrgAlertIssueRequest) String() string { func (*UpdateOrgAlertIssueRequest) ProtoMessage() {} func (x *UpdateOrgAlertIssueRequest) ProtoReflect() protoreflect.Message { - mi := &file_alert_proto_msgTypes[130] + mi := &file_alert_proto_msgTypes[131] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9260,7 +9379,7 @@ func (x *UpdateOrgAlertIssueRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateOrgAlertIssueRequest.ProtoReflect.Descriptor instead. func (*UpdateOrgAlertIssueRequest) Descriptor() ([]byte, []int) { - return file_alert_proto_rawDescGZIP(), []int{130} + return file_alert_proto_rawDescGZIP(), []int{131} } func (x *UpdateOrgAlertIssueRequest) GetGroupId() string { @@ -9433,7 +9552,7 @@ type UpdateOrgAlertIssueResponse struct { func (x *UpdateOrgAlertIssueResponse) Reset() { *x = UpdateOrgAlertIssueResponse{} if protoimpl.UnsafeEnabled { - mi := &file_alert_proto_msgTypes[131] + mi := &file_alert_proto_msgTypes[132] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9446,7 +9565,7 @@ func (x *UpdateOrgAlertIssueResponse) String() string { func (*UpdateOrgAlertIssueResponse) ProtoMessage() {} func (x *UpdateOrgAlertIssueResponse) ProtoReflect() protoreflect.Message { - mi := &file_alert_proto_msgTypes[131] + mi := &file_alert_proto_msgTypes[132] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9459,211 +9578,541 @@ func (x *UpdateOrgAlertIssueResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateOrgAlertIssueResponse.ProtoReflect.Descriptor instead. func (*UpdateOrgAlertIssueResponse) Descriptor() ([]byte, []int) { - return file_alert_proto_rawDescGZIP(), []int{131} + return file_alert_proto_rawDescGZIP(), []int{132} } -var File_alert_proto protoreflect.FileDescriptor +type GetAlertConditionsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -var file_alert_proto_rawDesc = []byte{ - 0x0a, 0x0b, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x17, 0x65, - 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, - 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, - 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x1a, 0x36, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, - 0x6d, 0x77, 0x69, 0x74, 0x6b, 0x6f, 0x77, 0x2f, 0x67, 0x6f, 0x2d, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x2d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x76, 0x61, 0x6c, 0x69, - 0x64, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x61, 0x0a, 0x1b, 0x51, - 0x75, 0x65, 0x72, 0x79, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x4d, 0x65, 0x74, - 0x72, 0x69, 0x63, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, - 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, - 0x63, 0x6f, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x49, 0x64, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x49, 0x64, 0x22, 0x5d, - 0x0a, 0x1c, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, - 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, - 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x65, - 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, - 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, - 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xd8, 0x02, - 0x0a, 0x10, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, - 0x63, 0x73, 0x12, 0x3d, 0x0a, 0x07, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, - 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x4d, 0x65, - 0x74, 0x72, 0x69, 0x63, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x07, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, - 0x73, 0x12, 0x4f, 0x0a, 0x11, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x65, - 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x65, - 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, - 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, - 0x11, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, - 0x72, 0x73, 0x12, 0x4b, 0x0a, 0x0f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x4f, 0x70, 0x65, 0x72, - 0x61, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x65, 0x72, - 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, - 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x0f, - 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x12, - 0x43, 0x0a, 0x0a, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x04, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, - 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x44, 0x69, - 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4b, 0x65, 0x79, 0x52, 0x0a, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, - 0x61, 0x74, 0x6f, 0x72, 0x12, 0x22, 0x0a, 0x0c, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x53, 0x61, - 0x6d, 0x70, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6e, 0x6f, 0x74, 0x69, - 0x66, 0x79, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x22, 0xb7, 0x01, 0x0a, 0x0a, 0x4d, 0x65, 0x74, - 0x72, 0x69, 0x63, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x37, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, - 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, - 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4b, 0x65, 0x79, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x12, 0x3a, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x22, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, - 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, - 0x4d, 0x65, 0x74, 0x61, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x34, 0x0a, 0x04, - 0x74, 0x61, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x65, 0x72, 0x64, - 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, - 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x54, 0x61, 0x67, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x04, 0x74, 0x61, - 0x67, 0x73, 0x22, 0x38, 0x0a, 0x0a, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4b, 0x65, 0x79, - 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, - 0x65, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x22, 0x62, 0x0a, 0x09, - 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x39, 0x0a, 0x05, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, - 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, - 0x72, 0x74, 0x2e, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4b, 0x65, 0x79, 0x52, 0x05, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, - 0x22, 0x5c, 0x0a, 0x07, 0x54, 0x61, 0x67, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x35, 0x0a, 0x03, 0x74, - 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, - 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, - 0x72, 0x74, 0x2e, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4b, 0x65, 0x79, 0x52, 0x03, 0x74, - 0x61, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x22, 0x4a, - 0x0a, 0x08, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, - 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x18, 0x0a, 0x07, - 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x64, - 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x23, 0x0a, 0x21, 0x51, 0x75, - 0x65, 0x72, 0x79, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x4e, 0x6f, 0x74, 0x69, - 0x66, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, - 0x71, 0x0a, 0x22, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, - 0x65, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4b, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, - 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x51, 0x75, - 0x65, 0x72, 0x79, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x4e, 0x6f, 0x74, 0x69, - 0x66, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x64, 0x61, - 0x74, 0x61, 0x22, 0x5f, 0x0a, 0x1e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x75, 0x73, 0x74, 0x6f, - 0x6d, 0x69, 0x7a, 0x65, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, - 0x44, 0x61, 0x74, 0x61, 0x12, 0x3d, 0x0a, 0x07, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, - 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, - 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4b, 0x65, 0x79, 0x52, 0x07, 0x74, 0x61, 0x72, 0x67, - 0x65, 0x74, 0x73, 0x22, 0x26, 0x0a, 0x24, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4f, 0x72, 0x67, 0x43, - 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x54, 0x61, - 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x74, 0x0a, 0x25, 0x51, - 0x75, 0x65, 0x72, 0x79, 0x4f, 0x72, 0x67, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, - 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4b, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, - 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x51, 0x75, 0x65, - 0x72, 0x79, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x4e, 0x6f, 0x74, 0x69, 0x66, - 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x64, 0x61, 0x74, - 0x61, 0x22, 0x92, 0x01, 0x0a, 0x1a, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x75, 0x73, 0x74, 0x6f, - 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x49, - 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x49, 0x64, - 0x12, 0x1e, 0x0a, 0x06, 0x70, 0x61, 0x67, 0x65, 0x4e, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, - 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x10, 0x00, 0x52, 0x06, 0x70, 0x61, 0x67, 0x65, 0x4e, 0x6f, - 0x12, 0x24, 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x03, 0x42, 0x08, 0xe2, 0xdf, 0x1f, 0x04, 0x10, 0x00, 0x18, 0x65, 0x52, 0x08, 0x70, 0x61, - 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x22, 0x63, 0x0a, 0x1b, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, - 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x44, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, - 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x51, 0x75, - 0x65, 0x72, 0x79, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, - 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x74, 0x0a, 0x17, 0x51, - 0x75, 0x65, 0x72, 0x79, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, - 0x72, 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x43, 0x0a, 0x04, - 0x6c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x65, 0x72, 0x64, - 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, - 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, - 0x65, 0x72, 0x74, 0x4f, 0x76, 0x65, 0x72, 0x76, 0x69, 0x65, 0x77, 0x52, 0x04, 0x6c, 0x69, 0x73, - 0x74, 0x22, 0x8c, 0x02, 0x0a, 0x16, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, - 0x6c, 0x65, 0x72, 0x74, 0x4f, 0x76, 0x65, 0x72, 0x76, 0x69, 0x65, 0x77, 0x12, 0x0e, 0x0a, 0x02, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x16, 0x0a, 0x06, 0x77, 0x69, 0x6e, 0x64, - 0x6f, 0x77, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, - 0x12, 0x24, 0x0a, 0x0d, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, - 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x54, - 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x61, 0x73, 0x68, 0x62, 0x6f, - 0x61, 0x72, 0x64, 0x49, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x61, 0x73, - 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x6e, 0x61, 0x62, - 0x6c, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, - 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x08, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, - 0x12, 0x1e, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x09, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, - 0x22, 0x32, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, - 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x10, 0x00, - 0x52, 0x02, 0x69, 0x64, 0x22, 0x5e, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x43, 0x75, 0x73, 0x74, 0x6f, - 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x41, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x2d, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, - 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, - 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x04, - 0x64, 0x61, 0x74, 0x61, 0x22, 0xe3, 0x04, 0x0a, 0x14, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, - 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x0e, 0x0a, - 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x20, 0x0a, - 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x54, 0x79, 0x70, 0x65, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x54, 0x79, 0x70, - 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x53, 0x63, 0x6f, 0x70, - 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x49, - 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x53, 0x63, - 0x6f, 0x70, 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x5d, 0x0a, - 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x3d, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, - 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x43, 0x75, 0x73, 0x74, - 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, - 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x52, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x41, 0x0a, 0x05, - 0x72, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x65, 0x72, - 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, - 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, - 0x6c, 0x65, 0x72, 0x74, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x12, - 0x52, 0x0a, 0x08, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x36, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, - 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x43, 0x75, 0x73, 0x74, - 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, - 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x08, 0x6e, 0x6f, 0x74, 0x69, 0x66, - 0x69, 0x65, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, - 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, - 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, - 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, - 0x69, 0x6d, 0x65, 0x1a, 0x55, 0x0a, 0x0f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, - 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xea, 0x05, 0x0a, 0x12, 0x43, - 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x75, 0x6c, - 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, - 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x16, 0x0a, - 0x06, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x77, - 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x12, 0x51, 0x0a, 0x09, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, + ScopeType string `protobuf:"bytes,1,opt,name=scopeType,proto3" json:"scopeType,omitempty"` +} + +func (x *GetAlertConditionsRequest) Reset() { + *x = GetAlertConditionsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_alert_proto_msgTypes[133] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetAlertConditionsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetAlertConditionsRequest) ProtoMessage() {} + +func (x *GetAlertConditionsRequest) ProtoReflect() protoreflect.Message { + mi := &file_alert_proto_msgTypes[133] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetAlertConditionsRequest.ProtoReflect.Descriptor instead. +func (*GetAlertConditionsRequest) Descriptor() ([]byte, []int) { + return file_alert_proto_rawDescGZIP(), []int{133} +} + +func (x *GetAlertConditionsRequest) GetScopeType() string { + if x != nil { + return x.ScopeType + } + return "" +} + +type GetAlertConditionsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Data []*Conditions `protobuf:"bytes,1,rep,name=data,json=conditions,proto3" json:"data,omitempty"` +} + +func (x *GetAlertConditionsResponse) Reset() { + *x = GetAlertConditionsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_alert_proto_msgTypes[134] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetAlertConditionsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetAlertConditionsResponse) ProtoMessage() {} + +func (x *GetAlertConditionsResponse) ProtoReflect() protoreflect.Message { + mi := &file_alert_proto_msgTypes[134] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetAlertConditionsResponse.ProtoReflect.Descriptor instead. +func (*GetAlertConditionsResponse) Descriptor() ([]byte, []int) { + return file_alert_proto_rawDescGZIP(), []int{134} +} + +func (x *GetAlertConditionsResponse) GetData() []*Conditions { + if x != nil { + return x.Data + } + return nil +} + +type Conditions struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + Filters []string `protobuf:"bytes,2,rep,name=filters,proto3" json:"filters,omitempty"` + DisplayName string `protobuf:"bytes,3,opt,name=displayName,proto3" json:"displayName,omitempty"` + Index string `protobuf:"bytes,4,opt,name=index,proto3" json:"index,omitempty"` +} + +func (x *Conditions) Reset() { + *x = Conditions{} + if protoimpl.UnsafeEnabled { + mi := &file_alert_proto_msgTypes[135] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Conditions) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Conditions) ProtoMessage() {} + +func (x *Conditions) ProtoReflect() protoreflect.Message { + mi := &file_alert_proto_msgTypes[135] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Conditions.ProtoReflect.Descriptor instead. +func (*Conditions) Descriptor() ([]byte, []int) { + return file_alert_proto_rawDescGZIP(), []int{135} +} + +func (x *Conditions) GetKey() string { + if x != nil { + return x.Key + } + return "" +} + +func (x *Conditions) GetFilters() []string { + if x != nil { + return x.Filters + } + return nil +} + +func (x *Conditions) GetDisplayName() string { + if x != nil { + return x.DisplayName + } + return "" +} + +func (x *Conditions) GetIndex() string { + if x != nil { + return x.Index + } + return "" +} + +type GetAlertConditionsValueRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Condition string `protobuf:"bytes,1,opt,name=condition,proto3" json:"condition,omitempty"` + Filters map[string]string `protobuf:"bytes,2,rep,name=filters,proto3" json:"filters,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Index string `protobuf:"bytes,3,opt,name=index,proto3" json:"index,omitempty"` +} + +func (x *GetAlertConditionsValueRequest) Reset() { + *x = GetAlertConditionsValueRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_alert_proto_msgTypes[136] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetAlertConditionsValueRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetAlertConditionsValueRequest) ProtoMessage() {} + +func (x *GetAlertConditionsValueRequest) ProtoReflect() protoreflect.Message { + mi := &file_alert_proto_msgTypes[136] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetAlertConditionsValueRequest.ProtoReflect.Descriptor instead. +func (*GetAlertConditionsValueRequest) Descriptor() ([]byte, []int) { + return file_alert_proto_rawDescGZIP(), []int{136} +} + +func (x *GetAlertConditionsValueRequest) GetCondition() string { + if x != nil { + return x.Condition + } + return "" +} + +func (x *GetAlertConditionsValueRequest) GetFilters() map[string]string { + if x != nil { + return x.Filters + } + return nil +} + +func (x *GetAlertConditionsValueRequest) GetIndex() string { + if x != nil { + return x.Index + } + return "" +} + +type GetAlertConditionsValueResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Data *AlertConditionsValue `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"` +} + +func (x *GetAlertConditionsValueResponse) Reset() { + *x = GetAlertConditionsValueResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_alert_proto_msgTypes[137] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetAlertConditionsValueResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetAlertConditionsValueResponse) ProtoMessage() {} + +func (x *GetAlertConditionsValueResponse) ProtoReflect() protoreflect.Message { + mi := &file_alert_proto_msgTypes[137] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetAlertConditionsValueResponse.ProtoReflect.Descriptor instead. +func (*GetAlertConditionsValueResponse) Descriptor() ([]byte, []int) { + return file_alert_proto_rawDescGZIP(), []int{137} +} + +func (x *GetAlertConditionsValueResponse) GetData() *AlertConditionsValue { + if x != nil { + return x.Data + } + return nil +} + +type AlertConditionsValue struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + Options []*structpb.Value `protobuf:"bytes,2,rep,name=options,proto3" json:"options,omitempty"` +} + +func (x *AlertConditionsValue) Reset() { + *x = AlertConditionsValue{} + if protoimpl.UnsafeEnabled { + mi := &file_alert_proto_msgTypes[138] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AlertConditionsValue) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AlertConditionsValue) ProtoMessage() {} + +func (x *AlertConditionsValue) ProtoReflect() protoreflect.Message { + mi := &file_alert_proto_msgTypes[138] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AlertConditionsValue.ProtoReflect.Descriptor instead. +func (*AlertConditionsValue) Descriptor() ([]byte, []int) { + return file_alert_proto_rawDescGZIP(), []int{138} +} + +func (x *AlertConditionsValue) GetKey() string { + if x != nil { + return x.Key + } + return "" +} + +func (x *AlertConditionsValue) GetOptions() []*structpb.Value { + if x != nil { + return x.Options + } + return nil +} + +var File_alert_proto protoreflect.FileDescriptor + +var file_alert_proto_rawDesc = []byte{ + 0x0a, 0x0b, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x17, 0x65, + 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, + 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x36, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x6d, 0x77, 0x69, 0x74, 0x6b, 0x6f, 0x77, 0x2f, 0x67, 0x6f, 0x2d, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x2d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x76, 0x61, 0x6c, 0x69, + 0x64, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x61, 0x0a, 0x1b, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x4d, 0x65, 0x74, + 0x72, 0x69, 0x63, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, + 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, + 0x63, 0x6f, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x49, 0x64, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x49, 0x64, 0x22, 0x5d, + 0x0a, 0x1c, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, + 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, + 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x65, + 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, + 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, + 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xd8, 0x02, + 0x0a, 0x10, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, + 0x63, 0x73, 0x12, 0x3d, 0x0a, 0x07, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, + 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x4d, 0x65, + 0x74, 0x72, 0x69, 0x63, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x07, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, + 0x73, 0x12, 0x4f, 0x0a, 0x11, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x65, + 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, + 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, + 0x11, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, + 0x72, 0x73, 0x12, 0x4b, 0x0a, 0x0f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x4f, 0x70, 0x65, 0x72, + 0x61, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x65, 0x72, + 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, + 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x0f, + 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x12, + 0x43, 0x0a, 0x0a, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x04, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, + 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x44, 0x69, + 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4b, 0x65, 0x79, 0x52, 0x0a, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, + 0x61, 0x74, 0x6f, 0x72, 0x12, 0x22, 0x0a, 0x0c, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x53, 0x61, + 0x6d, 0x70, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6e, 0x6f, 0x74, 0x69, + 0x66, 0x79, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x22, 0xb7, 0x01, 0x0a, 0x0a, 0x4d, 0x65, 0x74, + 0x72, 0x69, 0x63, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x37, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, + 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, + 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4b, 0x65, 0x79, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x3a, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x22, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, + 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, + 0x4d, 0x65, 0x74, 0x61, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x34, 0x0a, 0x04, + 0x74, 0x61, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x65, 0x72, 0x64, + 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, + 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x54, 0x61, 0x67, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x04, 0x74, 0x61, + 0x67, 0x73, 0x22, 0x38, 0x0a, 0x0a, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4b, 0x65, 0x79, + 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, + 0x65, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x22, 0x62, 0x0a, 0x09, + 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x39, 0x0a, 0x05, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, + 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, + 0x72, 0x74, 0x2e, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4b, 0x65, 0x79, 0x52, 0x05, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, + 0x22, 0x5c, 0x0a, 0x07, 0x54, 0x61, 0x67, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x35, 0x0a, 0x03, 0x74, + 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, + 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, + 0x72, 0x74, 0x2e, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4b, 0x65, 0x79, 0x52, 0x03, 0x74, + 0x61, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x22, 0x4a, + 0x0a, 0x08, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x18, 0x0a, 0x07, + 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x64, + 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x23, 0x0a, 0x21, 0x51, 0x75, + 0x65, 0x72, 0x79, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x4e, 0x6f, 0x74, 0x69, + 0x66, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, + 0x71, 0x0a, 0x22, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, + 0x65, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4b, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, + 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x51, 0x75, + 0x65, 0x72, 0x79, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x4e, 0x6f, 0x74, 0x69, + 0x66, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x64, 0x61, + 0x74, 0x61, 0x22, 0x5f, 0x0a, 0x1e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x75, 0x73, 0x74, 0x6f, + 0x6d, 0x69, 0x7a, 0x65, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, + 0x44, 0x61, 0x74, 0x61, 0x12, 0x3d, 0x0a, 0x07, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, + 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, + 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4b, 0x65, 0x79, 0x52, 0x07, 0x74, 0x61, 0x72, 0x67, + 0x65, 0x74, 0x73, 0x22, 0x26, 0x0a, 0x24, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4f, 0x72, 0x67, 0x43, + 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x54, 0x61, + 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x74, 0x0a, 0x25, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x4f, 0x72, 0x67, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, + 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4b, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, + 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x51, 0x75, 0x65, + 0x72, 0x79, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x4e, 0x6f, 0x74, 0x69, 0x66, + 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x64, 0x61, 0x74, + 0x61, 0x22, 0x92, 0x01, 0x0a, 0x1a, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x75, 0x73, 0x74, 0x6f, + 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x49, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x49, 0x64, + 0x12, 0x1e, 0x0a, 0x06, 0x70, 0x61, 0x67, 0x65, 0x4e, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, + 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x10, 0x00, 0x52, 0x06, 0x70, 0x61, 0x67, 0x65, 0x4e, 0x6f, + 0x12, 0x24, 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x03, 0x42, 0x08, 0xe2, 0xdf, 0x1f, 0x04, 0x10, 0x00, 0x18, 0x65, 0x52, 0x08, 0x70, 0x61, + 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x22, 0x63, 0x0a, 0x1b, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, + 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x44, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, + 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x51, 0x75, + 0x65, 0x72, 0x79, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, + 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x74, 0x0a, 0x17, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, + 0x72, 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x43, 0x0a, 0x04, + 0x6c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x65, 0x72, 0x64, + 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, + 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, + 0x65, 0x72, 0x74, 0x4f, 0x76, 0x65, 0x72, 0x76, 0x69, 0x65, 0x77, 0x52, 0x04, 0x6c, 0x69, 0x73, + 0x74, 0x22, 0x8c, 0x02, 0x0a, 0x16, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, + 0x6c, 0x65, 0x72, 0x74, 0x4f, 0x76, 0x65, 0x72, 0x76, 0x69, 0x65, 0x77, 0x12, 0x0e, 0x0a, 0x02, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x16, 0x0a, 0x06, 0x77, 0x69, 0x6e, 0x64, + 0x6f, 0x77, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, + 0x12, 0x24, 0x0a, 0x0d, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, + 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x54, + 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x61, 0x73, 0x68, 0x62, 0x6f, + 0x61, 0x72, 0x64, 0x49, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x61, 0x73, + 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x6e, 0x61, 0x62, + 0x6c, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, + 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, + 0x12, 0x1e, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x09, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, + 0x22, 0x32, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, + 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x10, 0x00, + 0x52, 0x02, 0x69, 0x64, 0x22, 0x5e, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x43, 0x75, 0x73, 0x74, 0x6f, + 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x41, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x2d, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, + 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, + 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x04, + 0x64, 0x61, 0x74, 0x61, 0x22, 0xe3, 0x04, 0x0a, 0x14, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, + 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x0e, 0x0a, + 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x20, 0x0a, + 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x54, 0x79, 0x70, 0x65, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x53, 0x63, 0x6f, 0x70, + 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x49, + 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x53, 0x63, + 0x6f, 0x70, 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x5d, 0x0a, + 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x3d, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, + 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x43, 0x75, 0x73, 0x74, + 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, + 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x41, 0x0a, 0x05, + 0x72, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x65, 0x72, + 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, + 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, + 0x6c, 0x65, 0x72, 0x74, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x12, + 0x52, 0x0a, 0x08, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x36, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, + 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x43, 0x75, 0x73, 0x74, + 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, + 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x08, 0x6e, 0x6f, 0x74, 0x69, 0x66, + 0x69, 0x65, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, + 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, + 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, + 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, + 0x69, 0x6d, 0x65, 0x1a, 0x55, 0x0a, 0x0f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xea, 0x05, 0x0a, 0x12, 0x43, + 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x75, 0x6c, + 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, + 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x16, 0x0a, + 0x06, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x77, + 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x12, 0x51, 0x0a, 0x09, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x75, 0x6c, 0x65, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x66, @@ -10300,7 +10749,7 @@ var file_alert_proto_rawDesc = []byte{ 0x0b, 0x32, 0x1e, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x22, 0xc7, 0x05, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x22, 0x9e, 0x06, 0x0a, 0x05, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x61, @@ -10334,115 +10783,287 @@ var file_alert_proto_rawDesc = []byte{ 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x1a, 0x52, 0x0a, 0x0c, - 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, - 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2c, - 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, - 0x1a, 0x55, 0x0a, 0x0f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, + 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x55, 0x0a, 0x10, + 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, + 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, + 0x2e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x10, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x1a, 0x52, 0x0a, 0x0c, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x9f, 0x02, 0x0a, 0x0f, 0x41, 0x6c, 0x65, 0x72, - 0x74, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x72, - 0x75, 0x6c, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x72, 0x75, 0x6c, - 0x65, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x49, 0x6e, 0x64, 0x65, - 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x49, 0x6e, - 0x64, 0x65, 0x78, 0x12, 0x16, 0x0a, 0x06, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x06, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x12, 0x4e, 0x0a, 0x09, 0x66, - 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, - 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, - 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x45, 0x78, - 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x09, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x69, - 0x73, 0x52, 0x65, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, - 0x69, 0x73, 0x52, 0x65, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x75, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x75, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x99, 0x01, 0x0a, 0x17, 0x41, 0x6c, - 0x65, 0x72, 0x74, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x46, 0x75, 0x6e, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x61, - 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0a, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x6f, - 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, - 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x2c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xda, 0x02, 0x0a, 0x0b, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x4e, - 0x6f, 0x74, 0x69, 0x66, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x67, 0x72, 0x6f, - 0x75, 0x70, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, - 0x70, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x54, 0x79, 0x70, 0x65, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x54, 0x79, 0x70, - 0x65, 0x12, 0x46, 0x0a, 0x0b, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, + 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x55, 0x0a, 0x0f, 0x41, 0x74, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2c, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xb5, + 0x02, 0x0a, 0x0f, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, + 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, + 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x75, 0x6c, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x06, 0x72, 0x75, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x6c, + 0x65, 0x72, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, + 0x61, 0x6c, 0x65, 0x72, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x16, 0x0a, 0x06, 0x77, 0x69, + 0x6e, 0x64, 0x6f, 0x77, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x77, 0x69, 0x6e, 0x64, + 0x6f, 0x77, 0x12, 0x4e, 0x0a, 0x09, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, + 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, + 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, + 0x41, 0x6c, 0x65, 0x72, 0x74, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x46, + 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x73, 0x52, 0x65, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x69, 0x73, 0x52, 0x65, 0x63, 0x6f, 0x76, 0x65, 0x72, + 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, + 0x12, 0x1e, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, + 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x22, 0x99, 0x01, 0x0a, 0x17, 0x41, 0x6c, 0x65, 0x72, 0x74, + 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x67, 0x67, 0x72, + 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x67, + 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x6f, 0x70, 0x65, 0x72, + 0x61, 0x74, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x70, 0x65, 0x72, + 0x61, 0x74, 0x6f, 0x72, 0x12, 0x2c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x22, 0xf0, 0x02, 0x0a, 0x0b, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x4e, 0x6f, 0x74, 0x69, + 0x66, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, + 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, + 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, + 0x12, 0x1c, 0x0a, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x54, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x54, 0x79, 0x70, 0x65, 0x12, 0x46, + 0x0a, 0x0b, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, + 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x4e, 0x6f, + 0x74, 0x69, 0x66, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x0b, 0x6e, 0x6f, 0x74, 0x69, 0x66, + 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x69, 0x6e, 0x67, 0x64, 0x69, + 0x6e, 0x67, 0x55, 0x72, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x6e, + 0x67, 0x64, 0x69, 0x6e, 0x67, 0x55, 0x72, 0x6c, 0x12, 0x45, 0x0a, 0x07, 0x73, 0x69, 0x6c, 0x65, + 0x6e, 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x65, 0x72, 0x64, 0x61, + 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, + 0x65, 0x72, 0x74, 0x2e, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x53, + 0x69, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x07, 0x73, 0x69, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x12, + 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, + 0x1e, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, + 0x14, 0x0a, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x22, 0xfe, 0x01, 0x0a, 0x0b, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x63, 0x6f, + 0x70, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x63, + 0x6f, 0x70, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x63, 0x6f, 0x70, 0x65, + 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x49, + 0x64, 0x12, 0x3f, 0x0a, 0x07, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x18, 0x05, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, + 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x4e, 0x6f, 0x74, + 0x69, 0x66, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x07, 0x74, 0x61, 0x72, 0x67, 0x65, + 0x74, 0x73, 0x12, 0x38, 0x0a, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x18, 0x0a, 0x07, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x22, 0x5b, 0x0a, 0x0c, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, + 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x37, 0x0a, 0x06, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x65, 0x72, 0x64, + 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, + 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x06, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x73, 0x22, 0x3c, 0x0a, 0x06, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x1a, 0x0a, + 0x08, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x63, + 0x72, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x65, 0x63, 0x72, 0x65, + 0x74, 0x22, 0x56, 0x0a, 0x12, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, + 0x53, 0x69, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x12, 0x0a, + 0x04, 0x75, 0x6e, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x6e, 0x69, + 0x74, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x29, 0x0a, 0x0f, 0x47, 0x65, 0x74, + 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x10, 0x00, + 0x52, 0x02, 0x69, 0x64, 0x22, 0x46, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, - 0x2e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x0b, 0x6e, 0x6f, - 0x74, 0x69, 0x66, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x69, 0x6e, - 0x67, 0x64, 0x69, 0x6e, 0x67, 0x55, 0x72, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, - 0x64, 0x69, 0x6e, 0x67, 0x64, 0x69, 0x6e, 0x67, 0x55, 0x72, 0x6c, 0x12, 0x45, 0x0a, 0x07, 0x73, - 0x69, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x65, - 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, - 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x4e, 0x6f, 0x74, 0x69, - 0x66, 0x79, 0x53, 0x69, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x07, 0x73, 0x69, 0x6c, 0x65, 0x6e, - 0x63, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, - 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, - 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, - 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, - 0x6d, 0x65, 0x22, 0xfe, 0x01, 0x0a, 0x0b, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x47, 0x72, 0x6f, - 0x75, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, + 0x2e, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x2f, 0x0a, 0x15, + 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x03, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x10, 0x00, 0x52, 0x02, 0x69, 0x64, 0x22, 0x4c, 0x0a, + 0x16, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, + 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, + 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xc5, 0x06, 0x0a, 0x12, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x54, - 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x63, 0x6f, 0x70, 0x65, - 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x49, 0x64, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x49, 0x64, 0x12, 0x3f, - 0x0a, 0x07, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x25, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, - 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, - 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x07, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x12, - 0x38, 0x0a, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, - 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x72, 0x65, - 0x61, 0x74, 0x6f, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, - 0x74, 0x6f, 0x72, 0x22, 0x5b, 0x0a, 0x0c, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x54, 0x61, 0x72, - 0x67, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x37, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x53, + 0x63, 0x6f, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x6c, 0x65, 0x72, + 0x74, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x53, + 0x63, 0x6f, 0x70, 0x65, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x6c, + 0x65, 0x72, 0x74, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x6e, + 0x61, 0x62, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x65, 0x6e, 0x61, 0x62, + 0x6c, 0x65, 0x12, 0x3e, 0x0a, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x28, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, + 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x41, 0x6c, 0x65, 0x72, + 0x74, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x72, 0x75, 0x6c, + 0x65, 0x73, 0x12, 0x40, 0x0a, 0x08, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x65, 0x73, 0x18, 0x07, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, + 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x41, + 0x6c, 0x65, 0x72, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x52, 0x08, 0x6e, 0x6f, 0x74, 0x69, + 0x66, 0x69, 0x65, 0x73, 0x12, 0x52, 0x0a, 0x07, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x18, + 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, + 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, + 0x07, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x12, 0x5b, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x65, + 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, + 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, + 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x6f, 0x6d, + 0x61, 0x69, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, + 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, + 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, + 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, + 0x0d, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, + 0x65, 0x12, 0x55, 0x0a, 0x10, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x64, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x65, 0x72, + 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, + 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x43, 0x6f, 0x6e, + 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x43, + 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x52, 0x0a, 0x0c, 0x46, 0x69, 0x6c, 0x74, + 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2c, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x55, 0x0a, 0x0f, + 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, + 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, + 0x79, 0x12, 0x2c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, + 0x02, 0x38, 0x01, 0x22, 0x29, 0x0a, 0x13, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, + 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, + 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xcd, + 0x06, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x04, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x10, 0x00, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x53, 0x63, 0x6f, 0x70, + 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x49, + 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x53, 0x63, + 0x6f, 0x70, 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x3e, 0x0a, + 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x65, + 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, + 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x45, 0x78, 0x70, 0x72, + 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x40, 0x0a, + 0x08, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x24, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, + 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x4e, + 0x6f, 0x74, 0x69, 0x66, 0x79, 0x52, 0x08, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x65, 0x73, 0x12, + 0x52, 0x0a, 0x07, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x38, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, + 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x69, + 0x6c, 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x66, 0x69, 0x6c, 0x74, + 0x65, 0x72, 0x73, 0x12, 0x5b, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, - 0x74, 0x2e, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, - 0x22, 0x3c, 0x0a, 0x06, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, - 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, - 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x22, 0x56, - 0x0a, 0x12, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x53, 0x69, 0x6c, - 0x65, 0x6e, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x6e, - 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x6e, 0x69, 0x74, 0x12, 0x16, - 0x0a, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, - 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x29, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, - 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x10, 0x00, 0x52, 0x02, 0x69, - 0x64, 0x22, 0x46, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, - 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x41, 0x6c, - 0x65, 0x72, 0x74, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x2f, 0x0a, 0x15, 0x47, 0x65, 0x74, - 0x41, 0x6c, 0x65, 0x72, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x06, - 0xe2, 0xdf, 0x1f, 0x02, 0x10, 0x00, 0x52, 0x02, 0x69, 0x64, 0x22, 0x4c, 0x0a, 0x16, 0x47, 0x65, - 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, - 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x41, 0x6c, 0x65, - 0x72, 0x74, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xee, 0x05, 0x0a, 0x12, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, + 0x12, 0x22, 0x0a, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, + 0x18, 0x0a, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, + 0x61, 0x6d, 0x65, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x0b, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, + 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x55, 0x0a, 0x10, + 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, + 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, + 0x2e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x10, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x1a, 0x52, 0x0a, 0x0c, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x55, 0x0a, 0x0f, 0x41, 0x74, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2c, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x15, + 0x0a, 0x13, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4a, 0x0a, 0x18, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, + 0x6c, 0x65, 0x72, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x06, 0xe2, + 0xdf, 0x1f, 0x02, 0x10, 0x00, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x6e, 0x61, + 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, + 0x65, 0x22, 0x1b, 0x0a, 0x19, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, + 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2c, + 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, + 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x10, 0x00, 0x52, 0x02, 0x69, 0x64, 0x22, 0xb2, 0x01, 0x0a, + 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4a, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, + 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x2e, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, + 0x1a, 0x4f, 0x0a, 0x09, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, + 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, + 0x2c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, + 0x01, 0x22, 0x1a, 0x0a, 0x18, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4f, 0x72, 0x67, 0x41, 0x6c, 0x65, + 0x72, 0x74, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x5b, 0x0a, + 0x19, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4f, 0x72, 0x67, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x75, + 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x04, 0x64, 0x61, + 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, + 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, + 0x72, 0x74, 0x2e, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x75, 0x6c, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x5c, 0x0a, 0x14, 0x51, 0x75, + 0x65, 0x72, 0x79, 0x4f, 0x72, 0x67, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x06, 0x70, 0x61, 0x67, 0x65, 0x4e, 0x6f, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x03, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x10, 0x00, 0x52, 0x06, 0x70, 0x61, 0x67, 0x65, + 0x4e, 0x6f, 0x12, 0x24, 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x03, 0x42, 0x08, 0xe2, 0xdf, 0x1f, 0x04, 0x10, 0x00, 0x18, 0x65, 0x52, 0x08, + 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x22, 0x57, 0x0a, 0x15, 0x51, 0x75, 0x65, 0x72, + 0x79, 0x4f, 0x72, 0x67, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x3e, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x2a, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, + 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4f, + 0x72, 0x67, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x64, 0x61, 0x74, + 0x61, 0x22, 0x5d, 0x0a, 0x11, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4f, 0x72, 0x67, 0x41, 0x6c, 0x65, + 0x72, 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x32, 0x0a, 0x04, + 0x6c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x65, 0x72, 0x64, + 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, + 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, + 0x22, 0x32, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x44, + 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x10, 0x00, + 0x52, 0x02, 0x69, 0x64, 0x22, 0x4f, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x41, 0x6c, + 0x65, 0x72, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x32, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1e, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, + 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, + 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xce, 0x06, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x4f, 0x72, 0x67, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x53, 0x63, 0x6f, 0x70, @@ -10459,1200 +11080,1125 @@ var file_alert_proto_rawDesc = []byte{ 0x0b, 0x32, 0x24, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x52, 0x08, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x65, - 0x73, 0x12, 0x52, 0x0a, 0x07, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x18, 0x08, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, + 0x73, 0x12, 0x55, 0x0a, 0x07, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x18, 0x08, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, - 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x66, 0x69, - 0x6c, 0x74, 0x65, 0x72, 0x73, 0x12, 0x5b, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x65, 0x72, 0x64, 0x61, - 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, - 0x65, 0x72, 0x74, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, - 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x65, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, - 0x65, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, - 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x1e, - 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, - 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0d, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x1a, 0x52, - 0x0a, 0x0c, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, - 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, - 0x12, 0x2c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, - 0x38, 0x01, 0x1a, 0x55, 0x0a, 0x0f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x29, 0x0a, 0x13, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, - 0x64, 0x61, 0x74, 0x61, 0x22, 0xf6, 0x05, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, - 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x10, 0x00, 0x52, - 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x6c, 0x65, 0x72, 0x74, - 0x53, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x6c, 0x65, - 0x72, 0x74, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x6c, 0x65, 0x72, 0x74, - 0x53, 0x63, 0x6f, 0x70, 0x65, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, - 0x6c, 0x65, 0x72, 0x74, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x65, - 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x65, 0x6e, 0x61, - 0x62, 0x6c, 0x65, 0x12, 0x3e, 0x0a, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, - 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x41, 0x6c, 0x65, - 0x72, 0x74, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x72, 0x75, - 0x6c, 0x65, 0x73, 0x12, 0x40, 0x0a, 0x08, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x65, 0x73, 0x18, - 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, - 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, - 0x41, 0x6c, 0x65, 0x72, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x52, 0x08, 0x6e, 0x6f, 0x74, - 0x69, 0x66, 0x69, 0x65, 0x73, 0x12, 0x52, 0x0a, 0x07, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, - 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, - 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, - 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x52, 0x07, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x12, 0x5b, 0x0a, 0x0a, 0x61, 0x74, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, - 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, - 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x6c, - 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x6f, - 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, - 0x69, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, - 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, - 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, - 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, - 0x6d, 0x65, 0x1a, 0x52, 0x0a, 0x0c, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x55, 0x0a, 0x0f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2c, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x15, 0x0a, - 0x13, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4a, 0x0a, 0x18, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x6c, - 0x65, 0x72, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x06, 0xe2, 0xdf, - 0x1f, 0x02, 0x10, 0x00, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x6e, 0x61, 0x62, - 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, - 0x22, 0x1b, 0x0a, 0x19, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x45, - 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2c, 0x0a, - 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, - 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x10, 0x00, 0x52, 0x02, 0x69, 0x64, 0x22, 0xb2, 0x01, 0x0a, 0x13, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x4a, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x36, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, - 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, - 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x1a, - 0x4f, 0x0a, 0x09, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, + 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, + 0x07, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x12, 0x5e, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x65, + 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, + 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, + 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x41, 0x74, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x61, 0x74, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x63, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, + 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x16, 0x0a, 0x06, + 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x6f, + 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, + 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, + 0x6d, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x54, 0x69, 0x6d, 0x65, 0x12, 0x55, 0x0a, 0x10, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x43, + 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, + 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, + 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, + 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x74, 0x72, 0x69, 0x67, 0x67, + 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x52, 0x0a, 0x0c, 0x46, + 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, + 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2c, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, + 0x55, 0x0a, 0x0f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x64, 0x0a, 0x10, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, + 0x72, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, + 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, + 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x6f, 0x70, 0x65, 0x72, + 0x61, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x70, 0x65, 0x72, + 0x61, 0x74, 0x6f, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0x30, 0x0a, 0x16, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x04, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x10, 0x00, 0x52, 0x02, 0x69, 0x64, 0x22, 0xd6, + 0x06, 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x41, 0x6c, 0x65, 0x72, + 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x10, 0x00, 0x52, 0x02, 0x69, 0x64, + 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x53, 0x63, 0x6f, + 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x53, + 0x63, 0x6f, 0x70, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x53, 0x63, 0x6f, + 0x70, 0x65, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x6c, 0x65, 0x72, + 0x74, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x6e, 0x61, 0x62, + 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, + 0x12, 0x3e, 0x0a, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x28, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, + 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x45, + 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, + 0x12, 0x40, 0x0a, 0x08, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, + 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x41, 0x6c, 0x65, + 0x72, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x52, 0x08, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, + 0x65, 0x73, 0x12, 0x55, 0x0a, 0x07, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x18, 0x08, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, + 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x07, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x12, 0x5e, 0x0a, 0x0a, 0x61, 0x74, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3e, 0x2e, + 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, + 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, + 0x67, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x41, 0x74, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x61, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x63, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x16, 0x0a, + 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, + 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, + 0x69, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, + 0x69, 0x6d, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x55, 0x0a, 0x10, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, + 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x29, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, + 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, + 0x72, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x74, 0x72, 0x69, 0x67, + 0x67, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x52, 0x0a, 0x0c, + 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, - 0x22, 0x1a, 0x0a, 0x18, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4f, 0x72, 0x67, 0x41, 0x6c, 0x65, 0x72, - 0x74, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x5b, 0x0a, 0x19, - 0x51, 0x75, 0x65, 0x72, 0x79, 0x4f, 0x72, 0x67, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x75, 0x6c, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x04, 0x64, 0x61, 0x74, - 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, - 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, - 0x74, 0x2e, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x5c, 0x0a, 0x14, 0x51, 0x75, 0x65, - 0x72, 0x79, 0x4f, 0x72, 0x67, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x1e, 0x0a, 0x06, 0x70, 0x61, 0x67, 0x65, 0x4e, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x03, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x10, 0x00, 0x52, 0x06, 0x70, 0x61, 0x67, 0x65, 0x4e, - 0x6f, 0x12, 0x24, 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x03, 0x42, 0x08, 0xe2, 0xdf, 0x1f, 0x04, 0x10, 0x00, 0x18, 0x65, 0x52, 0x08, 0x70, - 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x22, 0x57, 0x0a, 0x15, 0x51, 0x75, 0x65, 0x72, 0x79, - 0x4f, 0x72, 0x67, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x3e, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, - 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, - 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4f, 0x72, - 0x67, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, - 0x22, 0x5d, 0x0a, 0x11, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4f, 0x72, 0x67, 0x41, 0x6c, 0x65, 0x72, - 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x32, 0x0a, 0x04, 0x6c, - 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x65, 0x72, 0x64, 0x61, - 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, - 0x65, 0x72, 0x74, 0x2e, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x22, - 0x32, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x44, 0x65, - 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x10, 0x00, 0x52, - 0x02, 0x69, 0x64, 0x22, 0x4f, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x41, 0x6c, 0x65, - 0x72, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x32, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, - 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, - 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x04, - 0x64, 0x61, 0x74, 0x61, 0x22, 0xf7, 0x05, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, - 0x72, 0x67, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, - 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x53, 0x63, 0x6f, 0x70, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x53, 0x63, 0x6f, - 0x70, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x53, 0x63, 0x6f, 0x70, 0x65, - 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x53, - 0x63, 0x6f, 0x70, 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x3e, - 0x0a, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, - 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, - 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x45, 0x78, 0x70, - 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x40, - 0x0a, 0x08, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x24, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, - 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x41, 0x6c, 0x65, 0x72, 0x74, - 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x52, 0x08, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x65, 0x73, - 0x12, 0x55, 0x0a, 0x07, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x3b, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, - 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x4f, 0x72, 0x67, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, - 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x12, 0x5e, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x65, 0x72, - 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, - 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x41, - 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x41, 0x74, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x61, 0x74, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x63, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x64, - 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x6f, 0x6d, - 0x61, 0x69, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, - 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, - 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, - 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, - 0x69, 0x6d, 0x65, 0x1a, 0x52, 0x0a, 0x0c, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x55, 0x0a, 0x0f, 0x41, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, - 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2c, 0x0a, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x30, - 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x41, 0x6c, 0x65, 0x72, 0x74, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x10, 0x00, 0x52, 0x02, 0x69, 0x64, - 0x22, 0xff, 0x05, 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x41, 0x6c, - 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x10, 0x00, 0x52, 0x02, - 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x53, - 0x63, 0x6f, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x6c, 0x65, 0x72, - 0x74, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x53, - 0x63, 0x6f, 0x70, 0x65, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x6c, - 0x65, 0x72, 0x74, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x6e, - 0x61, 0x62, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x65, 0x6e, 0x61, 0x62, - 0x6c, 0x65, 0x12, 0x3e, 0x0a, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x28, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, - 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x41, 0x6c, 0x65, 0x72, - 0x74, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x72, 0x75, 0x6c, - 0x65, 0x73, 0x12, 0x40, 0x0a, 0x08, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x65, 0x73, 0x18, 0x07, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, - 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x41, - 0x6c, 0x65, 0x72, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x52, 0x08, 0x6e, 0x6f, 0x74, 0x69, - 0x66, 0x69, 0x65, 0x73, 0x12, 0x55, 0x0a, 0x07, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x18, - 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, - 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x52, 0x07, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x12, 0x5e, 0x0a, 0x0a, 0x61, - 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x3e, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, - 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x4f, 0x72, 0x67, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, - 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, - 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x63, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, - 0x16, 0x0a, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x75, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x1a, 0x52, 0x0a, 0x0c, 0x46, 0x69, 0x6c, 0x74, 0x65, - 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2c, 0x0a, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x55, 0x0a, 0x0f, 0x41, - 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, - 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, - 0x12, 0x2c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, - 0x38, 0x01, 0x22, 0x18, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x41, - 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4d, 0x0a, 0x1b, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x45, 0x6e, - 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x10, 0x00, 0x52, - 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x1e, 0x0a, 0x1c, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x45, 0x6e, 0x61, - 0x62, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2f, 0x0a, 0x15, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, - 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x10, 0x00, 0x52, 0x02, 0x69, 0x64, 0x22, 0xb8, 0x01, 0x0a, - 0x16, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4d, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, - 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x4f, 0x0a, 0x09, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, + 0x1a, 0x55, 0x0a, 0x0f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x31, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x41, 0x6c, - 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x41, 0x74, 0x74, 0x72, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x22, 0x5a, 0x0a, 0x1a, 0x47, 0x65, - 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x41, 0x74, 0x74, 0x72, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, - 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, - 0x2e, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x41, 0x74, 0x74, 0x72, - 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xe0, 0x01, 0x0a, 0x0f, 0x41, 0x6c, 0x65, 0x72, 0x74, - 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x41, 0x74, 0x74, 0x72, 0x12, 0x43, 0x0a, 0x0a, 0x61, 0x6c, - 0x65, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, - 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, - 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, - 0x4b, 0x65, 0x79, 0x52, 0x0a, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, - 0x41, 0x0a, 0x09, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, - 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x44, 0x69, 0x73, - 0x70, 0x6c, 0x61, 0x79, 0x4b, 0x65, 0x79, 0x52, 0x09, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x54, 0x79, - 0x70, 0x65, 0x12, 0x45, 0x0a, 0x0b, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, - 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, + 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x18, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x4f, 0x72, 0x67, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x4d, 0x0a, 0x1b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x41, 0x6c, + 0x65, 0x72, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x06, 0xe2, 0xdf, + 0x1f, 0x02, 0x10, 0x00, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x6e, 0x61, 0x62, + 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, + 0x22, 0x1e, 0x0a, 0x1c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x41, 0x6c, 0x65, + 0x72, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x2f, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x41, 0x6c, 0x65, + 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x10, 0x00, 0x52, 0x02, 0x69, + 0x64, 0x22, 0xb8, 0x01, 0x0a, 0x16, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x41, + 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4d, 0x0a, 0x04, + 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x65, 0x72, 0x64, + 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, + 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x41, 0x6c, + 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x44, 0x61, 0x74, 0x61, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x4f, 0x0a, 0x09, 0x44, + 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2c, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x31, 0x0a, 0x19, + 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x41, 0x74, + 0x74, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x6f, + 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x22, + 0x5a, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, + 0x64, 0x41, 0x74, 0x74, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, + 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x65, 0x72, + 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, + 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, + 0x64, 0x41, 0x74, 0x74, 0x72, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xe0, 0x01, 0x0a, 0x0f, + 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x41, 0x74, 0x74, 0x72, 0x12, + 0x43, 0x0a, 0x0a, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, + 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x44, 0x69, + 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4b, 0x65, 0x79, 0x52, 0x0a, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x53, + 0x74, 0x61, 0x74, 0x65, 0x12, 0x41, 0x0a, 0x09, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x54, 0x79, 0x70, + 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, - 0x74, 0x2e, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4b, 0x65, 0x79, 0x52, 0x0b, 0x68, 0x61, - 0x6e, 0x64, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, 0xaf, 0x02, 0x0a, 0x17, 0x51, 0x75, - 0x65, 0x72, 0x79, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x73, - 0x63, 0x6f, 0x70, 0x65, 0x4b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, - 0x63, 0x6f, 0x70, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x6c, 0x65, 0x72, 0x74, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x6c, 0x65, - 0x72, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x6c, 0x65, 0x72, 0x74, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x6c, 0x65, - 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x6c, 0x65, 0x72, 0x74, - 0x54, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x61, 0x6c, 0x65, 0x72, - 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x53, - 0x74, 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x68, 0x61, 0x6e, 0x64, - 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x68, 0x61, 0x6e, 0x64, 0x6c, - 0x65, 0x72, 0x49, 0x64, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x68, 0x61, 0x6e, 0x64, - 0x6c, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x06, 0x70, 0x61, 0x67, 0x65, 0x4e, 0x6f, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x10, 0x00, 0x52, 0x06, 0x70, - 0x61, 0x67, 0x65, 0x4e, 0x6f, 0x12, 0x24, 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, - 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x42, 0x08, 0xe2, 0xdf, 0x1f, 0x04, 0x10, 0x00, 0x18, - 0x65, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x22, 0x53, 0x0a, 0x18, 0x51, - 0x75, 0x65, 0x72, 0x79, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x37, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, - 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, - 0x22, 0x5c, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x38, - 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x65, + 0x74, 0x2e, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4b, 0x65, 0x79, 0x52, 0x09, 0x61, 0x6c, + 0x65, 0x72, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x45, 0x0a, 0x0b, 0x68, 0x61, 0x6e, 0x64, 0x6c, + 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, - 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, - 0x72, 0x64, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, - 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x22, 0xd9, - 0x04, 0x0a, 0x0b, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x18, - 0x0a, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x70, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x1a, - 0x0a, 0x08, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x4b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x6c, - 0x65, 0x72, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, - 0x61, 0x6c, 0x65, 0x72, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, - 0x74, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, - 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, - 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, - 0x0a, 0x0a, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0a, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x24, - 0x0a, 0x0d, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x18, - 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, - 0x6e, 0x4b, 0x65, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x49, 0x64, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x49, 0x64, 0x12, 0x1c, - 0x0a, 0x09, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, - 0x72, 0x75, 0x6c, 0x65, 0x49, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x72, 0x75, - 0x6c, 0x65, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, - 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x69, 0x73, 0x73, 0x75, 0x65, 0x49, 0x64, 0x18, 0x0e, 0x20, - 0x01, 0x28, 0x04, 0x52, 0x07, 0x69, 0x73, 0x73, 0x75, 0x65, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, - 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0b, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1c, - 0x0a, 0x09, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x49, 0x64, 0x18, 0x10, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, - 0x61, 0x6c, 0x65, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x09, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x68, 0x61, - 0x6e, 0x64, 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x12, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, - 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, - 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x75, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, - 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x31, 0x0a, 0x15, 0x47, 0x65, - 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x22, 0x52, 0x0a, - 0x16, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, - 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, - 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x04, 0x64, 0x61, 0x74, - 0x61, 0x22, 0x82, 0x01, 0x0a, 0x18, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x6c, 0x65, 0x72, 0x74, - 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, - 0x0a, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, - 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x10, 0x00, 0x52, - 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x18, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x03, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x10, 0x00, 0x52, 0x03, 0x65, 0x6e, 0x64, - 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0x56, 0x0a, 0x19, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, - 0x6c, 0x65, 0x72, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x39, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x25, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, + 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4b, 0x65, + 0x79, 0x52, 0x0b, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, 0xaf, + 0x02, 0x0a, 0x17, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, + 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, + 0x6f, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, + 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x4b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x1e, 0x0a, 0x0a, + 0x61, 0x6c, 0x65, 0x72, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x0a, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x1e, 0x0a, 0x0a, + 0x61, 0x6c, 0x65, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x0a, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x0a, 0x09, + 0x61, 0x6c, 0x65, 0x72, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x09, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x68, 0x61, + 0x6e, 0x64, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x0b, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x0a, 0x09, + 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x49, 0x64, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x09, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x06, 0x70, 0x61, + 0x67, 0x65, 0x4e, 0x6f, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, + 0x10, 0x00, 0x52, 0x06, 0x70, 0x61, 0x67, 0x65, 0x4e, 0x6f, 0x12, 0x24, 0x0a, 0x08, 0x70, 0x61, + 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x42, 0x08, 0xe2, 0xdf, + 0x1f, 0x04, 0x10, 0x00, 0x18, 0x65, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, + 0x22, 0x53, 0x0a, 0x18, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, + 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x37, 0x0a, 0x04, + 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x65, 0x72, 0x64, + 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, + 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, + 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x5c, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x12, 0x38, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x24, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x41, 0x6c, 0x65, 0x72, - 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xb6, - 0x01, 0x0a, 0x0c, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, - 0x18, 0x0a, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, - 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x6c, 0x65, 0x72, 0x74, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x6c, 0x65, - 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x18, 0x0a, - 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x69, 0x73, 0x70, 0x6c, - 0x61, 0x79, 0x55, 0x72, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x69, 0x73, - 0x70, 0x6c, 0x61, 0x79, 0x55, 0x72, 0x6c, 0x22, 0xb6, 0x06, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x49, 0x73, 0x73, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x14, 0x0a, + 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, + 0x74, 0x61, 0x6c, 0x22, 0xd9, 0x04, 0x0a, 0x0b, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, + 0x6f, 0x72, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x14, 0x0a, + 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x63, + 0x6f, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x4b, 0x65, 0x79, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x4b, 0x65, 0x79, 0x12, + 0x1e, 0x0a, 0x0a, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, + 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x53, 0x74, + 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x6c, 0x65, 0x72, 0x74, + 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x54, 0x79, + 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x54, + 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x49, 0x6e, 0x64, 0x65, + 0x78, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x49, 0x6e, + 0x64, 0x65, 0x78, 0x12, 0x24, 0x0a, 0x0d, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x4b, 0x65, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x78, 0x70, 0x72, + 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x6c, 0x65, + 0x72, 0x74, 0x49, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x61, 0x6c, 0x65, 0x72, + 0x74, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x4e, 0x61, 0x6d, 0x65, + 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x75, 0x6c, 0x65, 0x49, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x06, 0x72, 0x75, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x69, 0x73, 0x73, 0x75, 0x65, + 0x49, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x69, 0x73, 0x73, 0x75, 0x65, 0x49, + 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, + 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x53, 0x74, + 0x61, 0x74, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x49, 0x64, + 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x49, + 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x11, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, + 0x1e, 0x0a, 0x0a, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x12, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x0a, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, + 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x13, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, + 0x1e, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x14, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, + 0x31, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, + 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x67, 0x72, 0x6f, 0x75, + 0x70, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, + 0x49, 0x64, 0x22, 0x52, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, + 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x04, + 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x65, 0x72, 0x64, + 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, + 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, + 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x82, 0x01, 0x0a, 0x18, 0x51, 0x75, 0x65, 0x72, 0x79, + 0x41, 0x6c, 0x65, 0x72, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x40, 0x0a, - 0x0d, 0x70, 0x6c, 0x61, 0x6e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x52, 0x0d, 0x70, 0x6c, 0x61, 0x6e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, - 0x42, 0x0a, 0x0e, 0x70, 0x6c, 0x61, 0x6e, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x41, - 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x52, 0x0e, 0x70, 0x6c, 0x61, 0x6e, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, - 0x64, 0x41, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, - 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x49, 0x44, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x70, 0x70, 0x49, 0x44, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x04, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x44, 0x12, 0x2e, 0x0a, 0x12, 0x74, 0x65, 0x73, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x1c, 0x0a, + 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x42, 0x06, 0xe2, 0xdf, + 0x1f, 0x02, 0x10, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x18, 0x0a, 0x03, 0x65, + 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x10, 0x00, + 0x52, 0x03, 0x65, 0x6e, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0x56, 0x0a, 0x19, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x39, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, + 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, + 0x2e, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x04, 0x64, + 0x61, 0x74, 0x61, 0x22, 0xb6, 0x01, 0x0a, 0x0c, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x48, 0x69, 0x73, + 0x74, 0x6f, 0x72, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x1c, + 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x1e, 0x0a, 0x0a, + 0x61, 0x6c, 0x65, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0a, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x14, 0x0a, 0x05, + 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, + 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, + 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x55, 0x72, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0a, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x55, 0x72, 0x6c, 0x22, 0xb6, 0x06, 0x0a, + 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x49, 0x73, 0x73, 0x75, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x67, 0x72, 0x6f, 0x75, + 0x70, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, + 0x49, 0x64, 0x12, 0x40, 0x0a, 0x0d, 0x70, 0x6c, 0x61, 0x6e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, + 0x64, 0x41, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0d, 0x70, 0x6c, 0x61, 0x6e, 0x53, 0x74, 0x61, 0x72, 0x74, + 0x65, 0x64, 0x41, 0x74, 0x12, 0x42, 0x0a, 0x0e, 0x70, 0x6c, 0x61, 0x6e, 0x46, 0x69, 0x6e, 0x69, + 0x73, 0x68, 0x65, 0x64, 0x41, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0e, 0x70, 0x6c, 0x61, 0x6e, 0x46, 0x69, + 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x69, 0x74, 0x65, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x70, 0x70, 0x49, + 0x44, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x44, 0x12, 0x2e, + 0x0a, 0x12, 0x74, 0x65, 0x73, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x43, 0x61, 0x73, 0x65, 0x52, 0x65, + 0x6c, 0x49, 0x44, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x04, 0x52, 0x12, 0x74, 0x65, 0x73, 0x74, + 0x50, 0x6c, 0x61, 0x6e, 0x43, 0x61, 0x73, 0x65, 0x52, 0x65, 0x6c, 0x49, 0x44, 0x73, 0x12, 0x12, + 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, + 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, + 0x65, 0x6e, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, + 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x0b, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x1e, + 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x69, 0x74, 0x79, 0x18, 0x0c, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x69, 0x74, 0x79, 0x12, 0x1a, + 0x0a, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x73, + 0x73, 0x69, 0x67, 0x6e, 0x65, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x73, + 0x73, 0x69, 0x67, 0x6e, 0x65, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, + 0x72, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, + 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x10, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x12, 0x49, 0x0a, 0x0c, 0x69, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x61, 0x6e, 0x48, 0x6f, 0x75, 0x72, + 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, + 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, + 0x2e, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x61, 0x6e, 0x48, 0x6f, 0x75, 0x72, 0x52, 0x0c, 0x69, + 0x73, 0x73, 0x75, 0x65, 0x4d, 0x61, 0x6e, 0x48, 0x6f, 0x75, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x74, + 0x61, 0x73, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, + 0x61, 0x73, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x62, 0x75, 0x67, 0x53, 0x74, + 0x61, 0x67, 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x62, 0x75, 0x67, 0x53, 0x74, + 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x15, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, + 0x72, 0x49, 0x44, 0x18, 0x16, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, + 0x44, 0x12, 0x26, 0x0a, 0x0e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x43, 0x6c, 0x69, + 0x65, 0x6e, 0x74, 0x18, 0x17, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x69, 0x6e, 0x74, 0x65, 0x72, + 0x6e, 0x61, 0x6c, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x74, + 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x18, 0x18, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x65, 0x78, 0x74, + 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x22, 0x9e, 0x02, 0x0a, 0x0c, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, + 0x61, 0x6e, 0x48, 0x6f, 0x75, 0x72, 0x12, 0x22, 0x0a, 0x0c, 0x65, 0x73, 0x74, 0x69, 0x6d, 0x61, + 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x65, 0x73, + 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x28, 0x0a, 0x0f, 0x74, 0x68, + 0x69, 0x73, 0x45, 0x6c, 0x61, 0x70, 0x73, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x0f, 0x74, 0x68, 0x69, 0x73, 0x45, 0x6c, 0x61, 0x70, 0x73, 0x65, 0x64, + 0x54, 0x69, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x65, 0x6c, 0x61, 0x70, 0x73, 0x65, 0x64, 0x54, + 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x65, 0x6c, 0x61, 0x70, 0x73, + 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x72, 0x65, 0x6d, 0x61, 0x69, 0x6e, + 0x69, 0x6e, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x72, + 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, + 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x77, 0x6f, + 0x72, 0x6b, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x38, 0x0a, 0x17, + 0x69, 0x73, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x52, 0x65, 0x6d, 0x61, 0x69, 0x6e, + 0x69, 0x6e, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x17, 0x69, + 0x73, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x52, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x69, + 0x6e, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x1a, 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x41, 0x6c, 0x65, 0x72, 0x74, 0x49, 0x73, 0x73, 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0xda, 0x06, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, + 0x72, 0x74, 0x49, 0x73, 0x73, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, + 0x0a, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x18, + 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, + 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1a, + 0x0a, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6f, + 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x69, 0x74, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, + 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x69, 0x74, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, + 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x65, + 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x12, 0x40, 0x0a, 0x0d, 0x70, 0x6c, 0x61, 0x6e, 0x53, 0x74, + 0x61, 0x72, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0d, 0x70, 0x6c, 0x61, 0x6e, 0x53, + 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x42, 0x0a, 0x0e, 0x70, 0x6c, 0x61, 0x6e, + 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x41, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0e, 0x70, 0x6c, + 0x61, 0x6e, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, + 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x69, 0x74, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x69, + 0x74, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x0d, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x72, 0x65, + 0x6c, 0x61, 0x74, 0x65, 0x64, 0x49, 0x73, 0x73, 0x75, 0x65, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, + 0x03, 0x52, 0x0d, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x49, 0x73, 0x73, 0x75, 0x65, 0x73, + 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x61, 0x73, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0f, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x74, 0x61, 0x73, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, + 0x62, 0x75, 0x67, 0x53, 0x74, 0x61, 0x67, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x62, 0x75, 0x67, 0x53, 0x74, 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6f, 0x77, 0x6e, 0x65, + 0x72, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x49, + 0x0a, 0x0c, 0x69, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x61, 0x6e, 0x48, 0x6f, 0x75, 0x72, 0x18, 0x12, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, + 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x49, + 0x73, 0x73, 0x75, 0x65, 0x4d, 0x61, 0x6e, 0x48, 0x6f, 0x75, 0x72, 0x52, 0x0c, 0x69, 0x73, 0x73, + 0x75, 0x65, 0x4d, 0x61, 0x6e, 0x48, 0x6f, 0x75, 0x72, 0x12, 0x2e, 0x0a, 0x12, 0x74, 0x65, 0x73, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x43, 0x61, 0x73, 0x65, 0x52, 0x65, 0x6c, 0x49, 0x44, 0x73, 0x18, - 0x07, 0x20, 0x03, 0x28, 0x04, 0x52, 0x12, 0x74, 0x65, 0x73, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x43, - 0x61, 0x73, 0x65, 0x52, 0x65, 0x6c, 0x49, 0x44, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, - 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, - 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, - 0x74, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x0a, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, - 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, - 0x70, 0x6c, 0x65, 0x78, 0x69, 0x74, 0x79, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, - 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x69, 0x74, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x76, - 0x65, 0x72, 0x69, 0x74, 0x79, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x65, 0x76, - 0x65, 0x72, 0x69, 0x74, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x65, - 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x65, - 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x0f, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x6c, - 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x10, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x6c, 0x61, 0x62, - 0x65, 0x6c, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x11, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x49, 0x0a, 0x0c, 0x69, - 0x73, 0x73, 0x75, 0x65, 0x4d, 0x61, 0x6e, 0x48, 0x6f, 0x75, 0x72, 0x18, 0x12, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x25, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, - 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x49, 0x73, 0x73, 0x75, - 0x65, 0x4d, 0x61, 0x6e, 0x48, 0x6f, 0x75, 0x72, 0x52, 0x0c, 0x69, 0x73, 0x73, 0x75, 0x65, 0x4d, - 0x61, 0x6e, 0x48, 0x6f, 0x75, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x61, 0x73, 0x6b, 0x54, 0x79, - 0x70, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x61, 0x73, 0x6b, 0x54, 0x79, - 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x62, 0x75, 0x67, 0x53, 0x74, 0x61, 0x67, 0x65, 0x18, 0x14, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x62, 0x75, 0x67, 0x53, 0x74, 0x61, 0x67, 0x65, 0x12, 0x14, - 0x0a, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6f, - 0x77, 0x6e, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x16, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x26, 0x0a, 0x0e, - 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x18, 0x17, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x43, 0x6c, - 0x69, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, - 0x18, 0x18, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, - 0x22, 0x9e, 0x02, 0x0a, 0x0c, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x61, 0x6e, 0x48, 0x6f, 0x75, - 0x72, 0x12, 0x22, 0x0a, 0x0c, 0x65, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x65, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, - 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x28, 0x0a, 0x0f, 0x74, 0x68, 0x69, 0x73, 0x45, 0x6c, 0x61, - 0x70, 0x73, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, - 0x74, 0x68, 0x69, 0x73, 0x45, 0x6c, 0x61, 0x70, 0x73, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, - 0x20, 0x0a, 0x0b, 0x65, 0x6c, 0x61, 0x70, 0x73, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x65, 0x6c, 0x61, 0x70, 0x73, 0x65, 0x64, 0x54, 0x69, 0x6d, - 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x72, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x54, 0x69, - 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x72, 0x65, 0x6d, 0x61, 0x69, 0x6e, - 0x69, 0x6e, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, - 0x54, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, - 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x6f, 0x6e, - 0x74, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b, - 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x38, 0x0a, 0x17, 0x69, 0x73, 0x4d, 0x6f, 0x64, - 0x69, 0x66, 0x69, 0x65, 0x64, 0x52, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x54, 0x69, - 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x17, 0x69, 0x73, 0x4d, 0x6f, 0x64, 0x69, - 0x66, 0x69, 0x65, 0x64, 0x52, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x54, 0x69, 0x6d, - 0x65, 0x22, 0x1a, 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, - 0x49, 0x73, 0x73, 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xda, 0x06, - 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x49, 0x73, 0x73, - 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x67, 0x72, 0x6f, - 0x75, 0x70, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, - 0x70, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, - 0x74, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, - 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x69, - 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x69, - 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, - 0x69, 0x74, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x70, 0x6c, - 0x65, 0x78, 0x69, 0x74, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, - 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, - 0x79, 0x12, 0x40, 0x0a, 0x0d, 0x70, 0x6c, 0x61, 0x6e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, - 0x41, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x13, 0x20, 0x03, 0x28, 0x04, 0x52, 0x12, 0x74, 0x65, 0x73, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x43, + 0x61, 0x73, 0x65, 0x52, 0x65, 0x6c, 0x49, 0x44, 0x73, 0x12, 0x3a, 0x0a, 0x18, 0x72, 0x65, 0x6d, + 0x6f, 0x76, 0x65, 0x54, 0x65, 0x73, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x43, 0x61, 0x73, 0x65, 0x52, + 0x65, 0x6c, 0x49, 0x44, 0x73, 0x18, 0x14, 0x20, 0x01, 0x28, 0x08, 0x52, 0x18, 0x72, 0x65, 0x6d, + 0x6f, 0x76, 0x65, 0x54, 0x65, 0x73, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x43, 0x61, 0x73, 0x65, 0x52, + 0x65, 0x6c, 0x49, 0x44, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x15, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, + 0x16, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x26, 0x0a, + 0x0e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x18, + 0x17, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x43, + 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x69, 0x73, 0x73, 0x75, 0x65, 0x49, 0x64, + 0x18, 0x18, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x69, 0x73, 0x73, 0x75, 0x65, 0x49, 0x64, 0x22, + 0x1a, 0x0a, 0x18, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x49, 0x73, + 0x73, 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1e, 0x0a, 0x1c, 0x47, + 0x65, 0x74, 0x4f, 0x72, 0x67, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, + 0x41, 0x74, 0x74, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x5d, 0x0a, 0x1d, 0x47, + 0x65, 0x74, 0x4f, 0x72, 0x67, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, + 0x41, 0x74, 0x74, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x04, + 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x65, 0x72, 0x64, + 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, + 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, + 0x41, 0x74, 0x74, 0x72, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x80, 0x02, 0x0a, 0x1a, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x4f, 0x72, 0x67, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, + 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x6c, 0x65, + 0x72, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x61, + 0x6c, 0x65, 0x72, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x6c, 0x65, + 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x61, + 0x6c, 0x65, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x6c, 0x65, + 0x72, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x61, 0x6c, + 0x65, 0x72, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x68, 0x61, 0x6e, 0x64, 0x6c, + 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x68, 0x61, + 0x6e, 0x64, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x68, 0x61, 0x6e, + 0x64, 0x6c, 0x65, 0x72, 0x49, 0x64, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x68, 0x61, + 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x06, 0x70, 0x61, 0x67, 0x65, 0x4e, + 0x6f, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x10, 0x00, 0x52, + 0x06, 0x70, 0x61, 0x67, 0x65, 0x4e, 0x6f, 0x12, 0x24, 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, + 0x69, 0x7a, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x42, 0x08, 0xe2, 0xdf, 0x1f, 0x04, 0x10, + 0x00, 0x18, 0x65, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x22, 0xc6, 0x02, + 0x0a, 0x1f, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4f, 0x72, 0x67, 0x48, 0x6f, 0x73, 0x74, 0x73, 0x41, + 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x3f, 0x0a, 0x08, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, + 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x43, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x52, 0x08, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x47, 0x72, 0x6f, + 0x75, 0x70, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, + 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x53, 0x74, 0x61, + 0x74, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, + 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x54, 0x79, 0x70, 0x65, + 0x12, 0x20, 0x0a, 0x0b, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, + 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x53, 0x74, 0x61, + 0x74, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x49, 0x64, 0x18, + 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x49, 0x64, + 0x12, 0x1e, 0x0a, 0x06, 0x70, 0x61, 0x67, 0x65, 0x4e, 0x6f, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, + 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x10, 0x00, 0x52, 0x06, 0x70, 0x61, 0x67, 0x65, 0x4e, 0x6f, + 0x12, 0x24, 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x04, 0x42, 0x08, 0xe2, 0xdf, 0x1f, 0x04, 0x10, 0x00, 0x18, 0x65, 0x52, 0x08, 0x70, 0x61, + 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x22, 0x48, 0x0a, 0x0a, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x52, 0x65, 0x71, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, + 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x68, 0x6f, 0x73, 0x74, 0x49, 0x50, + 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x68, 0x6f, 0x73, 0x74, 0x49, 0x50, 0x73, + 0x22, 0x56, 0x0a, 0x1b, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4f, 0x72, 0x67, 0x41, 0x6c, 0x65, 0x72, + 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x37, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, + 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, + 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x34, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x4f, + 0x72, 0x67, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x22, 0x55, + 0x0a, 0x19, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, + 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x04, 0x64, + 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x65, 0x72, 0x64, 0x61, + 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, + 0x65, 0x72, 0x74, 0x2e, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, + 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x85, 0x01, 0x0a, 0x1b, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4f, + 0x72, 0x67, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, + 0x1c, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x42, 0x06, + 0xe2, 0xdf, 0x1f, 0x02, 0x10, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x18, 0x0a, + 0x03, 0x65, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, + 0x10, 0x00, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0x59, 0x0a, + 0x1c, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4f, 0x72, 0x67, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x48, 0x69, + 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x39, 0x0a, + 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x65, 0x72, + 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, + 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, + 0x72, 0x79, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xb9, 0x06, 0x0a, 0x1a, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x49, 0x73, 0x73, 0x75, 0x65, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, + 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, + 0x64, 0x12, 0x40, 0x0a, 0x0d, 0x70, 0x6c, 0x61, 0x6e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, + 0x41, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0d, 0x70, 0x6c, 0x61, 0x6e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x42, 0x0a, 0x0e, 0x70, 0x6c, 0x61, 0x6e, 0x46, 0x69, 0x6e, 0x69, 0x73, - 0x68, 0x65, 0x64, 0x41, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, + 0x68, 0x65, 0x64, 0x41, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0e, 0x70, 0x6c, 0x61, 0x6e, 0x46, 0x69, 0x6e, - 0x69, 0x73, 0x68, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x73, 0x73, 0x69, 0x67, - 0x6e, 0x65, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x73, 0x73, 0x69, 0x67, - 0x6e, 0x65, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x49, 0x44, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, - 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x16, 0x0a, - 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x6c, - 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, - 0x49, 0x73, 0x73, 0x75, 0x65, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x03, 0x52, 0x0d, 0x72, 0x65, - 0x6c, 0x61, 0x74, 0x65, 0x64, 0x49, 0x73, 0x73, 0x75, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x74, - 0x61, 0x73, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, - 0x61, 0x73, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x62, 0x75, 0x67, 0x53, 0x74, - 0x61, 0x67, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x62, 0x75, 0x67, 0x53, 0x74, - 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x11, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x49, 0x0a, 0x0c, 0x69, 0x73, 0x73, - 0x75, 0x65, 0x4d, 0x61, 0x6e, 0x48, 0x6f, 0x75, 0x72, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x25, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, - 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, - 0x61, 0x6e, 0x48, 0x6f, 0x75, 0x72, 0x52, 0x0c, 0x69, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x61, 0x6e, - 0x48, 0x6f, 0x75, 0x72, 0x12, 0x2e, 0x0a, 0x12, 0x74, 0x65, 0x73, 0x74, 0x50, 0x6c, 0x61, 0x6e, - 0x43, 0x61, 0x73, 0x65, 0x52, 0x65, 0x6c, 0x49, 0x44, 0x73, 0x18, 0x13, 0x20, 0x03, 0x28, 0x04, - 0x52, 0x12, 0x74, 0x65, 0x73, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x43, 0x61, 0x73, 0x65, 0x52, 0x65, - 0x6c, 0x49, 0x44, 0x73, 0x12, 0x3a, 0x0a, 0x18, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x65, - 0x73, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x43, 0x61, 0x73, 0x65, 0x52, 0x65, 0x6c, 0x49, 0x44, 0x73, - 0x18, 0x14, 0x20, 0x01, 0x28, 0x08, 0x52, 0x18, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x65, - 0x73, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x43, 0x61, 0x73, 0x65, 0x52, 0x65, 0x6c, 0x49, 0x44, 0x73, - 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x15, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, - 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x16, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x26, 0x0a, 0x0e, 0x69, 0x6e, 0x74, 0x65, - 0x72, 0x6e, 0x61, 0x6c, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x18, 0x17, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, - 0x12, 0x18, 0x0a, 0x07, 0x69, 0x73, 0x73, 0x75, 0x65, 0x49, 0x64, 0x18, 0x18, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x07, 0x69, 0x73, 0x73, 0x75, 0x65, 0x49, 0x64, 0x22, 0x1a, 0x0a, 0x18, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x49, 0x73, 0x73, 0x75, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1e, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, - 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x41, 0x74, 0x74, 0x72, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x5d, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, - 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x41, 0x74, 0x74, 0x72, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, - 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, - 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x41, 0x74, 0x74, 0x72, 0x52, - 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x80, 0x02, 0x0a, 0x1a, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4f, - 0x72, 0x67, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x47, 0x72, 0x6f, - 0x75, 0x70, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x47, - 0x72, 0x6f, 0x75, 0x70, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x53, 0x74, 0x61, - 0x74, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x53, - 0x74, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x54, 0x79, 0x70, - 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x54, 0x79, - 0x70, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, - 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x53, - 0x74, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x49, - 0x64, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, - 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x06, 0x70, 0x61, 0x67, 0x65, 0x4e, 0x6f, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x04, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x10, 0x00, 0x52, 0x06, 0x70, 0x61, 0x67, 0x65, - 0x4e, 0x6f, 0x12, 0x24, 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x04, 0x42, 0x08, 0xe2, 0xdf, 0x1f, 0x04, 0x10, 0x00, 0x18, 0x65, 0x52, 0x08, - 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x22, 0xc6, 0x02, 0x0a, 0x1f, 0x51, 0x75, 0x65, - 0x72, 0x79, 0x4f, 0x72, 0x67, 0x48, 0x6f, 0x73, 0x74, 0x73, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, - 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3f, 0x0a, 0x08, - 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, - 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, - 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x52, 0x65, 0x71, 0x52, 0x08, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x12, 0x1e, 0x0a, - 0x0a, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x02, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x0a, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x1e, 0x0a, - 0x0a, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x0a, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x0a, - 0x09, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x09, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x68, - 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x0b, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x0a, - 0x09, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x49, 0x64, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x09, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x06, 0x70, - 0x61, 0x67, 0x65, 0x4e, 0x6f, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xe2, 0xdf, 0x1f, - 0x02, 0x10, 0x00, 0x52, 0x06, 0x70, 0x61, 0x67, 0x65, 0x4e, 0x6f, 0x12, 0x24, 0x0a, 0x08, 0x70, - 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x42, 0x08, 0xe2, - 0xdf, 0x1f, 0x04, 0x10, 0x00, 0x18, 0x65, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, - 0x65, 0x22, 0x48, 0x0a, 0x0a, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x12, - 0x20, 0x0a, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x18, 0x0a, 0x07, 0x68, 0x6f, 0x73, 0x74, 0x49, 0x50, 0x73, 0x18, 0x02, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x07, 0x68, 0x6f, 0x73, 0x74, 0x49, 0x50, 0x73, 0x22, 0x56, 0x0a, 0x1b, 0x51, - 0x75, 0x65, 0x72, 0x79, 0x4f, 0x72, 0x67, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, - 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x37, 0x0a, 0x04, 0x64, 0x61, - 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, - 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, - 0x72, 0x74, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x04, 0x64, - 0x61, 0x74, 0x61, 0x22, 0x34, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x41, 0x6c, 0x65, - 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x18, 0x0a, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x22, 0x55, 0x0a, 0x19, 0x47, 0x65, 0x74, - 0x4f, 0x72, 0x67, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, - 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x41, - 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, - 0x22, 0x85, 0x01, 0x0a, 0x1b, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4f, 0x72, 0x67, 0x41, 0x6c, 0x65, - 0x72, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x18, 0x0a, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x05, 0x73, 0x74, - 0x61, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x10, - 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x18, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x03, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x10, 0x00, 0x52, 0x03, 0x65, - 0x6e, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0x59, 0x0a, 0x1c, 0x51, 0x75, 0x65, 0x72, - 0x79, 0x4f, 0x72, 0x67, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x39, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, - 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, - 0x2e, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x04, 0x64, - 0x61, 0x74, 0x61, 0x22, 0xb9, 0x06, 0x0a, 0x1a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, - 0x67, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x49, 0x73, 0x73, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x40, 0x0a, 0x0d, - 0x70, 0x6c, 0x61, 0x6e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, - 0x0d, 0x70, 0x6c, 0x61, 0x6e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x42, - 0x0a, 0x0e, 0x70, 0x6c, 0x61, 0x6e, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x41, 0x74, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x52, 0x0e, 0x70, 0x6c, 0x61, 0x6e, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, - 0x41, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, - 0x12, 0x20, 0x0a, 0x0b, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x49, 0x44, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x70, 0x70, 0x49, 0x44, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x44, 0x12, 0x2e, 0x0a, 0x12, 0x74, 0x65, 0x73, 0x74, - 0x50, 0x6c, 0x61, 0x6e, 0x43, 0x61, 0x73, 0x65, 0x52, 0x65, 0x6c, 0x49, 0x44, 0x73, 0x18, 0x07, - 0x20, 0x03, 0x28, 0x04, 0x52, 0x12, 0x74, 0x65, 0x73, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x43, 0x61, - 0x73, 0x65, 0x52, 0x65, 0x6c, 0x49, 0x44, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, - 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, - 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x0a, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, - 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x70, - 0x6c, 0x65, 0x78, 0x69, 0x74, 0x79, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, - 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x69, 0x74, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x76, 0x65, - 0x72, 0x69, 0x74, 0x79, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x65, 0x76, 0x65, - 0x72, 0x69, 0x74, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x65, - 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x65, - 0x12, 0x18, 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x0f, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x61, - 0x62, 0x65, 0x6c, 0x73, 0x18, 0x10, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, - 0x6c, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x11, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x49, 0x0a, 0x0c, 0x69, 0x73, - 0x73, 0x75, 0x65, 0x4d, 0x61, 0x6e, 0x48, 0x6f, 0x75, 0x72, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x25, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, - 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x49, 0x73, 0x73, 0x75, 0x65, - 0x4d, 0x61, 0x6e, 0x48, 0x6f, 0x75, 0x72, 0x52, 0x0c, 0x69, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x61, - 0x6e, 0x48, 0x6f, 0x75, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x61, 0x73, 0x6b, 0x54, 0x79, 0x70, - 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x61, 0x73, 0x6b, 0x54, 0x79, 0x70, - 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x62, 0x75, 0x67, 0x53, 0x74, 0x61, 0x67, 0x65, 0x18, 0x14, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x62, 0x75, 0x67, 0x53, 0x74, 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, - 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6f, 0x77, - 0x6e, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x16, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x26, 0x0a, 0x0e, 0x69, - 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x18, 0x17, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x43, 0x6c, 0x69, - 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x18, - 0x18, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x22, - 0x31, 0x0a, 0x1b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x41, 0x6c, 0x65, 0x72, - 0x74, 0x49, 0x73, 0x73, 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, - 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x64, 0x61, - 0x74, 0x61, 0x22, 0xc3, 0x06, 0x0a, 0x1a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, - 0x41, 0x6c, 0x65, 0x72, 0x74, 0x49, 0x73, 0x73, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x18, 0x0a, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, - 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, - 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, - 0x74, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, - 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x05, 0x20, + 0x69, 0x73, 0x68, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x69, 0x74, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x70, 0x70, 0x49, 0x44, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x44, 0x12, 0x2e, 0x0a, + 0x12, 0x74, 0x65, 0x73, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x43, 0x61, 0x73, 0x65, 0x52, 0x65, 0x6c, + 0x49, 0x44, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x04, 0x52, 0x12, 0x74, 0x65, 0x73, 0x74, 0x50, + 0x6c, 0x61, 0x6e, 0x43, 0x61, 0x73, 0x65, 0x52, 0x65, 0x6c, 0x49, 0x44, 0x73, 0x12, 0x12, 0x0a, + 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, + 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, + 0x6e, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, + 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x1e, 0x0a, - 0x0a, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x69, 0x74, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x0a, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x69, 0x74, 0x79, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x69, 0x74, 0x79, 0x12, 0x1a, 0x0a, - 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x12, 0x40, 0x0a, 0x0d, 0x70, 0x6c, 0x61, - 0x6e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0d, 0x70, 0x6c, - 0x61, 0x6e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x42, 0x0a, 0x0e, 0x70, - 0x6c, 0x61, 0x6e, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x41, 0x74, 0x18, 0x09, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, - 0x0e, 0x70, 0x6c, 0x61, 0x6e, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x41, 0x74, 0x12, - 0x1a, 0x0a, 0x08, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x69, - 0x74, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0b, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x12, 0x16, 0x0a, - 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, - 0x0d, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x24, 0x0a, - 0x0d, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x49, 0x73, 0x73, 0x75, 0x65, 0x73, 0x18, 0x0e, - 0x20, 0x03, 0x28, 0x03, 0x52, 0x0d, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x49, 0x73, 0x73, - 0x75, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x61, 0x73, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x18, - 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x61, 0x73, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, - 0x1a, 0x0a, 0x08, 0x62, 0x75, 0x67, 0x53, 0x74, 0x61, 0x67, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x62, 0x75, 0x67, 0x53, 0x74, 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6f, - 0x77, 0x6e, 0x65, 0x72, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6f, 0x77, 0x6e, 0x65, - 0x72, 0x12, 0x49, 0x0a, 0x0c, 0x69, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x61, 0x6e, 0x48, 0x6f, 0x75, - 0x72, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, - 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, - 0x74, 0x2e, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x61, 0x6e, 0x48, 0x6f, 0x75, 0x72, 0x52, 0x0c, - 0x69, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x61, 0x6e, 0x48, 0x6f, 0x75, 0x72, 0x12, 0x2e, 0x0a, 0x12, - 0x74, 0x65, 0x73, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x43, 0x61, 0x73, 0x65, 0x52, 0x65, 0x6c, 0x49, - 0x44, 0x73, 0x18, 0x13, 0x20, 0x03, 0x28, 0x04, 0x52, 0x12, 0x74, 0x65, 0x73, 0x74, 0x50, 0x6c, - 0x61, 0x6e, 0x43, 0x61, 0x73, 0x65, 0x52, 0x65, 0x6c, 0x49, 0x44, 0x73, 0x12, 0x3a, 0x0a, 0x18, - 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x65, 0x73, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x43, 0x61, - 0x73, 0x65, 0x52, 0x65, 0x6c, 0x49, 0x44, 0x73, 0x18, 0x14, 0x20, 0x01, 0x28, 0x08, 0x52, 0x18, - 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x65, 0x73, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x43, 0x61, - 0x73, 0x65, 0x52, 0x65, 0x6c, 0x49, 0x44, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x15, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, + 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x73, 0x73, + 0x69, 0x67, 0x6e, 0x65, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x73, 0x73, + 0x69, 0x67, 0x6e, 0x65, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, + 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x12, + 0x16, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x10, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, + 0x49, 0x0a, 0x0c, 0x69, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x61, 0x6e, 0x48, 0x6f, 0x75, 0x72, 0x18, + 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, + 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, + 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x61, 0x6e, 0x48, 0x6f, 0x75, 0x72, 0x52, 0x0c, 0x69, 0x73, + 0x73, 0x75, 0x65, 0x4d, 0x61, 0x6e, 0x48, 0x6f, 0x75, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x61, + 0x73, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x61, + 0x73, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x62, 0x75, 0x67, 0x53, 0x74, 0x61, + 0x67, 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x62, 0x75, 0x67, 0x53, 0x74, 0x61, + 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x15, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x16, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x26, 0x0a, 0x0e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x18, 0x17, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, - 0x61, 0x6c, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x22, 0x1d, 0x0a, 0x1b, 0x55, 0x70, 0x64, 0x61, + 0x61, 0x6c, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x74, 0x65, + 0x72, 0x6e, 0x61, 0x6c, 0x18, 0x18, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x65, 0x78, 0x74, 0x65, + 0x72, 0x6e, 0x61, 0x6c, 0x22, 0x31, 0x0a, 0x1b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, + 0x67, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x49, 0x73, 0x73, 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xc3, 0x06, 0x0a, 0x1a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x49, 0x73, 0x73, 0x75, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0xc3, 0x3d, 0x0a, 0x0c, 0x41, 0x6c, 0x65, 0x72, - 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0xaa, 0x01, 0x0a, 0x14, 0x51, 0x75, 0x65, - 0x72, 0x79, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, - 0x63, 0x12, 0x34, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, - 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, - 0x79, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, - 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, - 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, - 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x25, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1f, 0x12, 0x1d, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x75, 0x73, - 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x2f, 0x6d, 0x65, - 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0xc5, 0x01, 0x0a, 0x1a, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, - 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x54, 0x61, - 0x72, 0x67, 0x65, 0x74, 0x12, 0x3a, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, - 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x51, - 0x75, 0x65, 0x72, 0x79, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x4e, 0x6f, 0x74, - 0x69, 0x66, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x3b, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, - 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, - 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x54, - 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2e, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x28, 0x12, 0x26, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, - 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x2f, 0x6e, 0x6f, 0x74, - 0x69, 0x66, 0x69, 0x65, 0x73, 0x2f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x12, 0xd3, 0x01, - 0x0a, 0x1d, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4f, 0x72, 0x67, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, - 0x69, 0x7a, 0x65, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, - 0x3d, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, - 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4f, - 0x72, 0x67, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x4e, 0x6f, 0x74, 0x69, 0x66, - 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3e, - 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, - 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4f, 0x72, - 0x67, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, - 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x33, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2d, 0x12, 0x2b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6f, 0x72, 0x67, - 0x73, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x2f, 0x61, 0x6c, 0x65, 0x72, - 0x74, 0x73, 0x2f, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x65, 0x73, 0x2f, 0x74, 0x61, 0x72, 0x67, - 0x65, 0x74, 0x73, 0x12, 0x9f, 0x01, 0x0a, 0x13, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x75, 0x73, - 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x12, 0x33, 0x2e, 0x65, 0x72, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, + 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, + 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, + 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, + 0x74, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, + 0x74, 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x69, 0x74, 0x79, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x69, + 0x74, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x12, 0x40, + 0x0a, 0x0d, 0x70, 0x6c, 0x61, 0x6e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x52, 0x0d, 0x70, 0x6c, 0x61, 0x6e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x41, 0x74, + 0x12, 0x42, 0x0a, 0x0e, 0x70, 0x6c, 0x61, 0x6e, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, + 0x41, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0e, 0x70, 0x6c, 0x61, 0x6e, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, + 0x65, 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x65, + 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x65, + 0x12, 0x20, 0x0a, 0x0b, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, + 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x0c, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x61, + 0x62, 0x65, 0x6c, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, + 0x6c, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x49, 0x73, 0x73, + 0x75, 0x65, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x03, 0x52, 0x0d, 0x72, 0x65, 0x6c, 0x61, 0x74, + 0x65, 0x64, 0x49, 0x73, 0x73, 0x75, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x61, 0x73, 0x6b, + 0x54, 0x79, 0x70, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x61, 0x73, 0x6b, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x62, 0x75, 0x67, 0x53, 0x74, 0x61, 0x67, 0x65, + 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x62, 0x75, 0x67, 0x53, 0x74, 0x61, 0x67, 0x65, + 0x12, 0x14, 0x0a, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x49, 0x0a, 0x0c, 0x69, 0x73, 0x73, 0x75, 0x65, 0x4d, + 0x61, 0x6e, 0x48, 0x6f, 0x75, 0x72, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x65, + 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, + 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x61, 0x6e, 0x48, + 0x6f, 0x75, 0x72, 0x52, 0x0c, 0x69, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x61, 0x6e, 0x48, 0x6f, 0x75, + 0x72, 0x12, 0x2e, 0x0a, 0x12, 0x74, 0x65, 0x73, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x43, 0x61, 0x73, + 0x65, 0x52, 0x65, 0x6c, 0x49, 0x44, 0x73, 0x18, 0x13, 0x20, 0x03, 0x28, 0x04, 0x52, 0x12, 0x74, + 0x65, 0x73, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x43, 0x61, 0x73, 0x65, 0x52, 0x65, 0x6c, 0x49, 0x44, + 0x73, 0x12, 0x3a, 0x0a, 0x18, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x65, 0x73, 0x74, 0x50, + 0x6c, 0x61, 0x6e, 0x43, 0x61, 0x73, 0x65, 0x52, 0x65, 0x6c, 0x49, 0x44, 0x73, 0x18, 0x14, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x18, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x65, 0x73, 0x74, 0x50, + 0x6c, 0x61, 0x6e, 0x43, 0x61, 0x73, 0x65, 0x52, 0x65, 0x6c, 0x49, 0x44, 0x73, 0x12, 0x0e, 0x0a, + 0x02, 0x69, 0x64, 0x18, 0x15, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, + 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x16, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, + 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x26, 0x0a, 0x0e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, + 0x6c, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x18, 0x17, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x69, + 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x22, 0x1d, 0x0a, + 0x1b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x49, + 0x73, 0x73, 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x39, 0x0a, 0x19, + 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x63, 0x6f, + 0x70, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x63, + 0x6f, 0x70, 0x65, 0x54, 0x79, 0x70, 0x65, 0x22, 0x5b, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x41, 0x6c, + 0x65, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, + 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x43, 0x6f, + 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x70, 0x0a, 0x0a, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x6b, 0x65, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x12, 0x20, + 0x0a, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, + 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x22, 0xf0, 0x01, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x41, 0x6c, + 0x65, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6e, + 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, + 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x5e, 0x0a, 0x07, 0x66, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x44, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, + 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, + 0x72, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x64, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, + 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x1a, 0x3a, 0x0a, + 0x0c, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, + 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, + 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x64, 0x0a, 0x1f, 0x47, 0x65, 0x74, + 0x41, 0x6c, 0x65, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, 0x04, + 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x65, 0x72, 0x64, + 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, + 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, + 0x5a, 0x0a, 0x14, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x30, 0x0a, 0x07, 0x6f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x32, 0xd5, 0x3f, 0x0a, 0x0c, + 0x41, 0x6c, 0x65, 0x72, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0xaa, 0x01, 0x0a, + 0x14, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x4d, + 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x34, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, + 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, + 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x4d, 0x65, + 0x74, 0x72, 0x69, 0x63, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x75, 0x73, 0x74, 0x6f, - 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x34, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, - 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, - 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x12, 0x15, - 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x2f, 0x61, - 0x6c, 0x65, 0x72, 0x74, 0x73, 0x12, 0x9e, 0x01, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x43, 0x75, 0x73, - 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x12, 0x31, 0x2e, 0x65, 0x72, - 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, - 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, - 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, - 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, - 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x75, 0x73, 0x74, - 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x22, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x12, 0x1a, 0x2f, 0x61, 0x70, 0x69, + 0x6d, 0x69, 0x7a, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x25, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1f, 0x12, 0x1d, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, - 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0xb7, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x43, 0x75, - 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x44, 0x65, 0x74, 0x61, - 0x69, 0x6c, 0x12, 0x37, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, + 0x73, 0x2f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0xc5, 0x01, 0x0a, 0x1a, 0x51, 0x75, + 0x65, 0x72, 0x79, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x4e, 0x6f, 0x74, 0x69, + 0x66, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x3a, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, + 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, + 0x72, 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, + 0x65, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3b, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, + 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x4e, 0x6f, 0x74, + 0x69, 0x66, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x28, 0x12, 0x26, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, + 0x2f, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x65, 0x73, 0x2f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, + 0x73, 0x12, 0xd3, 0x01, 0x0a, 0x1d, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4f, 0x72, 0x67, 0x43, 0x75, + 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x54, 0x61, 0x72, + 0x67, 0x65, 0x74, 0x12, 0x3d, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, + 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x51, 0x75, + 0x65, 0x72, 0x79, 0x4f, 0x72, 0x67, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x4e, + 0x6f, 0x74, 0x69, 0x66, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x3e, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, + 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x51, 0x75, 0x65, + 0x72, 0x79, 0x4f, 0x72, 0x67, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x4e, 0x6f, + 0x74, 0x69, 0x66, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x33, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2d, 0x12, 0x2b, 0x2f, 0x61, 0x70, 0x69, + 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x2f, + 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x2f, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x65, 0x73, 0x2f, + 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x12, 0x9f, 0x01, 0x0a, 0x13, 0x51, 0x75, 0x65, 0x72, + 0x79, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x12, + 0x33, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, + 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, + 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, + 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, + 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1d, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x17, 0x12, 0x15, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, + 0x7a, 0x65, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x12, 0x9e, 0x01, 0x0a, 0x11, 0x47, 0x65, + 0x74, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x12, + 0x31, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, + 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x75, 0x73, + 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x47, 0x65, 0x74, - 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x44, 0x65, - 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x65, 0x72, - 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, - 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, - 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x29, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x23, 0x12, 0x21, 0x2f, - 0x61, 0x70, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x2f, 0x61, 0x6c, - 0x65, 0x72, 0x74, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, - 0x12, 0xa2, 0x01, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, - 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x12, 0x34, 0x2e, 0x65, 0x72, 0x64, 0x61, - 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, - 0x65, 0x72, 0x74, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, - 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x35, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, - 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x22, 0x15, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x22, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x12, 0x1a, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x2f, 0x61, - 0x6c, 0x65, 0x72, 0x74, 0x73, 0x12, 0xa7, 0x01, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x12, 0x34, - 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, - 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, - 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, - 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, - 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x22, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x1c, 0x1a, 0x1a, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, - 0x69, 0x7a, 0x65, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, - 0xc0, 0x01, 0x0a, 0x1a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, - 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x3a, + 0x6c, 0x65, 0x72, 0x74, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0xb7, 0x01, 0x0a, 0x17, 0x47, + 0x65, 0x74, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, + 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x37, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, + 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, + 0x2e, 0x47, 0x65, 0x74, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, + 0x72, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x38, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, + 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x75, 0x73, + 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, + 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x29, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x23, 0x12, 0x21, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, + 0x65, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x12, 0xa2, 0x01, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, + 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x12, 0x34, 0x2e, + 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, + 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x75, + 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, + 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, + 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1d, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x17, 0x22, 0x15, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, + 0x7a, 0x65, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x12, 0xa7, 0x01, 0x0a, 0x14, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, + 0x72, 0x74, 0x12, 0x34, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, + 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, + 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, + 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, + 0x72, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, + 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x22, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x1a, 0x1a, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x75, + 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x2f, 0x7b, + 0x69, 0x64, 0x7d, 0x12, 0xc0, 0x01, 0x0a, 0x1a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x75, + 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x45, 0x6e, 0x61, 0x62, + 0x6c, 0x65, 0x12, 0x3a, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, + 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, + 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3b, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x45, 0x6e, 0x61, - 0x62, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3b, 0x2e, 0x65, 0x72, 0x64, - 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, - 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, - 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x29, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x23, 0x1a, - 0x21, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x2f, - 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x2f, 0x73, 0x77, 0x69, 0x74, - 0x63, 0x68, 0x12, 0xa7, 0x01, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x75, 0x73, - 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x12, 0x34, 0x2e, 0x65, 0x72, - 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, - 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x75, 0x73, 0x74, - 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x35, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, - 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x22, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, - 0x2a, 0x1a, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, - 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0xb8, 0x01, 0x0a, - 0x17, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4f, 0x72, 0x67, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, - 0x7a, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x37, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, - 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, - 0x72, 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4f, 0x72, 0x67, 0x43, 0x75, 0x73, 0x74, 0x6f, - 0x6d, 0x69, 0x7a, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x38, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, - 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, - 0x79, 0x4f, 0x72, 0x67, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x4d, 0x65, 0x74, - 0x72, 0x69, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2a, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x24, 0x12, 0x22, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x63, - 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x2f, - 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0xb0, 0x01, 0x0a, 0x17, 0x51, 0x75, 0x65, 0x72, - 0x79, 0x4f, 0x72, 0x67, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, - 0x72, 0x74, 0x73, 0x12, 0x37, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, - 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x51, 0x75, - 0x65, 0x72, 0x79, 0x4f, 0x72, 0x67, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, - 0x6c, 0x65, 0x72, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x65, + 0x62, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x29, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x23, 0x1a, 0x21, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, + 0x69, 0x7a, 0x65, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x2f, + 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0xa7, 0x01, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x12, + 0x34, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, + 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, + 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, + 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x22, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x1c, 0x2a, 0x1a, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, + 0x6d, 0x69, 0x7a, 0x65, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, + 0x12, 0xb8, 0x01, 0x0a, 0x17, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4f, 0x72, 0x67, 0x43, 0x75, 0x73, + 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x37, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4f, 0x72, 0x67, 0x43, - 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x22, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x12, 0x1a, - 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, - 0x69, 0x7a, 0x65, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x12, 0xbe, 0x01, 0x0a, 0x1a, 0x47, - 0x65, 0x74, 0x4f, 0x72, 0x67, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, - 0x65, 0x72, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x3a, 0x2e, 0x65, 0x72, 0x64, 0x61, - 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, - 0x65, 0x72, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, - 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3b, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, + 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, - 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, - 0x6c, 0x65, 0x72, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x27, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x21, 0x12, 0x1f, 0x2f, 0x61, 0x70, 0x69, - 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x2f, - 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0xb0, 0x01, 0x0a, 0x17, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, - 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x12, 0x37, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, + 0x51, 0x75, 0x65, 0x72, 0x79, 0x4f, 0x72, 0x67, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, + 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x2a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x24, 0x12, 0x22, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6f, 0x72, + 0x67, 0x73, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x2f, 0x61, 0x6c, 0x65, + 0x72, 0x74, 0x73, 0x2f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0xb0, 0x01, 0x0a, 0x17, + 0x51, 0x75, 0x65, 0x72, 0x79, 0x4f, 0x72, 0x67, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, + 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x12, 0x37, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, - 0x74, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x43, 0x75, 0x73, 0x74, 0x6f, - 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4f, 0x72, 0x67, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, + 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, - 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x4f, 0x72, 0x67, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, - 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x22, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x1c, 0x22, 0x1a, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x63, 0x75, - 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x12, 0xb5, - 0x01, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x43, 0x75, 0x73, 0x74, - 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x12, 0x37, 0x2e, 0x65, 0x72, 0x64, - 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, - 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x43, 0x75, - 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, - 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, - 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x27, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x21, 0x1a, 0x1f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6f, 0x72, 0x67, 0x73, - 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, - 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0xce, 0x01, 0x0a, 0x1d, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x4f, 0x72, 0x67, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, - 0x72, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x3d, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, - 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, - 0x72, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x43, 0x75, 0x73, 0x74, - 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3e, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, - 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, - 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x43, 0x75, 0x73, 0x74, 0x6f, - 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x28, 0x1a, - 0x26, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, - 0x6d, 0x69, 0x7a, 0x65, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, - 0x2f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0xb5, 0x01, 0x0a, 0x17, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x4f, 0x72, 0x67, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, - 0x65, 0x72, 0x74, 0x12, 0x37, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, - 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, - 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x65, - 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, - 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x72, 0x67, - 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x27, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x21, 0x2a, 0x1f, - 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, - 0x69, 0x7a, 0x65, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, - 0xb8, 0x01, 0x0a, 0x15, 0x51, 0x75, 0x65, 0x72, 0x79, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, - 0x72, 0x64, 0x42, 0x79, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x12, 0x35, 0x2e, 0x65, 0x72, 0x64, 0x61, - 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, - 0x65, 0x72, 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, - 0x72, 0x64, 0x42, 0x79, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x36, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, - 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, - 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x42, 0x79, 0x41, 0x6c, 0x65, 0x72, 0x74, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x30, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, - 0x22, 0x28, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, - 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x2f, 0x64, 0x61, 0x73, 0x68, 0x2d, 0x70, 0x72, 0x65, - 0x76, 0x69, 0x65, 0x77, 0x2f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x12, 0xc6, 0x01, 0x0a, 0x18, 0x51, - 0x75, 0x65, 0x72, 0x79, 0x4f, 0x72, 0x67, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, - 0x42, 0x79, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x12, 0x38, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, - 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, - 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4f, 0x72, 0x67, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, - 0x61, 0x72, 0x64, 0x42, 0x79, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x39, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, - 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, - 0x79, 0x4f, 0x72, 0x67, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x42, 0x79, 0x41, - 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x35, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x2f, 0x22, 0x2d, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, - 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, - 0x2f, 0x64, 0x61, 0x73, 0x68, 0x2d, 0x70, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x2f, 0x71, 0x75, - 0x65, 0x72, 0x79, 0x12, 0x8c, 0x01, 0x0a, 0x0e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x6c, 0x65, - 0x72, 0x74, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x2e, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, - 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, - 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x75, 0x6c, 0x65, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, - 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, - 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x75, 0x6c, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x19, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x12, - 0x11, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x2f, 0x72, 0x75, 0x6c, - 0x65, 0x73, 0x12, 0x7b, 0x0a, 0x0a, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x6c, 0x65, 0x72, 0x74, - 0x12, 0x2a, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, - 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x65, - 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, - 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x6c, 0x65, 0x72, - 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x13, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x0d, 0x12, 0x0b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x12, - 0x79, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x12, 0x28, 0x2e, 0x65, 0x72, - 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, - 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, - 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, - 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x18, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x12, 0x12, 0x10, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, - 0x6c, 0x65, 0x72, 0x74, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0x92, 0x01, 0x0a, 0x0e, 0x47, - 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x2e, 0x2e, + 0x4f, 0x72, 0x67, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, + 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x22, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x1c, 0x12, 0x1a, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x63, 0x75, + 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x12, 0xbe, + 0x01, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, + 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x3a, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, - 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, - 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, - 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, - 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, - 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1f, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x12, 0x17, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6c, 0x65, - 0x72, 0x74, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, - 0x7d, 0x0a, 0x0b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x12, 0x2b, - 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, - 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, - 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x65, 0x72, - 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, - 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x13, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x0d, 0x22, 0x0b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x12, 0x82, - 0x01, 0x0a, 0x0b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x12, 0x2b, - 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, - 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, - 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x65, 0x72, - 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, - 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x18, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x12, 0x1a, 0x10, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x2f, 0x7b, - 0x69, 0x64, 0x7d, 0x12, 0x9b, 0x01, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x6c, - 0x65, 0x72, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x31, 0x2e, 0x65, 0x72, 0x64, 0x61, + 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x43, 0x75, + 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x44, 0x65, 0x74, 0x61, + 0x69, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3b, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, - 0x65, 0x72, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x45, - 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x65, - 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, - 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, - 0x72, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x1f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x1a, 0x17, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, - 0x6c, 0x65, 0x72, 0x74, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x2f, 0x73, 0x77, 0x69, 0x74, 0x63, - 0x68, 0x12, 0x82, 0x01, 0x0a, 0x0b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, - 0x74, 0x12, 0x2b, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, - 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, + 0x65, 0x72, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, + 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x27, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x21, 0x12, 0x1f, + 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, + 0x69, 0x7a, 0x65, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, + 0xb0, 0x01, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x43, 0x75, 0x73, + 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x12, 0x37, 0x2e, 0x65, 0x72, + 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, + 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x43, + 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, + 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, + 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x22, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x22, 0x1a, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6f, 0x72, 0x67, + 0x73, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x2f, 0x61, 0x6c, 0x65, 0x72, + 0x74, 0x73, 0x12, 0xb5, 0x01, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, + 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x12, 0x37, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, - 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, - 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x18, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x12, 0x2a, 0x10, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, - 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0x9a, 0x01, 0x0a, 0x11, 0x51, 0x75, 0x65, 0x72, 0x79, - 0x4f, 0x72, 0x67, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x31, 0x2e, 0x65, + 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, + 0x72, 0x67, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, + 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, + 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x43, 0x75, 0x73, 0x74, 0x6f, + 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x27, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x21, 0x1a, 0x1f, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x2f, 0x61, + 0x6c, 0x65, 0x72, 0x74, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0xce, 0x01, 0x0a, 0x1d, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, + 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x3d, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, - 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4f, 0x72, 0x67, 0x41, - 0x6c, 0x65, 0x72, 0x74, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x32, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, - 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4f, - 0x72, 0x67, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x1e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x12, 0x16, 0x2f, 0x61, 0x70, - 0x69, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x2f, 0x72, 0x75, - 0x6c, 0x65, 0x73, 0x12, 0x88, 0x01, 0x0a, 0x0d, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4f, 0x72, 0x67, - 0x41, 0x6c, 0x65, 0x72, 0x74, 0x12, 0x2d, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, - 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, - 0x51, 0x75, 0x65, 0x72, 0x79, 0x4f, 0x72, 0x67, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, - 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x51, - 0x75, 0x65, 0x72, 0x79, 0x4f, 0x72, 0x67, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x18, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x12, 0x12, 0x10, 0x2f, 0x61, - 0x70, 0x69, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x12, 0x99, - 0x01, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x44, 0x65, - 0x74, 0x61, 0x69, 0x6c, 0x12, 0x31, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, - 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x47, - 0x65, 0x74, 0x4f, 0x72, 0x67, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, + 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, + 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x45, 0x6e, + 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3e, 0x2e, 0x65, 0x72, + 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, + 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x43, + 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x45, 0x6e, 0x61, + 0x62, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2e, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x28, 0x1a, 0x26, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x63, + 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x2f, + 0x7b, 0x69, 0x64, 0x7d, 0x2f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0xb5, 0x01, 0x0a, 0x17, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, + 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x12, 0x37, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, - 0x74, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x44, 0x65, 0x74, - 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1d, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x17, 0x12, 0x15, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x61, - 0x6c, 0x65, 0x72, 0x74, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0x8b, 0x01, 0x0a, 0x0e, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x12, 0x2e, 0x2e, - 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, - 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, - 0x67, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, + 0x74, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x43, 0x75, 0x73, 0x74, 0x6f, + 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x38, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, + 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x4f, 0x72, 0x67, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, + 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x27, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x21, 0x2a, 0x1f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x63, 0x75, + 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x2f, 0x7b, + 0x69, 0x64, 0x7d, 0x12, 0xb8, 0x01, 0x0a, 0x15, 0x51, 0x75, 0x65, 0x72, 0x79, 0x44, 0x61, 0x73, + 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x42, 0x79, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x12, 0x35, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, - 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, - 0x67, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x18, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x12, 0x22, 0x10, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6f, 0x72, 0x67, - 0x73, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x12, 0x90, 0x01, 0x0a, 0x0e, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x12, 0x2e, 0x2e, 0x65, 0x72, - 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, - 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x41, - 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x65, 0x72, + 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x44, 0x61, 0x73, + 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x42, 0x79, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, + 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x42, 0x79, 0x41, + 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x30, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x2a, 0x22, 0x28, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, + 0x6d, 0x69, 0x7a, 0x65, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x2f, 0x64, 0x61, 0x73, 0x68, + 0x2d, 0x70, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x2f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x12, 0xc6, + 0x01, 0x0a, 0x18, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4f, 0x72, 0x67, 0x44, 0x61, 0x73, 0x68, 0x62, + 0x6f, 0x61, 0x72, 0x64, 0x42, 0x79, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x12, 0x38, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, - 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x41, - 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1d, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x17, 0x1a, 0x15, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, - 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0xa9, 0x01, 0x0a, 0x14, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x45, 0x6e, - 0x61, 0x62, 0x6c, 0x65, 0x12, 0x34, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, - 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x45, 0x6e, 0x61, - 0x62, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x65, 0x72, 0x64, - 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, - 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x41, 0x6c, - 0x65, 0x72, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x24, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x1a, 0x1c, 0x2f, 0x61, 0x70, 0x69, 0x2f, - 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, - 0x2f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x90, 0x01, 0x0a, 0x0e, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x4f, 0x72, 0x67, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x12, 0x2e, 0x2e, 0x65, 0x72, 0x64, + 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4f, 0x72, 0x67, 0x44, 0x61, + 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x42, 0x79, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, + 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, + 0x51, 0x75, 0x65, 0x72, 0x79, 0x4f, 0x72, 0x67, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, + 0x64, 0x42, 0x79, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x35, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2f, 0x22, 0x2d, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6f, + 0x72, 0x67, 0x73, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x2f, 0x61, 0x6c, + 0x65, 0x72, 0x74, 0x73, 0x2f, 0x64, 0x61, 0x73, 0x68, 0x2d, 0x70, 0x72, 0x65, 0x76, 0x69, 0x65, + 0x77, 0x2f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x12, 0x8c, 0x01, 0x0a, 0x0e, 0x51, 0x75, 0x65, 0x72, + 0x79, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x2e, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, - 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x41, 0x6c, - 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x65, 0x72, 0x64, + 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, + 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, - 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x41, 0x6c, - 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1d, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x17, 0x2a, 0x15, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x61, - 0x6c, 0x65, 0x72, 0x74, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0x9e, 0x01, 0x0a, 0x12, 0x47, - 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x41, 0x74, 0x74, - 0x72, 0x12, 0x32, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, + 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, + 0x75, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x19, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x13, 0x12, 0x11, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, + 0x2f, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x7b, 0x0a, 0x0a, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, + 0x6c, 0x65, 0x72, 0x74, 0x12, 0x2a, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, + 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x2c, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, + 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, + 0x41, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x13, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0d, 0x12, 0x0b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6c, 0x65, + 0x72, 0x74, 0x73, 0x12, 0x79, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x12, + 0x28, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, + 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, + 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x65, 0x72, 0x64, 0x61, + 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, + 0x65, 0x72, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x18, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x12, 0x12, 0x10, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0x92, + 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, + 0x6c, 0x12, 0x2e, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x41, - 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x41, 0x74, 0x74, 0x72, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, + 0x6c, 0x65, 0x72, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x2f, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, + 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x41, + 0x6c, 0x65, 0x72, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x1f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x12, 0x17, 0x2f, 0x61, 0x70, 0x69, + 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x65, 0x74, + 0x61, 0x69, 0x6c, 0x12, 0x7d, 0x0a, 0x0b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, + 0x72, 0x74, 0x12, 0x2b, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, + 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x2c, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, + 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x13, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x0d, 0x22, 0x0b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6c, 0x65, 0x72, + 0x74, 0x73, 0x12, 0x82, 0x01, 0x0a, 0x0b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, + 0x72, 0x74, 0x12, 0x2b, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, + 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x2c, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, + 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x18, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x12, 0x1a, 0x10, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6c, 0x65, 0x72, + 0x74, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0x9b, 0x01, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x31, 0x2e, + 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, + 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x6c, + 0x65, 0x72, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x32, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, + 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x1a, 0x17, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x2f, 0x73, + 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x82, 0x01, 0x0a, 0x0b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x41, 0x6c, 0x65, 0x72, 0x74, 0x12, 0x2b, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, - 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x41, 0x74, - 0x74, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1f, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x19, 0x12, 0x17, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2d, 0x72, - 0x65, 0x63, 0x6f, 0x72, 0x64, 0x2d, 0x61, 0x74, 0x74, 0x72, 0x73, 0x12, 0x93, 0x01, 0x0a, 0x10, - 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, - 0x12, 0x30, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, + 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x18, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x12, 0x2a, 0x10, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, + 0x6c, 0x65, 0x72, 0x74, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0x9a, 0x01, 0x0a, 0x11, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x4f, 0x72, 0x67, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x75, 0x6c, 0x65, + 0x12, 0x31, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, - 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, - 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x51, 0x75, 0x65, - 0x72, 0x79, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x14, 0x12, 0x12, 0x2f, - 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2d, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, - 0x73, 0x12, 0x97, 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, - 0x63, 0x6f, 0x72, 0x64, 0x12, 0x2e, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, - 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x47, - 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, - 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x47, - 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x24, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x12, 0x1c, 0x2f, - 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2d, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, - 0x73, 0x2f, 0x7b, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x7d, 0x12, 0xaa, 0x01, 0x0a, 0x11, - 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, - 0x79, 0x12, 0x31, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, - 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, - 0x79, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, + 0x4f, 0x72, 0x67, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, + 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x51, 0x75, + 0x65, 0x72, 0x79, 0x4f, 0x72, 0x67, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x75, 0x6c, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x12, + 0x16, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, + 0x73, 0x2f, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x88, 0x01, 0x0a, 0x0d, 0x51, 0x75, 0x65, 0x72, + 0x79, 0x4f, 0x72, 0x67, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x12, 0x2d, 0x2e, 0x65, 0x72, 0x64, 0x61, + 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, + 0x65, 0x72, 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4f, 0x72, 0x67, 0x41, 0x6c, 0x65, 0x72, + 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, + 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, + 0x72, 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4f, 0x72, 0x67, 0x41, 0x6c, 0x65, 0x72, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x18, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x12, + 0x12, 0x10, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x61, 0x6c, 0x65, 0x72, + 0x74, 0x73, 0x12, 0x99, 0x01, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x41, 0x6c, 0x65, + 0x72, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x31, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, + 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, + 0x72, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x44, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x65, 0x72, + 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, + 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x41, 0x6c, 0x65, 0x72, + 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x1d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x12, 0x15, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6f, 0x72, + 0x67, 0x73, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0x8b, + 0x01, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x41, 0x6c, 0x65, 0x72, + 0x74, 0x12, 0x2e, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, + 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x4f, 0x72, 0x67, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x2f, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, + 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x4f, 0x72, 0x67, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x18, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x12, 0x22, 0x10, 0x2f, 0x61, 0x70, 0x69, + 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x12, 0x90, 0x01, 0x0a, + 0x0e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x12, + 0x2e, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, + 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x4f, 0x72, 0x67, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x2f, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, + 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x4f, 0x72, 0x67, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x1d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x1a, 0x15, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6f, + 0x72, 0x67, 0x73, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, + 0xa9, 0x01, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x41, 0x6c, 0x65, + 0x72, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x34, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, + 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, + 0x72, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x41, 0x6c, 0x65, 0x72, + 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, + 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, + 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, + 0x72, 0x67, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x24, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x1a, 0x1c, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x2f, + 0x7b, 0x69, 0x64, 0x7d, 0x2f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x90, 0x01, 0x0a, 0x0e, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x12, 0x2e, + 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, + 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, + 0x72, 0x67, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, + 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, + 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, + 0x72, 0x67, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x1d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x2a, 0x15, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6f, 0x72, + 0x67, 0x73, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0x9e, + 0x01, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, + 0x64, 0x41, 0x74, 0x74, 0x72, 0x12, 0x32, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, + 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, + 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x41, 0x74, + 0x74, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x65, 0x72, 0x64, 0x61, + 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, + 0x65, 0x72, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, + 0x72, 0x64, 0x41, 0x74, 0x74, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1f, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x12, 0x17, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6c, 0x65, + 0x72, 0x74, 0x2d, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x2d, 0x61, 0x74, 0x74, 0x72, 0x73, 0x12, + 0x93, 0x01, 0x0a, 0x10, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, + 0x63, 0x6f, 0x72, 0x64, 0x12, 0x30, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x51, - 0x75, 0x65, 0x72, 0x79, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x28, - 0x12, 0x26, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2d, 0x72, 0x65, 0x63, - 0x6f, 0x72, 0x64, 0x73, 0x2f, 0x7b, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x7d, 0x2f, 0x68, - 0x69, 0x73, 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x12, 0xa4, 0x01, 0x0a, 0x10, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x49, 0x73, 0x73, 0x75, 0x65, 0x12, 0x30, 0x2e, - 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, - 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x6c, - 0x65, 0x72, 0x74, 0x49, 0x73, 0x73, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x31, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, - 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x41, 0x6c, 0x65, 0x72, 0x74, 0x49, 0x73, 0x73, 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x2b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x22, 0x23, 0x2f, 0x61, 0x70, 0x69, - 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2d, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x2f, 0x7b, - 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x7d, 0x2f, 0x69, 0x73, 0x73, 0x75, 0x65, 0x73, 0x12, - 0xae, 0x01, 0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x49, - 0x73, 0x73, 0x75, 0x65, 0x12, 0x30, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, - 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x49, 0x73, 0x73, 0x75, 0x65, 0x52, + 0x75, 0x65, 0x72, 0x79, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, - 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x49, 0x73, 0x73, 0x75, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x35, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x2f, 0x1a, 0x2d, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2d, 0x72, 0x65, - 0x63, 0x6f, 0x72, 0x64, 0x73, 0x2f, 0x7b, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x7d, 0x2f, - 0x69, 0x73, 0x73, 0x75, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x73, 0x73, 0x75, 0x65, 0x49, 0x64, 0x7d, - 0x12, 0xab, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x41, 0x6c, 0x65, 0x72, 0x74, - 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x41, 0x74, 0x74, 0x72, 0x12, 0x35, 0x2e, 0x65, 0x72, 0x64, - 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, - 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x41, 0x6c, 0x65, 0x72, 0x74, - 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x41, 0x74, 0x74, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x36, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, - 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x4f, - 0x72, 0x67, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x41, 0x74, 0x74, - 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x23, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x1d, 0x12, 0x1b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6f, 0x72, 0x67, 0x2d, 0x61, 0x6c, 0x65, 0x72, - 0x74, 0x2d, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x2d, 0x61, 0x74, 0x74, 0x72, 0x73, 0x12, 0xa0, - 0x01, 0x0a, 0x13, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4f, 0x72, 0x67, 0x41, 0x6c, 0x65, 0x72, 0x74, - 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x33, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, - 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, - 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4f, 0x72, 0x67, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, - 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x65, 0x72, - 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, - 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4f, 0x72, 0x67, 0x41, 0x6c, - 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x1e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x12, 0x16, 0x2f, 0x61, 0x70, 0x69, 0x2f, - 0x6f, 0x72, 0x67, 0x2d, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2d, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, - 0x73, 0x12, 0xb0, 0x01, 0x0a, 0x18, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4f, 0x72, 0x67, 0x48, 0x6f, - 0x73, 0x74, 0x73, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x38, - 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, - 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4f, 0x72, - 0x67, 0x48, 0x6f, 0x73, 0x74, 0x73, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, - 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, + 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, + 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1a, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x14, 0x12, 0x12, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2d, 0x72, 0x65, + 0x63, 0x6f, 0x72, 0x64, 0x73, 0x12, 0x97, 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, + 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x2e, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, - 0x72, 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4f, 0x72, 0x67, 0x41, 0x6c, 0x65, 0x72, 0x74, - 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x24, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x22, 0x1c, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6f, 0x72, 0x67, - 0x2d, 0x68, 0x6f, 0x73, 0x74, 0x73, 0x2d, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2d, 0x72, 0x65, 0x63, - 0x6f, 0x72, 0x64, 0x73, 0x12, 0xa4, 0x01, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x41, - 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x31, 0x2e, 0x65, 0x72, 0x64, + 0x72, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, + 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, + 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, + 0x72, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, + 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x24, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x1e, 0x12, 0x1c, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2d, 0x72, 0x65, + 0x63, 0x6f, 0x72, 0x64, 0x73, 0x2f, 0x7b, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x7d, 0x12, + 0xaa, 0x01, 0x0a, 0x11, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x48, 0x69, + 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x31, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, + 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, + 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, + 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, + 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, + 0x72, 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x48, 0x69, 0x73, + 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2e, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x28, 0x12, 0x26, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, + 0x2d, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x2f, 0x7b, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, + 0x64, 0x7d, 0x2f, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x12, 0xa4, 0x01, 0x0a, + 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x49, 0x73, 0x73, 0x75, + 0x65, 0x12, 0x30, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, + 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x49, 0x73, 0x73, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, + 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x49, 0x73, 0x73, 0x75, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x22, 0x23, + 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2d, 0x72, 0x65, 0x63, 0x6f, 0x72, + 0x64, 0x73, 0x2f, 0x7b, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x7d, 0x2f, 0x69, 0x73, 0x73, + 0x75, 0x65, 0x73, 0x12, 0xae, 0x01, 0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x6c, + 0x65, 0x72, 0x74, 0x49, 0x73, 0x73, 0x75, 0x65, 0x12, 0x30, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, + 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, + 0x72, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x49, 0x73, + 0x73, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, - 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x41, 0x6c, 0x65, 0x72, 0x74, - 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, - 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, - 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x41, 0x6c, - 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x12, 0x20, 0x2f, 0x61, 0x70, 0x69, 0x2f, - 0x6f, 0x72, 0x67, 0x2d, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2d, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, - 0x73, 0x2f, 0x7b, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x7d, 0x12, 0xb7, 0x01, 0x0a, 0x14, - 0x51, 0x75, 0x65, 0x72, 0x79, 0x4f, 0x72, 0x67, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x48, 0x69, 0x73, - 0x74, 0x6f, 0x72, 0x79, 0x12, 0x34, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, - 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x51, - 0x75, 0x65, 0x72, 0x79, 0x4f, 0x72, 0x67, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x48, 0x69, 0x73, 0x74, - 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x65, 0x72, 0x64, + 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, + 0x49, 0x73, 0x73, 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x35, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x2f, 0x1a, 0x2d, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6c, 0x65, 0x72, + 0x74, 0x2d, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x2f, 0x7b, 0x67, 0x72, 0x6f, 0x75, 0x70, + 0x49, 0x64, 0x7d, 0x2f, 0x69, 0x73, 0x73, 0x75, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x73, 0x73, 0x75, + 0x65, 0x49, 0x64, 0x7d, 0x12, 0xab, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x41, + 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x41, 0x74, 0x74, 0x72, 0x12, 0x35, + 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, + 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x41, + 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x41, 0x74, 0x74, 0x72, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, + 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, + 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, + 0x64, 0x41, 0x74, 0x74, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x23, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x12, 0x1b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6f, 0x72, 0x67, 0x2d, + 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2d, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x2d, 0x61, 0x74, 0x74, + 0x72, 0x73, 0x12, 0xa0, 0x01, 0x0a, 0x13, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4f, 0x72, 0x67, 0x41, + 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x33, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4f, 0x72, 0x67, 0x41, 0x6c, 0x65, - 0x72, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x32, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2c, 0x12, 0x2a, 0x2f, 0x61, 0x70, 0x69, 0x2f, - 0x6f, 0x72, 0x67, 0x2d, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2d, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, - 0x73, 0x2f, 0x7b, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x7d, 0x2f, 0x68, 0x69, 0x73, 0x74, - 0x6f, 0x72, 0x69, 0x65, 0x73, 0x12, 0xb1, 0x01, 0x0a, 0x13, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x4f, 0x72, 0x67, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x49, 0x73, 0x73, 0x75, 0x65, 0x12, 0x33, 0x2e, - 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, - 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, - 0x67, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x49, 0x73, 0x73, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, - 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x49, 0x73, 0x73, 0x75, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x29, - 0x22, 0x27, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6f, 0x72, 0x67, 0x2d, 0x61, 0x6c, 0x65, 0x72, 0x74, - 0x2d, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x2f, 0x7b, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, - 0x64, 0x7d, 0x2f, 0x69, 0x73, 0x73, 0x75, 0x65, 0x73, 0x12, 0xb1, 0x01, 0x0a, 0x13, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x49, 0x73, 0x73, 0x75, + 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x34, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, + 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4f, + 0x72, 0x67, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x12, 0x16, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x6f, 0x72, 0x67, 0x2d, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2d, 0x72, 0x65, + 0x63, 0x6f, 0x72, 0x64, 0x73, 0x12, 0xb0, 0x01, 0x0a, 0x18, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4f, + 0x72, 0x67, 0x48, 0x6f, 0x73, 0x74, 0x73, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, + 0x72, 0x64, 0x12, 0x38, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, + 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x51, 0x75, 0x65, + 0x72, 0x79, 0x4f, 0x72, 0x67, 0x48, 0x6f, 0x73, 0x74, 0x73, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, + 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x65, + 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, + 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4f, 0x72, 0x67, 0x41, + 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x24, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x22, 0x1c, 0x2f, 0x61, 0x70, 0x69, + 0x2f, 0x6f, 0x72, 0x67, 0x2d, 0x68, 0x6f, 0x73, 0x74, 0x73, 0x2d, 0x61, 0x6c, 0x65, 0x72, 0x74, + 0x2d, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x12, 0xa4, 0x01, 0x0a, 0x11, 0x47, 0x65, 0x74, + 0x4f, 0x72, 0x67, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x31, + 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, + 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x41, + 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x32, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, + 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x4f, + 0x72, 0x67, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x12, 0x20, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x6f, 0x72, 0x67, 0x2d, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2d, 0x72, 0x65, + 0x63, 0x6f, 0x72, 0x64, 0x73, 0x2f, 0x7b, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x7d, 0x12, + 0xb7, 0x01, 0x0a, 0x14, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4f, 0x72, 0x67, 0x41, 0x6c, 0x65, 0x72, + 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x34, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, + 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, + 0x72, 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4f, 0x72, 0x67, 0x41, 0x6c, 0x65, 0x72, 0x74, + 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, + 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, + 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4f, 0x72, + 0x67, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x32, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2c, 0x12, 0x2a, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x6f, 0x72, 0x67, 0x2d, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2d, 0x72, 0x65, + 0x63, 0x6f, 0x72, 0x64, 0x73, 0x2f, 0x7b, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x7d, 0x2f, + 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x12, 0xb1, 0x01, 0x0a, 0x13, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x49, 0x73, 0x73, 0x75, 0x65, 0x12, 0x33, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, - 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, + 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x49, 0x73, 0x73, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, - 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x49, + 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x49, 0x73, 0x73, 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2f, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x29, 0x1a, 0x27, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6f, 0x72, 0x67, 0x2d, 0x61, + 0xe4, 0x93, 0x02, 0x29, 0x22, 0x27, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6f, 0x72, 0x67, 0x2d, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2d, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x2f, 0x7b, 0x67, 0x72, - 0x6f, 0x75, 0x70, 0x49, 0x64, 0x7d, 0x2f, 0x69, 0x73, 0x73, 0x75, 0x65, 0x73, 0x42, 0x3d, 0x5a, - 0x3b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x65, 0x72, 0x64, 0x61, - 0x2d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x2f, 0x65, 0x72, 0x64, 0x61, 0x2d, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x2d, 0x67, 0x6f, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x6d, 0x6f, 0x6e, 0x69, - 0x74, 0x6f, 0x72, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2f, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x33, + 0x6f, 0x75, 0x70, 0x49, 0x64, 0x7d, 0x2f, 0x69, 0x73, 0x73, 0x75, 0x65, 0x73, 0x12, 0xb1, 0x01, + 0x0a, 0x13, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x41, 0x6c, 0x65, 0x72, 0x74, + 0x49, 0x73, 0x73, 0x75, 0x65, 0x12, 0x33, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, + 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x49, 0x73, + 0x73, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x65, 0x72, 0x64, + 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, + 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x41, 0x6c, + 0x65, 0x72, 0x74, 0x49, 0x73, 0x73, 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x2f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x29, 0x1a, 0x27, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6f, + 0x72, 0x67, 0x2d, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2d, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, + 0x2f, 0x7b, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x7d, 0x2f, 0x69, 0x73, 0x73, 0x75, 0x65, + 0x73, 0x12, 0x7f, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x43, 0x6f, 0x6e, + 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x32, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, + 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, + 0x74, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x65, 0x72, + 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, + 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x43, 0x6f, + 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x00, 0x12, 0x8e, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x43, + 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x37, + 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, + 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, + 0x74, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, + 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, + 0x74, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x42, 0x3d, 0x5a, 0x3b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x65, 0x72, 0x64, 0x61, 0x2d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x2f, 0x65, + 0x72, 0x64, 0x61, 0x2d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2d, 0x67, 0x6f, 0x2f, 0x63, 0x6f, 0x72, + 0x65, 0x2f, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2f, + 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -11667,7 +12213,7 @@ func file_alert_proto_rawDescGZIP() []byte { return file_alert_proto_rawDescData } -var file_alert_proto_msgTypes = make([]protoimpl.MessageInfo, 161) +var file_alert_proto_msgTypes = make([]protoimpl.MessageInfo, 169) var file_alert_proto_goTypes = []interface{}{ (*QueryCustomizeMetricRequest)(nil), // 0: erda.core.monitor.alert.QueryCustomizeMetricRequest (*QueryCustomizeMetricResponse)(nil), // 1: erda.core.monitor.alert.QueryCustomizeMetricResponse @@ -11763,75 +12309,83 @@ var file_alert_proto_goTypes = []interface{}{ (*GetOrgAlertDetailRequest)(nil), // 91: erda.core.monitor.alert.GetOrgAlertDetailRequest (*GetOrgAlertDetailResponse)(nil), // 92: erda.core.monitor.alert.GetOrgAlertDetailResponse (*CreateOrgAlertRequest)(nil), // 93: erda.core.monitor.alert.CreateOrgAlertRequest - (*CreateOrgAlertResponse)(nil), // 94: erda.core.monitor.alert.CreateOrgAlertResponse - (*UpdateOrgAlertRequest)(nil), // 95: erda.core.monitor.alert.UpdateOrgAlertRequest - (*UpdateOrgAlertResponse)(nil), // 96: erda.core.monitor.alert.UpdateOrgAlertResponse - (*UpdateOrgAlertEnableRequest)(nil), // 97: erda.core.monitor.alert.UpdateOrgAlertEnableRequest - (*UpdateOrgAlertEnableResponse)(nil), // 98: erda.core.monitor.alert.UpdateOrgAlertEnableResponse - (*DeleteOrgAlertRequest)(nil), // 99: erda.core.monitor.alert.DeleteOrgAlertRequest - (*DeleteOrgAlertResponse)(nil), // 100: erda.core.monitor.alert.DeleteOrgAlertResponse - (*GetAlertRecordAttrRequest)(nil), // 101: erda.core.monitor.alert.GetAlertRecordAttrRequest - (*GetAlertRecordAttrResponse)(nil), // 102: erda.core.monitor.alert.GetAlertRecordAttrResponse - (*AlertRecordAttr)(nil), // 103: erda.core.monitor.alert.AlertRecordAttr - (*QueryAlertRecordRequest)(nil), // 104: erda.core.monitor.alert.QueryAlertRecordRequest - (*QueryAlertRecordResponse)(nil), // 105: erda.core.monitor.alert.QueryAlertRecordResponse - (*ListResult)(nil), // 106: erda.core.monitor.alert.ListResult - (*AlertRecord)(nil), // 107: erda.core.monitor.alert.AlertRecord - (*GetAlertRecordRequest)(nil), // 108: erda.core.monitor.alert.GetAlertRecordRequest - (*GetAlertRecordResponse)(nil), // 109: erda.core.monitor.alert.GetAlertRecordResponse - (*QueryAlertHistoryRequest)(nil), // 110: erda.core.monitor.alert.QueryAlertHistoryRequest - (*QueryAlertHistoryResponse)(nil), // 111: erda.core.monitor.alert.QueryAlertHistoryResponse - (*AlertHistory)(nil), // 112: erda.core.monitor.alert.AlertHistory - (*CreateAlertIssueRequest)(nil), // 113: erda.core.monitor.alert.CreateAlertIssueRequest - (*IssueManHour)(nil), // 114: erda.core.monitor.alert.IssueManHour - (*CreateAlertIssueResponse)(nil), // 115: erda.core.monitor.alert.CreateAlertIssueResponse - (*UpdateAlertIssueRequest)(nil), // 116: erda.core.monitor.alert.UpdateAlertIssueRequest - (*UpdateAlertIssueResponse)(nil), // 117: erda.core.monitor.alert.UpdateAlertIssueResponse - (*GetOrgAlertRecordAttrRequest)(nil), // 118: erda.core.monitor.alert.GetOrgAlertRecordAttrRequest - (*GetOrgAlertRecordAttrResponse)(nil), // 119: erda.core.monitor.alert.GetOrgAlertRecordAttrResponse - (*QueryOrgAlertRecordRequest)(nil), // 120: erda.core.monitor.alert.QueryOrgAlertRecordRequest - (*QueryOrgHostsAlertRecordRequest)(nil), // 121: erda.core.monitor.alert.QueryOrgHostsAlertRecordRequest - (*ClusterReq)(nil), // 122: erda.core.monitor.alert.ClusterReq - (*QueryOrgAlertRecordResponse)(nil), // 123: erda.core.monitor.alert.QueryOrgAlertRecordResponse - (*GetOrgAlertRecordRequest)(nil), // 124: erda.core.monitor.alert.GetOrgAlertRecordRequest - (*GetOrgAlertRecordResponse)(nil), // 125: erda.core.monitor.alert.GetOrgAlertRecordResponse - (*QueryOrgAlertHistoryRequest)(nil), // 126: erda.core.monitor.alert.QueryOrgAlertHistoryRequest - (*QueryOrgAlertHistoryResponse)(nil), // 127: erda.core.monitor.alert.QueryOrgAlertHistoryResponse - (*CreateOrgAlertIssueRequest)(nil), // 128: erda.core.monitor.alert.CreateOrgAlertIssueRequest - (*CreateOrgAlertIssueResponse)(nil), // 129: erda.core.monitor.alert.CreateOrgAlertIssueResponse - (*UpdateOrgAlertIssueRequest)(nil), // 130: erda.core.monitor.alert.UpdateOrgAlertIssueRequest - (*UpdateOrgAlertIssueResponse)(nil), // 131: erda.core.monitor.alert.UpdateOrgAlertIssueResponse - nil, // 132: erda.core.monitor.alert.CustomizeAlertDetail.AttributesEntry - nil, // 133: erda.core.monitor.alert.CustomizeAlertRule.SelectEntry - nil, // 134: erda.core.monitor.alert.CustomizeAlertRule.AttributesEntry - nil, // 135: erda.core.monitor.alert.CustomizeAlertNotifyTemplates.AttributesEntry - nil, // 136: erda.core.monitor.alert.CreateCustomizeAlertRequest.AttributesEntry - nil, // 137: erda.core.monitor.alert.UpdateCustomizeAlertRequest.AttributesEntry - nil, // 138: erda.core.monitor.alert.CreateOrgCustomizeAlertRequest.AttributesEntry - nil, // 139: erda.core.monitor.alert.UpdateOrgCustomizeAlertRequest.AttributesEntry - nil, // 140: erda.core.monitor.alert.QueryDashboardByAlertRequest.AttributesEntry - nil, // 141: erda.core.monitor.alert.Config.OptionPropsEntry - nil, // 142: erda.core.monitor.alert.API.QueryEntry - nil, // 143: erda.core.monitor.alert.API.BodyEntry - nil, // 144: erda.core.monitor.alert.API.HeaderEntry - nil, // 145: erda.core.monitor.alert.API.ExtraDataEntry - nil, // 146: erda.core.monitor.alert.QueryOrgDashboardByAlertRequest.AttributesEntry - nil, // 147: erda.core.monitor.alert.AlertRule.TemplateEntry - nil, // 148: erda.core.monitor.alert.AlertRule.AttributesEntry - nil, // 149: erda.core.monitor.alert.Alert.FiltersEntry - nil, // 150: erda.core.monitor.alert.Alert.AttributesEntry - nil, // 151: erda.core.monitor.alert.CreateAlertRequest.FiltersEntry - nil, // 152: erda.core.monitor.alert.CreateAlertRequest.AttributesEntry - nil, // 153: erda.core.monitor.alert.UpdateAlertRequest.FiltersEntry - nil, // 154: erda.core.monitor.alert.UpdateAlertRequest.AttributesEntry - nil, // 155: erda.core.monitor.alert.DeleteAlertResponse.DataEntry - nil, // 156: erda.core.monitor.alert.CreateOrgAlertRequest.FiltersEntry - nil, // 157: erda.core.monitor.alert.CreateOrgAlertRequest.AttributesEntry - nil, // 158: erda.core.monitor.alert.UpdateOrgAlertRequest.FiltersEntry - nil, // 159: erda.core.monitor.alert.UpdateOrgAlertRequest.AttributesEntry - nil, // 160: erda.core.monitor.alert.DeleteOrgAlertResponse.DataEntry - (*structpb.Value)(nil), // 161: google.protobuf.Value - (*timestamppb.Timestamp)(nil), // 162: google.protobuf.Timestamp + (*TriggerCondition)(nil), // 94: erda.core.monitor.alert.TriggerCondition + (*CreateOrgAlertResponse)(nil), // 95: erda.core.monitor.alert.CreateOrgAlertResponse + (*UpdateOrgAlertRequest)(nil), // 96: erda.core.monitor.alert.UpdateOrgAlertRequest + (*UpdateOrgAlertResponse)(nil), // 97: erda.core.monitor.alert.UpdateOrgAlertResponse + (*UpdateOrgAlertEnableRequest)(nil), // 98: erda.core.monitor.alert.UpdateOrgAlertEnableRequest + (*UpdateOrgAlertEnableResponse)(nil), // 99: erda.core.monitor.alert.UpdateOrgAlertEnableResponse + (*DeleteOrgAlertRequest)(nil), // 100: erda.core.monitor.alert.DeleteOrgAlertRequest + (*DeleteOrgAlertResponse)(nil), // 101: erda.core.monitor.alert.DeleteOrgAlertResponse + (*GetAlertRecordAttrRequest)(nil), // 102: erda.core.monitor.alert.GetAlertRecordAttrRequest + (*GetAlertRecordAttrResponse)(nil), // 103: erda.core.monitor.alert.GetAlertRecordAttrResponse + (*AlertRecordAttr)(nil), // 104: erda.core.monitor.alert.AlertRecordAttr + (*QueryAlertRecordRequest)(nil), // 105: erda.core.monitor.alert.QueryAlertRecordRequest + (*QueryAlertRecordResponse)(nil), // 106: erda.core.monitor.alert.QueryAlertRecordResponse + (*ListResult)(nil), // 107: erda.core.monitor.alert.ListResult + (*AlertRecord)(nil), // 108: erda.core.monitor.alert.AlertRecord + (*GetAlertRecordRequest)(nil), // 109: erda.core.monitor.alert.GetAlertRecordRequest + (*GetAlertRecordResponse)(nil), // 110: erda.core.monitor.alert.GetAlertRecordResponse + (*QueryAlertHistoryRequest)(nil), // 111: erda.core.monitor.alert.QueryAlertHistoryRequest + (*QueryAlertHistoryResponse)(nil), // 112: erda.core.monitor.alert.QueryAlertHistoryResponse + (*AlertHistory)(nil), // 113: erda.core.monitor.alert.AlertHistory + (*CreateAlertIssueRequest)(nil), // 114: erda.core.monitor.alert.CreateAlertIssueRequest + (*IssueManHour)(nil), // 115: erda.core.monitor.alert.IssueManHour + (*CreateAlertIssueResponse)(nil), // 116: erda.core.monitor.alert.CreateAlertIssueResponse + (*UpdateAlertIssueRequest)(nil), // 117: erda.core.monitor.alert.UpdateAlertIssueRequest + (*UpdateAlertIssueResponse)(nil), // 118: erda.core.monitor.alert.UpdateAlertIssueResponse + (*GetOrgAlertRecordAttrRequest)(nil), // 119: erda.core.monitor.alert.GetOrgAlertRecordAttrRequest + (*GetOrgAlertRecordAttrResponse)(nil), // 120: erda.core.monitor.alert.GetOrgAlertRecordAttrResponse + (*QueryOrgAlertRecordRequest)(nil), // 121: erda.core.monitor.alert.QueryOrgAlertRecordRequest + (*QueryOrgHostsAlertRecordRequest)(nil), // 122: erda.core.monitor.alert.QueryOrgHostsAlertRecordRequest + (*ClusterReq)(nil), // 123: erda.core.monitor.alert.ClusterReq + (*QueryOrgAlertRecordResponse)(nil), // 124: erda.core.monitor.alert.QueryOrgAlertRecordResponse + (*GetOrgAlertRecordRequest)(nil), // 125: erda.core.monitor.alert.GetOrgAlertRecordRequest + (*GetOrgAlertRecordResponse)(nil), // 126: erda.core.monitor.alert.GetOrgAlertRecordResponse + (*QueryOrgAlertHistoryRequest)(nil), // 127: erda.core.monitor.alert.QueryOrgAlertHistoryRequest + (*QueryOrgAlertHistoryResponse)(nil), // 128: erda.core.monitor.alert.QueryOrgAlertHistoryResponse + (*CreateOrgAlertIssueRequest)(nil), // 129: erda.core.monitor.alert.CreateOrgAlertIssueRequest + (*CreateOrgAlertIssueResponse)(nil), // 130: erda.core.monitor.alert.CreateOrgAlertIssueResponse + (*UpdateOrgAlertIssueRequest)(nil), // 131: erda.core.monitor.alert.UpdateOrgAlertIssueRequest + (*UpdateOrgAlertIssueResponse)(nil), // 132: erda.core.monitor.alert.UpdateOrgAlertIssueResponse + (*GetAlertConditionsRequest)(nil), // 133: erda.core.monitor.alert.GetAlertConditionsRequest + (*GetAlertConditionsResponse)(nil), // 134: erda.core.monitor.alert.GetAlertConditionsResponse + (*Conditions)(nil), // 135: erda.core.monitor.alert.Conditions + (*GetAlertConditionsValueRequest)(nil), // 136: erda.core.monitor.alert.GetAlertConditionsValueRequest + (*GetAlertConditionsValueResponse)(nil), // 137: erda.core.monitor.alert.GetAlertConditionsValueResponse + (*AlertConditionsValue)(nil), // 138: erda.core.monitor.alert.AlertConditionsValue + nil, // 139: erda.core.monitor.alert.CustomizeAlertDetail.AttributesEntry + nil, // 140: erda.core.monitor.alert.CustomizeAlertRule.SelectEntry + nil, // 141: erda.core.monitor.alert.CustomizeAlertRule.AttributesEntry + nil, // 142: erda.core.monitor.alert.CustomizeAlertNotifyTemplates.AttributesEntry + nil, // 143: erda.core.monitor.alert.CreateCustomizeAlertRequest.AttributesEntry + nil, // 144: erda.core.monitor.alert.UpdateCustomizeAlertRequest.AttributesEntry + nil, // 145: erda.core.monitor.alert.CreateOrgCustomizeAlertRequest.AttributesEntry + nil, // 146: erda.core.monitor.alert.UpdateOrgCustomizeAlertRequest.AttributesEntry + nil, // 147: erda.core.monitor.alert.QueryDashboardByAlertRequest.AttributesEntry + nil, // 148: erda.core.monitor.alert.Config.OptionPropsEntry + nil, // 149: erda.core.monitor.alert.API.QueryEntry + nil, // 150: erda.core.monitor.alert.API.BodyEntry + nil, // 151: erda.core.monitor.alert.API.HeaderEntry + nil, // 152: erda.core.monitor.alert.API.ExtraDataEntry + nil, // 153: erda.core.monitor.alert.QueryOrgDashboardByAlertRequest.AttributesEntry + nil, // 154: erda.core.monitor.alert.AlertRule.TemplateEntry + nil, // 155: erda.core.monitor.alert.AlertRule.AttributesEntry + nil, // 156: erda.core.monitor.alert.Alert.FiltersEntry + nil, // 157: erda.core.monitor.alert.Alert.AttributesEntry + nil, // 158: erda.core.monitor.alert.CreateAlertRequest.FiltersEntry + nil, // 159: erda.core.monitor.alert.CreateAlertRequest.AttributesEntry + nil, // 160: erda.core.monitor.alert.UpdateAlertRequest.FiltersEntry + nil, // 161: erda.core.monitor.alert.UpdateAlertRequest.AttributesEntry + nil, // 162: erda.core.monitor.alert.DeleteAlertResponse.DataEntry + nil, // 163: erda.core.monitor.alert.CreateOrgAlertRequest.FiltersEntry + nil, // 164: erda.core.monitor.alert.CreateOrgAlertRequest.AttributesEntry + nil, // 165: erda.core.monitor.alert.UpdateOrgAlertRequest.FiltersEntry + nil, // 166: erda.core.monitor.alert.UpdateOrgAlertRequest.AttributesEntry + nil, // 167: erda.core.monitor.alert.DeleteOrgAlertResponse.DataEntry + nil, // 168: erda.core.monitor.alert.GetAlertConditionsValueRequest.FiltersEntry + (*structpb.Value)(nil), // 169: google.protobuf.Value + (*timestamppb.Timestamp)(nil), // 170: google.protobuf.Timestamp } var file_alert_proto_depIdxs = []int32{ 2, // 0: erda.core.monitor.alert.QueryCustomizeMetricResponse.data:type_name -> erda.core.monitor.alert.CustomizeMetrics @@ -11850,50 +12404,50 @@ var file_alert_proto_depIdxs = []int32{ 15, // 13: erda.core.monitor.alert.QueryCustomizeAlertResponse.data:type_name -> erda.core.monitor.alert.QueryCustomizeAlertData 16, // 14: erda.core.monitor.alert.QueryCustomizeAlertData.list:type_name -> erda.core.monitor.alert.CustomizeAlertOverview 19, // 15: erda.core.monitor.alert.GetCustomizeAlertResponse.data:type_name -> erda.core.monitor.alert.CustomizeAlertDetail - 132, // 16: erda.core.monitor.alert.CustomizeAlertDetail.attributes:type_name -> erda.core.monitor.alert.CustomizeAlertDetail.AttributesEntry + 139, // 16: erda.core.monitor.alert.CustomizeAlertDetail.attributes:type_name -> erda.core.monitor.alert.CustomizeAlertDetail.AttributesEntry 20, // 17: erda.core.monitor.alert.CustomizeAlertDetail.rules:type_name -> erda.core.monitor.alert.CustomizeAlertRule 23, // 18: erda.core.monitor.alert.CustomizeAlertDetail.notifies:type_name -> erda.core.monitor.alert.CustomizeAlertNotifyTemplates 21, // 19: erda.core.monitor.alert.CustomizeAlertRule.functions:type_name -> erda.core.monitor.alert.CustomizeAlertRuleFunction 22, // 20: erda.core.monitor.alert.CustomizeAlertRule.filters:type_name -> erda.core.monitor.alert.CustomizeAlertRuleFilter - 133, // 21: erda.core.monitor.alert.CustomizeAlertRule.select:type_name -> erda.core.monitor.alert.CustomizeAlertRule.SelectEntry - 134, // 22: erda.core.monitor.alert.CustomizeAlertRule.attributes:type_name -> erda.core.monitor.alert.CustomizeAlertRule.AttributesEntry - 161, // 23: erda.core.monitor.alert.CustomizeAlertRuleFunction.value:type_name -> google.protobuf.Value - 161, // 24: erda.core.monitor.alert.CustomizeAlertRuleFilter.value:type_name -> google.protobuf.Value - 135, // 25: erda.core.monitor.alert.CustomizeAlertNotifyTemplates.attributes:type_name -> erda.core.monitor.alert.CustomizeAlertNotifyTemplates.AttributesEntry + 140, // 21: erda.core.monitor.alert.CustomizeAlertRule.select:type_name -> erda.core.monitor.alert.CustomizeAlertRule.SelectEntry + 141, // 22: erda.core.monitor.alert.CustomizeAlertRule.attributes:type_name -> erda.core.monitor.alert.CustomizeAlertRule.AttributesEntry + 169, // 23: erda.core.monitor.alert.CustomizeAlertRuleFunction.value:type_name -> google.protobuf.Value + 169, // 24: erda.core.monitor.alert.CustomizeAlertRuleFilter.value:type_name -> google.protobuf.Value + 142, // 25: erda.core.monitor.alert.CustomizeAlertNotifyTemplates.attributes:type_name -> erda.core.monitor.alert.CustomizeAlertNotifyTemplates.AttributesEntry 19, // 26: erda.core.monitor.alert.GetCustomizeAlertDetailResponse.data:type_name -> erda.core.monitor.alert.CustomizeAlertDetail - 136, // 27: erda.core.monitor.alert.CreateCustomizeAlertRequest.attributes:type_name -> erda.core.monitor.alert.CreateCustomizeAlertRequest.AttributesEntry + 143, // 27: erda.core.monitor.alert.CreateCustomizeAlertRequest.attributes:type_name -> erda.core.monitor.alert.CreateCustomizeAlertRequest.AttributesEntry 20, // 28: erda.core.monitor.alert.CreateCustomizeAlertRequest.rules:type_name -> erda.core.monitor.alert.CustomizeAlertRule 23, // 29: erda.core.monitor.alert.CreateCustomizeAlertRequest.notifies:type_name -> erda.core.monitor.alert.CustomizeAlertNotifyTemplates - 137, // 30: erda.core.monitor.alert.UpdateCustomizeAlertRequest.attributes:type_name -> erda.core.monitor.alert.UpdateCustomizeAlertRequest.AttributesEntry + 144, // 30: erda.core.monitor.alert.UpdateCustomizeAlertRequest.attributes:type_name -> erda.core.monitor.alert.UpdateCustomizeAlertRequest.AttributesEntry 20, // 31: erda.core.monitor.alert.UpdateCustomizeAlertRequest.rules:type_name -> erda.core.monitor.alert.CustomizeAlertRule 23, // 32: erda.core.monitor.alert.UpdateCustomizeAlertRequest.notifies:type_name -> erda.core.monitor.alert.CustomizeAlertNotifyTemplates 2, // 33: erda.core.monitor.alert.QueryOrgCustomizeMetricResponse.data:type_name -> erda.core.monitor.alert.CustomizeMetrics 38, // 34: erda.core.monitor.alert.QueryOrgCustomizeAlertsResponse.data:type_name -> erda.core.monitor.alert.QueryOrgCustomizeAlertsData 16, // 35: erda.core.monitor.alert.QueryOrgCustomizeAlertsData.list:type_name -> erda.core.monitor.alert.CustomizeAlertOverview 19, // 36: erda.core.monitor.alert.GetOrgCustomizeAlertDetailResponse.data:type_name -> erda.core.monitor.alert.CustomizeAlertDetail - 138, // 37: erda.core.monitor.alert.CreateOrgCustomizeAlertRequest.attributes:type_name -> erda.core.monitor.alert.CreateOrgCustomizeAlertRequest.AttributesEntry + 145, // 37: erda.core.monitor.alert.CreateOrgCustomizeAlertRequest.attributes:type_name -> erda.core.monitor.alert.CreateOrgCustomizeAlertRequest.AttributesEntry 20, // 38: erda.core.monitor.alert.CreateOrgCustomizeAlertRequest.rules:type_name -> erda.core.monitor.alert.CustomizeAlertRule 23, // 39: erda.core.monitor.alert.CreateOrgCustomizeAlertRequest.notifies:type_name -> erda.core.monitor.alert.CustomizeAlertNotifyTemplates - 139, // 40: erda.core.monitor.alert.UpdateOrgCustomizeAlertRequest.attributes:type_name -> erda.core.monitor.alert.UpdateOrgCustomizeAlertRequest.AttributesEntry + 146, // 40: erda.core.monitor.alert.UpdateOrgCustomizeAlertRequest.attributes:type_name -> erda.core.monitor.alert.UpdateOrgCustomizeAlertRequest.AttributesEntry 20, // 41: erda.core.monitor.alert.UpdateOrgCustomizeAlertRequest.rules:type_name -> erda.core.monitor.alert.CustomizeAlertRule 23, // 42: erda.core.monitor.alert.UpdateOrgCustomizeAlertRequest.notifies:type_name -> erda.core.monitor.alert.CustomizeAlertNotifyTemplates - 161, // 43: erda.core.monitor.alert.DeleteOrgCustomizeAlertResponse.data:type_name -> google.protobuf.Value - 140, // 44: erda.core.monitor.alert.QueryDashboardByAlertRequest.attributes:type_name -> erda.core.monitor.alert.QueryDashboardByAlertRequest.AttributesEntry + 169, // 43: erda.core.monitor.alert.DeleteOrgCustomizeAlertResponse.data:type_name -> google.protobuf.Value + 147, // 44: erda.core.monitor.alert.QueryDashboardByAlertRequest.attributes:type_name -> erda.core.monitor.alert.QueryDashboardByAlertRequest.AttributesEntry 20, // 45: erda.core.monitor.alert.QueryDashboardByAlertRequest.rules:type_name -> erda.core.monitor.alert.CustomizeAlertRule 23, // 46: erda.core.monitor.alert.QueryDashboardByAlertRequest.notifies:type_name -> erda.core.monitor.alert.CustomizeAlertNotifyTemplates 51, // 47: erda.core.monitor.alert.QueryDashboardByAlertResponse.data:type_name -> erda.core.monitor.alert.View - 161, // 48: erda.core.monitor.alert.View.staticData:type_name -> google.protobuf.Value + 169, // 48: erda.core.monitor.alert.View.staticData:type_name -> google.protobuf.Value 52, // 49: erda.core.monitor.alert.View.config:type_name -> erda.core.monitor.alert.Config 53, // 50: erda.core.monitor.alert.View.api:type_name -> erda.core.monitor.alert.API - 161, // 51: erda.core.monitor.alert.View.controls:type_name -> google.protobuf.Value - 141, // 52: erda.core.monitor.alert.Config.optionProps:type_name -> erda.core.monitor.alert.Config.OptionPropsEntry - 161, // 53: erda.core.monitor.alert.Config.dataSourceConfig:type_name -> google.protobuf.Value - 161, // 54: erda.core.monitor.alert.Config.option:type_name -> google.protobuf.Value - 142, // 55: erda.core.monitor.alert.API.query:type_name -> erda.core.monitor.alert.API.QueryEntry - 143, // 56: erda.core.monitor.alert.API.body:type_name -> erda.core.monitor.alert.API.BodyEntry - 144, // 57: erda.core.monitor.alert.API.header:type_name -> erda.core.monitor.alert.API.HeaderEntry - 145, // 58: erda.core.monitor.alert.API.extraData:type_name -> erda.core.monitor.alert.API.ExtraDataEntry - 146, // 59: erda.core.monitor.alert.QueryOrgDashboardByAlertRequest.attributes:type_name -> erda.core.monitor.alert.QueryOrgDashboardByAlertRequest.AttributesEntry + 169, // 51: erda.core.monitor.alert.View.controls:type_name -> google.protobuf.Value + 148, // 52: erda.core.monitor.alert.Config.optionProps:type_name -> erda.core.monitor.alert.Config.OptionPropsEntry + 169, // 53: erda.core.monitor.alert.Config.dataSourceConfig:type_name -> google.protobuf.Value + 169, // 54: erda.core.monitor.alert.Config.option:type_name -> google.protobuf.Value + 149, // 55: erda.core.monitor.alert.API.query:type_name -> erda.core.monitor.alert.API.QueryEntry + 150, // 56: erda.core.monitor.alert.API.body:type_name -> erda.core.monitor.alert.API.BodyEntry + 151, // 57: erda.core.monitor.alert.API.header:type_name -> erda.core.monitor.alert.API.HeaderEntry + 152, // 58: erda.core.monitor.alert.API.extraData:type_name -> erda.core.monitor.alert.API.ExtraDataEntry + 153, // 59: erda.core.monitor.alert.QueryOrgDashboardByAlertRequest.attributes:type_name -> erda.core.monitor.alert.QueryOrgDashboardByAlertRequest.AttributesEntry 20, // 60: erda.core.monitor.alert.QueryOrgDashboardByAlertRequest.rules:type_name -> erda.core.monitor.alert.CustomizeAlertRule 23, // 61: erda.core.monitor.alert.QueryOrgDashboardByAlertRequest.notifies:type_name -> erda.core.monitor.alert.CustomizeAlertNotifyTemplates 51, // 62: erda.core.monitor.alert.QueryOrgDashboardByAlertResponse.data:type_name -> erda.core.monitor.alert.View @@ -11905,201 +12459,214 @@ var file_alert_proto_depIdxs = []int32{ 4, // 68: erda.core.monitor.alert.AlertTypeRule.alertType:type_name -> erda.core.monitor.alert.DisplayKey 60, // 69: erda.core.monitor.alert.AlertTypeRule.rules:type_name -> erda.core.monitor.alert.AlertRule 4, // 70: erda.core.monitor.alert.AlertRule.alertIndex:type_name -> erda.core.monitor.alert.DisplayKey - 147, // 71: erda.core.monitor.alert.AlertRule.template:type_name -> erda.core.monitor.alert.AlertRule.TemplateEntry + 154, // 71: erda.core.monitor.alert.AlertRule.template:type_name -> erda.core.monitor.alert.AlertRule.TemplateEntry 61, // 72: erda.core.monitor.alert.AlertRule.functions:type_name -> erda.core.monitor.alert.AlertRuleFunction - 148, // 73: erda.core.monitor.alert.AlertRule.attributes:type_name -> erda.core.monitor.alert.AlertRule.AttributesEntry + 155, // 73: erda.core.monitor.alert.AlertRule.attributes:type_name -> erda.core.monitor.alert.AlertRule.AttributesEntry 4, // 74: erda.core.monitor.alert.AlertRuleFunction.field:type_name -> erda.core.monitor.alert.DisplayKey - 161, // 75: erda.core.monitor.alert.AlertRuleFunction.value:type_name -> google.protobuf.Value + 169, // 75: erda.core.monitor.alert.AlertRuleFunction.value:type_name -> google.protobuf.Value 4, // 76: erda.core.monitor.alert.NotifySilence.unit:type_name -> erda.core.monitor.alert.DisplayKey 65, // 77: erda.core.monitor.alert.QueryAlertsResponse.data:type_name -> erda.core.monitor.alert.QueryAlertsData 66, // 78: erda.core.monitor.alert.QueryAlertsData.list:type_name -> erda.core.monitor.alert.Alert 67, // 79: erda.core.monitor.alert.Alert.rules:type_name -> erda.core.monitor.alert.AlertExpression 69, // 80: erda.core.monitor.alert.Alert.notifies:type_name -> erda.core.monitor.alert.AlertNotify - 149, // 81: erda.core.monitor.alert.Alert.filters:type_name -> erda.core.monitor.alert.Alert.FiltersEntry - 150, // 82: erda.core.monitor.alert.Alert.attributes:type_name -> erda.core.monitor.alert.Alert.AttributesEntry - 68, // 83: erda.core.monitor.alert.AlertExpression.functions:type_name -> erda.core.monitor.alert.AlertExpressionFunction - 161, // 84: erda.core.monitor.alert.AlertExpressionFunction.value:type_name -> google.protobuf.Value - 70, // 85: erda.core.monitor.alert.AlertNotify.notifyGroup:type_name -> erda.core.monitor.alert.NotifyGroup - 73, // 86: erda.core.monitor.alert.AlertNotify.silence:type_name -> erda.core.monitor.alert.AlertNotifySilence - 71, // 87: erda.core.monitor.alert.NotifyGroup.targets:type_name -> erda.core.monitor.alert.NotifyTarget - 162, // 88: erda.core.monitor.alert.NotifyGroup.createdAt:type_name -> google.protobuf.Timestamp - 72, // 89: erda.core.monitor.alert.NotifyTarget.values:type_name -> erda.core.monitor.alert.Target - 66, // 90: erda.core.monitor.alert.GetAlertResponse.data:type_name -> erda.core.monitor.alert.Alert - 66, // 91: erda.core.monitor.alert.GetAlertDetailResponse.data:type_name -> erda.core.monitor.alert.Alert - 67, // 92: erda.core.monitor.alert.CreateAlertRequest.rules:type_name -> erda.core.monitor.alert.AlertExpression - 69, // 93: erda.core.monitor.alert.CreateAlertRequest.notifies:type_name -> erda.core.monitor.alert.AlertNotify - 151, // 94: erda.core.monitor.alert.CreateAlertRequest.filters:type_name -> erda.core.monitor.alert.CreateAlertRequest.FiltersEntry - 152, // 95: erda.core.monitor.alert.CreateAlertRequest.attributes:type_name -> erda.core.monitor.alert.CreateAlertRequest.AttributesEntry - 67, // 96: erda.core.monitor.alert.UpdateAlertRequest.rules:type_name -> erda.core.monitor.alert.AlertExpression - 69, // 97: erda.core.monitor.alert.UpdateAlertRequest.notifies:type_name -> erda.core.monitor.alert.AlertNotify - 153, // 98: erda.core.monitor.alert.UpdateAlertRequest.filters:type_name -> erda.core.monitor.alert.UpdateAlertRequest.FiltersEntry - 154, // 99: erda.core.monitor.alert.UpdateAlertRequest.attributes:type_name -> erda.core.monitor.alert.UpdateAlertRequest.AttributesEntry - 155, // 100: erda.core.monitor.alert.DeleteAlertResponse.data:type_name -> erda.core.monitor.alert.DeleteAlertResponse.DataEntry - 58, // 101: erda.core.monitor.alert.QueryOrgAlertRuleResponse.data:type_name -> erda.core.monitor.alert.AlertTypeRuleResp - 90, // 102: erda.core.monitor.alert.QueryOrgAlertResponse.data:type_name -> erda.core.monitor.alert.QueryOrgAlertData - 66, // 103: erda.core.monitor.alert.QueryOrgAlertData.list:type_name -> erda.core.monitor.alert.Alert - 66, // 104: erda.core.monitor.alert.GetOrgAlertDetailResponse.data:type_name -> erda.core.monitor.alert.Alert - 67, // 105: erda.core.monitor.alert.CreateOrgAlertRequest.rules:type_name -> erda.core.monitor.alert.AlertExpression - 69, // 106: erda.core.monitor.alert.CreateOrgAlertRequest.notifies:type_name -> erda.core.monitor.alert.AlertNotify - 156, // 107: erda.core.monitor.alert.CreateOrgAlertRequest.filters:type_name -> erda.core.monitor.alert.CreateOrgAlertRequest.FiltersEntry - 157, // 108: erda.core.monitor.alert.CreateOrgAlertRequest.attributes:type_name -> erda.core.monitor.alert.CreateOrgAlertRequest.AttributesEntry - 67, // 109: erda.core.monitor.alert.UpdateOrgAlertRequest.rules:type_name -> erda.core.monitor.alert.AlertExpression - 69, // 110: erda.core.monitor.alert.UpdateOrgAlertRequest.notifies:type_name -> erda.core.monitor.alert.AlertNotify - 158, // 111: erda.core.monitor.alert.UpdateOrgAlertRequest.filters:type_name -> erda.core.monitor.alert.UpdateOrgAlertRequest.FiltersEntry - 159, // 112: erda.core.monitor.alert.UpdateOrgAlertRequest.attributes:type_name -> erda.core.monitor.alert.UpdateOrgAlertRequest.AttributesEntry - 160, // 113: erda.core.monitor.alert.DeleteOrgAlertResponse.data:type_name -> erda.core.monitor.alert.DeleteOrgAlertResponse.DataEntry - 103, // 114: erda.core.monitor.alert.GetAlertRecordAttrResponse.data:type_name -> erda.core.monitor.alert.AlertRecordAttr - 4, // 115: erda.core.monitor.alert.AlertRecordAttr.alertState:type_name -> erda.core.monitor.alert.DisplayKey - 4, // 116: erda.core.monitor.alert.AlertRecordAttr.alertType:type_name -> erda.core.monitor.alert.DisplayKey - 4, // 117: erda.core.monitor.alert.AlertRecordAttr.handleState:type_name -> erda.core.monitor.alert.DisplayKey - 106, // 118: erda.core.monitor.alert.QueryAlertRecordResponse.data:type_name -> erda.core.monitor.alert.ListResult - 107, // 119: erda.core.monitor.alert.ListResult.list:type_name -> erda.core.monitor.alert.AlertRecord - 107, // 120: erda.core.monitor.alert.GetAlertRecordResponse.data:type_name -> erda.core.monitor.alert.AlertRecord - 112, // 121: erda.core.monitor.alert.QueryAlertHistoryResponse.data:type_name -> erda.core.monitor.alert.AlertHistory - 162, // 122: erda.core.monitor.alert.CreateAlertIssueRequest.planStartedAt:type_name -> google.protobuf.Timestamp - 162, // 123: erda.core.monitor.alert.CreateAlertIssueRequest.planFinishedAt:type_name -> google.protobuf.Timestamp - 114, // 124: erda.core.monitor.alert.CreateAlertIssueRequest.issueManHour:type_name -> erda.core.monitor.alert.IssueManHour - 162, // 125: erda.core.monitor.alert.UpdateAlertIssueRequest.planStartedAt:type_name -> google.protobuf.Timestamp - 162, // 126: erda.core.monitor.alert.UpdateAlertIssueRequest.planFinishedAt:type_name -> google.protobuf.Timestamp - 114, // 127: erda.core.monitor.alert.UpdateAlertIssueRequest.issueManHour:type_name -> erda.core.monitor.alert.IssueManHour - 103, // 128: erda.core.monitor.alert.GetOrgAlertRecordAttrResponse.data:type_name -> erda.core.monitor.alert.AlertRecordAttr - 122, // 129: erda.core.monitor.alert.QueryOrgHostsAlertRecordRequest.clusters:type_name -> erda.core.monitor.alert.ClusterReq - 106, // 130: erda.core.monitor.alert.QueryOrgAlertRecordResponse.data:type_name -> erda.core.monitor.alert.ListResult - 107, // 131: erda.core.monitor.alert.GetOrgAlertRecordResponse.data:type_name -> erda.core.monitor.alert.AlertRecord - 112, // 132: erda.core.monitor.alert.QueryOrgAlertHistoryResponse.data:type_name -> erda.core.monitor.alert.AlertHistory - 162, // 133: erda.core.monitor.alert.CreateOrgAlertIssueRequest.planStartedAt:type_name -> google.protobuf.Timestamp - 162, // 134: erda.core.monitor.alert.CreateOrgAlertIssueRequest.planFinishedAt:type_name -> google.protobuf.Timestamp - 114, // 135: erda.core.monitor.alert.CreateOrgAlertIssueRequest.issueManHour:type_name -> erda.core.monitor.alert.IssueManHour - 162, // 136: erda.core.monitor.alert.UpdateOrgAlertIssueRequest.planStartedAt:type_name -> google.protobuf.Timestamp - 162, // 137: erda.core.monitor.alert.UpdateOrgAlertIssueRequest.planFinishedAt:type_name -> google.protobuf.Timestamp - 114, // 138: erda.core.monitor.alert.UpdateOrgAlertIssueRequest.issueManHour:type_name -> erda.core.monitor.alert.IssueManHour - 161, // 139: erda.core.monitor.alert.CustomizeAlertDetail.AttributesEntry.value:type_name -> google.protobuf.Value - 161, // 140: erda.core.monitor.alert.CustomizeAlertRule.AttributesEntry.value:type_name -> google.protobuf.Value - 161, // 141: erda.core.monitor.alert.CustomizeAlertNotifyTemplates.AttributesEntry.value:type_name -> google.protobuf.Value - 161, // 142: erda.core.monitor.alert.CreateCustomizeAlertRequest.AttributesEntry.value:type_name -> google.protobuf.Value - 161, // 143: erda.core.monitor.alert.UpdateCustomizeAlertRequest.AttributesEntry.value:type_name -> google.protobuf.Value - 161, // 144: erda.core.monitor.alert.CreateOrgCustomizeAlertRequest.AttributesEntry.value:type_name -> google.protobuf.Value - 161, // 145: erda.core.monitor.alert.UpdateOrgCustomizeAlertRequest.AttributesEntry.value:type_name -> google.protobuf.Value - 161, // 146: erda.core.monitor.alert.QueryDashboardByAlertRequest.AttributesEntry.value:type_name -> google.protobuf.Value - 161, // 147: erda.core.monitor.alert.Config.OptionPropsEntry.value:type_name -> google.protobuf.Value - 161, // 148: erda.core.monitor.alert.API.QueryEntry.value:type_name -> google.protobuf.Value - 161, // 149: erda.core.monitor.alert.API.BodyEntry.value:type_name -> google.protobuf.Value - 161, // 150: erda.core.monitor.alert.API.HeaderEntry.value:type_name -> google.protobuf.Value - 161, // 151: erda.core.monitor.alert.API.ExtraDataEntry.value:type_name -> google.protobuf.Value - 161, // 152: erda.core.monitor.alert.QueryOrgDashboardByAlertRequest.AttributesEntry.value:type_name -> google.protobuf.Value - 161, // 153: erda.core.monitor.alert.AlertRule.TemplateEntry.value:type_name -> google.protobuf.Value - 161, // 154: erda.core.monitor.alert.AlertRule.AttributesEntry.value:type_name -> google.protobuf.Value - 161, // 155: erda.core.monitor.alert.Alert.FiltersEntry.value:type_name -> google.protobuf.Value - 161, // 156: erda.core.monitor.alert.Alert.AttributesEntry.value:type_name -> google.protobuf.Value - 161, // 157: erda.core.monitor.alert.CreateAlertRequest.FiltersEntry.value:type_name -> google.protobuf.Value - 161, // 158: erda.core.monitor.alert.CreateAlertRequest.AttributesEntry.value:type_name -> google.protobuf.Value - 161, // 159: erda.core.monitor.alert.UpdateAlertRequest.FiltersEntry.value:type_name -> google.protobuf.Value - 161, // 160: erda.core.monitor.alert.UpdateAlertRequest.AttributesEntry.value:type_name -> google.protobuf.Value - 161, // 161: erda.core.monitor.alert.DeleteAlertResponse.DataEntry.value:type_name -> google.protobuf.Value - 161, // 162: erda.core.monitor.alert.CreateOrgAlertRequest.FiltersEntry.value:type_name -> google.protobuf.Value - 161, // 163: erda.core.monitor.alert.CreateOrgAlertRequest.AttributesEntry.value:type_name -> google.protobuf.Value - 161, // 164: erda.core.monitor.alert.UpdateOrgAlertRequest.FiltersEntry.value:type_name -> google.protobuf.Value - 161, // 165: erda.core.monitor.alert.UpdateOrgAlertRequest.AttributesEntry.value:type_name -> google.protobuf.Value - 161, // 166: erda.core.monitor.alert.DeleteOrgAlertResponse.DataEntry.value:type_name -> google.protobuf.Value - 0, // 167: erda.core.monitor.alert.AlertService.QueryCustomizeMetric:input_type -> erda.core.monitor.alert.QueryCustomizeMetricRequest - 8, // 168: erda.core.monitor.alert.AlertService.QueryCustomizeNotifyTarget:input_type -> erda.core.monitor.alert.QueryCustomizeNotifyTargetRequest - 11, // 169: erda.core.monitor.alert.AlertService.QueryOrgCustomizeNotifyTarget:input_type -> erda.core.monitor.alert.QueryOrgCustomizeNotifyTargetRequest - 13, // 170: erda.core.monitor.alert.AlertService.QueryCustomizeAlert:input_type -> erda.core.monitor.alert.QueryCustomizeAlertRequest - 17, // 171: erda.core.monitor.alert.AlertService.GetCustomizeAlert:input_type -> erda.core.monitor.alert.GetCustomizeAlertRequest - 24, // 172: erda.core.monitor.alert.AlertService.GetCustomizeAlertDetail:input_type -> erda.core.monitor.alert.GetCustomizeAlertDetailRequest - 26, // 173: erda.core.monitor.alert.AlertService.CreateCustomizeAlert:input_type -> erda.core.monitor.alert.CreateCustomizeAlertRequest - 28, // 174: erda.core.monitor.alert.AlertService.UpdateCustomizeAlert:input_type -> erda.core.monitor.alert.UpdateCustomizeAlertRequest - 30, // 175: erda.core.monitor.alert.AlertService.UpdateCustomizeAlertEnable:input_type -> erda.core.monitor.alert.UpdateCustomizeAlertEnableRequest - 32, // 176: erda.core.monitor.alert.AlertService.DeleteCustomizeAlert:input_type -> erda.core.monitor.alert.DeleteCustomizeAlertRequest - 34, // 177: erda.core.monitor.alert.AlertService.QueryOrgCustomizeMetric:input_type -> erda.core.monitor.alert.QueryOrgCustomizeMetricRequest - 36, // 178: erda.core.monitor.alert.AlertService.QueryOrgCustomizeAlerts:input_type -> erda.core.monitor.alert.QueryOrgCustomizeAlertsRequest - 39, // 179: erda.core.monitor.alert.AlertService.GetOrgCustomizeAlertDetail:input_type -> erda.core.monitor.alert.GetOrgCustomizeAlertDetailRequest - 41, // 180: erda.core.monitor.alert.AlertService.CreateOrgCustomizeAlert:input_type -> erda.core.monitor.alert.CreateOrgCustomizeAlertRequest - 43, // 181: erda.core.monitor.alert.AlertService.UpdateOrgCustomizeAlert:input_type -> erda.core.monitor.alert.UpdateOrgCustomizeAlertRequest - 45, // 182: erda.core.monitor.alert.AlertService.UpdateOrgCustomizeAlertEnable:input_type -> erda.core.monitor.alert.UpdateOrgCustomizeAlertEnableRequest - 47, // 183: erda.core.monitor.alert.AlertService.DeleteOrgCustomizeAlert:input_type -> erda.core.monitor.alert.DeleteOrgCustomizeAlertRequest - 49, // 184: erda.core.monitor.alert.AlertService.QueryDashboardByAlert:input_type -> erda.core.monitor.alert.QueryDashboardByAlertRequest - 54, // 185: erda.core.monitor.alert.AlertService.QueryOrgDashboardByAlert:input_type -> erda.core.monitor.alert.QueryOrgDashboardByAlertRequest - 56, // 186: erda.core.monitor.alert.AlertService.QueryAlertRule:input_type -> erda.core.monitor.alert.QueryAlertRuleRequest - 63, // 187: erda.core.monitor.alert.AlertService.QueryAlert:input_type -> erda.core.monitor.alert.QueryAlertRequest - 74, // 188: erda.core.monitor.alert.AlertService.GetAlert:input_type -> erda.core.monitor.alert.GetAlertRequest - 76, // 189: erda.core.monitor.alert.AlertService.GetAlertDetail:input_type -> erda.core.monitor.alert.GetAlertDetailRequest - 78, // 190: erda.core.monitor.alert.AlertService.CreateAlert:input_type -> erda.core.monitor.alert.CreateAlertRequest - 80, // 191: erda.core.monitor.alert.AlertService.UpdateAlert:input_type -> erda.core.monitor.alert.UpdateAlertRequest - 82, // 192: erda.core.monitor.alert.AlertService.UpdateAlertEnable:input_type -> erda.core.monitor.alert.UpdateAlertEnableRequest - 84, // 193: erda.core.monitor.alert.AlertService.DeleteAlert:input_type -> erda.core.monitor.alert.DeleteAlertRequest - 86, // 194: erda.core.monitor.alert.AlertService.QueryOrgAlertRule:input_type -> erda.core.monitor.alert.QueryOrgAlertRuleRequest - 88, // 195: erda.core.monitor.alert.AlertService.QueryOrgAlert:input_type -> erda.core.monitor.alert.QueryOrgAlertRequest - 91, // 196: erda.core.monitor.alert.AlertService.GetOrgAlertDetail:input_type -> erda.core.monitor.alert.GetOrgAlertDetailRequest - 93, // 197: erda.core.monitor.alert.AlertService.CreateOrgAlert:input_type -> erda.core.monitor.alert.CreateOrgAlertRequest - 95, // 198: erda.core.monitor.alert.AlertService.UpdateOrgAlert:input_type -> erda.core.monitor.alert.UpdateOrgAlertRequest - 97, // 199: erda.core.monitor.alert.AlertService.UpdateOrgAlertEnable:input_type -> erda.core.monitor.alert.UpdateOrgAlertEnableRequest - 99, // 200: erda.core.monitor.alert.AlertService.DeleteOrgAlert:input_type -> erda.core.monitor.alert.DeleteOrgAlertRequest - 101, // 201: erda.core.monitor.alert.AlertService.GetAlertRecordAttr:input_type -> erda.core.monitor.alert.GetAlertRecordAttrRequest - 104, // 202: erda.core.monitor.alert.AlertService.QueryAlertRecord:input_type -> erda.core.monitor.alert.QueryAlertRecordRequest - 108, // 203: erda.core.monitor.alert.AlertService.GetAlertRecord:input_type -> erda.core.monitor.alert.GetAlertRecordRequest - 110, // 204: erda.core.monitor.alert.AlertService.QueryAlertHistory:input_type -> erda.core.monitor.alert.QueryAlertHistoryRequest - 113, // 205: erda.core.monitor.alert.AlertService.CreateAlertIssue:input_type -> erda.core.monitor.alert.CreateAlertIssueRequest - 116, // 206: erda.core.monitor.alert.AlertService.UpdateAlertIssue:input_type -> erda.core.monitor.alert.UpdateAlertIssueRequest - 118, // 207: erda.core.monitor.alert.AlertService.GetOrgAlertRecordAttr:input_type -> erda.core.monitor.alert.GetOrgAlertRecordAttrRequest - 120, // 208: erda.core.monitor.alert.AlertService.QueryOrgAlertRecord:input_type -> erda.core.monitor.alert.QueryOrgAlertRecordRequest - 121, // 209: erda.core.monitor.alert.AlertService.QueryOrgHostsAlertRecord:input_type -> erda.core.monitor.alert.QueryOrgHostsAlertRecordRequest - 124, // 210: erda.core.monitor.alert.AlertService.GetOrgAlertRecord:input_type -> erda.core.monitor.alert.GetOrgAlertRecordRequest - 126, // 211: erda.core.monitor.alert.AlertService.QueryOrgAlertHistory:input_type -> erda.core.monitor.alert.QueryOrgAlertHistoryRequest - 128, // 212: erda.core.monitor.alert.AlertService.CreateOrgAlertIssue:input_type -> erda.core.monitor.alert.CreateOrgAlertIssueRequest - 130, // 213: erda.core.monitor.alert.AlertService.UpdateOrgAlertIssue:input_type -> erda.core.monitor.alert.UpdateOrgAlertIssueRequest - 1, // 214: erda.core.monitor.alert.AlertService.QueryCustomizeMetric:output_type -> erda.core.monitor.alert.QueryCustomizeMetricResponse - 9, // 215: erda.core.monitor.alert.AlertService.QueryCustomizeNotifyTarget:output_type -> erda.core.monitor.alert.QueryCustomizeNotifyTargetResponse - 12, // 216: erda.core.monitor.alert.AlertService.QueryOrgCustomizeNotifyTarget:output_type -> erda.core.monitor.alert.QueryOrgCustomizeNotifyTargetResponse - 14, // 217: erda.core.monitor.alert.AlertService.QueryCustomizeAlert:output_type -> erda.core.monitor.alert.QueryCustomizeAlertResponse - 18, // 218: erda.core.monitor.alert.AlertService.GetCustomizeAlert:output_type -> erda.core.monitor.alert.GetCustomizeAlertResponse - 25, // 219: erda.core.monitor.alert.AlertService.GetCustomizeAlertDetail:output_type -> erda.core.monitor.alert.GetCustomizeAlertDetailResponse - 27, // 220: erda.core.monitor.alert.AlertService.CreateCustomizeAlert:output_type -> erda.core.monitor.alert.CreateCustomizeAlertResponse - 29, // 221: erda.core.monitor.alert.AlertService.UpdateCustomizeAlert:output_type -> erda.core.monitor.alert.UpdateCustomizeAlertResponse - 31, // 222: erda.core.monitor.alert.AlertService.UpdateCustomizeAlertEnable:output_type -> erda.core.monitor.alert.UpdateCustomizeAlertEnableResponse - 33, // 223: erda.core.monitor.alert.AlertService.DeleteCustomizeAlert:output_type -> erda.core.monitor.alert.DeleteCustomizeAlertResponse - 35, // 224: erda.core.monitor.alert.AlertService.QueryOrgCustomizeMetric:output_type -> erda.core.monitor.alert.QueryOrgCustomizeMetricResponse - 37, // 225: erda.core.monitor.alert.AlertService.QueryOrgCustomizeAlerts:output_type -> erda.core.monitor.alert.QueryOrgCustomizeAlertsResponse - 40, // 226: erda.core.monitor.alert.AlertService.GetOrgCustomizeAlertDetail:output_type -> erda.core.monitor.alert.GetOrgCustomizeAlertDetailResponse - 42, // 227: erda.core.monitor.alert.AlertService.CreateOrgCustomizeAlert:output_type -> erda.core.monitor.alert.CreateOrgCustomizeAlertResponse - 44, // 228: erda.core.monitor.alert.AlertService.UpdateOrgCustomizeAlert:output_type -> erda.core.monitor.alert.UpdateOrgCustomizeAlertResponse - 46, // 229: erda.core.monitor.alert.AlertService.UpdateOrgCustomizeAlertEnable:output_type -> erda.core.monitor.alert.UpdateOrgCustomizeAlertEnableResponse - 48, // 230: erda.core.monitor.alert.AlertService.DeleteOrgCustomizeAlert:output_type -> erda.core.monitor.alert.DeleteOrgCustomizeAlertResponse - 50, // 231: erda.core.monitor.alert.AlertService.QueryDashboardByAlert:output_type -> erda.core.monitor.alert.QueryDashboardByAlertResponse - 55, // 232: erda.core.monitor.alert.AlertService.QueryOrgDashboardByAlert:output_type -> erda.core.monitor.alert.QueryOrgDashboardByAlertResponse - 57, // 233: erda.core.monitor.alert.AlertService.QueryAlertRule:output_type -> erda.core.monitor.alert.QueryAlertRuleResponse - 64, // 234: erda.core.monitor.alert.AlertService.QueryAlert:output_type -> erda.core.monitor.alert.QueryAlertsResponse - 75, // 235: erda.core.monitor.alert.AlertService.GetAlert:output_type -> erda.core.monitor.alert.GetAlertResponse - 77, // 236: erda.core.monitor.alert.AlertService.GetAlertDetail:output_type -> erda.core.monitor.alert.GetAlertDetailResponse - 79, // 237: erda.core.monitor.alert.AlertService.CreateAlert:output_type -> erda.core.monitor.alert.CreateAlertResponse - 81, // 238: erda.core.monitor.alert.AlertService.UpdateAlert:output_type -> erda.core.monitor.alert.UpdateAlertResponse - 83, // 239: erda.core.monitor.alert.AlertService.UpdateAlertEnable:output_type -> erda.core.monitor.alert.UpdateAlertEnableResponse - 85, // 240: erda.core.monitor.alert.AlertService.DeleteAlert:output_type -> erda.core.monitor.alert.DeleteAlertResponse - 87, // 241: erda.core.monitor.alert.AlertService.QueryOrgAlertRule:output_type -> erda.core.monitor.alert.QueryOrgAlertRuleResponse - 89, // 242: erda.core.monitor.alert.AlertService.QueryOrgAlert:output_type -> erda.core.monitor.alert.QueryOrgAlertResponse - 92, // 243: erda.core.monitor.alert.AlertService.GetOrgAlertDetail:output_type -> erda.core.monitor.alert.GetOrgAlertDetailResponse - 94, // 244: erda.core.monitor.alert.AlertService.CreateOrgAlert:output_type -> erda.core.monitor.alert.CreateOrgAlertResponse - 96, // 245: erda.core.monitor.alert.AlertService.UpdateOrgAlert:output_type -> erda.core.monitor.alert.UpdateOrgAlertResponse - 98, // 246: erda.core.monitor.alert.AlertService.UpdateOrgAlertEnable:output_type -> erda.core.monitor.alert.UpdateOrgAlertEnableResponse - 100, // 247: erda.core.monitor.alert.AlertService.DeleteOrgAlert:output_type -> erda.core.monitor.alert.DeleteOrgAlertResponse - 102, // 248: erda.core.monitor.alert.AlertService.GetAlertRecordAttr:output_type -> erda.core.monitor.alert.GetAlertRecordAttrResponse - 105, // 249: erda.core.monitor.alert.AlertService.QueryAlertRecord:output_type -> erda.core.monitor.alert.QueryAlertRecordResponse - 109, // 250: erda.core.monitor.alert.AlertService.GetAlertRecord:output_type -> erda.core.monitor.alert.GetAlertRecordResponse - 111, // 251: erda.core.monitor.alert.AlertService.QueryAlertHistory:output_type -> erda.core.monitor.alert.QueryAlertHistoryResponse - 115, // 252: erda.core.monitor.alert.AlertService.CreateAlertIssue:output_type -> erda.core.monitor.alert.CreateAlertIssueResponse - 117, // 253: erda.core.monitor.alert.AlertService.UpdateAlertIssue:output_type -> erda.core.monitor.alert.UpdateAlertIssueResponse - 119, // 254: erda.core.monitor.alert.AlertService.GetOrgAlertRecordAttr:output_type -> erda.core.monitor.alert.GetOrgAlertRecordAttrResponse - 123, // 255: erda.core.monitor.alert.AlertService.QueryOrgAlertRecord:output_type -> erda.core.monitor.alert.QueryOrgAlertRecordResponse - 123, // 256: erda.core.monitor.alert.AlertService.QueryOrgHostsAlertRecord:output_type -> erda.core.monitor.alert.QueryOrgAlertRecordResponse - 125, // 257: erda.core.monitor.alert.AlertService.GetOrgAlertRecord:output_type -> erda.core.monitor.alert.GetOrgAlertRecordResponse - 127, // 258: erda.core.monitor.alert.AlertService.QueryOrgAlertHistory:output_type -> erda.core.monitor.alert.QueryOrgAlertHistoryResponse - 129, // 259: erda.core.monitor.alert.AlertService.CreateOrgAlertIssue:output_type -> erda.core.monitor.alert.CreateOrgAlertIssueResponse - 131, // 260: erda.core.monitor.alert.AlertService.UpdateOrgAlertIssue:output_type -> erda.core.monitor.alert.UpdateOrgAlertIssueResponse - 214, // [214:261] is the sub-list for method output_type - 167, // [167:214] is the sub-list for method input_type - 167, // [167:167] is the sub-list for extension type_name - 167, // [167:167] is the sub-list for extension extendee - 0, // [0:167] is the sub-list for field type_name + 156, // 81: erda.core.monitor.alert.Alert.filters:type_name -> erda.core.monitor.alert.Alert.FiltersEntry + 157, // 82: erda.core.monitor.alert.Alert.attributes:type_name -> erda.core.monitor.alert.Alert.AttributesEntry + 94, // 83: erda.core.monitor.alert.Alert.triggerCondition:type_name -> erda.core.monitor.alert.TriggerCondition + 68, // 84: erda.core.monitor.alert.AlertExpression.functions:type_name -> erda.core.monitor.alert.AlertExpressionFunction + 169, // 85: erda.core.monitor.alert.AlertExpressionFunction.value:type_name -> google.protobuf.Value + 70, // 86: erda.core.monitor.alert.AlertNotify.notifyGroup:type_name -> erda.core.monitor.alert.NotifyGroup + 73, // 87: erda.core.monitor.alert.AlertNotify.silence:type_name -> erda.core.monitor.alert.AlertNotifySilence + 71, // 88: erda.core.monitor.alert.NotifyGroup.targets:type_name -> erda.core.monitor.alert.NotifyTarget + 170, // 89: erda.core.monitor.alert.NotifyGroup.createdAt:type_name -> google.protobuf.Timestamp + 72, // 90: erda.core.monitor.alert.NotifyTarget.values:type_name -> erda.core.monitor.alert.Target + 66, // 91: erda.core.monitor.alert.GetAlertResponse.data:type_name -> erda.core.monitor.alert.Alert + 66, // 92: erda.core.monitor.alert.GetAlertDetailResponse.data:type_name -> erda.core.monitor.alert.Alert + 67, // 93: erda.core.monitor.alert.CreateAlertRequest.rules:type_name -> erda.core.monitor.alert.AlertExpression + 69, // 94: erda.core.monitor.alert.CreateAlertRequest.notifies:type_name -> erda.core.monitor.alert.AlertNotify + 158, // 95: erda.core.monitor.alert.CreateAlertRequest.filters:type_name -> erda.core.monitor.alert.CreateAlertRequest.FiltersEntry + 159, // 96: erda.core.monitor.alert.CreateAlertRequest.attributes:type_name -> erda.core.monitor.alert.CreateAlertRequest.AttributesEntry + 94, // 97: erda.core.monitor.alert.CreateAlertRequest.triggerCondition:type_name -> erda.core.monitor.alert.TriggerCondition + 67, // 98: erda.core.monitor.alert.UpdateAlertRequest.rules:type_name -> erda.core.monitor.alert.AlertExpression + 69, // 99: erda.core.monitor.alert.UpdateAlertRequest.notifies:type_name -> erda.core.monitor.alert.AlertNotify + 160, // 100: erda.core.monitor.alert.UpdateAlertRequest.filters:type_name -> erda.core.monitor.alert.UpdateAlertRequest.FiltersEntry + 161, // 101: erda.core.monitor.alert.UpdateAlertRequest.attributes:type_name -> erda.core.monitor.alert.UpdateAlertRequest.AttributesEntry + 94, // 102: erda.core.monitor.alert.UpdateAlertRequest.triggerCondition:type_name -> erda.core.monitor.alert.TriggerCondition + 162, // 103: erda.core.monitor.alert.DeleteAlertResponse.data:type_name -> erda.core.monitor.alert.DeleteAlertResponse.DataEntry + 58, // 104: erda.core.monitor.alert.QueryOrgAlertRuleResponse.data:type_name -> erda.core.monitor.alert.AlertTypeRuleResp + 90, // 105: erda.core.monitor.alert.QueryOrgAlertResponse.data:type_name -> erda.core.monitor.alert.QueryOrgAlertData + 66, // 106: erda.core.monitor.alert.QueryOrgAlertData.list:type_name -> erda.core.monitor.alert.Alert + 66, // 107: erda.core.monitor.alert.GetOrgAlertDetailResponse.data:type_name -> erda.core.monitor.alert.Alert + 67, // 108: erda.core.monitor.alert.CreateOrgAlertRequest.rules:type_name -> erda.core.monitor.alert.AlertExpression + 69, // 109: erda.core.monitor.alert.CreateOrgAlertRequest.notifies:type_name -> erda.core.monitor.alert.AlertNotify + 163, // 110: erda.core.monitor.alert.CreateOrgAlertRequest.filters:type_name -> erda.core.monitor.alert.CreateOrgAlertRequest.FiltersEntry + 164, // 111: erda.core.monitor.alert.CreateOrgAlertRequest.attributes:type_name -> erda.core.monitor.alert.CreateOrgAlertRequest.AttributesEntry + 94, // 112: erda.core.monitor.alert.CreateOrgAlertRequest.triggerCondition:type_name -> erda.core.monitor.alert.TriggerCondition + 67, // 113: erda.core.monitor.alert.UpdateOrgAlertRequest.rules:type_name -> erda.core.monitor.alert.AlertExpression + 69, // 114: erda.core.monitor.alert.UpdateOrgAlertRequest.notifies:type_name -> erda.core.monitor.alert.AlertNotify + 165, // 115: erda.core.monitor.alert.UpdateOrgAlertRequest.filters:type_name -> erda.core.monitor.alert.UpdateOrgAlertRequest.FiltersEntry + 166, // 116: erda.core.monitor.alert.UpdateOrgAlertRequest.attributes:type_name -> erda.core.monitor.alert.UpdateOrgAlertRequest.AttributesEntry + 94, // 117: erda.core.monitor.alert.UpdateOrgAlertRequest.triggerCondition:type_name -> erda.core.monitor.alert.TriggerCondition + 167, // 118: erda.core.monitor.alert.DeleteOrgAlertResponse.data:type_name -> erda.core.monitor.alert.DeleteOrgAlertResponse.DataEntry + 104, // 119: erda.core.monitor.alert.GetAlertRecordAttrResponse.data:type_name -> erda.core.monitor.alert.AlertRecordAttr + 4, // 120: erda.core.monitor.alert.AlertRecordAttr.alertState:type_name -> erda.core.monitor.alert.DisplayKey + 4, // 121: erda.core.monitor.alert.AlertRecordAttr.alertType:type_name -> erda.core.monitor.alert.DisplayKey + 4, // 122: erda.core.monitor.alert.AlertRecordAttr.handleState:type_name -> erda.core.monitor.alert.DisplayKey + 107, // 123: erda.core.monitor.alert.QueryAlertRecordResponse.data:type_name -> erda.core.monitor.alert.ListResult + 108, // 124: erda.core.monitor.alert.ListResult.list:type_name -> erda.core.monitor.alert.AlertRecord + 108, // 125: erda.core.monitor.alert.GetAlertRecordResponse.data:type_name -> erda.core.monitor.alert.AlertRecord + 113, // 126: erda.core.monitor.alert.QueryAlertHistoryResponse.data:type_name -> erda.core.monitor.alert.AlertHistory + 170, // 127: erda.core.monitor.alert.CreateAlertIssueRequest.planStartedAt:type_name -> google.protobuf.Timestamp + 170, // 128: erda.core.monitor.alert.CreateAlertIssueRequest.planFinishedAt:type_name -> google.protobuf.Timestamp + 115, // 129: erda.core.monitor.alert.CreateAlertIssueRequest.issueManHour:type_name -> erda.core.monitor.alert.IssueManHour + 170, // 130: erda.core.monitor.alert.UpdateAlertIssueRequest.planStartedAt:type_name -> google.protobuf.Timestamp + 170, // 131: erda.core.monitor.alert.UpdateAlertIssueRequest.planFinishedAt:type_name -> google.protobuf.Timestamp + 115, // 132: erda.core.monitor.alert.UpdateAlertIssueRequest.issueManHour:type_name -> erda.core.monitor.alert.IssueManHour + 104, // 133: erda.core.monitor.alert.GetOrgAlertRecordAttrResponse.data:type_name -> erda.core.monitor.alert.AlertRecordAttr + 123, // 134: erda.core.monitor.alert.QueryOrgHostsAlertRecordRequest.clusters:type_name -> erda.core.monitor.alert.ClusterReq + 107, // 135: erda.core.monitor.alert.QueryOrgAlertRecordResponse.data:type_name -> erda.core.monitor.alert.ListResult + 108, // 136: erda.core.monitor.alert.GetOrgAlertRecordResponse.data:type_name -> erda.core.monitor.alert.AlertRecord + 113, // 137: erda.core.monitor.alert.QueryOrgAlertHistoryResponse.data:type_name -> erda.core.monitor.alert.AlertHistory + 170, // 138: erda.core.monitor.alert.CreateOrgAlertIssueRequest.planStartedAt:type_name -> google.protobuf.Timestamp + 170, // 139: erda.core.monitor.alert.CreateOrgAlertIssueRequest.planFinishedAt:type_name -> google.protobuf.Timestamp + 115, // 140: erda.core.monitor.alert.CreateOrgAlertIssueRequest.issueManHour:type_name -> erda.core.monitor.alert.IssueManHour + 170, // 141: erda.core.monitor.alert.UpdateOrgAlertIssueRequest.planStartedAt:type_name -> google.protobuf.Timestamp + 170, // 142: erda.core.monitor.alert.UpdateOrgAlertIssueRequest.planFinishedAt:type_name -> google.protobuf.Timestamp + 115, // 143: erda.core.monitor.alert.UpdateOrgAlertIssueRequest.issueManHour:type_name -> erda.core.monitor.alert.IssueManHour + 135, // 144: erda.core.monitor.alert.GetAlertConditionsResponse.data:type_name -> erda.core.monitor.alert.Conditions + 168, // 145: erda.core.monitor.alert.GetAlertConditionsValueRequest.filters:type_name -> erda.core.monitor.alert.GetAlertConditionsValueRequest.FiltersEntry + 138, // 146: erda.core.monitor.alert.GetAlertConditionsValueResponse.data:type_name -> erda.core.monitor.alert.AlertConditionsValue + 169, // 147: erda.core.monitor.alert.AlertConditionsValue.options:type_name -> google.protobuf.Value + 169, // 148: erda.core.monitor.alert.CustomizeAlertDetail.AttributesEntry.value:type_name -> google.protobuf.Value + 169, // 149: erda.core.monitor.alert.CustomizeAlertRule.AttributesEntry.value:type_name -> google.protobuf.Value + 169, // 150: erda.core.monitor.alert.CustomizeAlertNotifyTemplates.AttributesEntry.value:type_name -> google.protobuf.Value + 169, // 151: erda.core.monitor.alert.CreateCustomizeAlertRequest.AttributesEntry.value:type_name -> google.protobuf.Value + 169, // 152: erda.core.monitor.alert.UpdateCustomizeAlertRequest.AttributesEntry.value:type_name -> google.protobuf.Value + 169, // 153: erda.core.monitor.alert.CreateOrgCustomizeAlertRequest.AttributesEntry.value:type_name -> google.protobuf.Value + 169, // 154: erda.core.monitor.alert.UpdateOrgCustomizeAlertRequest.AttributesEntry.value:type_name -> google.protobuf.Value + 169, // 155: erda.core.monitor.alert.QueryDashboardByAlertRequest.AttributesEntry.value:type_name -> google.protobuf.Value + 169, // 156: erda.core.monitor.alert.Config.OptionPropsEntry.value:type_name -> google.protobuf.Value + 169, // 157: erda.core.monitor.alert.API.QueryEntry.value:type_name -> google.protobuf.Value + 169, // 158: erda.core.monitor.alert.API.BodyEntry.value:type_name -> google.protobuf.Value + 169, // 159: erda.core.monitor.alert.API.HeaderEntry.value:type_name -> google.protobuf.Value + 169, // 160: erda.core.monitor.alert.API.ExtraDataEntry.value:type_name -> google.protobuf.Value + 169, // 161: erda.core.monitor.alert.QueryOrgDashboardByAlertRequest.AttributesEntry.value:type_name -> google.protobuf.Value + 169, // 162: erda.core.monitor.alert.AlertRule.TemplateEntry.value:type_name -> google.protobuf.Value + 169, // 163: erda.core.monitor.alert.AlertRule.AttributesEntry.value:type_name -> google.protobuf.Value + 169, // 164: erda.core.monitor.alert.Alert.FiltersEntry.value:type_name -> google.protobuf.Value + 169, // 165: erda.core.monitor.alert.Alert.AttributesEntry.value:type_name -> google.protobuf.Value + 169, // 166: erda.core.monitor.alert.CreateAlertRequest.FiltersEntry.value:type_name -> google.protobuf.Value + 169, // 167: erda.core.monitor.alert.CreateAlertRequest.AttributesEntry.value:type_name -> google.protobuf.Value + 169, // 168: erda.core.monitor.alert.UpdateAlertRequest.FiltersEntry.value:type_name -> google.protobuf.Value + 169, // 169: erda.core.monitor.alert.UpdateAlertRequest.AttributesEntry.value:type_name -> google.protobuf.Value + 169, // 170: erda.core.monitor.alert.DeleteAlertResponse.DataEntry.value:type_name -> google.protobuf.Value + 169, // 171: erda.core.monitor.alert.CreateOrgAlertRequest.FiltersEntry.value:type_name -> google.protobuf.Value + 169, // 172: erda.core.monitor.alert.CreateOrgAlertRequest.AttributesEntry.value:type_name -> google.protobuf.Value + 169, // 173: erda.core.monitor.alert.UpdateOrgAlertRequest.FiltersEntry.value:type_name -> google.protobuf.Value + 169, // 174: erda.core.monitor.alert.UpdateOrgAlertRequest.AttributesEntry.value:type_name -> google.protobuf.Value + 169, // 175: erda.core.monitor.alert.DeleteOrgAlertResponse.DataEntry.value:type_name -> google.protobuf.Value + 0, // 176: erda.core.monitor.alert.AlertService.QueryCustomizeMetric:input_type -> erda.core.monitor.alert.QueryCustomizeMetricRequest + 8, // 177: erda.core.monitor.alert.AlertService.QueryCustomizeNotifyTarget:input_type -> erda.core.monitor.alert.QueryCustomizeNotifyTargetRequest + 11, // 178: erda.core.monitor.alert.AlertService.QueryOrgCustomizeNotifyTarget:input_type -> erda.core.monitor.alert.QueryOrgCustomizeNotifyTargetRequest + 13, // 179: erda.core.monitor.alert.AlertService.QueryCustomizeAlert:input_type -> erda.core.monitor.alert.QueryCustomizeAlertRequest + 17, // 180: erda.core.monitor.alert.AlertService.GetCustomizeAlert:input_type -> erda.core.monitor.alert.GetCustomizeAlertRequest + 24, // 181: erda.core.monitor.alert.AlertService.GetCustomizeAlertDetail:input_type -> erda.core.monitor.alert.GetCustomizeAlertDetailRequest + 26, // 182: erda.core.monitor.alert.AlertService.CreateCustomizeAlert:input_type -> erda.core.monitor.alert.CreateCustomizeAlertRequest + 28, // 183: erda.core.monitor.alert.AlertService.UpdateCustomizeAlert:input_type -> erda.core.monitor.alert.UpdateCustomizeAlertRequest + 30, // 184: erda.core.monitor.alert.AlertService.UpdateCustomizeAlertEnable:input_type -> erda.core.monitor.alert.UpdateCustomizeAlertEnableRequest + 32, // 185: erda.core.monitor.alert.AlertService.DeleteCustomizeAlert:input_type -> erda.core.monitor.alert.DeleteCustomizeAlertRequest + 34, // 186: erda.core.monitor.alert.AlertService.QueryOrgCustomizeMetric:input_type -> erda.core.monitor.alert.QueryOrgCustomizeMetricRequest + 36, // 187: erda.core.monitor.alert.AlertService.QueryOrgCustomizeAlerts:input_type -> erda.core.monitor.alert.QueryOrgCustomizeAlertsRequest + 39, // 188: erda.core.monitor.alert.AlertService.GetOrgCustomizeAlertDetail:input_type -> erda.core.monitor.alert.GetOrgCustomizeAlertDetailRequest + 41, // 189: erda.core.monitor.alert.AlertService.CreateOrgCustomizeAlert:input_type -> erda.core.monitor.alert.CreateOrgCustomizeAlertRequest + 43, // 190: erda.core.monitor.alert.AlertService.UpdateOrgCustomizeAlert:input_type -> erda.core.monitor.alert.UpdateOrgCustomizeAlertRequest + 45, // 191: erda.core.monitor.alert.AlertService.UpdateOrgCustomizeAlertEnable:input_type -> erda.core.monitor.alert.UpdateOrgCustomizeAlertEnableRequest + 47, // 192: erda.core.monitor.alert.AlertService.DeleteOrgCustomizeAlert:input_type -> erda.core.monitor.alert.DeleteOrgCustomizeAlertRequest + 49, // 193: erda.core.monitor.alert.AlertService.QueryDashboardByAlert:input_type -> erda.core.monitor.alert.QueryDashboardByAlertRequest + 54, // 194: erda.core.monitor.alert.AlertService.QueryOrgDashboardByAlert:input_type -> erda.core.monitor.alert.QueryOrgDashboardByAlertRequest + 56, // 195: erda.core.monitor.alert.AlertService.QueryAlertRule:input_type -> erda.core.monitor.alert.QueryAlertRuleRequest + 63, // 196: erda.core.monitor.alert.AlertService.QueryAlert:input_type -> erda.core.monitor.alert.QueryAlertRequest + 74, // 197: erda.core.monitor.alert.AlertService.GetAlert:input_type -> erda.core.monitor.alert.GetAlertRequest + 76, // 198: erda.core.monitor.alert.AlertService.GetAlertDetail:input_type -> erda.core.monitor.alert.GetAlertDetailRequest + 78, // 199: erda.core.monitor.alert.AlertService.CreateAlert:input_type -> erda.core.monitor.alert.CreateAlertRequest + 80, // 200: erda.core.monitor.alert.AlertService.UpdateAlert:input_type -> erda.core.monitor.alert.UpdateAlertRequest + 82, // 201: erda.core.monitor.alert.AlertService.UpdateAlertEnable:input_type -> erda.core.monitor.alert.UpdateAlertEnableRequest + 84, // 202: erda.core.monitor.alert.AlertService.DeleteAlert:input_type -> erda.core.monitor.alert.DeleteAlertRequest + 86, // 203: erda.core.monitor.alert.AlertService.QueryOrgAlertRule:input_type -> erda.core.monitor.alert.QueryOrgAlertRuleRequest + 88, // 204: erda.core.monitor.alert.AlertService.QueryOrgAlert:input_type -> erda.core.monitor.alert.QueryOrgAlertRequest + 91, // 205: erda.core.monitor.alert.AlertService.GetOrgAlertDetail:input_type -> erda.core.monitor.alert.GetOrgAlertDetailRequest + 93, // 206: erda.core.monitor.alert.AlertService.CreateOrgAlert:input_type -> erda.core.monitor.alert.CreateOrgAlertRequest + 96, // 207: erda.core.monitor.alert.AlertService.UpdateOrgAlert:input_type -> erda.core.monitor.alert.UpdateOrgAlertRequest + 98, // 208: erda.core.monitor.alert.AlertService.UpdateOrgAlertEnable:input_type -> erda.core.monitor.alert.UpdateOrgAlertEnableRequest + 100, // 209: erda.core.monitor.alert.AlertService.DeleteOrgAlert:input_type -> erda.core.monitor.alert.DeleteOrgAlertRequest + 102, // 210: erda.core.monitor.alert.AlertService.GetAlertRecordAttr:input_type -> erda.core.monitor.alert.GetAlertRecordAttrRequest + 105, // 211: erda.core.monitor.alert.AlertService.QueryAlertRecord:input_type -> erda.core.monitor.alert.QueryAlertRecordRequest + 109, // 212: erda.core.monitor.alert.AlertService.GetAlertRecord:input_type -> erda.core.monitor.alert.GetAlertRecordRequest + 111, // 213: erda.core.monitor.alert.AlertService.QueryAlertHistory:input_type -> erda.core.monitor.alert.QueryAlertHistoryRequest + 114, // 214: erda.core.monitor.alert.AlertService.CreateAlertIssue:input_type -> erda.core.monitor.alert.CreateAlertIssueRequest + 117, // 215: erda.core.monitor.alert.AlertService.UpdateAlertIssue:input_type -> erda.core.monitor.alert.UpdateAlertIssueRequest + 119, // 216: erda.core.monitor.alert.AlertService.GetOrgAlertRecordAttr:input_type -> erda.core.monitor.alert.GetOrgAlertRecordAttrRequest + 121, // 217: erda.core.monitor.alert.AlertService.QueryOrgAlertRecord:input_type -> erda.core.monitor.alert.QueryOrgAlertRecordRequest + 122, // 218: erda.core.monitor.alert.AlertService.QueryOrgHostsAlertRecord:input_type -> erda.core.monitor.alert.QueryOrgHostsAlertRecordRequest + 125, // 219: erda.core.monitor.alert.AlertService.GetOrgAlertRecord:input_type -> erda.core.monitor.alert.GetOrgAlertRecordRequest + 127, // 220: erda.core.monitor.alert.AlertService.QueryOrgAlertHistory:input_type -> erda.core.monitor.alert.QueryOrgAlertHistoryRequest + 129, // 221: erda.core.monitor.alert.AlertService.CreateOrgAlertIssue:input_type -> erda.core.monitor.alert.CreateOrgAlertIssueRequest + 131, // 222: erda.core.monitor.alert.AlertService.UpdateOrgAlertIssue:input_type -> erda.core.monitor.alert.UpdateOrgAlertIssueRequest + 133, // 223: erda.core.monitor.alert.AlertService.GetAlertConditions:input_type -> erda.core.monitor.alert.GetAlertConditionsRequest + 136, // 224: erda.core.monitor.alert.AlertService.GetAlertConditionsValue:input_type -> erda.core.monitor.alert.GetAlertConditionsValueRequest + 1, // 225: erda.core.monitor.alert.AlertService.QueryCustomizeMetric:output_type -> erda.core.monitor.alert.QueryCustomizeMetricResponse + 9, // 226: erda.core.monitor.alert.AlertService.QueryCustomizeNotifyTarget:output_type -> erda.core.monitor.alert.QueryCustomizeNotifyTargetResponse + 12, // 227: erda.core.monitor.alert.AlertService.QueryOrgCustomizeNotifyTarget:output_type -> erda.core.monitor.alert.QueryOrgCustomizeNotifyTargetResponse + 14, // 228: erda.core.monitor.alert.AlertService.QueryCustomizeAlert:output_type -> erda.core.monitor.alert.QueryCustomizeAlertResponse + 18, // 229: erda.core.monitor.alert.AlertService.GetCustomizeAlert:output_type -> erda.core.monitor.alert.GetCustomizeAlertResponse + 25, // 230: erda.core.monitor.alert.AlertService.GetCustomizeAlertDetail:output_type -> erda.core.monitor.alert.GetCustomizeAlertDetailResponse + 27, // 231: erda.core.monitor.alert.AlertService.CreateCustomizeAlert:output_type -> erda.core.monitor.alert.CreateCustomizeAlertResponse + 29, // 232: erda.core.monitor.alert.AlertService.UpdateCustomizeAlert:output_type -> erda.core.monitor.alert.UpdateCustomizeAlertResponse + 31, // 233: erda.core.monitor.alert.AlertService.UpdateCustomizeAlertEnable:output_type -> erda.core.monitor.alert.UpdateCustomizeAlertEnableResponse + 33, // 234: erda.core.monitor.alert.AlertService.DeleteCustomizeAlert:output_type -> erda.core.monitor.alert.DeleteCustomizeAlertResponse + 35, // 235: erda.core.monitor.alert.AlertService.QueryOrgCustomizeMetric:output_type -> erda.core.monitor.alert.QueryOrgCustomizeMetricResponse + 37, // 236: erda.core.monitor.alert.AlertService.QueryOrgCustomizeAlerts:output_type -> erda.core.monitor.alert.QueryOrgCustomizeAlertsResponse + 40, // 237: erda.core.monitor.alert.AlertService.GetOrgCustomizeAlertDetail:output_type -> erda.core.monitor.alert.GetOrgCustomizeAlertDetailResponse + 42, // 238: erda.core.monitor.alert.AlertService.CreateOrgCustomizeAlert:output_type -> erda.core.monitor.alert.CreateOrgCustomizeAlertResponse + 44, // 239: erda.core.monitor.alert.AlertService.UpdateOrgCustomizeAlert:output_type -> erda.core.monitor.alert.UpdateOrgCustomizeAlertResponse + 46, // 240: erda.core.monitor.alert.AlertService.UpdateOrgCustomizeAlertEnable:output_type -> erda.core.monitor.alert.UpdateOrgCustomizeAlertEnableResponse + 48, // 241: erda.core.monitor.alert.AlertService.DeleteOrgCustomizeAlert:output_type -> erda.core.monitor.alert.DeleteOrgCustomizeAlertResponse + 50, // 242: erda.core.monitor.alert.AlertService.QueryDashboardByAlert:output_type -> erda.core.monitor.alert.QueryDashboardByAlertResponse + 55, // 243: erda.core.monitor.alert.AlertService.QueryOrgDashboardByAlert:output_type -> erda.core.monitor.alert.QueryOrgDashboardByAlertResponse + 57, // 244: erda.core.monitor.alert.AlertService.QueryAlertRule:output_type -> erda.core.monitor.alert.QueryAlertRuleResponse + 64, // 245: erda.core.monitor.alert.AlertService.QueryAlert:output_type -> erda.core.monitor.alert.QueryAlertsResponse + 75, // 246: erda.core.monitor.alert.AlertService.GetAlert:output_type -> erda.core.monitor.alert.GetAlertResponse + 77, // 247: erda.core.monitor.alert.AlertService.GetAlertDetail:output_type -> erda.core.monitor.alert.GetAlertDetailResponse + 79, // 248: erda.core.monitor.alert.AlertService.CreateAlert:output_type -> erda.core.monitor.alert.CreateAlertResponse + 81, // 249: erda.core.monitor.alert.AlertService.UpdateAlert:output_type -> erda.core.monitor.alert.UpdateAlertResponse + 83, // 250: erda.core.monitor.alert.AlertService.UpdateAlertEnable:output_type -> erda.core.monitor.alert.UpdateAlertEnableResponse + 85, // 251: erda.core.monitor.alert.AlertService.DeleteAlert:output_type -> erda.core.monitor.alert.DeleteAlertResponse + 87, // 252: erda.core.monitor.alert.AlertService.QueryOrgAlertRule:output_type -> erda.core.monitor.alert.QueryOrgAlertRuleResponse + 89, // 253: erda.core.monitor.alert.AlertService.QueryOrgAlert:output_type -> erda.core.monitor.alert.QueryOrgAlertResponse + 92, // 254: erda.core.monitor.alert.AlertService.GetOrgAlertDetail:output_type -> erda.core.monitor.alert.GetOrgAlertDetailResponse + 95, // 255: erda.core.monitor.alert.AlertService.CreateOrgAlert:output_type -> erda.core.monitor.alert.CreateOrgAlertResponse + 97, // 256: erda.core.monitor.alert.AlertService.UpdateOrgAlert:output_type -> erda.core.monitor.alert.UpdateOrgAlertResponse + 99, // 257: erda.core.monitor.alert.AlertService.UpdateOrgAlertEnable:output_type -> erda.core.monitor.alert.UpdateOrgAlertEnableResponse + 101, // 258: erda.core.monitor.alert.AlertService.DeleteOrgAlert:output_type -> erda.core.monitor.alert.DeleteOrgAlertResponse + 103, // 259: erda.core.monitor.alert.AlertService.GetAlertRecordAttr:output_type -> erda.core.monitor.alert.GetAlertRecordAttrResponse + 106, // 260: erda.core.monitor.alert.AlertService.QueryAlertRecord:output_type -> erda.core.monitor.alert.QueryAlertRecordResponse + 110, // 261: erda.core.monitor.alert.AlertService.GetAlertRecord:output_type -> erda.core.monitor.alert.GetAlertRecordResponse + 112, // 262: erda.core.monitor.alert.AlertService.QueryAlertHistory:output_type -> erda.core.monitor.alert.QueryAlertHistoryResponse + 116, // 263: erda.core.monitor.alert.AlertService.CreateAlertIssue:output_type -> erda.core.monitor.alert.CreateAlertIssueResponse + 118, // 264: erda.core.monitor.alert.AlertService.UpdateAlertIssue:output_type -> erda.core.monitor.alert.UpdateAlertIssueResponse + 120, // 265: erda.core.monitor.alert.AlertService.GetOrgAlertRecordAttr:output_type -> erda.core.monitor.alert.GetOrgAlertRecordAttrResponse + 124, // 266: erda.core.monitor.alert.AlertService.QueryOrgAlertRecord:output_type -> erda.core.monitor.alert.QueryOrgAlertRecordResponse + 124, // 267: erda.core.monitor.alert.AlertService.QueryOrgHostsAlertRecord:output_type -> erda.core.monitor.alert.QueryOrgAlertRecordResponse + 126, // 268: erda.core.monitor.alert.AlertService.GetOrgAlertRecord:output_type -> erda.core.monitor.alert.GetOrgAlertRecordResponse + 128, // 269: erda.core.monitor.alert.AlertService.QueryOrgAlertHistory:output_type -> erda.core.monitor.alert.QueryOrgAlertHistoryResponse + 130, // 270: erda.core.monitor.alert.AlertService.CreateOrgAlertIssue:output_type -> erda.core.monitor.alert.CreateOrgAlertIssueResponse + 132, // 271: erda.core.monitor.alert.AlertService.UpdateOrgAlertIssue:output_type -> erda.core.monitor.alert.UpdateOrgAlertIssueResponse + 134, // 272: erda.core.monitor.alert.AlertService.GetAlertConditions:output_type -> erda.core.monitor.alert.GetAlertConditionsResponse + 137, // 273: erda.core.monitor.alert.AlertService.GetAlertConditionsValue:output_type -> erda.core.monitor.alert.GetAlertConditionsValueResponse + 225, // [225:274] is the sub-list for method output_type + 176, // [176:225] is the sub-list for method input_type + 176, // [176:176] is the sub-list for extension type_name + 176, // [176:176] is the sub-list for extension extendee + 0, // [0:176] is the sub-list for field type_name } func init() { file_alert_proto_init() } @@ -13237,7 +13804,7 @@ func file_alert_proto_init() { } } file_alert_proto_msgTypes[94].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateOrgAlertResponse); i { + switch v := v.(*TriggerCondition); i { case 0: return &v.state case 1: @@ -13249,7 +13816,7 @@ func file_alert_proto_init() { } } file_alert_proto_msgTypes[95].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateOrgAlertRequest); i { + switch v := v.(*CreateOrgAlertResponse); i { case 0: return &v.state case 1: @@ -13261,7 +13828,7 @@ func file_alert_proto_init() { } } file_alert_proto_msgTypes[96].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateOrgAlertResponse); i { + switch v := v.(*UpdateOrgAlertRequest); i { case 0: return &v.state case 1: @@ -13273,7 +13840,7 @@ func file_alert_proto_init() { } } file_alert_proto_msgTypes[97].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateOrgAlertEnableRequest); i { + switch v := v.(*UpdateOrgAlertResponse); i { case 0: return &v.state case 1: @@ -13285,7 +13852,7 @@ func file_alert_proto_init() { } } file_alert_proto_msgTypes[98].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateOrgAlertEnableResponse); i { + switch v := v.(*UpdateOrgAlertEnableRequest); i { case 0: return &v.state case 1: @@ -13297,7 +13864,7 @@ func file_alert_proto_init() { } } file_alert_proto_msgTypes[99].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteOrgAlertRequest); i { + switch v := v.(*UpdateOrgAlertEnableResponse); i { case 0: return &v.state case 1: @@ -13309,7 +13876,7 @@ func file_alert_proto_init() { } } file_alert_proto_msgTypes[100].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteOrgAlertResponse); i { + switch v := v.(*DeleteOrgAlertRequest); i { case 0: return &v.state case 1: @@ -13321,7 +13888,7 @@ func file_alert_proto_init() { } } file_alert_proto_msgTypes[101].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetAlertRecordAttrRequest); i { + switch v := v.(*DeleteOrgAlertResponse); i { case 0: return &v.state case 1: @@ -13333,7 +13900,7 @@ func file_alert_proto_init() { } } file_alert_proto_msgTypes[102].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetAlertRecordAttrResponse); i { + switch v := v.(*GetAlertRecordAttrRequest); i { case 0: return &v.state case 1: @@ -13345,7 +13912,7 @@ func file_alert_proto_init() { } } file_alert_proto_msgTypes[103].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AlertRecordAttr); i { + switch v := v.(*GetAlertRecordAttrResponse); i { case 0: return &v.state case 1: @@ -13357,7 +13924,7 @@ func file_alert_proto_init() { } } file_alert_proto_msgTypes[104].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*QueryAlertRecordRequest); i { + switch v := v.(*AlertRecordAttr); i { case 0: return &v.state case 1: @@ -13369,7 +13936,7 @@ func file_alert_proto_init() { } } file_alert_proto_msgTypes[105].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*QueryAlertRecordResponse); i { + switch v := v.(*QueryAlertRecordRequest); i { case 0: return &v.state case 1: @@ -13381,7 +13948,7 @@ func file_alert_proto_init() { } } file_alert_proto_msgTypes[106].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListResult); i { + switch v := v.(*QueryAlertRecordResponse); i { case 0: return &v.state case 1: @@ -13393,7 +13960,7 @@ func file_alert_proto_init() { } } file_alert_proto_msgTypes[107].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AlertRecord); i { + switch v := v.(*ListResult); i { case 0: return &v.state case 1: @@ -13405,7 +13972,7 @@ func file_alert_proto_init() { } } file_alert_proto_msgTypes[108].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetAlertRecordRequest); i { + switch v := v.(*AlertRecord); i { case 0: return &v.state case 1: @@ -13417,7 +13984,7 @@ func file_alert_proto_init() { } } file_alert_proto_msgTypes[109].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetAlertRecordResponse); i { + switch v := v.(*GetAlertRecordRequest); i { case 0: return &v.state case 1: @@ -13429,7 +13996,7 @@ func file_alert_proto_init() { } } file_alert_proto_msgTypes[110].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*QueryAlertHistoryRequest); i { + switch v := v.(*GetAlertRecordResponse); i { case 0: return &v.state case 1: @@ -13441,7 +14008,7 @@ func file_alert_proto_init() { } } file_alert_proto_msgTypes[111].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*QueryAlertHistoryResponse); i { + switch v := v.(*QueryAlertHistoryRequest); i { case 0: return &v.state case 1: @@ -13453,7 +14020,7 @@ func file_alert_proto_init() { } } file_alert_proto_msgTypes[112].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AlertHistory); i { + switch v := v.(*QueryAlertHistoryResponse); i { case 0: return &v.state case 1: @@ -13465,7 +14032,7 @@ func file_alert_proto_init() { } } file_alert_proto_msgTypes[113].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateAlertIssueRequest); i { + switch v := v.(*AlertHistory); i { case 0: return &v.state case 1: @@ -13477,7 +14044,7 @@ func file_alert_proto_init() { } } file_alert_proto_msgTypes[114].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*IssueManHour); i { + switch v := v.(*CreateAlertIssueRequest); i { case 0: return &v.state case 1: @@ -13489,7 +14056,7 @@ func file_alert_proto_init() { } } file_alert_proto_msgTypes[115].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateAlertIssueResponse); i { + switch v := v.(*IssueManHour); i { case 0: return &v.state case 1: @@ -13501,7 +14068,7 @@ func file_alert_proto_init() { } } file_alert_proto_msgTypes[116].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateAlertIssueRequest); i { + switch v := v.(*CreateAlertIssueResponse); i { case 0: return &v.state case 1: @@ -13513,7 +14080,7 @@ func file_alert_proto_init() { } } file_alert_proto_msgTypes[117].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateAlertIssueResponse); i { + switch v := v.(*UpdateAlertIssueRequest); i { case 0: return &v.state case 1: @@ -13525,7 +14092,7 @@ func file_alert_proto_init() { } } file_alert_proto_msgTypes[118].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetOrgAlertRecordAttrRequest); i { + switch v := v.(*UpdateAlertIssueResponse); i { case 0: return &v.state case 1: @@ -13537,7 +14104,7 @@ func file_alert_proto_init() { } } file_alert_proto_msgTypes[119].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetOrgAlertRecordAttrResponse); i { + switch v := v.(*GetOrgAlertRecordAttrRequest); i { case 0: return &v.state case 1: @@ -13549,7 +14116,7 @@ func file_alert_proto_init() { } } file_alert_proto_msgTypes[120].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*QueryOrgAlertRecordRequest); i { + switch v := v.(*GetOrgAlertRecordAttrResponse); i { case 0: return &v.state case 1: @@ -13561,7 +14128,7 @@ func file_alert_proto_init() { } } file_alert_proto_msgTypes[121].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*QueryOrgHostsAlertRecordRequest); i { + switch v := v.(*QueryOrgAlertRecordRequest); i { case 0: return &v.state case 1: @@ -13573,7 +14140,7 @@ func file_alert_proto_init() { } } file_alert_proto_msgTypes[122].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ClusterReq); i { + switch v := v.(*QueryOrgHostsAlertRecordRequest); i { case 0: return &v.state case 1: @@ -13585,7 +14152,7 @@ func file_alert_proto_init() { } } file_alert_proto_msgTypes[123].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*QueryOrgAlertRecordResponse); i { + switch v := v.(*ClusterReq); i { case 0: return &v.state case 1: @@ -13597,7 +14164,7 @@ func file_alert_proto_init() { } } file_alert_proto_msgTypes[124].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetOrgAlertRecordRequest); i { + switch v := v.(*QueryOrgAlertRecordResponse); i { case 0: return &v.state case 1: @@ -13609,7 +14176,7 @@ func file_alert_proto_init() { } } file_alert_proto_msgTypes[125].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetOrgAlertRecordResponse); i { + switch v := v.(*GetOrgAlertRecordRequest); i { case 0: return &v.state case 1: @@ -13621,7 +14188,7 @@ func file_alert_proto_init() { } } file_alert_proto_msgTypes[126].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*QueryOrgAlertHistoryRequest); i { + switch v := v.(*GetOrgAlertRecordResponse); i { case 0: return &v.state case 1: @@ -13633,7 +14200,7 @@ func file_alert_proto_init() { } } file_alert_proto_msgTypes[127].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*QueryOrgAlertHistoryResponse); i { + switch v := v.(*QueryOrgAlertHistoryRequest); i { case 0: return &v.state case 1: @@ -13645,7 +14212,7 @@ func file_alert_proto_init() { } } file_alert_proto_msgTypes[128].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateOrgAlertIssueRequest); i { + switch v := v.(*QueryOrgAlertHistoryResponse); i { case 0: return &v.state case 1: @@ -13657,7 +14224,7 @@ func file_alert_proto_init() { } } file_alert_proto_msgTypes[129].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateOrgAlertIssueResponse); i { + switch v := v.(*CreateOrgAlertIssueRequest); i { case 0: return &v.state case 1: @@ -13669,7 +14236,7 @@ func file_alert_proto_init() { } } file_alert_proto_msgTypes[130].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateOrgAlertIssueRequest); i { + switch v := v.(*CreateOrgAlertIssueResponse); i { case 0: return &v.state case 1: @@ -13681,6 +14248,18 @@ func file_alert_proto_init() { } } file_alert_proto_msgTypes[131].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UpdateOrgAlertIssueRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_alert_proto_msgTypes[132].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateOrgAlertIssueResponse); i { case 0: return &v.state @@ -13692,6 +14271,78 @@ func file_alert_proto_init() { return nil } } + file_alert_proto_msgTypes[133].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetAlertConditionsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_alert_proto_msgTypes[134].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetAlertConditionsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_alert_proto_msgTypes[135].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Conditions); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_alert_proto_msgTypes[136].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetAlertConditionsValueRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_alert_proto_msgTypes[137].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetAlertConditionsValueResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_alert_proto_msgTypes[138].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AlertConditionsValue); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } type x struct{} out := protoimpl.TypeBuilder{ @@ -13699,7 +14350,7 @@ func file_alert_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_alert_proto_rawDesc, NumEnums: 0, - NumMessages: 161, + NumMessages: 169, NumExtensions: 0, NumServices: 1, }, diff --git a/api/proto-go/core/monitor/alert/pb/alert.validator.pb.go b/api/proto-go/core/monitor/alert/pb/alert.validator.pb.go index 2bb10734830..c8c7020762b 100644 --- a/api/proto-go/core/monitor/alert/pb/alert.validator.pb.go +++ b/api/proto-go/core/monitor/alert/pb/alert.validator.pb.go @@ -683,6 +683,13 @@ func (this *Alert) Validate() error { } // Validation of proto3 map<> fields is unsupported. // Validation of proto3 map<> fields is unsupported. + for _, item := range this.TriggerCondition { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("TriggerCondition", err) + } + } + } return nil } func (this *AlertExpression) Validate() error { @@ -792,6 +799,13 @@ func (this *CreateAlertRequest) Validate() error { } // Validation of proto3 map<> fields is unsupported. // Validation of proto3 map<> fields is unsupported. + for _, item := range this.TriggerCondition { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("TriggerCondition", err) + } + } + } return nil } func (this *CreateAlertResponse) Validate() error { @@ -817,6 +831,13 @@ func (this *UpdateAlertRequest) Validate() error { } // Validation of proto3 map<> fields is unsupported. // Validation of proto3 map<> fields is unsupported. + for _, item := range this.TriggerCondition { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("TriggerCondition", err) + } + } + } return nil } func (this *UpdateAlertResponse) Validate() error { @@ -913,6 +934,16 @@ func (this *CreateOrgAlertRequest) Validate() error { } // Validation of proto3 map<> fields is unsupported. // Validation of proto3 map<> fields is unsupported. + for _, item := range this.TriggerCondition { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("TriggerCondition", err) + } + } + } + return nil +} +func (this *TriggerCondition) Validate() error { return nil } func (this *CreateOrgAlertResponse) Validate() error { @@ -941,6 +972,13 @@ func (this *UpdateOrgAlertRequest) Validate() error { } // Validation of proto3 map<> fields is unsupported. // Validation of proto3 map<> fields is unsupported. + for _, item := range this.TriggerCondition { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("TriggerCondition", err) + } + } + } return nil } func (this *UpdateOrgAlertResponse) Validate() error { @@ -1236,3 +1274,41 @@ func (this *UpdateOrgAlertIssueRequest) Validate() error { func (this *UpdateOrgAlertIssueResponse) Validate() error { return nil } +func (this *GetAlertConditionsRequest) Validate() error { + return nil +} +func (this *GetAlertConditionsResponse) Validate() error { + for _, item := range this.Data { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Data", err) + } + } + } + return nil +} +func (this *Conditions) Validate() error { + return nil +} +func (this *GetAlertConditionsValueRequest) Validate() error { + // Validation of proto3 map<> fields is unsupported. + return nil +} +func (this *GetAlertConditionsValueResponse) Validate() error { + if this.Data != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.Data); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Data", err) + } + } + return nil +} +func (this *AlertConditionsValue) Validate() error { + for _, item := range this.Options { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Options", err) + } + } + } + return nil +} diff --git a/api/proto-go/core/monitor/alert/pb/alert_grpc.pb.go b/api/proto-go/core/monitor/alert/pb/alert_grpc.pb.go index b91d270f22a..8363cd99dda 100644 --- a/api/proto-go/core/monitor/alert/pb/alert_grpc.pb.go +++ b/api/proto-go/core/monitor/alert/pb/alert_grpc.pb.go @@ -68,6 +68,8 @@ type AlertServiceClient interface { QueryOrgAlertHistory(ctx context.Context, in *QueryOrgAlertHistoryRequest, opts ...grpc.CallOption) (*QueryOrgAlertHistoryResponse, error) CreateOrgAlertIssue(ctx context.Context, in *CreateOrgAlertIssueRequest, opts ...grpc.CallOption) (*CreateOrgAlertIssueResponse, error) UpdateOrgAlertIssue(ctx context.Context, in *UpdateOrgAlertIssueRequest, opts ...grpc.CallOption) (*UpdateOrgAlertIssueResponse, error) + GetAlertConditions(ctx context.Context, in *GetAlertConditionsRequest, opts ...grpc.CallOption) (*GetAlertConditionsResponse, error) + GetAlertConditionsValue(ctx context.Context, in *GetAlertConditionsValueRequest, opts ...grpc.CallOption) (*GetAlertConditionsValueResponse, error) } type alertServiceClient struct { @@ -501,6 +503,24 @@ func (c *alertServiceClient) UpdateOrgAlertIssue(ctx context.Context, in *Update return out, nil } +func (c *alertServiceClient) GetAlertConditions(ctx context.Context, in *GetAlertConditionsRequest, opts ...grpc.CallOption) (*GetAlertConditionsResponse, error) { + out := new(GetAlertConditionsResponse) + err := c.cc.Invoke(ctx, "/erda.core.monitor.alert.AlertService/GetAlertConditions", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *alertServiceClient) GetAlertConditionsValue(ctx context.Context, in *GetAlertConditionsValueRequest, opts ...grpc.CallOption) (*GetAlertConditionsValueResponse, error) { + out := new(GetAlertConditionsValueResponse) + err := c.cc.Invoke(ctx, "/erda.core.monitor.alert.AlertService/GetAlertConditionsValue", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // AlertServiceServer is the server API for AlertService service. // All implementations should embed UnimplementedAlertServiceServer // for forward compatibility @@ -552,6 +572,8 @@ type AlertServiceServer interface { QueryOrgAlertHistory(context.Context, *QueryOrgAlertHistoryRequest) (*QueryOrgAlertHistoryResponse, error) CreateOrgAlertIssue(context.Context, *CreateOrgAlertIssueRequest) (*CreateOrgAlertIssueResponse, error) UpdateOrgAlertIssue(context.Context, *UpdateOrgAlertIssueRequest) (*UpdateOrgAlertIssueResponse, error) + GetAlertConditions(context.Context, *GetAlertConditionsRequest) (*GetAlertConditionsResponse, error) + GetAlertConditionsValue(context.Context, *GetAlertConditionsValueRequest) (*GetAlertConditionsValueResponse, error) } // UnimplementedAlertServiceServer should be embedded to have forward compatible implementations. @@ -699,6 +721,12 @@ func (*UnimplementedAlertServiceServer) CreateOrgAlertIssue(context.Context, *Cr func (*UnimplementedAlertServiceServer) UpdateOrgAlertIssue(context.Context, *UpdateOrgAlertIssueRequest) (*UpdateOrgAlertIssueResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method UpdateOrgAlertIssue not implemented") } +func (*UnimplementedAlertServiceServer) GetAlertConditions(context.Context, *GetAlertConditionsRequest) (*GetAlertConditionsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetAlertConditions not implemented") +} +func (*UnimplementedAlertServiceServer) GetAlertConditionsValue(context.Context, *GetAlertConditionsValueRequest) (*GetAlertConditionsValueResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetAlertConditionsValue not implemented") +} func RegisterAlertServiceServer(s grpc1.ServiceRegistrar, srv AlertServiceServer, opts ...grpc1.HandleOption) { s.RegisterService(_get_AlertService_serviceDesc(srv, opts...), srv) @@ -1141,6 +1169,24 @@ func _get_AlertService_serviceDesc(srv AlertServiceServer, opts ...grpc1.HandleO _AlertService_UpdateOrgAlertIssue_Handler = h.Interceptor(_AlertService_UpdateOrgAlertIssue_Handler) } + _AlertService_GetAlertConditions_Handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.GetAlertConditions(ctx, req.(*GetAlertConditionsRequest)) + } + var _AlertService_GetAlertConditions_info transport.ServiceInfo + if h.Interceptor != nil { + _AlertService_GetAlertConditions_info = transport.NewServiceInfo("erda.core.monitor.alert.AlertService", "GetAlertConditions", srv) + _AlertService_GetAlertConditions_Handler = h.Interceptor(_AlertService_GetAlertConditions_Handler) + } + + _AlertService_GetAlertConditionsValue_Handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.GetAlertConditionsValue(ctx, req.(*GetAlertConditionsValueRequest)) + } + var _AlertService_GetAlertConditionsValue_info transport.ServiceInfo + if h.Interceptor != nil { + _AlertService_GetAlertConditionsValue_info = transport.NewServiceInfo("erda.core.monitor.alert.AlertService", "GetAlertConditionsValue", srv) + _AlertService_GetAlertConditionsValue_Handler = h.Interceptor(_AlertService_GetAlertConditionsValue_Handler) + } + var serviceDesc = _AlertService_serviceDesc serviceDesc.Methods = []grpc.MethodDesc{ { @@ -2224,6 +2270,52 @@ func _get_AlertService_serviceDesc(srv AlertServiceServer, opts ...grpc1.HandleO return interceptor(ctx, in, info, _AlertService_UpdateOrgAlertIssue_Handler) }, }, + { + MethodName: "GetAlertConditions", + Handler: func(_ interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetAlertConditionsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil && h.Interceptor == nil { + return srv.(AlertServiceServer).GetAlertConditions(ctx, in) + } + if h.Interceptor != nil { + ctx = context.WithValue(ctx, transport.ServiceInfoContextKey, _AlertService_GetAlertConditions_info) + } + if interceptor == nil { + return _AlertService_GetAlertConditions_Handler(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/erda.core.monitor.alert.AlertService/GetAlertConditions", + } + return interceptor(ctx, in, info, _AlertService_GetAlertConditions_Handler) + }, + }, + { + MethodName: "GetAlertConditionsValue", + Handler: func(_ interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetAlertConditionsValueRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil && h.Interceptor == nil { + return srv.(AlertServiceServer).GetAlertConditionsValue(ctx, in) + } + if h.Interceptor != nil { + ctx = context.WithValue(ctx, transport.ServiceInfoContextKey, _AlertService_GetAlertConditionsValue_info) + } + if interceptor == nil { + return _AlertService_GetAlertConditionsValue_Handler(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/erda.core.monitor.alert.AlertService/GetAlertConditionsValue", + } + return interceptor(ctx, in, info, _AlertService_GetAlertConditionsValue_Handler) + }, + }, } return &serviceDesc } diff --git a/api/proto-go/msp/apm/alert/client/client.go b/api/proto-go/msp/apm/alert/client/client.go index ef683d1af53..af739fc38ae 100644 --- a/api/proto-go/msp/apm/alert/client/client.go +++ b/api/proto-go/msp/apm/alert/client/client.go @@ -124,3 +124,11 @@ func (s *alertServiceWrapper) UpdateAlertRecordIssue(ctx context.Context, req *p func (s *alertServiceWrapper) DashboardPreview(ctx context.Context, req *pb.DashboardPreviewRequest) (*pb.DashboardPreviewResponse, error) { return s.client.DashboardPreview(ctx, req, append(grpc.CallOptionFromContext(ctx), s.opts...)...) } + +func (s *alertServiceWrapper) GetAlertConditions(ctx context.Context, req *pb.GetAlertConditionsRequest) (*pb.GetAlertConditionsResponse, error) { + return s.client.GetAlertConditions(ctx, req, append(grpc.CallOptionFromContext(ctx), s.opts...)...) +} + +func (s *alertServiceWrapper) GetAlertConditionsValue(ctx context.Context, req *pb.GetAlertConditionsValueRequest) (*pb.GetAlertConditionsValueResponse, error) { + return s.client.GetAlertConditionsValue(ctx, req, append(grpc.CallOptionFromContext(ctx), s.opts...)...) +} diff --git a/api/proto-go/msp/apm/alert/pb/apm_alert.form.pb.go b/api/proto-go/msp/apm/alert/pb/apm_alert.form.pb.go index e628cb6d439..7d5a4429c2b 100644 --- a/api/proto-go/msp/apm/alert/pb/apm_alert.form.pb.go +++ b/api/proto-go/msp/apm/alert/pb/apm_alert.form.pb.go @@ -67,6 +67,10 @@ var _ urlenc.URLValuesUnmarshaler = (*UpdateAlertRecordIssueRequest)(nil) var _ urlenc.URLValuesUnmarshaler = (*UpdateAlertRecordIssueResponse)(nil) var _ urlenc.URLValuesUnmarshaler = (*DashboardPreviewRequest)(nil) var _ urlenc.URLValuesUnmarshaler = (*DashboardPreviewResponse)(nil) +var _ urlenc.URLValuesUnmarshaler = (*GetAlertConditionsRequest)(nil) +var _ urlenc.URLValuesUnmarshaler = (*GetAlertConditionsResponse)(nil) +var _ urlenc.URLValuesUnmarshaler = (*GetAlertConditionsValueRequest)(nil) +var _ urlenc.URLValuesUnmarshaler = (*GetAlertConditionsValueResponse)(nil) // QueryAlertRuleRequest implement urlenc.URLValuesUnmarshaler. func (m *QueryAlertRuleRequest) UnmarshalURLValues(prefix string, values url.Values) error { @@ -2211,3 +2215,56 @@ func (m *DashboardPreviewResponse) UnmarshalURLValues(prefix string, values url. } return nil } + +// GetAlertConditionsRequest implement urlenc.URLValuesUnmarshaler. +func (m *GetAlertConditionsRequest) UnmarshalURLValues(prefix string, values url.Values) error { + for key, vals := range values { + if len(vals) > 0 { + switch prefix + key { + case "scopeType": + m.ScopeType = vals[0] + } + } + } + return nil +} + +// GetAlertConditionsResponse implement urlenc.URLValuesUnmarshaler. +func (m *GetAlertConditionsResponse) UnmarshalURLValues(prefix string, values url.Values) error { + return nil +} + +// GetAlertConditionsValueRequest implement urlenc.URLValuesUnmarshaler. +func (m *GetAlertConditionsValueRequest) UnmarshalURLValues(prefix string, values url.Values) error { + for key, vals := range values { + if len(vals) > 0 { + switch prefix + key { + case "condition": + m.Condition = vals[0] + case "index": + m.Index = vals[0] + } + } + } + return nil +} + +// GetAlertConditionsValueResponse implement urlenc.URLValuesUnmarshaler. +func (m *GetAlertConditionsValueResponse) UnmarshalURLValues(prefix string, values url.Values) error { + for key, vals := range values { + if len(vals) > 0 { + switch prefix + key { + case "data": + if m.Data == nil { + m.Data = &pb.AlertConditionsValue{} + } + case "data.key": + if m.Data == nil { + m.Data = &pb.AlertConditionsValue{} + } + m.Data.Key = vals[0] + } + } + } + return nil +} diff --git a/api/proto-go/msp/apm/alert/pb/apm_alert.http.pb.go b/api/proto-go/msp/apm/alert/pb/apm_alert.http.pb.go index d45e3322855..eaaece9547d 100644 --- a/api/proto-go/msp/apm/alert/pb/apm_alert.http.pb.go +++ b/api/proto-go/msp/apm/alert/pb/apm_alert.http.pb.go @@ -66,6 +66,10 @@ type AlertServiceHandler interface { UpdateAlertRecordIssue(context.Context, *UpdateAlertRecordIssueRequest) (*UpdateAlertRecordIssueResponse, error) // POST /api/msp/apm/{tenantGroup}/alert-records/custom-alerts/dash-preview/query DashboardPreview(context.Context, *DashboardPreviewRequest) (*DashboardPreviewResponse, error) + // GET /api/msp/apm/conditions + GetAlertConditions(context.Context, *GetAlertConditionsRequest) (*GetAlertConditionsResponse, error) + // POST /api/msp/apm/conditions/value + GetAlertConditionsValue(context.Context, *GetAlertConditionsValueRequest) (*GetAlertConditionsValueResponse, error) } // RegisterAlertServiceHandler register AlertServiceHandler to http.Router. @@ -1445,6 +1449,78 @@ func RegisterAlertServiceHandler(r http.Router, srv AlertServiceHandler, opts .. ) } + add_GetAlertConditions := func(method, path string, fn func(context.Context, *GetAlertConditionsRequest) (*GetAlertConditionsResponse, error)) { + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return fn(ctx, req.(*GetAlertConditionsRequest)) + } + var GetAlertConditions_info transport.ServiceInfo + if h.Interceptor != nil { + GetAlertConditions_info = transport.NewServiceInfo("erda.msp.apm.alert.AlertService", "GetAlertConditions", srv) + handler = h.Interceptor(handler) + } + r.Add(method, path, encodeFunc( + func(w http1.ResponseWriter, r *http1.Request) (interface{}, error) { + ctx := http.WithRequest(r.Context(), r) + ctx = transport.WithHTTPHeaderForServer(ctx, r.Header) + if h.Interceptor != nil { + ctx = context.WithValue(ctx, transport.ServiceInfoContextKey, GetAlertConditions_info) + } + r = r.WithContext(ctx) + var in GetAlertConditionsRequest + if err := h.Decode(r, &in); err != nil { + return nil, err + } + var input interface{} = &in + if u, ok := (input).(urlenc.URLValuesUnmarshaler); ok { + if err := u.UnmarshalURLValues("", r.URL.Query()); err != nil { + return nil, err + } + } + out, err := handler(ctx, &in) + if err != nil { + return out, err + } + return out, nil + }), + ) + } + + add_GetAlertConditionsValue := func(method, path string, fn func(context.Context, *GetAlertConditionsValueRequest) (*GetAlertConditionsValueResponse, error)) { + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return fn(ctx, req.(*GetAlertConditionsValueRequest)) + } + var GetAlertConditionsValue_info transport.ServiceInfo + if h.Interceptor != nil { + GetAlertConditionsValue_info = transport.NewServiceInfo("erda.msp.apm.alert.AlertService", "GetAlertConditionsValue", srv) + handler = h.Interceptor(handler) + } + r.Add(method, path, encodeFunc( + func(w http1.ResponseWriter, r *http1.Request) (interface{}, error) { + ctx := http.WithRequest(r.Context(), r) + ctx = transport.WithHTTPHeaderForServer(ctx, r.Header) + if h.Interceptor != nil { + ctx = context.WithValue(ctx, transport.ServiceInfoContextKey, GetAlertConditionsValue_info) + } + r = r.WithContext(ctx) + var in GetAlertConditionsValueRequest + if err := h.Decode(r, &in); err != nil { + return nil, err + } + var input interface{} = &in + if u, ok := (input).(urlenc.URLValuesUnmarshaler); ok { + if err := u.UnmarshalURLValues("", r.URL.Query()); err != nil { + return nil, err + } + } + out, err := handler(ctx, &in) + if err != nil { + return out, err + } + return out, nil + }), + ) + } + add_QueryAlertRule("GET", "/api/msp/apm/{tenantGroup}/alert-rules", srv.QueryAlertRule) add_QueryAlert("GET", "/api/msp/apm/{tenantGroup}/alerts", srv.QueryAlert) add_GetAlert("GET", "/api/msp/apm/{tenantGroup}/alerts/{id}", srv.GetAlert) @@ -1467,4 +1543,6 @@ func RegisterAlertServiceHandler(r http.Router, srv AlertServiceHandler, opts .. add_CreateAlertRecordIssue("POST", "/api/msp/apm/{tenantGroup}/alert-records/{groupId}/issues", srv.CreateAlertRecordIssue) add_UpdateAlertRecordIssue("PUT", "/api/msp/apm/{tenantGroup}/alert-records/{groupId}/issues", srv.UpdateAlertRecordIssue) add_DashboardPreview("POST", "/api/msp/apm/{tenantGroup}/alert-records/custom-alerts/dash-preview/query", srv.DashboardPreview) + add_GetAlertConditions("GET", "/api/msp/apm/conditions", srv.GetAlertConditions) + add_GetAlertConditionsValue("POST", "/api/msp/apm/conditions/value", srv.GetAlertConditionsValue) } diff --git a/api/proto-go/msp/apm/alert/pb/apm_alert.json.pb.go b/api/proto-go/msp/apm/alert/pb/apm_alert.json.pb.go index be3e2782489..e1b41bc1394 100644 --- a/api/proto-go/msp/apm/alert/pb/apm_alert.json.pb.go +++ b/api/proto-go/msp/apm/alert/pb/apm_alert.json.pb.go @@ -115,6 +115,14 @@ var _ json.Marshaler = (*DashboardPreviewRequest)(nil) var _ json.Unmarshaler = (*DashboardPreviewRequest)(nil) var _ json.Marshaler = (*DashboardPreviewResponse)(nil) var _ json.Unmarshaler = (*DashboardPreviewResponse)(nil) +var _ json.Marshaler = (*GetAlertConditionsRequest)(nil) +var _ json.Unmarshaler = (*GetAlertConditionsRequest)(nil) +var _ json.Marshaler = (*GetAlertConditionsResponse)(nil) +var _ json.Unmarshaler = (*GetAlertConditionsResponse)(nil) +var _ json.Marshaler = (*GetAlertConditionsValueRequest)(nil) +var _ json.Unmarshaler = (*GetAlertConditionsValueRequest)(nil) +var _ json.Marshaler = (*GetAlertConditionsValueResponse)(nil) +var _ json.Unmarshaler = (*GetAlertConditionsValueResponse)(nil) // QueryAlertRuleRequest implement json.Marshaler. func (m *QueryAlertRuleRequest) MarshalJSON() ([]byte, error) { @@ -1033,3 +1041,75 @@ func (m *DashboardPreviewResponse) UnmarshalJSON(b []byte) error { DiscardUnknown: true, }).Unmarshal(b, m) } + +// GetAlertConditionsRequest implement json.Marshaler. +func (m *GetAlertConditionsRequest) MarshalJSON() ([]byte, error) { + buf := &bytes.Buffer{} + err := (&jsonpb.Marshaler{ + OrigName: false, + EnumsAsInts: false, + EmitDefaults: true, + }).Marshal(buf, m) + return buf.Bytes(), err +} + +// GetAlertConditionsRequest implement json.Marshaler. +func (m *GetAlertConditionsRequest) UnmarshalJSON(b []byte) error { + return (&protojson.UnmarshalOptions{ + DiscardUnknown: true, + }).Unmarshal(b, m) +} + +// GetAlertConditionsResponse implement json.Marshaler. +func (m *GetAlertConditionsResponse) MarshalJSON() ([]byte, error) { + buf := &bytes.Buffer{} + err := (&jsonpb.Marshaler{ + OrigName: false, + EnumsAsInts: false, + EmitDefaults: true, + }).Marshal(buf, m) + return buf.Bytes(), err +} + +// GetAlertConditionsResponse implement json.Marshaler. +func (m *GetAlertConditionsResponse) UnmarshalJSON(b []byte) error { + return (&protojson.UnmarshalOptions{ + DiscardUnknown: true, + }).Unmarshal(b, m) +} + +// GetAlertConditionsValueRequest implement json.Marshaler. +func (m *GetAlertConditionsValueRequest) MarshalJSON() ([]byte, error) { + buf := &bytes.Buffer{} + err := (&jsonpb.Marshaler{ + OrigName: false, + EnumsAsInts: false, + EmitDefaults: true, + }).Marshal(buf, m) + return buf.Bytes(), err +} + +// GetAlertConditionsValueRequest implement json.Marshaler. +func (m *GetAlertConditionsValueRequest) UnmarshalJSON(b []byte) error { + return (&protojson.UnmarshalOptions{ + DiscardUnknown: true, + }).Unmarshal(b, m) +} + +// GetAlertConditionsValueResponse implement json.Marshaler. +func (m *GetAlertConditionsValueResponse) MarshalJSON() ([]byte, error) { + buf := &bytes.Buffer{} + err := (&jsonpb.Marshaler{ + OrigName: false, + EnumsAsInts: false, + EmitDefaults: true, + }).Marshal(buf, m) + return buf.Bytes(), err +} + +// GetAlertConditionsValueResponse implement json.Marshaler. +func (m *GetAlertConditionsValueResponse) UnmarshalJSON(b []byte) error { + return (&protojson.UnmarshalOptions{ + DiscardUnknown: true, + }).Unmarshal(b, m) +} diff --git a/api/proto-go/msp/apm/alert/pb/apm_alert.pb.go b/api/proto-go/msp/apm/alert/pb/apm_alert.pb.go index 04ca00467f3..c11d15ee89c 100644 --- a/api/proto-go/msp/apm/alert/pb/apm_alert.pb.go +++ b/api/proto-go/msp/apm/alert/pb/apm_alert.pb.go @@ -10,6 +10,7 @@ import ( reflect "reflect" sync "sync" + _ "github.com/erda-project/erda-proto-go/common/pb" pb "github.com/erda-project/erda-proto-go/core/monitor/alert/pb" _ "github.com/mwitkow/go-proto-validators" _ "google.golang.org/genproto/googleapis/api/annotations" @@ -391,18 +392,19 @@ type ApmAlertData struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - AlertScope string `protobuf:"bytes,3,opt,name=alertScope,proto3" json:"alertScope,omitempty"` - AlertScopeId string `protobuf:"bytes,4,opt,name=alertScopeId,proto3" json:"alertScopeId,omitempty"` - Enable bool `protobuf:"varint,5,opt,name=enable,proto3" json:"enable,omitempty"` - Rules []*pb.AlertExpression `protobuf:"bytes,6,rep,name=rules,proto3" json:"rules,omitempty"` - Notifies []*pb.AlertNotify `protobuf:"bytes,7,rep,name=notifies,proto3" json:"notifies,omitempty"` - AppIds []string `protobuf:"bytes,8,rep,name=appIds,proto3" json:"appIds,omitempty"` - Domain string `protobuf:"bytes,9,opt,name=domain,proto3" json:"domain,omitempty"` - Attributes map[string]*structpb.Value `protobuf:"bytes,10,rep,name=attributes,proto3" json:"attributes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - CreateTime int64 `protobuf:"varint,11,opt,name=createTime,proto3" json:"createTime,omitempty"` - UpdateTime int64 `protobuf:"varint,12,opt,name=updateTime,proto3" json:"updateTime,omitempty"` + Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + AlertScope string `protobuf:"bytes,3,opt,name=alertScope,proto3" json:"alertScope,omitempty"` + AlertScopeId string `protobuf:"bytes,4,opt,name=alertScopeId,proto3" json:"alertScopeId,omitempty"` + Enable bool `protobuf:"varint,5,opt,name=enable,proto3" json:"enable,omitempty"` + Rules []*pb.AlertExpression `protobuf:"bytes,6,rep,name=rules,proto3" json:"rules,omitempty"` + Notifies []*pb.AlertNotify `protobuf:"bytes,7,rep,name=notifies,proto3" json:"notifies,omitempty"` + AppIds []string `protobuf:"bytes,8,rep,name=appIds,proto3" json:"appIds,omitempty"` + Domain string `protobuf:"bytes,9,opt,name=domain,proto3" json:"domain,omitempty"` + Attributes map[string]*structpb.Value `protobuf:"bytes,10,rep,name=attributes,proto3" json:"attributes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + CreateTime int64 `protobuf:"varint,11,opt,name=createTime,proto3" json:"createTime,omitempty"` + UpdateTime int64 `protobuf:"varint,12,opt,name=updateTime,proto3" json:"updateTime,omitempty"` + TriggerCondition []*pb.TriggerCondition `protobuf:"bytes,13,rep,name=triggerCondition,proto3" json:"triggerCondition,omitempty"` } func (x *ApmAlertData) Reset() { @@ -521,23 +523,31 @@ func (x *ApmAlertData) GetUpdateTime() int64 { return 0 } +func (x *ApmAlertData) GetTriggerCondition() []*pb.TriggerCondition { + if x != nil { + return x.TriggerCondition + } + return nil +} + type CreateAlertRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - TenantGroup string `protobuf:"bytes,1,opt,name=tenantGroup,proto3" json:"tenantGroup,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - AppIds []string `protobuf:"bytes,3,rep,name=appIds,proto3" json:"appIds,omitempty"` - Rules []*pb.AlertExpression `protobuf:"bytes,4,rep,name=rules,proto3" json:"rules,omitempty"` - Notifies []*pb.AlertNotify `protobuf:"bytes,5,rep,name=notifies,proto3" json:"notifies,omitempty"` - Domain string `protobuf:"bytes,6,opt,name=domain,proto3" json:"domain,omitempty"` - CreateTime int64 `protobuf:"varint,7,opt,name=createTime,proto3" json:"createTime,omitempty"` - UpdateTime int64 `protobuf:"varint,8,opt,name=updateTime,proto3" json:"updateTime,omitempty"` - AlertScope string `protobuf:"bytes,9,opt,name=alertScope,proto3" json:"alertScope,omitempty"` - AlertScopeId string `protobuf:"bytes,10,opt,name=alertScopeId,proto3" json:"alertScopeId,omitempty"` - Enable bool `protobuf:"varint,11,opt,name=enable,proto3" json:"enable,omitempty"` - Attributes map[string]*structpb.Value `protobuf:"bytes,12,rep,name=attributes,proto3" json:"attributes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + TenantGroup string `protobuf:"bytes,1,opt,name=tenantGroup,proto3" json:"tenantGroup,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + AppIds []string `protobuf:"bytes,3,rep,name=appIds,proto3" json:"appIds,omitempty"` + Rules []*pb.AlertExpression `protobuf:"bytes,4,rep,name=rules,proto3" json:"rules,omitempty"` + Notifies []*pb.AlertNotify `protobuf:"bytes,5,rep,name=notifies,proto3" json:"notifies,omitempty"` + Domain string `protobuf:"bytes,6,opt,name=domain,proto3" json:"domain,omitempty"` + CreateTime int64 `protobuf:"varint,7,opt,name=createTime,proto3" json:"createTime,omitempty"` + UpdateTime int64 `protobuf:"varint,8,opt,name=updateTime,proto3" json:"updateTime,omitempty"` + AlertScope string `protobuf:"bytes,9,opt,name=alertScope,proto3" json:"alertScope,omitempty"` + AlertScopeId string `protobuf:"bytes,10,opt,name=alertScopeId,proto3" json:"alertScopeId,omitempty"` + Enable bool `protobuf:"varint,11,opt,name=enable,proto3" json:"enable,omitempty"` + Attributes map[string]*structpb.Value `protobuf:"bytes,12,rep,name=attributes,proto3" json:"attributes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + TriggerCondition []*pb.TriggerCondition `protobuf:"bytes,13,rep,name=triggerCondition,proto3" json:"triggerCondition,omitempty"` } func (x *CreateAlertRequest) Reset() { @@ -656,6 +666,13 @@ func (x *CreateAlertRequest) GetAttributes() map[string]*structpb.Value { return nil } +func (x *CreateAlertRequest) GetTriggerCondition() []*pb.TriggerCondition { + if x != nil { + return x.TriggerCondition + } + return nil +} + type CreateAlertResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -755,19 +772,20 @@ type UpdateAlertRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - TenantGroup string `protobuf:"bytes,1,opt,name=tenantGroup,proto3" json:"tenantGroup,omitempty"` - Id uint64 `protobuf:"varint,2,opt,name=id,proto3" json:"id,omitempty"` - Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` - AlertScope string `protobuf:"bytes,4,opt,name=alertScope,proto3" json:"alertScope,omitempty"` - AlertScopeId string `protobuf:"bytes,5,opt,name=alertScopeId,proto3" json:"alertScopeId,omitempty"` - Enable bool `protobuf:"varint,6,opt,name=enable,proto3" json:"enable,omitempty"` - Rules []*pb.AlertExpression `protobuf:"bytes,7,rep,name=rules,proto3" json:"rules,omitempty"` - Notifies []*pb.AlertNotify `protobuf:"bytes,8,rep,name=notifies,proto3" json:"notifies,omitempty"` - Attributes map[string]*structpb.Value `protobuf:"bytes,9,rep,name=attributes,proto3" json:"attributes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - AppIds []string `protobuf:"bytes,10,rep,name=appIds,proto3" json:"appIds,omitempty"` - Domain string `protobuf:"bytes,11,opt,name=domain,proto3" json:"domain,omitempty"` - CreateTime int64 `protobuf:"varint,12,opt,name=createTime,proto3" json:"createTime,omitempty"` - UpdateTime int64 `protobuf:"varint,13,opt,name=updateTime,proto3" json:"updateTime,omitempty"` + TenantGroup string `protobuf:"bytes,1,opt,name=tenantGroup,proto3" json:"tenantGroup,omitempty"` + Id uint64 `protobuf:"varint,2,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + AlertScope string `protobuf:"bytes,4,opt,name=alertScope,proto3" json:"alertScope,omitempty"` + AlertScopeId string `protobuf:"bytes,5,opt,name=alertScopeId,proto3" json:"alertScopeId,omitempty"` + Enable bool `protobuf:"varint,6,opt,name=enable,proto3" json:"enable,omitempty"` + Rules []*pb.AlertExpression `protobuf:"bytes,7,rep,name=rules,proto3" json:"rules,omitempty"` + Notifies []*pb.AlertNotify `protobuf:"bytes,8,rep,name=notifies,proto3" json:"notifies,omitempty"` + Attributes map[string]*structpb.Value `protobuf:"bytes,9,rep,name=attributes,proto3" json:"attributes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + AppIds []string `protobuf:"bytes,10,rep,name=appIds,proto3" json:"appIds,omitempty"` + Domain string `protobuf:"bytes,11,opt,name=domain,proto3" json:"domain,omitempty"` + CreateTime int64 `protobuf:"varint,12,opt,name=createTime,proto3" json:"createTime,omitempty"` + UpdateTime int64 `protobuf:"varint,13,opt,name=updateTime,proto3" json:"updateTime,omitempty"` + TriggerCondition []*pb.TriggerCondition `protobuf:"bytes,14,rep,name=triggerCondition,proto3" json:"triggerCondition,omitempty"` } func (x *UpdateAlertRequest) Reset() { @@ -893,6 +911,13 @@ func (x *UpdateAlertRequest) GetUpdateTime() int64 { return 0 } +func (x *UpdateAlertRequest) GetTriggerCondition() []*pb.TriggerCondition { + if x != nil { + return x.TriggerCondition + } + return nil +} + type UpdateAlertResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -3168,6 +3193,210 @@ func (x *DashboardPreviewResponse) GetData() *pb.View { return nil } +type GetAlertConditionsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ScopeType string `protobuf:"bytes,1,opt,name=scopeType,proto3" json:"scopeType,omitempty"` +} + +func (x *GetAlertConditionsRequest) Reset() { + *x = GetAlertConditionsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_apm_alert_proto_msgTypes[51] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetAlertConditionsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetAlertConditionsRequest) ProtoMessage() {} + +func (x *GetAlertConditionsRequest) ProtoReflect() protoreflect.Message { + mi := &file_apm_alert_proto_msgTypes[51] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetAlertConditionsRequest.ProtoReflect.Descriptor instead. +func (*GetAlertConditionsRequest) Descriptor() ([]byte, []int) { + return file_apm_alert_proto_rawDescGZIP(), []int{51} +} + +func (x *GetAlertConditionsRequest) GetScopeType() string { + if x != nil { + return x.ScopeType + } + return "" +} + +type GetAlertConditionsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Data []*pb.Conditions `protobuf:"bytes,1,rep,name=data,json=conditions,proto3" json:"data,omitempty"` +} + +func (x *GetAlertConditionsResponse) Reset() { + *x = GetAlertConditionsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_apm_alert_proto_msgTypes[52] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetAlertConditionsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetAlertConditionsResponse) ProtoMessage() {} + +func (x *GetAlertConditionsResponse) ProtoReflect() protoreflect.Message { + mi := &file_apm_alert_proto_msgTypes[52] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetAlertConditionsResponse.ProtoReflect.Descriptor instead. +func (*GetAlertConditionsResponse) Descriptor() ([]byte, []int) { + return file_apm_alert_proto_rawDescGZIP(), []int{52} +} + +func (x *GetAlertConditionsResponse) GetData() []*pb.Conditions { + if x != nil { + return x.Data + } + return nil +} + +type GetAlertConditionsValueRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Condition string `protobuf:"bytes,1,opt,name=condition,proto3" json:"condition,omitempty"` + Filters map[string]string `protobuf:"bytes,2,rep,name=filters,proto3" json:"filters,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Index string `protobuf:"bytes,3,opt,name=index,proto3" json:"index,omitempty"` +} + +func (x *GetAlertConditionsValueRequest) Reset() { + *x = GetAlertConditionsValueRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_apm_alert_proto_msgTypes[53] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetAlertConditionsValueRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetAlertConditionsValueRequest) ProtoMessage() {} + +func (x *GetAlertConditionsValueRequest) ProtoReflect() protoreflect.Message { + mi := &file_apm_alert_proto_msgTypes[53] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetAlertConditionsValueRequest.ProtoReflect.Descriptor instead. +func (*GetAlertConditionsValueRequest) Descriptor() ([]byte, []int) { + return file_apm_alert_proto_rawDescGZIP(), []int{53} +} + +func (x *GetAlertConditionsValueRequest) GetCondition() string { + if x != nil { + return x.Condition + } + return "" +} + +func (x *GetAlertConditionsValueRequest) GetFilters() map[string]string { + if x != nil { + return x.Filters + } + return nil +} + +func (x *GetAlertConditionsValueRequest) GetIndex() string { + if x != nil { + return x.Index + } + return "" +} + +type GetAlertConditionsValueResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Data *pb.AlertConditionsValue `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"` +} + +func (x *GetAlertConditionsValueResponse) Reset() { + *x = GetAlertConditionsValueResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_apm_alert_proto_msgTypes[54] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetAlertConditionsValueResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetAlertConditionsValueResponse) ProtoMessage() {} + +func (x *GetAlertConditionsValueResponse) ProtoReflect() protoreflect.Message { + mi := &file_apm_alert_proto_msgTypes[54] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetAlertConditionsValueResponse.ProtoReflect.Descriptor instead. +func (*GetAlertConditionsValueResponse) Descriptor() ([]byte, []int) { + return file_apm_alert_proto_rawDescGZIP(), []int{54} +} + +func (x *GetAlertConditionsValueResponse) GetData() *pb.AlertConditionsValue { + if x != nil { + return x.Data + } + return nil +} + var File_apm_alert_proto protoreflect.FileDescriptor var file_apm_alert_proto_rawDesc = []byte{ @@ -3182,736 +3411,810 @@ var file_apm_alert_proto_rawDesc = []byte{ 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2f, 0x61, 0x6c, - 0x65, 0x72, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x39, 0x0a, 0x15, 0x51, 0x75, 0x65, - 0x72, 0x79, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x47, - 0x72, 0x6f, 0x75, 0x70, 0x22, 0x58, 0x0a, 0x16, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x6c, 0x65, - 0x72, 0x74, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, - 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x65, - 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, - 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x54, 0x79, 0x70, 0x65, - 0x52, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x7b, - 0x0a, 0x11, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x47, 0x72, 0x6f, - 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x1e, 0x0a, 0x06, 0x70, 0x61, 0x67, 0x65, 0x4e, 0x6f, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x03, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x10, 0x00, 0x52, 0x06, 0x70, - 0x61, 0x67, 0x65, 0x4e, 0x6f, 0x12, 0x24, 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x42, 0x08, 0xe2, 0xdf, 0x1f, 0x04, 0x10, 0x00, 0x18, - 0x65, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x22, 0x4c, 0x0a, 0x12, 0x51, - 0x75, 0x65, 0x72, 0x79, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x36, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x22, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x6d, 0x73, 0x70, 0x2e, 0x61, 0x70, 0x6d, 0x2e, 0x61, - 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x44, - 0x61, 0x74, 0x61, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x5c, 0x0a, 0x0e, 0x51, 0x75, 0x65, - 0x72, 0x79, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, 0x34, 0x0a, 0x04, 0x6c, - 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x65, 0x72, 0x64, 0x61, - 0x2e, 0x6d, 0x73, 0x70, 0x2e, 0x61, 0x70, 0x6d, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x41, - 0x70, 0x6d, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x6c, 0x69, 0x73, - 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x22, 0x4b, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x41, 0x6c, - 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x74, 0x65, - 0x6e, 0x61, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x16, 0x0a, 0x02, - 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x10, 0x00, - 0x52, 0x02, 0x69, 0x64, 0x22, 0x48, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x34, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x6d, 0x73, - 0x70, 0x2e, 0x61, 0x70, 0x6d, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x41, 0x70, 0x6d, 0x41, - 0x6c, 0x65, 0x72, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xa9, - 0x04, 0x0a, 0x0c, 0x41, 0x70, 0x6d, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, - 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, - 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x53, 0x63, 0x6f, 0x70, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x53, 0x63, - 0x6f, 0x70, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x53, 0x63, 0x6f, 0x70, - 0x65, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x6c, 0x65, 0x72, 0x74, - 0x53, 0x63, 0x6f, 0x70, 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, - 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x12, - 0x3e, 0x0a, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, - 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, - 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x45, 0x78, - 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x12, - 0x40, 0x0a, 0x08, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x24, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, - 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x41, 0x6c, 0x65, 0x72, - 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x52, 0x08, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x65, - 0x73, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x49, 0x64, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x06, 0x61, 0x70, 0x70, 0x49, 0x64, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x6f, 0x6d, - 0x61, 0x69, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, - 0x6e, 0x12, 0x50, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, - 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x6d, 0x73, 0x70, - 0x2e, 0x61, 0x70, 0x6d, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x41, 0x70, 0x6d, 0x41, 0x6c, - 0x65, 0x72, 0x74, 0x44, 0x61, 0x74, 0x61, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, - 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, - 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, - 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, - 0x69, 0x6d, 0x65, 0x1a, 0x55, 0x0a, 0x0f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, - 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xc7, 0x04, 0x0a, 0x12, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x47, 0x72, - 0x6f, 0x75, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x49, 0x64, - 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x61, 0x70, 0x70, 0x49, 0x64, 0x73, 0x12, - 0x3e, 0x0a, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, - 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, - 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x45, 0x78, - 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x12, - 0x40, 0x0a, 0x08, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x24, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, - 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x41, 0x6c, 0x65, 0x72, - 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x52, 0x08, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x65, - 0x73, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x75, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x75, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x6c, 0x65, - 0x72, 0x74, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, + 0x65, 0x72, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x14, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, + 0x6e, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, + 0x39, 0x0a, 0x15, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x75, 0x6c, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x74, 0x65, 0x6e, 0x61, + 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, + 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x58, 0x0a, 0x16, 0x51, 0x75, + 0x65, 0x72, 0x79, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, + 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x41, 0x6c, 0x65, + 0x72, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x52, 0x04, + 0x64, 0x61, 0x74, 0x61, 0x22, 0x7b, 0x0a, 0x11, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x6c, 0x65, + 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x74, 0x65, 0x6e, + 0x61, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, + 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x1e, 0x0a, 0x06, 0x70, + 0x61, 0x67, 0x65, 0x4e, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x42, 0x06, 0xe2, 0xdf, 0x1f, + 0x02, 0x10, 0x00, 0x52, 0x06, 0x70, 0x61, 0x67, 0x65, 0x4e, 0x6f, 0x12, 0x24, 0x0a, 0x08, 0x70, + 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x42, 0x08, 0xe2, + 0xdf, 0x1f, 0x04, 0x10, 0x00, 0x18, 0x65, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, + 0x65, 0x22, 0x4c, 0x0a, 0x12, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x6d, 0x73, 0x70, + 0x2e, 0x61, 0x70, 0x6d, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, + 0x41, 0x6c, 0x65, 0x72, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, + 0x5c, 0x0a, 0x0e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x44, 0x61, 0x74, + 0x61, 0x12, 0x34, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x20, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x6d, 0x73, 0x70, 0x2e, 0x61, 0x70, 0x6d, 0x2e, 0x61, + 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x41, 0x70, 0x6d, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x44, 0x61, 0x74, + 0x61, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x22, 0x4b, 0x0a, + 0x0f, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x20, 0x0a, 0x0b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x47, 0x72, 0x6f, + 0x75, 0x70, 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x42, 0x06, + 0xe2, 0xdf, 0x1f, 0x02, 0x10, 0x00, 0x52, 0x02, 0x69, 0x64, 0x22, 0x48, 0x0a, 0x10, 0x47, 0x65, + 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x34, + 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x65, + 0x72, 0x64, 0x61, 0x2e, 0x6d, 0x73, 0x70, 0x2e, 0x61, 0x70, 0x6d, 0x2e, 0x61, 0x6c, 0x65, 0x72, + 0x74, 0x2e, 0x41, 0x70, 0x6d, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, + 0x64, 0x61, 0x74, 0x61, 0x22, 0x80, 0x05, 0x0a, 0x0c, 0x41, 0x70, 0x6d, 0x41, 0x6c, 0x65, 0x72, + 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x6c, 0x65, + 0x72, 0x74, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x6c, 0x65, - 0x72, 0x74, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x49, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x72, 0x74, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, - 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x65, - 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x56, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x65, 0x72, 0x64, 0x61, - 0x2e, 0x6d, 0x73, 0x70, 0x2e, 0x61, 0x70, 0x6d, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x1a, 0x55, 0x0a, - 0x0f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, - 0x65, 0x79, 0x12, 0x2c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x3a, 0x02, 0x38, 0x01, 0x22, 0x4e, 0x0a, 0x13, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x6c, - 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x37, 0x0a, 0x04, 0x64, - 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x65, 0x72, 0x64, 0x61, - 0x2e, 0x6d, 0x73, 0x70, 0x2e, 0x61, 0x70, 0x6d, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, - 0x64, 0x61, 0x74, 0x61, 0x22, 0x21, 0x0a, 0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x6c, - 0x65, 0x72, 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x22, 0xd7, 0x04, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, + 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x65, + 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x3e, 0x0a, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x06, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, + 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x41, + 0x6c, 0x65, 0x72, 0x74, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x05, + 0x72, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x40, 0x0a, 0x08, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x65, + 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, + 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, + 0x74, 0x2e, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x52, 0x08, 0x6e, + 0x6f, 0x74, 0x69, 0x66, 0x69, 0x65, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x49, 0x64, + 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x61, 0x70, 0x70, 0x49, 0x64, 0x73, 0x12, + 0x16, 0x0a, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x50, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x65, 0x72, + 0x64, 0x61, 0x2e, 0x6d, 0x73, 0x70, 0x2e, 0x61, 0x70, 0x6d, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, + 0x2e, 0x41, 0x70, 0x6d, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x44, 0x61, 0x74, 0x61, 0x2e, 0x41, 0x74, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x61, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x75, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x55, 0x0a, 0x10, 0x74, 0x72, 0x69, + 0x67, 0x67, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0d, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, + 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x54, 0x72, + 0x69, 0x67, 0x67, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x10, + 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x1a, 0x55, 0x0a, 0x0f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x9e, 0x05, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, - 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x53, 0x63, 0x6f, - 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x53, - 0x63, 0x6f, 0x70, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x53, 0x63, 0x6f, - 0x70, 0x65, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x6c, 0x65, 0x72, - 0x74, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x6e, 0x61, 0x62, - 0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, - 0x12, 0x3e, 0x0a, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x28, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, - 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x45, - 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, - 0x12, 0x40, 0x0a, 0x08, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x65, 0x73, 0x18, 0x08, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, - 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x41, 0x6c, 0x65, - 0x72, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x52, 0x08, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, - 0x65, 0x73, 0x12, 0x56, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, - 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x6d, 0x73, - 0x70, 0x2e, 0x61, 0x70, 0x6d, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, + 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x49, 0x64, 0x73, 0x18, 0x03, + 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x61, 0x70, 0x70, 0x49, 0x64, 0x73, 0x12, 0x3e, 0x0a, 0x05, + 0x72, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x65, 0x72, + 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, + 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x45, 0x78, 0x70, 0x72, 0x65, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x40, 0x0a, 0x08, + 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, + 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, + 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x4e, 0x6f, + 0x74, 0x69, 0x66, 0x79, 0x52, 0x08, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x65, 0x73, 0x12, 0x16, + 0x0a, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x54, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x54, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x53, + 0x63, 0x6f, 0x70, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x6c, 0x65, 0x72, + 0x74, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x53, + 0x63, 0x6f, 0x70, 0x65, 0x49, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x6c, + 0x65, 0x72, 0x74, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x6e, + 0x61, 0x62, 0x6c, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x65, 0x6e, 0x61, 0x62, + 0x6c, 0x65, 0x12, 0x56, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, + 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x6d, 0x73, + 0x70, 0x2e, 0x61, 0x70, 0x6d, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, - 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x70, - 0x70, 0x49, 0x64, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x61, 0x70, 0x70, 0x49, - 0x64, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x0b, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, - 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x75, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, - 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x1a, 0x55, 0x0a, 0x0f, 0x41, 0x74, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, - 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, - 0x2c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, - 0x01, 0x22, 0x15, 0x0a, 0x13, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6c, 0x0a, 0x18, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x71, + 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x55, 0x0a, 0x10, 0x74, 0x72, + 0x69, 0x67, 0x67, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0d, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, + 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x54, + 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x10, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x1a, 0x55, 0x0a, 0x0f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x4e, 0x0a, 0x13, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x37, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, + 0x65, 0x72, 0x64, 0x61, 0x2e, 0x6d, 0x73, 0x70, 0x2e, 0x61, 0x70, 0x6d, 0x2e, 0x61, 0x6c, 0x65, + 0x72, 0x74, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x44, 0x61, + 0x74, 0x61, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x21, 0x0a, 0x0f, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, 0x0e, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x22, 0xae, 0x05, 0x0a, 0x12, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x47, + 0x72, 0x6f, 0x75, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x6c, 0x65, 0x72, + 0x74, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x6c, + 0x65, 0x72, 0x74, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x6c, 0x65, 0x72, + 0x74, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, + 0x61, 0x6c, 0x65, 0x72, 0x74, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, + 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x65, 0x6e, + 0x61, 0x62, 0x6c, 0x65, 0x12, 0x3e, 0x0a, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x07, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, + 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x41, 0x6c, + 0x65, 0x72, 0x74, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x72, + 0x75, 0x6c, 0x65, 0x73, 0x12, 0x40, 0x0a, 0x08, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x65, 0x73, + 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, + 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, + 0x2e, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x52, 0x08, 0x6e, 0x6f, + 0x74, 0x69, 0x66, 0x69, 0x65, 0x73, 0x12, 0x56, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x65, 0x72, 0x64, + 0x61, 0x2e, 0x6d, 0x73, 0x70, 0x2e, 0x61, 0x70, 0x6d, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x16, + 0x0a, 0x06, 0x61, 0x70, 0x70, 0x49, 0x64, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, + 0x61, 0x70, 0x70, 0x49, 0x64, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, + 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x1e, + 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, + 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0d, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x55, + 0x0a, 0x10, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, + 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, + 0x72, 0x74, 0x2e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x64, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x55, 0x0a, 0x0f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2c, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x15, 0x0a, 0x13, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x6c, 0x0a, 0x18, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, + 0x72, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x06, 0xe2, 0xdf, 0x1f, + 0x02, 0x10, 0x00, 0x52, 0x02, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x74, 0x65, 0x6e, 0x61, 0x6e, + 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x65, + 0x6e, 0x61, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x6e, 0x61, + 0x62, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, + 0x65, 0x22, 0x1b, 0x0a, 0x19, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, + 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4e, + 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x10, 0x00, 0x52, 0x02, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x16, - 0x0a, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, - 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x1b, 0x0a, 0x19, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x41, 0x6c, 0x65, 0x72, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x4e, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6c, 0x65, - 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x10, 0x00, 0x52, 0x02, 0x69, - 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x47, 0x72, - 0x6f, 0x75, 0x70, 0x22, 0x4e, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6c, 0x65, - 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x37, 0x0a, 0x04, 0x64, 0x61, - 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, - 0x6d, 0x73, 0x70, 0x2e, 0x61, 0x70, 0x6d, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x64, - 0x61, 0x74, 0x61, 0x22, 0x25, 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6c, 0x65, - 0x72, 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x3f, 0x0a, 0x1b, 0x51, 0x75, - 0x65, 0x72, 0x79, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x4d, 0x65, 0x74, 0x72, - 0x69, 0x63, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x74, 0x65, 0x6e, - 0x61, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, - 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x5d, 0x0a, 0x1c, 0x51, - 0x75, 0x65, 0x72, 0x79, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x4d, 0x65, 0x74, - 0x72, 0x69, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x04, 0x64, - 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x65, 0x72, 0x64, 0x61, - 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, - 0x65, 0x72, 0x74, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x4d, 0x65, 0x74, - 0x72, 0x69, 0x63, 0x73, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x45, 0x0a, 0x21, 0x51, 0x75, - 0x65, 0x72, 0x79, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x4e, 0x6f, 0x74, 0x69, - 0x66, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x09, 0x52, 0x0b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x4e, + 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x37, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x6d, 0x73, 0x70, 0x2e, 0x61, + 0x70, 0x6d, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, + 0x6c, 0x65, 0x72, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x25, + 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x44, 0x61, 0x74, + 0x61, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x3f, 0x0a, 0x1b, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x75, + 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x65, 0x6e, 0x61, 0x6e, + 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x5d, 0x0a, 0x1c, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, + 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, + 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x43, + 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, + 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x45, 0x0a, 0x21, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x75, + 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x54, 0x61, 0x72, + 0x67, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x74, 0x65, + 0x6e, 0x61, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x71, 0x0a, 0x22, + 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x4e, 0x6f, + 0x74, 0x69, 0x66, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x4b, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x37, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, + 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, + 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x54, + 0x61, 0x72, 0x67, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, + 0x85, 0x01, 0x0a, 0x1b, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, + 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x22, 0x71, 0x0a, 0x22, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, - 0x69, 0x7a, 0x65, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4b, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, + 0x70, 0x12, 0x1e, 0x0a, 0x06, 0x70, 0x61, 0x67, 0x65, 0x4e, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x03, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x10, 0x00, 0x52, 0x06, 0x70, 0x61, 0x67, 0x65, 0x4e, + 0x6f, 0x12, 0x24, 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x03, 0x42, 0x08, 0xe2, 0xdf, 0x1f, 0x04, 0x10, 0x00, 0x18, 0x65, 0x52, 0x08, 0x70, + 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x22, 0x64, 0x0a, 0x1c, 0x51, 0x75, 0x65, 0x72, 0x79, + 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x44, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, - 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x4e, 0x6f, - 0x74, 0x69, 0x66, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, - 0x64, 0x61, 0x74, 0x61, 0x22, 0x85, 0x01, 0x0a, 0x1b, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x75, - 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x47, 0x72, - 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x65, 0x6e, 0x61, 0x6e, - 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x1e, 0x0a, 0x06, 0x70, 0x61, 0x67, 0x65, 0x4e, 0x6f, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x10, 0x00, 0x52, 0x06, - 0x70, 0x61, 0x67, 0x65, 0x4e, 0x6f, 0x12, 0x24, 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, - 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x42, 0x08, 0xe2, 0xdf, 0x1f, 0x04, 0x10, 0x00, - 0x18, 0x65, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x22, 0x64, 0x0a, 0x1c, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, - 0x65, 0x72, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x44, 0x0a, 0x04, - 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x65, 0x72, 0x64, - 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, - 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, - 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x64, 0x61, - 0x74, 0x61, 0x22, 0x54, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, - 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, - 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, - 0x10, 0x00, 0x52, 0x02, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x65, 0x6e, - 0x61, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x5e, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x43, - 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, - 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x43, 0x75, - 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x44, 0x65, 0x74, 0x61, - 0x69, 0x6c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x8e, 0x05, 0x0a, 0x1b, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, - 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x74, 0x65, 0x6e, 0x61, - 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, - 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, - 0x0a, 0x0a, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0a, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x22, - 0x0a, 0x0c, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x49, 0x64, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x53, 0x63, 0x6f, 0x70, 0x65, - 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x5f, 0x0a, 0x0a, 0x61, 0x74, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3f, - 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x6d, 0x73, 0x70, 0x2e, 0x61, 0x70, 0x6d, 0x2e, 0x61, 0x6c, - 0x65, 0x72, 0x74, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, - 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, - 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, - 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x41, 0x0a, 0x05, 0x72, - 0x75, 0x6c, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x65, 0x72, 0x64, - 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, - 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, - 0x65, 0x72, 0x74, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x52, - 0x0a, 0x08, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x36, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, - 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, - 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x54, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x08, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, - 0x65, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, - 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, - 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, - 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, - 0x6d, 0x65, 0x1a, 0x55, 0x0a, 0x0f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x60, 0x0a, 0x1c, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x40, 0x0a, 0x04, 0x64, 0x61, 0x74, - 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x6d, - 0x73, 0x70, 0x2e, 0x61, 0x70, 0x6d, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, - 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x2a, 0x0a, 0x18, 0x43, + 0x65, 0x72, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x54, 0x0a, + 0x18, 0x47, 0x65, 0x74, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, + 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x10, 0x00, 0x52, 0x02, 0x69, + 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x22, 0x5e, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, + 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x41, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, + 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, + 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, + 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x04, 0x64, + 0x61, 0x74, 0x61, 0x22, 0x8e, 0x05, 0x0a, 0x1b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x75, + 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x47, 0x72, 0x6f, + 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x61, + 0x6c, 0x65, 0x72, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x61, 0x6c, 0x65, 0x72, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x6c, 0x65, + 0x72, 0x74, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, + 0x6c, 0x65, 0x72, 0x74, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x6c, 0x65, + 0x72, 0x74, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x49, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0c, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, + 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x65, + 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x5f, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x65, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x65, 0x72, 0x64, 0x61, + 0x2e, 0x6d, 0x73, 0x70, 0x2e, 0x61, 0x70, 0x6d, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, - 0x65, 0x72, 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x22, 0x96, 0x05, 0x0a, 0x1b, 0x55, 0x70, 0x64, 0x61, + 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x41, 0x0a, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x18, + 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, + 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, + 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x75, + 0x6c, 0x65, 0x52, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x52, 0x0a, 0x08, 0x6e, 0x6f, 0x74, + 0x69, 0x66, 0x69, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x65, 0x72, + 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, + 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, + 0x6c, 0x65, 0x72, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x73, 0x52, 0x08, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x65, 0x73, 0x12, 0x1e, 0x0a, + 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, + 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x1a, 0x55, 0x0a, + 0x0f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, + 0x65, 0x79, 0x12, 0x2c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x3a, 0x02, 0x38, 0x01, 0x22, 0x60, 0x0a, 0x1c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x75, + 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x40, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x6d, 0x73, 0x70, 0x2e, 0x61, 0x70, + 0x6d, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x75, + 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x44, 0x61, 0x74, 0x61, + 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x2a, 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x44, 0x61, + 0x74, 0x61, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, + 0x69, 0x64, 0x22, 0x96, 0x05, 0x0a, 0x1b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x75, 0x73, + 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, + 0xe2, 0xdf, 0x1f, 0x02, 0x10, 0x00, 0x52, 0x02, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x74, 0x65, + 0x6e, 0x61, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x20, 0x0a, 0x0b, + 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x54, 0x79, 0x70, 0x65, + 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x53, 0x63, 0x6f, 0x70, 0x65, + 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x49, 0x64, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x53, 0x63, 0x6f, + 0x70, 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x5f, 0x0a, 0x0a, + 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x3f, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x6d, 0x73, 0x70, 0x2e, 0x61, 0x70, 0x6d, 0x2e, + 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x75, 0x73, 0x74, + 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x41, 0x0a, + 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x65, + 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, + 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, + 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, + 0x12, 0x52, 0x0a, 0x08, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, + 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x43, 0x75, 0x73, + 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, + 0x79, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x08, 0x6e, 0x6f, 0x74, 0x69, + 0x66, 0x69, 0x65, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, + 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, + 0x6d, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x54, 0x69, 0x6d, 0x65, 0x1a, 0x55, 0x0a, 0x0f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2c, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x1e, 0x0a, 0x1c, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, + 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x75, 0x0a, 0x21, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, + 0x65, 0x72, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xe2, 0xdf, + 0x1f, 0x02, 0x10, 0x00, 0x52, 0x02, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x74, 0x65, 0x6e, 0x61, + 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, + 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x6e, + 0x61, 0x62, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x65, 0x6e, 0x61, 0x62, + 0x6c, 0x65, 0x22, 0x24, 0x0a, 0x22, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x75, 0x73, 0x74, + 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x57, 0x0a, 0x1b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x10, 0x00, 0x52, 0x02, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, - 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x6c, 0x65, 0x72, 0x74, - 0x54, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x6c, 0x65, 0x72, - 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x53, 0x63, - 0x6f, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x6c, 0x65, 0x72, 0x74, - 0x53, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x53, 0x63, - 0x6f, 0x70, 0x65, 0x49, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x6c, 0x65, - 0x72, 0x74, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x6e, 0x61, - 0x62, 0x6c, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, - 0x65, 0x12, 0x5f, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, - 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x6d, 0x73, 0x70, - 0x2e, 0x61, 0x70, 0x6d, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, - 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x65, 0x73, 0x12, 0x41, 0x0a, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x2b, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, - 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x43, 0x75, 0x73, 0x74, - 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x05, - 0x72, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x52, 0x0a, 0x08, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x65, - 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, - 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, - 0x74, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, - 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, - 0x08, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x65, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x75, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x75, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x1a, 0x55, 0x0a, 0x0f, 0x41, 0x74, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, - 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2c, - 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, - 0x22, 0x1e, 0x0a, 0x1c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, - 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x75, 0x0a, 0x21, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, - 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x04, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x10, 0x00, 0x52, 0x02, 0x69, 0x64, 0x12, 0x20, 0x0a, - 0x0b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, - 0x16, 0x0a, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x24, 0x0a, 0x22, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x45, - 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x57, 0x0a, - 0x1b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, - 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x10, 0x00, - 0x52, 0x02, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x47, 0x72, - 0x6f, 0x75, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x65, 0x6e, 0x61, 0x6e, - 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x60, 0x0a, 0x1c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x40, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x6d, 0x73, 0x70, 0x2e, - 0x61, 0x70, 0x6d, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x44, 0x61, - 0x74, 0x61, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x2e, 0x0a, 0x18, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, - 0x44, 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x3e, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x41, - 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x41, 0x74, 0x74, 0x72, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x65, 0x6e, - 0x61, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x5b, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x41, - 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x41, 0x74, 0x74, 0x72, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, - 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, - 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x41, 0x74, 0x74, 0x72, 0x52, - 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x8c, 0x02, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, - 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x20, 0x0a, 0x0b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x47, 0x72, 0x6f, - 0x75, 0x70, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x47, 0x72, 0x6f, - 0x75, 0x70, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, - 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x53, 0x74, 0x61, - 0x74, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, - 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x54, 0x79, 0x70, 0x65, - 0x12, 0x20, 0x0a, 0x0b, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, - 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x53, 0x74, 0x61, - 0x74, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x49, 0x64, 0x18, - 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x49, 0x64, - 0x12, 0x16, 0x0a, 0x06, 0x70, 0x61, 0x67, 0x65, 0x4e, 0x6f, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x06, 0x70, 0x61, 0x67, 0x65, 0x4e, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, - 0x53, 0x69, 0x7a, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, - 0x53, 0x69, 0x7a, 0x65, 0x22, 0x56, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, - 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x3b, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, - 0x65, 0x72, 0x64, 0x61, 0x2e, 0x6d, 0x73, 0x70, 0x2e, 0x61, 0x70, 0x6d, 0x2e, 0x61, 0x6c, 0x65, - 0x72, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, - 0x64, 0x73, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x65, 0x0a, 0x13, - 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x44, - 0x61, 0x74, 0x61, 0x12, 0x38, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x24, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, - 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x41, 0x6c, 0x65, 0x72, - 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x14, 0x0a, - 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, - 0x74, 0x61, 0x6c, 0x22, 0x53, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, - 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, - 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, - 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x65, 0x6e, - 0x61, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x52, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x41, - 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x38, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x24, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, + 0x70, 0x22, 0x60, 0x0a, 0x1c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, + 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x40, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x2c, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x6d, 0x73, 0x70, 0x2e, 0x61, 0x70, 0x6d, 0x2e, 0x61, + 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, + 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x64, + 0x61, 0x74, 0x61, 0x22, 0x2e, 0x0a, 0x18, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x75, 0x73, + 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, + 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x22, 0x3e, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, + 0x65, 0x63, 0x6f, 0x72, 0x64, 0x41, 0x74, 0x74, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x22, 0x5b, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, + 0x65, 0x63, 0x6f, 0x72, 0x64, 0x41, 0x74, 0x74, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x28, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x41, 0x6c, 0x65, 0x72, 0x74, - 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x94, 0x01, 0x0a, - 0x18, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x69, - 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x67, 0x72, 0x6f, - 0x75, 0x70, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, - 0x70, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x47, 0x72, 0x6f, - 0x75, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x65, - 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x12, 0x14, 0x0a, - 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x6c, 0x69, - 0x6d, 0x69, 0x74, 0x22, 0x56, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x48, - 0x69, 0x73, 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x39, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, - 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, - 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x48, 0x69, - 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xfd, 0x01, 0x0a, 0x1d, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, - 0x64, 0x49, 0x73, 0x73, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, - 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x74, 0x65, 0x6e, 0x61, 0x6e, - 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x65, - 0x6e, 0x61, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x4f, 0x0a, 0x04, 0x62, 0x6f, 0x64, - 0x79, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x6d, - 0x73, 0x70, 0x2e, 0x61, 0x70, 0x6d, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x49, 0x73, - 0x73, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x42, 0x6f, 0x64, 0x79, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x1a, 0x4f, 0x0a, 0x09, 0x42, 0x6f, - 0x64, 0x79, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2c, 0x0a, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x20, 0x0a, 0x1e, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, - 0x49, 0x73, 0x73, 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xfd, 0x01, - 0x0a, 0x1d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, - 0x6f, 0x72, 0x64, 0x49, 0x73, 0x73, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x18, 0x0a, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x74, 0x65, 0x6e, - 0x61, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, - 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x4f, 0x0a, 0x04, 0x62, - 0x6f, 0x64, 0x79, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x65, 0x72, 0x64, 0x61, - 0x2e, 0x6d, 0x73, 0x70, 0x2e, 0x61, 0x70, 0x6d, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, - 0x49, 0x73, 0x73, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x42, 0x6f, 0x64, - 0x79, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x1a, 0x4f, 0x0a, 0x09, - 0x42, 0x6f, 0x64, 0x79, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2c, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x20, 0x0a, - 0x1e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, - 0x72, 0x64, 0x49, 0x73, 0x73, 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x86, 0x05, 0x0a, 0x17, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x50, 0x72, 0x65, - 0x76, 0x69, 0x65, 0x77, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x74, + 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x41, 0x74, 0x74, 0x72, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, + 0x22, 0x8c, 0x02, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, + 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x0e, 0x0a, - 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x20, 0x0a, - 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x54, 0x79, 0x70, 0x65, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x54, 0x79, 0x70, - 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x53, 0x63, 0x6f, 0x70, - 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x49, - 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x53, 0x63, - 0x6f, 0x70, 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x5b, 0x0a, - 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x3b, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x6d, 0x73, 0x70, 0x2e, 0x61, 0x70, 0x6d, - 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, - 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x41, - 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, - 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x41, 0x0a, 0x05, 0x72, 0x75, - 0x6c, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x65, 0x72, 0x64, 0x61, + 0x52, 0x0b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x1e, 0x0a, + 0x0a, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x09, 0x52, 0x0a, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x1e, 0x0a, + 0x0a, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x09, 0x52, 0x0a, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x0a, + 0x09, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x09, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x68, + 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x0b, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x0a, + 0x09, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x49, 0x64, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x09, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x70, + 0x61, 0x67, 0x65, 0x4e, 0x6f, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x70, 0x61, 0x67, + 0x65, 0x4e, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x22, + 0x56, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, + 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x04, 0x64, 0x61, + 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, + 0x6d, 0x73, 0x70, 0x2e, 0x61, 0x70, 0x6d, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x47, 0x65, + 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x44, 0x61, 0x74, + 0x61, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x65, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x41, 0x6c, + 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x44, 0x61, 0x74, 0x61, 0x12, 0x38, + 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x65, + 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, + 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, + 0x72, 0x64, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, + 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x22, 0x53, + 0x0a, 0x15, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, + 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, + 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x22, 0x52, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, + 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, + 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x65, 0x72, + 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, + 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, + 0x64, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x94, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x41, + 0x6c, 0x65, 0x72, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x20, + 0x0a, 0x0b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, + 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, + 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0x56, + 0x0a, 0x19, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, + 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x39, 0x0a, 0x04, 0x64, + 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, - 0x65, 0x72, 0x74, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, - 0x72, 0x74, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x52, 0x0a, - 0x08, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x36, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, - 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, - 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x54, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x08, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x65, - 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, - 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, - 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, - 0x0d, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, - 0x65, 0x1a, 0x55, 0x0a, 0x0f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, + 0x65, 0x72, 0x74, 0x2e, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, + 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xfd, 0x01, 0x0a, 0x1d, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x49, 0x73, 0x73, 0x75, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x67, 0x72, 0x6f, 0x75, + 0x70, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, + 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x47, + 0x72, 0x6f, 0x75, 0x70, 0x12, 0x4f, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x03, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x6d, 0x73, 0x70, 0x2e, 0x61, 0x70, + 0x6d, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x6c, + 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x49, 0x73, 0x73, 0x75, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x42, 0x6f, 0x64, 0x79, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, + 0x04, 0x62, 0x6f, 0x64, 0x79, 0x1a, 0x4f, 0x0a, 0x09, 0x42, 0x6f, 0x64, 0x79, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x20, 0x0a, 0x1e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x49, 0x73, 0x73, 0x75, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xfd, 0x01, 0x0a, 0x1d, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x49, 0x73, + 0x73, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x67, 0x72, + 0x6f, 0x75, 0x70, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x72, 0x6f, + 0x75, 0x70, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x65, 0x6e, 0x61, 0x6e, + 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x4f, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x03, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x6d, 0x73, 0x70, 0x2e, + 0x61, 0x70, 0x6d, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x49, 0x73, 0x73, 0x75, 0x65, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x42, 0x6f, 0x64, 0x79, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x1a, 0x4f, 0x0a, 0x09, 0x42, 0x6f, 0x64, 0x79, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x4d, 0x0a, 0x18, 0x44, 0x61, 0x73, 0x68, - 0x62, 0x6f, 0x61, 0x72, 0x64, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x31, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, - 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x56, 0x69, 0x65, - 0x77, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x32, 0xcb, 0x1d, 0x0a, 0x0c, 0x41, 0x6c, 0x65, 0x72, - 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x97, 0x01, 0x0a, 0x0e, 0x51, 0x75, 0x65, - 0x72, 0x79, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x29, 0x2e, 0x65, 0x72, - 0x64, 0x61, 0x2e, 0x6d, 0x73, 0x70, 0x2e, 0x61, 0x70, 0x6d, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, - 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x75, 0x6c, 0x65, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x6d, 0x73, - 0x70, 0x2e, 0x61, 0x70, 0x6d, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, - 0x79, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x28, 0x12, 0x26, 0x2f, 0x61, 0x70, 0x69, - 0x2f, 0x6d, 0x73, 0x70, 0x2f, 0x61, 0x70, 0x6d, 0x2f, 0x7b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x7d, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2d, 0x72, 0x75, 0x6c, - 0x65, 0x73, 0x12, 0x86, 0x01, 0x0a, 0x0a, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x6c, 0x65, 0x72, - 0x74, 0x12, 0x25, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x6d, 0x73, 0x70, 0x2e, 0x61, 0x70, 0x6d, - 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x6c, 0x65, 0x72, - 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, - 0x6d, 0x73, 0x70, 0x2e, 0x61, 0x70, 0x6d, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x51, 0x75, - 0x65, 0x72, 0x79, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x29, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x23, 0x12, 0x21, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6d, - 0x73, 0x70, 0x2f, 0x61, 0x70, 0x6d, 0x2f, 0x7b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x47, 0x72, - 0x6f, 0x75, 0x70, 0x7d, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x12, 0x85, 0x01, 0x0a, 0x08, - 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x12, 0x23, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, - 0x6d, 0x73, 0x70, 0x2e, 0x61, 0x70, 0x6d, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x47, 0x65, - 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, + 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x20, 0x0a, 0x1e, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x49, 0x73, 0x73, + 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x86, 0x05, 0x0a, 0x17, 0x44, + 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x65, 0x6e, + 0x61, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, + 0x0a, 0x09, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0a, + 0x61, 0x6c, 0x65, 0x72, 0x74, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0a, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x22, 0x0a, 0x0c, + 0x61, 0x6c, 0x65, 0x72, 0x74, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x49, 0x64, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0c, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x49, 0x64, + 0x12, 0x16, 0x0a, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x5b, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x65, + 0x72, 0x64, 0x61, 0x2e, 0x6d, 0x73, 0x70, 0x2e, 0x61, 0x70, 0x6d, 0x2e, 0x61, 0x6c, 0x65, 0x72, + 0x74, 0x2e, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x50, 0x72, 0x65, 0x76, 0x69, + 0x65, 0x77, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x41, 0x0a, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x0a, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, + 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x43, + 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x75, 0x6c, + 0x65, 0x52, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x52, 0x0a, 0x08, 0x6e, 0x6f, 0x74, 0x69, + 0x66, 0x69, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x65, 0x72, 0x64, + 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, + 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, + 0x65, 0x72, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x73, 0x52, 0x08, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x65, 0x73, 0x12, 0x1e, 0x0a, 0x0a, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, + 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x1a, 0x55, 0x0a, 0x0f, + 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, + 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, + 0x79, 0x12, 0x2c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, + 0x02, 0x38, 0x01, 0x22, 0x4d, 0x0a, 0x18, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, + 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x31, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, + 0x65, 0x72, 0x64, 0x61, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, + 0x72, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x56, 0x69, 0x65, 0x77, 0x52, 0x04, 0x64, 0x61, + 0x74, 0x61, 0x22, 0x39, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x43, 0x6f, + 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x1c, 0x0a, 0x09, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x54, 0x79, 0x70, 0x65, 0x22, 0x5b, 0x0a, + 0x1a, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x04, 0x64, + 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x65, 0x72, 0x64, 0x61, + 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, + 0x65, 0x72, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0a, + 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xeb, 0x01, 0x0a, 0x1e, 0x47, + 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, + 0x09, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x59, 0x0a, 0x07, 0x66, + 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x65, + 0x72, 0x64, 0x61, 0x2e, 0x6d, 0x73, 0x70, 0x2e, 0x61, 0x70, 0x6d, 0x2e, 0x61, 0x6c, 0x65, 0x72, + 0x74, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x66, + 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x1a, 0x3a, 0x0a, 0x0c, + 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, + 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x64, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x41, + 0x6c, 0x65, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, 0x04, 0x64, + 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x65, 0x72, 0x64, 0x61, + 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x61, 0x6c, + 0x65, 0x72, 0x74, 0x2e, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x32, 0xe2, + 0x20, 0x0a, 0x0c, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, + 0x97, 0x01, 0x0a, 0x0e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x75, + 0x6c, 0x65, 0x12, 0x29, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x6d, 0x73, 0x70, 0x2e, 0x61, 0x70, + 0x6d, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x6c, 0x65, + 0x72, 0x74, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x6d, 0x73, 0x70, 0x2e, 0x61, 0x70, 0x6d, 0x2e, 0x61, 0x6c, 0x65, - 0x72, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x28, 0x12, 0x26, 0x2f, 0x61, 0x70, - 0x69, 0x2f, 0x6d, 0x73, 0x70, 0x2f, 0x61, 0x70, 0x6d, 0x2f, 0x7b, 0x74, 0x65, 0x6e, 0x61, 0x6e, - 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x7d, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x2f, 0x7b, - 0x69, 0x64, 0x7d, 0x12, 0x89, 0x01, 0x0a, 0x0b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x6c, - 0x65, 0x72, 0x74, 0x12, 0x26, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x6d, 0x73, 0x70, 0x2e, 0x61, - 0x70, 0x6d, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, - 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x65, 0x72, - 0x64, 0x61, 0x2e, 0x6d, 0x73, 0x70, 0x2e, 0x61, 0x70, 0x6d, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, - 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x29, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x23, 0x22, 0x21, 0x2f, 0x61, - 0x70, 0x69, 0x2f, 0x6d, 0x73, 0x70, 0x2f, 0x61, 0x70, 0x6d, 0x2f, 0x7b, 0x74, 0x65, 0x6e, 0x61, - 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x7d, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x12, - 0x8e, 0x01, 0x0a, 0x0b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x12, + 0x72, 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x75, 0x6c, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x28, 0x12, 0x26, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x73, 0x70, 0x2f, 0x61, 0x70, 0x6d, 0x2f, + 0x7b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x7d, 0x2f, 0x61, 0x6c, + 0x65, 0x72, 0x74, 0x2d, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x86, 0x01, 0x0a, 0x0a, 0x51, 0x75, + 0x65, 0x72, 0x79, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x12, 0x25, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, + 0x6d, 0x73, 0x70, 0x2e, 0x61, 0x70, 0x6d, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x51, 0x75, + 0x65, 0x72, 0x79, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x6d, 0x73, 0x70, 0x2e, 0x61, 0x70, 0x6d, 0x2e, 0x61, - 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x6d, - 0x73, 0x70, 0x2e, 0x61, 0x70, 0x6d, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x28, 0x1a, 0x26, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6d, - 0x73, 0x70, 0x2f, 0x61, 0x70, 0x6d, 0x2f, 0x7b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x47, 0x72, - 0x6f, 0x75, 0x70, 0x7d, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, - 0x12, 0xa7, 0x01, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, - 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x2c, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x6d, 0x73, - 0x70, 0x2e, 0x61, 0x70, 0x6d, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x6d, 0x73, 0x70, 0x2e, - 0x61, 0x70, 0x6d, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x41, 0x6c, 0x65, 0x72, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x35, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2f, 0x1a, 0x2d, 0x2f, 0x61, 0x70, - 0x69, 0x2f, 0x6d, 0x73, 0x70, 0x2f, 0x61, 0x70, 0x6d, 0x2f, 0x7b, 0x74, 0x65, 0x6e, 0x61, 0x6e, - 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x7d, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x2f, 0x7b, - 0x69, 0x64, 0x7d, 0x2f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x8e, 0x01, 0x0a, 0x0b, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x12, 0x26, 0x2e, 0x65, 0x72, 0x64, + 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x29, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x23, 0x12, + 0x21, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x73, 0x70, 0x2f, 0x61, 0x70, 0x6d, 0x2f, 0x7b, 0x74, + 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x7d, 0x2f, 0x61, 0x6c, 0x65, 0x72, + 0x74, 0x73, 0x12, 0x85, 0x01, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x12, + 0x23, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x6d, 0x73, 0x70, 0x2e, 0x61, 0x70, 0x6d, 0x2e, 0x61, + 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x6d, 0x73, 0x70, 0x2e, + 0x61, 0x70, 0x6d, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, + 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2e, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x28, 0x12, 0x26, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x73, 0x70, 0x2f, 0x61, 0x70, 0x6d, + 0x2f, 0x7b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x7d, 0x2f, 0x61, + 0x6c, 0x65, 0x72, 0x74, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0x89, 0x01, 0x0a, 0x0b, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x12, 0x26, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x6d, 0x73, 0x70, 0x2e, 0x61, 0x70, 0x6d, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x6d, 0x73, 0x70, 0x2e, 0x61, 0x70, - 0x6d, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6c, - 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2e, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x28, 0x2a, 0x26, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x73, 0x70, 0x2f, 0x61, 0x70, + 0x6d, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x6c, + 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x29, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x23, 0x22, 0x21, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x73, 0x70, 0x2f, 0x61, 0x70, 0x6d, 0x2f, 0x7b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x7d, 0x2f, - 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0xb3, 0x01, 0x0a, 0x14, - 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x4d, 0x65, - 0x74, 0x72, 0x69, 0x63, 0x12, 0x2f, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x6d, 0x73, 0x70, 0x2e, - 0x61, 0x70, 0x6d, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, - 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x6d, 0x73, 0x70, - 0x2e, 0x61, 0x70, 0x6d, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, - 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x38, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x32, 0x12, - 0x30, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x73, 0x70, 0x2f, 0x61, 0x70, 0x6d, 0x2f, 0x7b, 0x74, - 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x7d, 0x2f, 0x63, 0x75, 0x73, 0x74, - 0x6f, 0x6d, 0x2d, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x2f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, - 0x73, 0x12, 0xce, 0x01, 0x0a, 0x1a, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x75, 0x73, 0x74, 0x6f, - 0x6d, 0x69, 0x7a, 0x65, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, - 0x12, 0x35, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x6d, 0x73, 0x70, 0x2e, 0x61, 0x70, 0x6d, 0x2e, - 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x75, 0x73, 0x74, 0x6f, - 0x6d, 0x69, 0x7a, 0x65, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x6d, - 0x73, 0x70, 0x2e, 0x61, 0x70, 0x6d, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x51, 0x75, 0x65, - 0x72, 0x79, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x4e, 0x6f, 0x74, 0x69, 0x66, - 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x41, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3b, 0x12, 0x39, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x73, - 0x70, 0x2f, 0x61, 0x70, 0x6d, 0x2f, 0x7b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x47, 0x72, 0x6f, - 0x75, 0x70, 0x7d, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x2d, 0x61, 0x6c, 0x65, 0x72, 0x74, - 0x73, 0x2f, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x65, 0x73, 0x2f, 0x74, 0x61, 0x72, 0x67, 0x65, - 0x74, 0x73, 0x12, 0xab, 0x01, 0x0a, 0x14, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x75, 0x73, 0x74, - 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x12, 0x2f, 0x2e, 0x65, 0x72, + 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x12, 0x8e, 0x01, 0x0a, 0x0b, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x12, 0x26, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x6d, 0x73, + 0x70, 0x2e, 0x61, 0x70, 0x6d, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, + 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x6d, 0x73, 0x70, 0x2e, 0x61, 0x70, 0x6d, 0x2e, 0x61, 0x6c, + 0x65, 0x72, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x28, 0x1a, + 0x26, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x73, 0x70, 0x2f, 0x61, 0x70, 0x6d, 0x2f, 0x7b, 0x74, + 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x7d, 0x2f, 0x61, 0x6c, 0x65, 0x72, + 0x74, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0xa7, 0x01, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x2c, 0x2e, + 0x65, 0x72, 0x64, 0x61, 0x2e, 0x6d, 0x73, 0x70, 0x2e, 0x61, 0x70, 0x6d, 0x2e, 0x61, 0x6c, 0x65, + 0x72, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x45, 0x6e, + 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x6d, 0x73, 0x70, 0x2e, 0x61, 0x70, 0x6d, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, - 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, - 0x6c, 0x65, 0x72, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x65, + 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x45, 0x6e, 0x61, 0x62, + 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x35, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x2f, 0x1a, 0x2d, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x73, 0x70, 0x2f, 0x61, 0x70, 0x6d, + 0x2f, 0x7b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x7d, 0x2f, 0x61, + 0x6c, 0x65, 0x72, 0x74, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x2f, 0x73, 0x77, 0x69, 0x74, 0x63, + 0x68, 0x12, 0x8e, 0x01, 0x0a, 0x0b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, + 0x74, 0x12, 0x26, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x6d, 0x73, 0x70, 0x2e, 0x61, 0x70, 0x6d, + 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6c, 0x65, + 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x65, 0x72, 0x64, 0x61, + 0x2e, 0x6d, 0x73, 0x70, 0x2e, 0x61, 0x70, 0x6d, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x28, 0x2a, 0x26, 0x2f, 0x61, 0x70, 0x69, + 0x2f, 0x6d, 0x73, 0x70, 0x2f, 0x61, 0x70, 0x6d, 0x2f, 0x7b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x7d, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x2f, 0x7b, 0x69, + 0x64, 0x7d, 0x12, 0xb3, 0x01, 0x0a, 0x14, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x75, 0x73, 0x74, + 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x2f, 0x2e, 0x65, 0x72, + 0x64, 0x61, 0x2e, 0x6d, 0x73, 0x70, 0x2e, 0x61, 0x70, 0x6d, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, + 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x4d, + 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x6d, 0x73, 0x70, 0x2e, 0x61, 0x70, 0x6d, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, - 0x41, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x30, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x12, 0x28, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x73, 0x70, + 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x38, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x32, 0x12, 0x30, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x73, 0x70, 0x2f, 0x61, 0x70, 0x6d, 0x2f, 0x7b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x7d, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x2d, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, - 0x12, 0xa7, 0x01, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, - 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x12, 0x2c, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x6d, 0x73, - 0x70, 0x2e, 0x61, 0x70, 0x6d, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x43, - 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x6d, 0x73, 0x70, 0x2e, - 0x61, 0x70, 0x6d, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x75, 0x73, - 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x35, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2f, 0x12, 0x2d, 0x2f, 0x61, 0x70, - 0x69, 0x2f, 0x6d, 0x73, 0x70, 0x2f, 0x61, 0x70, 0x6d, 0x2f, 0x7b, 0x74, 0x65, 0x6e, 0x61, 0x6e, - 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x7d, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x2d, 0x61, - 0x6c, 0x65, 0x72, 0x74, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0xab, 0x01, 0x0a, 0x14, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, - 0x65, 0x72, 0x74, 0x12, 0x2f, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x6d, 0x73, 0x70, 0x2e, 0x61, - 0x70, 0x6d, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, - 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x6d, 0x73, 0x70, 0x2e, - 0x61, 0x70, 0x6d, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x30, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x22, 0x28, + 0x2f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0xce, 0x01, 0x0a, 0x1a, 0x51, 0x75, 0x65, + 0x72, 0x79, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x4e, 0x6f, 0x74, 0x69, 0x66, + 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x35, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x6d, + 0x73, 0x70, 0x2e, 0x61, 0x70, 0x6d, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x51, 0x75, 0x65, + 0x72, 0x79, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x4e, 0x6f, 0x74, 0x69, 0x66, + 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, + 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x6d, 0x73, 0x70, 0x2e, 0x61, 0x70, 0x6d, 0x2e, 0x61, 0x6c, + 0x65, 0x72, 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, + 0x7a, 0x65, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x41, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3b, 0x12, 0x39, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x73, 0x70, 0x2f, 0x61, 0x70, 0x6d, 0x2f, 0x7b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x7d, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, - 0x6d, 0x2d, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x12, 0xb0, 0x01, 0x0a, 0x14, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, - 0x74, 0x12, 0x2f, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x6d, 0x73, 0x70, 0x2e, 0x61, 0x70, 0x6d, - 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x75, 0x73, - 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x6d, 0x73, 0x70, 0x2e, 0x61, 0x70, - 0x6d, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x75, - 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x35, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2f, 0x1a, 0x2d, 0x2f, 0x61, - 0x70, 0x69, 0x2f, 0x6d, 0x73, 0x70, 0x2f, 0x61, 0x70, 0x6d, 0x2f, 0x7b, 0x74, 0x65, 0x6e, 0x61, - 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x7d, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x2d, - 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0xc9, 0x01, 0x0a, 0x1a, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, - 0x6c, 0x65, 0x72, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x35, 0x2e, 0x65, 0x72, 0x64, + 0x6d, 0x2d, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x2f, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x65, + 0x73, 0x2f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x12, 0xab, 0x01, 0x0a, 0x14, 0x51, 0x75, + 0x65, 0x72, 0x79, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, + 0x74, 0x73, 0x12, 0x2f, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x6d, 0x73, 0x70, 0x2e, 0x61, 0x70, + 0x6d, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x75, 0x73, + 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x6d, 0x73, 0x70, 0x2e, 0x61, + 0x70, 0x6d, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x75, + 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x30, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x12, 0x28, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x73, 0x70, 0x2f, 0x61, 0x70, 0x6d, 0x2f, 0x7b, 0x74, 0x65, 0x6e, + 0x61, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x7d, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, + 0x2d, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x12, 0xa7, 0x01, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x43, + 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x12, 0x2c, 0x2e, + 0x65, 0x72, 0x64, 0x61, 0x2e, 0x6d, 0x73, 0x70, 0x2e, 0x61, 0x70, 0x6d, 0x2e, 0x61, 0x6c, 0x65, + 0x72, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, + 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x65, 0x72, + 0x64, 0x61, 0x2e, 0x6d, 0x73, 0x70, 0x2e, 0x61, 0x70, 0x6d, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, + 0x2e, 0x47, 0x65, 0x74, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, + 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x35, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x2f, 0x12, 0x2d, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x73, 0x70, 0x2f, 0x61, 0x70, 0x6d, + 0x2f, 0x7b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x7d, 0x2f, 0x63, + 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x2d, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x2f, 0x7b, 0x69, 0x64, + 0x7d, 0x12, 0xab, 0x01, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x75, 0x73, 0x74, + 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x12, 0x2f, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x6d, 0x73, 0x70, 0x2e, 0x61, 0x70, 0x6d, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, - 0x6c, 0x65, 0x72, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x36, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x6d, 0x73, 0x70, 0x2e, 0x61, 0x70, 0x6d, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, + 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x65, 0x72, + 0x64, 0x61, 0x2e, 0x6d, 0x73, 0x70, 0x2e, 0x61, 0x70, 0x6d, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, + 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, + 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x30, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x22, 0x28, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x73, 0x70, 0x2f, + 0x61, 0x70, 0x6d, 0x2f, 0x7b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, + 0x7d, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x2d, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x12, + 0xb0, 0x01, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, + 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x12, 0x2f, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, + 0x6d, 0x73, 0x70, 0x2e, 0x61, 0x70, 0x6d, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, + 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x65, 0x72, 0x64, 0x61, + 0x2e, 0x6d, 0x73, 0x70, 0x2e, 0x61, 0x70, 0x6d, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, + 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x35, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x2f, 0x1a, 0x2d, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x73, 0x70, 0x2f, 0x61, 0x70, + 0x6d, 0x2f, 0x7b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x7d, 0x2f, + 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x2d, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x2f, 0x7b, 0x69, + 0x64, 0x7d, 0x12, 0xc9, 0x01, 0x0a, 0x1a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x75, 0x73, + 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, + 0x65, 0x12, 0x35, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x6d, 0x73, 0x70, 0x2e, 0x61, 0x70, 0x6d, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3c, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x36, 0x1a, 0x34, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x73, 0x70, 0x2f, 0x61, 0x70, 0x6d, 0x2f, - 0x7b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x7d, 0x2f, 0x63, 0x75, - 0x73, 0x74, 0x6f, 0x6d, 0x2d, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, - 0x2f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0xb0, 0x01, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, - 0x12, 0x2f, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x6d, 0x73, 0x70, 0x2e, 0x61, 0x70, 0x6d, 0x2e, - 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x75, 0x73, 0x74, - 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x30, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x6d, 0x73, 0x70, 0x2e, 0x61, 0x70, 0x6d, - 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x75, 0x73, - 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x35, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2f, 0x2a, 0x2d, 0x2f, 0x61, 0x70, - 0x69, 0x2f, 0x6d, 0x73, 0x70, 0x2f, 0x61, 0x70, 0x6d, 0x2f, 0x7b, 0x74, 0x65, 0x6e, 0x61, 0x6e, - 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x7d, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x2d, 0x61, - 0x6c, 0x65, 0x72, 0x74, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0xad, 0x01, 0x0a, 0x13, 0x47, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, + 0x6d, 0x73, 0x70, 0x2e, 0x61, 0x70, 0x6d, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, + 0x72, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x3c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x36, 0x1a, 0x34, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6d, + 0x73, 0x70, 0x2f, 0x61, 0x70, 0x6d, 0x2f, 0x7b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x7d, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x2d, 0x61, 0x6c, 0x65, 0x72, + 0x74, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x2f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0xb0, + 0x01, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, + 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x12, 0x2f, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x6d, + 0x73, 0x70, 0x2e, 0x61, 0x70, 0x6d, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, 0x72, + 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, + 0x6d, 0x73, 0x70, 0x2e, 0x61, 0x70, 0x6d, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x65, + 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x35, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x2f, 0x2a, 0x2d, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x73, 0x70, 0x2f, 0x61, 0x70, 0x6d, + 0x2f, 0x7b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x7d, 0x2f, 0x63, + 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x2d, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x2f, 0x7b, 0x69, 0x64, + 0x7d, 0x12, 0xad, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, + 0x63, 0x6f, 0x72, 0x64, 0x41, 0x74, 0x74, 0x72, 0x73, 0x12, 0x2e, 0x2e, 0x65, 0x72, 0x64, 0x61, + 0x2e, 0x6d, 0x73, 0x70, 0x2e, 0x61, 0x70, 0x6d, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x41, 0x74, 0x74, - 0x72, 0x73, 0x12, 0x2e, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x6d, 0x73, 0x70, 0x2e, 0x61, 0x70, - 0x6d, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, - 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x41, 0x74, 0x74, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x6d, 0x73, 0x70, 0x2e, 0x61, 0x70, - 0x6d, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, - 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x41, 0x74, 0x74, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x35, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2f, 0x12, 0x2d, 0x2f, 0x61, 0x70, - 0x69, 0x2f, 0x6d, 0x73, 0x70, 0x2f, 0x61, 0x70, 0x6d, 0x2f, 0x7b, 0x74, 0x65, 0x6e, 0x61, 0x6e, - 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x7d, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2d, 0x72, 0x65, - 0x63, 0x6f, 0x72, 0x64, 0x2d, 0x61, 0x74, 0x74, 0x72, 0x73, 0x12, 0x9c, 0x01, 0x0a, 0x0f, 0x47, - 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x12, 0x2a, - 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x6d, 0x73, 0x70, 0x2e, 0x61, 0x70, 0x6d, 0x2e, 0x61, 0x6c, - 0x65, 0x72, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, - 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x65, 0x72, 0x64, - 0x61, 0x2e, 0x6d, 0x73, 0x70, 0x2e, 0x61, 0x70, 0x6d, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, - 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x30, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x12, - 0x28, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x73, 0x70, 0x2f, 0x61, 0x70, 0x6d, 0x2f, 0x7b, 0x74, - 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x7d, 0x2f, 0x61, 0x6c, 0x65, 0x72, - 0x74, 0x2d, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x12, 0xa3, 0x01, 0x0a, 0x0e, 0x47, 0x65, - 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x29, 0x2e, 0x65, - 0x72, 0x64, 0x61, 0x2e, 0x6d, 0x73, 0x70, 0x2e, 0x61, 0x70, 0x6d, 0x2e, 0x61, 0x6c, 0x65, 0x72, - 0x74, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x6d, - 0x73, 0x70, 0x2e, 0x61, 0x70, 0x6d, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x47, 0x65, 0x74, - 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x3a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x34, 0x12, 0x32, 0x2f, 0x61, 0x70, - 0x69, 0x2f, 0x6d, 0x73, 0x70, 0x2f, 0x61, 0x70, 0x6d, 0x2f, 0x7b, 0x74, 0x65, 0x6e, 0x61, 0x6e, - 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x7d, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2d, 0x72, 0x65, - 0x63, 0x6f, 0x72, 0x64, 0x73, 0x2f, 0x7b, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x7d, 0x12, - 0xb6, 0x01, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x48, 0x69, 0x73, 0x74, - 0x6f, 0x72, 0x69, 0x65, 0x73, 0x12, 0x2c, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x6d, 0x73, 0x70, + 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x65, 0x72, 0x64, 0x61, + 0x2e, 0x6d, 0x73, 0x70, 0x2e, 0x61, 0x70, 0x6d, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x47, + 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x41, 0x74, 0x74, + 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x35, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x2f, 0x12, 0x2d, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x73, 0x70, 0x2f, 0x61, 0x70, 0x6d, + 0x2f, 0x7b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x7d, 0x2f, 0x61, + 0x6c, 0x65, 0x72, 0x74, 0x2d, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x2d, 0x61, 0x74, 0x74, 0x72, + 0x73, 0x12, 0x9c, 0x01, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, + 0x63, 0x6f, 0x72, 0x64, 0x73, 0x12, 0x2a, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x6d, 0x73, 0x70, 0x2e, 0x61, 0x70, 0x6d, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, - 0x65, 0x72, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x6d, 0x73, 0x70, 0x2e, 0x61, + 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x2b, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x6d, 0x73, 0x70, 0x2e, 0x61, 0x70, 0x6d, + 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, + 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x30, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x12, 0x28, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x73, 0x70, + 0x2f, 0x61, 0x70, 0x6d, 0x2f, 0x7b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x7d, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2d, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, + 0x12, 0xa3, 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, + 0x6f, 0x72, 0x64, 0x12, 0x29, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x6d, 0x73, 0x70, 0x2e, 0x61, 0x70, 0x6d, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, - 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x44, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3e, 0x12, 0x3c, 0x2f, 0x61, 0x70, 0x69, - 0x2f, 0x6d, 0x73, 0x70, 0x2f, 0x61, 0x70, 0x6d, 0x2f, 0x7b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x7d, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2d, 0x72, 0x65, 0x63, - 0x6f, 0x72, 0x64, 0x73, 0x2f, 0x7b, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x7d, 0x2f, 0x68, - 0x69, 0x73, 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x12, 0xc2, 0x01, 0x0a, 0x16, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x49, 0x73, - 0x73, 0x75, 0x65, 0x12, 0x31, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x6d, 0x73, 0x70, 0x2e, 0x61, - 0x70, 0x6d, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, - 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x49, 0x73, 0x73, 0x75, 0x65, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x6d, 0x73, - 0x70, 0x2e, 0x61, 0x70, 0x6d, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x49, 0x73, 0x73, - 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x41, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x3b, 0x22, 0x39, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x73, 0x70, 0x2f, 0x61, 0x70, 0x6d, + 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, + 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x6d, 0x73, 0x70, 0x2e, 0x61, 0x70, 0x6d, 0x2e, 0x61, 0x6c, + 0x65, 0x72, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, + 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3a, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x34, 0x12, 0x32, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x73, 0x70, 0x2f, 0x61, 0x70, 0x6d, 0x2f, 0x7b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x7d, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2d, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x2f, 0x7b, 0x67, 0x72, - 0x6f, 0x75, 0x70, 0x49, 0x64, 0x7d, 0x2f, 0x69, 0x73, 0x73, 0x75, 0x65, 0x73, 0x12, 0xc2, 0x01, - 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, - 0x6f, 0x72, 0x64, 0x49, 0x73, 0x73, 0x75, 0x65, 0x12, 0x31, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, - 0x6d, 0x73, 0x70, 0x2e, 0x61, 0x70, 0x6d, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x49, - 0x73, 0x73, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x65, 0x72, + 0x6f, 0x75, 0x70, 0x49, 0x64, 0x7d, 0x12, 0xb6, 0x01, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x41, 0x6c, + 0x65, 0x72, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x12, 0x2c, 0x2e, 0x65, + 0x72, 0x64, 0x61, 0x2e, 0x6d, 0x73, 0x70, 0x2e, 0x61, 0x70, 0x6d, 0x2e, 0x61, 0x6c, 0x65, 0x72, + 0x74, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, + 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x65, 0x72, 0x64, + 0x61, 0x2e, 0x6d, 0x73, 0x70, 0x2e, 0x61, 0x70, 0x6d, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, + 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x69, 0x65, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x44, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x3e, 0x12, 0x3c, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x73, 0x70, 0x2f, 0x61, 0x70, 0x6d, 0x2f, + 0x7b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x7d, 0x2f, 0x61, 0x6c, + 0x65, 0x72, 0x74, 0x2d, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x2f, 0x7b, 0x67, 0x72, 0x6f, + 0x75, 0x70, 0x49, 0x64, 0x7d, 0x2f, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x12, + 0xc2, 0x01, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, + 0x65, 0x63, 0x6f, 0x72, 0x64, 0x49, 0x73, 0x73, 0x75, 0x65, 0x12, 0x31, 0x2e, 0x65, 0x72, 0x64, + 0x61, 0x2e, 0x6d, 0x73, 0x70, 0x2e, 0x61, 0x70, 0x6d, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, + 0x64, 0x49, 0x73, 0x73, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, + 0x65, 0x72, 0x64, 0x61, 0x2e, 0x6d, 0x73, 0x70, 0x2e, 0x61, 0x70, 0x6d, 0x2e, 0x61, 0x6c, 0x65, + 0x72, 0x74, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, + 0x63, 0x6f, 0x72, 0x64, 0x49, 0x73, 0x73, 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x41, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3b, 0x22, 0x39, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x6d, 0x73, 0x70, 0x2f, 0x61, 0x70, 0x6d, 0x2f, 0x7b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x47, + 0x72, 0x6f, 0x75, 0x70, 0x7d, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2d, 0x72, 0x65, 0x63, 0x6f, + 0x72, 0x64, 0x73, 0x2f, 0x7b, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x7d, 0x2f, 0x69, 0x73, + 0x73, 0x75, 0x65, 0x73, 0x12, 0xc2, 0x01, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, + 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x49, 0x73, 0x73, 0x75, 0x65, 0x12, + 0x31, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x6d, 0x73, 0x70, 0x2e, 0x61, 0x70, 0x6d, 0x2e, 0x61, + 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, + 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x49, 0x73, 0x73, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x6d, 0x73, 0x70, 0x2e, 0x61, 0x70, + 0x6d, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x6c, + 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x49, 0x73, 0x73, 0x75, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x41, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3b, 0x1a, 0x39, + 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x73, 0x70, 0x2f, 0x61, 0x70, 0x6d, 0x2f, 0x7b, 0x74, 0x65, + 0x6e, 0x61, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x7d, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, + 0x2d, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x2f, 0x7b, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, + 0x64, 0x7d, 0x2f, 0x69, 0x73, 0x73, 0x75, 0x65, 0x73, 0x12, 0xc0, 0x01, 0x0a, 0x10, 0x44, 0x61, + 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x12, 0x2b, + 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x6d, 0x73, 0x70, 0x2e, 0x61, 0x70, 0x6d, 0x2e, 0x61, 0x6c, + 0x65, 0x72, 0x74, 0x2e, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x50, 0x72, 0x65, + 0x76, 0x69, 0x65, 0x77, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x6d, 0x73, 0x70, 0x2e, 0x61, 0x70, 0x6d, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, - 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x63, 0x6f, - 0x72, 0x64, 0x49, 0x73, 0x73, 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x41, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3b, 0x1a, 0x39, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x73, - 0x70, 0x2f, 0x61, 0x70, 0x6d, 0x2f, 0x7b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x47, 0x72, 0x6f, - 0x75, 0x70, 0x7d, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2d, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, - 0x73, 0x2f, 0x7b, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x7d, 0x2f, 0x69, 0x73, 0x73, 0x75, - 0x65, 0x73, 0x12, 0xc0, 0x01, 0x0a, 0x10, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, - 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x12, 0x2b, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x6d, - 0x73, 0x70, 0x2e, 0x61, 0x70, 0x6d, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x44, 0x61, 0x73, - 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x6d, 0x73, 0x70, 0x2e, - 0x61, 0x70, 0x6d, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, - 0x61, 0x72, 0x64, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x51, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4b, 0x22, 0x49, 0x2f, 0x61, 0x70, 0x69, - 0x2f, 0x6d, 0x73, 0x70, 0x2f, 0x61, 0x70, 0x6d, 0x2f, 0x7b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x7d, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2d, 0x72, 0x65, 0x63, - 0x6f, 0x72, 0x64, 0x73, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x2d, 0x61, 0x6c, 0x65, 0x72, - 0x74, 0x73, 0x2f, 0x64, 0x61, 0x73, 0x68, 0x2d, 0x70, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x2f, - 0x71, 0x75, 0x65, 0x72, 0x79, 0x42, 0x38, 0x5a, 0x36, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, - 0x63, 0x6f, 0x6d, 0x2f, 0x65, 0x72, 0x64, 0x61, 0x2d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x2f, 0x65, 0x72, 0x64, 0x61, 0x2d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2d, 0x67, 0x6f, 0x2f, 0x6d, - 0x73, 0x70, 0x2f, 0x61, 0x70, 0x6d, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2f, 0x70, 0x62, 0x62, - 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x2e, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, + 0x77, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x51, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x4b, 0x22, 0x49, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x73, 0x70, 0x2f, 0x61, 0x70, 0x6d, 0x2f, + 0x7b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x7d, 0x2f, 0x61, 0x6c, + 0x65, 0x72, 0x74, 0x2d, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x2f, 0x63, 0x75, 0x73, 0x74, + 0x6f, 0x6d, 0x2d, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x2f, 0x64, 0x61, 0x73, 0x68, 0x2d, 0x70, + 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x2f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x12, 0xb2, 0x01, 0x0a, + 0x12, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x12, 0x2d, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x6d, 0x73, 0x70, 0x2e, 0x61, + 0x70, 0x6d, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, + 0x74, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x6d, 0x73, 0x70, 0x2e, 0x61, 0x70, + 0x6d, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, + 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x3d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x12, 0x17, 0x2f, 0x61, 0x70, 0x69, + 0x2f, 0x6d, 0x73, 0x70, 0x2f, 0x61, 0x70, 0x6d, 0x2f, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0xfa, 0x81, 0xf9, 0x1b, 0x19, 0x0a, 0x17, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6d, + 0x73, 0x70, 0x2f, 0x61, 0x70, 0x6d, 0x2f, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x12, 0xcd, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x43, 0x6f, + 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x32, 0x2e, + 0x65, 0x72, 0x64, 0x61, 0x2e, 0x6d, 0x73, 0x70, 0x2e, 0x61, 0x70, 0x6d, 0x2e, 0x61, 0x6c, 0x65, + 0x72, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x64, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x33, 0x2e, 0x65, 0x72, 0x64, 0x61, 0x2e, 0x6d, 0x73, 0x70, 0x2e, 0x61, 0x70, 0x6d, + 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x43, + 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x49, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1f, 0x22, 0x1d, + 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x73, 0x70, 0x2f, 0x61, 0x70, 0x6d, 0x2f, 0x63, 0x6f, 0x6e, + 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0xfa, 0x81, 0xf9, + 0x1b, 0x1f, 0x0a, 0x1d, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x73, 0x70, 0x2f, 0x61, 0x70, 0x6d, + 0x2f, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x1a, 0x10, 0xc2, 0xc4, 0xcb, 0x1c, 0x0b, 0x22, 0x03, 0x6d, 0x73, 0x70, 0x32, 0x04, 0x10, + 0x01, 0x20, 0x01, 0x42, 0x38, 0x5a, 0x36, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x65, 0x72, 0x64, 0x61, 0x2d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x2f, 0x65, + 0x72, 0x64, 0x61, 0x2d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2d, 0x67, 0x6f, 0x2f, 0x6d, 0x73, 0x70, + 0x2f, 0x61, 0x70, 0x6d, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2f, 0x70, 0x62, 0x62, 0x06, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -3926,7 +4229,7 @@ func file_apm_alert_proto_rawDescGZIP() []byte { return file_apm_alert_proto_rawDescData } -var file_apm_alert_proto_msgTypes = make([]protoimpl.MessageInfo, 59) +var file_apm_alert_proto_msgTypes = make([]protoimpl.MessageInfo, 64) var file_apm_alert_proto_goTypes = []interface{}{ (*QueryAlertRuleRequest)(nil), // 0: erda.msp.apm.alert.QueryAlertRuleRequest (*QueryAlertRuleResponse)(nil), // 1: erda.msp.apm.alert.QueryAlertRuleResponse @@ -3979,125 +4282,143 @@ var file_apm_alert_proto_goTypes = []interface{}{ (*UpdateAlertRecordIssueResponse)(nil), // 48: erda.msp.apm.alert.UpdateAlertRecordIssueResponse (*DashboardPreviewRequest)(nil), // 49: erda.msp.apm.alert.DashboardPreviewRequest (*DashboardPreviewResponse)(nil), // 50: erda.msp.apm.alert.DashboardPreviewResponse - nil, // 51: erda.msp.apm.alert.ApmAlertData.AttributesEntry - nil, // 52: erda.msp.apm.alert.CreateAlertRequest.AttributesEntry - nil, // 53: erda.msp.apm.alert.UpdateAlertRequest.AttributesEntry - nil, // 54: erda.msp.apm.alert.CreateCustomizeAlertRequest.AttributesEntry - nil, // 55: erda.msp.apm.alert.UpdateCustomizeAlertRequest.AttributesEntry - nil, // 56: erda.msp.apm.alert.CreateAlertRecordIssueRequest.BodyEntry - nil, // 57: erda.msp.apm.alert.UpdateAlertRecordIssueRequest.BodyEntry - nil, // 58: erda.msp.apm.alert.DashboardPreviewRequest.AttributesEntry - (*pb.AlertTypeRuleResp)(nil), // 59: erda.core.monitor.alert.AlertTypeRuleResp - (*pb.AlertExpression)(nil), // 60: erda.core.monitor.alert.AlertExpression - (*pb.AlertNotify)(nil), // 61: erda.core.monitor.alert.AlertNotify - (*pb.CustomizeMetrics)(nil), // 62: erda.core.monitor.alert.CustomizeMetrics - (*pb.QueryCustomizeNotifyTargetData)(nil), // 63: erda.core.monitor.alert.QueryCustomizeNotifyTargetData - (*pb.QueryCustomizeAlertData)(nil), // 64: erda.core.monitor.alert.QueryCustomizeAlertData - (*pb.CustomizeAlertDetail)(nil), // 65: erda.core.monitor.alert.CustomizeAlertDetail - (*pb.CustomizeAlertRule)(nil), // 66: erda.core.monitor.alert.CustomizeAlertRule - (*pb.CustomizeAlertNotifyTemplates)(nil), // 67: erda.core.monitor.alert.CustomizeAlertNotifyTemplates - (*pb.AlertRecordAttr)(nil), // 68: erda.core.monitor.alert.AlertRecordAttr - (*pb.AlertRecord)(nil), // 69: erda.core.monitor.alert.AlertRecord - (*pb.AlertHistory)(nil), // 70: erda.core.monitor.alert.AlertHistory - (*pb.View)(nil), // 71: erda.core.monitor.alert.View - (*structpb.Value)(nil), // 72: google.protobuf.Value + (*GetAlertConditionsRequest)(nil), // 51: erda.msp.apm.alert.GetAlertConditionsRequest + (*GetAlertConditionsResponse)(nil), // 52: erda.msp.apm.alert.GetAlertConditionsResponse + (*GetAlertConditionsValueRequest)(nil), // 53: erda.msp.apm.alert.GetAlertConditionsValueRequest + (*GetAlertConditionsValueResponse)(nil), // 54: erda.msp.apm.alert.GetAlertConditionsValueResponse + nil, // 55: erda.msp.apm.alert.ApmAlertData.AttributesEntry + nil, // 56: erda.msp.apm.alert.CreateAlertRequest.AttributesEntry + nil, // 57: erda.msp.apm.alert.UpdateAlertRequest.AttributesEntry + nil, // 58: erda.msp.apm.alert.CreateCustomizeAlertRequest.AttributesEntry + nil, // 59: erda.msp.apm.alert.UpdateCustomizeAlertRequest.AttributesEntry + nil, // 60: erda.msp.apm.alert.CreateAlertRecordIssueRequest.BodyEntry + nil, // 61: erda.msp.apm.alert.UpdateAlertRecordIssueRequest.BodyEntry + nil, // 62: erda.msp.apm.alert.DashboardPreviewRequest.AttributesEntry + nil, // 63: erda.msp.apm.alert.GetAlertConditionsValueRequest.FiltersEntry + (*pb.AlertTypeRuleResp)(nil), // 64: erda.core.monitor.alert.AlertTypeRuleResp + (*pb.AlertExpression)(nil), // 65: erda.core.monitor.alert.AlertExpression + (*pb.AlertNotify)(nil), // 66: erda.core.monitor.alert.AlertNotify + (*pb.TriggerCondition)(nil), // 67: erda.core.monitor.alert.TriggerCondition + (*pb.CustomizeMetrics)(nil), // 68: erda.core.monitor.alert.CustomizeMetrics + (*pb.QueryCustomizeNotifyTargetData)(nil), // 69: erda.core.monitor.alert.QueryCustomizeNotifyTargetData + (*pb.QueryCustomizeAlertData)(nil), // 70: erda.core.monitor.alert.QueryCustomizeAlertData + (*pb.CustomizeAlertDetail)(nil), // 71: erda.core.monitor.alert.CustomizeAlertDetail + (*pb.CustomizeAlertRule)(nil), // 72: erda.core.monitor.alert.CustomizeAlertRule + (*pb.CustomizeAlertNotifyTemplates)(nil), // 73: erda.core.monitor.alert.CustomizeAlertNotifyTemplates + (*pb.AlertRecordAttr)(nil), // 74: erda.core.monitor.alert.AlertRecordAttr + (*pb.AlertRecord)(nil), // 75: erda.core.monitor.alert.AlertRecord + (*pb.AlertHistory)(nil), // 76: erda.core.monitor.alert.AlertHistory + (*pb.View)(nil), // 77: erda.core.monitor.alert.View + (*pb.Conditions)(nil), // 78: erda.core.monitor.alert.Conditions + (*pb.AlertConditionsValue)(nil), // 79: erda.core.monitor.alert.AlertConditionsValue + (*structpb.Value)(nil), // 80: google.protobuf.Value } var file_apm_alert_proto_depIdxs = []int32{ - 59, // 0: erda.msp.apm.alert.QueryAlertRuleResponse.data:type_name -> erda.core.monitor.alert.AlertTypeRuleResp + 64, // 0: erda.msp.apm.alert.QueryAlertRuleResponse.data:type_name -> erda.core.monitor.alert.AlertTypeRuleResp 4, // 1: erda.msp.apm.alert.QueryAlertResponse.data:type_name -> erda.msp.apm.alert.QueryAlertData 7, // 2: erda.msp.apm.alert.QueryAlertData.list:type_name -> erda.msp.apm.alert.ApmAlertData 7, // 3: erda.msp.apm.alert.GetAlertResponse.data:type_name -> erda.msp.apm.alert.ApmAlertData - 60, // 4: erda.msp.apm.alert.ApmAlertData.rules:type_name -> erda.core.monitor.alert.AlertExpression - 61, // 5: erda.msp.apm.alert.ApmAlertData.notifies:type_name -> erda.core.monitor.alert.AlertNotify - 51, // 6: erda.msp.apm.alert.ApmAlertData.attributes:type_name -> erda.msp.apm.alert.ApmAlertData.AttributesEntry - 60, // 7: erda.msp.apm.alert.CreateAlertRequest.rules:type_name -> erda.core.monitor.alert.AlertExpression - 61, // 8: erda.msp.apm.alert.CreateAlertRequest.notifies:type_name -> erda.core.monitor.alert.AlertNotify - 52, // 9: erda.msp.apm.alert.CreateAlertRequest.attributes:type_name -> erda.msp.apm.alert.CreateAlertRequest.AttributesEntry - 10, // 10: erda.msp.apm.alert.CreateAlertResponse.data:type_name -> erda.msp.apm.alert.CreateAlertData - 60, // 11: erda.msp.apm.alert.UpdateAlertRequest.rules:type_name -> erda.core.monitor.alert.AlertExpression - 61, // 12: erda.msp.apm.alert.UpdateAlertRequest.notifies:type_name -> erda.core.monitor.alert.AlertNotify - 53, // 13: erda.msp.apm.alert.UpdateAlertRequest.attributes:type_name -> erda.msp.apm.alert.UpdateAlertRequest.AttributesEntry - 17, // 14: erda.msp.apm.alert.DeleteAlertResponse.data:type_name -> erda.msp.apm.alert.DeleteAlertData - 62, // 15: erda.msp.apm.alert.QueryCustomizeMetricResponse.data:type_name -> erda.core.monitor.alert.CustomizeMetrics - 63, // 16: erda.msp.apm.alert.QueryCustomizeNotifyTargetResponse.data:type_name -> erda.core.monitor.alert.QueryCustomizeNotifyTargetData - 64, // 17: erda.msp.apm.alert.QueryCustomizeAlertsResponse.data:type_name -> erda.core.monitor.alert.QueryCustomizeAlertData - 65, // 18: erda.msp.apm.alert.GetCustomizeAlertResponse.data:type_name -> erda.core.monitor.alert.CustomizeAlertDetail - 54, // 19: erda.msp.apm.alert.CreateCustomizeAlertRequest.attributes:type_name -> erda.msp.apm.alert.CreateCustomizeAlertRequest.AttributesEntry - 66, // 20: erda.msp.apm.alert.CreateCustomizeAlertRequest.rules:type_name -> erda.core.monitor.alert.CustomizeAlertRule - 67, // 21: erda.msp.apm.alert.CreateCustomizeAlertRequest.notifies:type_name -> erda.core.monitor.alert.CustomizeAlertNotifyTemplates - 28, // 22: erda.msp.apm.alert.CreateCustomizeAlertResponse.data:type_name -> erda.msp.apm.alert.CreateCustomizeAlertData - 55, // 23: erda.msp.apm.alert.UpdateCustomizeAlertRequest.attributes:type_name -> erda.msp.apm.alert.UpdateCustomizeAlertRequest.AttributesEntry - 66, // 24: erda.msp.apm.alert.UpdateCustomizeAlertRequest.rules:type_name -> erda.core.monitor.alert.CustomizeAlertRule - 67, // 25: erda.msp.apm.alert.UpdateCustomizeAlertRequest.notifies:type_name -> erda.core.monitor.alert.CustomizeAlertNotifyTemplates - 35, // 26: erda.msp.apm.alert.DeleteCustomizeAlertResponse.data:type_name -> erda.msp.apm.alert.DeleteCustomizeAlertData - 68, // 27: erda.msp.apm.alert.GetAlertRecordAttrsResponse.data:type_name -> erda.core.monitor.alert.AlertRecordAttr - 40, // 28: erda.msp.apm.alert.GetAlertRecordsResponse.data:type_name -> erda.msp.apm.alert.GetAlertRecordsData - 69, // 29: erda.msp.apm.alert.GetAlertRecordsData.list:type_name -> erda.core.monitor.alert.AlertRecord - 69, // 30: erda.msp.apm.alert.GetAlertRecordResponse.data:type_name -> erda.core.monitor.alert.AlertRecord - 70, // 31: erda.msp.apm.alert.GetAlertHistoriesResponse.data:type_name -> erda.core.monitor.alert.AlertHistory - 56, // 32: erda.msp.apm.alert.CreateAlertRecordIssueRequest.body:type_name -> erda.msp.apm.alert.CreateAlertRecordIssueRequest.BodyEntry - 57, // 33: erda.msp.apm.alert.UpdateAlertRecordIssueRequest.body:type_name -> erda.msp.apm.alert.UpdateAlertRecordIssueRequest.BodyEntry - 58, // 34: erda.msp.apm.alert.DashboardPreviewRequest.attributes:type_name -> erda.msp.apm.alert.DashboardPreviewRequest.AttributesEntry - 66, // 35: erda.msp.apm.alert.DashboardPreviewRequest.rules:type_name -> erda.core.monitor.alert.CustomizeAlertRule - 67, // 36: erda.msp.apm.alert.DashboardPreviewRequest.notifies:type_name -> erda.core.monitor.alert.CustomizeAlertNotifyTemplates - 71, // 37: erda.msp.apm.alert.DashboardPreviewResponse.data:type_name -> erda.core.monitor.alert.View - 72, // 38: erda.msp.apm.alert.ApmAlertData.AttributesEntry.value:type_name -> google.protobuf.Value - 72, // 39: erda.msp.apm.alert.CreateAlertRequest.AttributesEntry.value:type_name -> google.protobuf.Value - 72, // 40: erda.msp.apm.alert.UpdateAlertRequest.AttributesEntry.value:type_name -> google.protobuf.Value - 72, // 41: erda.msp.apm.alert.CreateCustomizeAlertRequest.AttributesEntry.value:type_name -> google.protobuf.Value - 72, // 42: erda.msp.apm.alert.UpdateCustomizeAlertRequest.AttributesEntry.value:type_name -> google.protobuf.Value - 72, // 43: erda.msp.apm.alert.CreateAlertRecordIssueRequest.BodyEntry.value:type_name -> google.protobuf.Value - 72, // 44: erda.msp.apm.alert.UpdateAlertRecordIssueRequest.BodyEntry.value:type_name -> google.protobuf.Value - 72, // 45: erda.msp.apm.alert.DashboardPreviewRequest.AttributesEntry.value:type_name -> google.protobuf.Value - 0, // 46: erda.msp.apm.alert.AlertService.QueryAlertRule:input_type -> erda.msp.apm.alert.QueryAlertRuleRequest - 2, // 47: erda.msp.apm.alert.AlertService.QueryAlert:input_type -> erda.msp.apm.alert.QueryAlertRequest - 5, // 48: erda.msp.apm.alert.AlertService.GetAlert:input_type -> erda.msp.apm.alert.GetAlertRequest - 8, // 49: erda.msp.apm.alert.AlertService.CreateAlert:input_type -> erda.msp.apm.alert.CreateAlertRequest - 11, // 50: erda.msp.apm.alert.AlertService.UpdateAlert:input_type -> erda.msp.apm.alert.UpdateAlertRequest - 13, // 51: erda.msp.apm.alert.AlertService.UpdateAlertEnable:input_type -> erda.msp.apm.alert.UpdateAlertEnableRequest - 15, // 52: erda.msp.apm.alert.AlertService.DeleteAlert:input_type -> erda.msp.apm.alert.DeleteAlertRequest - 18, // 53: erda.msp.apm.alert.AlertService.QueryCustomizeMetric:input_type -> erda.msp.apm.alert.QueryCustomizeMetricRequest - 20, // 54: erda.msp.apm.alert.AlertService.QueryCustomizeNotifyTarget:input_type -> erda.msp.apm.alert.QueryCustomizeNotifyTargetRequest - 22, // 55: erda.msp.apm.alert.AlertService.QueryCustomizeAlerts:input_type -> erda.msp.apm.alert.QueryCustomizeAlertsRequest - 24, // 56: erda.msp.apm.alert.AlertService.GetCustomizeAlert:input_type -> erda.msp.apm.alert.GetCustomizeAlertRequest - 26, // 57: erda.msp.apm.alert.AlertService.CreateCustomizeAlert:input_type -> erda.msp.apm.alert.CreateCustomizeAlertRequest - 29, // 58: erda.msp.apm.alert.AlertService.UpdateCustomizeAlert:input_type -> erda.msp.apm.alert.UpdateCustomizeAlertRequest - 31, // 59: erda.msp.apm.alert.AlertService.UpdateCustomizeAlertEnable:input_type -> erda.msp.apm.alert.UpdateCustomizeAlertEnableRequest - 33, // 60: erda.msp.apm.alert.AlertService.DeleteCustomizeAlert:input_type -> erda.msp.apm.alert.DeleteCustomizeAlertRequest - 36, // 61: erda.msp.apm.alert.AlertService.GetAlertRecordAttrs:input_type -> erda.msp.apm.alert.GetAlertRecordAttrsRequest - 38, // 62: erda.msp.apm.alert.AlertService.GetAlertRecords:input_type -> erda.msp.apm.alert.GetAlertRecordsRequest - 41, // 63: erda.msp.apm.alert.AlertService.GetAlertRecord:input_type -> erda.msp.apm.alert.GetAlertRecordRequest - 43, // 64: erda.msp.apm.alert.AlertService.GetAlertHistories:input_type -> erda.msp.apm.alert.GetAlertHistoriesRequest - 45, // 65: erda.msp.apm.alert.AlertService.CreateAlertRecordIssue:input_type -> erda.msp.apm.alert.CreateAlertRecordIssueRequest - 47, // 66: erda.msp.apm.alert.AlertService.UpdateAlertRecordIssue:input_type -> erda.msp.apm.alert.UpdateAlertRecordIssueRequest - 49, // 67: erda.msp.apm.alert.AlertService.DashboardPreview:input_type -> erda.msp.apm.alert.DashboardPreviewRequest - 1, // 68: erda.msp.apm.alert.AlertService.QueryAlertRule:output_type -> erda.msp.apm.alert.QueryAlertRuleResponse - 3, // 69: erda.msp.apm.alert.AlertService.QueryAlert:output_type -> erda.msp.apm.alert.QueryAlertResponse - 6, // 70: erda.msp.apm.alert.AlertService.GetAlert:output_type -> erda.msp.apm.alert.GetAlertResponse - 9, // 71: erda.msp.apm.alert.AlertService.CreateAlert:output_type -> erda.msp.apm.alert.CreateAlertResponse - 12, // 72: erda.msp.apm.alert.AlertService.UpdateAlert:output_type -> erda.msp.apm.alert.UpdateAlertResponse - 14, // 73: erda.msp.apm.alert.AlertService.UpdateAlertEnable:output_type -> erda.msp.apm.alert.UpdateAlertEnableResponse - 16, // 74: erda.msp.apm.alert.AlertService.DeleteAlert:output_type -> erda.msp.apm.alert.DeleteAlertResponse - 19, // 75: erda.msp.apm.alert.AlertService.QueryCustomizeMetric:output_type -> erda.msp.apm.alert.QueryCustomizeMetricResponse - 21, // 76: erda.msp.apm.alert.AlertService.QueryCustomizeNotifyTarget:output_type -> erda.msp.apm.alert.QueryCustomizeNotifyTargetResponse - 23, // 77: erda.msp.apm.alert.AlertService.QueryCustomizeAlerts:output_type -> erda.msp.apm.alert.QueryCustomizeAlertsResponse - 25, // 78: erda.msp.apm.alert.AlertService.GetCustomizeAlert:output_type -> erda.msp.apm.alert.GetCustomizeAlertResponse - 27, // 79: erda.msp.apm.alert.AlertService.CreateCustomizeAlert:output_type -> erda.msp.apm.alert.CreateCustomizeAlertResponse - 30, // 80: erda.msp.apm.alert.AlertService.UpdateCustomizeAlert:output_type -> erda.msp.apm.alert.UpdateCustomizeAlertResponse - 32, // 81: erda.msp.apm.alert.AlertService.UpdateCustomizeAlertEnable:output_type -> erda.msp.apm.alert.UpdateCustomizeAlertEnableResponse - 34, // 82: erda.msp.apm.alert.AlertService.DeleteCustomizeAlert:output_type -> erda.msp.apm.alert.DeleteCustomizeAlertResponse - 37, // 83: erda.msp.apm.alert.AlertService.GetAlertRecordAttrs:output_type -> erda.msp.apm.alert.GetAlertRecordAttrsResponse - 39, // 84: erda.msp.apm.alert.AlertService.GetAlertRecords:output_type -> erda.msp.apm.alert.GetAlertRecordsResponse - 42, // 85: erda.msp.apm.alert.AlertService.GetAlertRecord:output_type -> erda.msp.apm.alert.GetAlertRecordResponse - 44, // 86: erda.msp.apm.alert.AlertService.GetAlertHistories:output_type -> erda.msp.apm.alert.GetAlertHistoriesResponse - 46, // 87: erda.msp.apm.alert.AlertService.CreateAlertRecordIssue:output_type -> erda.msp.apm.alert.CreateAlertRecordIssueResponse - 48, // 88: erda.msp.apm.alert.AlertService.UpdateAlertRecordIssue:output_type -> erda.msp.apm.alert.UpdateAlertRecordIssueResponse - 50, // 89: erda.msp.apm.alert.AlertService.DashboardPreview:output_type -> erda.msp.apm.alert.DashboardPreviewResponse - 68, // [68:90] is the sub-list for method output_type - 46, // [46:68] is the sub-list for method input_type - 46, // [46:46] is the sub-list for extension type_name - 46, // [46:46] is the sub-list for extension extendee - 0, // [0:46] is the sub-list for field type_name + 65, // 4: erda.msp.apm.alert.ApmAlertData.rules:type_name -> erda.core.monitor.alert.AlertExpression + 66, // 5: erda.msp.apm.alert.ApmAlertData.notifies:type_name -> erda.core.monitor.alert.AlertNotify + 55, // 6: erda.msp.apm.alert.ApmAlertData.attributes:type_name -> erda.msp.apm.alert.ApmAlertData.AttributesEntry + 67, // 7: erda.msp.apm.alert.ApmAlertData.triggerCondition:type_name -> erda.core.monitor.alert.TriggerCondition + 65, // 8: erda.msp.apm.alert.CreateAlertRequest.rules:type_name -> erda.core.monitor.alert.AlertExpression + 66, // 9: erda.msp.apm.alert.CreateAlertRequest.notifies:type_name -> erda.core.monitor.alert.AlertNotify + 56, // 10: erda.msp.apm.alert.CreateAlertRequest.attributes:type_name -> erda.msp.apm.alert.CreateAlertRequest.AttributesEntry + 67, // 11: erda.msp.apm.alert.CreateAlertRequest.triggerCondition:type_name -> erda.core.monitor.alert.TriggerCondition + 10, // 12: erda.msp.apm.alert.CreateAlertResponse.data:type_name -> erda.msp.apm.alert.CreateAlertData + 65, // 13: erda.msp.apm.alert.UpdateAlertRequest.rules:type_name -> erda.core.monitor.alert.AlertExpression + 66, // 14: erda.msp.apm.alert.UpdateAlertRequest.notifies:type_name -> erda.core.monitor.alert.AlertNotify + 57, // 15: erda.msp.apm.alert.UpdateAlertRequest.attributes:type_name -> erda.msp.apm.alert.UpdateAlertRequest.AttributesEntry + 67, // 16: erda.msp.apm.alert.UpdateAlertRequest.triggerCondition:type_name -> erda.core.monitor.alert.TriggerCondition + 17, // 17: erda.msp.apm.alert.DeleteAlertResponse.data:type_name -> erda.msp.apm.alert.DeleteAlertData + 68, // 18: erda.msp.apm.alert.QueryCustomizeMetricResponse.data:type_name -> erda.core.monitor.alert.CustomizeMetrics + 69, // 19: erda.msp.apm.alert.QueryCustomizeNotifyTargetResponse.data:type_name -> erda.core.monitor.alert.QueryCustomizeNotifyTargetData + 70, // 20: erda.msp.apm.alert.QueryCustomizeAlertsResponse.data:type_name -> erda.core.monitor.alert.QueryCustomizeAlertData + 71, // 21: erda.msp.apm.alert.GetCustomizeAlertResponse.data:type_name -> erda.core.monitor.alert.CustomizeAlertDetail + 58, // 22: erda.msp.apm.alert.CreateCustomizeAlertRequest.attributes:type_name -> erda.msp.apm.alert.CreateCustomizeAlertRequest.AttributesEntry + 72, // 23: erda.msp.apm.alert.CreateCustomizeAlertRequest.rules:type_name -> erda.core.monitor.alert.CustomizeAlertRule + 73, // 24: erda.msp.apm.alert.CreateCustomizeAlertRequest.notifies:type_name -> erda.core.monitor.alert.CustomizeAlertNotifyTemplates + 28, // 25: erda.msp.apm.alert.CreateCustomizeAlertResponse.data:type_name -> erda.msp.apm.alert.CreateCustomizeAlertData + 59, // 26: erda.msp.apm.alert.UpdateCustomizeAlertRequest.attributes:type_name -> erda.msp.apm.alert.UpdateCustomizeAlertRequest.AttributesEntry + 72, // 27: erda.msp.apm.alert.UpdateCustomizeAlertRequest.rules:type_name -> erda.core.monitor.alert.CustomizeAlertRule + 73, // 28: erda.msp.apm.alert.UpdateCustomizeAlertRequest.notifies:type_name -> erda.core.monitor.alert.CustomizeAlertNotifyTemplates + 35, // 29: erda.msp.apm.alert.DeleteCustomizeAlertResponse.data:type_name -> erda.msp.apm.alert.DeleteCustomizeAlertData + 74, // 30: erda.msp.apm.alert.GetAlertRecordAttrsResponse.data:type_name -> erda.core.monitor.alert.AlertRecordAttr + 40, // 31: erda.msp.apm.alert.GetAlertRecordsResponse.data:type_name -> erda.msp.apm.alert.GetAlertRecordsData + 75, // 32: erda.msp.apm.alert.GetAlertRecordsData.list:type_name -> erda.core.monitor.alert.AlertRecord + 75, // 33: erda.msp.apm.alert.GetAlertRecordResponse.data:type_name -> erda.core.monitor.alert.AlertRecord + 76, // 34: erda.msp.apm.alert.GetAlertHistoriesResponse.data:type_name -> erda.core.monitor.alert.AlertHistory + 60, // 35: erda.msp.apm.alert.CreateAlertRecordIssueRequest.body:type_name -> erda.msp.apm.alert.CreateAlertRecordIssueRequest.BodyEntry + 61, // 36: erda.msp.apm.alert.UpdateAlertRecordIssueRequest.body:type_name -> erda.msp.apm.alert.UpdateAlertRecordIssueRequest.BodyEntry + 62, // 37: erda.msp.apm.alert.DashboardPreviewRequest.attributes:type_name -> erda.msp.apm.alert.DashboardPreviewRequest.AttributesEntry + 72, // 38: erda.msp.apm.alert.DashboardPreviewRequest.rules:type_name -> erda.core.monitor.alert.CustomizeAlertRule + 73, // 39: erda.msp.apm.alert.DashboardPreviewRequest.notifies:type_name -> erda.core.monitor.alert.CustomizeAlertNotifyTemplates + 77, // 40: erda.msp.apm.alert.DashboardPreviewResponse.data:type_name -> erda.core.monitor.alert.View + 78, // 41: erda.msp.apm.alert.GetAlertConditionsResponse.data:type_name -> erda.core.monitor.alert.Conditions + 63, // 42: erda.msp.apm.alert.GetAlertConditionsValueRequest.filters:type_name -> erda.msp.apm.alert.GetAlertConditionsValueRequest.FiltersEntry + 79, // 43: erda.msp.apm.alert.GetAlertConditionsValueResponse.data:type_name -> erda.core.monitor.alert.AlertConditionsValue + 80, // 44: erda.msp.apm.alert.ApmAlertData.AttributesEntry.value:type_name -> google.protobuf.Value + 80, // 45: erda.msp.apm.alert.CreateAlertRequest.AttributesEntry.value:type_name -> google.protobuf.Value + 80, // 46: erda.msp.apm.alert.UpdateAlertRequest.AttributesEntry.value:type_name -> google.protobuf.Value + 80, // 47: erda.msp.apm.alert.CreateCustomizeAlertRequest.AttributesEntry.value:type_name -> google.protobuf.Value + 80, // 48: erda.msp.apm.alert.UpdateCustomizeAlertRequest.AttributesEntry.value:type_name -> google.protobuf.Value + 80, // 49: erda.msp.apm.alert.CreateAlertRecordIssueRequest.BodyEntry.value:type_name -> google.protobuf.Value + 80, // 50: erda.msp.apm.alert.UpdateAlertRecordIssueRequest.BodyEntry.value:type_name -> google.protobuf.Value + 80, // 51: erda.msp.apm.alert.DashboardPreviewRequest.AttributesEntry.value:type_name -> google.protobuf.Value + 0, // 52: erda.msp.apm.alert.AlertService.QueryAlertRule:input_type -> erda.msp.apm.alert.QueryAlertRuleRequest + 2, // 53: erda.msp.apm.alert.AlertService.QueryAlert:input_type -> erda.msp.apm.alert.QueryAlertRequest + 5, // 54: erda.msp.apm.alert.AlertService.GetAlert:input_type -> erda.msp.apm.alert.GetAlertRequest + 8, // 55: erda.msp.apm.alert.AlertService.CreateAlert:input_type -> erda.msp.apm.alert.CreateAlertRequest + 11, // 56: erda.msp.apm.alert.AlertService.UpdateAlert:input_type -> erda.msp.apm.alert.UpdateAlertRequest + 13, // 57: erda.msp.apm.alert.AlertService.UpdateAlertEnable:input_type -> erda.msp.apm.alert.UpdateAlertEnableRequest + 15, // 58: erda.msp.apm.alert.AlertService.DeleteAlert:input_type -> erda.msp.apm.alert.DeleteAlertRequest + 18, // 59: erda.msp.apm.alert.AlertService.QueryCustomizeMetric:input_type -> erda.msp.apm.alert.QueryCustomizeMetricRequest + 20, // 60: erda.msp.apm.alert.AlertService.QueryCustomizeNotifyTarget:input_type -> erda.msp.apm.alert.QueryCustomizeNotifyTargetRequest + 22, // 61: erda.msp.apm.alert.AlertService.QueryCustomizeAlerts:input_type -> erda.msp.apm.alert.QueryCustomizeAlertsRequest + 24, // 62: erda.msp.apm.alert.AlertService.GetCustomizeAlert:input_type -> erda.msp.apm.alert.GetCustomizeAlertRequest + 26, // 63: erda.msp.apm.alert.AlertService.CreateCustomizeAlert:input_type -> erda.msp.apm.alert.CreateCustomizeAlertRequest + 29, // 64: erda.msp.apm.alert.AlertService.UpdateCustomizeAlert:input_type -> erda.msp.apm.alert.UpdateCustomizeAlertRequest + 31, // 65: erda.msp.apm.alert.AlertService.UpdateCustomizeAlertEnable:input_type -> erda.msp.apm.alert.UpdateCustomizeAlertEnableRequest + 33, // 66: erda.msp.apm.alert.AlertService.DeleteCustomizeAlert:input_type -> erda.msp.apm.alert.DeleteCustomizeAlertRequest + 36, // 67: erda.msp.apm.alert.AlertService.GetAlertRecordAttrs:input_type -> erda.msp.apm.alert.GetAlertRecordAttrsRequest + 38, // 68: erda.msp.apm.alert.AlertService.GetAlertRecords:input_type -> erda.msp.apm.alert.GetAlertRecordsRequest + 41, // 69: erda.msp.apm.alert.AlertService.GetAlertRecord:input_type -> erda.msp.apm.alert.GetAlertRecordRequest + 43, // 70: erda.msp.apm.alert.AlertService.GetAlertHistories:input_type -> erda.msp.apm.alert.GetAlertHistoriesRequest + 45, // 71: erda.msp.apm.alert.AlertService.CreateAlertRecordIssue:input_type -> erda.msp.apm.alert.CreateAlertRecordIssueRequest + 47, // 72: erda.msp.apm.alert.AlertService.UpdateAlertRecordIssue:input_type -> erda.msp.apm.alert.UpdateAlertRecordIssueRequest + 49, // 73: erda.msp.apm.alert.AlertService.DashboardPreview:input_type -> erda.msp.apm.alert.DashboardPreviewRequest + 51, // 74: erda.msp.apm.alert.AlertService.GetAlertConditions:input_type -> erda.msp.apm.alert.GetAlertConditionsRequest + 53, // 75: erda.msp.apm.alert.AlertService.GetAlertConditionsValue:input_type -> erda.msp.apm.alert.GetAlertConditionsValueRequest + 1, // 76: erda.msp.apm.alert.AlertService.QueryAlertRule:output_type -> erda.msp.apm.alert.QueryAlertRuleResponse + 3, // 77: erda.msp.apm.alert.AlertService.QueryAlert:output_type -> erda.msp.apm.alert.QueryAlertResponse + 6, // 78: erda.msp.apm.alert.AlertService.GetAlert:output_type -> erda.msp.apm.alert.GetAlertResponse + 9, // 79: erda.msp.apm.alert.AlertService.CreateAlert:output_type -> erda.msp.apm.alert.CreateAlertResponse + 12, // 80: erda.msp.apm.alert.AlertService.UpdateAlert:output_type -> erda.msp.apm.alert.UpdateAlertResponse + 14, // 81: erda.msp.apm.alert.AlertService.UpdateAlertEnable:output_type -> erda.msp.apm.alert.UpdateAlertEnableResponse + 16, // 82: erda.msp.apm.alert.AlertService.DeleteAlert:output_type -> erda.msp.apm.alert.DeleteAlertResponse + 19, // 83: erda.msp.apm.alert.AlertService.QueryCustomizeMetric:output_type -> erda.msp.apm.alert.QueryCustomizeMetricResponse + 21, // 84: erda.msp.apm.alert.AlertService.QueryCustomizeNotifyTarget:output_type -> erda.msp.apm.alert.QueryCustomizeNotifyTargetResponse + 23, // 85: erda.msp.apm.alert.AlertService.QueryCustomizeAlerts:output_type -> erda.msp.apm.alert.QueryCustomizeAlertsResponse + 25, // 86: erda.msp.apm.alert.AlertService.GetCustomizeAlert:output_type -> erda.msp.apm.alert.GetCustomizeAlertResponse + 27, // 87: erda.msp.apm.alert.AlertService.CreateCustomizeAlert:output_type -> erda.msp.apm.alert.CreateCustomizeAlertResponse + 30, // 88: erda.msp.apm.alert.AlertService.UpdateCustomizeAlert:output_type -> erda.msp.apm.alert.UpdateCustomizeAlertResponse + 32, // 89: erda.msp.apm.alert.AlertService.UpdateCustomizeAlertEnable:output_type -> erda.msp.apm.alert.UpdateCustomizeAlertEnableResponse + 34, // 90: erda.msp.apm.alert.AlertService.DeleteCustomizeAlert:output_type -> erda.msp.apm.alert.DeleteCustomizeAlertResponse + 37, // 91: erda.msp.apm.alert.AlertService.GetAlertRecordAttrs:output_type -> erda.msp.apm.alert.GetAlertRecordAttrsResponse + 39, // 92: erda.msp.apm.alert.AlertService.GetAlertRecords:output_type -> erda.msp.apm.alert.GetAlertRecordsResponse + 42, // 93: erda.msp.apm.alert.AlertService.GetAlertRecord:output_type -> erda.msp.apm.alert.GetAlertRecordResponse + 44, // 94: erda.msp.apm.alert.AlertService.GetAlertHistories:output_type -> erda.msp.apm.alert.GetAlertHistoriesResponse + 46, // 95: erda.msp.apm.alert.AlertService.CreateAlertRecordIssue:output_type -> erda.msp.apm.alert.CreateAlertRecordIssueResponse + 48, // 96: erda.msp.apm.alert.AlertService.UpdateAlertRecordIssue:output_type -> erda.msp.apm.alert.UpdateAlertRecordIssueResponse + 50, // 97: erda.msp.apm.alert.AlertService.DashboardPreview:output_type -> erda.msp.apm.alert.DashboardPreviewResponse + 52, // 98: erda.msp.apm.alert.AlertService.GetAlertConditions:output_type -> erda.msp.apm.alert.GetAlertConditionsResponse + 54, // 99: erda.msp.apm.alert.AlertService.GetAlertConditionsValue:output_type -> erda.msp.apm.alert.GetAlertConditionsValueResponse + 76, // [76:100] is the sub-list for method output_type + 52, // [52:76] is the sub-list for method input_type + 52, // [52:52] is the sub-list for extension type_name + 52, // [52:52] is the sub-list for extension extendee + 0, // [0:52] is the sub-list for field type_name } func init() { file_apm_alert_proto_init() } @@ -4718,6 +5039,54 @@ func file_apm_alert_proto_init() { return nil } } + file_apm_alert_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetAlertConditionsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_apm_alert_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetAlertConditionsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_apm_alert_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetAlertConditionsValueRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_apm_alert_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetAlertConditionsValueResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } type x struct{} out := protoimpl.TypeBuilder{ @@ -4725,7 +5094,7 @@ func file_apm_alert_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_apm_alert_proto_rawDesc, NumEnums: 0, - NumMessages: 59, + NumMessages: 64, NumExtensions: 0, NumServices: 1, }, diff --git a/api/proto-go/msp/apm/alert/pb/apm_alert.validator.pb.go b/api/proto-go/msp/apm/alert/pb/apm_alert.validator.pb.go index c7ec80000eb..3d9eb2e9107 100644 --- a/api/proto-go/msp/apm/alert/pb/apm_alert.validator.pb.go +++ b/api/proto-go/msp/apm/alert/pb/apm_alert.validator.pb.go @@ -7,6 +7,7 @@ import ( fmt "fmt" math "math" + _ "github.com/erda-project/erda-proto-go/common/pb" _ "github.com/erda-project/erda-proto-go/core/monitor/alert/pb" proto "github.com/golang/protobuf/proto" _ "github.com/mwitkow/go-proto-validators" @@ -91,6 +92,13 @@ func (this *ApmAlertData) Validate() error { } } // Validation of proto3 map<> fields is unsupported. + for _, item := range this.TriggerCondition { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("TriggerCondition", err) + } + } + } return nil } func (this *CreateAlertRequest) Validate() error { @@ -109,6 +117,13 @@ func (this *CreateAlertRequest) Validate() error { } } // Validation of proto3 map<> fields is unsupported. + for _, item := range this.TriggerCondition { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("TriggerCondition", err) + } + } + } return nil } func (this *CreateAlertResponse) Validate() error { @@ -138,6 +153,13 @@ func (this *UpdateAlertRequest) Validate() error { } } // Validation of proto3 map<> fields is unsupported. + for _, item := range this.TriggerCondition { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("TriggerCondition", err) + } + } + } return nil } func (this *UpdateAlertResponse) Validate() error { @@ -400,3 +422,28 @@ func (this *DashboardPreviewResponse) Validate() error { } return nil } +func (this *GetAlertConditionsRequest) Validate() error { + return nil +} +func (this *GetAlertConditionsResponse) Validate() error { + for _, item := range this.Data { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Data", err) + } + } + } + return nil +} +func (this *GetAlertConditionsValueRequest) Validate() error { + // Validation of proto3 map<> fields is unsupported. + return nil +} +func (this *GetAlertConditionsValueResponse) Validate() error { + if this.Data != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.Data); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Data", err) + } + } + return nil +} diff --git a/api/proto-go/msp/apm/alert/pb/apm_alert_grpc.pb.go b/api/proto-go/msp/apm/alert/pb/apm_alert_grpc.pb.go index a5188a5f8d3..79edf0498f0 100644 --- a/api/proto-go/msp/apm/alert/pb/apm_alert_grpc.pb.go +++ b/api/proto-go/msp/apm/alert/pb/apm_alert_grpc.pb.go @@ -43,6 +43,8 @@ type AlertServiceClient interface { CreateAlertRecordIssue(ctx context.Context, in *CreateAlertRecordIssueRequest, opts ...grpc.CallOption) (*CreateAlertRecordIssueResponse, error) UpdateAlertRecordIssue(ctx context.Context, in *UpdateAlertRecordIssueRequest, opts ...grpc.CallOption) (*UpdateAlertRecordIssueResponse, error) DashboardPreview(ctx context.Context, in *DashboardPreviewRequest, opts ...grpc.CallOption) (*DashboardPreviewResponse, error) + GetAlertConditions(ctx context.Context, in *GetAlertConditionsRequest, opts ...grpc.CallOption) (*GetAlertConditionsResponse, error) + GetAlertConditionsValue(ctx context.Context, in *GetAlertConditionsValueRequest, opts ...grpc.CallOption) (*GetAlertConditionsValueResponse, error) } type alertServiceClient struct { @@ -251,6 +253,24 @@ func (c *alertServiceClient) DashboardPreview(ctx context.Context, in *Dashboard return out, nil } +func (c *alertServiceClient) GetAlertConditions(ctx context.Context, in *GetAlertConditionsRequest, opts ...grpc.CallOption) (*GetAlertConditionsResponse, error) { + out := new(GetAlertConditionsResponse) + err := c.cc.Invoke(ctx, "/erda.msp.apm.alert.AlertService/GetAlertConditions", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *alertServiceClient) GetAlertConditionsValue(ctx context.Context, in *GetAlertConditionsValueRequest, opts ...grpc.CallOption) (*GetAlertConditionsValueResponse, error) { + out := new(GetAlertConditionsValueResponse) + err := c.cc.Invoke(ctx, "/erda.msp.apm.alert.AlertService/GetAlertConditionsValue", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // AlertServiceServer is the server API for AlertService service. // All implementations should embed UnimplementedAlertServiceServer // for forward compatibility @@ -277,6 +297,8 @@ type AlertServiceServer interface { CreateAlertRecordIssue(context.Context, *CreateAlertRecordIssueRequest) (*CreateAlertRecordIssueResponse, error) UpdateAlertRecordIssue(context.Context, *UpdateAlertRecordIssueRequest) (*UpdateAlertRecordIssueResponse, error) DashboardPreview(context.Context, *DashboardPreviewRequest) (*DashboardPreviewResponse, error) + GetAlertConditions(context.Context, *GetAlertConditionsRequest) (*GetAlertConditionsResponse, error) + GetAlertConditionsValue(context.Context, *GetAlertConditionsValueRequest) (*GetAlertConditionsValueResponse, error) } // UnimplementedAlertServiceServer should be embedded to have forward compatible implementations. @@ -349,6 +371,12 @@ func (*UnimplementedAlertServiceServer) UpdateAlertRecordIssue(context.Context, func (*UnimplementedAlertServiceServer) DashboardPreview(context.Context, *DashboardPreviewRequest) (*DashboardPreviewResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method DashboardPreview not implemented") } +func (*UnimplementedAlertServiceServer) GetAlertConditions(context.Context, *GetAlertConditionsRequest) (*GetAlertConditionsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetAlertConditions not implemented") +} +func (*UnimplementedAlertServiceServer) GetAlertConditionsValue(context.Context, *GetAlertConditionsValueRequest) (*GetAlertConditionsValueResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetAlertConditionsValue not implemented") +} func RegisterAlertServiceServer(s grpc1.ServiceRegistrar, srv AlertServiceServer, opts ...grpc1.HandleOption) { s.RegisterService(_get_AlertService_serviceDesc(srv, opts...), srv) @@ -566,6 +594,24 @@ func _get_AlertService_serviceDesc(srv AlertServiceServer, opts ...grpc1.HandleO _AlertService_DashboardPreview_Handler = h.Interceptor(_AlertService_DashboardPreview_Handler) } + _AlertService_GetAlertConditions_Handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.GetAlertConditions(ctx, req.(*GetAlertConditionsRequest)) + } + var _AlertService_GetAlertConditions_info transport.ServiceInfo + if h.Interceptor != nil { + _AlertService_GetAlertConditions_info = transport.NewServiceInfo("erda.msp.apm.alert.AlertService", "GetAlertConditions", srv) + _AlertService_GetAlertConditions_Handler = h.Interceptor(_AlertService_GetAlertConditions_Handler) + } + + _AlertService_GetAlertConditionsValue_Handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.GetAlertConditionsValue(ctx, req.(*GetAlertConditionsValueRequest)) + } + var _AlertService_GetAlertConditionsValue_info transport.ServiceInfo + if h.Interceptor != nil { + _AlertService_GetAlertConditionsValue_info = transport.NewServiceInfo("erda.msp.apm.alert.AlertService", "GetAlertConditionsValue", srv) + _AlertService_GetAlertConditionsValue_Handler = h.Interceptor(_AlertService_GetAlertConditionsValue_Handler) + } + var serviceDesc = _AlertService_serviceDesc serviceDesc.Methods = []grpc.MethodDesc{ { @@ -1074,6 +1120,52 @@ func _get_AlertService_serviceDesc(srv AlertServiceServer, opts ...grpc1.HandleO return interceptor(ctx, in, info, _AlertService_DashboardPreview_Handler) }, }, + { + MethodName: "GetAlertConditions", + Handler: func(_ interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetAlertConditionsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil && h.Interceptor == nil { + return srv.(AlertServiceServer).GetAlertConditions(ctx, in) + } + if h.Interceptor != nil { + ctx = context.WithValue(ctx, transport.ServiceInfoContextKey, _AlertService_GetAlertConditions_info) + } + if interceptor == nil { + return _AlertService_GetAlertConditions_Handler(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/erda.msp.apm.alert.AlertService/GetAlertConditions", + } + return interceptor(ctx, in, info, _AlertService_GetAlertConditions_Handler) + }, + }, + { + MethodName: "GetAlertConditionsValue", + Handler: func(_ interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetAlertConditionsValueRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil && h.Interceptor == nil { + return srv.(AlertServiceServer).GetAlertConditionsValue(ctx, in) + } + if h.Interceptor != nil { + ctx = context.WithValue(ctx, transport.ServiceInfoContextKey, _AlertService_GetAlertConditionsValue_info) + } + if interceptor == nil { + return _AlertService_GetAlertConditionsValue_Handler(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/erda.msp.apm.alert.AlertService/GetAlertConditionsValue", + } + return interceptor(ctx, in, info, _AlertService_GetAlertConditionsValue_Handler) + }, + }, } return &serviceDesc } diff --git a/api/proto/cmp/alert/cmp_alert.proto b/api/proto/cmp/alert/cmp_alert.proto new file mode 100644 index 00000000000..131532e04d7 --- /dev/null +++ b/api/proto/cmp/alert/cmp_alert.proto @@ -0,0 +1,38 @@ +syntax = "proto3"; +package erda.cmp.alert; +option go_package = "github.com/erda-project/erda-proto-go/cmp/alert/pb"; + +import "core/monitor/alert/alert.proto"; +import "google/protobuf/struct.proto"; +import "google/api/annotations.proto"; + +service AlertService { + rpc GetAlertConditions (GetAlertConditionsRequest) returns (GetAlertConditionsResponse) { + option (google.api.http) = { + get: "/api/cmp/alerts/conditions" + }; + } + rpc GetAlertConditionsValue (GetAlertConditionsValueRequest) returns (GetAlertConditionsValueResponse) { + option (google.api.http) = { + post: "/api/cmp/alerts/conditions/value" + }; + } +} + +message GetAlertConditionsRequest { + string scopeType = 1; +} + +message GetAlertConditionsResponse { + repeated erda.core.monitor.alert.Conditions data = 1 [json_name = "conditions"]; +} + +message GetAlertConditionsValueRequest { + string condition = 1; + map filters = 2; + string index = 3; +} + +message GetAlertConditionsValueResponse { + erda.core.monitor.alert.AlertConditionsValue data = 1; +} diff --git a/api/proto/core/monitor/alert/alert.proto b/api/proto/core/monitor/alert/alert.proto index c7108a1357d..a630f65ad2c 100644 --- a/api/proto/core/monitor/alert/alert.proto +++ b/api/proto/core/monitor/alert/alert.proto @@ -243,6 +243,8 @@ service AlertService { put: "/api/org-alert-records/{groupId}/issues", }; } + rpc GetAlertConditions (GetAlertConditionsRequest) returns (GetAlertConditionsResponse) {} + rpc GetAlertConditionsValue (GetAlertConditionsValueRequest) returns (GetAlertConditionsValueResponse) {} } message QueryCustomizeMetricRequest { @@ -684,19 +686,20 @@ message QueryAlertsData { } message Alert { - uint64 id = 1; - string name = 2; - string alertScope = 3; - string alertScopeId = 4; - bool enable = 5; - repeated AlertExpression rules = 6; - repeated AlertNotify notifies = 7; - map filters = 8; - map attributes = 9; - repeated string clusterNames = 10; - string domain = 11; - int64 createTime = 12; - int64 updateTime = 13; + uint64 id = 1; + string name = 2; + string alertScope = 3; + string alertScopeId = 4; + bool enable = 5; + repeated AlertExpression rules = 6; + repeated AlertNotify notifies = 7; + map filters = 8; + map attributes = 9; + repeated string clusterNames = 10; + string domain = 11; + int64 createTime = 12; + int64 updateTime = 13; + repeated TriggerCondition triggerCondition = 14; } message AlertExpression { @@ -708,6 +711,7 @@ message AlertExpression { bool isRecover = 6; int64 createTime = 7; int64 updateTime = 8; + string level = 9; } message AlertExpressionFunction { @@ -727,6 +731,7 @@ message AlertNotify { AlertNotifySilence silence = 7; int64 createTime = 8; int64 updateTime = 9; + string level = 10; } message NotifyGroup { @@ -772,19 +777,20 @@ message GetAlertDetailResponse { } message CreateAlertRequest { - uint64 id = 1; - string name = 2; - string alertScope = 3; - string alertScopeId = 4; - bool enable = 5; - repeated AlertExpression rules = 6; - repeated AlertNotify notifies = 7; - map filters = 8; - map attributes = 9; - repeated string clusterNames = 10; - string domain = 11; - int64 createTime = 12; - int64 updateTime = 13; + uint64 id = 1; + string name = 2; + string alertScope = 3; + string alertScopeId = 4; + bool enable = 5; + repeated AlertExpression rules = 6; + repeated AlertNotify notifies = 7; + map filters = 8; + map attributes = 9; + repeated string clusterNames = 10; + string domain = 11; + int64 createTime = 12; + int64 updateTime = 13; + repeated TriggerCondition triggerCondition = 14; } message CreateAlertResponse { @@ -792,19 +798,20 @@ message CreateAlertResponse { } message UpdateAlertRequest { - uint64 id = 1 [(validator.field) = {int_gt: 0}]; - string name = 2; - string alertScope = 3; - string alertScopeId = 4; - bool enable = 5; - repeated AlertExpression rules = 6; - repeated AlertNotify notifies = 7; - map filters = 8; - map attributes = 9; - repeated string clusterNames = 10; - string domain = 11; - int64 createTime = 12; - int64 updateTime = 13; + uint64 id = 1 [(validator.field) = {int_gt: 0}]; + string name = 2; + string alertScope = 3; + string alertScopeId = 4; + bool enable = 5; + repeated AlertExpression rules = 6; + repeated AlertNotify notifies = 7; + map filters = 8; + map attributes = 9; + repeated string clusterNames = 10; + string domain = 11; + int64 createTime = 12; + int64 updateTime = 13; + repeated TriggerCondition triggerCondition = 14; } message UpdateAlertResponse { @@ -856,19 +863,26 @@ message GetOrgAlertDetailResponse { } message CreateOrgAlertRequest { - uint64 id = 1; - string name = 2; - string alertScope = 3; - string alertScopeId = 4; - bool enable = 5; - repeated AlertExpression rules = 6; - repeated AlertNotify notifies = 7; - map filters = 8; - map attributes = 9; - repeated string clusterNames = 10; - string domain = 11; - int64 createTime = 12; - int64 updateTime = 13; + uint64 id = 1; + string name = 2; + string alertScope = 3; + string alertScopeId = 4; + bool enable = 5; + repeated AlertExpression rules = 6; + repeated AlertNotify notifies = 7; + map filters = 8; + map attributes = 9; + repeated string clusterNames = 10; + string domain = 11; + int64 createTime = 12; + int64 updateTime = 13; + repeated TriggerCondition triggerCondition = 14; +} + +message TriggerCondition { + string condition = 1; + string operator = 2; + string values = 3; } message CreateOrgAlertResponse { @@ -876,19 +890,20 @@ message CreateOrgAlertResponse { } message UpdateOrgAlertRequest { - uint64 id = 1 [(validator.field) = {int_gt: 0}]; - string name = 2; - string alertScope = 3; - string alertScopeId = 4; - bool enable = 5; - repeated AlertExpression rules = 6; - repeated AlertNotify notifies = 7; - map filters = 8; - map attributes = 9; - repeated string clusterNames = 10; - string domain = 11; - int64 createTime = 12; - int64 updateTime = 13; + uint64 id = 1 [(validator.field) = {int_gt: 0}]; + string name = 2; + string alertScope = 3; + string alertScopeId = 4; + bool enable = 5; + repeated AlertExpression rules = 6; + repeated AlertNotify notifies = 7; + map filters = 8; + map attributes = 9; + repeated string clusterNames = 10; + string domain = 11; + int64 createTime = 12; + int64 updateTime = 13; + repeated TriggerCondition triggerCondition = 14; } message UpdateOrgAlertResponse { @@ -1183,3 +1198,33 @@ message UpdateOrgAlertIssueRequest { message UpdateOrgAlertIssueResponse { } + +message GetAlertConditionsRequest { + string scopeType = 1; +} + +message GetAlertConditionsResponse { + repeated Conditions data = 1 [json_name = "conditions"]; +} + +message Conditions { + string key = 1; + repeated string filters = 2; + string displayName = 3; + string index = 4; +} + +message GetAlertConditionsValueRequest { + string condition = 1; + map filters = 2; + string index = 3; +} + +message GetAlertConditionsValueResponse { + AlertConditionsValue data = 1; +} + +message AlertConditionsValue { + string key = 1; + repeated google.protobuf.Value options = 2; +} diff --git a/api/proto/msp/apm/alert/apm_alert.proto b/api/proto/msp/apm/alert/apm_alert.proto index d03f00d64d2..6b67000bec6 100644 --- a/api/proto/msp/apm/alert/apm_alert.proto +++ b/api/proto/msp/apm/alert/apm_alert.proto @@ -6,8 +6,17 @@ import "github.com/mwitkow/go-proto-validators/validator.proto"; import "google/api/annotations.proto"; import "google/protobuf/struct.proto"; import "core/monitor/alert/alert.proto"; +import "common/openapi.proto"; service AlertService { + option (erda.common.openapi_service) = { + service: "msp", + auth: { + check_login: true, + check_token: true, + } + }; + rpc QueryAlertRule (QueryAlertRuleRequest) returns (QueryAlertRuleResponse) { option (google.api.http) = { get: "/api/msp/apm/{tenantGroup}/alert-rules", @@ -118,6 +127,22 @@ service AlertService { post: "/api/msp/apm/{tenantGroup}/alert-records/custom-alerts/dash-preview/query" }; } + rpc GetAlertConditions (GetAlertConditionsRequest) returns (GetAlertConditionsResponse) { + option (google.api.http) = { + get: "/api/msp/apm/conditions" + }; + option (erda.common.openapi) = { + path: "/api/msp/apm/conditions" + }; + } + rpc GetAlertConditionsValue (GetAlertConditionsValueRequest) returns (GetAlertConditionsValueResponse) { + option (google.api.http) = { + post: "/api/msp/apm/conditions/value" + }; + option (erda.common.openapi) = { + path: "/api/msp/apm/conditions/value" + }; + } } message QueryAlertRuleRequest { @@ -153,33 +178,35 @@ message GetAlertResponse { } message ApmAlertData { - int64 id = 1; - string name = 2; - string alertScope = 3; - string alertScopeId = 4; - bool enable = 5; - repeated erda.core.monitor.alert.AlertExpression rules = 6; - repeated erda.core.monitor.alert.AlertNotify notifies = 7; - repeated string appIds = 8; - string domain = 9; - map attributes = 10; - int64 createTime = 11; - int64 updateTime = 12; + int64 id = 1; + string name = 2; + string alertScope = 3; + string alertScopeId = 4; + bool enable = 5; + repeated erda.core.monitor.alert.AlertExpression rules = 6; + repeated erda.core.monitor.alert.AlertNotify notifies = 7; + repeated string appIds = 8; + string domain = 9; + map attributes = 10; + int64 createTime = 11; + int64 updateTime = 12; + repeated erda.core.monitor.alert.TriggerCondition triggerCondition = 13; } message CreateAlertRequest { - string tenantGroup = 1; - string name = 2; - repeated string appIds = 3; - repeated erda.core.monitor.alert.AlertExpression rules = 4; - repeated erda.core.monitor.alert.AlertNotify notifies = 5; - string domain = 6; - int64 createTime = 7; - int64 updateTime = 8; - string alertScope = 9; - string alertScopeId = 10; - bool enable = 11; - map attributes = 12; + string tenantGroup = 1; + string name = 2; + repeated string appIds = 3; + repeated erda.core.monitor.alert.AlertExpression rules = 4; + repeated erda.core.monitor.alert.AlertNotify notifies = 5; + string domain = 6; + int64 createTime = 7; + int64 updateTime = 8; + string alertScope = 9; + string alertScopeId = 10; + bool enable = 11; + map attributes = 12; + repeated erda.core.monitor.alert.TriggerCondition triggerCondition = 13; } message CreateAlertResponse { @@ -191,19 +218,20 @@ message CreateAlertData { } message UpdateAlertRequest { - string tenantGroup = 1; - uint64 id = 2; - string name = 3; - string alertScope = 4; - string alertScopeId = 5; - bool enable = 6; - repeated erda.core.monitor.alert.AlertExpression rules = 7; - repeated erda.core.monitor.alert.AlertNotify notifies = 8; - map attributes = 9; - repeated string appIds = 10; - string domain = 11; - int64 createTime = 12; - int64 updateTime = 13; + string tenantGroup = 1; + uint64 id = 2; + string name = 3; + string alertScope = 4; + string alertScopeId = 5; + bool enable = 6; + repeated erda.core.monitor.alert.AlertExpression rules = 7; + repeated erda.core.monitor.alert.AlertNotify notifies = 8; + map attributes = 9; + repeated string appIds = 10; + string domain = 11; + int64 createTime = 12; + int64 updateTime = 13; + repeated erda.core.monitor.alert.TriggerCondition triggerCondition = 14; } message UpdateAlertResponse { @@ -418,3 +446,21 @@ message DashboardPreviewRequest { message DashboardPreviewResponse { erda.core.monitor.alert.View data = 1; } + +message GetAlertConditionsRequest { + string scopeType = 1; +} + +message GetAlertConditionsResponse { + repeated erda.core.monitor.alert.Conditions data = 1 [json_name = "conditions"]; +} + +message GetAlertConditionsValueRequest { + string condition = 1; + map filters = 2; + string index = 3; +} + +message GetAlertConditionsValueResponse { + erda.core.monitor.alert.AlertConditionsValue data = 1; +} diff --git a/cmd/cmp/cmp.go b/cmd/cmp/cmp.go index 9925680498f..ea462a653b7 100644 --- a/cmd/cmp/cmp.go +++ b/cmd/cmp/cmp.go @@ -23,6 +23,7 @@ import ( _ "github.com/erda-project/erda-infra/providers" _ "github.com/erda-project/erda-infra/providers/component-protocol" _ "github.com/erda-project/erda-infra/providers/serviceregister" + _ "github.com/erda-project/erda-proto-go/core/monitor/alert/client" _ "github.com/erda-project/erda-proto-go/core/monitor/metric/client" _ "github.com/erda-project/erda-proto-go/core/services/authentication/credentials/accesskey/client" diff --git a/conf/cmp/cmp.yaml b/conf/cmp/cmp.yaml index b86c09a585d..0189c5bce34 100644 --- a/conf/cmp/cmp.yaml +++ b/conf/cmp/cmp.yaml @@ -108,6 +108,10 @@ grpc-client@erda.core.monitor.metric: block: false erda.core.monitor.metric-client: +grpc-client@erda.core.monitor.alert: + addr: "${MONITOR_GRPC_ADDR:monitor:7080}" +erda.core.monitor.alert-client: + # core service credential grpc-client@erda.core.services.authentication.credentials.accesskey: addr: "${CORE_SERVICES_GRPC_ADDR:core-services:9537}" diff --git a/conf/monitor/monitor/alert/trigger_conditions.yaml b/conf/monitor/monitor/alert/trigger_conditions.yaml new file mode 100644 index 00000000000..4f9192c62b7 --- /dev/null +++ b/conf/monitor/monitor/alert/trigger_conditions.yaml @@ -0,0 +1,24 @@ +- scope: org + conditions: + - key: cluster_name + index: host_summary + filters: + - org_name + - key: host_ip + index: host_summary + filters: + - org_name +- scope: msp + conditions: + - key: application_name + index: application_service_node + filters: + - org_name + - project_id + - terminus_key + - key: service_name + index: application_service_node + filters: + - org_name + - project_id + - terminus_key diff --git a/conf/monitor/monitor/monitor.yaml b/conf/monitor/monitor/monitor.yaml index b75244d63b6..3e2babad8ed 100644 --- a/conf/monitor/monitor/monitor.yaml +++ b/conf/monitor/monitor/monitor.yaml @@ -80,7 +80,7 @@ storage-retention-strategy@log: ttl_reload_interval: "3m" elasticsearch.index.retention-strategy@log: _enable: ${QUERY_LOG_FROM_ES_ENABLE:false} - key_patterns: + key_patterns: - "erda-logs-.-{number}" elasticsearch.index.cleaner@log: _enable: ${QUERY_LOG_FROM_ES_ENABLE:false} @@ -192,7 +192,7 @@ storage-retention-strategy@metric: load_from_database: true ttl_reload_interval: "3m" elasticsearch.index.retention-strategy@metric: - key_patterns: + key_patterns: - "spot--.-r-{number}" - "spot--.-" elasticsearch.index.cleaner@metric: @@ -265,6 +265,7 @@ erda.core.monitor.alert: org_filter_tags: "${ORG_FILTER_TAGS:_metric_name,_metric_scope,_metric_scope_id}" micro_service_other_filter_tags: "${MICRO_SERVICE_OTHER_FILTER_TAGS:application_id}" silence_policy: "${SILENCE_POLICY:fixed,doubled}" + alert_conditions: "${CONFIG_PATH}/alert/trigger_conditions.yaml" cassandra: session: keyspace: diff --git a/modules/cmp/alert.go b/modules/cmp/alert.go new file mode 100644 index 00000000000..08d52553d37 --- /dev/null +++ b/modules/cmp/alert.go @@ -0,0 +1,72 @@ +// Copyright (c) 2021 Terminus, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package cmp + +import ( + "context" + "encoding/json" + + alertpb "github.com/erda-project/erda-proto-go/cmp/alert/pb" + monitor "github.com/erda-project/erda-proto-go/core/monitor/alert/pb" + "github.com/erda-project/erda/modules/monitor/utils" + "github.com/erda-project/erda/pkg/common/errors" +) + +func (p *provider) GetAlertConditions(ctx context.Context, request *alertpb.GetAlertConditionsRequest) (*alertpb.GetAlertConditionsResponse, error) { + conditionReq := &monitor.GetAlertConditionsRequest{ + ScopeType: request.ScopeType, + } + result, err := p.Monitor.GetAlertConditions(ctx, conditionReq) + if err != nil { + return nil, errors.NewInternalServerError(err) + } + data, err := json.Marshal(result.Data) + if err != nil { + return nil, errors.NewInternalServerError(err) + } + resp := &alertpb.GetAlertConditionsResponse{ + Data: make([]*monitor.Conditions, 0), + } + err = json.Unmarshal(data, &resp.Data) + if err != nil { + return nil, errors.NewInternalServerError(err) + } + return resp, nil +} + +func (p *provider) GetAlertConditionsValue(ctx context.Context, request *alertpb.GetAlertConditionsValueRequest) (*alertpb.GetAlertConditionsValueResponse, error) { + conditionReq := &monitor.GetAlertConditionsValueRequest{ + Condition: request.Condition, + Filters: request.Filters, + Index: request.Index, + } + context := utils.NewContextWithHeader(ctx) + result, err := p.Monitor.GetAlertConditionsValue(context, conditionReq) + if err != nil { + return nil, errors.NewInternalServerError(err) + } + data, err := json.Marshal(result.Data) + if err != nil { + return nil, errors.NewInternalServerError(err) + } + resp := &alertpb.GetAlertConditionsValueResponse{ + Data: &monitor.AlertConditionsValue{}, + } + err = json.Unmarshal(data, &resp.Data) + if err != nil { + return nil, errors.NewInternalServerError(err) + } + return resp, nil +} diff --git a/modules/cmp/alert_monitor_test.go b/modules/cmp/alert_monitor_test.go new file mode 100644 index 00000000000..faad47f6042 --- /dev/null +++ b/modules/cmp/alert_monitor_test.go @@ -0,0 +1,771 @@ +// Code generated by MockGen. DO NOT EDIT. +// Source: github.com/erda-project/erda-proto-go/core/monitor/alert/pb (interfaces: AlertServiceServer) + +// Package cmp is a generated GoMock package. +package cmp + +import ( + context "context" + reflect "reflect" + + pb "github.com/erda-project/erda-proto-go/core/monitor/alert/pb" + gomock "github.com/golang/mock/gomock" +) + +// MockAlertServiceServer is a mock of AlertServiceServer interface. +type MockAlertServiceServer struct { + ctrl *gomock.Controller + recorder *MockAlertServiceServerMockRecorder +} + +// MockAlertServiceServerMockRecorder is the mock recorder for MockAlertServiceServer. +type MockAlertServiceServerMockRecorder struct { + mock *MockAlertServiceServer +} + +// NewMockAlertServiceServer creates a new mock instance. +func NewMockAlertServiceServer(ctrl *gomock.Controller) *MockAlertServiceServer { + mock := &MockAlertServiceServer{ctrl: ctrl} + mock.recorder = &MockAlertServiceServerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockAlertServiceServer) EXPECT() *MockAlertServiceServerMockRecorder { + return m.recorder +} + +// CreateAlert mocks base method. +func (m *MockAlertServiceServer) CreateAlert(arg0 context.Context, arg1 *pb.CreateAlertRequest) (*pb.CreateAlertResponse, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "CreateAlert", arg0, arg1) + ret0, _ := ret[0].(*pb.CreateAlertResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// CreateAlert indicates an expected call of CreateAlert. +func (mr *MockAlertServiceServerMockRecorder) CreateAlert(arg0, arg1 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateAlert", reflect.TypeOf((*MockAlertServiceServer)(nil).CreateAlert), arg0, arg1) +} + +// CreateAlertIssue mocks base method. +func (m *MockAlertServiceServer) CreateAlertIssue(arg0 context.Context, arg1 *pb.CreateAlertIssueRequest) (*pb.CreateAlertIssueResponse, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "CreateAlertIssue", arg0, arg1) + ret0, _ := ret[0].(*pb.CreateAlertIssueResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// CreateAlertIssue indicates an expected call of CreateAlertIssue. +func (mr *MockAlertServiceServerMockRecorder) CreateAlertIssue(arg0, arg1 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateAlertIssue", reflect.TypeOf((*MockAlertServiceServer)(nil).CreateAlertIssue), arg0, arg1) +} + +// CreateCustomizeAlert mocks base method. +func (m *MockAlertServiceServer) CreateCustomizeAlert(arg0 context.Context, arg1 *pb.CreateCustomizeAlertRequest) (*pb.CreateCustomizeAlertResponse, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "CreateCustomizeAlert", arg0, arg1) + ret0, _ := ret[0].(*pb.CreateCustomizeAlertResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// CreateCustomizeAlert indicates an expected call of CreateCustomizeAlert. +func (mr *MockAlertServiceServerMockRecorder) CreateCustomizeAlert(arg0, arg1 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateCustomizeAlert", reflect.TypeOf((*MockAlertServiceServer)(nil).CreateCustomizeAlert), arg0, arg1) +} + +// CreateOrgAlert mocks base method. +func (m *MockAlertServiceServer) CreateOrgAlert(arg0 context.Context, arg1 *pb.CreateOrgAlertRequest) (*pb.CreateOrgAlertResponse, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "CreateOrgAlert", arg0, arg1) + ret0, _ := ret[0].(*pb.CreateOrgAlertResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// CreateOrgAlert indicates an expected call of CreateOrgAlert. +func (mr *MockAlertServiceServerMockRecorder) CreateOrgAlert(arg0, arg1 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateOrgAlert", reflect.TypeOf((*MockAlertServiceServer)(nil).CreateOrgAlert), arg0, arg1) +} + +// CreateOrgAlertIssue mocks base method. +func (m *MockAlertServiceServer) CreateOrgAlertIssue(arg0 context.Context, arg1 *pb.CreateOrgAlertIssueRequest) (*pb.CreateOrgAlertIssueResponse, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "CreateOrgAlertIssue", arg0, arg1) + ret0, _ := ret[0].(*pb.CreateOrgAlertIssueResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// CreateOrgAlertIssue indicates an expected call of CreateOrgAlertIssue. +func (mr *MockAlertServiceServerMockRecorder) CreateOrgAlertIssue(arg0, arg1 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateOrgAlertIssue", reflect.TypeOf((*MockAlertServiceServer)(nil).CreateOrgAlertIssue), arg0, arg1) +} + +// CreateOrgCustomizeAlert mocks base method. +func (m *MockAlertServiceServer) CreateOrgCustomizeAlert(arg0 context.Context, arg1 *pb.CreateOrgCustomizeAlertRequest) (*pb.CreateOrgCustomizeAlertResponse, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "CreateOrgCustomizeAlert", arg0, arg1) + ret0, _ := ret[0].(*pb.CreateOrgCustomizeAlertResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// CreateOrgCustomizeAlert indicates an expected call of CreateOrgCustomizeAlert. +func (mr *MockAlertServiceServerMockRecorder) CreateOrgCustomizeAlert(arg0, arg1 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateOrgCustomizeAlert", reflect.TypeOf((*MockAlertServiceServer)(nil).CreateOrgCustomizeAlert), arg0, arg1) +} + +// DeleteAlert mocks base method. +func (m *MockAlertServiceServer) DeleteAlert(arg0 context.Context, arg1 *pb.DeleteAlertRequest) (*pb.DeleteAlertResponse, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "DeleteAlert", arg0, arg1) + ret0, _ := ret[0].(*pb.DeleteAlertResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// DeleteAlert indicates an expected call of DeleteAlert. +func (mr *MockAlertServiceServerMockRecorder) DeleteAlert(arg0, arg1 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteAlert", reflect.TypeOf((*MockAlertServiceServer)(nil).DeleteAlert), arg0, arg1) +} + +// DeleteCustomizeAlert mocks base method. +func (m *MockAlertServiceServer) DeleteCustomizeAlert(arg0 context.Context, arg1 *pb.DeleteCustomizeAlertRequest) (*pb.DeleteCustomizeAlertResponse, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "DeleteCustomizeAlert", arg0, arg1) + ret0, _ := ret[0].(*pb.DeleteCustomizeAlertResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// DeleteCustomizeAlert indicates an expected call of DeleteCustomizeAlert. +func (mr *MockAlertServiceServerMockRecorder) DeleteCustomizeAlert(arg0, arg1 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteCustomizeAlert", reflect.TypeOf((*MockAlertServiceServer)(nil).DeleteCustomizeAlert), arg0, arg1) +} + +// DeleteOrgAlert mocks base method. +func (m *MockAlertServiceServer) DeleteOrgAlert(arg0 context.Context, arg1 *pb.DeleteOrgAlertRequest) (*pb.DeleteOrgAlertResponse, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "DeleteOrgAlert", arg0, arg1) + ret0, _ := ret[0].(*pb.DeleteOrgAlertResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// DeleteOrgAlert indicates an expected call of DeleteOrgAlert. +func (mr *MockAlertServiceServerMockRecorder) DeleteOrgAlert(arg0, arg1 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteOrgAlert", reflect.TypeOf((*MockAlertServiceServer)(nil).DeleteOrgAlert), arg0, arg1) +} + +// DeleteOrgCustomizeAlert mocks base method. +func (m *MockAlertServiceServer) DeleteOrgCustomizeAlert(arg0 context.Context, arg1 *pb.DeleteOrgCustomizeAlertRequest) (*pb.DeleteOrgCustomizeAlertResponse, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "DeleteOrgCustomizeAlert", arg0, arg1) + ret0, _ := ret[0].(*pb.DeleteOrgCustomizeAlertResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// DeleteOrgCustomizeAlert indicates an expected call of DeleteOrgCustomizeAlert. +func (mr *MockAlertServiceServerMockRecorder) DeleteOrgCustomizeAlert(arg0, arg1 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteOrgCustomizeAlert", reflect.TypeOf((*MockAlertServiceServer)(nil).DeleteOrgCustomizeAlert), arg0, arg1) +} + +// GetAlert mocks base method. +func (m *MockAlertServiceServer) GetAlert(arg0 context.Context, arg1 *pb.GetAlertRequest) (*pb.GetAlertResponse, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetAlert", arg0, arg1) + ret0, _ := ret[0].(*pb.GetAlertResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetAlert indicates an expected call of GetAlert. +func (mr *MockAlertServiceServerMockRecorder) GetAlert(arg0, arg1 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetAlert", reflect.TypeOf((*MockAlertServiceServer)(nil).GetAlert), arg0, arg1) +} + +// GetAlertConditions mocks base method. +func (m *MockAlertServiceServer) GetAlertConditions(arg0 context.Context, arg1 *pb.GetAlertConditionsRequest) (*pb.GetAlertConditionsResponse, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetAlertConditions", arg0, arg1) + ret0, _ := ret[0].(*pb.GetAlertConditionsResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetAlertConditions indicates an expected call of GetAlertConditions. +func (mr *MockAlertServiceServerMockRecorder) GetAlertConditions(arg0, arg1 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetAlertConditions", reflect.TypeOf((*MockAlertServiceServer)(nil).GetAlertConditions), arg0, arg1) +} + +// GetAlertConditionsValue mocks base method. +func (m *MockAlertServiceServer) GetAlertConditionsValue(arg0 context.Context, arg1 *pb.GetAlertConditionsValueRequest) (*pb.GetAlertConditionsValueResponse, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetAlertConditionsValue", arg0, arg1) + ret0, _ := ret[0].(*pb.GetAlertConditionsValueResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetAlertConditionsValue indicates an expected call of GetAlertConditionsValue. +func (mr *MockAlertServiceServerMockRecorder) GetAlertConditionsValue(arg0, arg1 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetAlertConditionsValue", reflect.TypeOf((*MockAlertServiceServer)(nil).GetAlertConditionsValue), arg0, arg1) +} + +// GetAlertDetail mocks base method. +func (m *MockAlertServiceServer) GetAlertDetail(arg0 context.Context, arg1 *pb.GetAlertDetailRequest) (*pb.GetAlertDetailResponse, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetAlertDetail", arg0, arg1) + ret0, _ := ret[0].(*pb.GetAlertDetailResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetAlertDetail indicates an expected call of GetAlertDetail. +func (mr *MockAlertServiceServerMockRecorder) GetAlertDetail(arg0, arg1 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetAlertDetail", reflect.TypeOf((*MockAlertServiceServer)(nil).GetAlertDetail), arg0, arg1) +} + +// GetAlertRecord mocks base method. +func (m *MockAlertServiceServer) GetAlertRecord(arg0 context.Context, arg1 *pb.GetAlertRecordRequest) (*pb.GetAlertRecordResponse, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetAlertRecord", arg0, arg1) + ret0, _ := ret[0].(*pb.GetAlertRecordResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetAlertRecord indicates an expected call of GetAlertRecord. +func (mr *MockAlertServiceServerMockRecorder) GetAlertRecord(arg0, arg1 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetAlertRecord", reflect.TypeOf((*MockAlertServiceServer)(nil).GetAlertRecord), arg0, arg1) +} + +// GetAlertRecordAttr mocks base method. +func (m *MockAlertServiceServer) GetAlertRecordAttr(arg0 context.Context, arg1 *pb.GetAlertRecordAttrRequest) (*pb.GetAlertRecordAttrResponse, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetAlertRecordAttr", arg0, arg1) + ret0, _ := ret[0].(*pb.GetAlertRecordAttrResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetAlertRecordAttr indicates an expected call of GetAlertRecordAttr. +func (mr *MockAlertServiceServerMockRecorder) GetAlertRecordAttr(arg0, arg1 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetAlertRecordAttr", reflect.TypeOf((*MockAlertServiceServer)(nil).GetAlertRecordAttr), arg0, arg1) +} + +// GetCustomizeAlert mocks base method. +func (m *MockAlertServiceServer) GetCustomizeAlert(arg0 context.Context, arg1 *pb.GetCustomizeAlertRequest) (*pb.GetCustomizeAlertResponse, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetCustomizeAlert", arg0, arg1) + ret0, _ := ret[0].(*pb.GetCustomizeAlertResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetCustomizeAlert indicates an expected call of GetCustomizeAlert. +func (mr *MockAlertServiceServerMockRecorder) GetCustomizeAlert(arg0, arg1 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetCustomizeAlert", reflect.TypeOf((*MockAlertServiceServer)(nil).GetCustomizeAlert), arg0, arg1) +} + +// GetCustomizeAlertDetail mocks base method. +func (m *MockAlertServiceServer) GetCustomizeAlertDetail(arg0 context.Context, arg1 *pb.GetCustomizeAlertDetailRequest) (*pb.GetCustomizeAlertDetailResponse, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetCustomizeAlertDetail", arg0, arg1) + ret0, _ := ret[0].(*pb.GetCustomizeAlertDetailResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetCustomizeAlertDetail indicates an expected call of GetCustomizeAlertDetail. +func (mr *MockAlertServiceServerMockRecorder) GetCustomizeAlertDetail(arg0, arg1 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetCustomizeAlertDetail", reflect.TypeOf((*MockAlertServiceServer)(nil).GetCustomizeAlertDetail), arg0, arg1) +} + +// GetOrgAlertDetail mocks base method. +func (m *MockAlertServiceServer) GetOrgAlertDetail(arg0 context.Context, arg1 *pb.GetOrgAlertDetailRequest) (*pb.GetOrgAlertDetailResponse, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetOrgAlertDetail", arg0, arg1) + ret0, _ := ret[0].(*pb.GetOrgAlertDetailResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetOrgAlertDetail indicates an expected call of GetOrgAlertDetail. +func (mr *MockAlertServiceServerMockRecorder) GetOrgAlertDetail(arg0, arg1 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetOrgAlertDetail", reflect.TypeOf((*MockAlertServiceServer)(nil).GetOrgAlertDetail), arg0, arg1) +} + +// GetOrgAlertRecord mocks base method. +func (m *MockAlertServiceServer) GetOrgAlertRecord(arg0 context.Context, arg1 *pb.GetOrgAlertRecordRequest) (*pb.GetOrgAlertRecordResponse, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetOrgAlertRecord", arg0, arg1) + ret0, _ := ret[0].(*pb.GetOrgAlertRecordResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetOrgAlertRecord indicates an expected call of GetOrgAlertRecord. +func (mr *MockAlertServiceServerMockRecorder) GetOrgAlertRecord(arg0, arg1 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetOrgAlertRecord", reflect.TypeOf((*MockAlertServiceServer)(nil).GetOrgAlertRecord), arg0, arg1) +} + +// GetOrgAlertRecordAttr mocks base method. +func (m *MockAlertServiceServer) GetOrgAlertRecordAttr(arg0 context.Context, arg1 *pb.GetOrgAlertRecordAttrRequest) (*pb.GetOrgAlertRecordAttrResponse, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetOrgAlertRecordAttr", arg0, arg1) + ret0, _ := ret[0].(*pb.GetOrgAlertRecordAttrResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetOrgAlertRecordAttr indicates an expected call of GetOrgAlertRecordAttr. +func (mr *MockAlertServiceServerMockRecorder) GetOrgAlertRecordAttr(arg0, arg1 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetOrgAlertRecordAttr", reflect.TypeOf((*MockAlertServiceServer)(nil).GetOrgAlertRecordAttr), arg0, arg1) +} + +// GetOrgCustomizeAlertDetail mocks base method. +func (m *MockAlertServiceServer) GetOrgCustomizeAlertDetail(arg0 context.Context, arg1 *pb.GetOrgCustomizeAlertDetailRequest) (*pb.GetOrgCustomizeAlertDetailResponse, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetOrgCustomizeAlertDetail", arg0, arg1) + ret0, _ := ret[0].(*pb.GetOrgCustomizeAlertDetailResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetOrgCustomizeAlertDetail indicates an expected call of GetOrgCustomizeAlertDetail. +func (mr *MockAlertServiceServerMockRecorder) GetOrgCustomizeAlertDetail(arg0, arg1 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetOrgCustomizeAlertDetail", reflect.TypeOf((*MockAlertServiceServer)(nil).GetOrgCustomizeAlertDetail), arg0, arg1) +} + +// QueryAlert mocks base method. +func (m *MockAlertServiceServer) QueryAlert(arg0 context.Context, arg1 *pb.QueryAlertRequest) (*pb.QueryAlertsResponse, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "QueryAlert", arg0, arg1) + ret0, _ := ret[0].(*pb.QueryAlertsResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// QueryAlert indicates an expected call of QueryAlert. +func (mr *MockAlertServiceServerMockRecorder) QueryAlert(arg0, arg1 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "QueryAlert", reflect.TypeOf((*MockAlertServiceServer)(nil).QueryAlert), arg0, arg1) +} + +// QueryAlertHistory mocks base method. +func (m *MockAlertServiceServer) QueryAlertHistory(arg0 context.Context, arg1 *pb.QueryAlertHistoryRequest) (*pb.QueryAlertHistoryResponse, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "QueryAlertHistory", arg0, arg1) + ret0, _ := ret[0].(*pb.QueryAlertHistoryResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// QueryAlertHistory indicates an expected call of QueryAlertHistory. +func (mr *MockAlertServiceServerMockRecorder) QueryAlertHistory(arg0, arg1 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "QueryAlertHistory", reflect.TypeOf((*MockAlertServiceServer)(nil).QueryAlertHistory), arg0, arg1) +} + +// QueryAlertRecord mocks base method. +func (m *MockAlertServiceServer) QueryAlertRecord(arg0 context.Context, arg1 *pb.QueryAlertRecordRequest) (*pb.QueryAlertRecordResponse, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "QueryAlertRecord", arg0, arg1) + ret0, _ := ret[0].(*pb.QueryAlertRecordResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// QueryAlertRecord indicates an expected call of QueryAlertRecord. +func (mr *MockAlertServiceServerMockRecorder) QueryAlertRecord(arg0, arg1 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "QueryAlertRecord", reflect.TypeOf((*MockAlertServiceServer)(nil).QueryAlertRecord), arg0, arg1) +} + +// QueryAlertRule mocks base method. +func (m *MockAlertServiceServer) QueryAlertRule(arg0 context.Context, arg1 *pb.QueryAlertRuleRequest) (*pb.QueryAlertRuleResponse, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "QueryAlertRule", arg0, arg1) + ret0, _ := ret[0].(*pb.QueryAlertRuleResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// QueryAlertRule indicates an expected call of QueryAlertRule. +func (mr *MockAlertServiceServerMockRecorder) QueryAlertRule(arg0, arg1 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "QueryAlertRule", reflect.TypeOf((*MockAlertServiceServer)(nil).QueryAlertRule), arg0, arg1) +} + +// QueryCustomizeAlert mocks base method. +func (m *MockAlertServiceServer) QueryCustomizeAlert(arg0 context.Context, arg1 *pb.QueryCustomizeAlertRequest) (*pb.QueryCustomizeAlertResponse, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "QueryCustomizeAlert", arg0, arg1) + ret0, _ := ret[0].(*pb.QueryCustomizeAlertResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// QueryCustomizeAlert indicates an expected call of QueryCustomizeAlert. +func (mr *MockAlertServiceServerMockRecorder) QueryCustomizeAlert(arg0, arg1 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "QueryCustomizeAlert", reflect.TypeOf((*MockAlertServiceServer)(nil).QueryCustomizeAlert), arg0, arg1) +} + +// QueryCustomizeMetric mocks base method. +func (m *MockAlertServiceServer) QueryCustomizeMetric(arg0 context.Context, arg1 *pb.QueryCustomizeMetricRequest) (*pb.QueryCustomizeMetricResponse, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "QueryCustomizeMetric", arg0, arg1) + ret0, _ := ret[0].(*pb.QueryCustomizeMetricResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// QueryCustomizeMetric indicates an expected call of QueryCustomizeMetric. +func (mr *MockAlertServiceServerMockRecorder) QueryCustomizeMetric(arg0, arg1 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "QueryCustomizeMetric", reflect.TypeOf((*MockAlertServiceServer)(nil).QueryCustomizeMetric), arg0, arg1) +} + +// QueryCustomizeNotifyTarget mocks base method. +func (m *MockAlertServiceServer) QueryCustomizeNotifyTarget(arg0 context.Context, arg1 *pb.QueryCustomizeNotifyTargetRequest) (*pb.QueryCustomizeNotifyTargetResponse, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "QueryCustomizeNotifyTarget", arg0, arg1) + ret0, _ := ret[0].(*pb.QueryCustomizeNotifyTargetResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// QueryCustomizeNotifyTarget indicates an expected call of QueryCustomizeNotifyTarget. +func (mr *MockAlertServiceServerMockRecorder) QueryCustomizeNotifyTarget(arg0, arg1 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "QueryCustomizeNotifyTarget", reflect.TypeOf((*MockAlertServiceServer)(nil).QueryCustomizeNotifyTarget), arg0, arg1) +} + +// QueryDashboardByAlert mocks base method. +func (m *MockAlertServiceServer) QueryDashboardByAlert(arg0 context.Context, arg1 *pb.QueryDashboardByAlertRequest) (*pb.QueryDashboardByAlertResponse, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "QueryDashboardByAlert", arg0, arg1) + ret0, _ := ret[0].(*pb.QueryDashboardByAlertResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// QueryDashboardByAlert indicates an expected call of QueryDashboardByAlert. +func (mr *MockAlertServiceServerMockRecorder) QueryDashboardByAlert(arg0, arg1 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "QueryDashboardByAlert", reflect.TypeOf((*MockAlertServiceServer)(nil).QueryDashboardByAlert), arg0, arg1) +} + +// QueryOrgAlert mocks base method. +func (m *MockAlertServiceServer) QueryOrgAlert(arg0 context.Context, arg1 *pb.QueryOrgAlertRequest) (*pb.QueryOrgAlertResponse, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "QueryOrgAlert", arg0, arg1) + ret0, _ := ret[0].(*pb.QueryOrgAlertResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// QueryOrgAlert indicates an expected call of QueryOrgAlert. +func (mr *MockAlertServiceServerMockRecorder) QueryOrgAlert(arg0, arg1 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "QueryOrgAlert", reflect.TypeOf((*MockAlertServiceServer)(nil).QueryOrgAlert), arg0, arg1) +} + +// QueryOrgAlertHistory mocks base method. +func (m *MockAlertServiceServer) QueryOrgAlertHistory(arg0 context.Context, arg1 *pb.QueryOrgAlertHistoryRequest) (*pb.QueryOrgAlertHistoryResponse, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "QueryOrgAlertHistory", arg0, arg1) + ret0, _ := ret[0].(*pb.QueryOrgAlertHistoryResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// QueryOrgAlertHistory indicates an expected call of QueryOrgAlertHistory. +func (mr *MockAlertServiceServerMockRecorder) QueryOrgAlertHistory(arg0, arg1 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "QueryOrgAlertHistory", reflect.TypeOf((*MockAlertServiceServer)(nil).QueryOrgAlertHistory), arg0, arg1) +} + +// QueryOrgAlertRecord mocks base method. +func (m *MockAlertServiceServer) QueryOrgAlertRecord(arg0 context.Context, arg1 *pb.QueryOrgAlertRecordRequest) (*pb.QueryOrgAlertRecordResponse, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "QueryOrgAlertRecord", arg0, arg1) + ret0, _ := ret[0].(*pb.QueryOrgAlertRecordResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// QueryOrgAlertRecord indicates an expected call of QueryOrgAlertRecord. +func (mr *MockAlertServiceServerMockRecorder) QueryOrgAlertRecord(arg0, arg1 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "QueryOrgAlertRecord", reflect.TypeOf((*MockAlertServiceServer)(nil).QueryOrgAlertRecord), arg0, arg1) +} + +// QueryOrgAlertRule mocks base method. +func (m *MockAlertServiceServer) QueryOrgAlertRule(arg0 context.Context, arg1 *pb.QueryOrgAlertRuleRequest) (*pb.QueryOrgAlertRuleResponse, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "QueryOrgAlertRule", arg0, arg1) + ret0, _ := ret[0].(*pb.QueryOrgAlertRuleResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// QueryOrgAlertRule indicates an expected call of QueryOrgAlertRule. +func (mr *MockAlertServiceServerMockRecorder) QueryOrgAlertRule(arg0, arg1 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "QueryOrgAlertRule", reflect.TypeOf((*MockAlertServiceServer)(nil).QueryOrgAlertRule), arg0, arg1) +} + +// QueryOrgCustomizeAlerts mocks base method. +func (m *MockAlertServiceServer) QueryOrgCustomizeAlerts(arg0 context.Context, arg1 *pb.QueryOrgCustomizeAlertsRequest) (*pb.QueryOrgCustomizeAlertsResponse, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "QueryOrgCustomizeAlerts", arg0, arg1) + ret0, _ := ret[0].(*pb.QueryOrgCustomizeAlertsResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// QueryOrgCustomizeAlerts indicates an expected call of QueryOrgCustomizeAlerts. +func (mr *MockAlertServiceServerMockRecorder) QueryOrgCustomizeAlerts(arg0, arg1 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "QueryOrgCustomizeAlerts", reflect.TypeOf((*MockAlertServiceServer)(nil).QueryOrgCustomizeAlerts), arg0, arg1) +} + +// QueryOrgCustomizeMetric mocks base method. +func (m *MockAlertServiceServer) QueryOrgCustomizeMetric(arg0 context.Context, arg1 *pb.QueryOrgCustomizeMetricRequest) (*pb.QueryOrgCustomizeMetricResponse, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "QueryOrgCustomizeMetric", arg0, arg1) + ret0, _ := ret[0].(*pb.QueryOrgCustomizeMetricResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// QueryOrgCustomizeMetric indicates an expected call of QueryOrgCustomizeMetric. +func (mr *MockAlertServiceServerMockRecorder) QueryOrgCustomizeMetric(arg0, arg1 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "QueryOrgCustomizeMetric", reflect.TypeOf((*MockAlertServiceServer)(nil).QueryOrgCustomizeMetric), arg0, arg1) +} + +// QueryOrgCustomizeNotifyTarget mocks base method. +func (m *MockAlertServiceServer) QueryOrgCustomizeNotifyTarget(arg0 context.Context, arg1 *pb.QueryOrgCustomizeNotifyTargetRequest) (*pb.QueryOrgCustomizeNotifyTargetResponse, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "QueryOrgCustomizeNotifyTarget", arg0, arg1) + ret0, _ := ret[0].(*pb.QueryOrgCustomizeNotifyTargetResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// QueryOrgCustomizeNotifyTarget indicates an expected call of QueryOrgCustomizeNotifyTarget. +func (mr *MockAlertServiceServerMockRecorder) QueryOrgCustomizeNotifyTarget(arg0, arg1 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "QueryOrgCustomizeNotifyTarget", reflect.TypeOf((*MockAlertServiceServer)(nil).QueryOrgCustomizeNotifyTarget), arg0, arg1) +} + +// QueryOrgDashboardByAlert mocks base method. +func (m *MockAlertServiceServer) QueryOrgDashboardByAlert(arg0 context.Context, arg1 *pb.QueryOrgDashboardByAlertRequest) (*pb.QueryOrgDashboardByAlertResponse, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "QueryOrgDashboardByAlert", arg0, arg1) + ret0, _ := ret[0].(*pb.QueryOrgDashboardByAlertResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// QueryOrgDashboardByAlert indicates an expected call of QueryOrgDashboardByAlert. +func (mr *MockAlertServiceServerMockRecorder) QueryOrgDashboardByAlert(arg0, arg1 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "QueryOrgDashboardByAlert", reflect.TypeOf((*MockAlertServiceServer)(nil).QueryOrgDashboardByAlert), arg0, arg1) +} + +// QueryOrgHostsAlertRecord mocks base method. +func (m *MockAlertServiceServer) QueryOrgHostsAlertRecord(arg0 context.Context, arg1 *pb.QueryOrgHostsAlertRecordRequest) (*pb.QueryOrgAlertRecordResponse, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "QueryOrgHostsAlertRecord", arg0, arg1) + ret0, _ := ret[0].(*pb.QueryOrgAlertRecordResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// QueryOrgHostsAlertRecord indicates an expected call of QueryOrgHostsAlertRecord. +func (mr *MockAlertServiceServerMockRecorder) QueryOrgHostsAlertRecord(arg0, arg1 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "QueryOrgHostsAlertRecord", reflect.TypeOf((*MockAlertServiceServer)(nil).QueryOrgHostsAlertRecord), arg0, arg1) +} + +// UpdateAlert mocks base method. +func (m *MockAlertServiceServer) UpdateAlert(arg0 context.Context, arg1 *pb.UpdateAlertRequest) (*pb.UpdateAlertResponse, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "UpdateAlert", arg0, arg1) + ret0, _ := ret[0].(*pb.UpdateAlertResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// UpdateAlert indicates an expected call of UpdateAlert. +func (mr *MockAlertServiceServerMockRecorder) UpdateAlert(arg0, arg1 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateAlert", reflect.TypeOf((*MockAlertServiceServer)(nil).UpdateAlert), arg0, arg1) +} + +// UpdateAlertEnable mocks base method. +func (m *MockAlertServiceServer) UpdateAlertEnable(arg0 context.Context, arg1 *pb.UpdateAlertEnableRequest) (*pb.UpdateAlertEnableResponse, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "UpdateAlertEnable", arg0, arg1) + ret0, _ := ret[0].(*pb.UpdateAlertEnableResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// UpdateAlertEnable indicates an expected call of UpdateAlertEnable. +func (mr *MockAlertServiceServerMockRecorder) UpdateAlertEnable(arg0, arg1 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateAlertEnable", reflect.TypeOf((*MockAlertServiceServer)(nil).UpdateAlertEnable), arg0, arg1) +} + +// UpdateAlertIssue mocks base method. +func (m *MockAlertServiceServer) UpdateAlertIssue(arg0 context.Context, arg1 *pb.UpdateAlertIssueRequest) (*pb.UpdateAlertIssueResponse, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "UpdateAlertIssue", arg0, arg1) + ret0, _ := ret[0].(*pb.UpdateAlertIssueResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// UpdateAlertIssue indicates an expected call of UpdateAlertIssue. +func (mr *MockAlertServiceServerMockRecorder) UpdateAlertIssue(arg0, arg1 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateAlertIssue", reflect.TypeOf((*MockAlertServiceServer)(nil).UpdateAlertIssue), arg0, arg1) +} + +// UpdateCustomizeAlert mocks base method. +func (m *MockAlertServiceServer) UpdateCustomizeAlert(arg0 context.Context, arg1 *pb.UpdateCustomizeAlertRequest) (*pb.UpdateCustomizeAlertResponse, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "UpdateCustomizeAlert", arg0, arg1) + ret0, _ := ret[0].(*pb.UpdateCustomizeAlertResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// UpdateCustomizeAlert indicates an expected call of UpdateCustomizeAlert. +func (mr *MockAlertServiceServerMockRecorder) UpdateCustomizeAlert(arg0, arg1 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateCustomizeAlert", reflect.TypeOf((*MockAlertServiceServer)(nil).UpdateCustomizeAlert), arg0, arg1) +} + +// UpdateCustomizeAlertEnable mocks base method. +func (m *MockAlertServiceServer) UpdateCustomizeAlertEnable(arg0 context.Context, arg1 *pb.UpdateCustomizeAlertEnableRequest) (*pb.UpdateCustomizeAlertEnableResponse, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "UpdateCustomizeAlertEnable", arg0, arg1) + ret0, _ := ret[0].(*pb.UpdateCustomizeAlertEnableResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// UpdateCustomizeAlertEnable indicates an expected call of UpdateCustomizeAlertEnable. +func (mr *MockAlertServiceServerMockRecorder) UpdateCustomizeAlertEnable(arg0, arg1 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateCustomizeAlertEnable", reflect.TypeOf((*MockAlertServiceServer)(nil).UpdateCustomizeAlertEnable), arg0, arg1) +} + +// UpdateOrgAlert mocks base method. +func (m *MockAlertServiceServer) UpdateOrgAlert(arg0 context.Context, arg1 *pb.UpdateOrgAlertRequest) (*pb.UpdateOrgAlertResponse, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "UpdateOrgAlert", arg0, arg1) + ret0, _ := ret[0].(*pb.UpdateOrgAlertResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// UpdateOrgAlert indicates an expected call of UpdateOrgAlert. +func (mr *MockAlertServiceServerMockRecorder) UpdateOrgAlert(arg0, arg1 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateOrgAlert", reflect.TypeOf((*MockAlertServiceServer)(nil).UpdateOrgAlert), arg0, arg1) +} + +// UpdateOrgAlertEnable mocks base method. +func (m *MockAlertServiceServer) UpdateOrgAlertEnable(arg0 context.Context, arg1 *pb.UpdateOrgAlertEnableRequest) (*pb.UpdateOrgAlertEnableResponse, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "UpdateOrgAlertEnable", arg0, arg1) + ret0, _ := ret[0].(*pb.UpdateOrgAlertEnableResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// UpdateOrgAlertEnable indicates an expected call of UpdateOrgAlertEnable. +func (mr *MockAlertServiceServerMockRecorder) UpdateOrgAlertEnable(arg0, arg1 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateOrgAlertEnable", reflect.TypeOf((*MockAlertServiceServer)(nil).UpdateOrgAlertEnable), arg0, arg1) +} + +// UpdateOrgAlertIssue mocks base method. +func (m *MockAlertServiceServer) UpdateOrgAlertIssue(arg0 context.Context, arg1 *pb.UpdateOrgAlertIssueRequest) (*pb.UpdateOrgAlertIssueResponse, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "UpdateOrgAlertIssue", arg0, arg1) + ret0, _ := ret[0].(*pb.UpdateOrgAlertIssueResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// UpdateOrgAlertIssue indicates an expected call of UpdateOrgAlertIssue. +func (mr *MockAlertServiceServerMockRecorder) UpdateOrgAlertIssue(arg0, arg1 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateOrgAlertIssue", reflect.TypeOf((*MockAlertServiceServer)(nil).UpdateOrgAlertIssue), arg0, arg1) +} + +// UpdateOrgCustomizeAlert mocks base method. +func (m *MockAlertServiceServer) UpdateOrgCustomizeAlert(arg0 context.Context, arg1 *pb.UpdateOrgCustomizeAlertRequest) (*pb.UpdateOrgCustomizeAlertResponse, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "UpdateOrgCustomizeAlert", arg0, arg1) + ret0, _ := ret[0].(*pb.UpdateOrgCustomizeAlertResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// UpdateOrgCustomizeAlert indicates an expected call of UpdateOrgCustomizeAlert. +func (mr *MockAlertServiceServerMockRecorder) UpdateOrgCustomizeAlert(arg0, arg1 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateOrgCustomizeAlert", reflect.TypeOf((*MockAlertServiceServer)(nil).UpdateOrgCustomizeAlert), arg0, arg1) +} + +// UpdateOrgCustomizeAlertEnable mocks base method. +func (m *MockAlertServiceServer) UpdateOrgCustomizeAlertEnable(arg0 context.Context, arg1 *pb.UpdateOrgCustomizeAlertEnableRequest) (*pb.UpdateOrgCustomizeAlertEnableResponse, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "UpdateOrgCustomizeAlertEnable", arg0, arg1) + ret0, _ := ret[0].(*pb.UpdateOrgCustomizeAlertEnableResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// UpdateOrgCustomizeAlertEnable indicates an expected call of UpdateOrgCustomizeAlertEnable. +func (mr *MockAlertServiceServerMockRecorder) UpdateOrgCustomizeAlertEnable(arg0, arg1 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateOrgCustomizeAlertEnable", reflect.TypeOf((*MockAlertServiceServer)(nil).UpdateOrgCustomizeAlertEnable), arg0, arg1) +} diff --git a/modules/cmp/alert_register_test.go b/modules/cmp/alert_register_test.go new file mode 100644 index 00000000000..b4bf15e96bd --- /dev/null +++ b/modules/cmp/alert_register_test.go @@ -0,0 +1,60 @@ +// Code generated by MockGen. DO NOT EDIT. +// Source: github.com/erda-project/erda-infra/pkg/transport (interfaces: Register) + +// Package cmp is a generated GoMock package. +package cmp + +import ( + reflect "reflect" + + http "github.com/erda-project/erda-infra/pkg/transport/http" + gomock "github.com/golang/mock/gomock" + grpc "google.golang.org/grpc" +) + +// MockRegister is a mock of Register interface. +type MockRegister struct { + ctrl *gomock.Controller + recorder *MockRegisterMockRecorder +} + +// MockRegisterMockRecorder is the mock recorder for MockRegister. +type MockRegisterMockRecorder struct { + mock *MockRegister +} + +// NewMockRegister creates a new mock instance. +func NewMockRegister(ctrl *gomock.Controller) *MockRegister { + mock := &MockRegister{ctrl: ctrl} + mock.recorder = &MockRegisterMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockRegister) EXPECT() *MockRegisterMockRecorder { + return m.recorder +} + +// Add mocks base method. +func (m *MockRegister) Add(arg0, arg1 string, arg2 http.HandlerFunc) { + m.ctrl.T.Helper() + m.ctrl.Call(m, "Add", arg0, arg1, arg2) +} + +// Add indicates an expected call of Add. +func (mr *MockRegisterMockRecorder) Add(arg0, arg1, arg2 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Add", reflect.TypeOf((*MockRegister)(nil).Add), arg0, arg1, arg2) +} + +// RegisterService mocks base method. +func (m *MockRegister) RegisterService(arg0 *grpc.ServiceDesc, arg1 interface{}) { + m.ctrl.T.Helper() + m.ctrl.Call(m, "RegisterService", arg0, arg1) +} + +// RegisterService indicates an expected call of RegisterService. +func (mr *MockRegisterMockRecorder) RegisterService(arg0, arg1 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RegisterService", reflect.TypeOf((*MockRegister)(nil).RegisterService), arg0, arg1) +} diff --git a/modules/cmp/alert_test.go b/modules/cmp/alert_test.go new file mode 100644 index 00000000000..40cec90f2b0 --- /dev/null +++ b/modules/cmp/alert_test.go @@ -0,0 +1,84 @@ +// Copyright (c) 2021 Terminus, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package cmp + +import ( + "context" + "fmt" + "testing" + + "github.com/golang/mock/gomock" + "google.golang.org/protobuf/types/known/structpb" + + "github.com/erda-project/erda-proto-go/cmp/alert/pb" + monitor "github.com/erda-project/erda-proto-go/core/monitor/alert/pb" +) + +////go:generate mockgen -destination=./alert_register_test.go -package cmp github.com/erda-project/erda-infra/pkg/transport Register +////go:generate mockgen -destination=./alert_monitor_test.go -package cmp github.com/erda-project/erda-proto-go/core/monitor/alert/pb AlertServiceServer +func Test_provider_GetAlertConditions(t *testing.T) { + ctrl := gomock.NewController(t) + defer ctrl.Finish() + monitorService := NewMockAlertServiceServer(ctrl) + monitorService.EXPECT().GetAlertConditions(gomock.Any(), gomock.Any()).AnyTimes().Return(&monitor.GetAlertConditionsResponse{ + Data: []*monitor.Conditions{ + { + Key: "application_name", + DisplayName: "应用", + }, + { + Key: "service_name", + DisplayName: "服务", + }, + }, + }, nil) + pro := &provider{ + Monitor: monitorService, + } + _, err := pro.GetAlertConditions(context.Background(), &pb.GetAlertConditionsRequest{ + ScopeType: "msp", + }) + if err != nil { + fmt.Println("should not err,err is ", err) + } +} + +func Test_alertService_GetAlertConditionsValue(t *testing.T) { + ctrl := gomock.NewController(t) + defer ctrl.Finish() + monitorService := NewMockAlertServiceServer(ctrl) + monitorService.EXPECT().GetAlertConditionsValue(gomock.Any(), gomock.Any()).AnyTimes().Return(&monitor.GetAlertConditionsValueResponse{ + Data: &monitor.AlertConditionsValue{ + Key: "cluster_name", + Options: []*structpb.Value{ + structpb.NewStringValue("terminus-dev"), + }, + }, + }, nil) + pro := &provider{ + Monitor: monitorService, + } + + _, err := pro.GetAlertConditionsValue(context.Background(), &pb.GetAlertConditionsValueRequest{ + Condition: "cluster_name", + Filters: map[string]string{ + "org_name": "terminus", + }, + Index: "host_summary", + }) + if err != nil { + fmt.Println("should not err,err is ", err) + } +} diff --git a/modules/cmp/provider.go b/modules/cmp/provider.go index c8a681767c2..e3db1ded935 100644 --- a/modules/cmp/provider.go +++ b/modules/cmp/provider.go @@ -28,7 +28,9 @@ import ( componentprotocol "github.com/erda-project/erda-infra/providers/component-protocol" "github.com/erda-project/erda-infra/providers/component-protocol/protocol" "github.com/erda-project/erda-infra/providers/i18n" + alertpb "github.com/erda-project/erda-proto-go/cmp/alert/pb" pb2 "github.com/erda-project/erda-proto-go/cmp/dashboard/pb" + monitor "github.com/erda-project/erda-proto-go/core/monitor/alert/pb" "github.com/erda-project/erda-proto-go/core/monitor/metric/pb" credentialpb "github.com/erda-project/erda-proto-go/core/services/authentication/credentials/accesskey/pb" "github.com/erda-project/erda/bundle" @@ -49,6 +51,7 @@ type provider struct { Register transport.Register `autowired:"service-register" optional:"true"` Metrics *metrics.Metric + Monitor monitor.AlertServiceServer `autowired:"erda.core.monitor.alert.AlertService" optional:"true"` Protocol componentprotocol.Interface Resource *resource.Resource Tran i18n.Translator `translator:"component-protocol"` @@ -78,6 +81,8 @@ func (p *provider) Init(ctx servicehub.Context) error { )) protocol.MustRegisterProtocolsFromFS(scenarioFS) pb2.RegisterClusterResourceImp(p.Register, p, apis.Options()) + alertpb.RegisterAlertServiceImp(p.Register, p, apis.Options()) + return nil } diff --git a/modules/core/monitor/alert/alert-apis/adapt/alert.go b/modules/core/monitor/alert/alert-apis/adapt/alert.go index f6b9cb6e392..db2200555c4 100644 --- a/modules/core/monitor/alert/alert-apis/adapt/alert.go +++ b/modules/core/monitor/alert/alert-apis/adapt/alert.go @@ -19,6 +19,7 @@ import ( "errors" "fmt" "strconv" + "strings" "github.com/sirupsen/logrus" "google.golang.org/protobuf/types/known/structpb" @@ -141,6 +142,8 @@ const ( dashboardPath = "/dataCenter/customDashboard" recordPath = "/dataCenter/alarm/record" + + TriggerCondition = "trigger_condition" ) // QueryAlertRule . @@ -423,13 +426,34 @@ func (a *Adapt) GetOrgAlertDetail(lang i18n.LanguageCodes, id uint64) (*pb.Alert } output := a.ValueMapToInterfaceMap(alert.Attributes) if clusterNames, ok := utils.GetMapValueArr(output, "cluster_name"); ok { + names := make([]string, 0) + condition := &pb.TriggerCondition{ + Condition: ClusterName, + Operator: "in", + } for _, v := range clusterNames { if clusterName, ok := v.(string); ok { - alert.ClusterNames = append(alert.ClusterNames, clusterName) + names = append(names, clusterName) } } + condition.Values = strings.Join(names, ",") + alert.TriggerCondition = append(alert.TriggerCondition, condition) } else if clusterName, ok := utils.GetMapValueString(output, "cluster_name"); ok { - alert.ClusterNames = append(alert.ClusterNames, clusterName) + condition := &pb.TriggerCondition{ + Condition: ClusterName, + Operator: "in", + Values: clusterName, + } + alert.TriggerCondition = append(alert.TriggerCondition, condition) + } else { + if condition, ok := output[TriggerCondition]; ok { + conditions := make([]*pb.TriggerCondition, 0) + err = json.Unmarshal([]byte(condition.(string)), &conditions) + if err != nil { + return nil, err + } + alert.TriggerCondition = conditions + } } alert.Attributes = nil return alert, nil @@ -449,7 +473,6 @@ func (a *Adapt) CreateAlert(alert *pb.Alert) (alertID uint64, err error) { } }() orgName := alert.Attributes["org_name"].AsInterface().(string) - delete(alert.Attributes, "org_name") dbAlert, err := tx.Alert.GetByScopeAndScopeIDAndName(alert.AlertScope, alert.AlertScopeId, alert.Name) if err != nil { return 0, err @@ -561,11 +584,6 @@ func (a *Adapt) CreateOrgAlert(alert *pb.Alert, orgID string) (alertID uint64, e alert.Attributes["alert_record_path"] = alertRecordPath diceOrgId := structpb.NewStringValue(orgID) alert.Attributes["dice_org_id"] = diceOrgId - clusterName, err := a.StringSliceToValue(alert.ClusterNames) - if err != nil { - return 0, nil - } - alert.Attributes["cluster_name"] = clusterName return a.CreateAlert(alert) } @@ -640,11 +658,17 @@ func (a *Adapt) UpdateOrgAlert(alertID uint64, alert *pb.Alert, orgID string) er alert.Attributes["alert_dashboard_path"] = alertDashboardPath alertRecordPath := structpb.NewStringValue(recordPath) alert.Attributes["alert_record_path"] = alertRecordPath - clusterName, err := a.StringSliceToValue(alert.ClusterNames) - if err != nil { - return err + + //TODO update trigger condition in attribute + if len(alert.TriggerCondition) > 0 { + data, err := json.Marshal(alert.TriggerCondition) + if err != nil { + return err + } + alert.Attributes[TriggerCondition] = structpb.NewStringValue(string(data)) + } else { + delete(alert.Attributes, TriggerCondition) } - alert.Attributes["cluster_name"] = clusterName return a.UpdateAlert(alertID, alert) } @@ -663,7 +687,6 @@ func (a *Adapt) UpdateAlert(alertID uint64, alert *pb.Alert) (err error) { } }() orgName := alert.Attributes["org_name"].AsInterface().(string) - delete(alert.Attributes, "org_name") if alert.Name != "" { dbAlert, err := tx.Alert.GetByScopeAndScopeIDAndName(alert.AlertScope, alert.AlertScopeId, alert.Name) if err != nil { @@ -688,6 +711,15 @@ func (a *Adapt) UpdateAlert(alertID uint64, alert *pb.Alert) (err error) { for k, v := range alert.Attributes { attributes[k] = v.AsInterface() } + if len(alert.TriggerCondition) > 0 { + data, err := json.Marshal(alert.TriggerCondition) + if err != nil { + return err + } + attributes[TriggerCondition] = string(data) + } else { + delete(attributes, TriggerCondition) + } alert.Id = alertID for k, v := range attributes { value, err := structpb.NewValue(v) diff --git a/modules/core/monitor/alert/alert-apis/adapt/alert_convert.go b/modules/core/monitor/alert/alert-apis/adapt/alert_convert.go index 18d90746172..73bd11cfa6e 100644 --- a/modules/core/monitor/alert/alert-apis/adapt/alert_convert.go +++ b/modules/core/monitor/alert/alert-apis/adapt/alert_convert.go @@ -271,10 +271,12 @@ func ToPBAlertNotify(m *db.AlertNotify, notifyGroupMap map[int64]*pb.NotifyGroup if !ok { return nil } + groupLevel, _ := utils.GetMapValueString(m.NotifyTarget, "level") n.Type = notifyType n.GroupId = groupID n.GroupType = groupType n.NotifyGroup = notifyGroupMap[groupID] + n.Level = groupLevel } else if notifyType == "dingding" { dingdingURL, ok := utils.GetMapValueString(m.NotifyTarget, "dingding_url") if !ok { @@ -338,6 +340,7 @@ func FromDBAlertToModel(n *pb.AlertNotify, alert *pb.Alert, silencePolicies map[ target["type"] = "notify_group" target["group_id"] = n.GroupId target["group_type"] = n.GroupType + target["level"] = n.Level } else if n.DingdingUrl != "" { target["type"] = "dingding" target["dingding_url"] = n.DingdingUrl @@ -380,6 +383,11 @@ func ToPBAlertExpressionModel(expression *db.AlertExpression) *pb.AlertExpressio return nil } e.Window = window + level, ok := utils.GetMapValueString(expression.Attributes, "level") + if !ok { + return nil + } + e.Level = level functions, ok := utils.GetMapValueArr(expression.Expression, "functions") if !ok { return nil @@ -437,6 +445,7 @@ func ToDBAlertExpressionModel(e *pb.AlertExpression, orgName string, alert *pb.A attributes["alert_scope"] = alert.AlertScope attributes["alert_scope_id"] = alert.AlertScopeId attributes["recover"] = strconv.FormatBool(e.IsRecover) + attributes["level"] = e.Level // remove some fields that are not needed by flink to avoid too long attributes for _, item := range []string{"alert_domain", "alert_dashboard_id", "alert_dashboard_path", "alert_record_path"} { delete(attributes, item) @@ -466,14 +475,6 @@ func ToDBAlertExpressionModel(e *pb.AlertExpression, orgName string, alert *pb.A if !ok { continue } - if tag == ClusterName || tag == ApplicationId { - v, ok := value.(string) - if ok { - if !strings.HasPrefix(v, "$") { - continue - } - } - } if attr, ok := attributes[tag]; ok { val, err := formatOperatorValue(opType, utils.StringType, attr) if err != nil { @@ -483,6 +484,21 @@ func ToDBAlertExpressionModel(e *pb.AlertExpression, orgName string, alert *pb.A } filterMap["value"] = value } + for _, v := range alert.TriggerCondition { + filterMap := make(map[string]interface{}) + tag := v.Condition + operator := v.Operator + value := v.Values + opType := filterOperatorRel[operator] + val, err := formatOperatorValue(opType, utils.StringType, value) + if err != nil { + return nil, err + } + filterMap["tag"] = tag + filterMap["operator"] = operator + filterMap["value"] = val + filters = append(filters, filterMap) + } filtersValue, err := structpb.NewList(filters) if err != nil { return nil, err diff --git a/modules/core/monitor/alert/alert-apis/adapt/alert_convert_test.go b/modules/core/monitor/alert/alert-apis/adapt/alert_convert_test.go index 586274d439f..b9f7b41bcba 100644 --- a/modules/core/monitor/alert/alert-apis/adapt/alert_convert_test.go +++ b/modules/core/monitor/alert/alert-apis/adapt/alert_convert_test.go @@ -19,6 +19,7 @@ import ( "time" "google.golang.org/protobuf/types/known/structpb" + "google.golang.org/protobuf/types/known/timestamppb" "github.com/erda-project/erda-infra/providers/i18n" "github.com/erda-project/erda-proto-go/core/monitor/alert/pb" @@ -325,6 +326,18 @@ func TestToDBAlertExpressionModel(t *testing.T) { Domain: "https://erda.test.terminus.io", CreateTime: 0, UpdateTime: 0, + TriggerCondition: []*pb.TriggerCondition{ + { + Condition: "cluster_name", + Operator: "in", + Values: "erda-dev,erda-test", + }, + { + Condition: "host_ip", + Operator: "eq", + Values: "127.0.0.1", + }, + }, }, rule: &pb.AlertRule{ Id: 44, @@ -388,3 +401,56 @@ func TestToDBAlertExpressionModel(t *testing.T) { }) } } + +func TestToPBAlertNotify(t *testing.T) { + type args struct { + m *db.AlertNotify + notifyGroupMap map[int64]*pb.NotifyGroup + } + tests := []struct { + name string + args args + want *pb.AlertNotify + }{ + { + name: "test", + args: args{ + m: &db.AlertNotify{ + ID: 1, + AlertID: 1, + NotifyKey: "", + NotifyTarget: jsonmap.JSONMap{ + "type": "notify_group", + "group_id": 1, + "group_type": "external-user", + "level": "alert", + }, + NotifyTargetID: "", + Silence: 5, + SilencePolicy: "fixed", + Enable: false, + Created: time.Time{}, + Updated: time.Time{}, + }, + notifyGroupMap: map[int64]*pb.NotifyGroup{ + 1: { + Id: 1, + Name: "test", + ScopeType: "project", + ScopeId: "ss", + Targets: []*pb.NotifyTarget{}, + CreatedAt: ×tamppb.Timestamp{}, + Creator: "", + }, + }, + }, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if got := ToPBAlertNotify(tt.args.m, tt.args.notifyGroupMap); got == nil { + t.Errorf("ToPBAlertNotify() = %v, want %v", got, tt.want) + } + }) + } +} diff --git a/modules/core/monitor/alert/alert-apis/adapt/alert_test.go b/modules/core/monitor/alert/alert-apis/adapt/alert_test.go index 38ed8b9bff2..277f7bd9e0e 100644 --- a/modules/core/monitor/alert/alert-apis/adapt/alert_test.go +++ b/modules/core/monitor/alert/alert-apis/adapt/alert_test.go @@ -31,6 +31,7 @@ import ( "github.com/erda-project/erda/bundle" "github.com/erda-project/erda/modules/core/monitor/alert/alert-apis/cql" "github.com/erda-project/erda/modules/core/monitor/alert/alert-apis/db" + "github.com/erda-project/erda/modules/monitor/utils" "github.com/erda-project/erda/modules/pkg/bundle-ex/cmdb" "github.com/erda-project/erda/pkg/encoding/jsonmap" ) @@ -559,3 +560,74 @@ func TestAdapt_UpdateOrgAlert(t *testing.T) { fmt.Println("should not err") } } + +func TestAdapt_GetOrgAlertDetail(t *testing.T) { + defer monkey.UnpatchAll() + monkey.Patch((*Adapt).GetAlertDetail, func(_ *Adapt, lang i18n.LanguageCodes, id uint64) (*pb.Alert, error) { + return &pb.Alert{ + Id: 1, + Name: "erdatest", + AlertScope: "object", + AlertScopeId: "1", + Enable: false, + Rules: nil, + Notifies: nil, + Filters: nil, + ClusterNames: []string{"erda-dev", "erda-test"}, + Domain: "", + CreateTime: 0, + UpdateTime: 0, + TriggerCondition: nil, + }, nil + }) + monkey.Patch(utils.GetMapValueArr, func(m map[string]interface{}, key string) ([]interface{}, bool) { + return []interface{}{"erda-dev", "erda-test"}, true + }) + monkey.Patch((*Adapt).ValueMapToInterfaceMap, func(_ *Adapt, input map[string]*structpb.Value) map[string]interface{} { + return map[string]interface{}{ + "cluster_name": []interface{}{"erda-dev", "erda-test"}, + } + }) + a := &Adapt{} + _, err := a.GetOrgAlertDetail(i18n.LanguageCodes{}, 1) + if err != nil { + fmt.Println("should not err,err is ", err) + } +} + +func TestAdapt_GetOrgAlertDetail2(t *testing.T) { + defer monkey.UnpatchAll() + monkey.Patch((*Adapt).GetAlertDetail, func(_ *Adapt, lang i18n.LanguageCodes, id uint64) (*pb.Alert, error) { + return &pb.Alert{ + Id: 1, + Name: "erdatest", + AlertScope: "object", + AlertScopeId: "1", + Enable: false, + Rules: nil, + Notifies: nil, + Filters: nil, + ClusterNames: []string{"erda-dev", "erda-test"}, + Domain: "", + CreateTime: 0, + UpdateTime: 0, + TriggerCondition: nil, + }, nil + }) + monkey.Patch(utils.GetMapValueArr, func(m map[string]interface{}, key string) ([]interface{}, bool) { + return nil, false + }) + monkey.Patch(utils.GetMapValueString, func(m map[string]interface{}, key string) (string, bool) { + return "erda-dev", true + }) + monkey.Patch((*Adapt).ValueMapToInterfaceMap, func(_ *Adapt, input map[string]*structpb.Value) map[string]interface{} { + return map[string]interface{}{ + "cluster_name": "erda-dev", + } + }) + a := &Adapt{} + _, err := a.GetOrgAlertDetail(i18n.LanguageCodes{}, 1) + if err != nil { + fmt.Println("should not err,err is ", err) + } +} diff --git a/modules/core/monitor/alert/alert-apis/adapt/expression.go b/modules/core/monitor/alert/alert-apis/adapt/expression.go index 6416f8e6ea3..5227bd7beaf 100644 --- a/modules/core/monitor/alert/alert-apis/adapt/expression.go +++ b/modules/core/monitor/alert/alert-apis/adapt/expression.go @@ -74,6 +74,7 @@ const ( const ( ClusterName = "cluster_name" ApplicationId = "application_id" + HostIP = "host_ip" ) type ( @@ -108,6 +109,7 @@ var ( "null": OperatorTypeNone, "match": OperatorTypeOne, "notMatch": OperatorTypeOne, + "all": OperatorTypeOne, } functionOperatorRel = map[string]string{ "all": OperatorTypeOne, diff --git a/modules/core/monitor/alert/alert-apis/alert.service.go b/modules/core/monitor/alert/alert-apis/alert.service.go index 725935ffc29..f09b7302631 100644 --- a/modules/core/monitor/alert/alert-apis/alert.service.go +++ b/modules/core/monitor/alert/alert-apis/alert.service.go @@ -40,7 +40,15 @@ type alertService struct { p *provider } -const MicroService = "micro_service" +const ( + MicroService = "micro_service" + ClusterName = "cluster_name" + + Org = "org" + Msp = "msp" + + TriggerCondition = "trigger_condition" +) func (m *alertService) QueryOrgDashboardByAlert(ctx context.Context, request *pb.QueryOrgDashboardByAlertRequest) (*pb.QueryOrgDashboardByAlertResponse, error) { orgID := apis.GetOrgID(ctx) @@ -125,15 +133,24 @@ func (m *alertService) CreateOrgAlert(ctx context.Context, request *pb.CreateOrg } alert.Attributes = make(map[string]*structpb.Value) alert.Attributes["org_name"] = structpb.NewStringValue(org.Name) + data, err = json.Marshal(request.TriggerCondition) + if err != nil { + return nil, errors.NewInternalServerError(err) + } + alert.Attributes[TriggerCondition] = structpb.NewStringValue(string(data)) id, err := strconv.ParseUint(orgID, 10, 64) if err != nil { return nil, errors.NewInvalidParameterError("orgId", "orgId is invalidate") } - if len(alert.ClusterNames) <= 0 { - return nil, errors.NewMissingParameterError("cluster name") - } - if !m.checkOrgClusterNames(id, alert.ClusterNames) { - return nil, errors.NewPermissionError("monitor_org_alert", "create", "access denied") + for _, v := range alert.TriggerCondition { + if v.Condition == ClusterName { + if len(v.Values) <= 0 { + return nil, errors.NewMissingParameterError("cluster_names") + } + if !m.checkOrgClusterNames(id, strings.Split(v.Values, ",")) { + return nil, errors.NewPermissionError("monitor_org_alert", "update", "access denied") + } + } } aid, err := m.p.a.CreateOrgAlert(alert, orgID) if err != nil { @@ -839,6 +856,15 @@ func (m *alertService) GetAlertDetail(ctx context.Context, request *pb.GetAlertD } result := &pb.GetAlertDetailResponse{} result.Data = data + conditions := make([]*pb.TriggerCondition, 0) + conditionStr, ok := data.Attributes[TriggerCondition] + if ok { + err = json.Unmarshal([]byte(conditionStr.GetStringValue()), &conditions) + if err != nil { + return nil, errors.NewInternalServerError(err) + } + result.Data.TriggerCondition = conditions + } return result, nil } @@ -976,20 +1002,16 @@ func (m *alertService) UpdateOrgAlert(ctx context.Context, request *pb.UpdateOrg if err != nil { return nil, errors.NewInvalidParameterError("orgId", "orgId is invalidate") } - + for _, v := range request.TriggerCondition { + if v.Condition == ClusterName { + if len(v.Values) <= 0 { + return nil, errors.NewMissingParameterError("cluster_names") + } + } + } request.Attributes = make(map[string]*structpb.Value) orgName := structpb.NewStringValue(org.Name) request.Attributes["org_name"] = orgName - id, err := strconv.ParseUint(orgID, 10, 64) - if err != nil { - return nil, errors.NewInvalidParameterError("orgId", "orgId is invalidate") - } - if len(request.ClusterNames) <= 0 { - return nil, errors.NewMissingParameterError("cluster names") - } - if !m.checkOrgClusterNames(id, request.ClusterNames) { - return nil, errors.NewPermissionError("monitor_org_alert", "update", "access denied") - } data, err := json.Marshal(request) if err != nil { return nil, errors.NewInternalServerError(err) @@ -1300,3 +1322,67 @@ func (m *alertService) UpdateOrgAlertIssue(ctx context.Context, request *pb.Upda } return &pb.UpdateOrgAlertIssueResponse{}, nil } + +func (m *alertService) GetAlertConditions(ctx context.Context, request *pb.GetAlertConditionsRequest) (*pb.GetAlertConditionsResponse, error) { + lang := apis.Language(ctx) + resp := &pb.GetAlertConditionsResponse{ + Data: make([]*pb.Conditions, 0), + } + for _, v := range m.p.alertConditions { + if v.Scope == request.ScopeType { + data, err := json.Marshal(v.Conditions) + if err != nil { + return nil, errors.NewInternalServerError(err) + } + err = json.Unmarshal(data, &resp.Data) + if err != nil { + return nil, errors.NewInternalServerError(err) + } + for _, cond := range resp.Data { + cond.DisplayName = m.p.t.Text(lang, cond.Key) + } + return resp, nil + } + } + return resp, nil +} + +func (m *alertService) GetAlertConditionsValue(ctx context.Context, request *pb.GetAlertConditionsValueRequest) (*pb.GetAlertConditionsValueResponse, error) { + req := &metricpb.QueryWithInfluxFormatRequest{ + Start: "before_3h", + End: "now", + Params: make(map[string]*structpb.Value), + } + req.Statement = fmt.Sprintf(`SELECT %s::tag FROM %s WHERE `, request.Condition, request.Index) + for k, v := range request.Filters { + req.Statement += fmt.Sprintf(`%s::tag=$%s`, k, k) + req.Params[k] = structpb.NewStringValue(v) + } + req.Statement += fmt.Sprintf(` GROUP BY %s::tag`, request.Condition) + resp, err := m.p.Metric.QueryWithInfluxFormat(ctx, req) + if err != nil { + return nil, errors.NewInternalServerError(err) + } + conditions := getResultValue(resp.Results) + result := &pb.GetAlertConditionsValueResponse{ + Data: &pb.AlertConditionsValue{ + Key: request.Condition, + Options: conditions, + }, + } + return result, nil +} + +func getResultValue(result []*metricpb.Result) []*structpb.Value { + value := make([]*structpb.Value, 0) + for _, v := range result { + for _, s := range v.Series { + for _, r := range s.Rows { + for _, c := range r.Values { + value = append(value, c) + } + } + } + } + return value +} diff --git a/modules/core/monitor/alert/alert-apis/model.go b/modules/core/monitor/alert/alert-apis/model.go new file mode 100644 index 00000000000..7770ab75805 --- /dev/null +++ b/modules/core/monitor/alert/alert-apis/model.go @@ -0,0 +1,26 @@ +// Copyright (c) 2021 Terminus, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package apis + +type AlertConditions struct { + Scope string `yaml:"scope"` + Conditions []*Conditions `yaml:"conditions"` +} + +type Conditions struct { + Key string `json:"key"` + Index string `json:"index"` + Filters []string `json:"filters"` +} diff --git a/modules/core/monitor/alert/alert-apis/provider.go b/modules/core/monitor/alert/alert-apis/provider.go index 2f1722f4f47..9c9609911cd 100644 --- a/modules/core/monitor/alert/alert-apis/provider.go +++ b/modules/core/monitor/alert/alert-apis/provider.go @@ -16,9 +16,12 @@ package apis import ( "fmt" + "io/ioutil" "strings" "time" + "github.com/ghodss/yaml" + "github.com/erda-project/erda-infra/base/logs" "github.com/erda-project/erda-infra/base/servicehub" "github.com/erda-project/erda-infra/pkg/transport" @@ -26,6 +29,7 @@ import ( "github.com/erda-project/erda-infra/providers/i18n" "github.com/erda-project/erda-infra/providers/mysql" "github.com/erda-project/erda-proto-go/core/monitor/alert/pb" + metricpb "github.com/erda-project/erda-proto-go/core/monitor/metric/pb" "github.com/erda-project/erda/bundle" "github.com/erda-project/erda/modules/core/monitor/alert/alert-apis/adapt" "github.com/erda-project/erda/modules/core/monitor/alert/alert-apis/cql" @@ -44,6 +48,7 @@ type config struct { MicroServiceFilterTags string `file:"micro_service_filter_tags"` MicroServiceOtherFilterTags string `file:"micro_service_other_filter_tags"` SilencePolicy string `file:"silence_policy"` + AlertConditions string `file:"alert_conditions"` Cassandra struct { cassandra.SessionConfig `file:"session"` GCGraceSeconds int `file:"gc_grace_seconds" default:"86400"` @@ -65,9 +70,11 @@ type provider struct { orgFilterTags map[string]bool microServiceFilterTags map[string]bool microServiceOtherFilterTags map[string]bool + alertConditions []*AlertConditions - Register transport.Register `autowired:"service-register" optional:"true"` - Perm perm.Interface `autowired:"permission"` + Register transport.Register `autowired:"service-register" optional:"true"` + Metric metricpb.MetricServiceServer `autowired:"erda.core.monitor.metric.MetricService"` + Perm perm.Interface `autowired:"permission"` alertService *alertService } @@ -100,6 +107,16 @@ func (p *provider) Init(ctx servicehub.Context) error { p.microServiceOtherFilterTags[k] = true } } + p.alertConditions = make([]*AlertConditions, 0) + f, err := ioutil.ReadFile(p.C.AlertConditions) + if err != nil { + return err + } + err = yaml.Unmarshal(f, &p.alertConditions) + if err != nil { + return err + } + cassandra := ctx.Service("cassandra").(cassandra.Interface) if cassandra != nil { session, err := cassandra.NewSession(&p.C.Cassandra.SessionConfig) @@ -176,6 +193,8 @@ func (p *provider) Init(ctx servicehub.Context) error { perm.Method(MonitorService.QueryOrgAlertHistory, perm.ScopeOrg, "monitor_org_alert", perm.ActionList, perm.OrgIDValue()), perm.Method(MonitorService.CreateOrgAlertIssue, perm.ScopeOrg, "monitor_org_alert", perm.ActionCreate, perm.OrgIDValue()), perm.Method(MonitorService.UpdateOrgAlertIssue, perm.ScopeOrg, "monitor_org_alert", perm.ActionUpdate, perm.OrgIDValue()), + perm.NoPermMethod(MonitorService.GetAlertConditions), + perm.NoPermMethod(MonitorService.GetAlertConditionsValue), )) } return nil diff --git a/modules/msp/apm/alert/alert.go b/modules/msp/apm/alert/alert.go index fe15e476285..961604eedc5 100644 --- a/modules/msp/apm/alert/alert.go +++ b/modules/msp/apm/alert/alert.go @@ -52,6 +52,8 @@ const ( DashboardPathFormat = "/microService/%s/%s/%s/alarm-management/%s/custom-dashboard" RecordPathFormat = "/microService/%s/%s/%s/alarm-management/%s/alarm-record" + TriggerCondition = "trigger_condition" + NotifyTemplateSample = `【服务HTTP慢事务异常告警】 项目: {{project_name}} diff --git a/modules/msp/apm/alert/alert.service.go b/modules/msp/apm/alert/alert.service.go index 0919408df25..a9fab514947 100644 --- a/modules/msp/apm/alert/alert.service.go +++ b/modules/msp/apm/alert/alert.service.go @@ -117,25 +117,51 @@ func (a *alertService) GetAlert(ctx context.Context, request *alert.GetAlertRequ if resp.Data.AlertScope != MicroServiceScope || resp.Data.AlertScopeId != request.TenantGroup { return nil, errors.NewPermissionError("monitor_project_alert", "GET", "alertScope or alertScopeId is invalidate") } - appIdStr := resp.Data.Attributes["application_id"] - idData := appIdStr.GetListValue().AsSlice() - appIds := make([]string, 0) - for _, v := range idData { - appIds = append(appIds, v.(string)) - } + getAlertData := &alert.ApmAlertData{ - Id: int64(resp.Data.Id), - Name: resp.Data.Name, - AlertScope: resp.Data.AlertScope, - AlertScopeId: resp.Data.AlertScopeId, - Enable: resp.Data.Enable, - Rules: resp.Data.Rules, - Notifies: resp.Data.Notifies, - AppIds: appIds, - Domain: resp.Data.Domain, - Attributes: resp.Data.Attributes, - CreateTime: resp.Data.CreateTime, - UpdateTime: resp.Data.UpdateTime, + Id: int64(resp.Data.Id), + Name: resp.Data.Name, + AlertScope: resp.Data.AlertScope, + AlertScopeId: resp.Data.AlertScopeId, + Enable: resp.Data.Enable, + Rules: resp.Data.Rules, + Notifies: resp.Data.Notifies, + Domain: resp.Data.Domain, + Attributes: resp.Data.Attributes, + CreateTime: resp.Data.CreateTime, + UpdateTime: resp.Data.UpdateTime, + TriggerCondition: resp.Data.TriggerCondition, + } + + apps := make([]string, 0) + appIdStr, ok := resp.Data.Attributes["application_id"] + if !ok { + appIdStr, ok = resp.Data.Attributes["target_application_id"] + } + if ok { + idData := appIdStr.GetListValue().AsSlice() + for _, v := range idData { + appid, err := strconv.Atoi(v.(string)) + if err != nil { + return nil, errors.NewInternalServerError(err) + } + app, err := a.p.bdl.GetApp(uint64(appid)) + if err != nil { + return nil, errors.NewInternalServerError(err) + } + apps = append(apps, app.Name) + } + } + + if len(resp.Data.TriggerCondition) == 0 && len(apps) > 0 { + triggerCondition := []*monitor.TriggerCondition{ + { + Condition: "application_name", + Operator: "in", + Values: strings.Join(apps, ","), + }, + } + getAlertData.TriggerCondition = triggerCondition } result := &alert.GetAlertResponse{ Data: getAlertData, @@ -170,6 +196,7 @@ func (a *alertService) CreateAlert(ctx context.Context, request *alert.CreateAle alertData.AlertScope = MicroServiceScope alertData.AlertScopeId = request.TenantGroup alertData.Attributes = request.Attributes + alertData.TriggerCondition = request.TriggerCondition if alertData.Attributes == nil { alertData.Attributes = make(map[string]*structpb.Value) } @@ -182,18 +209,17 @@ func (a *alertService) CreateAlert(ctx context.Context, request *alert.CreateAle alertData.Attributes[TargetWorkspace] = structpb.NewStringValue(workspace) alertData.Attributes[TK] = structpb.NewStringValue(tk) alertData.Attributes[TkAlias] = structpb.NewStringValue(tk) - if request.AppIds != nil && len(request.AppIds) > 0 { - applicationId, err := (&adapt.Adapt{}).StringSliceToValue(request.AppIds) - if err != nil { - return nil, errors.NewInternalServerError(err) - } - alertData.Attributes[ApplicationId] = applicationId - alertData.Attributes[TargetApplicationId] = applicationId - } alertData.Attributes[DashboardPath] = structpb.NewStringValue(fmt.Sprintf(DashboardPathFormat, projectId, workspace, request.TenantGroup, tk)) alertData.Attributes[RecordPath] = structpb.NewStringValue(fmt.Sprintf(RecordPathFormat, projectId, workspace, request.TenantGroup, tk)) + if len(request.TriggerCondition) > 0 { + data, err := json.Marshal(request.TriggerCondition) + if err != nil { + return nil, errors.NewInternalServerError(err) + } + alertData.Attributes[TriggerCondition] = structpb.NewStringValue(string(data)) + } ma, err := a.AlertToMonitor(alertData) if err != nil { return nil, errors.NewInternalServerError(err) @@ -265,6 +291,7 @@ func (a *alertService) UpdateAlert(ctx context.Context, request *alert.UpdateAle alertData.UpdateTime = request.UpdateTime alertData.Attributes = request.Attributes alertData.Domain = request.Domain + alertData.TriggerCondition = request.TriggerCondition if alertData.Attributes == nil { alertData.Attributes = make(map[string]*structpb.Value) } @@ -273,16 +300,16 @@ func (a *alertService) UpdateAlert(ctx context.Context, request *alert.UpdateAle alertData.Attributes[k] = v } } - if request.AppIds != nil && len(request.AppIds) > 0 { - alertData.Attributes["application_id"], err = a.p.StringSliceToValue(request.AppIds) - if err != nil { - return nil, errors.NewInternalServerError(err) - } - alertData.Attributes["target_application_id"], err = a.p.StringSliceToValue(request.AppIds) - if err != nil { - return nil, errors.NewInternalServerError(err) - } - } + //if request.AppIds != nil && len(request.AppIds) > 0 { + // alertData.Attributes["application_id"], err = a.p.StringSliceToValue(request.AppIds) + // if err != nil { + // return nil, errors.NewInternalServerError(err) + // } + // alertData.Attributes["target_application_id"], err = a.p.StringSliceToValue(request.AppIds) + // if err != nil { + // return nil, errors.NewInternalServerError(err) + // } + //} if request.Domain != "" && len(request.Domain) > 0 { alertData.Attributes["alert_domain"] = structpb.NewStringValue(request.Domain) } @@ -1075,3 +1102,49 @@ func (a *alertService) DashboardPreview(ctx context.Context, request *alert.Dash } return result, nil } + +func (a *alertService) GetAlertConditions(ctx context.Context, request *alert.GetAlertConditionsRequest) (*alert.GetAlertConditionsResponse, error) { + conditionReq := &monitor.GetAlertConditionsRequest{ + ScopeType: request.ScopeType, + } + context := utils.NewContextWithHeader(ctx) + result, err := a.p.Monitor.GetAlertConditions(context, conditionReq) + if err != nil { + return nil, errors.NewInternalServerError(err) + } + data, err := json.Marshal(result.Data) + if err != nil { + return nil, errors.NewInternalServerError(err) + } + resp := &alert.GetAlertConditionsResponse{} + err = json.Unmarshal(data, &resp.Data) + if err != nil { + return nil, errors.NewInternalServerError(err) + } + return resp, nil +} + +func (a *alertService) GetAlertConditionsValue(ctx context.Context, request *alert.GetAlertConditionsValueRequest) (*alert.GetAlertConditionsValueResponse, error) { + conditionReq := &monitor.GetAlertConditionsValueRequest{ + Condition: request.Condition, + Filters: request.Filters, + Index: request.Index, + } + context := utils.NewContextWithHeader(ctx) + result, err := a.p.Monitor.GetAlertConditionsValue(context, conditionReq) + if err != nil { + return nil, errors.NewInternalServerError(err) + } + data, err := json.Marshal(result.Data) + if err != nil { + return nil, errors.NewInternalServerError(err) + } + resp := &alert.GetAlertConditionsValueResponse{ + Data: &monitor.AlertConditionsValue{}, + } + err = json.Unmarshal(data, &resp.Data) + if err != nil { + return nil, errors.NewInternalServerError(err) + } + return resp, nil +} diff --git a/modules/msp/apm/alert/alert.service_test.go b/modules/msp/apm/alert/alert.service_test.go index e045a49907e..3241924d8b5 100644 --- a/modules/msp/apm/alert/alert.service_test.go +++ b/modules/msp/apm/alert/alert.service_test.go @@ -267,3 +267,81 @@ func Test_alertService_UpdateCustomizeAlert(t *testing.T) { fmt.Println("should not err") } } + +func Test_alertService_GetAlertConditions(t *testing.T) { + ctrl := gomock.NewController(t) + defer ctrl.Finish() + monitorService := NewMockAlertServiceServer(ctrl) + monitorService.EXPECT().GetAlertConditions(gomock.Any(), gomock.Any()).AnyTimes().Return(&monitor.GetAlertConditionsResponse{ + Data: []*monitor.Conditions{ + { + Key: "application_name", + DisplayName: "应用", + }, + { + Key: "service_name", + DisplayName: "服务", + }, + }, + }, nil) + pro := &provider{ + C: &config{}, + DB: &gorm.DB{}, + Register: nil, + Perm: nil, + MPerm: nil, + alertService: &alertService{}, + Monitor: monitorService, + authDb: nil, + mspDb: nil, + bdl: &bundle.Bundle{}, + microServiceFilterTags: nil, + } + pro.alertService.p = pro + _, err := pro.alertService.GetAlertConditions(context.Background(), &pb.GetAlertConditionsRequest{ + ScopeType: "msp", + }) + if err != nil { + fmt.Println("should not err,err is ", err) + } +} + +func Test_alertService_GetAlertConditionsValue(t *testing.T) { + ctrl := gomock.NewController(t) + defer ctrl.Finish() + monitorService := NewMockAlertServiceServer(ctrl) + monitorService.EXPECT().GetAlertConditionsValue(gomock.Any(), gomock.Any()).AnyTimes().Return(&monitor.GetAlertConditionsValueResponse{ + Data: &monitor.AlertConditionsValue{ + Key: "application-name", + Options: []*structpb.Value{ + structpb.NewStringValue("erda"), + }, + }, + }, nil) + pro := &provider{ + C: &config{}, + DB: &gorm.DB{}, + Register: nil, + Perm: nil, + MPerm: nil, + alertService: &alertService{}, + Monitor: monitorService, + authDb: nil, + mspDb: nil, + bdl: &bundle.Bundle{}, + microServiceFilterTags: nil, + } + pro.alertService.p = pro + _, err := pro.alertService.GetAlertConditionsValue(context.Background(), &pb.GetAlertConditionsValueRequest{ + Condition: "application-name", + Filters: map[string]string{ + "org_name": "erda", + "project_id": "12", + "terminus_key": "c393550824b3d50aa758fee4593d6e31", + }, + Index: "application_service_node", + }) + if err != nil { + fmt.Println("should not err,err is ", err) + } +} diff --git a/modules/msp/apm/alert/alert_monitor_test.go b/modules/msp/apm/alert/alert_monitor_test.go index 171864c1fc1..99a715f56eb 100644 --- a/modules/msp/apm/alert/alert_monitor_test.go +++ b/modules/msp/apm/alert/alert_monitor_test.go @@ -200,6 +200,36 @@ func (mr *MockAlertServiceServerMockRecorder) GetAlert(arg0, arg1 interface{}) * return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetAlert", reflect.TypeOf((*MockAlertServiceServer)(nil).GetAlert), arg0, arg1) } +// GetAlertConditions mocks base method. +func (m *MockAlertServiceServer) GetAlertConditions(arg0 context.Context, arg1 *pb.GetAlertConditionsRequest) (*pb.GetAlertConditionsResponse, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetAlertConditions", arg0, arg1) + ret0, _ := ret[0].(*pb.GetAlertConditionsResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetAlertConditions indicates an expected call of GetAlertConditions. +func (mr *MockAlertServiceServerMockRecorder) GetAlertConditions(arg0, arg1 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetAlertConditions", reflect.TypeOf((*MockAlertServiceServer)(nil).GetAlertConditions), arg0, arg1) +} + +// GetAlertConditionsValue mocks base method. +func (m *MockAlertServiceServer) GetAlertConditionsValue(arg0 context.Context, arg1 *pb.GetAlertConditionsValueRequest) (*pb.GetAlertConditionsValueResponse, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetAlertConditionsValue", arg0, arg1) + ret0, _ := ret[0].(*pb.GetAlertConditionsValueResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetAlertConditionsValue indicates an expected call of GetAlertConditionsValue. +func (mr *MockAlertServiceServerMockRecorder) GetAlertConditionsValue(arg0, arg1 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetAlertConditionsValue", reflect.TypeOf((*MockAlertServiceServer)(nil).GetAlertConditionsValue), arg0, arg1) +} + // GetAlertDetail mocks base method. func (m *MockAlertServiceServer) GetAlertDetail(arg0 context.Context, arg1 *pb.GetAlertDetailRequest) (*pb.GetAlertDetailResponse, error) { m.ctrl.T.Helper() diff --git a/modules/msp/apm/alert/provider.go b/modules/msp/apm/alert/provider.go index 0d71fffeba9..d6497e9aa7d 100644 --- a/modules/msp/apm/alert/provider.go +++ b/modules/msp/apm/alert/provider.go @@ -93,6 +93,8 @@ func (p *provider) Init(ctx servicehub.Context) error { perm.Method(AlertService.CreateAlertRecordIssue, perm.ScopeProject, perm.MonitorProjectAlert, perm.ActionCreate, p.MPerm.TenantToProjectID("TenantGroup", "TenantID")), perm.Method(AlertService.UpdateAlertRecordIssue, perm.ScopeProject, perm.MonitorProjectAlert, perm.ActionUpdate, p.MPerm.TenantToProjectID("TenantGroup", "TenantID")), perm.Method(AlertService.DashboardPreview, perm.ScopeProject, perm.MonitorProjectAlert, perm.ActionUpdate, p.MPerm.TenantToProjectID("TenantGroup", "TenantID")), + perm.NoPermMethod(AlertService.GetAlertConditions), + perm.NoPermMethod(AlertService.GetAlertConditionsValue), )) } return nil diff --git a/modules/openapi/api/apis/cmp/cmp_alert_condition.go b/modules/openapi/api/apis/cmp/cmp_alert_condition.go new file mode 100644 index 00000000000..aa7bc5e3ef8 --- /dev/null +++ b/modules/openapi/api/apis/cmp/cmp_alert_condition.go @@ -0,0 +1,27 @@ +// Copyright (c) 2021 Terminus, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package cmp + +import ( + "github.com/erda-project/erda/modules/openapi/api/apis" +) + +var CMP_ALERT_CONDITIONS = apis.ApiSpec{ + Path: "/api/cmp/alerts/conditions", + BackendPath: "/api/cmp/alerts/conditions", + Host: "cmp.marathon.l4lb.thisdcos.directory:9028", + Scheme: "http", + Method: "GET", +} diff --git a/modules/openapi/api/apis/cmp/cmp_alert_conditions_value.go b/modules/openapi/api/apis/cmp/cmp_alert_conditions_value.go new file mode 100644 index 00000000000..2325ef5ff6c --- /dev/null +++ b/modules/openapi/api/apis/cmp/cmp_alert_conditions_value.go @@ -0,0 +1,28 @@ +// Copyright (c) 2021 Terminus, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package cmp + +import ( + "github.com/erda-project/erda/modules/openapi/api/apis" +) + +var CMP_ALERT_CONDITIONS_VALUE = apis.ApiSpec{ + Path: "/api/cmp/alerts/conditions/value", + BackendPath: "/api/cmp/alerts/conditions/value", + Host: "cmp.marathon.l4lb.thisdcos.directory:9028", + CheckLogin: true, + Scheme: "http", + Method: "GET", +}