【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博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/450657.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LNMP.

一.mysl配置 1.安装mysql yum install mysql-server -y 2.进入mysql配置文件目录 cd /etc/my.cnf.d3.编辑mysql配置文件 vim mysql-server.cnf 在[mysqld]中添加: character-set-serverutf84.启动mysql服务 systemctl start mysqld5.登入mysql mysql 6.创建数据库 cre…

嵌入式学习第十八天

51单片机 51单片机是基于Intel的微处理器体系结构发展而来的。 主要由CPU、存储器、定时器/计数器、串行口等模块组成 优点&#xff1a;低功耗、低成本、高性能 开发工具&#xff1a; Keil uVision4&#xff08;支持汇编语言和C语言编程&#xff09; stc-isp-v6.92L&…

Vue基础知识七

一 路由 1.1 生活里的路由与路由器 是为了实现多台设备上网 1.2 程序里的路由与路由器 是为了实现导航区与展示区来回切换&#xff1b; SPA单页面应用&#xff1a;就像前几章节里的项目&#xff0c;整个项目只有一个html文件&#xff1b; 案例 注意&#xff0c;最开始的时候…

《生成式AI与大模型核心技术开发与应用研修班》的通知

Chart GPT 的发布&#xff0c;让大语言模型成了人工智能的焦点。尤其近期发布的大模型各业务场景应用应接不暇&#xff0c;为行业带来新的发展机遇&#xff0c;甚至将重构AI行业。AI行业的发展将以云平台、算力、大模型构成行业发展的三驾马车。大模型和小模型的融合使用&#…

day10笔记

API 显示->索引->搜索框输入->回车查看信息 字符串 直接赋值进串池(会先找,有复用) new出来的在堆里面 字符串比较 ""引用数据类型比较的是地址值 一模一样的比较 忽略大小写的比较 Scanner输入的数据是new出来的 遍历字符串 public class StringDe…

Ubuntu 添加字体

Ubuntu 添加字体 Ubuntu如何添加新的字体&#xff1f;似乎远远没有Windows方便呀&#xff0c;查询了一些资料&#xff0c;与大家分享。 方法1 根据字体名称直接安装 oyroy-FMVU08001:~$ sudo apt-get install fonts-wqy-zenhei [sudo] roy 的密码&#xff1a; 正在读取软件…

Android学习之路(28) 进程保活组件的封装

前言 远古时代&#xff0c;出现过很多黑科技&#xff0c;比如MarsDaemon&#xff0c;使用双进程守护的方式进行保活&#xff0c;在当时可谓风光无限&#xff0c;可惜在8.0时代到来就被废弃了。 又比如后面出现的1像素Activity的保活方式&#xff0c;说他流氓一点不过分&#…

canvas设置图形各种混合模式,类似photoshop效果

查看专栏目录 canvas实例应用100专栏&#xff0c;提供canvas的基础知识&#xff0c;高级动画&#xff0c;相关应用扩展等信息。canvas作为html的一部分&#xff0c;是图像图标地图可视化的一个重要的基础&#xff0c;学好了canvas&#xff0c;在其他的一些应用上将会起到非常重…

创建自己的Hexo博客

目录 一、Github新建仓库二、支持环境安装Git安装Node.js安装Hexo安装 三、博客本地运行本地hexo文件初始化本地启动Hexo服务 四、博客与Github绑定建立SSH密钥&#xff0c;并将公钥配置到github配置Hexo与Github的联系检查github链接访问hexo生成的博客 一、Github新建仓库 登…

nodejs 事件循环

浏览器的事件循环比较熟悉了&#xff0c;也来了解下 node 的。 参考来源&#xff1a; https://nodejs.org/en/guides/event-loop-timers-and-nexttick/ https://juejin.cn/post/6844903999506923528 事件循环分为 6 个阶段&#xff0c;图中每个框都是一个阶段&#xff0c;每个阶…

typecho 在文章中添加 bilibili 视频

一、获取视频来源&#xff1a; 可以有2种方式来定位一个 bilibili 视频&#xff1a; 第一种是使用 bvid 参数定位第二种是使用 aid 参数定位 如何获取这两个参数&#xff1f; 首先我们可以看看 bilibili 网站中的视频页面链接其实可以分为两种&#xff1a; 第一种是类似&a…

Kafka系列(一)【消息队列、Kafka的基本概念、Kafka的工作机制、Kafka可满足的需求、Kafka的特性、Kafka的应用场景】

kafka系列 一 一、消息队列1. 消息队列的来源2. 什么是消息队列3. 消息队列主要有哪些作用 二、Kafka的基本概念代理、生产者、消费者、消费者组主题、分区、副本、记录 三、了解 Kafka的工作机制-生产消息/消费消息四、Kafka可满足的需求五、Kafka的特性六、Kafka的场景 转自《…