当前位置: 首页 > news >正文

【ELK】logstash快速入门

1.概述

1.1.什么是logstash?

之前我们聊了es,并且用docker搭建了一个es+kibana的环境。es目前最普遍的用法是用来存储日志的,然后结合kibana对日志做一些可视化的工作。既然要收集日志,就面临着一个问题:

各个系统的日志格式可能是不一样的。

这就需要有一个中间层,将收集上来的日志处理一遍,然后存进es里面去。es的母公司elastic推出了一套组件,专门用来做日志收集、存储、分析等工作,这一套组件由elastic search、kibana、logstash组成,简称ELK:

(beats是另一个用来收集数据的组件,此处先忽略即可。)

Logstash是其中一个用于处理和转发日志、时间序列数据以及其他事件数据的开源工具。它是 Elastic Stack(以前称为 ELK Stack)的一部分,用于实现日志的收集、处理、转换和输出。

本文将接着之前的系列,以之前搭建出来的环境为基础,继续聊如何使用logstash。

前文关于ES的内容:

【elastic search】下载安装、使用教程_elasticsearch下载俺咋混给-CSDN博客

前文我们用docker搭建的es+kibana的内容:

docker安装elasticsearch+kibana-CSDN博客

1.2.logstash的配置

整个logstash在自身组件的层次结构上就分为三部分:输入、处理、输出。

logstash的使用其实也就是只需要配置好就行,配置文件也是分为输入、处理、输出三个部分的:

  1. Input 插件: 用于从各种来源收集数据。常见的输入插件包括 Beats、Syslog、File、Kafka、JDBC 等。

  2. Filter 插件: 用于对收集到的数据进行处理和过滤。常见的过滤插件包括 grok、mutate、date、geoip 等。

  3. Output 插件: 用于将处理后的数据发送到目的地。常见的输出插件包括 Elasticsearch、File、Kafka、JDBC、TCP、UDP 等。

配置示例:

input {
  file {
    path => "/path/to/your/logfile.log"
    start_position => "beginning"
  }
}

filter {
  grok {
    match => { "message" => "%{COMBINEDAPACHELOG}" }
  }
}

output {
  elasticsearch {
    hosts => ["your_elasticsearch_host:9200"]
    index => "your_index_name"
  }
}

这个示例配置包含了一个 File Input 插件、一个 Grok Filter 插件和一个 Elasticsearch Output 插件,实现了从文件中读取日志、解析日志格式并将结果发送到 Elasticsearch 的过程。

具体要用的时候去搜一下logstash的相关配置就行,没什么复杂的。

2.安装logstash

拉取镜像:

docker pull logstash:7.6.1

配置:

input{tcp{port=>5044codec=>json_lines}
}
filter{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"]}
}
output{#elasticsearch配置elasticsearch{hosts=>{#索引名称index=>"logstash-%{[server_name]}-%{+YYYY.MM.dd}"}}
}

启动镜像:

docker run -d logstash:7.6.1 -v /home/docker/logstash/config/logstash.conf -v /usr/share/logstash/config/logstash.conf --name logstash

3.应用向logstash推送日志

logstash搭建好后,就是应用的日志该怎样去到logstash里了。logstash采用的是CS架构,应用作为client端需要主动向logstash来推数据。spring boot官方是给出了向logstash推数据的组件的,此处以SpringBoot推送配置为例

依赖:

<dependency><groupId>net.logstash.logback</groupId><artifactId>logstash-logback-encoder</artifactId><version>6.3</version>
</dependency>

日志框架的配置:

推送的实现其实就是新加了一个logstash的appender来实现的,所以配置这个appender即可,在logback-spring.xml进行如下示例配置:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <appender name="STASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
        <destination>192.168.31.10:5044</destination>
        <encoder class="net.logstash.logback.encoder.LogstashEncoder" >
            <includeCallerData>true</includeCallerData>
            <timeZone>UTC</timeZone>
        </encoder>
    </appender>

    <root level="INFO">
        <appender-ref ref="STASH"></appender-ref>
    </root>
</configuration>

关于日志框架,不熟悉的可以移步作者另一篇文章,对日志框架讲得很清楚:

【JAVA日志框架大全】一文快速讲透JAVA日志体系-CSDN博客

相关文章:

【ELK】logstash快速入门

1.概述 1.1.什么是logstash&#xff1f; 之前我们聊了es&#xff0c;并且用docker搭建了一个eskibana的环境。es目前最普遍的用法是用来存储日志的&#xff0c;然后结合kibana对日志做一些可视化的工作。既然要收集日志&#xff0c;就面临着一个问题&#xff1a; 各个系统的…...

SQL sever2008中创建用户并赋权

一、创建数据库dream CREATE DATABASE dream; 二、创建登录用户XZS 法一&#xff1a;使用SSMS创建 通过查询 sys.syslogins 系统视图来确定当前登录是否具有系统管理员权限。执行以下查询语句&#xff1a; SELECT name, isntname FROM sys.syslogins WHERE sysadmin 1;选…...

SpringBoot2-Jwt

1.官网 jwt.io/libraries 2.选jose4j pom <dependency><groupId>org.bitbucket.b_c</groupId><artifactId>jose4j</artifactId><version>0.9.4</version> </dependency> 3.创建jwt工具 public class JwtUtil {private stat…...

2、安全开发-Python-Socket编程端口探针域名爆破反弹Shell编码免杀

用途&#xff1a;个人学习笔记&#xff0c;欢迎指正&#xff01; 目录 主要内容&#xff1a; 一、端口扫描(未开防火墙情况) 1、Python关键代码: 2、完整代码&#xff1a;多线程配合Queue进行全端口扫描 二、子域名扫描 三、客户端&#xff0c;服务端Socket编程通信cmd命…...

Python 套接字详解:与网络通信的温柔邂逅

网络世界&#xff0c;犹如一片无垠的海洋&#xff0c;充满了无限的可能性和无尽的探索。而在这个浩瀚的网络宇宙中&#xff0c;Python 语言以其简洁优雅、功能丰富而备受青睐。在 Python 的世界里&#xff0c;有一个神奇的工具&#xff0c;它就像是一座桥梁&#xff0c;将不同的…...

如何在Linux系统中安装MySQL

要在Linux系统中安装MySQL&#xff0c;您可以使用系统的包管理工具。以下是一些常见的Linux发行版的安装命令&#xff1a; 1. **Ubuntu/Debian:** bash sudo apt-get update sudo apt-get install mysql-server 2. **Fedora:** bash sudo dnf install mysql-server 3. **Cent…...

51单片机基础:定时器

1.定时器介绍 51单片机通常有两个定时器&#xff1a;定时器 0/1&#xff0c;好一点的可能有定时器3。 在介绍定时器之前我们先科普下几个知识&#xff1a; 1&#xff0c;CPU 时序的有关知识 ①振荡周期&#xff1a;为单片机提供定时信号的振荡源的周期&#xff08;晶振周期或…...

高速接口PCB布局指南(五)高速差分信号布线(三)

高速接口PCB布局指南&#xff08;五&#xff09;高速差分信号布线&#xff08;三&#xff09; 1.表面贴装器件焊盘不连续性缓解2.信号线弯曲3.高速信号建议的 PCB 叠层设计4.ESD/EMI 注意事项5.ESD/EMI 布局规则 tips&#xff1a;资料主要来自网络&#xff0c;仅供学习使用。 …...

MySQL使用报错1045 - Access denied for user ‘root‘@‘localhost‘ (using password: YES)

问题描述 设备&#xff1a;MacBook Pro macOS Monterey 12.1 MySQL版本&#xff1a;8.0.27 arm-64 描述&#xff1a;在使用Navicat连接电脑本地的数据库时&#xff0c;发现连接不上了&#xff0c;报了个错误1045 - Access denied for user rootlocalhost (using password: YES)…...

UE4 C++创建摄像机摇臂和相机并且设置Transform

新建MyPawn C类 .h #include "GameFramework/SpringArmComponent.h" //SpringArm组件 #include "Camera/CameraComponent.h" //Camera组件class 工程名称_API AMyPawn : public APawn { //定义组件变量 public:UPROPERTY(VisibleAnywhere, BlueprintRead…...

<网络安全>《14 日志审计系统》

1 概念 日志审计系统是用于全面收集企业IT系统中常见的安全设备、网络设备、数据库、服务器、应用系统、主机等设备所产生的日志&#xff08;包括运行、告警、操作、消息、状态等&#xff09;并进行存储、监控、审计、分析、报警、响应和报告的系统。 日志审计系统是一种用于…...

嵌入式软件设计方式与方法

1、嵌入式软件与设计模式 思从深而行从简 软件开发&#xff0c;难的不是编写软件&#xff0c;而是编写功能正常的软件。软件工程化才能保证软件质量和项目进度&#xff0c;而设计模式使代码开发真正工程化&#xff0c;设计模式是软件工程的基石。 所谓设计模式就是对常见问题的…...

ELAdmin 前端启动

开发工具 官方指导的是使用WebStorm&#xff0c;但是本人后端开发一枚&#xff0c;最终还是继续使用了 idea&#xff0c;主打一个能用就行。 idea正式版激活方式&#xff1a; 访问这个查找可用链接&#xff1a;https://3.jetbra.in/进入任意一个能用的里面&#xff0c;顶部提…...

完全让ChatGPT写一个风格迁移的例子,不改动任何代码

⭐️ 前言 小编让ChatGPT写一个风格迁移的例子&#xff0c;注意注意&#xff0c;代码无任何改动&#xff0c;直接运行&#xff0c;输出结果。 额。。。。这不是风格转换后的结果图。 ⭐️ 风格迁移基本原理 风格迁移是一种计算机视觉领域的图像处理技术&#xff0c;它的目标…...

查看jar包编译的jdk版本

解压jar包 jar xf xxx.jar 查看对象 javap -v Myclassname javap -v KafkaProducer.class |grep version -C 3 J2SE 8.0 52(0x33 hex) J2SE 7.0 51(0x32 hex) J2SE 6.0 50 (0x32 hex) J2SE 5.0 49 (0x31 hex) JDK 1.4 48 (0x30 hex) JDK 1.3 47 (0x2F hex) JDK 1.2 46 …...

未来之梦:畅想人工智能操控手机的辉煌时代

引言&#xff1a; 在当今数字化快速发展的时代&#xff0c;人工智能技术正日益深入我们的生活。其中&#xff0c;手机作为人们日常生活不可或缺的一部分&#xff0c;其未来将如何受到人工智能技术的影响&#xff0c;引发了广泛的关注和研究。本文将深入探讨人工智能操控手机的…...

产品经理--分享在项目中产品与研发之间会遇到的问题 在面试这一岗位时,面试官常问的问题之一,且分享两大原则来回答面试官这一问题

目录 一.STAR原则 1.1 简介 1.2 如何使用 1.3 举例说明 二.PDCA原则 2.1 简介 2.2 如何使用 2.3 运用场景 2.4 举例说明 三.产品与研发的沟通痛点 3.1 沟通痛点的原因 3.2 分享案例 前言 本篇会详细阐明作为一个产品经理会在项目遇到的问题&#xff0c;如&#xff1a;产…...

node环境打包js,webpack和rollup两个打包工具打包,能支持vue

引言 项目中经常用到共用的js&#xff0c;这里就需要用到共用js打包&#xff0c;这篇文章讲解两种打包方式&#xff0c;webpack打包和rollup打包两种方式 1、webpack打包js 1.1 在根目录创建 webpack.config.js&#xff0c;配置如下 const path require(path); module.expo…...

图数据库 之 Neo4j - 图数据库基础(2)

图数据库是一种专门用于存储、管理和查询图数据的数据库。与传统的关系型数据库不同&#xff0c;图数据库以图的形式存储数据&#xff0c;其中节点表示实体&#xff0c;边表示实体之间的关系。这种图数据模型非常适合表示复杂的关系和连接。 图数据库的定义和特点 图数据库是一…...

20240202在Ubuntu20.04.6下配置环境变量之后让nvcc --version显示正常

20240202在Ubuntu20.04.6下配置环境变量之后让nvcc --version显示正常 2024/2/2 20:19 在Ubuntu20.04.6下编译whiper.cpp的显卡模式的时候&#xff0c;报告nvcc异常了&#xff01; 百度&#xff1a;nvcc -v nvidia-cuda-toolkit rootrootrootroot-X99-Turbo:~/whisper.cpp$ WH…...

uniapp 对接腾讯云IM群组成员管理(增删改查)

UniApp 实战&#xff1a;腾讯云IM群组成员管理&#xff08;增删改查&#xff09; 一、前言 在社交类App开发中&#xff0c;群组成员管理是核心功能之一。本文将基于UniApp框架&#xff0c;结合腾讯云IM SDK&#xff0c;详细讲解如何实现群组成员的增删改查全流程。 权限校验…...

可靠性+灵活性:电力载波技术在楼宇自控中的核心价值

可靠性灵活性&#xff1a;电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中&#xff0c;电力载波技术&#xff08;PLC&#xff09;凭借其独特的优势&#xff0c;正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据&#xff0c;无需额外布…...

【机器视觉】单目测距——运动结构恢复

ps&#xff1a;图是随便找的&#xff0c;为了凑个封面 前言 在前面对光流法进行进一步改进&#xff0c;希望将2D光流推广至3D场景流时&#xff0c;发现2D转3D过程中存在尺度歧义问题&#xff0c;需要补全摄像头拍摄图像中缺失的深度信息&#xff0c;否则解空间不收敛&#xf…...

C++中string流知识详解和示例

一、概览与类体系 C 提供三种基于内存字符串的流&#xff0c;定义在 <sstream> 中&#xff1a; std::istringstream&#xff1a;输入流&#xff0c;从已有字符串中读取并解析。std::ostringstream&#xff1a;输出流&#xff0c;向内部缓冲区写入内容&#xff0c;最终取…...

【Oracle】分区表

个人主页&#xff1a;Guiat 归属专栏&#xff1a;Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...

蓝桥杯 冶炼金属

原题目链接 &#x1f527; 冶炼金属转换率推测题解 &#x1f4dc; 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V&#xff0c;是一个正整数&#xff0c;表示每 V V V 个普通金属 O O O 可以冶炼出 …...

VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP

编辑-虚拟网络编辑器-更改设置 选择桥接模式&#xff0c;然后找到相应的网卡&#xff08;可以查看自己本机的网络连接&#xff09; windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置&#xff0c;选择刚才配置的桥接模式 静态ip设置&#xff1a; 我用的ubuntu24桌…...

GitFlow 工作模式(详解)

今天再学项目的过程中遇到使用gitflow模式管理代码&#xff0c;因此进行学习并且发布关于gitflow的一些思考 Git与GitFlow模式 我们在写代码的时候通常会进行网上保存&#xff0c;无论是github还是gittee&#xff0c;都是一种基于git去保存代码的形式&#xff0c;这样保存代码…...

scikit-learn机器学习

# 同时添加如下代码, 这样每次环境(kernel)启动的时候只要运行下方代码即可: # Also add the following code, # so that every time the environment (kernel) starts, # just run the following code: import sys sys.path.append(/home/aistudio/external-libraries)机…...

【JVM】Java虚拟机(二)——垃圾回收

目录 一、如何判断对象可以回收 &#xff08;一&#xff09;引用计数法 &#xff08;二&#xff09;可达性分析算法 二、垃圾回收算法 &#xff08;一&#xff09;标记清除 &#xff08;二&#xff09;标记整理 &#xff08;三&#xff09;复制 &#xff08;四&#xff…...