ELK 日志分析平台 —— Logstash

文章目录

  • ELK 日志分析平台 —— Logstash
    • Logstash 简介
      • Logstash的工作原理
      • [注]:Logstash file插件 sincedb文件
    • 实验
      • Logstash 安装
      • Logstash 插件使用
        • 1、修改 swappiness 参数
        • 2、Logstash file 插件使用
        • 3、将数据存入 ES
        • 4、Logstash file插件 sincedb文件
        • 5、Syslog 输入插件
        • 6、多行过滤插件
        • 7、采集 ES 日志,并存储到 ES
        • 8、grok过滤插件
        • 9、apache 服务日志过滤实战
    • 实验截图
      • 安装 Logstash
      • Logstash 插件使用
        • 1、修改 swappiness 参数
        • 2、命令行使用插件
        • 3、file 插件的使用
        • 4、多行过滤
        • 5、采集ES 日志
        • 6、grok过滤插件
        • 7、apache服务日志过滤
        • 8、Logstash file插件 sincedb文件
        • 9、Syslog 输入插件

Logstash 简介

官网: https://www.elastic.co/guide/en/logstash/7.6/introduction.html
安装包下载地址: https://www.elastic.co/downloads/past-releases/logstash-7-6-2

Logstash 是具有实时流水线功能的开源数据收集引擎。Logstash可以动态统一来自不同来源的数据,并将数据标准化到您选择的目标位置。清除所有数据并使其民主化,以用于各种高级下游分析和可视化用例。

  • Logstash和Beats有助于收集,聚合和丰富您的数据并将其存储在Elasticsearch中。
  • Logstash是一个开源的服务器端数据处理管道。
  • logstash拥有200多个插件,能够同时从多个来源采集数据,转换数据,然后将数据发送到您最喜欢的 “存储库” 中。(大多都是 Elasticsearch。)
  • Logstash管道有两个必需的元素,输入和输出,以及一个可选元素过滤器。

Logstash的工作原理

官网:https://www.elastic.co/guide/en/logstash/7.6/pipeline.html

Logstash事件处理管道包括三个阶段:输入→过滤器→输出。输入会生成事件,过滤器会对其进行修改,输出会将它们发送到其他地方。输入和输出支持编解码器,使您可以在数据进入或退出管道时对其进行编码或解码,而不必使用单独的过滤器。

  • 输入项
    您可以使用输入将数据获取到Logstash。一些更常用的输入是:

    • file:从文件系统上的文件读取,就像UNIX命令一样 tail -0F
    • syslog:在众所周知的端口514上侦听syslog消息,并根据RFC3164格式进行解析
    • redis:使用redis通道和redis列表从redis服务器读取。Redis经常在集中式Logstash安装中用作“代理”,该安装会将来自远程Logstash“托运人”的Logstash事件排队。
    • beats:进程的事件发送的 beats。

  • 筛选器
    筛选器是Logstash管道中的中间处理设备。如果事件符合特定条件,则可以将过滤器与条件语句结合使用以对事件执行操作。一些有用的过滤器包括:

    • grok:解析和构造任意文本。当前,Grok是Logstash中将非结构化日志数据解析为结构化和可查询内容的最佳方法。Logstash内置120种模式,很可能会找到满足您需求的模式!
    • mutate:对事件字段执行常规转换。您可以重命名,删除,替换和修改事件中的字段。
    • drop:完全删除事件,例如调试事件。
    • clone:复制事件,可能会添加或删除字段。
    • geoip:添加有关IP地址地理位置的信息(还在Kibana中显示惊人的图表!)

有关可用过滤器的更多信息,请参阅 过滤器插件。


  • 输出
    输出是Logstash管道的最后阶段。一个事件可以通过多个输出,但是一旦完成所有输出处理,该事件就完成了执行。一些常用的输出包括:

    • elasticsearch:将事件数据发送到Elasticsearch。如果您打算以一种高效,便捷且易于查询的格式保存数据,那么Elasticsearch是您的最佳选择。时期。是的,我们有偏见:)
    • file:将事件数据写入磁盘上的文件。
    • graphite:将事件数据发送到graphite,graphite是一种流行的开源工具,用于存储和绘制指标图形。http://graphite.readthedocs.io/en/latest/
    • statsd:将事件数据发送到statsd,该服务“通过UDP侦听统计信息(如计数器和计时器),并将聚合发送到一个或多个可插拔后端服务”。如果您已经在使用statsd,这可能对您有用!

有关可用输出的更多信息,请参见 输出插件。


  • 编解码器
    编解码器基本上是流过滤器,可以作为输入或输出的一部分进行操作。编解码器使您可以轻松地将消息的传输与序列化过程分开。流行的编解码器包括json,msgpack和plain (文本)。

    • json:以JSON格式编码或解码数据。
    • multiline:将多行文本事件(例如java异常和stacktrace消息)合并到单个事件中。

有关可用编解码器的更多信息,请参见 编解码器插件。


[注]:Logstash file插件 sincedb文件

Logstash file插件 sincedb文件内容解释:
跟踪监视文件中的当前位置,该插件通过将其记录在一个名为sincedb的单独文件中来跟踪每个文件中的当前位置。这样就可以停止并重新启动Logstash,并使它从中断处开始取走,而不会丢失Logstash停止时添加到文件中的行。

  • inode编号
  • 文件系统的主要设备号
  • 文件系统的次要设备号
  • 文件中的当前字节偏移量
  • 最后一个活动时间戳(浮点数)
  • 与此记录匹配的最后一个已知路径

实验


Logstash 安装

# 安装 openjdk,官方要求,安装 logstash 需要 Java8 或者 Java11 。 这里选用安装 11.
yum install -y java-11-openjdk.x86_64
# 安装 logstash
rpm -ivh logstash-7.6.1.rpm

Logstash 插件使用


1、修改 swappiness 参数

# swappiness参数值可设置范围在0到100之间。
# 此参数值越低,就会让Linux系统尽量少用swap分区,多用内存;
# 参数值越高就是反过来,使内核更多的去使用swap空间。
cat /proc/sys/vm/swappiness
echo 10 > /proc/sys/vm/swappiness
cat /proc/sys/vm/swappiness

2、Logstash file 插件使用


# 测试,插件使用。从标准输入读取事件,将事件打印到标准输出。
/usr/share/logstash/bin/logstash -e 'input { stdin {}} output { stdout {} }'# 以文件形式输出
# path => "/tmp/demo"   : 输出路劲。
# codec => line { format => "custom format: %{message}"}    : 自定义输出格式。vim /etc/logstash/conf.d/demo.conf
input {stdin {}
}
output {file {path => "/tmp/demo"codec => line { format => "custom format: %{message}"}}
}# 指定文件使用插件
/usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/demo.conf

3、将数据存入 ES

# 将日志存入 elasticsearch
# path => "/var/log/messages"   :用作输入的文件的路径。路径必须是绝对路径,不能是相对路径。
# start_position => "beginning"   :选择Logstash最初从开头开始读取文件。
# hosts => ["172.25.9.1:9200"]    :设置远程存储的主机。如果给定一个数组,它将在hosts参数中指定的主机之间负载均衡请求。
# index => "syslog-%{+yyyy.MM.dd}"       : 写入事件的格式。vim /etc/logstash/conf.d/demo.conf
input {file {path => "/var/log/messages"start_position => "beginning"}
}output {stdout {}elasticsearch {hosts => ["172.25.9.1:9200"]index => "syslog-%{+yyyy.MM.dd}"}
}# web 界面访问head。
http://172.25.9.1:9100/

4、Logstash file插件 sincedb文件

# Logstash file插件 sincedb文件
cd /usr/share/logstash/data/plugins/inputs/file/
# 查看 sincedb 文件
l.
ll .sincedb_452905a167cf4509fd08acb964fdb20c
cat .sincedb_452905a167cf4509fd08acb964fdb20c
#  显示文件索引节点号(inode)。一个索引节点代表一个文件。
ls -i /var/log/messages

5、Syslog 输入插件

logstash 可以伪装成日志服务器,直接接受远程日志。

vim /etc/logstash/conf.d/demo.conf
input {#file {# path => "/var/log/messages"#  start_position => "beginning"#}syslog {port => 514}
}output {stdout {}#file {#  path => "/tmp/demo"#  codec => line { format => "custom format: %{message}"}#}elasticsearch {hosts => ["172.25.9.1:9200"]index => "rsyslog-%{+yyyy.MM.dd}"}
}# 配置远程 rsyslog 服务
# server2、3:
vim /etc/rsyslog.conf
……15 $ModLoad imudp16 $UDPServerRun 514
……
90 *.* @@172.25.9.1:514
……systemctl restart rsyslog# server1:
# 指定文件使用插件
/usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/demo.conf

6、多行过滤插件

多行过滤可以把多行日志记录合并为一行事件

cd /etc/logstash/conf.d/
vim test.conf
# pattern => "^EOF"  : 多行结束的标志或者开始的标志。
# negate => true : 是否对pattern的结果取反,该行表示没有遇到 EOF 开头的行都是前一行
# what => previous : previous 向上匹配,next 向下匹配。
# 官网 :https://www.elastic.co/guide/en/logstash/7.6/multiline.html
input {stdin {codec => multiline {pattern => "^EOF"negate => truewhat => previous}}
}output {stdout {}
}# 指定文件使用插件
/usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/test.conf

7、采集 ES 日志,并存储到 ES

cd /etc/logstash/conf.d/
vim es.conf
# start_position => "beginning"   : 选择Logstash 最初从哪个位置读取信息,beginning 从总是开始位置读取,end 从结尾读取。将文件作为实时流,所以这里的结尾指的是上一次读取到的结尾。
# codec => multiline:编码方式为多行编码器,多行编解码器将折叠多行消息并将其合并为一个事件。
input {file {path => "/var/log/elasticsearch/my-es.log"start_position => "beginning"codec => multiline {pattern => "^\["negate => truewhat => previous}}
}output {stdout {}elasticsearch {hosts => ["172.25.9.1:9200"]index => "eslog-%{+yyyy.MM.dd}"}
}# 指定文件使用插件
/usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/es.conf

8、grok过滤插件

cd /etc/logstash/conf.d/
vim test1.conf
# 官网:https://www.elastic.co/guide/en/logstash/7.6/plugins-filters-grok.html
#  grok :grok模式的语法是 %{SYNTAX:SEMANTIC},SYNTAX 是与文本匹配的模式的名称,类似日志中的数据类型。SEMANTIC 是为匹配的文本段指定的标识符,类似数据的标题。
# match  :  一个散列,它定义了查找位置以及使用哪些模式的映射。
input {stdin {}
}
filter {grok {match => { "message" => "%{IP:client} %{WORD:method} %{URIPATHPARAM:request} %{NUMBER:bytes} %{NUMBER:duration}" }}
}
output {stdout {}
}# 指定文件使用插件
/usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/test1.conf

9、apache 服务日志过滤实战

# 配置 httpd 服务
yum install -y httpd
systemctl start httpd
# 默认发布页
echo server1 > /var/www/html/index.html
# Logstash 采集用户对该目录有相应的权限
ll -d /var/log/httpd/
chmod 755 /var/log/httpd/# 编写配置文件
cd /etc/logstash/conf.d/
vim apache.conf
# match => { "message" => "%{HTTPD_COMBINEDLOG}" }
input {file {path => "/var/log/httpd/access_log"start_position => "beginning"}
}filter {grok {match => { "message" => "%{HTTPD_COMBINEDLOG}" }}
}output {stdout {}elasticsearch {hosts => ["172.25.9.1:9200"]index => "apachelog-%{+yyyy.MM.dd}"}
}# 指定文件使用插件
/usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/apache.conf

实验截图


安装 Logstash

Logstash 插件使用


1、修改 swappiness 参数


2、命令行使用插件


3、file 插件的使用


4、多行过滤


5、采集ES 日志


6、grok过滤插件


7、apache服务日志过滤


8、Logstash file插件 sincedb文件


9、Syslog 输入插件



ELK 日志分析平台 —— Logstash相关推荐

  1. 企业项目实战---ELK日志分析平台之logstash数据采集(二)

    ELK日志分析平台 logstash数据采集 1.logstash简介 2.Logstash安装 3.标准输入到标准输出 4.标准输入到文件 5.标准输入到es主机 6.指定文件输入到es主机 7.s ...

  2. 搭建ELK日志分析平台(下)—— 搭建kibana和logstash服务器

    27.6 安装kibana 27.7 安装logstash 27.8 配置logstash 27.9 kibana上查看日志 27.10 收集nginx日志 27.11 使用beats采集日志 本文是 ...

  3. ELK日志分析平台.1-搭建

    ELK日志分析平台.1-搭建 2017-12-28 | admin 一.简介 1.核心组成     ELK由Elasticsearch.Logstash和Kibana三部分组件组成:     Elas ...

  4. 搭建ELK日志分析平台(上)—— ELK介绍及搭建 Elasticsearch 分布式集群

    笔记内容:搭建ELK日志分析平台(上)-- ELK介绍及搭建 Elasticsearch 分布式集群 笔记日期:2018-03-02 27.1 ELK介绍 27.2 ELK安装准备工作 27.3 安装 ...

  5. ELK日志分析平台-Elasticsearch搭建和异常处理

    一.介绍 1.1. ELK日志分析平台 (1)不是一款软件,而是一整套解决方案,是三个软件产品的首字母缩写. ELK分别代表: Elasticsearch:负责日志检索和储存 Logstash:负责日 ...

  6. logstash 吞吐量优化_1002-谈谈ELK日志分析平台的性能优化理念

    在生产环境中,我们为了更好的服务于业务,通常会通过优化的手段来实现服务对外的性能最大化,节省系统性能开支:关注我的朋友们都知道,前段时间一直在搞ELK,同时也记录在了个人的博客篇章中,从部署到各个服务 ...

  7. 携程ELK日志分析平台深耕之路

    源起 日志,看似简单简单的文本,在网站运维人员眼里却似一座蕴含丰富的宝藏.通常以下运维任务都或多或少需要运维人员和日志打交道: 系统健康状况监控 查找故障根源 系统瓶颈诊断和调优 追踪安全相关问题 技 ...

  8. ELK日志分析平台(二)----logstash数据采集

    logstash数据采集 1. logstash 1.1logstash介绍 1.2logstash的力量 2. Logstash的安装与配置(一台新的虚拟机) 2.1软件的下载和安装 2.1.1软件 ...

  9. 在Windows系统下搭建ELK日志分析平台

    2018年07月11日 22:29:45 民国周先生 阅读数:35 再记录一下elk的搭建,个人觉得挺麻烦的,建议还是在linux系统下搭建,性能会好一些,但我是在windows下搭建的,还是记录一下 ...

最新文章

  1. phpstorm常用设置
  2. [C++] vector 定义和初始化
  3. 实体嵌入Entity Embedding及代码实现
  4. u3d中texture2D的Advanced设置解析
  5. SAP CRM Fiori应用冗余round trip的原因分析
  6. paip.System.out.println乱码解决
  7. SWF是什么文件,SWF文件用什么软件可以打开
  8. 计算机程序设计艺术初读感
  9. 中国兰花怎么养 中国兰花养殖方法及注意事项
  10. 【100%通过率】华为OD机试真题 Java 实现【最接最大输出功率的设备 /查找充电设备组合】
  11. 如画的水乡,如画的同里16
  12. 整个ztree树下控制其单选
  13. 39、基于51单片机声控光控灯人体感应路灯照明灯系统设计
  14. ARM GPU mali系列产品规划图或天梯图
  15. html5订货系统,order-admin
  16. PCB各层的含义 (solder 和 paste 区别)
  17. 我的第一个开源库-DialogLoading弹出加载框(Kotlin版)
  18. 天弘中证电子计算机指数a,天弘中证计算机ETF联接A
  19. EXCELITAS电源维修TLX402高压发生器维修故障详解
  20. 牛津数学与计算机专业面试三次,录取率只有7%的牛津大学计算机科学专业面试真题来了 没看过就是放弃面试了...

热门文章

  1. 手把手教你TSYS建站
  2. AutoCAD Civil 3D-曲面-曲面对象转换成AutoCAD三维实体
  3. java 面试题365
  4. 文本框”输入关键字 “提示
  5. ui设计师需要学哪些软件
  6. linux 强制关闭进程
  7. Java毕业设计-网上书城管理系统
  8. 【分享】SDLPAL 仙剑奇侠传开源项目编译
  9. Visual Studio中使用Macros插件给代码添加注释、时间和以及自动脚本
  10. Android 之路51---百度地图实现