ELK(九)—logstash

目录

  • 简介
  • 安装部署
      • 测试
  • 配置详解
  • 编写配置文件
    • 连接elasticsearch
    • 将数据推送到elasticsearch中。

简介

Logstash 是一个开源的服务器端数据处理管道,由 Elastic 公司维护和开发。它被设计用于从不同来源收集、处理和转发数据,以供 Elasticsearch 进行存储和检索。

以下是 Logstash 的主要特点和功能:

  1. 数据收集:Logstash 支持从各种来源收集数据,包括日志文件、数据库、消息队列、网络流量等。它具有丰富的插件生态系统,可以轻松地集成到多种数据源。

  2. 数据处理:Logstash 允许用户对收集到的数据进行处理和转换。通过配置不同的过滤器,可以执行各种任务,如解析结构化数据、过滤不需要的信息、标准化字段等。

  3. 数据输出:处理后的数据可以发送到各种目标,其中最常见的目标是 Elasticsearch,用于存储和检索数据。此外,Logstash 还支持输出到其他存储后端,如文件、消息队列、关系型数据库等。

  4. 插件生态系统:Logstash 的强大之处在于其插件生态系统。用户可以根据需要选择合适的输入、过滤器和输出插件,以满足特定的数据处理和集成需求。

  5. 可扩展性:Logstash 是可扩展的,可以通过添加自定义插件或使用现有的插件进行扩展。这使得 Logstash 适用于不同规模和类型的数据处理工作负载。

  6. 配置简单:Logstash 的配置文件采用简单的文本格式,易于理解和维护。用户可以根据需要编写配置文件,定义数据流的输入、过滤和输出。

  7. 日志监控和管理:Logstash 提供了用于监控和管理的工具和接口。用户可以使用 Kibana 可视化工具对 Logstash 进行监控,并查看其性能指标和运行状态。

整个 ELK(Elasticsearch、Logstash、Kibana)堆栈通常一起使用,以实现从数据收集到存储、分析和可视化的完整数据处理流程。Logstash 在这个堆栈中的角色是作为数据处理引擎,负责处理和传递数据到 Elasticsearch,而 Kibana 提供了强大的可视化和查询工具。

安装部署

下载安装包

wget https://artifacts.elastic.co/downloads/logstash/logstash-8.11.1-linux-x86_64.tar.gz

解压

tar -xvf logstash-8.11.1-linux-x86_64.tar.gz

重命名

mv logstash-8.11.1/ logstash

测试

简单示例

./logstash -e 'input { stdin { } } output { stdout {} }'
  • ./logstash:这是启动 Logstash 的命令。前提是你在 Logstash 的安装目录中,这个命令会在当前目录下寻找 logstash 可执行文件。

  • -e:这个参数允许你在命令行中直接指定 Logstash 的配置,而不必使用配置文件。后面跟着的是包含 Logstash 配置的字符串。

  • 'input { stdin { } } output { stdout {} }':这个字符串是 Logstash 的配置,分为三个部分:

    • input { stdin { } }:定义了一个输入插件,使用 stdin 插件从标准输入接收数据。

    • filter { }:这里没有定义过滤器,表示不对输入数据进行过滤。

    • output { stdout {} }:定义了一个输出插件,使用 stdout 插件将处理后的数据输出到标准输出。

所以,这个 Logstash 配置的作用是从标准输入接收数据,不对数据进行过滤,然后将处理后的数据输出到标准输出。这对于在命令行中手动输入数据、测试 Logstash 配置或查看处理结果非常有用。

​ 我们在控制台输入 你好,程序猿,马上就能看到它的输出信息

image-20231208174520513

配置详解

Logstash 的配置文件主要由三个部分组成:input、filter 和 output。每个部分负责不同的任务,用于定义数据的输入、处理和输出。

input { #输入
stdin { ... } #标准输入
}
filter { #过滤,对数据进行分割、截取等处理
...
}
output { #输出
stdout { ... } #标准输出
}

以下是对 Logstash 配置文件中 input、filter 和 output 部分的简要详解:

  1. Input(输入)

    input {
      stdin {
        # 配置参数
      }
    }
    
    • stdin:此输入插件从标准输入接收数据。这对于在命令行中手动输入数据进行测试非常有用。

    • 配置参数:stdin 插件本身不需要太多的配置参数。它主要用于从标准输入读取数据。

  2. Filter(过滤)

    filter {
      # 过滤器插件
    }
    
    • 过滤器插件:在 filter 部分,可以配置一个或多个过滤器插件,用于对输入的数据进行处理和转换。这些过滤器可以执行各种任务,如解析结构化数据、截取字段、添加标签等。

    • 例子:例如,可以使用 grok 过滤器解析日志中的特定字段,使用 mutate 过滤器修改字段值,或者使用其他过滤器执行数据转换操作。

  3. Output(输出)

    output {
      stdout {
        # 配置参数
      }
    }
    
    • stdout:此输出插件将处理后的数据输出到标准输出。这对于在命令行中查看 Logstash 处理后的数据非常有用,用于调试和测试。

    • 配置参数:stdout 插件通常不需要太多的配置参数。它用于在控制台上显示处理后的数据。

配置文件中还可以包含其他的 input、filter 和 output 部分,以根据需求定义多个输入来源、多个过滤器和多个输出目标。整个配置文件定义了数据的整个处理流程。

编写配置文件

在“/opt/elk/logstash”下创建hmiyuan-pipeline.conf

input {
    file {
        path => "/opt/elk/logs/test.log"
        start_position => "beginning"
    }
}
filter {
    mutate {
    	split => {"message"=>"|"}
    }
}
output {
	stdout { codec => rubydebug }
}

启动

./bin/logstash -f ./hmiyuan-pipeline.conf

插入数据

echo "2023-12-13 16:28:24|ERROR|读取数据出错|参  :i=1002" >> //opt/elk/logs/test.log


然后我们就可以看到logstash就会捕获到刚刚我们插入的数据,同时我们的数据也被分割了

image-20231213162915144

连接elasticsearch

更改配置文件,将我们日志记录输出到Elasticsearch中。

image-20231213163049823

向配置文件中的日志追加数据

echo "2023-12-13 16:30:24|ERROR|读取数据出错|参  :i=1002" >> //opt/elk/logs/test.log

echo "2023-12-13 16:31:24|ERROR|读取数据出错|参  :i=1002" >> //opt/elk/logs/test.log

最后登录elasticsearch-head界面查看,如果成功的话,就可以查看到插入的数据了。

image-20231213163522927

将数据推送到elasticsearch中。

input {
  file {
    path => "/opt/logs/*.log"
    start_position => "beginning"
     sincedb_path => "/dev/null"
    exclude => "*.gz"
  }
}

filter {
    mutate {
    	split => {"message"=>"|"}
    }
}
 
output {
  elasticsearch {
    hosts => ["192.168.150.190:9200"]
    index => "logs_index"
  }
}

​ 配置文件说明:

​ input: 指定输入源,logstash会从输入源读取数据。

​ file:输入源为文件。

​ path:文件路径,* 是通配符,用于匹配文件路径中的任意字符序列。

​ start_position: 设定为 “beginning”,表示从文件的开头开始读取数据。

​ sincedb_path: 指定了 sincedb 文件的路径,但这里设置为 /dev/null,意味着不使用 sincedb 文件来跟踪已读取的文件位置。

​ exclude:排除以 .gz 结尾的文件。

​ output:指定输出源,logstash会把数据处理成elasticsearch识别的数据发送给elasticsearch。

​ hosts:elasticsearch 应用地址

​ index:指定索引,会在elasticsearch中创建

启动

./bin/logstash -f ./hmiyuan-pipeline.conf

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

〖大前端 - 基础入门三大核心之JS篇(57)〗- 继承

说明:该文属于 大前端全栈架构白宝书专栏,目前阶段免费,如需要项目实战或者是体系化资源,文末名片加V!作者:哈哥撩编程,十余年工作经验, 从事过全栈研发、产品经理等工作,目前在公司…

带你学C语言~指针(2)

目录 🏉前言 🚀 数组名的理解 🚀使用指针访问数组 ✈一维数组传参的本质 ✈冒泡排序 🏆二级指针 🏆指针数组 🏆指针数组模拟二维数组 🎉结束语 🏉前言 上一章,小…

torch.gather(...)

1. Abstract 对于 pytorch 中的函数 torch.gather(input, # (Tensor) the source tensordim, # (int) the axis along which to indexindex, # (LongTensor) the indices of elements to gather*,sparse_gradFalse,outNone ) → Tensor有点绕,很多博客画各…

Webpack安装及使用

win系统 全局安装Webpack及使用 前提:使用Webpack必须安装node环境,建议使用nvm管理node版本。 1:查看自己电脑是否安装了node 2:npm install webpack版本号 -g 3:npm install webpack-cli -g -g:表示全局安装 4&…

ElasticSearch单机或集群未授权访问漏洞

漏洞处理方法: 1、可以使用系统防火墙 来做限制只允许ES集群和Server节点的IP来访问漏洞节点的9200端口,其他的全部拒绝。 2、在ES节点上设置用户密码 漏洞现象:直接访问9200端口不需要密码验证 修复过程 2.1 生成认证文件 必须要生成…

力扣225. 用队列实现栈【附进阶版】

文章目录 力扣225. 用队列实现栈示例思路及其实现两个队列模拟栈一个队列模拟栈 力扣225. 用队列实现栈 示例 思路及其实现 两个队列模拟栈 队列是先进先出的规则,把一个队列中的数据导入另一个队列中,数据的顺序并没有变,并没有变成先进后…

【转载】【Unity】WebSocket通信

1 前言 Unity客户端常用的与服务器通信的方式有socket、http、webSocket。本文主要实现一个简单的WebSocket通信案例,包含客户端、服务器,实现了两端的通信以及客户端向服务器发送关闭连接请求的功能。实现上没有使用Unity相关插件,使用的就是…

【经典LeetCode算法题目专栏分类】【第5期】贪心算法:分发饼干、跳跃游戏、模拟行走机器人

《博主简介》 小伙伴们好,我是阿旭。专注于人工智能AI、python、计算机视觉相关分享研究。 ✌更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~ 👍感谢小伙伴们点赞、关注! 分发饼干 class Solutio…

换热站数字孪生 | 图扑智慧供热 3D 可视化

换热站作为供热系统不可或缺的一部分,其能源消耗对城市环保至关重要。在双碳目标下,供热企业可通过搭建智慧供热系统,实现供热方式的低碳、高效、智能化,从而减少碳排放和能源浪费。通过应用物联网、大数据等高新技术,…

MongoDB中的关系

本文主要介绍MongoDB中的关系。 目录 MongoDB的关系嵌入关系引用关系 MongoDB的关系 MongoDB是一个非关系型数据库,它使用了键值对的方式来存储数据。因此,MongoDB没有像传统关系型数据库中那样的表、行和列的概念。相反,MongoDB中的关系是通…

美颜SDK是什么?视频美颜SDK在直播平台中的集成与接入教程详解

当下,主播们追求更加自然、精致的外观,而观众也期待在屏幕前欣赏到更为清晰、美丽的画面。为了满足这一需求,美颜SDK应运而生,成为直播平台的重要利器之一。 一、什么是美颜SDK? 通过美颜SDK,开发者可以…

docker在线安装minio

1、下载最新minio docker pull minio/minio 2、在宿主机创建 /usr/local/data/miniodocker/config 和 /usr/local/data/miniodocker/data,执行docker命令 docker run -p 9000:9000 -p 9090:9090 --name minio -d --restartalways -e MINIO_ACCESS_KEYminio -e MINIO_SECRET_K…

数据结构--图

树具有灵活性,并且存在许多不同的树的应用,但是就树本身而言有一定的局限性,树只能表示层次关系,比如父子关系。而其他的比如兄弟关系只能够间接表示。 推广--- 图 图形结构中,数据元素之间的关系是任意的。 一、图…

Shell编程基础 – C语言风格的Bash for循环

Shell编程基础 – C语言风格的Bash for循环 Shell Programming Essentials - C Style For Loop in Bash By JacksonML 循环是编程语言的基本概念之一,同样也是Bash编程的核心。当用户需要一遍又一遍地运行一系列命令直到达到特定条件时,例如&#xff1…

输电线路定位:精确导航,确保电力传输安全

在现代社会中,电力作为生活的基石,其安全稳定运行至关重要。而输电线路作为电力传输的重要通道,其故障定位和修复显得尤为重要。恒峰智慧科技将为您介绍一种采用分布式行波测量技术的输电线路定位方法,以提高故障定位精度&#xf…

06-部署knative-eventing

环境要求 For prototyping purposes 单节点的Kubernetes集群,有2个可用的CPU核心,以及4g内存; For production purposes 单节点的Kubernetes集群,需要至少有6个CPU核心、6G内存和30G磁盘空间多节点的Kubernetes集群中,…

电影小镇智慧旅游项目技术方案:PPT全文111页,附下载

关键词:智慧旅游项目平台,智慧文旅建设,智慧城市建设,智慧文旅解决方案,智慧旅游技术应用,智慧旅游典型方案,智慧旅游景区方案,智慧旅游发展规划 一、智慧旅游的起源 智慧地球是IB…

windows 安装jenkins

下载jenkins 官方下载地址:Jenkins 的安装和设置 清华源下载地址:https://mirrors.tuna.tsinghua.edu.cn/jenkins/windows-stable/ 最新支持java8的版本时2.346.1版本,在清华源中找不到,在官网中没找到windows的下载历史&#xff…

MySQL数据库 约束

目录 约束概述 外键约束 添加外键 删除外键 删除/更新行为 约束概述 概念:约束是作用于表中字段上的规则,用于限制存储在表中的数据。 目的:保证数据库中数据的正确、有效性和完整性。 分类: 注意:约束是作用于表中字段上…

java继承

1.为什么需要继承 我们编写了两个类,一个是Puppil类(小学生),一个是Graduate(大学生),问题:两个类的属性和方法有很多是相同的,怎么办? 把共有的属性和方法抽离出来: 父类: package com.hspedu.extends01;//父类,是Pupil和Graduate的父类 public cla…