(一)logstash和beats的简单介绍

一、logstash的一些名词介绍

Pipeline

  • input-filter-output 的 3个阶段的处理流程。
  • 队列管理。
  • 插件生命周期管理。

Logstash Event

  • 他是logstash内部流转的数据的表现形式。
  • 原始数据在input 阶段被转换成 Event,在 output阶段 event 被转换成目标格式数据。
  • 在配置文件中可以对 Event 中的属性进行增删改查。

架构图如下:

在这里插入图片描述

二、queue

1、分类(2类)

In Memory:无法处理进程 crash、机器宕机等情况,会导致数据丢失

Persistent Queue In Disk

  • 可处理进程crash 等情况,保证数据不会丢失
  • 保证数据至少消费一次
  • 充当缓冲区,可以替代kafka等消息队列的作用

2、Persistent Queue

在这里插入图片描述
流程如下:

  • 1->input将data传给persistent queue
  • 2->persistent queue 将data 存储一份到 disk
  • 3,4->disk告诉input已经接收到信息(此处目的是input可以随时调整,避免数据进出过于不平衡的情况)
  • 5->persistent queue将data传给output
  • 6->output传送ack 信息给 persistent queue
  • 7->persistent queue将信息传送给disk,如果正常,此时disk就可以删除data 了

基本配置:

  • queue.type: persisted(默认是memory)
  • queue.max_bytes: 4gb(队列存储最大的数据量,默认是1gb)

三、启动参数

注:Visual VM 工具可以查看jvm情况。

  • pipeline.workers:pipeline线程数,即 filter_output 的处理线程数,默认是cpu核数(启动时 -w即可指定)
  • pipeline.batch.size:batcher 一次批量获取的待处理文档数,默认是125,可以根据输出进行调整,越大会 占用越多的heap 空间,可以通过 jvm.options 调整(启动时 -b即可指定)
  • pipeline.batch.delay:batcher 等待的时长,单位是 ms(启动时 -u即可指定)
  • config.string:指定pipeline 内容(启动时 -e即可指定,指定conf配置文件的位置)
  • –path.data:持久化村塾数据的文件夹,默认是logstash根目录下的data(persistent queue才用到)
  • –debug:日志等级
  • –config.test_and_exit:顾名思义,检测conf文件内容是否正确并退出(启动时 -t 即可指定)

四、pipeline的配置(conf文件的配置)

在配置中引用logstash event 的属性(字段),主要有2中方式:直接引用字段值和在字符串中以sprintf方式应用

  • 直接引用字段值:使用[] 即可,嵌套字段写多层 [] (中括号)即可。
  • 字符串中引用字段值(sprintf):使用%{} 来实现。

五、常见问题

1、查看已安装插件

bin/logstash-plugin list --verbose

2、logstash 输入 elasticsearch 时间的处理
Elasticsearch原生支持date类型,json格式通过字符来表示date类型。所以在用json提交日期至elasticsearch的时候,es会隐式转换,把es认为是date类型的字符串直接转为date类型。
date类型是包含时区信息的,如果我们没有在json代表日期的字符串中显式指定时区,对es来说没什么问题,但是如果通过kibana显示es里的数据时,就会出现问题,数据的时间会晚8个小时。因为kibana从es里读取的date类型数据,没有时区信息,kibana会默认当作0时区来解析,但是kibana在通过浏览器展示的时候,会通过js获取当前客户端机器所在的时区,也就是东八区,所以kibana会把从es得到的日期数据减去8小时。这里就会导致kibana经常遇到的“数据时间延迟8小时”的问题。
所以最佳实践方案就是:我们在往es提交日期数据的时候,直接提交带有时区信息的日期字符串,如:“2016-07-15T12:58:17.136+0800”。
索引中定义的日期格式与提交数据的日期格式要一致,否则会报错。
格式化时间有2种方法:
(1)存入 elasticsearch 前,将数据格式化好

创建索引是指定date format示例:
PUT my_index
{
  "mappings": {
    "_doc": {
      "properties": {
        "date": {
          "type":   "date",
          "format": "yyyy-MM-dd"
        }
      }
    }
  }
}

(2)使用 elasticsearch-sql 查询时调用 date_format(date, param)函数
使用 elasticsearch-sql 查询时调用 date_format(date, param)函数。
此方法只针对一对一的date类型,对于 nested(一对多)的内部的date 类型无效(无法格式化)

六、filebeat之module

filebeat 提供了众多开箱即用的 module。

./filebeat modules list 查看 module列表

./filebeat modules enable nginx 启用 nginx module

配置位于 module 文件夹中。

七、metricbeat介绍

1、module

metricbeat 收集指标的对象,比如linux、windows、mysql 等

2、metricset

  • metricbeat 收集指标的集合,该集合以减少收集指标调用次数为划分依据。
  • 1个module 可以有多个 metricset
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好!关于Logstash的配置,我可以为您提供一些基本的指导。 Logstash是一个开源的数据收集引擎,用于处理和传输各种类型的日志、事件和其他数据。它具有灵活的配置选项,可以根据您的需求进行定制。 首先,您需要创建一个配置文件,通常命名为logstash.conf。该配置文件定义了数据的输入、过滤和输出。 以下是一个简单Logstash配置示例: ``` input { # 输入插件配置 } filter { # 过滤插件配置 } output { # 输出插件配置 } ``` 在input块中,您可以指定从哪里获取数据。Logstash支持多种输入插件,例如file(从文件读取)、stdin(从标准输入读取)、beats(接收Beats协议数据)等。 在filter块中,您可以定义对数据进行的任何处理。这包括解析、转换、添加字段、删除字段等。Logstash提供了丰富的过滤插件来满足各种需求。 在output块中,您可以指定要将处理后的数据发送到哪里。Logstash支持多种输出插件,例如elasticsearch(发送到Elasticsearch)、stdout(输出到标准输出)、file(输出到文件)等。 根据您的具体需求,您可以添加和配置适当的插件来满足您的要求。配置文件中的每个块都可以包含多个插件,您可以根据需要进行组合。 请注意,这只是一个简单的配置示例,您可能需要根据自己的实际情况进行调整。您可以查阅Logstash的官方文档以获取更详细的配置信息和插件列表。 希望这能帮助到您!如果您有任何其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值