一.简介

常见的日志采集处理解决方案

登录后复制
Filebeat + ES + Kibana
Filebeat + Logstash + ES + Kibana
Filebeat + Kafka/Redis/File/Console + 应用程序(处理/存储/展示)
Filebeat + Logstash+Kafka/Redis/File/Console + 应用程序(处理/存储/展示)
  • 1.
  • 2.
  • 3.
  • 4.

ELK日志收集之kafka 方案Filebeat + kafka + Logstash + ES + Kibana_第1张图片

二.配置

1.创建Filebeat配置文件 采集nginx/tomcat日志

登录后复制
#142服务器filebeat配置
cd /es/softwares/filebeat-7.17.5-linux-x86_64/config 
cat >01-nginx-tomcat-to-kafka.yaml<<'EOF'
filebeat.inputs:
#nginx日志文件采集
- type: log
  enabled: true
  paths:
    - /var/log/nginx/access.log*
    - /var/log/nginx/error.log*
#多行选项配置
  multiline.type: pattern
  multiline.pattern: '^[0-9]{4}-[0-9]{2}-[0-9]{2}'
  multiline.negate: true
  multiline.match: after
#tomcat日志文件采集
- type: log
  enabled: true
  paths:
    - /app/tools/tomcat/logs/localhost_access_log.*.txt
    - /app/tools/tomcat/logs/catalina*
#多行选项配置
  multiline.type: pattern
  multiline.pattern: '^\s*(\d{4}|\d{2})\-(\d{2}|[a-zA-Z]{3})\-(\d{2}|\d{4})'
  multiline.negate: true
  multiline.match: after
#将数据输出到kafka
output.kafka:
  hosts: ["192.168.77.176:9092", "192.168.77.177:9092", "192.168.77.178:9092"]
  topic: "nginx_tomcat_logs_topic"
EOF
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.

启动Filebeat时,确保指定正确的配置文件:

登录后复制
filebeat -e -c 01-nginx-tomcat-to-kafka.yaml
  • 1.

2.kafka查看消费数据

登录后复制
#176服务器查看kafka消费数据
kafka-console-consumer.sh --bootstrap-server 192.168.77.176:9092 --topic nginx_tomcat_logs_topic --from-beginning
  • 1.
  • 2.

ELK日志收集之kafka 方案Filebeat + kafka + Logstash + ES + Kibana_第2张图片

3.logstash从kafka拉取数据写入es配置

logstash指定输入类型为kafka

登录后复制
#176kafka配置
cat >01-kafka-to-es.conf<<'EOF'
input {
  kafka {
    #指定kafka集群地址
    bootstrap_servers => "192.168.77.176:9092,192.168.77.177:9092,192.168.77.178:9092"
    #指定消费的topic
    topics => ["nginx_tomcat_logs_topic"]
    #指定消费者组
    group_id => "nginx_tomcat_logs_topic_group01"
    #指定消费的偏移量,"earliest"表示从头读取数据,"latest"表示从最新的位置读取数据
    auto_offset_reset => "earliest"
  }
}

filter {
  json {
    # 对指定字段进行json格式解析
    source => "message"
  }
    
  mutate {
     remove_field => [ "agent","log","input","host","ecs","tags" ]
  }
}

output { 
  #将数据写入ES集群
  elasticsearch {
    #指定ES主机地址
    hosts => ["http://192.168.77.176:9200","http://192.168.77.177:9200","http://192.168.77.178:9200"]
    #指定索引名称
    index => "nginx_tomcat_logs_topic-%{+YYYY.MM.dd}"
    #配置es用户名和密码
    user => "elastic"
    password => "SfSnnfYPzBTMMTyUbuRa"
  }
}

EOF
#启动logsash
logstash -f 01-kafka-to-es.conf
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.

4.elasticsearch数据查看

ELK日志收集之kafka 方案Filebeat + kafka + Logstash + ES + Kibana_第3张图片

5.kabana查看

创建索引模式

ELK日志收集之kafka 方案Filebeat + kafka + Logstash + ES + Kibana_第4张图片

discover查看数据

ELK日志收集之kafka 方案Filebeat + kafka + Logstash + ES + Kibana_第5张图片