<resultMap id="selectMetricListMap" type="com.copote.devops.brain.manager.bean.dto.MetricDto">
<result column="metric_type_value" property="metricTypeValue"/>
<result column="metric_template_value" property="metricTemplateValue"/>
<result column="created_by" property="createdBy"/>
<result column="created_time" property="createdTime"/>
<result column="updated_by" property="updatedBy"/>
<result column="updated_time" property="updatedTime"/>
<association property="metricEntity" javaType="com.copote.devops.brain.manager.bean.entity.MetricEntity">
<result column="metric_id" property="metricId"/>
<result column="metric_name" property="metricName"/>
<result column="external_metric_name" property="externalMetricName"/>
<result column="metric_implication" property="metricImplication"/>
<result column="metric_source" property="metricSource"/>
<result column="metric_label_name" property="metricLabelName"/>
<result column="label_name_sep" property="labelNameSep"/>
</association>
</resultMap>
<select id="selectMetricList"
parameterType="com.copote.devops.brain.manager.bean.dto.MetricDto"
resultMap="selectMetricListMap">
SELECT
a.metric_id,
a.metric_name,
a.metric_label_name,
a.label_name_sep,
a.external_metric_name,
a.metric_implication,
a.metric_type_code,
a.metric_template_code,
a.metric_source,
a.created_by,
a.created_time,
a.updated_by,
a.updated_time,
c.metric_type_value,
d.instance_type_value AS metric_template_value
FROM tb_metrics as a
JOIN tb_metric_type_code AS c
ON a.metric_type_code = c.metric_type_code
JOIN tb_monitor_instance_type AS d
ON a.metric_template_code = d.instance_type_code
<where>
<if test="metricDto != null">
<if test="metricDto.metricEntity != null">
<if test="metricDto.metricEntity.metricName != null and metricDto.metricEntity.metricName != ''">
metric_name = #{metricDto.metricName}
</if>
</if>
<if test="metricDto.metricTemplateValue != null and metricDto.metricTemplateValue != ''">
instance_type_value = #{metricDto.metricTemplateValue}
</if>
</if>
</where>
</select>
public class MetricDto extends BaseEntity {
@ApiModelProperty(value = "指标实体类", position = 11)
private MetricEntity metricEntity;
@ApiModelProperty(value = "指标类型码值", position = 5)
private String metricTypeValue;
@ApiModelProperty(value = "指标模板码值", position = 6)
private String metricTemplateValue;
}
public class MetricEntity extends BaseEntity {
@TableId(type = IdType.AUTO)
@ApiModelProperty(value = "指标ID", position = 1)
private Integer metricId;
/**
* metricName是externalMetricName标准化后的指标,包括命名等标准化.
* 比如从Zabbix或者Prometheus或者JMX等采集来的指标名称方式不同,造成命名冲突等.
*
* @see externalMetricName
*/
@ApiModelProperty(value = "指标名称", position = 2)
private String metricName;
/**
* metricUnit是externalMetricUnit经过换算过的指标单位.
*
* @see externalMetricUnit
*/
@ApiModelProperty(value = "指标单位", position = 3)
private String metricUnit;
@ApiModelProperty(value = "指标单位含义")
private String metricUnitMean;
@ApiModelProperty(value = "指标单位类型")
private String metricUnitType;
/**
* @see metricName
*/
@ApiModelProperty(value = "外部指标名称", position = 4)
private String externalMetricName;
/**
* 它是外部指标原生的单位,例如prometheus中指标单位都是标准单位.
*
* @see metricUnit
*/
@ApiModelProperty(value = "外部指标单位", position = 5)
private String externalMetricUnit;
@ApiModelProperty(value = "外部指标单位含义")
private String externalMetricUnitMean;
@ApiModelProperty(value = "指标含义", position = 6)
private String metricImplication;
@ApiModelProperty(value = "指标类型编码", position = 7)
private String metricTypeCode;
@ApiModelProperty(value = "指标模板编码", position = 8)
private Integer metricTemplateCode;
@ApiModelProperty(value = "指标来源", position = 9)
private String metricSource;
/**
* 有些指标没有标签(label),例如up指标,metricLabelName就为空.
* 有些指标有标签(label),例如偏移量off_set{topic="test",partition="1"},metricLabelName为topic,partition
* 标签名之间默认使用英文逗号隔开
*
* @see labelNameSep 标签名分隔符
*/
@ApiModelProperty(value = "指标标签名", position = 10)
private String metricLabelName;
/**
* 默认分隔符:英文逗号.
*
* @see metricLabelName
*/
@ApiModelProperty(value = "指标标签名分隔符", position = 11)
private String labelNameSep;
@ApiModelProperty(value = "promql查询选择器", position = 12)
private String promSelector;
private Integer isDelete;
}