搭建elk日志分析平台的详细过程(代码片段)

timfruit timfruit     2022-12-04     166

关键词:

搭建ELK日志分析平台的详细过程

 

日志分析系统-ELK平台

由于日志文件都离散的存储在各个服务实例的文件系统之上,仅仅通过查看日志文件来分析我们的请求链路依然是一件相当麻烦的差事。 ELK平台,它可以轻松的帮助我们来收集和存储这些跟踪日志,同时在需要的时候我们也可以根据Trace ID来轻松地搜索出对应请求链路相关的明细日志

ELK平台主要有由ElasticSearch、Logstash和Kiabana三个开源免费工具组成:

  • Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。
  • Logstash是一个完全开源的工具,他可以对你的日志进行收集、过滤,并将其存储供以后使用。
  • Kibana 也是一个开源和免费的工具,它Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。

 

本人下载的均为7.6.2版本

 

 

1.下载elasticsearch

技术图片

 

 

解压后, linux平台下运行 bin/elasticsearch命令启动es (or binelasticsearch.bat on Windows)

 

2.下载kibana
解压后,修改配置config/kibana.yml,设置es

# The URLs of the Elasticsearch instances to use for all your queries.
elasticsearch.hosts: ["http://localhost:9200"]

linux平台下运行bin/kibana启动 (or binkibana.bat on Windows)

启动后,可以在浏览器中访问http://localhost:5601

 

 

3.下载logstash

解压后,在config目录下, 复制配置logstash-sample.conf 为 logstash.conf 配置修改如下:

# Sample Logstash configuration for creating a simple
# Beats -> Logstash -> Elasticsearch pipeline.

input 
  beats 
    port => 5044
  

filter 
  grok 
    match => [ "message", ‘"logtimeUTC":"%DATA:logtimeUTC","logtime":"%DATA:logtime","loglevel":"%DATA:loglevel","service":"%DATA:service","traceId":"%DATA:traceId","spanId":"%DATA:spanId","exportable":"%DATA:exportable","pid":"%DATA:pid","thread":"%DATA:thread","class":"%DATA:class","logbody":"%DATA:logbody"‘]
  

  mutate 
    remove_field => "message"
  

output 
  elasticsearch 
    hosts => ["http://localhost:9200"]
    index => "springcloud-json-log-%+YYYY.MM.dd"
    #user => "elastic"
    #password => "changeme"
  

 

上面的意思是,由beat发送数据给logstash,然后再发给Elasticsearch

最后, linux平台下运行bin/logstash -f config/logstash.conf启动logstash


注意事项,上面的

match => [ "message", ‘"logtimeUTC":"%DATA:logtimeUTC","logtime":"%DATA:logtime","loglevel":"%DATA:loglevel","service":"%DATA:service","traceId":"%DATA:traceId","spanId":"%DATA:spanId","exportable":"%DATA:exportable","pid":"%DATA:pid","thread":"%DATA:thread","class":"%DATA:class","logbody":"%DATA:logbody"‘]

对应于logback-logstash.xml中的json格式日志,意思是, 将属性message中的json日志文本,转成成json属性,

 

remove_field => "message"

转换之后移除message属性

 

index => "springcloud-json-log-%+YYYY.MM.dd"

指定了日志存储入es时,使用的索引模板, 看下面的5.创建索引模板步骤

 

4.下载filebeat
解压后,修改filebeat.yml配置, 本人配置示例

主要修改如下(摘抄):

filebeat.inputs:

# Each - is an input. Most options can be set at the input level, so
# you can use different inputs for various configurations.
# Below are the input specific configurations.

- type: log

  # Change to true to enable this input configuration.
  enabled: true  #修改为true

  # Paths that should be crawled and fetched. Glob based paths.
  paths:
    # /var/log/*.log
    #- c:programdataelasticsearchlogs*
    - /home/timfruit/work/spring-cloud-demo/logs/*.json # 配置我们要读取的 Spring Boot 应用的日志

#-------------------------- Elasticsearch output ------------------------------
#output.elasticsearch:
  # Array of hosts to connect to.  #去掉输出到es
  #hosts: ["localhost:9200"]

  # Protocol - either `http` (default) or `https`.
  #protocol: "https"

  # Authentication credentials - either API key or username/password.
  #api_key: "id:api_key"
  #username: "elastic"
  #password: "changeme"

#----------------------------- Logstash output --------------------------------
output.logstash:
  # The Logstash hosts  #启用输出到logstash
  hosts: ["localhost:5044"]  

 

注意事项,

- /home/timfruit/work/spring-cloud-demo/logs/*.json # 配置我们要读取的 Spring Boot 应用的日志

该配置需要修改为自己的日志路径

 

最后, linux平台下运行./filebeat -e -c filebeat.yml启动

 

Logstash是基于JVM的重量级工具,可以添加集成轻量级filebeat。
本demo日志收集流程
应用日志 -> filebeat -> logstash -> Elasticsearch -> Kibana
实际生产中,如果日志量每秒钟很大,写入es时可能有问题,就需要添加使用消息队列kafka。
应用日志 -> filebeat -> kafka -> logstash -> Elasticsearch -> Kibana

 

 

5.创建索引模板
在启动es,kibana之后,访问kibana http://localhost:5601


技术图片

技术图片
PUT _template/springcloud-json-log_template

  "version": 1,
  "order" : 99,
  "index_patterns": ["springcloud-json-log-*"],

  "settings" : 
    "number_of_shards" : 1,
    "number_of_replicas" : 0,
    "refresh_interval" : "1s"
  ,
  "mappings" : 
    "dynamic" : "false",
    "properties" : 
      "logtimeUTC" : 
        "type" : "date",
        "index" : "true"
      ,
      "logtime" : 
        "type" : "date",
        "format": "yyyy-MM-dd HH:mm:ss.SSS||yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis",
        "index" : "true"
      ,
      "loglevel" : 
        "type" : "text",
        "index" : "true"
      ,
      "service" : 
        "type" : "text",
        "index" : "true"
      ,
      "traceId" : 
        "type" : "text",
        "index" : "true"
      ,
      "spanId" : 
        "type" : "text",
        "index" : "true"
      ,
      "exportable" : 
        "type" : "text",
        "index" : "false"
      ,
      "pid" : 
        "type" : "text",
        "index" : "false"
      ,
      "thread" : 
        "type" : "text",
        "index" : "false"
      ,
      "class" : 
        "type" : "text",
        "index" : "false"
      ,
      "logbody" : 
        "type" : "text",
        "index" : "false"
      
    
  
View Code

 

说明:

  • index_patherns: 以 springcloud-json-log-开头的索引均会应用此模板
  • order: 模板的优先级,数字越大优先级越高,避免模板冲突
  • number_of_shards: 索引使用的分片数量
  • number_of_replicas: 索引的副本数,当你需要导入大量数据,第一次建立索引时,可以设置为0,提高写入速度,导入完成后可以动态修改
  • refresh_interval: 向临时空间刷写的频率,类似于硬盘的 fsync
  • index: true:字段可用于搜索, false: 不能用于搜索

 

查看已创建的模板
技术图片

 

 

6.配置应用日志,启动应用输出日志到logs文件夹 application.yml

# 配置应用名,logback-logstash.xml使用到,输出的日志名为应用名
spring:
  application:
    name: netflix-account-example
##====================================log config===============================================
logging:
  config: classpath:logback-logstash.xml

 

注意事项,需要添加logback-logstash.xml到resources下,需要添加依赖包

       <!-- elk logstash 日志-->
        <dependency>
            <groupId>net.logstash.logback</groupId>
            <artifactId>logstash-logback-encoder</artifactId>
            <version>6.3</version>
        </dependency>

 

本demo可以仅启动两个应用测试,一是eureka-server,二是mall-account-application

(不使用本人的demo也是可以的,自己可以搭建一个springboot应用,并且配置好日志,运行输出日志即可)

 

启动后可以看到logs文件夹下有.json日志


filebeat会读取日志文件,发送给logstash

 

 

7.通过kibaba查看应用日志

  • 创建index pattern
    技术图片

    • 输入"springcloud-json-log-*"模糊匹配日志索引,注意,这里如果没有对应日志,是创建不了的
      技术图片

    • 选择logtimeUTC字段作为排序时间,最后点击创建即可。
      技术图片

  • 在dashboard面板查看日志
    点开dashboard后,选择刚才创建的index pattern  "springcloud-json-log-*" 查看
    左下方可以选择需要查看的字段,本人选择了Time,loglevel,service,logbody,其中Time字段为刚才选择的logtimeUTC字段
    可以根据Time字段进行时间排序,
    可以选择时间范围进行查看,一般范围是15分钟
    技术图片

 

 

在该基础上可以搭建监控平台

技术图片

 

 

 

完整demo源码

 

参考资料:

Spring Cloud构建微服务架构:分布式服务跟踪(整合logstash)

芋道 ELK(Elasticsearch + Logstash + Kibana) 极简入门

优化es index patterns 和 kibana 多余字段

how-to-apply-grok-filter-for-json-logs-to-from-filebeat-in-logstash

 

震惊全网的elk日志分析系统(齐全详细理论+搭建步骤图释)(代码片段)

...介绍1.3.1Elasticsearch1.3.2Logstash1.3.3Kibana二、ELK日志分析系统搭建2.1实验环境2.2部署Elasticsearch软件(node1和node2都需部署)2.3安装elasticsea 查看详情

elk日志分析平台搭建(代码片段)

ELK平台介绍在搜索ELK资料的时候,发现这篇文章比较好,于是摘抄一小段:以下内容来自:http://baidu.blog.51cto.com/71938/1676798日志主要包括系统日志、应用程序日志和安全日志。系统运维和开发人员可以通过日志了解服务器软硬件... 查看详情

linuxelk日志分析系统|logstash日志收集|elasticsearch搜索引擎|kibana可视化平台|架构搭建|超详细(代码片段)

...logstash日志收集|elasticsearch搜索引擎|kibana可视化平台|架构搭建|超详细ELK日志分析系统1.日志服务器2.ELK日志分析系统3日志处理步骤一、Elasticsearch介绍1.1概述1.2核心概念二、Kibana介绍三ELK架构搭建3.1配置要求3.2安装Elasticsearch在node... 查看详情

elk搭建实时日志分析平台之二logstash和kibana搭建(代码片段)

本文书接前回《ELK搭建实时日志分析平台之一ElasticSearch》文:铁乐与猫四、安装Logstashlogstash是一个数据分析软件,主要目的是分析log日志。1)下载和解压logstash下载地址:https://www.elastic.co/cn/downloads/logstash上传到服务器/usr/ELK目... 查看详情

elk日志分析平台搭建(代码片段)

1.下载安装JDK,并配置环境变量vim/etc/profile将下面的内容添加至文件末尾:JAVA_HOME=/usr/local/jdk1.8.0_111JRE_HOME=/usr/local/jdk1.8.0_111/jreCLASSPATH=.:$JAVA_HOME/lib:/dt.jar:$JAVA_HOME/lib/tools.jarPATH=$PATH:$JAVA_HOME/bine 查看详情

elk日志平台搭建(代码片段)

ELK日志平台搭建整体架构整体架构主要分为5个模块,分别提供不同的功能:Filebeat:轻量级数据收集引擎。基于原先Logstash-fowarder的源码改造出来。是ELKStack在Agent的第一选择。<br><br>Kafka:数据缓冲队列。作为消息队列... 查看详情

elk日志分析平台搭建全过程

一、使用背景  当生产环境有很多服务器、很多业务模块的日志需要每时每刻查看时二、环境系统:centos6.5JDK:1.8Elasticsearch-5.0.0Logstash-5.0.0kibana-5.0.0三、安装1、安装JDK下载JDK:http://www.oracle.com/technetwork/java/javase/downloads/jdk... 查看详情

centos7.5搭建elk-6.5.0日志分析平台(代码片段)

Centos7.5搭建ELK-6.5.0日志分析平台1.简介工作工程中,不论是开发还是运维,都会遇到各种各样的日志,主要包括系统日志、应用程序日志和安全日志,对于开发人员来说,查看日志,可以实时查看程序的运行错误,以及性能分析... 查看详情

elk日志分析平台搭建全过程

一、环境系统:centos6.5JDK:1.8Elasticsearch-5.2.2Logstash-5.2.2kibana-5.2.2二、安装1、安装JDK下载JDK:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html本环境下载的是64位tar.gz包,将安装包拷贝至安装服务器/u 查看详情

开源日志分析系统elk平台搭建部署

开源日志分析系统ELK平台搭建部署  一、前言日志主要包括系统日志、应用程序日志和安全日志。系统运维和开发人员可以通过日志了解服务器软硬件信息、检查配置过程中的错误及错误发生的原因。经常分析日志可以了... 查看详情

震惊全网的elk日志分析系统(齐全详细理论+搭建步骤图释)(代码片段)

...介绍1.3.1Elasticsearch1.3.2Logstash1.3.3Kibana二、ELK日志分析系统搭建2.1实验环境2.2部署Elasticsearch软件(node1和node2都需部署)2.3安装elasticsearch-head插件(数据可视化工具)2.4logstash(日志收集)安装与使用2.5登录Ap... 查看详情

elk(elasticsearch,logstash,kibana)搭建实时日志分析平台

ELK(ElasticSearch,Logstash,Kibana)搭建实时日志分析平台 日志主要包括系统日志、应用程序日志和安全日志。系统运维和开发人员可以通过日志了解服务器软硬件信息、检查配置过程中的错误及错误发生的原因。经常分析日志可以... 查看详情

elk服务搭建(开源实时日志分析elk平台部署)(低版本—简单部署)

开源实时日志分析ELK平台部署日志主要包括系统日志、应用程序日志和安全日志。系统运维和开发人员可以通过日志了解服务器软硬件信息、检查配置过程中的错误及错误发生的原因。经常分析日志可以了解服务器的负荷,性能... 查看详情

elk(elasticsearch,logstash,kibana)搭建实时日志分析平台

ELK平台介绍在搜索ELK资料的时候,发现这篇文章比较好,于是摘抄一小段:以下内容来自:http://baidu.blog.51cto.com/71938/1676798日志主要包括系统日志、应用程序日志和安全日志。系统运维和开发人员可以通过日志了解服务器软硬件... 查看详情

[bigdata-elk]elk(elasticsearch,logstash,kibana)搭建实时日志分析平台

ELK平台介绍在搜索ELK资料的时候,发现这篇文章比较好,于是摘抄一小段:以下内容来自: http://baidu.blog.51cto.com/71938/1676798日志主要包括系统日志、应用程序日志和安全日志。系统运维和开发人员可以通过日志了解服务器软... 查看详情

elk:日志收集分析平台(代码片段)

...ticsearch集群部署配置文件Kibana部署参考文档简介ELK是一个日志收集分析的平台,它能收集海量的日志,并将其根据字段切割。一来方便供开发查看日志,定位问题;二来可以根据日志进行统计分析,通过其强大的呈现能力,挖掘... 查看详情

windows环境下elk平台的搭建

.背景日志主要包括系统日志、应用程序日志和安全日志。系统运维和开发人员可以通过日志了解服务器软硬件信息、检查配置过程中的错误及错误发生的原因。经常分析日志可以了解服务器的负荷,性能安全性,从而及时采取... 查看详情

elk日志分析平台搭建----elasticsearch

ELK日志分析平台搭建----ELASTICSEARCH介绍:ELK由ElasticSearch、Logstash和Kiabana三个开源工具组成1、Elasticsearch是一个开源分布式的搜索引擎,特点是:分布式、零配置、自动发现、索引自动分片、索引副本机制、restful风格接口,多数据... 查看详情