久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Fluentd輸入插件:in_tail用法詳解

 RealPython 2021-03-14

in_tail輸入插件內(nèi)置于Fluentd中,,無需安裝,。它允許fluentd從文本文件尾部讀取日志事件,,其行為類似linux的tail -F命令(按文件名來tail),。這幾乎是最常用的一個(gè)輸入插件了,。

  1. 示例配置
    <source> @type tail path /var/log/httpd-access.log pos_file /var/log/td-agent/httpd-access.log.pos tag apache.access <parse> @type apache2 </parse></source>

    這個(gè)示例用于tail Apache的日志,。

  2. 工作原理
    當(dāng)Fluentd首次配置使用in_tail插件時(shí),它會(huì)從path指定的日志文件尾部讀取數(shù)據(jù)。
    一旦日志文件被輪轉(zhuǎn)重寫,,F(xiàn)luentd則開始從新文件頭部讀取數(shù)據(jù),。Fluentd會(huì)持續(xù)追蹤文件當(dāng)前的inode編號(hào)。
    當(dāng)td-agent重啟時(shí),,它會(huì)從重啟前的位置開始讀取數(shù)據(jù),,這個(gè)位置保存在pos_file指定的文件中。

  3. 插件參數(shù)
    1. @type(必需)
      插件類型,,取值為tail

    2. tag(必需,,0.14.0(最低版本要求,下同)
      指定生成的事件的tag,,取值為一個(gè)字符串,。可以使用*作為占位符,,*會(huì)將日志文件路徑中的/替換為.號(hào),,比如:
      path /path/to/filetag foo.*

      上邊這個(gè)配置會(huì)產(chǎn)生foo.path.to.file這樣的tag。

    3. path(必需,,0.14.0
      指定日志文件路徑,,可使用逗號(hào)(,)作為分隔符指定多個(gè)路徑。
      路徑中可包含*和strftime格式時(shí)間字符串,,用以動(dòng)態(tài)增刪文件,。
      Fluentd會(huì)定期刷新監(jiān)控文件列表。
      path /path/to/%Y/%m/%d/*

      這個(gè)示例監(jiān)控時(shí)間字符串指定的目錄,,比如若日期為20140401,,F(xiàn)luentd會(huì)監(jiān)控/path/to/2014/04/01路徑下的所有文件。

      path /path/to/a/*,/path/to/b/c.log

      這個(gè)示例監(jiān)控多個(gè)目錄,。

      需要注意的是,,*不能用于存在日志文件輪轉(zhuǎn)的情況,這會(huì)導(dǎo)致日志重復(fù),。這種情況建議使用單獨(dú)的in_tail配置,。

    4. path_timezone(1.8.1
      若path參數(shù)中包含strftime時(shí)間字符串,可通過path_timezone設(shè)置采用的時(shí)區(qū),。in_tail默認(rèn)使用系統(tǒng)時(shí)區(qū),,可通過如下配置來設(shè)置:
      path_timezone "+00"
    5. exclude_path(0.14.0
      指定從監(jiān)控文件列表中排除哪些文件,這是一個(gè)字符串?dāng)?shù)組,。
      path /path/to/*exclude_path ["/path/to/*.gz", "/path/to/*.zip"]

      這個(gè)示例會(huì)排除path中的gz和zip壓縮文件。

    6. refresh_interval(0.14.0
      指定監(jiān)控列表刷新間隔,,默認(rèn)為60秒,。當(dāng)path中包含*時(shí)生效。

    7. limit_recently_modified(0.14.13
      只監(jiān)控指定修改時(shí)間范圍內(nèi)的文件。該參數(shù)取值為time類型的時(shí)間,,且當(dāng)path中包含*時(shí)生效,。

    8. skip_refresh_on_startup(0.14.13
      設(shè)置程序啟動(dòng)時(shí)是否刷新文件列表,默認(rèn)為false,。不刷新,,可在path中包含*時(shí)減少啟動(dòng)耗時(shí)。

    9. read_from_head(0.14.0
      從文件頭部讀取數(shù)據(jù),,默認(rèn)為false,。當(dāng)取值true時(shí),in_tail會(huì)在啟動(dòng)階段讀取文件,,若文件太大會(huì)很耗時(shí),,且會(huì)阻塞其他插件的啟動(dòng)。

    10. encoding, from_encoding(0.14.0
      設(shè)置in_tail輸出數(shù)據(jù)的編碼,,默認(rèn)采用ASCII-8BIT編碼,。
    11. read_lines_limit(0.14.0
      設(shè)置每次從文件中讀取的行數(shù),默認(rèn)為1000.
      如果在日志中發(fā)現(xiàn)“chunk bytes limit exceeds for an emitted
      event stream”這樣的錯(cuò)誤,,應(yīng)該減小此參數(shù)值,。
    12. multiline_flush_interval(0.14.0
      多行處理模式下的緩存輸出間隔,默認(rèn)不啟用此配置,。
      當(dāng)使用format_firstline選項(xiàng)時(shí),,這個(gè)參數(shù)有用一些。
    13. pos_file(強(qiáng)烈推薦配置,,0.14.0
      Fluentd使用pos_file保存文件讀取位置,。
      pos_file可在一個(gè)文件中保存多個(gè)位置,所以每個(gè)source中
      配置一個(gè)pos_file即可,。
      需要注意的是,,多個(gè)in_tail插件不能共用一個(gè)pos_file配置,這可能
      導(dǎo)致未知的行為,,比如pos_file文件損壞,。
    14. pos_file_compaction_interval(1.9.2
      設(shè)置pos_file的壓縮間隔,被壓縮的內(nèi)容包含:已移出監(jiān)控列表的
      文件,、無法解析的文件,、重復(fù)文件行??稍谠O(shè)置pos_file的情況下
      設(shè)置此參數(shù),。
      pos_file /var/log/td-agent/tmp/access.log.pospos_file_compaction_interval 72h
    15. <parse>指令(必需)
      用于配置解析文件內(nèi)容使用的解析器。我們會(huì)在后續(xù)的文章中了解到解析器的使用,。這里有一個(gè)例子:
      # json<parse> @type json</parse>
      # regexp<parse> @type regexp expression ^(?<name>[^ ]*) (?<user>[^ ]*) (?<age>\d*)$</parse>
    16. format(已廢棄,,使用上邊的parse)

    17. path_key(0.14.0
      可以將監(jiān)控文件路徑添加到生成的日志事件中,,path_key用于指定事件中path的key名稱。
      path /path/to/access.logpath_key tailed_path

      使用上邊這個(gè)配置,,會(huì)生成如下的日志事件:

      {"tailed_path":"/path/to/access.log","k1":"v1",...,"kN":"vN"}
    18. rotate_wait(0.14.0
      文件輪轉(zhuǎn)等待時(shí)間,。在監(jiān)控文件存在輪轉(zhuǎn)的情況下,F(xiàn)luentd會(huì)在監(jiān)測到文件輪轉(zhuǎn)時(shí),,再監(jiān)控老文件一段時(shí)間,,以避免數(shù)據(jù)丟失。默認(rèn)的等待時(shí)間為5秒,。

    19. enable_watch_timer(0.14.0
      是否啟用監(jiān)控定時(shí)器,,默認(rèn)開啟一個(gè)間隔1秒的定時(shí)器,關(guān)閉后會(huì)降低
      CPU和IO消耗,。這個(gè)是用來解決某些系統(tǒng)監(jiān)控不準(zhǔn)確的問題,,未來
      版本會(huì)禁用此功能。
    20. enable_stat_watcher(1.0.1
      是否啟用額外的基于inotify的監(jiān)控器,。默認(rèn)為true,,關(guān)閉后會(huì)禁用
      inotify事件,僅通過定時(shí)監(jiān)控器來追蹤文件,。
    21. emit_unmatched_lines
      是否輸出無法解析的文件行信息,,默認(rèn)為false。
  4. 常見問題
    1. 當(dāng)<parse>無法匹配日志時(shí)會(huì)如何處理
      emit_unmatched_lines設(shè)為true,,in_tail會(huì)打印出告警信息,。
      比如,<parse>指定的解析器為json,,而日志中包含“123,456,str,true”這樣的記錄,,那么在fluentd運(yùn)行日志中就會(huì)看到如下輸出:
      2018-04-19 02:23:44 +0900 [warn]: #0 pattern not match: "123,456,str,true"
    2. in_tail為何沒有開始讀取日志
      可能監(jiān)控文件確實(shí)沒有產(chǎn)生新的數(shù)據(jù),試著追加一條數(shù)據(jù)看看,。

    3. in_tail輸出“/path/to/file unreadable”,,這是什么導(dǎo)致的
      若在運(yùn)行日志中發(fā)現(xiàn)如下信息,可能是fluentd沒有監(jiān)控文件的讀權(quán)限,。
      /path/to/file unreadable. It is excluded and would be examined next time.
    4. 如何避免監(jiān)控大量文件時(shí)in_tail停止運(yùn)行
      可設(shè)置enable_stat_watcher為false,。

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多