热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

springboot+logstash将指定日志推送到elasticsearch

前言在平时工作中,我们需要对相关日志进行分析,随着平台的允许,日志会越来越大,不便于分析,此时我们需要将日志写入es,在这个过程中logstash起到中间转发的作用,类似于ETL工

前言

在平时工作中,我们需要对相关日志进行分析,随着平台的允许,日志会越来越大,不便于分析,此时我们需要将日志写入es,在这个过程中logstash起到中间转发的作用,类似于ETL工具。


1、搭建EL环境(此处没有使用Kibana)

(1)、安装es(5.6.16)

下载地址:https://elasticsearch.cn/download/

安装步骤:https://www.cnblogs.com/cq-yangzhou/p/9310431.html


(2)、安装logstash

下载地址:https://elasticsearch.cn/download/

安装步骤:解压即可。


(3)、安装IK分词器

下载地址:https://github.com/medcl/elasticsearch-analysis-ik/releases

安装步骤:解压,将里面的内容拷贝到es的plugins/ik(ik目录自己创建)目录下面,重启es即可


2、搭建springboot+logstash环境

(1)、引入logstash的mven依赖


net.logstash.logback
logstash-logback-encoder
5.1

(2)、编写logback-spring.xml放在resources目录下面





127.0.0.1:4567


  

  
  
  


(3)、编写日志类LogStashUtil

@Slf4j
public class LogStashUtil {
public static void sendMessage(String username, String type, String content,
Date createTime,String parameters){
JSONObject jsOnObject= new JSONObject();
jsonObject.putOpt("username",username);
jsonObject.putOpt("type",type);
jsonObject.putOpt("content",content);
jsonObject.putOpt("parameters",parameters);
jsonObject.putOpt("createTime", createTime);
log.info(jsonObject.toString());
}
}

(4)、编写logstash对应的日志收集配置文件

input {
tcp {
mode => "server"
host => "0.0.0.0"
port => 4567
codec => json{
charset=>"UTF-8"
}
}
}
filter {
json {
source => "message"
#移除的字段,不会存入es
remove_field => ["message","port","thread_name","logger_name","@version","level_value","tags"]
}
date {
match => [ "createTime", "UNIX_MS" ]
target => "@timestamp"
}
ruby {
code => "event.set('timestamp', event.get('@timestamp').time.localtime + 8*60*60)"
}
ruby {
code => "event.set('@timestamp',event.get('timestamp'))"
}
mutate {
remove_field => ["timestamp"]
}
date {
match => [ "createTime", "UNIX_MS" ]
target => "createTime"
}
ruby {
code => "event.set('createTime', event.get('createTime').time.localtime + 8*60*60)" #时间加8个小时
}
}
output {
elasticsearch {
hosts => "localhost:9200"
index => "springboot-logstash-%{+YYYY.MM}"
document_type => access
#模板 指定生成索引的mapping模板,配置ik分词器
template_overwrite => true
template=> "F:/elk/logstash-5.6.16/template/logstash.json"
}
}

补充:模板编写

{
"template": "*",
"version": 00001,
"settings": {
"index.refresh_interval": "5s"
},
"mappings": {
"_default_": {
"_all": {
"enabled": true,
"norms": false
},
"dynamic_templates": [
{
"message_field": {
"path_match": "message",
"match_mapping_type": "string",
"mapping": {
"type": "text",
"norms": false
}
}
},
{
"string_fields": {
"match": "*",
"match_mapping_type": "string",
"mapping": {
"type": "text",
"norms": false,
"analyzer": "ik_max_word",#只需要添加这一行即可设置分词器为ik_max_word
"fields": {
"keyword": {
"type": "keyword"
}
}
}
}
}
],
"properties": {
"@timestamp": {
"type": "date",
"include_in_all": false
},
"@version": {
"type": "keyword",
"include_in_all": false
}
}
}
}
}

(5)、启动es和logstash

1、启动es
进入es的bin目录
elasticsearch &
2、启动logstash
logstash -f message.conf(指定对应的日志配置文件路径) -d(后台运行)

(6)、单元测试,调用日志收集类LogStashUtil

@Test
public void contextLoads() {
LogStashUtil.sendMessage(
"admin","添加年度管理计划","测试",new Date(),"测试");
}

(7)、查看es中的结果

 



推荐阅读
  • 本文介绍如何使用阿里云的fastjson库解析包含时间戳、IP地址和参数等信息的JSON格式文本,并进行数据处理和保存。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • Java 中的 BigDecimal pow()方法,示例 ... [详细]
  • 深入理解Tornado模板系统
    本文详细介绍了Tornado框架中模板系统的使用方法。Tornado自带的轻量级、高效且灵活的模板语言位于tornado.template模块,支持嵌入Python代码片段,帮助开发者快速构建动态网页。 ... [详细]
  • 本文介绍了Java并发库中的阻塞队列(BlockingQueue)及其典型应用场景。通过具体实例,展示了如何利用LinkedBlockingQueue实现线程间高效、安全的数据传递,并结合线程池和原子类优化性能。 ... [详细]
  • 2023年京东Android面试真题解析与经验分享
    本文由一位拥有6年Android开发经验的工程师撰写,详细解析了京东面试中常见的技术问题。涵盖引用传递、Handler机制、ListView优化、多线程控制及ANR处理等核心知识点。 ... [详细]
  • 本文详细介绍了如何准备和安装 Eclipse 开发环境及其相关插件,包括 JDK、Tomcat、Struts 等组件的安装步骤及配置方法。 ... [详细]
  • 20100423:Fixes:更新批处理,以兼容WIN7。第一次系统地玩QT,于是诞生了此预备式:【QT版本4.6.0&#x ... [详细]
  • Django xAdmin 使用指南(第一部分)
    本文介绍如何在Django项目中集成和使用xAdmin,这是一个增强版的管理界面,提供了比Django默认admin更多的功能。文中详细描述了集成步骤及配置方法。 ... [详细]
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • 搭建Jenkins、Ant与TestNG集成环境
    本文详细介绍了如何在Ubuntu 16.04系统上配置Jenkins、Ant和TestNG的集成开发环境,涵盖从安装到配置的具体步骤,并提供了创建Windows Slave节点及项目构建的指南。 ... [详细]
  • 本文将指导如何在JFinal框架中快速搭建一个简易的登录系统,包括环境配置、数据库设计、项目结构规划及核心代码实现等环节。 ... [详细]
  • Spring Boot + MyBatis Plus 实现SQL语句打印的两种方法
    本文详细介绍了如何在Spring Boot和MyBatis Plus环境中实现SQL语句打印的两种方法,包括配置文件设置和多数据源环境下的动态配置。适合开发者在日常开发和调试过程中参考。 ... [详细]
  • 本文介绍了如何利用Webpack中的HtmlWebpackPlugin插件实现HTML文件的自动化生成,包括详细的安装步骤和配置方法。 ... [详细]
  • Jenkins 安装指南:Windows 平台详解
    本文详细介绍了如何在Windows平台上安装和配置Jenkins,包括安装步骤、启动方法及基本的系统配置,旨在帮助初次使用者顺利搭建持续集成环境。 ... [详细]
author-avatar
mobiledu2502910233
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有