欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

日志收集filebeat+logstash

程序员文章站 2022-07-06 19:58:37
...

1、概述

web服务产生的日志文件,需要进行日志收集并进行可视化展示,一般使用filebeat和logstash组合。

2、组件介绍

2.1 Logstash

Logstash是具有实时收集日志功能,可以动态统一来自不同来源的数据,任何类型的事件都可以通过各种各样的输入,过滤器和输出插件来丰富和转换。是一个重量级的服务,很占用内存,会影响到部署到本机器上的服务。

2.2 Filebeat

Filebeat是用于转发和集中日志数据的轻量级服务。能监视您指定的日志文件或位置,收集日志事件,并将它们转发到Logstash或elasticsearch

3、单点部署

3.1、 部署流程

日志收集filebeat+logstash

3.2、 Filebeat.yml文件

 

filebeat.prospectors:
# 输入设置
- input_type: log
  paths:
    # 指定日志文件位置,可以使用正则方式,也可以指定多个路径的日志
    - /mnt/log/log.*

# 输出设置
output.logstash:
  # logstsh的ip地址 
  hosts: ["127.0.0.1:5044"]
  loadbalance: true
  index: filebeat

3.3、 Logstash.conf文件

 

input {
  # 接收filebeat读取的数据
  beats {
    port => 5044
    codec => "json"
  }
}

output {
  # 输出到es
  elasticsearch {
    hosts => ["127.0.0.1:9200"]
    index => "test"
    document_type => "log"
    manage_template => false
  }
}

3.4、Logstash.yml文件

 

http.host: "0.0.0.0"
path.config: /usr/share/logstash/pipeline
xpack.monitoring.enabled: false

3.5、 容器创建

Logstash

 

sudo docker run \
--restart always \
--name logstash \
-itd \
-p 5044:5044 \
-p 9600:9600 \
-v /path/logstash/pipeline/:/usr/share/logstash/pipeline/ \
-v /path/logstash/config/logstash.yml:/usr/share/logstash/config/logstash.yml \
elastic/logstash

Filebeat

 

sudo docker run \
--restart always \
--name filebeat \
-itd \
-v /path/filebeat/filebeat.yml:/usr/share/filebeat/filebeat.yml \
-v /path/mylog:/data \
elastic/filebeat

4、多个日志源输出到不同存储位置

4.1、修改filebeat.yml

 

filebeat.prospectors:
# 日志源1
- input_type: log
  paths:
    - /data/video/log.*
  tags: ["log1"]  # 后面logstash用于区别哪个日志来源写入不同的位置
# 日志源2
- input_type: log
  paths:
    - /data/search/*.log
  tags: ["log2"]  # 后面logstash用于区别哪个日志来源写入不同的位置
 
# 输出位置
output.logstash:
  # The Logstash hosts
  hosts: ["127.0.0.1:5044"]
  loadbalance: true
  index: filebeat

4.2、修改logstash.conf

 

input {
  # 接收filebeat读取的数据
  beats {
    port => 5044
    codec => "json"
  }
}

# 不同的日志输出到不同的位置
output {
  if "log1" in [tags] {      
    elasticsearch{
      hosts => ["127.0.0.1:9200"]
      index => "test_logstash_log1"
      document_type => "log" 
    }
  }
  if "log2" in [tags] { 
    elasticsearch{
      hosts => ["127.0.0.1:9200"]
      index => "test_logstash_log2"
      document_type => "log"
    }
  }
}



 

相关标签: ELK相关