小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Fluentd輸入插件:in_tail用法詳解

 RealPython 2021-03-14

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

  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>

    這個示例用于tail Apache的日志。

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

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

    2. tag(必需,0.14.0(最低版本要求,下同)
      指定生成的事件的tag,取值為一個字符串??梢允褂?作為占位符,*會將日志文件路徑中的/替換為.號,比如:
      path /path/to/filetag foo.*

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

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

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

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

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

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

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

      這個示例會排除path中的gz和zip壓縮文件。

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

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

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

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

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

      使用上邊這個配置,會生成如下的日志事件:

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

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

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

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

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多