Agent Telegraf Plugin inputs.logparser.grok 扩展patterns

初衷

系统中使用lua扩展Nginx,实现Client请求Server的统一接入服务(鉴权,路由)。
监控中心会需要对所有请求数据进行采集和监控,因此需要对nginx的access.log数据进行采集。

Telegraf Input logParser

github 地址

telegraf.plugin.inputs.logparser已经实现了数据的采集,使用起来非常方便。

但是存在一个问题,即telegraf.plugin.inputs.logparser中支持的LOG_FORMAT只有一种,即COMBINED_LOG_FORMAT,而我们实际使用时都会对nginx access.logLOG_FORMAT进行自定义;

为了符合自身的数据格式进行采集,有两种方式:

第一种,直接配置自定义patterns,见配置:

...
    ## Custom patterns can also be defined here. Put one pattern per line.
    custom_patterns = '''
    '''
...

范例:

[[inputs.logparser]]
  [inputs.logparser.grok]
    patterns = ["%{TS_UNIX:timestamp:ts-unix} value=%{NUMBER:value:int}"]
    custom_patterns = '''
      TS_UNIX %{DAY} %{MONTH} %{MONTHDAY} %{HOUR}:%{MINUTE}:%{SECOND} %{TZ} %{YEAR}
    '''

第二种,需要对telegraf.plugin.inputs.logparser.grok进行扩展,在源码中增加patterns,我们这边因为存在自己的二开版本,因此选择了这种方式将自己用到的几种patterns增加到了源码中,接下来文章后面主要是该方法的过程。(如果非二开尽量选择第一种)

获取源码

  1. Install Go
  2. Setup your GOPATH
  3. Install FPM
  4. Run go get -d github.com/influxdata/telegraf
  5. Run cd $GOPATH/src/github.com/influxdata/telegraf

修改源码扩展

1. 修改代码 telegraf/plugins/inputs/logparser/grok/influx_patterns.go

const DEFAULT_PATTERNS = `

COMMON_LOG_FORMAT %{CLIENT:client_ip} %{NOTSPACE:ident} %{NOTSPACE:auth} \[%{HTTPDATE:ts:ts-httpd}\] "(?:%{WORD:verb:tag} %{NOTSPACE:request}(?: HTTP/%{NUMBER:http_version:float})?|%{DATA})" %{NUMBER:resp_code:tag} (?:%{NUMBER:resp_bytes:int}|-)

COMBINED_LOG_FORMAT %{COMMON_LOG_FORMAT} %{QS:referrer} %{QS:agent}

自定义

`

源码中定义了常量DEFAULT_PATTERNS,需要在这里自定义自己的LOG_FORMAT,通过空格隔开来和自己的access.log中LOG_FORMAT格式一一对应。

LOG_FORMAT匹配格式,通过正在进行匹配:%{IPORHOST:client_ip:tag}

  • %{} 为每一个变量
  • IPORHOST 正则表达式变量:logstash-patterns正则
  • client_ip 为采集数据字段命名,即:Metric.tag:{client_ip:127.0.0.1}
  • tag 范围取值范围如下,需要注意的是,tag是可以将字段存放在Metric.tag:{client_ip:127.0.0.1}中,其余都在Metric.fields:{client_ip:127.0.0.1}
- tag 
# Available modifiers:
#   string   (default if nothing is specified)
#   int
#   float
#   duration (ie, 5.23ms gets converted to int nanoseconds)
#   tag      (converts the field into a tag)
#   drop     (drops the field completely)
# Timestamp modifiers:
#   ts-ansic         ("Mon Jan _2 15:04:05 2006")
#   ts-unix          ("Mon Jan _2 15:04:05 MST 2006")
#   ts-ruby          ("Mon Jan 02 15:04:05 -0700 2006")
#   ts-rfc822        ("02 Jan 06 15:04 MST")
#   ts-rfc822z       ("02 Jan 06 15:04 -0700")
#   ts-rfc850        ("Monday, 02-Jan-06 15:04:05 MST")
#   ts-rfc1123       ("Mon, 02 Jan 2006 15:04:05 MST")
#   ts-rfc1123z      ("Mon, 02 Jan 2006 15:04:05 -0700")
#   ts-rfc3339       ("2006-01-02T15:04:05Z07:00")
#   ts-rfc3339nano   ("2006-01-02T15:04:05.999999999Z07:00")
#   ts-httpd         ("02/Jan/2006:15:04:05 -0700")
#   ts-epoch         (seconds since unix epoch)
#   ts-epochnano     (nanoseconds since unix epoch)
#   ts-"CUSTOM"

2. 修改配置

  • 修改配置文件:telegraf/etc/telegraf.conf
  • 找到[inputs.logparser.grok]的配置,在注释中加入自定义的格式化变量名,方便配置时使用,例如:
telegraf.conf
... ...
#     ##   %{COMMON_LOG_FORMAT}   (plain apache & nginx access logs)
#     ##   %{COMBINED_LOG_FORMAT} (access logs + referrer & agent)
#     ##   ${CUSTOM_LOG_FORMAT}   (自定义LOG_FORMAT)
... ...

重新打包 telegraf

  1. Install FPM
  2. Run
#这里因为不需要打出所有操作系统的安装包,因此使用添加参数
./scripts/build.py --clean --package --version="1.3.5-custom-1.2" --platform=linux --arch=amd64

或者

默认全量打包( ["amd64", "i386", "armhf", "armel", "arm64", "static_amd64"],[ "deb", "rpm", "tar" ])

make package

获得新的安装包

  1. 路径:build/telegraf-1.3.5-xx-1.2~7192e68_linux_amd64.tar.gz
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,670评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,928评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,926评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,238评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,112评论 4 356
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,138评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,545评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,232评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,496评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,596评论 2 310
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,369评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,226评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,600评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,906评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,185评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,516评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,721评论 2 335

推荐阅读更多精彩内容