2019年8月8日 星期四

設定 prometheus 的 backend 使用 influxdb

其實流程上很簡單,主要是對 influxdb 不熟,為了驗證資料是否有進去 influxdb 還試了一陣子語法,所以筆記一下。

先講環境。

prometheus 是用  helm  裝 prometheus-operator 版本,安裝在 monitoring namespace,名稱用 prometheus。

influxdb 是用 helm 裝 stable/influxdb 版本,安裝在 influxdb namespace,名稱用 influxdb。所以對其他 namespace 的 app 來說,要 access influxdb 的 url 就是 http://influxdb.influxdb:8086/。

另外,在安裝 influxdb 時, 設定了連入的帳號密碼,假設都是 admin。
然後到 influxdb 裡,建立一個dabase 給 prometheus 使用,名稱就用 prometheus
kubectl -n influxdb exec -it influxdb-774cbf58d6-8nrkp bash

進到 container 裡面後,執行 influx ,然後 create database prometheus 就好了。

接著修改 prometheus 的設定,參考 prometheus 官網的說明修改
kubectl -n monitoring edit prometheus prometheus-prometheus-oper-prometheus

找到其中的 remoteRead 和 remoteWrite 那兩行,修改為
 remoteRead:
  - url: http://influxdb.influxdb:8086/api/v1/prom/read?db=prometheus&u=admin&p=admin
  remoteWrite:
  - url: http://influxdb.influxdb:8086/api/v1/prom/write?db=prometheus&u=admin&p=admin

就這樣,搞定。剩下是驗證的部分......


可以先確認一下 prometheus pod 的 log,log 可能很長,篩選和 influxdb 有關的就好
kubectl -n monitoring logs prometheus-prometheus-prometheus-oper-prometheus-0 prometheus |grep influxdb

如果權限不對之類的而無法放資料到 influxdb ,可以從 log 裡看到。
設定正確的話,應該會看到類似這樣的 log
ts=2019-08-08T06:40:38.624Z caller=dedupe.go:111 component=remote level=info queue="0:http://influxdb.influxdb
:8086/api/v1/prom/write?db=prometheus&u=admin&p=admin" msg="starting WAL watcher" queue="0:http://influxdb.inf
luxdb:8086/api/v1/prom/write?db=prometheus&u=admin&p=admin"
我驗證的方式是在 monitoring 這個 namespace 跑一個 influxdb client 去測試連線及語法查詢。
kubectl -n monitoring run -it influx --restart=Never --image=influxdb --rm=true bash

進到 container 後,先用 curl 指令測試能不能遠端讀寫。
# write data
curl -i -XPOST 'http://influxdb.influxdb:8086/write?db=prometheus' --data-binary 'cpu_load_short,host=server01,region=us-west value=0.64 1434055562000000000'
# read data
curl -G 'http://influxdb.influxdb:8086/query?pretty=true' --data-urlencode "db=prometheus" --data-urlencode "q=select * from \"cpu_load_short\""


接著連到 influxdb namespace 裡的 influxdb 驗證資料是否有進來
influx -database prometheus -host influxdb.influxdb

然後查詢是否有 prometheus 的資料進來,我不知道有什麼可以查,所以先去 prometheus 本身的管理介面,隨便選一個 mertric 來查詢
select * from ceph_mds_metadata
看到有資料進來了,結案收工。

沒有留言: