夜莺转发时序数据时如何使用 relabel 功能

监控数据通过推模式,发给夜莺,夜莺会转发给后端时序库,有时候可能想对数据做一些二次处理,比如 Drop 掉一些数据或者改改内容之类的,此时就需要 relabel 能力了,这个功能是社区小伙伴贡献的,和 Prometheus 的 relabel 类似,只是配置的时候注意配置项的大小写。在夜莺 5.x 版本中,数据是通过 n9e-server 转发的,所以,relabel 的逻辑放在了 server.conf 中。

  1. [[Writers]]
  2. Url = "http://127.0.0.1:9090/api/v1/write"
  3. # Basic auth username
  4. BasicAuthUser = ""
  5. # Basic auth password
  6. BasicAuthPass = ""
  7. # timeout settings, unit: ms
  8. Headers = ["X-From", "n9e"]
  9. Timeout = 10000
  10. DialTimeout = 3000
  11. TLSHandshakeTimeout = 30000
  12. ExpectContinueTimeout = 1000
  13. IdleConnTimeout = 90000
  14. # time duration, unit: ms
  15. KeepAlive = 30000
  16. MaxConnsPerHost = 0
  17. MaxIdleConns = 100
  18. MaxIdleConnsPerHost = 100
  19. # [[Writers.WriteRelabels]]
  20. # Action = "replace"
  21. # SourceLabels = ["__address__"]
  22. # Regex = "([^:]+)(?::\\d+)?"
  23. # Replacement = "$1:80"
  24. # TargetLabel = "__address__"

relabel 的逻辑就是上面的 [[Writers.WriteRelabels]] 部分,双中括号的,所以这是个数组,每个 Writer 可以配置多个 Relabel 逻辑,Action 部分支持如下选项:

  1. const (
  2. Replace Action = "replace"
  3. Keep Action = "keep"
  4. Drop Action = "drop"
  5. HashMod Action = "hashmod"
  6. LabelMap Action = "labelmap"
  7. LabelDrop Action = "labeldrop"
  8. LabelKeep Action = "labelkeep"
  9. Lowercase Action = "lowercase"
  10. Uppercase Action = "uppercase"
  11. )

比如我想把带有 env=test 标签的数据删除,可以这么配置:

  1. [[Writers.WriteRelabels]]
  2. Action = "drop"
  3. SourceLabels = ["env"]
  4. Regex = "^test$"

其他的就不一一介绍了,大家知道这里支持 Relabel 这个功能就可以了,其他 Action 的用法可以参考 Prometheus 的文档。