小工具      在线工具  汉语词典  css  js  c++  java

ELK通过logstash采集java日志(多图演示)

Java,slf4j,elasticsearch,java 额外说明

收录于:43天前

ELK 不是一个软件,而是三个软件产品的缩写:Elasticsearch、Logstash 和 Kibana。这三个都是开源软件,通常一起使用,先后归Elastic.co公司所有,因此简称为ELK Stack。根据Google Trend的信息,ELK Stack已成为最流行的集中式日志解决方案。

  • Elasticsearch:分布式搜索和分析引擎,具有高度可扩展性、可靠且易于管理。它基于Apache Lucene构建,可以对大容量数据进行近实时的存储、搜索和分析操作。它经常被用作某些应用程序的基本搜索引擎,赋予其复杂的搜索功能;
  • Logstash:数据收集引擎。支持动态地从各种数据源采集数据,进行过滤、分析、丰富、统一格式等,然后存储在用户指定的位置;
  • Kibana:数据分析和可视化平台。通常与Elasticsearch结合使用,用于搜索、分析和以统计图表方式展示数据;
  • Filebeat:ELK协议栈新成员,轻量级开源日志文件数据收集器,基于Logstash-Forwarder源码开发,是其替代者。在需要收集日志数据的服务器上安装Filebeat并指定日志目录或日志文件后,Filebeat可以读取数据并快速发送到Logstash进行分析,或者直接发送到Elasticsearch进行集中存储和分析。

ELK 3个包的下载地址:https://www.elastic.co/cn/downloads/past-releases

1.下载elasticsearch-7.3.0

cd /Users/sunww/Documents/soft/ELK

tar -xzvf elasticsearch-7.3.0-darwin-x86_64.tar.gz

cd elasticsearch-7.3.0/

bin/elasticsearch // 启动elasticsearch

在浏览器中输入 http://localhost:9200/ 如果能看到以下内容则说明ES启动成功:

2、MAC下安装ElasticSearch Head插件

参考我之前的文章https://blog.csdn.net/robinson_911/article/details/94558309

3.下载并配置logstash7.3.0

Logstash-7.3.0的下载就像ElasticSearch的下载

cd /Users/sunww/Documents/soft/ELK

tar -xzvflogstash-7.3.0.tar.gz

cd logstash-7.3.0

bin/logstash -e 'input{stdin{}} output{ stdout {}}' // 等待控制台输入日志并打印出来

测试:你好世界

如果出现以上截图界面的内容,则说明logstash安装配置成功。

配置输入日志文件地址和ES地址等,如下:

根据配置文件启动logstash

./bin/logstash -f ./config/logstash.conf

logstash.conf文件内容如下:

# Sample Logstash configuration for creating a simple
# Beats -> Logstash -> Elasticsearch pipeline.
  #log4j {
   #     host => "127.0.0.1"
   #     port => 4560
   # }

input {
  file {
   # path=>"/Users/sunww/Documents/soft/ELK/logstash-7.3.0/logstash-tutorial.log"
   path=>"/httx/logs/out.log" # 日志输入的位置
 }
}

output {
  # 控制台打印log
  stdout{
    codec => rubydebug
  }
  
  # logstash中的数据分发到ES中去
  elasticsearch {
    hosts => ["http://localhost:9200"]
    #index => "logstashdata"
    index => "log4j-%{+YYYY.MM.dd}"
    document_type => "log4j_type"  #文档类型,便于ES去做查询
  }
}

4、通过logstash将日志分发到ES,方便日志查询和检索测试

  log4j.properties 内容(将上述单元测试的日志文件存储到/httx/logs/out.log

#Output pattern : date [thread] priority category - message
#log4j.rootLogger=DEBUG, Console, RollingFile
#
##Console
#log4j.appender.Console=org.apache.log4j.ConsoleAppender
#log4j.appender.Console.layout=org.apache.log4j.PatternLayout
#log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n
#
##RollingFile
#log4j.appender.RollingFile=org.apache.log4j.FileAppender
#log4j.appender.RollingFile.File=/httx/logs/out.log
#log4j.appender.RollingFile.layout=org.apache.log4j.PatternLayout
#log4j.appender.RollingFile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} [%t] %-5p [%c] - %m%n


### 设置###
log4j.rootLogger = debug,stdout,D,E,logstash

### 输出信息到控制抬 ###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n

### 输出DEBUG 级别以上的日志到=/Users/bee/Documents/elk/log4j/debug.log###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = /httx/logs/out.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = DEBUG 
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n

### 输出ERROR 级别以上的日志到=/Users/bee/Documents/elk/log4j/error.log  ###
log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File =/httx/logs/out.log
log4j.appender.E.Append = true
log4j.appender.E.Threshold = ERROR 
log4j.appender.E.layout = org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n

#输出日志到logstash
log4j.appender.logstash=org.apache.log4j.net.SocketAppender
log4j.appender.logstash.RemoteHost=127.0.0.1
log4j.appender.logstash.port=4560
log4j.appender.logstash.ReconnectionDelay=60000
log4j.appender.logstash.LocationInfo=true

 启动单元测试,产生日志,存储到/httx/logs/out.log

package com.robinboot.facade;
import org.apache.log4j.Logger;
/**
 * @auther: TF12778
 * @date: 2020/11/10 11:08
 * @description:
 */
public class Log4jTest {

    public static final Logger logger=Logger.getLogger(Log4jTest.class);

    public static void main(String[] args) {
        logger.debug("This is a debug message!");
        logger.info("This is info message!");
        logger.warn("This is a warn message!");
        logger.error("This is error message!");

        try{
            System.out.println(5/0);
        }catch(Exception e){
            logger.error(e);
        }
    }
}

单元测试启动后,可以看到logstash控制台输出了单元测试中的日志,如下图所示:

此时可以通过ElasticSearch Head插件访问localhost:9100地址,就可以看到logstash分发到Elasticsearch的数据,如下:

 上面为什么会产生_index为log4j-2020.11.10,_type 是log4j_type的数据,主要是因为我们在logstash.conf中配置了如下的规则:

# logstash中的数据分发到ES中去
  elasticsearch {
    hosts => ["http://localhost:9200"]      #elasticsearch服务器地址
    index => "log4j-%{+YYYY.MM.dd}"    # log4j-2020.11.10
    document_type => "log4j_type"         #文档类型,方便ES查询
  } 

5.下载并配置Kibana

cd /Users/sunww/Documents/soft/ELK

cd kibana-7.3.0-darwin-x86_64/bin

配置kibana.yml文件如下:

server.port: 5601

server.host: "localhost"

elasticsearch.hosts: ["http://localhost:9200"] #连接到ES服务器

./kibana // 启动kibana

启动成功界面如下:

在浏览器中输入localhost:5601即可看到查看界面(可以看到我们上面创建的2个索引)

6. Kibana为查询日志创建索引模式步骤和日志查询

这里出现个错误,Kibana 创建索引 POST 403 (forbidden) on create index ,解决办法:https://blog.csdn.net/robinson_911/article/details/109603296

1. 创建索引模式

2. 日志查询

参考:

https://blog.csdn.net/gebitan505/article/details/70256827?utm_medium=distribute.pc_relevant.none-task-blog-title-6&spm=1001.2101.3001.4242

https://blog.csdn.net/mrxiky/article/details/86089280?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.pc_relevant_is_cache&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2- 3.pc_relevant_is_cache

. . .

相关推荐

额外说明

编解码器概念

H.264 H.265 MJPEG :视频编解码规范分析 fps(frame per second) : 帧率

额外说明

HTTP请求流程分析

HTTP是什么 HTTP 是一个无状态的协议,无状态指在客户端(Web 浏览器)和服务器之间不需要建立持久的连接,在一个客户端向服务器端发出请求且服务器收到该请求并返回响应(response)后,本次通信结束,HTTP 连接将被关闭,服务器不保留连接的相

额外说明

成功解决了使用Clickhouse-JDBC-Bridge连接时区差8小时的Oracle日期类型的问题。

参考文章 https://blog.csdn.net/weixin_46359306/article/details/125045252 https://blog.csdn.net/weixin_46359306/article/details/1251

额外说明

如何学习ue开发

学习UE(Unreal Engine)开发需要具备一定的编程基础和计算机图形学基础。 以下是一些步骤和资源,帮助您入门UE开发: 1、学习C++编程语言 UE是基于C++编程语言开发的,因此学习C++编程语言是入门UE开发的第一步。可以通过学习相关的书籍

额外说明

C语言入门小游戏:扫雷

#### text.c:用来存放主体 #include "game.h" void game() { //创建两个数组一个用来放雷一个显示周围雷的个数 char arr1[ROWS][COLS]; char arr2[ROWS][COLS]; /

额外说明

[引擎笔记]之一:windows/3D游戏运行框架

1.工程配置 2.创建Windows窗口 0.基础准备知识 1.创建WNDCLASSEX结构体 2.注册WNDCLASSEX 3.创建Windows窗口 3.窗口事件和游戏主循环 1.处理事件 2.主动查询事件 3. 游戏主循环流程总结 4.完整程序 1

额外说明

Keras深度学习实战(6)——深度学习过拟合问题及解决方法

Keras深度学习实战(6)——深度学习过拟合问题及解决方法 0. 前言 1. 过拟合问题介绍 2. 使用正则化解决过拟合问题 3. 使用 Dropout 解决过拟合问题 小结 系列链接 0. 前言 在《神经网络性能优化技术》中,我们经常看到这样的现象—

额外说明

Content type ‘application/x-www-form-urlencoded;charset=UTF-8‘ not supported错误的多种解决方法及说明Content-Type

文章目录 1.复现错误 2. 分析错误 3. 解决错误 3.1 方法1:修改后端接参方式 3.2 方法2:修改前端传参方式 4. 补充说明content-type 4.1 语法格式 4.2 常见的类型值 5. 文末总结 1.复现错误 今天写好导入hive

额外说明

BigCommerce vs WooCommerce –哪个更好? (比较)

Do you want to 创建网上商店? Are you confused about whether to use BigCommerce or WooCommerce? 您要创建网上商店吗? 您是否对使用BigCommerce或WooCommer

ads via 小工具