【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和end
        stat_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 =>6666
        codec => 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: log
  enabled: 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

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

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

相关文章

【设计模式】 基本原则、设计模式分类

设计模式 设计模式是软件工程中的一种通用术语&#xff0c;指的是针对特定问题的经过实践验证的解决方案。设计模式并不是最终的代码实现&#xff0c;而是描述了如何解决某一类问题的思路和方法。 如果熟悉了设计模式&#xff0c;当遇到类似的场景&#xff0c;我们可以快速地…

【AI学习】Transformer深入学习(二):从MHA、MQA、GQA到MLA

前面文章&#xff1a; 《Transformer深入学习&#xff08;一&#xff09;&#xff1a;Sinusoidal位置编码的精妙》 一、MHA、MQA、GQA 为了降低KV cache&#xff0c;MQA、GQA作为MHA的变体&#xff0c;很容易理解。 多头注意力&#xff08;MHA&#xff09;&#xff1a; 多头注…

【DevOps】Jenkins部署

Jenkins部署 文章目录 Jenkins部署资源列表基础环境一、部署Gilab1.1、安装Gitlab1.2、修改配置文件1.3、加载配置文件1.4、访问Gitlab1.5、修改root登录密码1.6、创建demo测试项目1.7、上传代码1.8、验证上传的代码 二、部署Jenkins所需软件2.1、部署JDK2.2、部署Tomcat2.3、部…

Node.js - 文件操作

1. 文件写入 文件写入是计算机非常常见的操作&#xff0c;下载文件&#xff0c;安装软件&#xff0c;保存程序日志&#xff0c;视频录制等都使用到了 1.1 异步写入 const fs require("fs");// 写入文件 fs.writeFile(./sentence.txt, "Hello world", e…

数据结构复习 (顺序查找,对半查找,斐波那契查找,插值查找,分块查找)

查找&#xff08;检索&#xff09;&#xff1a; 定义&#xff1a;从给定的数据中找到对应的K 1&#xff0c;顺序查找&#xff1a; O(n)的从前向后的遍历 2&#xff0c;对半查找&#xff0c;要求有序 从中间开始查找&#xff0c;每次检查中间的是否正确&#xff0c;不正确就…

kafka使用以及基于zookeeper集群搭建集群环境

一、环境介绍 zookeeper下载地址&#xff1a;https://zookeeper.apache.org/releases.html kafka下载地址&#xff1a;https://kafka.apache.org/downloads 192.168.142.129 apache-zookeeper-3.8.4-bin.tar.gz kafka_2.13-3.6.0.tgz 192.168.142.130 apache-zookee…

Redis的内存预分配策略

Redis的内存预分配策略是一种优化手段&#xff0c;旨在减少频繁的内存分配和释放操作对性能的影响。以下是对Redis在使用各数据结构类型时内存变化以及触发底层数据结构变化条件的详细分析&#xff1a; 一、内存预分配策略概述 Redis通过预先分配足够的内存&#xff0c;可以提高…

卸载wps后word图标没有变成白纸恢复

这几天下载了个wps教育版&#xff0c;后头用完了删了 用习惯的2019图标 给兄弟我干没了&#xff1f;&#xff1f;&#xff1f; 其他老哥说什么卸载关联重新下 &#xff0c;而且还要什么撤销保存原来的备份什么&#xff0c;兄弟也是不得不怂了 后头就发现了这个半宝藏博主&…

麒麟服务器安装kafka--亲测

我这安装的是单机版本的&#xff1a; 下载地址&#xff1a;Index of /kafka/3.9.0 我下载的是&#xff1a;https://dlcdn.apache.org/zookeeper/zookeeper-3.9.3/apache-zookeeper-3.9.3-bin.tar.gz https://dlcdn.apache.org/kafka/3.9.0/kafka_2.12-3.9.0.tgz 一、下载并上…

104周六复盘 (188)UI

1、早上继续看二手书的一个章节&#xff0c;程序开发流程、引擎、AI等内容&#xff0c; 内容很浅&#xff0c;基本上没啥用&#xff0c;算是复习。 最大感触就是N年前看同类书的里程碑、AI相关章节时&#xff0c;会感觉跟自己没啥关系&#xff0c; 而如今则密切相关&#xf…

Chromebook 的 4 个最佳变声器

您对使用chromebook 变声器感到困惑吗&#xff1f;您是否认为在 Chromebook 上安装变声器很困难&#xff1f;如果是&#xff0c;那么这篇文章适合您&#xff0c;因为在 Chromebook 上安装和使用简单且准确的变声器非常简单且轻松。 在本文中&#xff0c;我们将分享适用于 Chro…

DC系列之DC-8渗透测试

DC-8 靶机渗透测试实战 靶机下载地址&#xff1a; https://download.vulnhub.com/dc/DC-8.zip&#xff08;下载速度慢可以用迅雷下载&#xff09; 一、实验环境 实验环境&#xff1a; kali2024&#xff1a;192.168.234.145&#xff08;nat模式&#xff09; 靶机环境DC-7&#…

12306分流抢票软件 bypass v1.16.43 绿色版(春节自动抢票工具)

软件介绍 12306Bypass分流抢票软件&#xff0c;易操作强大的12306抢票软件&#xff0c;全程自动抢票&#xff0c;云识别验证码打码&#xff0c;多线程秒单、稳定捡漏&#xff0c;支持抢候补票、抢到票自动付款&#xff0c;支持多天、多车次、多席别、多乘客、短信提醒等功能。…

NS4861 单灯指示独立耳锂电池充放电管理 IC

1 特性  最大 500mA 线性充电电流&#xff0c;外部可调节  内部预设 4.2V 充电浮充电压  支持 0V 电池充电激活  支持充满 / 再充功能  内置同步升压放电模块&#xff0c;输出电压 5.1V  同步升压 VOUT 最大输出电流 500mA  VOL/OR 独…

基于Java的敬老院管理系统的设计和实现【源码+文档+部署讲解】

基于Java的敬老院管理系统设计和实现 摘 要 新世纪以来,互联网与计算机技术的快速发展,我国也迈进网络化、集成化的信息大数据时代。对于大众而言,单机应用早已成为过去&#xff0c;传统模式早已满足不了当下办公生活等多种领域的需求,在一台电脑上不联网的软件少之又少&#x…

基于YOLOv8的道路缺陷检测系统

基于YOLOv8的道路缺陷检测系统 (价格80) 包含 [Block crack, Longitudinal crack, Strip repair, Transverse crack] [‘块状裂缝’&#xff0c;‘纵向裂缝’&#xff0c;‘修复’&#xff0c;‘横向裂缝’] 4个类 通过PYQT构建UI界面&#xff0c;包含图片检测&#xff…

我用AI学Android Jetpack Compose之开篇

最近突发奇想&#xff0c;想学一下Jetpack Compose&#xff0c;打算用Ai学&#xff0c;学最新的技术应该要到官网学&#xff0c;不过Compose已经出来一段时间了&#xff0c;Ai肯定学过了&#xff0c;用Ai来学&#xff0c;应该问题不大&#xff0c;学习过程记录下来&#xff0c;…

unity学习7:unity的3D项目的基本操作: 坐标系

目录 学习参考 1 unity的坐标系 1.1 左手坐标系 1.2 左手坐标系和右手坐标系的区别 1.3 坐标系的原点(0,0,0) 2 坐标系下的具体xyz坐标 2.1 position这里的具体xyz坐标值 2.2 父坐标 2.3 世界坐标和相对坐标 2.3.1 世界坐标 2.3.2 相对坐标 2.4 父物体&#xff0c;…

爬虫案例-爬取某度文档

文章目录 1、第三方库的安装和pytesseract安装2、爬取某度文档的代码3、效果图 1、第三方库的安装和pytesseract安装 #以下是安装http请求的第三方库 pip install requests #以下是安装处理文档的第三方库 pip install python-docx #以下是安装处理图片的第三方库 pip install…

在Lua中,Metatable元表如何操作?

Lua中的Metatable&#xff08;元表&#xff09;是一个强大的特性&#xff0c;它允许我们改变表&#xff08;table&#xff09;的行为。下面是对Lua中的Metatable元表的详细介绍&#xff0c;包括语法规则和示例。 1.Metatable介绍 Metatable是一个普通的Lua表&#xff0c;它用于…