- alert: 自定义CPU使用率超限
annotations: {summary: TestSummay}
expr: rate(container_cpu_usage_seconds_total{container_name!="POD",id!="/",image!="",namespace!=""}[1m])>0.2
for: 5m
labels: {severity: critical}
PromRules类:
import java.util.ArrayList;
import java.util.List;
public class PromRules {
private List<Group> groups = new ArrayList<Group>();
public List<Group> getGroups() {
return groups;
public void setGroups(List<Group> groups) {
this.groups = groups;
Group类:
import java.util.ArrayList;
import java.util.List;
public class Group {
private String name;
private List<Rule> rules = new ArrayList<Rule>();
public String getName() {
return name;
public void setName(String name) {
this.name = name;
public List<Rule> getRules() {
return rules;
public void setRules(List<Rule> rules) {
this.rules = rules;
Rule类:
public class Rule {
private String alert;
private String expr;
private Label labels;
private Annotation annotations;
private String forTime;
public String getFor() {
return forTime;
public void setFor(String forTime) {
this.forTime = forTime;
public String getAlert() {
return alert;
public void setAlert(String alert) {
this.alert = alert;
public String getExpr() {
return expr;
public void setExpr(String expr) {
this.expr = expr;
public Label getLabels() {
return labels;
public void setLabels(Label labels) {
this.labels = labels;
public Annotation getAnnotations() {
return annotations;
public void setAnnotations(Annotation annotations) {
this.annotations = annotations;
注:yaml文件中的 for: 5m
的for
对应着getFor、setFor
,而不是private String for;
。当然了,由于for
是关键字,我们也不可以将他作为一个变量名。
Label类:
public class Label {
private String severity;
public String getSeverity() {
return severity;
public void setSeverity(String severity) {
this.severity = severity;
Annotation类:
public class Annotation {
private String summary;
public String getSummary() {
return summary;
public void setSummary(String summary) {
this.summary = summary;
Test实现类:
import java.io.FileWriter;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.yaml.snakeyaml.Yaml;
PromRules pr=new PromRules();
List<Group> groups = new ArrayList<Group>();
Group group = new Group();
group.setName(groupName);
List<Rule> rules = new ArrayList<Rule>();
Rule rule = new Rule();
rule.setAlert(alertName);
rule.setExpr(expr);
rule.setFor(forTime);
Label label = new Label();
label.setSeverity(severity);
rule.setLabels(label);
Annotation annotation = new Annotation();
annotation.setSummary(summary);
rule.setAnnotations(annotation);
rules.add(rule);
group.setRules(rules);
groups.add(group);
pr.setGroups(groups);
Yaml yaml = new Yaml();
String generatePath="****";
yaml.dump(pr, new FileWriter(generatePath));
根据yaml文件缩进表示层级关系可知,这个yaml文件分成三层。
第一层显然是个List。
groups:
第二层一个String,一个List。
name: Default
rules:
alert: 自定义CPU使用率超限
annotations: {summary: TestSummay}
expr: rate(container_cpu_usage_seconds_total{container_name!="POD",id!="/",image!="",namespace!=""}[1m])>0.2
for: 5m
labels: {severity: critical}
Yaml yamlRead = new Yaml();
PromRules pr = yamlRead.loadAs(new FileInputStream(new File("***\\testRules.yml")), PromRules.class);
将某一路径下的yaml文件解析成PromRules对象。
目标yaml文件:groups:- name: Default rules: - alert: 自定义CPU使用率超限 annotations: {summary: TestSummay} expr: rate(container_cpu_usage_seconds_total{container_name!=&amp;quot;POD&amp;quot;,id!=&amp;quot;/&amp;quot;,image!=&amp;quot
java对象转换xml比较麻烦,所以可以把对象转换为JSON再把JSON转换为XML
降低复杂度。此工具类依赖于json-lib、fastjson、dom4j等jar包
代码工具:
package com.bsoft.commons.utils;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
im...
将实体类转换成XML需要使用XmlSerializer类的Serialize方法,将实体类序列化。
把XML转换成相应的实体类,需要使用到XmlSerializer类的Deserialize方法,将XML进行反序列化。
创建XML序列化公共处理类(XmlSerializeHelper.cs)
using System;
using System.IO;
usi...
java 对象转成yaml格式文件 并导出文件
我这里用的是YAMLMapper 导出,网上很多是通过Yaml生成的文件,特别恶心:1.生成的文件莫名第一行加一个 “|” 2.导出的文件全部按照a、b、c、d、e等生成 3.不要生成类名,因为我这里设计到很多张表,我最外边是一个list集合,里边存了对象,对象中又有很多的一对多关联表,比较复杂,所以有类名,就不行,
而通过YAMLMapper 不需要处理这些东西,一开始一直用Yaml,入坑几天出不来
放个图看看:
//通过YAMLMapper 导出文
jQuery:类库(工具箱):宗旨是write less do more,功能:DOM操作,DOM获取,动画,数据交互(ajax),链式调用*。
一、为什么jQuery可以使用链式调用
因为 jQuery一直遵循一个准则:一切不关心返回值的语句都会返回你调用这个方法的jQuery对象本身,才到导致可以使用“链式调用”的方法,就是讲多条语句整合成一条语句。
二、jQuery的核心方法
1.在页面中查找与css选择器相匹配的元素,返回相匹配的jQuery对象
$(“css选择器”)
2.将源生JS节点(Node
可以使用PyYAML库来解析和加载YAML文件。首先需要安装PyYAML库,可以使用pip命令进行安装:pip install pyyaml。然后可以使用以下代码来读取YAML文件:
import yaml
with open('example.yaml', 'r') as f:
data = yaml.load(f, Loader=yaml.FullLoader)
其中example.yaml是你要读取的YAML文件名,data是读取到的数据。你可以根据需要对data进行处理和使用。