跳至主要內容

ELK搭建

小企鹅学习Java大约 9 分钟约 2678 字...

ELK搭建

ElasticSearch

Kibana

logstask

日志存储elk的流程

ELK(Elasticsearch, Logstash, Kibana)是一个广泛使用的日志分析平台,它由三个主要的开源组件构成:Elasticsearch, Logstash 和 Kibana。这三个组件协同工作,为用户提供了一个强大的日志分析和可视化解决方案。下面是ELK的工作原理的详细解释:

  1. Logstash: Logstash 是一个服务器端数据处理管道,它能够同时从多个来源采集数据,对数据进行解析和转换,然后将数据发送到您指定的存储库。在日志分析的场景中,Logstash 通常会从文件、消息队列、数据库等来源读取日志数据。
    • 采集(Input):Logstash 配置文件中定义了输入插件,这些插件负责从不同的数据源(如文件、网络端口、消息队列等)收集日志。
    • 处理(Filter):一旦日志被采集,Logstash 使用过滤器对数据进行解析和转换。这些过滤器可以根据需要自定义,例如,可以将日志消息解析为结构化数据,或者根据日志级别(如 DEBUG, ERROR 等)对日志进行分类。
    • 输出(Output):处理后的日志数据将被发送到定义在输出部分的目的地,通常是 Elasticsearch。
  2. Elasticsearch: Elasticsearch 是一个基于 Apache Lucene 的搜索引擎,它提供了一个分布式、多用户能力的全文搜索引擎,基于 JSON 数据结构。Elasticsearch 能够实现快速的搜索,并且支持近实时的索引和搜索。
    • 索引(Indexing):Elasticsearch 接收来自 Logstash 的处理后的数据,并将其索引。索引是数据存储和检索的基础,Elasticsearch 允许你定义多种索引策略,包括自定义的索引类型。
    • 存储(Storage):索引后的数据存储在 Elasticsearch 的集群中。Elasticsearch 支持分布式存储,可以跨多个节点进行数据分片和复制,以实现高可用性和扩展性。
  3. Kibana: Kibana 是一个开源的数据可视化工具,它为 Logstash 和 Elasticsearch 提供了一个简单的 Web 界面。通过 Kibana,用户可以轻松地查看和分析存储在 Elasticsearch 索引中的数据。
    • 可视化(Visualization):Kibana 提供了丰富的图表、地图和仪表板,帮助用户将数据可视化。用户可以通过构建各种图表和仪表板来分析日志数据,识别趋势和模式。
    • 搜索(Search):Kibana 还提供了强大的搜索功能,允许用户通过关键字、时间范围、过滤器等条件来查询和分析日志数据。

整个 ELK 栈的工作流程是:Logstash 从各种数据源采集日志数据,对数据进行处理和转换,然后将处理后的数据发送到 Elasticsearch 进行索引和存储。最后,通过 Kibana 对数据进行可视化和搜索,以便用户可以轻松地分析和理解日志数据。这种架构不仅能够处理大量的日志数据,而且通过可视化和搜索功能,使得数据分析变得更加直观和高效。

logback-spring.xml

**示例:**https://www.macrozheng.com/mall/reference/mall_tiny_elk.html#添加配置文件logback-spring-xml让logback的日志输出到logstashopen in new window

在Spring Boot应用程序中集成Logstash进行日志管理,通常涉及到对Logback(一个流行的Java日志框架)的配置。Logback提供了灵活的日志配置选项,可以通过XML文件进行详细设置。以下是如何在Spring Boot中配置Logback以使用Logstash的步骤和要点:

  1. 配置logback-spring.xml: 在Spring Boot项目中,日志配置文件通常命名为logback-spring.xml。这个文件应该位于src/main/resources目录下。在该文件中,你可以通过<include>标签来引入Logback的默认配置,这样可以避免从头开始设置所有的日志规则。

    <configuration>
        <include resource="org/springframework/boot/logging/logback/defaults.xml"/>
        <!-- 更多自定义配置将在此处添加 -->
    </configuration>
    
  2. 使用Spring Property: 在logback-spring.xml中,你可以使用<springProperty>标签来获取Spring配置文件(如application.propertiesapplication.yml)中的属性。这样可以动态地从外部配置文件中设置日志级别、文件路径等属性。

    <springProperty scope="context" name="logging.file" source="logging.file" defaultValue="/var/log/myapp.log"/>
    
  3. 配置过滤器(Filter): Logback允许你使用过滤器来进一步细化日志的输出。过滤器可以根据日志消息的内容来决定是否接受或拒绝特定的日志事件。例如,你可以创建一个过滤器来过滤掉所有低于特定级别的日志消息,或者只允许特定包或类的日志通过。

    <filter class="ch.qos.logback.classic.filter.LevelFilter">
        <level>INFO</level>
        <onMatch>ACCEPT</onMatch>
        <onMismatch>DENY</onMismatch>
    </filter>
    
  4. 配置Appender: Appender是Logback中负责发布日志事件到目标位置(如控制台、文件、远程服务器等)的组件。在logback-spring.xml中,你可以定义多个Appender,并指定每个Appender的输出格式和目标位置。

logstash.conf

logstash.conf 是 Logstash 的配置文件,它定义了 Logstash 从哪里获取输入(inputs),如何过滤(filters)这些输入,以及输出(outputs)到何处。以下是一个基本的 logstash.conf 配置文件的结构和示例设置:

# 输入部分:定义 Logstash 从哪里获取数据
input {
    # 例如,从文件中读取日志
    file {
        # 指定文件路径,可以使用 glob 模式匹配多个文件
        path => "/path/to/your/logfile.log"
        # 可选:设置跟随文件的速度
        start_position => "beginning"
    }
    
    # 其他输入插件的例子
    # tcp {
    #     port => 514
    #     codec => "json"
    # }
}

# 过滤部分:对采集到的数据进行处理和转换
filter {
    # 例如,使用 grok 插件解析日志格式
    grok {
        match => { "message" => "%{TIMESTAMP_ISO8601:timestamp} %{LOGLEVEL:level} %{GREEDYDATA:message}" }
    }
    
    # 可以添加更多过滤器,如 mutate 用于修改字段,date 用于解析日期等
    # mutate {
    #     remove_field => ["message"]
    # }
}

# 输出部分:定义处理后的数据发送到哪里
output {
    # 例如,输出到 Elasticsearch
    elasticsearch {
        # 指定 Elasticsearch 集群的主机名和端口
        hosts => ["http://localhost:9200"]
        # 索引名称,可以使用日期格式化
        index => "myapp-%{+YYYY.MM.dd}"
        # 文档类型,Elasticsearch 7.x 之后版本不再需要指定文档类型
        # document_type => "_doc"
    }
    
    # 其他输出插件的例子
    # stdout { codec => rubydebug }
    # kafka {
    #     topic_id => "my_topic"
    #     brokers => ["localhost:9092"]
    #     codec => json
    # }
}

在这个配置文件中,我们首先定义了一个输入源,这里以文件输入为例。Logstash 会监控指定路径下的日志文件,并将文件内容读取为数据。

接着,在过滤部分,我们使用了 grok 插件来解析日志文件中的行。Grok 是一个强大的日志解析插件,可以根据预定义的模式匹配和提取日志中的数据。在这个例子中,我们假设日志文件中的每行都包含时间戳、日志级别和消息内容。

最后,在输出部分,我们配置了 Logstash 将处理后的数据发送到 Elasticsearch。这里指定了 Elasticsearch 集群的地址和索引名称,索引名称使用了日期格式化,以便于按日期对日志数据进行分类和管理。

在kibana创建索引模式

在Kibana中创建索引模式是一个关键步骤,因为它允许Kibana连接并搜索Elasticsearch中的索引数据。索引模式定义了Kibana如何与Elasticsearch中的一个或多个索引进行交互。以下是创建索引模式的详细步骤和相关信息,结合了您提供的搜索结果中的信息:

步骤1:访问Kibana的索引模式设置

  • 打开Kibana Web界面。
  • 点击左侧导航栏的“设置”(Settings)图标,它通常是一个齿轮形状的图标。
  • 在设置菜单中,选择“索引模式”(Index Patterns)选项。

步骤2:添加新的索引模式

  • 在索引模式页面,您会看到一个列表,显示了当前已配置的所有索引模式。
  • 点击“添加索引模式”(Add Index Pattern)按钮,开始创建新的索引模式。

步骤3:指定索引模式名称

  • 输入索引模式的名称。这通常是一个简短的、描述性的名称,用于在Kibana中标识该模式。
  • 索引模式的名称可以使用通配符(例如*),以便匹配多个索引。例如,myindex-*可以匹配myindex-1myindex-2等。

步骤4:选择时间字段

  • 在创建索引模式时,Kibana会询问索引是否包含基于时间的事件。
  • 如果您的索引包含时间戳字段,选择“Index contains time-based events”选项。
  • 接下来,从列表中选择包含时间戳的字段。Kibana会自动读取索引映射并列出所有可能的时间戳字段。

步骤5:配置索引模式选项

  • 根据需要,您可以配置索引模式的其他选项,例如:
    • 设置日期格式令牌(Date Format Tokens),以便Kibana正确解析时间戳字段中的日期。
    • 定义索引模式是否应该在搜索时扩展(例如,自动选择当前时间范围内的索引)。
    • 设置默认索引模式,以便在查看“发现”(Discover)选项卡时自动加载。

步骤6:保存索引模式

  • 完成所有必要的配置后,点击“创建”(Create)按钮保存索引模式。
  • 新创建的索引模式将出现在索引模式列表中。

管理和维护索引模式

  • 设置默认索引模式:如果您有多个索引模式,可以通过点击列表中模式旁边的“收藏”(Favorite)按钮来设置默认模式。
  • 重新加载索引字段列表:当您向Elasticsearch索引添加新的字段映射时,可以通过点击模式旁边的“重新加载”(Reload)按钮来更新Kibana中的字段列表。
  • 删除索引模式:如果某个索引模式不再需要,可以选择它,然后点击“删除”(Delete)按钮进行移除。在删除前,系统会要求您确认操作。

通过以上步骤,您可以在Kibana中成功创建和管理索引模式,从而有效地与Elasticsearch中的索引数据进行交互。这些索引模式是Kibana数据可视化和分析功能的基础。

收集响应时间

需要自行创建AOP打印日志(包括响应时间),然后再让ELK收集

上次编辑于:
你认为这篇文章怎么样?
  • 0
  • 0
  • 0
  • 0
  • 0
  • 0
评论
  • 按正序
  • 按倒序
  • 按热度