windows下使用filebeat將本地log日志實時寫入到ELK


1、ELK安裝

可以參考我上篇https://www.cnblogs.com/KQNLL/p/14583177.html

2、filebeat安裝

下載filebeat,可以到官網下載https://www.elastic.co/cn/downloads/beats/filebeat

解壓后的目錄如下

下載后無需安裝,不安裝也可以直接使用。最好還是部署成winservice
在當前目錄右鍵點擊 PowerSHell 圖標,選擇『以管理員身份運行』,通過命令行 .\install-service-filebeat.ps1執行安裝
可能需要額外授予執行權限。命令為:PowerShell.exe -ExecutionPolicy RemoteSigned -File .\install-service-filebeat.ps1

3、filebeat配置

配置有兩種方式

3.1、直接寫入ES中寫

使用這種方式可以免去安裝logstash了,因為filebeat本身可以直接向ES輸出日志,但是有個缺點,沒法對日志數據進行過濾及一些特殊處理。

filebeat配置如下
#=========================== Filebeat inputs =============================
filebeat.inputs:
- type: log
  enabled: true
  paths:
    - c:\logs\*   #掃描的日志目錄
  fields:
    index: "mytestlog"
  multiline.pattern: '^DEBUG|ERROR|INFO|WARN|FATAL.*'
  multiline.negate: true
  multiline.match: after

#============================= Filebeat modules ===============================
filebeat.config.modules:
  path: ${path.config}/modules.d/*.yml
  reload.enabled: false
#==================== Elasticsearch template setting ==========================
setup.template.settings:
  index.number_of_shards: 1
#-------------------------- Elasticsearch output ------------------------------
output.elasticsearch:
  # Array of hosts to connect to.
   hosts: ["192.168.22.188:9200"]
   indices:
    - index: "mytestlog-%{+YYYY-MM}"
      when.contains:
        fields:
          index: "mytestlog"
#================================ Processors =====================================
processors:
  - add_host_metadata: ~
  - add_cloud_metadata: ~
  - add_docker_metadata: ~
  - add_kubernetes_metadata: ~

3.2、通過logstash再轉入ES

通過filebeat輸出到logstash可以對數據過濾及特殊處理。

filebeat配置如下
#=========================== Filebeat inputs =============================
filebeat.inputs:
- type: log
  enabled: true
  paths:
    - c:\logs\*  #掃描的日志目錄
  tags: ["applog"] #tags在logstash中可以用來做判斷
  fields:
    logtype: apploginfo #這樣可以在es中添加這個字段
  multiline.pattern: '^[[:space:]]|^System.*|^---.*'
  multiline.negate: false
  multiline.match: after

#============================= Filebeat modules ===============================
filebeat.config.modules:
  path: ${path.config}/modules.d/*.yml
  reload.enabled: false

#==================== Elasticsearch template setting ==========================
setup.template.settings:
  index.number_of_shards: 1
#----------------------------- Logstash output --------------------------------
output.logstash:
  hosts: ["192.168.22.188:5044"] #logstash的IP和端口

#================================ Processors =====================================
processors:
  - add_host_metadata: ~
  - add_cloud_metadata: ~
  - add_docker_metadata: ~
  - add_kubernetes_metadata: ~

logstash配置

修改/home/elk/logstash/pipeline/pipeline/logstash.conf

input {
  beats {
    port => 5044 #注意要和filebeat的輸出端口一致
  }
}
filter {
        grok {
                #過濾格式,從日志文件中提取特定的數據到ES的某個字段
                match => { "message" => "%{LOGLEVEL:level} - %{GREEDYDATA:message}" }
        }
}
output {
        #通過filebeat的tag來判斷輸出目標
        if "moonlog" in [tags] {
                elasticsearch {
                        hosts => [ "192.168.22.188:9200" ]
                        index => "applog-%{+YYYY.MM.dd}"
                 }
         }
        #同時輸出日志到控制台
        stdout { codec => rubydebug }
}

配置說明,
filter 的match規則可以使用http://grokdebug.herokuapp.com/這個網址驗證。
Logstash中過濾器Grok使用說明可以參照https://www.missshi.cn/api/view/blog/5ac6dea622890914df000001
比如要過濾的日志格式如下

2020-05-19 10:59:25.844  INFO 10724 [           main-1] o.s.j.e.a.AnnotationMBeanExporter        : Registering beans for JMX exposure on startup

這時配置的filter如下

filter {
	grok {
		match => { "message" => "%{TIMESTAMP_ISO8601:log_date}  %{LOGLEVEL:log_info} %{DATA:thread} %{NOTSPACE} %{SPACE} %{NOTSPACE} %{JAVACLASS:log_class} %{SPACE}: %{GREEDYDATA:log_message}" }
	}
}

最后,在C盤logs文件夾下創建日志文件,寫入日志,打開kibana,可以在Kibana中看到日志,在kibana中創建index后即可對日志數據進行查詢了。

參考鏈接:
https://blog.csdn.net/qq330983778/article/details/106242768/
https://www.jianshu.com/p/c801ec3a64e5
https://www.jianshu.com/p/861091c71bcd


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM