<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                參考文章: [Filebeat 模塊與配置](https://www.cnblogs.com/cjsblog/p/9495024.html) [開始使用Filebeat](https://www.cnblogs.com/cjsblog/p/9445792.html) [https://www.cnblogs.com/cjsblog/p/9517060.html](https://www.cnblogs.com/cjsblog/p/9517060.html) [TOC] # filebeat配置文件模塊 filebeat配置文件主要分如下三塊 | 模塊 | 模塊用途 | | --- | --- | | modules | 自帶的常用日志格式的模塊 | | input | 日志輸入模塊 | | output | 日志輸出模塊 | ## A modules模塊(nginx模塊為例) Filebeat提供了一組預先構建的模塊,可以使用這些模塊快速實現并部署一個日志監控解決方案,,支持常見的日志格式,如Nginx、Apache2和MySQL等。 ### **1 nginx模塊說明** nginx模塊解析Nginx創建的access和error日志,當運行模塊的時候,它在底層執行一些任務: * 設置默認的日志文件路徑 * 確保將每個多行日志事件作為單個事件發送 * 使用ingest節點解析和處理日志行,將數據塑造成適合在Kibana中可視化的結構 * 部署顯示日志數據的dashboards >這個模塊需要**ingest-user-agent**和**ingest-geoip**兩個Elasticsearch插件 ### **2 設置并運行模塊** 第1步:配置文件啟用modules和指定output output一定要指定,至于是輸出到reids,還是logstash或是es,就看具體需要了 ```sh [root@file_redis ~]# cat /etc/filebeat/filebeat.yml filebeat.config.modules: path: ${path.config}/modules.d/*.yml reload.enabled: false output.redis: hosts: ["10.0.0.11"] port: 6379 password : 'abcd1234e' key: "filebeat-1101" db: 3 timeout: 5 ``` 第2步:加載nginx模塊并重啟filebeat ``` filebeat modules enable nginx systemctl restart filebeat.service ``` 第3步:訪問nginx并查看redis第3個庫是否有日志產生 ``` curl 127.0.0.1 redis-cli -h 10.0.0.11 -a abcd1234e 10.0.0.11:6379> select 3 OK 10.0.0.11:6379[3]> KEYS * 1) "filebeat-1101" 10.0.0.11:6379[3]> lrange filebeat-1101 0 1 ...很多數據,省略顯示... ``` ### **3 重新指定模塊中的變量** 通過在配置文件中指定變量設置,可以覆蓋模塊文件中的默認設置,如nginx日志路徑: ``` - module: nginx access: enabled: true var.paths: ["/path/to/log/nginx/access.log*"] error: enabled: true var.paths: ["/path/to/log/nginx/error.log*"] ``` 其它模塊配置大同小異,不再贅述,更多請參考??[filebeat日志模塊](https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-modules.html) ## B input日志輸入模塊 除了使用自帶的模塊讀入日志數據外,更多的是自己寫input模塊按自己的需要讀取日志,一個配置文件中,可以指定多個日志輸入源: ~~~ filebeat.inputs: - type: log paths: - /var/log/system.log - /var/log/wifi.log - type: log paths: - "/var/log/apache2/*" ~~~ ### **1 排除行和包含行** 默認情況下,沒有行被刪除,所有的行都會被導出。空行被忽略。 * exclude_lines 排除行 一組正則表達式,用于匹配想要排除的行。Filebeat會丟棄匹配的行。 下面的例子配置Filebeat刪除以DBG開頭的行: ~~~ filebeat.inputs: - type: log ... exclude_lines: ['^DBG'] ~~~ * include_lines 包含行 一組正則表達式,用于匹配想要包含的行。Filebeat只會導出那些匹配這組正則表達式的行。 下面是一個例子,配置Filebeat導出以ERR或者WARN開頭的行: ~~~ filebeat.inputs: - type: log ... include_lines: ['^ERR', '^WARN'] ~~~ * 排除行和包含航同時被定義 如果 include\_lines 和 exclude\_lines 都被定義了,那么Filebeat先執行 include\_lines 后執行 exclude\_lines,而與這兩個選項在配置文件中被定義的順序沒有關系。 下面的例子導出那些除了以DGB開頭的所有包含sometext的行: ~~~sh filebeat.inputs: - type: log ... include_lines: ['sometext'] exclude_lines: ['^DBG'] ~~~ ### **2 json格式日志** 這些選項使得Filebeat將日志作為JSON消息來解析。例如: ~~~sh json.keys_under_root: true json.add_error_key: true json.message_key: log ~~~ 為了啟用JSON解析模式,必須至少指定下列設置項中的一個: * keys\_under\_root 默認情況下,解碼后的JSON被放置在一個以"json"為key的輸出文檔中。 如果啟用這個設置,那么這個key在文檔中被復制為頂級。默認是false。 * overwrite\_keys 如果keys\_under\_root被啟用,那么在key沖突的情況下,解碼后的JSON對象將覆蓋Filebeat正常的字段 * add\_error\_key 如果啟用,則當JSON反編排出現錯誤的時候Filebeat添加 "error.message" 和 "error.type: json"兩個key * message\_key 可選的配置,在應用行過濾和多行設置的時候指定一個JSON key。 指定的這個key必須在JSON對象中是頂級的,而且其關聯的值必須是一個字符串 * ignore\_decoding\_error 可選的配置,指定是否JSON解碼錯誤應該被記錄到日志中。默認是false。 ### **3 multiline多行日志處理** 典型的java錯誤日志,都是由很多行組成的,如果按單行收集,就不能正確的處理日志,需要用到多行處理功能,需要用到一下設置. * **multiline.pattern** 指定用于匹配多行的正則表達式 * **multiline.negate** 定義模式是否被否定。默認false。 * **multiline.match** 指定Filebeat如何把多行合并成一個事件。可選的值是**after**或者**before** * **multiline.flush\_pattern** 指定一個正則表達式,多行將從內存刷新到磁盤。 * **multiline.max\_lines** 可以合并成一個事件的最大行數。如果一個多行消息包含的行數超過max\_lines,則超過的行被丟棄。默認是500。 案例1:簡單的java多行日志 ~~~sh Exception in thread "main" java.lang.NullPointerException at com.example.myproject.Book.getTitle(Book.java:16) at com.example.myproject.Author.getBookTitles(Author.java:25) at com.example.myproject.Bootstrap.main(Bootstrap.java:14) ~~~ 為了把這些行合并成單個事件,用寫了多行配置: ~~~sh multiline.pattern: '^[[:space:]]' multiline.negate: false multiline.match: after ~~~ >這個配置將任意以空格開始的行合并到前一行 案例2:更復雜的例子 ~~~java Exception in thread "main" java.lang.IllegalStateException: A book has a null property at com.example.myproject.Author.getBookIds(Author.java:38) at com.example.myproject.Bootstrap.main(Bootstrap.java:14) Caused by: java.lang.NullPointerException at com.example.myproject.Book.getId(Book.java:22) at com.example.myproject.Author.getBookIds(Author.java:35) ... 1 more ~~~ 為了合并這個,用下面的配置: ~~~sh multiline.pattern: '^[[:space:]]+(at|\.{3})\b|^Caused by:' multiline.negate: false multiline.match: after ~~~ > 在這個例子中,模式匹配下列行: > * 以空格開頭,后面跟 at 或者 ... 的行 > * 以 Caused by: 開頭的行 ## C output輸出模塊 ### 1. **配置Elasticsearch output**?? 當指定Elasticsearch作為output時,Filebeat通過Elasticsearch提供的HTTP API向其發送數據。例如: ~~~sh output.elasticsearch: hosts: ["https://localhost:9200"] ~~~ 如果es開啟了認證,則需要添加如下配置 ~~~sh output.elasticsearch: hosts: ["https://localhost:9200"] username: "filebeat_internal" password: "YOUR_PASSWORD" ~~~ ### 2. **index和indices指定索引名** 索引名字默認是"filebeat-%{\[beat.version\]}-%{+yyyy.MM.dd}"(例如,"filebeat-6.3.2-2017.04.26")。 如果想改變這個設置,需要配置 setup.template.name 和 setup.template.pattern 選項。 如果想要根據日志中不同的內容行,生產不同的索引,就需要用到`indices`的條件格式 ~~~sh output.elasticsearch: hosts: ["http://localhost:9200"] index: "logs-%{[beat.version]}-%{+yyyy.MM.dd}" indices: - index: "critical-%{[beat.version]}-%{+yyyy.MM.dd}" when.contains: message: "CRITICAL" - index: "error-%{[beat.version]}-%{+yyyy.MM.dd}" when.contains: message: "ERR" ~~~ ### 3. **配置Logstash output** ~~~ output.logstash: hosts: ["127.0.0.1:5044"] ~~~ 上面是配置Filebeat輸出到Logstash,那么Logstash本身也可以有輸出配置,例如: ~~~ input { beats { port => 5044 } } output { elasticsearch { hosts => ["http://localhost:9200"] index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}" } } ~~~ ### 4. **配置redis output** ~~~ output.redis: hosts: ["10.0.0.11"] port: 6379 password : 'abcd1234e' key: "filebeat-1101" db: 3 timeout: 5 ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看