Logstash配置详解

一、Logstash配置文件详解

Logstash是一个开源的数据收集、处理和传输工具,可以从多个来源收集数据、对数据进行处理和转换,最后将数据传输到相应的目的地。Logstash的配置文件是实现这一过程的关键,下面就通过一个示例来详细阐述Logstash的配置文件。

input {
  stdin {}
}

filter {
  grok {
    match => { "message" => "%{COMBINEDAPACHELOG}" }
  }
}

output {
  stdout { codec => rubydebug }
}

该配置文件定义了三个部分:输入、过滤和输出。

输入部分指定了数据源,本例中为标准输入stdin。

过滤部分使用grok插件进行数据转换,将数据从输入格式转换为所需的格式。

输出部分指定了将转换后的数据发送到stdout,输出格式为Ruby的debug格式。

二、Logstash配置多个输入

Logstash可以从多个数据源中收集数据,下面的示例阐述了如何在Logstash中配置多个输入。

input {
  file {
    path => "/var/log/messages"
    type => "syslog"
  }
  syslog {
    port => "5514"
    type => "syslog"
  }
}

output {
  stdout { codec => rubydebug }
}

该配置文件定义了两个输入部分,一个是通过文件方式收集数据,路径为“/var/log/messages”,数据类型为“syslog”;另一个是通过syslog协议收集数据,监听端口号为“5514”,数据类型同样为“syslog”。

三、Logstash配置详解

Logstash的策略配置主要通过插件来实现,下面阐述了一些常用的插件:

  • Grok插件:用于文本解析和分析。
  • Date插件:用于将文本日期转换为日期对象。
  • CSV插件:用于解析CSV格式数据。
  • Json插件:用于解析JSON数据。
  • HTTP插件:用于从HTTP源输入数据。
  • Elasticsearch插件:用于将数据输出到Elasticsearch。

四、Logstash配置日志关键字段

在数据处理过程中,通常需要从原始数据中提取常用信息,下面的示例阐述了如何将日志数据中的关键字段提取出来。

假设原始数据格式为:[timestamp] [message]

filter {
  grok {
    match => { "message" => "\[%{TIMESTAMP_ISO8601:timestamp}\] %{GREEDYDATA:message}" }
  }
}

output {
  stdout { codec => rubydebug }
}

在上面的过滤部分,使用grok插件匹配一个包含时间戳和消息的字符串。并将TIMESTAMP_ISO8601匹配到的结果保存到”timestamp”字段,将GREEDYDATA匹配到的结果保存到”message”字段。

五、Logstash配置Grok

Grok插件是Logstash的核心插件之一,主要用于从原始文本中提取结构化的数据。下面的示例演示了如何使用Grok插件提取消息日志中的关键字段。

假设原始数据格式为:[timestamp] [message]

filter {
  grok {
    patterns_dir => "/etc/logstash/patterns"
    match => { "message" => "\[%{TIMESTAMP_ISO8601:timestamp}\] %{GREEDYDATA:message}" }
  }
}

output {
  stdout { codec => rubydebug }
}

该示例先从”/etc/logstash/patterns”目录中加载自定义模式,以便可以在匹配中使用。然后,使用Grok匹配从原始文本中提取事件时间戳和消息内容。

六、Logstash配置文件

在Logstash中,配置文件是实现数据流转和处理的关键,下面的示例展示了一个典型的Logstash配置文件。

input {
  syslog {
    port => "5514"
    type => "syslog"
  }
}

filter {
  grok {
    match => { "message" => "\[%{MONTHDAY:day}/%{MONTH:month}/%{YEAR:year}:%{TIME:time} %{ISO8601_TIMEZONE} \]%{GREEDYDATA:message}" }
  }
}

output {
  elasticsearch {
    hosts => [ "localhost:9200" ]
    index => "logstash-%{+YYYY.MM.dd}"
  }
}

该配置文件定义了三个部分:输入、过滤和输出。

输入部分使用syslog协议收集数据,监听端口号为”5514″,数据类型为”syslog”。

过滤部分使用Grok插件对日志文本进行提取,将日期时间和消息内容提取出来。

输出部分将数据输出到一个Elasticsearch实例中,存储在名为”logstash-%{+YYYY.MM.dd}”的索引中。

七、Logstash配置文件位置

Logstash配置文件通常存储在”/etc/logstash/conf.d/”目录中,下面的示例展示了如何在Logstash中指定配置文件。

logstash --path.config /etc/logstash/conf.d/

该示例指定Logstash配置文件存储在”/etc/logstash/conf.d/”目录中。

八、Logstash配置ES集群

Elasticsearch是一个强大的搜索和分析引擎,可以作为Logstash数据的终点。下面的示例演示了如何在Logstash中配置Elasticsearch集群。

output {
  elasticsearch {
    hosts => [ "es-host-01.example.com:9200", "es-host-02.example.com:9200", "es-host-03.example.com:9200" ]
    index => "logstash-%{+YYYY.MM.dd}"
  }
}

该示例将输出数据发送到Elasticsearch集群中,由三个不同的节点处理。数据被存储在名为”logstash-%{+YYYY.MM.dd}”的索引中。

九、Logstash Filter

Logstash Filter能够对原始数据进行处理,过滤出所需数据,对数据进行格式化和转换等操作。下面是一个Filter示例:

filter {
  if "syslog" in [tags] {
    grok {
      match => { "message" => "%{SYSLOG5424SD:syslog5424_sd} %{HOSTNAME:hostname} %{SYSLOG5424PROC:syslog5424_proc} %{SYSLOG5424MSG:syslog5424_msg}" }
    }
    date {
      match => [ "syslog5424_sd", "ISO8601" ]
    }
    mutate {
      replace => { "message" => "%{syslog5424_msg}" }
      remove_field => [ "syslog5424_msg", "syslog5424_sd", "syslog5424_proc" ]
    }
  }
}

该Filter通过匹配[tags]字段中包含”syslog”的日志,使用grok插件解析匹配到的日志,使用date插件将日志时间转换为标准时间格式,使用mutate插件进行字段替换和删除。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/256374.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-15 12:40
下一篇 2024-12-15 12:40

相关推荐

  • Linux sync详解

    一、sync概述 sync是Linux中一个非常重要的命令,它可以将文件系统缓存中的内容,强制写入磁盘中。在执行sync之前,所有的文件系统更新将不会立即写入磁盘,而是先缓存在内存…

    编程 2025-04-25
  • 神经网络代码详解

    神经网络作为一种人工智能技术,被广泛应用于语音识别、图像识别、自然语言处理等领域。而神经网络的模型编写,离不开代码。本文将从多个方面详细阐述神经网络模型编写的代码技术。 一、神经网…

    编程 2025-04-25
  • git config user.name的详解

    一、为什么要使用git config user.name? git是一个非常流行的分布式版本控制系统,很多程序员都会用到它。在使用git commit提交代码时,需要记录commi…

    编程 2025-04-25
  • Java BigDecimal 精度详解

    一、基础概念 Java BigDecimal 是一个用于高精度计算的类。普通的 double 或 float 类型只能精确表示有限的数字,而对于需要高精度计算的场景,BigDeci…

    编程 2025-04-25
  • 详解eclipse设置

    一、安装与基础设置 1、下载eclipse并进行安装。 2、打开eclipse,选择对应的工作空间路径。 File -> Switch Workspace -> [选择…

    编程 2025-04-25
  • MPU6050工作原理详解

    一、什么是MPU6050 MPU6050是一种六轴惯性传感器,能够同时测量加速度和角速度。它由三个传感器组成:一个三轴加速度计和一个三轴陀螺仪。这个组合提供了非常精细的姿态解算,其…

    编程 2025-04-25
  • Linux修改文件名命令详解

    在Linux系统中,修改文件名是一个很常见的操作。Linux提供了多种方式来修改文件名,这篇文章将介绍Linux修改文件名的详细操作。 一、mv命令 mv命令是Linux下的常用命…

    编程 2025-04-25
  • Python安装OS库详解

    一、OS简介 OS库是Python标准库的一部分,它提供了跨平台的操作系统功能,使得Python可以进行文件操作、进程管理、环境变量读取等系统级操作。 OS库中包含了大量的文件和目…

    编程 2025-04-25
  • Python输入输出详解

    一、文件读写 Python中文件的读写操作是必不可少的基本技能之一。读写文件分别使用open()函数中的’r’和’w’参数,读取文件…

    编程 2025-04-25
  • nginx与apache应用开发详解

    一、概述 nginx和apache都是常见的web服务器。nginx是一个高性能的反向代理web服务器,将负载均衡和缓存集成在了一起,可以动静分离。apache是一个可扩展的web…

    编程 2025-04-25

发表回复

登录后才能评论