Agent Telegraf Plugin inputs.logparser.grok 擴(kuò)展patterns

初衷

系統(tǒng)中使用lua擴(kuò)展Nginx,實(shí)現(xiàn)Client請求Server的統(tǒng)一接入服務(wù)(鑒權(quán),路由)。
監(jiān)控中心會需要對所有請求數(shù)據(jù)進(jìn)行采集和監(jiān)控,因此需要對nginx的access.log數(shù)據(jù)進(jìn)行采集。

Telegraf Input logParser

github 地址

telegraf.plugin.inputs.logparser已經(jīng)實(shí)現(xiàn)了數(shù)據(jù)的采集,使用起來非常方便。

但是存在一個問題,即telegraf.plugin.inputs.logparser中支持的LOG_FORMAT只有一種,即COMBINED_LOG_FORMAT,而我們實(shí)際使用時都會對nginx access.logLOG_FORMAT進(jìn)行自定義;

為了符合自身的數(shù)據(jù)格式進(jìn)行采集,有兩種方式:

第一種,直接配置自定義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進(jìn)行擴(kuò)展,在源碼中增加patterns,我們這邊因?yàn)榇嬖谧约旱亩_版本,因此選擇了這種方式將自己用到的幾種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

修改源碼擴(kuò)展

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格式一一對應(yīng)。

LOG_FORMAT匹配格式,通過正在進(jìn)行匹配:%{IPORHOST:client_ip:tag}

  • %{} 為每一個變量
  • IPORHOST 正則表達(dá)式變量:logstash-patterns正則
  • client_ip 為采集數(shù)據(jù)字段命名,即: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
#這里因?yàn)椴恍枰虺鏊胁僮飨到y(tǒng)的安裝包,因此使用添加參數(shù)
./scripts/build.py --clean --package --version="1.3.5-custom-1.2" --platform=linux --arch=amd64

或者

默認(rèn)全量打包( ["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
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,333評論 6 531
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,491評論 3 416
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,263評論 0 374
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,946評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,708評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,186評論 1 324
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,255評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,409評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,939評論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,774評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,976評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,518評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,209評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,641評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,872評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,650評論 3 391
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,958評論 2 373

推薦閱讀更多精彩內(nèi)容