LogStash的安装部署与应用

介绍

1、Logstash是一个接收,处理,转发日志的工具;
2、Logstash支持网络日志、系统日志、应用日志、apache日志等等,总之可以处理所有日志类型;
3、典型应用场景ELK:logstash负责采集、解析日志,elasticsearch负责数据存储,kibana负责前端报表展示。

下载

https://www.elastic.co/cn/downloads/logstash

安装部署

上传服务器、解压即可使用。

配置

根据需要修改配置文件config/logstash.yml,默认不修改即可运行

  • 节点名称:node.name
  • 日志级别:log.level(默认debug,如果想要看详细日志改为trace)

根据需要调整jvm.options配置文件:

  • -Xms256m
  • -Xmx1g

测试安装是否成功:
快速启动,标准输入输出作为input和output

./bin/logstash -e 'input { stdin {} } output { stdout {} }'

使用

主要组件

  • Input组件:负责采集日志数据,包括文件、syslog、collectd、kafka、redis等等;
  • Filter:负责解析日志数据,包括解析、加工、转换数据等;
  • Output:负责输出日志数据,对接到redis、kafka、elasticsearch、hdfs等存储组件;

常用启动参数

-e   立即执行,使用命令行里的配置参数启动实例 ./bin/logstash -e ‘input {stdin {}} output {stdout {}}'
-f  指定启动实例的配置文件 ./bin/logstash -f config/test.conf
-t  测试配置文件的正确性  ./bin/logstash-f config/test.conf -t
-l  指定日志文件名称    ./bin/logstash-f config/test.conf -l logs/test.log
-w  指定filter线程数量,默认线程数是5 ./bin/logstash-f config/test.conf -w

常用input配置

File

文件读取插件主要用来抓取文件的变化信息,将变化信息封装成Event进程处理或者传递。

inputfile {#监听文件的路径path => ["E:/software/logstash-1.5.4/logstash-1.5.4/data/*","F:/test.txt"]#排除不想监听的文件exclude => "1.log"#添加自定义的字段add_field => {"test"=>"test"}#增加标签tags => "tag1"#设置新事件的标志delimiter => "\n"#设置多长时间扫描目录,发现新文件discover_interval => 15#设置多长时间检测文件是否修改stat_interval => 1#监听文件的起始位置,默认是endstart_position => beginning#监听文件读取信息记录的位置sincedb_path => "E:/software/logstash-1.5.4/logstash-1.5.4/test.txt"#设置多长时间会写入读取的位置信息sincedb_write_interval => 15}
}

kafka

inputkafka {#集群地址bootstrap_servers => ["10.142.134.179:9092"]#消费组idgroup_id => "ete_serv_common"#数组类型,可配置多个topic topics_pattern => ["BO_TOPO_\d{1,}$"]正则匹配topics => ["logq","loge"]#从最早的偏移量开始消费latest从最新的开始消费auto_offset_reset => "earliest"#起多少个input线程数consumer_threads => 5#此属性会将当前topic、offset、group、partition等信息也带到message中decorate_events => true}
}

Beats

Beats插件用于建立监听服务,接收Filebeat或者其他beat发送的Events;

配置示例

input {beats {port => 5044}
}

TCP

TCP插件有两种工作模式,“Client"和"Server”,分别用于发送网络数据和监听网络数据。

配置示例

tcp {port => 41414
}

Redis

input {redis {host => "127.0.0.1"port => 6379data_type => "list"key => "logstash-list"}
}

常用的Filter配置

丰富的过滤器插件的是 logstash威力如此强大的重要因素,过滤器插件主要处理流经当前Logstash的事件信息,可以添加字段、移除字段、转换字段类型,通过正则表达式切分数据等,也可以根据条件判断来进行不同的数据处理方式。

grok 过滤器

grok 是Logstash中将非结构化数据解析成结构化数据以便于查询的最好工具,非常适合解析syslog logs,apache log, mysql log,以及一些其他的web log

Logstash提供120个常用正则表达式可供安装使用,安装之后你可以通过名称调用它们
语法如下:%{SYNTAX:SEMANTIC}

  • SYNTAX:表示已经安装的正则表达式的名称
  • SEMANTIC:表示从Event中匹配到的内容的名称

例如:Event的内容为"[debug] 127.0.0.1 - test log content",匹配%{IP:client}将获得"client: 127.0.0.1"的结果,前提安装了IP表达式;

通过配置grok可以把 [debug] 127.0.0.1 - test log content 这样的非结构化数据转为:
“cllient”:“127.0.0.1”.

一个完整的例子

 日志文件http.log内容:192.168.1.11 GET /index.html 15994 0.053表达式:%{IP:client} %{WORD:method} %{URIPATHPARAM:request} %{NUMBER:bytes} %{NUMBER:duration}配置文件内容:input {file {path => "/var/log/http.log"}
}
filter {grok {match => {"message" => "%{IP:client} %{WORD:method} %{URIPATHPARAM:request} %{NUMBER:bytes} %{NUMBER:duration}"}}
}输出结果:
client: 192.168.1.11
method: GET
request: /index.html
bytes: 15994
duration: 0.053

自定义表达式
与预定义表达式相同,你也可以将自定义的表达式配置到Logstash中,然后就可以像于定义的表达式一样使用;

语法:(?<field_name>the pattern here)举例:捕获10或11和长度的十六进制queue_id可以使用表达式(?<queue_id>[0-9A-F]{10,11})安装自定义表达式1、在Logstash根目录下创建文件夹"patterns",在"patterns"文件夹中创建文件"extra"(文件名称无所谓,可自己选择有意义的文件名称);2、在文件"extra"中添加表达式,格式:patternName regexp,名称与表达式之间用空格隔开即可,如下:# contents of ./patterns/postfix:POSTFIX_QUEUEID [0-9A-F]{10,11}3、使用自定义的表达式时需要指定"patterns_dir"变量,变量内容指向表达式文件所在的目录举例如下:## 日志内容
Jan  1 06:25:43 mailserver14 postfix/cleanup[21403]: BEF25A72965: message-id=20130101142543.5828399CCAF@mailserver14.example.com>## Logstash配置filter {grok {patterns_dir => ["./patterns"]match => { "message" => "%{SYSLOGBASE} %{POSTFIX_QUEUEID:queue_id}: %{GREEDYDATA:syslog_message}" }}}## 运行结果 ##timestamp: Jan 1 06:25:43logsource: mailserver14program: postfix/cleanuppid: 21403queue_id: BEF25A72965-Grok表达式在线debug地址:http://grokdebug.herokuapp.com
-预定义正则表达式参考地址:https://github.com/logstash-plugins/logstash-patterns-core/tree/master/patterns

date 时间处理过滤器

该插件用于时间字段的格式转换,比如将"Apr 17 09:32:01"(MMM dd HH:mm:ss)转换为"MM-dd HH:mm:ss"。
而且通常情况下,Logstash会为自动给Event打上时间戳,但是这个时间戳是Event的处理时间(主要是input接收数据的时间),和日志记录时间会存在偏差(主要原因是buffer),我们可以使用此插件用日志发生时间替换掉默认是时间戳的值。

#日志内容
{"agent":"Windows 7","client_time":"2017-11-20 12:00:00","client_ip":"123.10.91.106"
}# Filter 配置
filter {date {match => ["client_time", "yyyy-MM-dd HH:mm:ss"] #这里是如果client_time跟后面的格式匹配上了就会去替换,替换什么呢?#target默认指的就是@timestamp,所以就是以client_time的时间更新@timestamp的时间}
}

mutate数据修改过滤器

mutate 插件是 Logstash另一个重要插件。它提供了丰富的基础类型数据处理能力。
可以重命名,删除,替换和修改事件中的字段。

  • 重命名 – rename 对于已经存在的字段,重命名其字段名称
filter {mutate {rename => ["syslog_host", "host"]}
}
  • 更新字段内容 – update 更新字段内容,如果字段不存在,不会新建
filter {mutate {update => { "sample" => "My new message" }}
}
  • 替换字段内容 – replace 与 update 功能相同,区别在于如果字段不存在则会新建字段
filter {mutate {replace => { "message" => "%{source_host}: My new message" }}
}
  • 数据类型转换 – convert
filter {mutate {convert => ["request_time", "float"]}
}

JSON过滤器

JSON插件用于解码JSON格式的字符串,一般是一堆日志信息中,部分是JSON格式,部分不是的情况下

配置示例json {source => ...
}## 示例配置,message是JSON格式的字符串:"{\"uid\":3081609001,\"type\":\"signal\"}" ##filter {json {source => "message"target => "jsoncontent"}
}## 输出结果 ##
{"@version": "1","@timestamp": "2014-11-18T08:11:33.000Z","host": "web121.mweibo.tc.sinanode.com","message": "{\"uid\":333333333,\"type\":\"signal\"}","jsoncontent": {"uid": 333333333,"type": "signal"}
}## 如果从示例配置中删除`target`,输出结果如下 ##
{"@version": "1","@timestamp": "2014-11-18T08:11:33.000Z","host": "web121.mweibo.tc.sinanode.com","message": "{\"uid\":333333333,\"type\":\"signal\"}","uid": 333333333,"type": "signal"
}

Output

ElasticSearch输出插件

用于将事件信息写入到Elasticsearch中,官方推荐插件,ELK必备插件

配置事例

output {elasticsearch {hosts => ["127.0.0.1:9200"]index => "filebeat-%{type}-%{+yyyy.MM.dd}"user => "upuptop" password => "upuptop"template => "/dd/c/caaaa.json"template_name => "index_scene_control"template_overwrite => true}
}

File输出插件

用于将Event输出到文件内

配置事例

output {file {path => "/home/upuptop/test.txt "}
}

LogStash的安装部署与应用相关推荐

  1. Docker ElK安装部署使用教程

    Docker ElK安装部署使用教程 原文:Docker ElK安装部署使用教程 一.简介 1.核心组成 ELK由Elasticsearch.Logstash和Kibana三部分组件组成: Elast ...

  2. ELKstack-Elasticsearch各类安装部署方法

    手动安装部署Elasticsearch 开篇 开篇闲话,如果是新人在接触ELKstack什么都不懂的情况下,可以先看看各位前人写的关于ELKstack的博客,如何对ELKstack部署安装及使用,但是 ...

  3. TDSQL 安装部署(多图预警)

    墨墨导读:分布式数据库(Tencent Distributed SQL,TDSQL)是腾讯打造的一款分布式数据库产品,具备强一致高可用.全球部署架构.分布式水平扩展.高性能.企业级安全等特性,同时提供 ...

  4. 使用docker安装部署kibana

    项目场景: 项目场景:使用docker安装部署kibana 前提:已成功部署安装elasticsearch   可参考文章链接: <使用docker安装部署elaticsearch>. 1 ...

  5. 日志系统Loki安装部署

    一.简 介 Loki是受Prometheus启发由Grafana Labs团队开源的水平可扩展,高度可用的多租户日志聚合系统. 开发语言: Google Go.它的设计具有很高的成本效益,并且易于操作 ...

  6. 2021年大数据Flink(三):​​​​​​​Flink安装部署 Local本地模式

    目录 Flink安装部署 Local本地模式 原理 操作 测试 Flink安装部署 Flink支持多种安装模式 - Local-本地单机模式,学习测试时使用 - Standalone-独立集群模式,F ...

  7. Mycat 读写分离 数据库分库分表 中间件 安装部署,及简单使用

    MyCat是一个开源的分布式数据库系统,是一个实现了MySQL协议的服务器,前端用户可以把它看作是一个数据库代理,用MySQL客户端工具和命令行访问,而其后端可以用MySQL原生协议与多个MySQL服 ...

  8. 【SVN】1. SVN 安装部署

    一. SVN概述 1. SVN 简介   Subversion 版本控制系统 简称 SVN.   SVN 是一个跨平台开放源代码的集中式版本控制系统,可以实现文件及目录的保存及版本回溯.   SVN ...

  9. Docker概述和安装部署

    概述 Docker产生的背景 一款产品从开发到上线,从操作系统,到运行环境,再到应用配置.作为开发+运维之间的协作我们需要关心很多东西,这也是很多互联网公司都不得不面对的问题,特别是各种版本的迭代之后 ...

最新文章

  1. 增强迪基-福勒检验(ADF检验、augmented Dickey-Fuller test)是什么?解决了什么问题?
  2. js禁止用户右键等操作
  3. 高焦耳贴片压敏电阻,有哪些?
  4. wxWidgets:wxRichTextFormattingDialog类用法
  5. MySQL5.7.x 安装 Linux7环境
  6. 喜欢去知乎炸鱼?用python吧
  7. 学习笔记25_MVC前台API
  8. 鲲鹏云实验-Python+Jupyter机器学习基础环境
  9. Internet Explorer无法下载
  10. H265/HEVC Codec编解码(MP4和TS)
  11. “开心偷菜”一梦8年终成空,终究还是输给了时间和规则!
  12. Android编程权威指南第三版 第31章
  13. C++面试宝典 知识点集锦
  14. 学习方法之——费曼技巧学习
  15. 支付宝调起支付时显示的商家别名如何修改?
  16. CSS3-弹性盒子模型
  17. RGB24 To Yuv420 C语言 +汇编实现(windows平台)
  18. 阿里云服务器用SMTP的25号端口发送邮件问题
  19. 社区卫生医疗信息平台
  20. SAP 销售订单批量可用性检查(ATP)

热门文章

  1. 【转载】CMake 语法 - 详解 CMakeLists.txt
  2. 数商云家电商城系统解决方案,优化电器商城采购供应链管理,减低库存提升资金利用率
  3. 2021年陕西省安全员C证考试及陕西省安全员C证考试报名
  4. 100坚持行动反思篇---清明节有感
  5. 疾病研究:进行性肌营养不良最新研究进展
  6. php怎么设置除数不能为零,如何用正则表达式表示除数不为0 呢
  7. Ganglia分布式监控部署
  8. 渗透测试国内外研究_反渗透膜重度污染特征及离线清洗,值得收藏
  9. 高端台式计算机配置清单,电脑主机什么配置好,台式电脑最强组装配置清单推荐...
  10. 北京交通大学计算机科学考研,北京交通大学2020计算机专业考研数据分析