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

2023-10-26

ELK 不是一款软件,而是 Elasticsearch、Logstash 和 Kibana 三种软件产品的首字母缩写。这三者都是开源软件,通常配合使用,而且又先后归于 Elastic.co 公司名下,所以被简称为 ELK Stack。根据 Google Trend 的信息显示,ELK Stack 已经成为目前最流行的集中式日志解决方案。

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

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

一. 下载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启动成功:

二.  MAC下安装ElasticSearch Head插件

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

 

三. 下载并配置logstash7.3.0

logstash-7.3.0的下载如ElasticSearch的下载

cd /Users/sunww/Documents/soft/ELK

tar -xzvf logstash-7.3.0.tar.gz

cd logstash-7.3.0

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

测试下:hello world

出现上面截图界面的内容的话,代表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去做查询
  }
}

四. 通过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去做查询
  } 

五. 下载和配置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个index)

六. Kibana创建查询日志的index pattern步骤以及日志查询

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

1. 创建index pattern

 

 

 

 

 

 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

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ELK通过logstash采集java日志(多图演示) 的相关文章

随机推荐

  • 如果您在搭载 Apple M1 芯片的 Mac 上重新安装 macOS 时收到个性化错误

    在重新安装时 您可能会收到一条信息 提示在准备更新期间出现了错误 如果您抹掉了搭载 Apple M1 芯片的 Mac 您可能无法通过 macOS 恢复功能重新安装 macOS 系统可能会显示信息 准备更新时出错 未能个性化软件更新 请再试一
  • mysql 安装 中途遇到的意外:it seems that the port 3306 is already in use 和 卡到最后一个页面

    由于软件工程大作业需要 需要复习数据库 重装数据库 中途遇到两个意外 it seems that the port 3306 is already in use 和 一直卡到最后一个页面 目录 首次安装 意外一 it seems that
  • RAID介绍及RAID10配置实例

    目录 一 RAID磁盘阵列介绍 二 RAID磁盘阵列详解 2 1RAID0 条带化存储 2 2RAID 1 镜像存储 2 3RAID5 2 4RAID6 2 5 RAID 1 0 先做镜像 再做条带 2 6RAID 0 1 先做条带 在做镜
  • logstash数据同步

    1 编写logstash的pipeline文件 abc conf input stdin jdbc jdbc connection string gt jdbc mysql ip 3306 db serverTimezone Asia Sh
  • 我在Gazebo中加入了IMU传感器,并用Python发布了话题和传感器数据,可是为什么数据都为0,哪里漏了或者错了

    Gazebo SDF 文件中传感器的添加如下 话题和数据发布的代码如下 使用如下指令查看话题数据 rtopic echo Imu 1 获得的IMU数据都为0 有人知道哪里不对吗 能帮助的话就太感谢了
  • CloudCompare 二次开发(8)——提取点云的重叠区域

    目录 一 概述 二 代码集成 三 结果展示 本文由CSDN点云侠原创 原文链接 爬虫网站自重 一 概述 使用CloudCompare与PCL联合编程实现两期点云数据重叠区域的获取 具体计算原理见 PCL 提取两片点云的重叠部分并保存 二 代
  • 华为OD机试真题- 荒岛逃生游戏-2023年OD统一考试(B卷)

    题目描述 一个荒岛上有若干人 岛上只有一条路通往岛屿两端的港口 大家需要逃往两端的港口才可逃生 假定每个人移动的速度一样 且只可选择向左或 向右逃生 若两个人相遇 则进行决斗 战斗力强的能够活下来 并损失掉与对方相同的战斗力 若战斗力相同
  • 【自学51单片机】5 --- 定时器介绍、数码管静态显示、逻辑运算符和逻辑电路符号

    文章目录 1 逻辑运算和逻辑电路 1 1 C语言逻辑运算符 1 2 逻辑电路符号 2 定时器学习 重点非难点 2 1 时钟周期和机器周期的介绍 2 2 定时器的介绍 2 2 1 定时器寄存器介绍 2 2 2 定时器模式工作电路逻辑图 2 3
  • github可以做文件服务器吗,局域网搭建git服务端并使用Github Desktop作为客户端

    在使用了github的客户端软件Github Desktop之后 感受到了git的便捷 研究了一下与svn的区别之后 结合目前的团队情况 决定下个项目开始使用git 整理一下 这里服务端为centos 6 5 客户端为mac 一 服务端安装
  • Mysql 架构图

    Mysql 架构图 第一层 对客户端的连接处理 安全认证 授权等 每个客户端连接都会在服务端拥有一个线程 每个连接发起的查询都会在对应的单独线程中执行 第二层 MySQL的核心服务功能层 包括查询解析 分析 查询缓存 内置函数 存储过程 触
  • 电脑怎样执行编程语言的?

    链接 https www zhihu com question 29227521 answer 154819061 来源 知乎 著作权归作者所有 商业转载请联系作者获得授权 非商业转载请注明出处 这个问题真的是很大 让我们自顶向下的解释 在
  • 2023华为OD机试真题【最大利润/贪心算法】

    题目描述 商人经营一家店铺 有number 种商品 由于仓库限制每件商品的最大持有数量是 item index 每种商品的价格是 price item index day 通过对商品的买进和卖出获取利润 请给出商人在 days 天内能获取的
  • 在Windows10下使用GPU安装TensorFlow

    1 安装Python和pip 在Windows环境安装Python 3 x版本 通常安装包中集成了pip工具 安装会非常简单方便 具体见 https www python org downloads windows 按以上网站的信息 获取到
  • tomcat端口号被占用

    这里有两种方法 第一个是通过命令窗口终止 第二个是使用任务管理器 1 端口被占用 可以用cmd window R 第一步 输入netstat ano 找到被占用的端口号 netstat ano 也可以输入netstat aon findst
  • matlab和stata,Stata和Matlab联合处理金融数据

    Stata是统计学专业软件 可以很方便的对数据处理 但几乎只能按照整行整列进行 而且每次只能加载一个矩阵 dta文件 如果要用到多个矩阵数据进行操作或进行复杂的循环控制 就力不从心了 而Matlab工业界广泛使用的数据分析处理工具 对矩阵支
  • 8、OpenCV调整图像对比度和亮度

    OpenCV调整图像对比度和亮度 一 学习目标 二 原理理解 三 对比度 亮度调整 四 完整代码示例 一 学习目标 理解图像对比度和亮度调整的原理 对比三种不同亮度和对比度调整方法 二 原理理解 1 对比度 对比度指的是一幅图像中明暗区域最
  • docker启动命令,docker重启命令,docker关闭命令

    一 docker服务的命令 启动 systemctl start docker 守护进程重启 systemctl daemon reload 重启docker服务 systemctl restart docker service docke
  • VS2019智能感知、代码折叠超慢问题解决实例

    CUDA Nsight VS 插件引起的智能感知问题解决 今天使用VS2019的时候 发现智能感知 代码折叠都莫名的慢 也不是一点都不会来 就是超慢 感觉要10秒以上才会显示 点个点需要等上好久才会出来 怎么重置都没用 换新用户也没用 想想
  • eclipse打开new新建没有java project

    自己通过上网学习安装了eclipse 在安装和使用过程中遇到的问题及解决办法会进行记录 希望可以帮助跟我遇到相同问题的你们哦 这些解决办法 也是我百度找到的 分享给大家 我的eclipse之前已经装过了 昨天在学习接口测试要用到eclips
  • ELK通过logstash采集java日志(多图演示)

    ELK 不是一款软件 而是 Elasticsearch Logstash 和 Kibana 三种软件产品的首字母缩写 这三者都是开源软件 通常配合使用 而且又先后归于 Elastic co 公司名下 所以被简称为 ELK Stack 根据