添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
- 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: 5mfor对应着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文件

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;amp;quot;POD&amp;amp;quot;,id!=&amp;amp;quot;/&amp;amp;quot;,image!=&amp;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进行处理和使用。