ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

ELK Stack

2021-07-08 20:03:59  阅读:154  来源: 互联网

标签:ELK log elk redis home 日志 Stack


简介

  1. 引言
  • 在排查线上异常的过程中,查询日志总是必不可缺的一部分。现今大多采用的微服务架构,日志被分散在不同的机器上,使得日志的查询变得异常困难。
  • 工欲善其事,必先利其器。如果此时有一个统一的实时日志分析平台,那可谓是雪中送碳,必定能够提高我们排查线上问题的效率。本文带您了解一下开源的实时日志分析平台 ELK 的搭建及使用。

  1. ELK简介
  • ELK 是一个开源的实时日志分析平台,它主要由 Elasticsearch、Logstash 和 Kiabana 三部分组成。

  1. 介绍三大组件
  • E

  • L

  • K


  1. ELK 实现方案


  1. ELK 的大致工作流程


操作使用

  1. 在 Spring Boot 中使用 ELK
  • 首先我们需要创建一个 Spring Boot 的项目,之前我写过一篇文章介绍 如何使用 AOP 来统一处理 Spring Boot 的 Web 日志 ,本文的 Spring Boot 项目就建立在这篇文章的基础之上。
  • 修改并部署 Spring Boot 项目
  • 在项目 resources 目录下创建 spring-logback.xml 配置文件。
<?xml version="1.0" encoding="UTF-8"?>  
<configuration debug="false">  
    <contextName>Logback For demo Mobile</contextName>  
    <property name="LOG_HOME" value="/log" />  
    <springProperty scope="context" name="appName" source="spring.application.name"  
                    defaultValue="localhost" />  
    ...  
  
    <appender name="ROLLING_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">  
        ...  
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">  
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{25} ${appName} -%msg%n</pattern>  
        </encoder>  
        ...  
    </appender>  
    ...  
</configuration>   

  1. 打包并部署 Spring Boot 项目
# 打包命令  
mvn package -Dmaven.test.skip=true  
# 部署命令  
java -jar sb-elk-start-0.0.1-SNAPSHOT.jar 

  1. 生成日志
  • logback 配置文件中我将日志存放在 /log/sb-log.log 文件中,执行 more /log/sb-log.log 命令,出现以下结果表示部署成功。

  1. Shipper 角色的 Logstash 的配置
input {  
    file {  
        path => [  
            # 这里填写需要监控的文件  
            "/log/sb-log.log"  
        ]  
    }  
}  
  
output {  
    # 输出到redis  
    redis {  
        host => "10.140.45.190"   # redis主机地址  
        port => 6379              # redis端口号  
        db => 8                   # redis数据库编号  
        data_type => "channel"    # 使用发布/订阅模式  
        key => "logstash_list_0"  # 发布通道名称  
    }  
}  

  1. Indexer 角色的 Logstash 的配置
input {  
    redis {  
        host      => "192.168.142.131"    # redis主机地址  
        port      => 6379               # redis端口号  
        db        => 8                  # redis数据库编号  
        data_type => "channel"          # 使用发布/订阅模式  
        key       => "sb-logback"  # 发布通道名称  
    }  
}  
  
filter {  
     #定义数据的格式  
     grok {  
       match => { "message" => "%{TIMESTAMP_ISO8601:time} \[%{NOTSPACE:threadName}\] %{LOGLEVEL:level}  %{DATA:logger} %{NOTSPACE:applicationName} -(?:.*=%{NUMBER:timetaken}ms|)"}  
     }  
}  
  
output {  
    stdout {}  
    elasticsearch {  
        hosts => "localhost:9200"  
        index => "logback"  
   }  
}  

  1. ELK 后台启动
[program:elasticsearch]  
environment=JAVA_HOME="/usr/java/jdk1.8.0_221/"  
directory=/home/elk/elk/elasticsearch  
user=elk  
command=/home/elk/elk/elasticsearch/bin/elasticsearch  
  
[program:logstash]  
environment=JAVA_HOME="/usr/java/jdk1.8.0_221/"  
directory=/home/elk/elk/logstash  
user=elk  
command=/home/elk/elk/logstash/bin/logstash -f /home/elk/elk/logstash/indexer-logstash.conf  
  
[program:kibana]  
environment=LS_HEAP_SIZE=5000m  
directory=/home/elk/elk/kibana  
user=elk  
command=/home/elk/elk/kibana/bin/kibana  
  1. 转载出处:https://mp.weixin.qq.com/s/nOVQAZWKzMhGJDOayVuiPA 文章出自: [微信公众号_Java笔记虾]的博客

标签:ELK,log,elk,redis,home,日志,Stack
来源: https://www.cnblogs.com/Twittery/p/14987887.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有