ELK-日志服务【logstash-安装与使用】

目录

【1】安装logstash

logstash input 插件的作用与使用方式

【2】input --> stdin插件:从标准输入读取数据,从标准输出中输出内容

【3】input -- > file插件:从文件中读取数据

【4】input -- > beat插件:从filebeat中读取数据,然后标准输出

【5】input --> kafka插件:从kafka中读取数据

logstash Filter 插件的作用与使用

【6】 Filter --> Grok 插件:将非结构化数据转换成 JSON 结构化数据

【7】Filter --> Geoip插件:根据IP地址提供对应的低于信息,经纬度、城市名等

【8】Filter --> Date插件:将日期字符串解析为日志类型,然后替换@timestamp字段或指定的其他字段

【9】Filter --> useragent插件:根据 agent 字段,解析出浏览器设备、操作系统等


【1】安装logstash

[root@logstash ~]# yum -y install java
[root@logstash ~]# yum -y localinstall logstash-7.4.0.rpm

logstash input 插件的作用与使用方式

【2】input --> stdin插件:从标准输入读取数据,从标准输出中输出内容

[root@logstash ~]# vim /etc/logstash/conf.d/stdin_logstash.confinput {stdin {type => "stdin"tags => "stdin_tags"}
}
output {stdout {codec => rubydebug}
}## 启动
[root@logstash ~]# /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/stdin_logstash.conf -r

【3】input -- > file插件:从文件中读取数据

[root@logstash ~]# vim /etc/logstash/conf.d/file_logstash.confinput {file {path => "/var/log/messages"type => syslogexclude => "*.gz"                 # 排除,基于glob匹配语法start_position => "beginning"     # 第一次从头读取文件stat_interval => "3"              # 定时检查文件是否更新,默认1秒}
}
output {stdout {codec => rubydebug}
}[root@logstash ~]# /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/file_logstash.conf -r

【4】input -- > beat插件:从filebeat中读取数据,然后标准输出

[root@logstash ~]# vim /etc/logstash/conf.d/beat_logstash.conf input {beats {port => 5044}
}
output {stdout {codec => rubydebug}
}

【5】input --> kafka插件:从kafka中读取数据

input {kafka {zk_connect => "kafka1:2181,kafka2:2181,kafka3:2181"group_id => "logstash"topic_id => "apache_logs"consumer_threads => 16}
}

logstash Filter 插件的作用与使用

  • 数据从源到存储过程中,logstash 的 filter 过滤器能够解析各个事件,识别已命名的字段结构,并将它们转换成通用格式,以便更轻松、更快速地分析和实现商业价值
  • Grok 从非结构换数据中派生出结构
  • Geoip 从IP 地址分析出地理坐标
  • useragent 从请求中分析操作系统、设备类型

【6】 Filter --> Grok 插件:将非结构化数据转换成 JSON 结构化数据

  • 我们希望将下面的非结构化数据解析成json结构化的数据格式
  • grok中内置了非常多pattern可以直接使用
[root@logstash ~]# tailf /var/log/nginx/access.log 
101.201.253.168 - - [12/Jul/2023:07:38:01 -0400] "GET / HTTP/1.1" 200 4 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0" "-"
  • 使用grok pattern 将nginx 日志格式转化为 json格式,我们先看下没有转换以前的数据样子
[root@logstash ~]# vim /etc/logstash/conf.d/grok_nginx_logstash.conf
input {http {port => 7474}
}
output {stdout {codec => rubydebug}
}[root@logstash ~]# /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/grok_nginx_logstash.conf -r

  • 我们发现日志格式并没有处理,需要使用filter中的grok插件
[root@logstash ~]# vim /etc/logstash/conf.d/grok_nginx_logstash.conf input {http {port => 7474}
}
filter {grok {match => {"message" => "%{COMBINEDAPACHELOG}"}}
}
output {stdout {codec => rubydebug}
}

  • 被解析的源格式依然在,还会输出解析后的key-value格式的数据

【7】Filter --> Geoip插件:根据IP地址提供对应的低于信息,经纬度、城市名等

  • 使用geoip提取nginx日志中clientip字段,获取地域信息
[root@logstash ~]# vim /etc/logstash/conf.d/grok_nginx_logstash.conf input {http {port => 7474}
}
filter {grok {match => {"message" => "%{COMBINEDAPACHELOG}"}}geoip {source => "clientip"}
}
output {stdout {codec => rubydebug}
}

  • 如果内容太多,可以使用fileds选择自己需要的
input {http {port => 7474}
}
filter {grok {match => {"message" => "%{COMBINEDAPACHELOG}"}}geoip {source => "clientip"fields => ["city_name","country_name","country_code2","timezone","longitude","latitude","continent_code"]}
}
output {stdout {codec => rubydebug}
}

【8】Filter --> Date插件:将日期字符串解析为日志类型,然后替换@timestamp字段或指定的其他字段

  • match 类型为数组,用于指定日期匹配的格式,可以以此指定多种日期格式
  • target 类型为字符串,用于指定赋值的字段名,默认是@timestamp
  • timezone 类型为字符串,用于指定时区域

 将nginx请求中的timestamp日志进行解析,替换@timestamp中的数据,为什么需要怎么做?

  • timestamp:日志的访问时间
  • @timestamp:日志的写入时间
  • kibana 展示的@timestamp信息中需要的是真实的访问时间,我们就需要将timestamp中的信息覆盖掉@timestamp中

[root@logstash conf.d]# vim /etc/logstash/conf.d/grok_nginx_logstash.conf 
input {http {port => 7474}
}
filter {grok {match => {"message" => "%{COMBINEDAPACHELOG}"}}geoip {source => "clientip"fields => ["city_name","country_name","country_code2","timezone","longitude","latitude","continent_code"]}date {match => ["timestamp", "dd/MMM/yyyy:HH:mm:ss Z" ]target => "@timestamp"timezone => "Asia/Shanghai"}
}
output {stdout {codec => rubydebug}
}

【9】Filter --> useragent插件:根据 agent 字段,解析出浏览器设备、操作系统等

[root@logstash conf.d]# vim /etc/logstash/conf.d/grok_nginx_logstash.conf 
input {http {port => 7474}
}
filter {grok {match => {"message" => "%{COMBINEDAPACHELOG}"}}geoip {source => "clientip"fields => ["city_name","country_name","country_code2","timezone","longitude","latitude","continent_code"]}date {match => ["timestamp", "dd/MMM/yyyy:HH:mm:ss Z" ]target => "@timestamp"timezone => "Asia/Shanghai"}useragent {source => "agent"target => "useragent"   ## 也可以填agent,将agent中的数据覆盖掉}
}
output {stdout {codec => rubydebug}
}

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

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

相关文章

MongoDB 事务与数据落盘

文章目录 概要一、持久性1.1、journal log刷盘机制1.2、数据刷盘机制1.3、复制集下的写安全机制 二、隔离性总结 概要 MongoDB并不像MySQL一样天然支持多文档事务,其演变过程如下: MongoDB4.0之前只支持单文档事务,在单个文档上支持ACID原子…

vs2013 英文语言包

因为安装其它插件报错,有文档说需要更换为英文包。我电脑只有中文,于是开始了英文语言包下载。 官网下载 https://my.visualstudio.com/Downloads?qVisual%20Studio%202013%20Language%20Pack 刚开始没有使用官网,因为除了要注册登陆&…

Redis_客户端命令和数据操作(3)

目录 切换数据库 键命令 数据结构 string类型 hash类型 list类型 set类型 zset类型 查看中文value 源码等资料获取方法 切换数据库 redis数据库没有名称,默认有16个,通过0-15来标识,连接redis默认选择第一个数据库,可以…

Nacos(服务注册与发现)+SpringBoot+openFeign项目集成

📝 学技术、更要掌握学习的方法,一起学习,让进步发生 👩🏻 作者:一只IT攻城狮 ,关注我,不迷路 。 💐学习建议:1、养成习惯,学习java的任何一个技术…

安卓JNI从0到1入门教程(二)

经过上一篇《安卓JNI从0到1入门教程(一)》介绍,我们对JNI有了初步认识,接下来我会从ndk-build方式和cmake方式分别来介绍怎么构建native库: 一、ndk-build ndk-build依赖配置文件Android.mk,存放代码的位…

感受C++模版的所带来的魅力

一、泛型编程思想 首先我们来看一下下面这三个函数,如果学习过了 C函数重载 和 C引用 的话,就可以知道下面这三个函数是可以共存的,而且传值会很方便 void Swap(int& left, int& right) {int temp left;left right;right temp; }…

HarmonyOS/OpenHarmony应用开发-Stage模型UIAbility组件使用(四)

UIAbility组件与UI的数据同步 基于HarmonyOS的应用模型,可以通过以下两种方式来实现UIAbility组件与UI之间的数据同步。 1.EventHub:基于发布订阅模式来实现,事件需要先订阅后发布,订阅者收到消息后进行处理。 2.globalThis&…

macOS Sonoma 14beta 3 (23A5286i)第二个更新「附黑/白苹果镜像下载」

系统镜像下载: 系统介绍 黑果魏叔 7 月12 日消息,苹果今天发布 macOS Sonoma 14.0 Beta 3(内部版本号:23A5286i)第二个更新。 目前尚不清楚苹果为什么要发布 macOS Sonoma Beta 3 的第二个版本,但它可能…

MQ的优劣势及RabbitMQ相关概念

一,MQ 1,MQ 的概念 MQ 全称 Message Queue(消息队列),是用来存储消息数据的容器(是一个中间件),一般用于分布式系统间的通信;MQ主要介于生产者和消费者之间&#xff0c…

微服务系列文章之 Redisson实现分布式锁

一、高效分布式锁 当我们在设计分布式锁的时候,我们应该考虑分布式锁至少要满足的一些条件,同时考虑如何高效的设计分布式锁,这里我认为以下几点是必须要考虑的。 1、互斥 在分布式高并发的条件下,我们最需要保证,同…

Redis_设置密码

目录 一、临时设置密码 二、永久设置密码 源码等资料获取方法 一、临时设置密码 # 获取密码 config get requirepass # 设置密码为123456 config set requirepass 123456 # 验证密码。当设置密码后,进入redis就要验证 auth 密码 # 取消密码 config set requirep…

vscode插件开发之终端那些事儿

在开发vscode插件的时候,好几个设计都需要集成终端。 查资料后发现vsocd为开发者提供了丰富的终端API。 结合我自己的需求来展开终端的那些事儿吧: 从treeview中点击触发打开一个终端 无关的代码省略: vscode.window.createTerminal({name…