天天看點

EFK在windows的安裝和使用

什麼是EFK?

Elasticsearch:一個分布式、高擴充、高實時的搜尋與資料分析引擎。

Filebeat:輕量型日志采集器。

Kibana:是一款開源的資料分析和可視化平台,可以當做是Elasticsearch的可視化操作界面。

EFK可以替代ELK來使用,logstash跑在jvm上,資源消耗比較大,filebeat更輕量,占用資源更少。

下載下傳安裝

  • windows下載下傳後直接解壓可直接使用,下載下傳位址如下:

    Elasticsearch:https://www.elastic.co/downloads/elasticsearch

    Filebeat:https://www.elastic.co/downloads/beats/filebeat

    Kibana:https://www.elastic.co/downloads/kibana

使用

1.項目配置
  • 在resources下的application.yml添加配置:
logging:
  config: classpath:logback.xml
  file: ad-sponsor.log
           
  • 在resources中添加 logback.xml,内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <!-- appender 定義了寫日志的元件, 有兩個必須的屬性: name 指定 appender 的名稱 和 class 指定 appender 的類型, 即實作的功能 -->
  <!-- RollingFileAppender 的作用是滾動記錄檔案, 先将日志記錄到指定檔案, 當符合某個條件時再将日志記錄到其他檔案 -->
  <appender name="system" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>./logs/qixingcxy-core.log</file>
    <!-- rollingPolicy 的作用是當發生滾動時, 定義 RollingFileAppender 的行為 -->
    <!-- TimeBasedRollingPolicy 是最常用的滾動政策, 它根據時間指定滾動政策, 既負責滾動也負責觸發滾動 -->
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <fileNamePattern>./logs/qixingcxy-core.%d{yyyy-MM-dd}.log</fileNamePattern>     <!-- 必要節點 -->
      <maxHistory>5</maxHistory>      <!-- 可選節點 -->
    </rollingPolicy>
    <!-- encoder 負責兩件事情: 把日志資訊轉換為位元組數組; 把位元組數組寫到輸出流 -->
    <encoder>
      <pattern>[%d{yyyy-MM-dd HH:mm:ss:SSS}] %thread %level %logger{36} %L - %msg%n</pattern>
      <charset>UTF-8</charset>
    </encoder>
  </appender>

  <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
      <pattern>[%d{yyyy-MM-dd HH:mm:ss:SSS}] %thread %level %logger{36} %L - %msg%n</pattern>
      <charset>UTF-8</charset>
    </encoder>
  </appender>

  <!-- logger 是用來設定某一個包或者具體某一個類的日志列印級别, 以及指定的 appender -->
  <logger name="com.qixingcxy.core" level="info" additivity="false">
    <appender-ref ref="stdout"/>
    <appender-ref ref="system"/>
  </logger>

  <logger name="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping" level="info"
          additivity="false">
    <appender-ref ref="stdout"/>
  </logger>

  <logger name="org.springframework.orm.jpa.JpaTransactionManager" level="debug"
          additivity="false">
    <appender-ref ref="stdout"/>
  </logger>

  <logger name="org.hibernate.type.descriptor.sql.BasicBinder" level="trace"
          additivity="false">
    <appender-ref ref="stdout"/>
  </logger>

  <root level="warn">
    <appender-ref ref="stdout"/>
  </root>
</configuration>
           
2.Filebeat配置
  • 打開filebeat檔案夾下的filebeat.yml,配置Filebeat inputs
filebeat.inputs:
- type: log

  #true代表啟用目前配置
  enabled: true

  # filebeat監聽的日志檔案,path是數組,可以配置多個目錄下的檔案,名字和logback.xml中要對應
  paths:
    - C:\studyspace\qixingcxy\logs\qixingcxy-core.log

  # 多行日志的配置,也就是将多行日志合并為一條日志的規則配置
  # 這個需要與logback.xml中定義的日志規則比對 (^\[ 的意思為不以 [ 為開頭的将合并為多行)
  multiline.pattern: ^\[

  # negate和match 的配置将 [ 後面的多行與最近的一個以 [ 開頭的日志進行合并成為一行
  multiline.negate: false
  multiline.match: after
  
  # 不從頭讀取檔案,而是從尾部讀取,意思是讀取filebeat啟動之後的日志,啟動之前的都被抛棄掉
  tail_files: true
           
  • 打開filebeat檔案夾下的filebeat.yml,配置Elasticsearch template
# setup.template區域指定索引的模闆,用來設定在ES中的映射
#模闆的名稱
setup.template.name: qixingcxy-core
#模闆的模式
setup.template.pattern: qixingcxy-core-*
#Kibana索引的配置
setup.dashboards.index: qixingcxy-core-*
#描述字段的YAML檔案路徑(發送到 ES 的字段定義),使用Filebeat自帶的
setup.template.fields: fields.yml

setup.template.settings:
  # 索引分區個數的定義
  index.number_of_shards: 3
           
  • 打開filebeat檔案夾下的filebeat.yml,配置Elasticsearch output
output.elasticsearch:
  # ES 主機的位址,即使是叢集也可以配置一個,建議全部配置
  hosts: ["localhost:9200"]
  # ES 資料索引的定義,也就是說将資料發送到哪個索引中去
  index: "qixing-core-%{+yyyy.MM.dd}"
  pipeline: "qixing-core-log"
           

啟動

  • 啟動 elasticsearch

    進入elasticsearch的bin目錄,輕按兩下elasticsearch.bat啟動

  • 啟動 kibana

    進入kibana的bin目錄,輕按兩下kibana.bat啟動

  • 啟動 filebeat

    進入filebeat目錄,自己建立一個start.bat輕按兩下啟動,内容如下:

.\filebeat -e -c filebeat.yml
           

配置截取條件 配置

可以使用postman來配置

EFK在windows的安裝和使用

送出路徑(送出方式為put):

127.0.0.1:9200/_ingest/pipeline/qixing-core-log
           

body内容

{
  "description" : "qixing-core-log",
  "processors": [
    {
      "grok": {
        "field": "message",
        "patterns": ["\\[%{TIMESTAMP_ISO8601:log_time}\\] %{NOTSPACE:thread} %{NOTSPACE:log_level} %{NOTSPACE:java_class} %{NOTSPACE:code_line} - %{GREEDYDATA:content}"]
      }
    },
    {
        "date": {
            "field": "log_time",
            "formats": ["yyyy-MM-dd HH:mm:ss:SSS"],
            "timezone": "Asia/Shanghai",
            "target_field": "@timestamp"
        }
    }
  ]
}
           

Filebeat.yml 配置 Elasticsearch output

output.elasticsearch:
  # 需要和_ingest/pipeline/qixing-core-log相對應
  pipeline: "qixing-core-log"
           

通路

位址:http://localhost:5601