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格式數據,否則可能導致配置文件同步失敗

  7. 啓動confd

    confd -backend nacos -node http://192.168.174.1:8848/nacos -watch
    
  8. 查看prometheus rules,如下圖所示

參考資料

  1. nacos-confd下載地址
  2. Nacos+confd實現nginx配置文件動態更新
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章