【Logstash02】企业级日志分析系统ELK之Logstash 输入 Input 插件

Logstash 使用

Logstash 命令

官方文档

https://www.elastic.co/guide/en/logstash/current/first-event.html
#各种插件
https://www.elastic.co/guide/en/logstash/current/input-plugins.html
https://www.elastic.co/guide/en/logstash/current/filter-plugins.html
https://www.elastic.co/guide/en/logstash/current/output-plugins.html
https://www.elastic.co/guide/en/logstash/7.6/input-plugins.html
https://www.elastic.co/guide/en/logstash/7.6/filter-plugins.html
https://www.elastic.co/guide/en/logstash/7.6/output-plugins.html

范例: 查看帮助

[root@logstash ~]#/usr/share/logstash/bin/logstash --help
#常用选项
-e 指定配置内容
-f 指定配置文件,支持绝对路径,如果用相对路径,是相对于/usr/share/logstash/的路径
-t 语法检查
-r 修改配置文件后自动加载生效,注意:有时候修改配置还需要重新启动生效#服务方式启动,由于默认没有配置文件,所以7.X无法启动,8.X可以启动
[root@logstash ~]#systemctl start logstash

各种插件帮助

Logstash Reference [8.17] | Elastic 

范例: 列出所有插件

[root@logstash ~]#/usr/share/logstash/bin/logstash-plugin list 

Github logstash插件链接

https://github.com/logstash-pluginsicon-default.png?t=O83Ahttps://github.com/logstash-plugins

Logstash 输入 Input 插件

官方链接

Input plugins | Logstash Reference [7.6] | Elastic

标准输入

codec 用于输入数据的编解码器,默认值为plain表示单行字符串,若设置为json,表示按照json方式解 析

范例: 交互式实现标准输入

#标准输入和输出,codec => rubydebug指输出格式,是默认值,可以省略,也支持设为json,以json格式输出
/usr/share/logstash/bin/logstash  -e 'input { stdin{} } output { stdout{ codec => rubydebug }}'
#后续还可继续输入其它信息,按ctrl+c退出#指定输入信息为Json格式
[root@logstash ~]#/usr/share/logstash/bin/logstash -e 'input { stdin{ codec => json } } output { stdout{ codec => rubydebug }}'
{"name":"wang","age": "18","gender":"male"}  #输入Json格式信息#自动解析
{"name" => "wang","event" => {"original" => "{\"name\":\"wang\",\"age\": \"18\",\"gender\":\"male\"} \n"},"@timestamp" => 2025-01-03T05:00:30.673936999Z,"age" => "18","host" => {"hostname" => "logstash"},"gender" => "male","@version" => "1"
}
#输入非Json格式信息,告警提示无法自动解析,存放message字段
hello,world[WARN ] 2025-01-03 05:01:04.357 [[main]<stdin] jsonlines - JSON parse error, original data now in message field {:message=>"Unrecognized token 'hello': was expecting (JSON String, Number, Array, Object or token 'null', 'true' or 'false')\n at [Source: (String)\"hello,world\"; line: 1, column: 6]", :exception=>LogStash::Json::ParserError, :data=>"hello,world"}
{"event" => {"original" => "hello,world\n"},"message" => "hello,world","@timestamp" => 2025-01-03T05:01:04.359617946Z,"host" => {"hostname" => "logstash"},"tags" => [[0] "_jsonparsefailure"],"@version" => "1"
}

范例: 以配置文件实现标准输入

#配置文件
[root@logstash ~]#cat /etc/logstash/conf.d/stdin_to_stdout.conf
input {stdin {type => "stdin_type"  #自定义事件类型,可用于后续判断    tags => "stdin_tag"   #自定义事件tag,可用于后续判断     codec => "json"       #指定Json 格式    }
}output {stdout {codec => "rubydebug" #输出格式,此为默认值,可省略}
}
#语法检查
[root@logstash ~]#/usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/stdin_to_stdout.conf -t
........
Configuration OK
[INFO ] 2025-01-03 05:07:47.505 [LogStash::Runner] runner - Using config.test_and_exit mode. Config Validation Result: OK. Exiting Logstash#执行logstash,选项-r表示动态加载配
[root@logstash ~]#/usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/stdin_to_stdout.conf -r
从文件输入

Logstash 会记录每个文件的读取位置,下次自动从此位置继续向后读取

每个文件的读取位置记录在 /var/lib/logstash/plugins/inputs/file/.sincedb_xxxx 或者 /usr/share/logstash/data/plugins/inputs/file/ 对应的文件中

此文件包括文件的 inode号, 大小等信息

修改 Logstash 配置文件
[root@logstash ~]#cat /etc/logstash/conf.d/file_to_stdout.conf
input {file {path => "/tmp/wang.*"type => "wanglog"     #添加自定义的type字段,可以用于条件判断,和filebeat中tag功能相似exclude => "*.txt"    #排除不采集数据的文件,使用通配符glob匹配语法 start_position => "beginning" #第一次从头开始读取文件,可以取值为:beginning和endstat_interval => "3"        #定时检查文件是否更新,默认1s   codec => json                #如果文件是Json格式,需要指定此项才能解析,如果不是Json格式而添加此行也不会影响结果}file {path => "/var/log/syslog"type => "syslog"start_position => "beginning"stat_interval => "3"}
}
output {stdout {codec => rubydebug}
}

 

 

验证日志数据
#语法检查
[root@logstash ~]#/usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/file_to_stdout.conf -t
[root@logstash ~]#echo line1 >> /tmp/wang.log
#执行
[root@logstash ~]#/usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/file_to_stdout.conf

logstash利用 sincedb 文件记录了logstash收集的记录文件的信息,比如位置,以方便下次接着从此位 置继续收集日志

[root@logstash logstash]#cat  /usr/share/logstash/data/plugins/inputs/file/.*
2232798 0 2052 15 1735885320.283595 /var/log/test.log  #记录了收集文件的inode和大小等信息[root@logstash logstash]#ll -li /var/log/test.log
2232798 -rw-r--r-- 1 root root 15 Jan  3 14:12 /var/log/test.log
从 Http 请求采取数据
[root@logstash ~]# cat /etc/logstash/conf.d/http_to_stdout.conf
input {http {port =>6666codec => json}
}
output {stdout {codec => rubydebug}
}
[root@logstash ~]#/usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/http_to_stdout.conf -r#执行下面访问可以看到上面信息
[root@ubuntu2004 ~]#curl http://logstash.wang.org:6666
ok
[root@ubuntu2004 ~]#curl  -XPOST -d'test log message' http://logstash.wang.org:6666#提交Json格式数据,可以自动解析
[root@ubuntu2004 ~]#curl  -XPOST -d'{ "name":"wang","age": "18","gender":"male"}' http://logstash.wang.org:6666

 

从 Filebeat 读取数据
filebeat配置
filebeat.inputs:
- type: logenabled: true             #开启日志           paths:- /var/log/nginx/access_json.log    #指定收集的日志文件  json.keys_under_root: true #默认false,只识别为普通文本,会将全部日志数据存储至message字段,改为true则会以Json格式存储json.overwrite_keys: true  #设为true,使用json格式日志中自定义的key替代默认的message字段,此项可选tags: ["nginx-access"]
output.logstash:hosts: ["10.0.0.104:5044"]  #指定Logstash服务器的地址和端口  
Logstash配置
[root@logstash ~]#cat /etc/logstash/conf.d/filebeat_to_stdout.conf
input {beats {port => 5044}
}
output {stdout {codec => rubydebug}
}

 

访问filebeat生成日志
[root@logstash conf.d]#/usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/filebeat_to_stdout.conf -r{"upstreamtime" => "-","agent" => {"ephemeral_id" => "b5311807-a0a9-428f-a076-a3c8c5b9db02","id" => "a3acb99e-b483-4367-a2df-535d8a39a0fa","name" => "kibana","version" => "8.8.2","type" => "filebeat"},"ecs" => {"version" => "8.0.0"},"tcp_xff" => "-","referer" => "-","domain" => "10.0.0.186","tags" => [[0] "nginx-access",[1] "beats_input_raw_event"],"http_host" => "10.0.0.186","upstreamhost" => "-","xff" => "-","host" => {"name" => "kibana"},"log" => {"offset" => 2576,"file" => {"path" => "/var/log/nginx/access_json.log"}},"clientip" => "10.0.0.181","http_user_agent" => "curl/7.81.0","responsetime" => 0,"status" => "404","input" => {"type" => "log"},"size" => 162,"@version" => "1","@timestamp" => 2025-01-03T07:13:49.000Z,"uri" => "/adada"
}

 

从 Redis 中读取数据

支持由多个 Logstash 从 Redis 读取日志,提高性能

Logstash 从 Redis 收集完数据后,将删除对应的列表Key

官方链接:

https://www.elastic.co/guide/en/logstash/current/plugins-inputs-redis.html
https://www.elastic.co/guide/en/logstash/7.6/plugins-inputs-redis.html
 

 范例:

[root@logstash ~]#cat /etc/logstash/conf.d/redis_to_stdout.conf
input {redis {host => 'Redis_IP'port => "6379"password => "123456"db => "0"data_type => 'list'key => "nginx-accesslog"}
}
output {stdout {codec => rubydebug}
}
[root@logstash ~]#/usr/share/logstash/bin/logstash -f  /etc/logstash/conf.d/redis_to_stdout.conf -r
从 Kafka 中读取数据

官方链接:

https://www.elastic.co/guide/en/logstash/current/plugins-inputs-kafka.html
https://www.elastic.co/guide/en/logstash/7.6/plugins-inputs-kafka.html

范例:

[root@logstash ~]#cat /etc/logstash/conf.d/kakfa_to_stdout.conf
input {kafka {bootstrap_servers => "10.0.0.201:9092,10.0.0.202:9092,10.0.0.203:9092"#group_id => "logstash"topics => ["nginx-accesslog","nginx-errorlog"]#topics => "nginx-log"codec => "json"consumer_threads => 8}
}
output {stdout {codec => rubydebug}
}
[root@logstash ~]#/usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/kakfa_to_stdout.conf -r

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

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

相关文章

1.4 java反射机制 简单的java反射机制实践

这是一个项目用于学习反射 第一个demo是利用反射构建一个对象转换为JSON 第二个demo是用于利用类的名字以及方法名就可以直接执行的实例 package com.zy.reflectiondemo.utils;import com.zy.reflectiondemo.annotation.JsonField;import java.lang.reflect.Field; import jav…

C#设计模式(行为型模式):观察者模式

C#设计模式&#xff1a;观察者模式&#xff0c;让对象间通信更优雅 在软件开发中&#xff0c;我们经常会遇到一个对象的状态发生改变&#xff0c;其他对象需要自动更新或做出相应反应的场景。例如&#xff1a; GUI事件处理&#xff1a; 当用户点击按钮时&#xff0c;按钮需要…

【Vue】:解决动态更新 <video> 标签 src 属性后视频未刷新的问题

问题描述 在 Vue.js 项目&#xff0c;当尝试动态更新 <video> 标签的 <source> 元素 src 属性来切换视频时&#xff0c;遇到了一个问题&#xff1a;即使 src 属性已更改&#xff0c;浏览器仍显示旧视频。具体表现为用户选择新视频后&#xff0c;视频区域继续显示之…

BerOS 文件系统路径归一化问题及其 Python 实现

题目背景 本文将讨论一道与操作系统路径归一化有关的问题&#xff0c;该问题来自 BerOS 文件系统 的设计。BerOS 是一个新型操作系统&#xff0c;其文件路径系统允许路径中的分隔符 / 重复出现。例如&#xff0c;以下路径被视为等价的&#xff1a; /usr//local//nginx/sbin//…

Halcon 显示异常

//For Halcon System HOperatorSet.SetSystem("clip_region", "false"); set_system( clip_region, false) *旋转 hom_mat2d_identity (HomMat2DIdentity1) hom_mat2d_rotate (HomMat2DIdentity1, rad( 90), 0, 0, HomMat2DRotate) affine_trans_region …

window11 wsl mysql8 错误分析:1698 - Access denied for user ‘root‘@‘kong.mshome.net‘

&#x1f6a8; 错误分析&#xff1a;1698 - Access denied for user rootkong.mshome.net 这个错误是因为 MySQL 的 root 用户 使用 auth_socket 插件进行身份验证&#xff0c;而不是使用密码。因此&#xff0c;当你尝试从 远程主机 连接时&#xff0c;MySQL 会拒绝访问。 ✅ …

CentOS 7安装Docker详细教程

本文以 CentOS7.8 为例安装 Docker 26.1.4 、Docker Compose、以及 Docker 镜像仓库。 安装方式1&#xff1a;自动安装(使用官方脚本) 使用官网一键安装命令&#xff1a; curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun 或 使用国内 daocloud 一键安…

Java:缓存:LinkedHashMap实现Lru

文章目录 Lru源码分析 ​​​​​​​​​​​​​​LinkedHashMap维护一个LinkedHashMapEntry<K,V>的双向链表对LinkedHashMap的增删查操作,也会对链表进行相同的操作并改变链表的链接顺序小结使用方法​​​​​​​​​​​​​​应用总结Lru Least Recently Used,…

通过代理用户功能可以实现生产用户的应用滚动修改密码

Oracle通过代理用户功能可以实现生产用户的应用滚动修改密码。 测试例子&#xff1a; 生产用户为jyc密码为jyc 现在要求修改jyc的密码为abc&#xff0c;意味着所有应用都得停止同时修改。 此时可以考虑新建代理用户proxy_jyc&#xff0c;密码为jyc1&#xff08;实际修改建议…

Git 仓库与文件管理笔记

Git 的三种仓库概念 本地仓库 (Local Repository) 位于本地 .git 文件夹中通过 git init 或 git clone 创建存储完整的项目历史和分支信息 远程仓库 (Remote Repository) 位于 GitHub、GitLab 等平台服务器使用 git remote -v 查看所有远程仓库默认远程仓库名通常为 origin 工…

【人工智能数据科学与数据处理】——深入详解人工智能数据科学与数据处理之数据可视化与数据库技术

深入详解人工智能数据科学与数据处理 在人工智能&#xff08;AI&#xff09;的数据科学与数据处理中&#xff0c;数据可视化与数据库技术是两项至关重要的技能。本文将深入探讨数据可视化中的可视化技巧及其应用&#xff0c;以及关系型数据库&#xff08;如MySQL、PostgreSQL&…

DES密码的安全性分析(简化版本)

DES仍是世界上使用最广的&#xff08;DES发行后20年&#xff0c;互联网的兴起&#xff0c;人们开始觉得DES不安全了&#xff0c;但DES的实现成本也越来越低&#xff09; 宏观分析&#xff1a; 密钥空间方面&#xff1a; 密钥长度&#xff1a;DES 算法使用 56 位的密钥对数据…

Elasticsearch 文档批处理 混合处理 批量操作

介绍 在 Elasticsearch 中&#xff0c;批量操作&#xff08;Bulk API&#xff09;允许你一次执行多个文档操作&#xff08;如索引、更新、删除&#xff09;以提高效率。批量操作对于大规模数据的插入、更新或删除尤其有用&#xff0c;可以显著提高处理速度。 批量操作通常是通…

计算机网络原理(谢希仁第八版)第4章课后习题答案

第四章 网络层 详细计算机网络&#xff08;谢希仁-第八版&#xff09;第四章习题全解_计算机网络第八版谢希仁课后答案-CSDN博客 1.网络层向上提供的服务有哪两种&#xff1f;是比较其优缺点。网络层向运输层提供 “面向连接”虚电路&#xff08;Virtual Circuit&#xff09;服…

实现单例模式的五种方式

如何实现一个单例 1、构造器需要私有化 2、提供一个私有的静态变量 3、暴露一个公共的获取单例对象的接口 需要考虑的两个问题 1、是否支持懒加载 2、是否线程安全 1、饿汉式 public class EagerSingleton {private static final EagerSingleton INSTANCE new EagerSi…

永磁同步电机控制算法--最大转矩电流比控制((升级版)公式法、曲线拟合法、查表法)

一、原理介绍 id0控制方法在电机输出相同的电磁转矩下电机的定子电流并不是最小的,因此,采用最大转矩电流比控制方法,使得电机在输出相同的电磁转矩下电机定子电流最少,实现该系统的原理框图如图所示。 最大转矩电流比控制也称单位电流输出最大转矩的控制,即控制id以追求最大转…

数据挖掘——决策树分类

数据挖掘——决策树分类 决策树分类Hunt算法信息增益增益比率基尼指数连续数据总结 决策树分类 树状结构&#xff0c;可以很好的对数据进行分类&#xff1b; 决策树的根节点到叶节点的每一条路径构建一条规则&#xff1b;具有互斥且完备的特点&#xff0c;即每一个样本均被且…

自动化文件监控与分类压缩:实现高效文件管理

自动化文件监控与分类压缩&#xff1a;实现高效文件管理 引言 在现代数据处理和文件管理中&#xff0c;如何高效地管理和归档大量文件是一个常见的挑战。特别是在需要根据文件类型进行分类并定期归档的场景下&#xff0c;手动操作不仅耗时且容易出错。为此&#xff0c;我们开…

小红书怎么看ip所属地?小红书ip属地为什么可以变

小红书&#xff0c;作为当下热门的社交电商平台&#xff0c;不仅为用户提供了丰富的购物与分享体验&#xff0c;还通过展示用户IP属地信息&#xff0c;增强了网络社交的透明度和真实性。然而&#xff0c;不少用户发现&#xff0c;小红书上的IP属地并非一成不变&#xff0c;这引…

springboot使用hutool captcha +vue实现图形验证码

一、效果 使用hutool captcha实现简单的图形验证码&#xff0c;可以参考官网概述 | Hutool 二、实现步骤 1、导入依赖 <!--hutool包--> <dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.…