Nacos + Confd实现Prometheus规则动态更新

NACOS+CONFD实现Prometheus规则动态更新

  1. 安装go环境
  • 下载安装包(>1.10)下载地址

    wget https://dl.google.com/go/go1.13.linux-amd64.tar.gz
    
  • 解压到/usr/local目录下

    tar -xvf go1.13.linux-amd64.tar.gz
    
  • 配置环境变量

    export GOPATH=/root/go
    export GOPROXY=https://goproxy.cn
    export PATH=$PATH:/usr/local/go/bin
    
  1. 编译nacos-confd

    mkdir -p $GOPATH/src/github.com/kelseyhightower
    wget https://github.com/nacos-group/confd/archive/v0.18.0.tar.gz
    tar -xvf v0.18.0.tar.gz
    mv confd-0.18.0 confd
    cd confd
    make
    
  2. 复制confd到bin目录下

    cp bin/confd /usr/local/bin
    
  3. 创建confd所需目录

    confd 配置文件默认在 /etc/confd 中,可以通过参数 -confdir 指定。目录中包含两个子目录,分别是:conf.d templates

    mkdir -p /etc/confd/{conf.d,templates}
    
  4. 创建confd配置文件

    confd 会先读取 conf.d 目录中的配置文件(toml格式),然后根据文件指定的模板路径去渲染模板

    vim /etc/confd/conf.d/prometheus-rules.toml
    

    内容如下:

    [template]
    src = "prometheus-rules.yml.tmpl"
    dest = "/opt/spring-cloud/prometheus/prometheus-rules.yml"
    keys = ["/prometheus-rules"]
    reload_cmd = "/usr/bin/curl --connect-timeout 5 --retry 5 --retry-max-time 40 -X POST http://{$HOSTS}:9090/-/reload"
    

    注意:

    src为/etc/confd/template下的模版文件

    dest: 为prometheus告警规则的存放路径

  5. 创建模版文件

    vim /etc/confd/template/prometheus-rules.yml.tmpl
    

    内容如下:

    groups:
    - name: alert-rules
      rules:
      {{$data := jsonArray (getv "/prometheus-rules")}}
      {{range $data}}
      - alert: {{.name}}
        expr: {{.expr}}
        for: {{.period}}
        labels:
          status: {{.label}}
        annotations:
          summary: {{.summary}}
      {{end}}
    
  6. 在Nacos上创建所需的配置文件
    注意:必须为JSON格式数据,否则可能导致配置文件同步失败
    Nacos + Confd实现Prometheus规则动态更新_第1张图片

  7. 启动confd

    confd -backend nacos -node http://192.168.174.1:8848/nacos -watch
    
  8. 查看prometheus rules,如下图所示
    Nacos + Confd实现Prometheus规则动态更新_第2张图片

参考资料

  1. nacos-confd下载地址
  2. Nacos+confd实现nginx配置文件动态更新

你可能感兴趣的:(Java基础)