fluentd聚合数据给Prometheus提供指标

有时,需要计数一分钟内WARN的日志出现了多少次,fluentd第三方插件fluent-plugin-grepcounter提供了这个功能,取到指标之后,再使用Prometheus收集处理就方便多了,fluentd同样也有第三方的prometheus插件fluent-plugin-prometheus

  • 首先安装fluentd(alpine系统)
  apk update
  apk add gcc
  apk add ruby ruby-dev build-base ruby-irb
  gem install fluentd -v "~> 0.12.0" --no-ri --no-rdoc
  • 安装需要的插件
  gem install fluent-plugin-grepcounter
  gem install fluent-plugin-prometheus
  • 添加fluentd配置文件/fld.conf
  <source>
    @type prometheus
  </source>
  <source>
    @type tail
    path /a.log
    pos_file /a.pos
    tag a.log
    format none
  </source>
  <match warn.count.**>
      @type prometheus
      <metric>
        name message_warn_counter
        type gauge
        desc The total number of count in message in 10s.
        key count
      </metric>
  </match>
  <match **>
    @type copy
    <store>
      type grepcounter
      count_interval 10
      input_key message
      regexp WARN
      exclude favicon.ico
      threshold 1
      add_tag_prefix warn.count
    </store>
    <store>
      @type stdout
    </store>
  </match>
  • 启动fluend
  fluentd --conf fld.conf

可以看到如下信息表示启动成功

  • /a.log中添加含有WARN的文本
  echo "WARN 001" >> a.log
  echo "WARN 002" >> a.log

控制台显示:

  2017-11-08 09:16:33 +0000 a.log: {"message":"WARN 001"}
  2017-11-08 09:16:44 +0000 a.log: {"message":"WARN 002"}

查看prometheus指标

  curl http://localhost:24231/metrics

可以看到prometheus的指标

  # TYPE message_warn_counter counter
  # HELP message_warn_counter The total number of foo in message.
  message_warn_counter 2.0
  • 完成

  • issue

间隔时间内没有可计数的日志输入计数会保持上一个数值

VinkDong

open to open