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

原文地址:https://www.cnblogs.com/KQNLL/p/14583517.html