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

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

Java,slf4j,elasticsearch,java 额外说明

收录于:93天前

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

. . .

相关推荐

额外说明

Labview如何建立与远程MS SQL数据库的连接

一、远端服务器上安装MS SQL Server 2019 官网下载:https://www.microsoft.com/zh-cn/sql-server/sql-server-2019 二、配置服务器MSSQL容许访问 服务器的防火墙要容许MSSQL的端

额外说明

开启智能时代:深度解析智能文档分析技术的前沿与应用

开启智能时代:深度解析智能文档分析技术的前沿与应用 本章主要介绍文档分析技术的理论知识,包括背景介绍、算法分类和对应思路。通过本文学习,你可以掌握:1. 版面分析的分类和典型思想 2. 表格识别的分类和典型思想 3. 信息提取的分类和典型思想。 作为信息

额外说明

python正则表达式中group的用法

import re a = "123abc456" # 代码是最好的例子 print(re.search(r'([0-9]*)([a-z]*)([0-9]*)',a).group(0)) print(re.search(r'([0-9]*)([a-z

额外说明

16个SpringBoot 扩展接口的总结和实例

Spring Boot是一个开源的Java框架,它简化了基于Spring的应用程序的开发和部署。它提供了许多强大的特性和扩展接口,下面是16个常用的Spring Boot扩展接口的介绍: -CommandLineRunner 这个接口可以用来在Sprin

额外说明

springboot整合多数据源

在项目开发中,尤其是在分布式项目中,数据源分布在不同的数据库是常有的事,在项目搭建之初,如果能够想到这个问题,提前规划好相应的项目结构,可以给后面的开发和维护省去很多麻烦; 今天演示一下使用springboot整合多个数据源在一个工程中,个人比较习惯于使

额外说明

win10下使用Hyper-V安装CentOS7(一)

因win10系统里自带了Hyper-V,所以在win10里面安装虚拟机 ,就不再需要用VM了 前置条件: 安装好的win10系统 CPU支持虚拟化,并且在Win10里面开启Hyper-V功能 已经下载好的CentOS7系统文件,选择合适的系统文件下载。

额外说明

newstyles项目实战(二十)jedis与Spring整合

Spring和Jedis结合配置: Jedis连接池的配置: <!-- 连接池配置 --> <bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig"> <!-- 最

额外说明

使用 mysqlbinlog 分析 binlog 恢复误删除或修改的数据

一、mysqlbinlog 在 mysql 中binlog 记录着所有的DDL 和 DML,前提是开启了 binlog,这个时候如果我们误删除了数据或者误修改了数据,就可以通过 binlog 日志文件进行查找恢复。但是 binlog 是以二进制的方式进行

额外说明

【从零开始学微服务】07.微服务常用的开发框架

大家好,欢迎来到万猫学社,跟我一起学,你也能成为微服务专家。 微服务架构该怎么落地?选用什么样的技术栈?所有的互联网公司都在积极尝试自己的微服务落地方案。 Spring Cloud 其中在Java领域最引人注目的就是 Spring Cloud 提供的方案

额外说明

解决Windows系统缺少找不到msxml.dll文件的问题

其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库,这时你可以下载这个msxml.dll文件(挑选

ads via 小工具