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

news2024/12/24 20:20:09

目录

【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.conf

input {
  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.conf

input {
  file {
    path => "/var/log/messages"
    type => syslog
    exclude => "*.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.coloradmin.cn/o/745876.html

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

相关文章

目标检测学习

目录 1、目标定位 2、特征点检测 3、目标检测 4、滑动窗口的卷积实现 5、Bounding Box 预测(Bounding box predictions) 6、交并化 7、非极大值抑制 8、Anchor Boxes 9、YOLO算法 1、目标定位 2、特征点检测 如何检测特征点(以人的部…

基于linux下的高并发服务器开发(第一章)- 静态库的制作1.4

01 / 什么是库 库文件是计算机上的一类文件,可以简单的把库文件看成一种代码仓库,它提供给使用者一些可以直接拿来用的变量、函数或类库是特殊的一种程序,编写库的程序和编写一般的程序区别不大,只是库不能单独运行。库文件有两种…

如何选择适合外贸公司的企业邮箱?推荐哪些优质企业邮箱服务?

为外贸公司选择合适的企业邮箱是企业成功经营的关键。强大、安全、直观的企业邮箱能够满足不同平台上不同用户的需求,这是确保数据和消息与客户和合作伙伴准确沟通的关键。以下是外贸公司在选择企业邮箱时应考虑的一些规范: 1、安全 在考虑企业邮箱时,安…

如何下载centOS镜像

我们在操作虚拟机的时候都有一个选择镜像, 这里我们可以去对应的官网去下载即可,下面就是网址 Download (centos.org) 就会出现许多地址 我们只需要随便选一个地址即可(前提它能用), 到了下图即可点击下载,…

通信算法之179: 单载波频域均衡系统的帧结构2

一。帧结构 (2) (3)

问懵了....美团一面索命44问,过了就60W+

说在前面 在40岁老架构师尼恩的(50)读者社区中,经常有小伙伴,需要面试美团、京东、阿里、 百度、头条等大厂。 下面是一个小伙伴成功拿到通过了美团一次技术面试,最终,小伙伴通过后几面技术拷问、灵魂拷问…

欧姆龙CJ系列PLC以太网通讯处理器欧姆龙cp1h以太网模块

捷米特JM-ETH-CJ转以太网模块是一款经济型的以太网通讯处理器,是为满足日益增多的工厂设备信息化需求(设备网络监控和生产管理)而设计,用于欧姆龙CJ1/CJ2/CS1系列PLC的以太网数据采集,非常方便构建生产管理系统。 捷米…

Mybatis-plus生成代码

生成类 package com.lbdj.user.service;import com.baomidou.mybatisplus.generator.FastAutoGenerator; import com.baomidou.mybatisplus.generator.config.OutputFile; import com.baomidou.mybatisplus.generator.config.rules.DateType; import com.lbdj.user.service.co…

K8s生产环境常见问题处理、答疑

文章目录 K8s 常见问题处理、答疑[1] calico一直处于未就绪状态[2] 删除dashboard 一直卡在delete[3] k8s-dashboard 修改tocken-ttl避免频繁输入tocken[4] kubectl 快捷指令[5] 解决UTC时间问题[6] kubectl命令自动补全[7] kubectl exec进入pod[8] 使用hostpath解决容器UTC时间…

轻松玩转Python正则表达式

引言 正则表达式是一种强大的文本匹配和处理工具,广泛应用于各种编程语言中。在Python中,我们可以使用内置的re模块来处理正则表达式。本文将带您从入门到精通,逐步介绍Python中的正则表达式用法,并提供实例演示。 1. 正则表达式…

电商兴起与电脑城衰退:利弊分析与展望

随着科技的飞速发展和互联网的普及,电子产品成为现代生活中不可或缺的一部分。在过去很长一段时间里,想要购买电子设备都逃不开一个叫“电脑城”的地方,那里鱼龙混杂良莠不齐,是令许多人记忆深刻分外难忘之处。然而,随…

U启动盘(NETBASE第十二课)

1.域环境组策略的应用规则 1)策略的继承 继承:默认下级容器继承上级容器的组策略配置Default Domain Policy禁止更改桌面背景运行-dsa.msc创建OU并命名为caiwu,在caiwu的OU中创建新用户xmxm用户在win10客户端主机登录,验证不能更…

MongoDB比Mysql快的原因,为什么 MongoDB 索引选择B-树,而 Mysql 索引选择B+树

一、B树和B树的区别 很明显,我们想向弄清楚原因就要知道B树和B树的区别。为了不长篇大论。我们直接给出他们的形式总结他们的特点。 1、B树 B树是一种自平衡的搜索树,形式很简单: 这就是一颗B-树。针对我们这个问题的最核心的特点如下&#…

软件测试面试题(带答案)

1. 请自我介绍一下(需简单清楚的表述自已的基本情况,在这过程中要展现出自信,对工作有激情,上进,好学) 面试官您好,我叫###,今年26岁,来自广东深圳,就读专业是电子商务,…

TypeScript算法题实战——剑指 Offer篇(4)

目录 一、礼物的最大价值1.1、题目描述1.2、题解 二、最长不含重复字符的子字符串2.1、题目描述2.2、题解 三、丑数3.1、题目描述3.2、题解 四、第一个只出现一次的字符4.1、题目描述4.2、题解 五、数组中的逆序对5.1、题目描述5.2、题解 六、两个链表的第一个公共节点6.1、题目…

任务型对话对话策略学习的强化学习方法

任务型对话(TOD)系统旨在帮助用户解决从天气咨询到计划安排的一系列问题。完成任务的途径有二。 其一是端到端途径:直接将当前对话内容与系统的自然语言反映相关联。此种方法多是采用序列到序列的模型,然后进行监督训练。 第二种是模组途径&#xff1a…

can 相关背题

1 CAN FD 和CAN的 区别: CAN-FD:一帧数据最长64字节。以理解成CAN协议的升级版,只升级了协议,物理层未改变。传输速率不同、数据长度不同、帧格式不同、ID长度不同。 1)速率不同: CAN:最大传…

机械臂的雅克比矩阵推导

1. 线速度和角速度的递推通式推导 p i p i − 1 R i − 1 r i − 1 , i i − 1 \mathbf{p}_{i}\mathbf{p}_{i-1}\mathbf{R}_{i-1} \mathbf{r}_{i-1, i}^{i-1} pi​pi−1​Ri−1​ri−1,ii−1​ p i − 1 \mathbf{p}_{i-1} pi−1​是 { i − 1 } \{i-1\} {i−1}坐标系的原点的…

获取全国各地行政区的genjson数据以及使用leaflet加载行政区数据

前言 在写代码之前,我们需要做一些准备工作,需要有一份某个行政区的geojson数据,如果你没有也没关系,我们可以去下载,地址:geojson数据下载网站 打开网站,选择自己想要获取的行政区&#xff0…