Logstash——Logstash的基础介绍

关于ELK

ELK指的是Elastic公司下面Elasticsearch、Logstash、Kibana三大开源框架首字母大写简称。
Elasticsearch、Logstash、Kibana三大开源框架首字母大写简称。

ELK的关系

  1. Logstash可以将数据收集起来统一刷入Elasticsearch中
  2. 数据在Elasticsearch中进行分析然后通过kibana进行展示
DATA
Logstash
Elasticsearch
Kibana

Logstash:从各种数据源搜集数据,并对数据进行过滤、分析、丰富、统一格式等操作,然后存储到 ES。

Elasticsearch:对大容量的数据进行接近实时的存储、搜索和分析操作。

Kibana:数据分析和可视化平台。与 Elasticsearch 配合使用,对数据进行搜索、分析和以统计图表的方式展示。

ELK的应用

  1. 异常分析

通过将应用的日志内容通过Logstash输入到Elasticsearch中来实现对程序异常的分析排查

  1. 业务分析

将消息的通讯结果通过Logstash输入到Elasticsearch中来实现对业务效果的整理

  1. 系统分析

将处理内容的延迟作为数据输入到Elasticsearch中来实现对应用性能的调优

Logstash

Logstash 是开源的服务器端数据处理管道,能够同时从多个来源采集数据,转换数据,然后将数据发送到您最喜欢的“存储库”中。

Logstash的基本概念

根据官方文档Logstash对数据的处理主要流程是

进入Logstash管道
出Logstash管道
数据源
inputs
filters
output
Elasticsearch
  1. 首先数据传入logstash,在其内部对数据进行过滤和处理
  2. logstash将处理过的数据传递给Elasticsearch
  3. Elasticsearch对数据进行存储、创建索引等内容
  4. kibana对数据提供可视化的支持

Logstash的核心

Logstash核心分三部分:数据输入、数据处理、数据输出

Logstash这三个部分会在其配置文件中体现出来,这里只介绍支持的功能,具体配置的内容会在后面两篇博客中介绍

其数据输入、处理、输出主要在配置中间中下面部分进行配置

input {}
filter {}
output {}

一个简单的示例

input {
  file {
    path => "/usr/local/log/exception/*"
    start_position => "beginning"
    sincedb_path => "/dev/null"  
    }
}

filter {
    grok {
        match => {"@timestamp" => "%{YEAR:year}-%{MONTHNUM:month}-%{MONTHDAY:day}" }
        add_field => { "current_version" => "%{year}%{month}%{day}"}
    }
}

output {
   elasticsearch {
     hosts => "http://47.99.100.0:9200"
     index => "exception_demo"
     user => exception_user
     password => exception
   }
  stdout {}
}

数据输入

input配置定义了数据的来源。其主要支持下面方式

  • file

监控文件内容输出

  • stdin

监控控制台输入

  • syslogs

从syslogs读取数据

  • beats

从Elastic beats接收数据

  • kafka

从kafka topic中读取数据

数据处理

filter plugin 过滤器插件,主要是对数据进行处理。其支持下面几种处理策略

  • grok

解析文本并构造 。把非结构化日志数据通过正则解析成结构化和可查询化

  • date

日期解析 解析字段中的日期,然后转存到@timestamp

  • mutate

对字段做处理 重命名、删除、替换和修改字段。

  1. covert:类型转换。类型包括:integer,float,integer_eu,float_eu,string和boolean
  2. split:使用分隔符把字符串分割成数组
  3. merge:合并字段 。数组和字符串 ,字符串和字符串
  4. rename:对字段重命名
  5. remove_field:移除字段
  6. join:用分隔符连接数组,如果不是数组则不做处理
  7. gsub:用正则或者字符串替换字段值。仅对字符串有效
  8. update:更新字段。如果字段不存在,则不做处理
  9. replace:更新字段。如果字段不存在,则创建
  • geoip

根据来自Maxmind GeoLite2数据库的数据添加有关IP地址的地理位置的信息

  • ruby

ruby插件可以执行任意Ruby代码

  • urldecode

用于解码被编码的字段,可以解决URL中 中文乱码的问题

  • kv

通过指定分隔符将字符串分割成key/value

  • useragent

添加有关用户代理(如系列,操作系统,版本和设备)的信息

数据输出

output配置定义了数据输出目标

  • stdout

将数据输出到屏幕上

  • file

将数据写入文件

  • kafka

数据发送到kafka

  • elasticseach

数据存储到elasticseach中

Logstash配置支持的运算符

作用 符号
等于 ==
不等于 !=
小于 <
大于 >
小于等于 <=
大于等于 >=
匹配正则 =~
不匹配正则 !~
包含 in
不包含 not in
and
or
非与 nand
非或 xor
复合表达式 ()
取反符合 !()

个人水平有限,上面的内容可能存在没有描述清楚或者错误的地方,假如开发同学发现了,请及时告知,我会第一时间修改相关内容。假如我的这篇内容对你有任何帮助的话,麻烦给我点一个赞。你的点赞就是我前进的动力。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章