Logstash 简介:

Logstash 是一个实时数据收集引擎,可收集各类型数据并对其进行分析,过滤和归纳。按照自己条件分析过滤出符合数据导入到可视化界面。它可以实现多样化的数据源数据全量或增量传输,数据标准格式处理,数据格式化输出等的功能,常用于日志处理。工作流程分为三个阶段:

  (1)input数据输入阶段,可接收oracle、mysql、postgresql、file等多种数据源;
  (2)filter数据标准格式化阶段,可过滤、格式化数据,如格式化时间、字符串等;
  (3)output数据输出阶段,可输出到elasticsearch、mongodb、kfka等接收终端。
  那么,接下来将会对每个阶段进行讲解。

一、官网下载安装

1、下载logstash-6.6.0安装包,下载路径:logstash-6.6.0,然后解压之es的同级目录(方便管理);或直接在服务器上下载:

    wget https://artifacts.elastic.co/downloads/logstash/logstash-6.6.0.tar.gz

2、将安装包上次到服务器,然后解压安装包,例如解压到:/usr/local/

   tar –zxvf logstash-6.6.0.tar.gz

  重命名安装目录

    mv logstash-6.6.0 logstash

二、使用测试

注:此处只是简单测试下Logstash的基本功能

1.接收控制台输入,Logstash解析输出到控制台 
  在Logstash目录下创建test文件夹:

 [root@cdh4 logstash]# mkdir test
[root@cdh4 logstash]# cd test
[root@cdh4 test]# vim std_std.conf

  在test目录下创建 std_std.conf 文件,添加内容:

 input {
stdin{
}
}
output {
stdout{
}
}

  然后到bin目录下启动Logstash(基于std_std.conf):

 ./logstash -f ../test/std_std.conf

  -f 是指基于配置文件的路径:

  控制台输入测试:

2.从文件读取,Logstash解析输出到控制台 
  我是从取出tomcat的当天access_log作为读取文件,没有该文件的可以复制下面一段内容做成测试文件

 [root@cdh4 test]# vim access_log.2018-04-10.log
10.2.17.9 - - [10/Apr/2018:09:06:22 +0800] "GET /static/logshow/css/component.css HTTP/1.1" 304 -
10.2.17.9 - - [10/Apr/2018:09:06:22 +0800] "GET /static/logshow/js/EasePack.min.js HTTP/1.1" 304 -
10.2.17.9 - - [10/Apr/2018:09:06:22 +0800] "GET /static/logshow/js/TweenLite.min.js HTTP/1.1" 304 -
10.2.17.9 - - [10/Apr/2018:09:06:22 +0800] "GET /static/logshow/js/rAF.js HTTP/1.1" 304 -
10.2.17.9 - - [10/Apr/2018:09:06:22 +0800] "GET /static/logshow/js/demo-1.js HTTP/1.1" 304 -
10.2.17.9 - - [10/Apr/2018:09:06:22 +0800] "GET /static/logshow/img/demo-1-bg.jpg HTTP/1.1" 304 -
10.2.17.9 - - [10/Apr/2018:09:06:30 +0800] "GET / HTTP/1.1" 302 -
10.2.17.9 - - [10/Apr/2018:09:06:30 +0800] "GET /login HTTP/1.1" 200 3271
10.2.17.9 - - [10/Apr/2018:09:06:36 +0800] "POST /login HTTP/1.1" 302 -
10.2.17.9 - - [10/Apr/2018:09:06:36 +0800] "GET / HTTP/1.1" 200 11776
10.2.17.9 - - [10/Apr/2018:09:06:36 +0800] "GET /static/css/font-awesome.min.css?v=4.4.0 HTTP/1.1" 304 -

  在test目录下创建 file_std.conf 文件,添加内容:

 input{
file{
path =>"/home/logstash/logstash-5.4.0/test/access_log.2018-04-10.log"
start_position=>"beginning"
}
} filter{
grok{
match=>{
"message"=>"%{DATA:clientIp} - - \[%{HTTPDATE:accessTime}\] \"%{DATA:method} %{DATA:requestPath} %{DATA:httpversion}\" %{DATA:retcode} %{DATA:size} \"%{DATA:fromHtml}\" \"%{DATA:useragent}\""
} remove_field=>"message"
}
date{
match=>["accessTime","dd/MMM/yyyy:HH:mm:ss Z"]
}
} output{
stdout{
codec=>rubydebug
}
}  

这个配置文件相对比较复杂,而且我们一般在使用elk的时候logstash的配置文件基本也是和这个类似,大同小异了,这里对关键部分详细解说一下。更深入的内容和使用方式,大家可以到elastic官网或者到logstash的最佳实战页面去看,网址是:http://udn.yyuap.com/doc/logstash-best-practice-cn/index.html。

input/file/path:这里指定了要对哪个日志文件进行扫描。如果希望扫描多个文件,可以使用*这个路径通配符;或者使用多个日志路径以数组形式提供(path=>[“outer-access.log”,”access.log”]);或者直接给定一个目录,logstash会扫描所有的文件,并监听是否有新文件。

filter/grok/match/message:里面的DATA和HTTPDATE都是grok语法内置的正则表达式,DATA匹配任意字符,HTTPDATE匹配joda类型的日期格式字符。上例中”[“是匹配“[”。

filter/grok/match/date:是对HTTPDATE日期格式的解释,joda可以支持很多复杂的日期格式,需要在这里指明才能正确匹配。

remove_field=>”message”:用处是去掉原有的整个日志字符串,仅保留filter解析后的信息。你可以试着去掉这一句就明白他的用处了。

然后启动就可以直接看到解析输出到控制台的内容了:

 ./logstash -f ../test/file_std.conf

3.接收控制台输入,Logstash解析输出到ElasticSearch集群

在test目录下创建 file_es.conf 文件,添加内容:

 input{
stdin {}
}
output {
elasticsearch {
hosts => ["10.10.10.34:9200"]
index => "yj_index"
}
stdout { codec => rubydebug}
}

然后执行测试:

 ./logstash -f ../test/file_es.conf

可以看到控制台出现了ES-JSON:

再通过head插件查看这些内容有没有存进去:

可以看到,一切OK

Logstash在Linux上安装部署的更多相关文章

  1. Kibana在Linux上安装部署及使用说明

    Kibana安装及使用说明 Kibana是一个针对Elasticsearch的开源分析及可视化平台,用来搜索.查看交互存储在Elasticsearch索引中的数据. 官方地址:https://www. ...

  2. 怎么在linux上安装部署jenkins

    怎么在linux上安装部署jenkins 作为一个非科班出身自学的小白,踩过很多的坑,特此留下记录 以下在虚拟机上示例 系统:linux(centos7) 操作方式:xshell连接终端操作 教程之前 ...

  3. Kafka在Linux上安装部署及样例测试

    Kafka是一个分布式的.可分区的.可复制的消息系统.它提供了普通消息系统的功能,但具有自己独特的设计.这个独特的设计是什么样的呢 介绍 Kafka是一个分布式的.可分区的.可复制的消息系统.它提供了 ...

  4. ElasticSearch在linux上安装部署(转)

    一.安装准备工作安装参考文档: ELK官网:https://www.elastic.co/ ELK官网文档:https://www.elastic.co/guide/index.html ELK中文手 ...

  5. 【mail邮件系统】linux上安装部署sendmail邮件系统

    sendmail是linux系统中一个邮箱系统,在系统中配置好sendmail就可以直接使用它来发送邮箱.sendmail的配置文件 /etc/mail/sendmail.cf :Sendmail的主 ...

  6. linux 上安装部署python

    一般在linux中使用python 需要安装pyenv 进行版本控制 因为linux6.9自带的Python是2.6的 同时很多命令都是基于2.6开发的 所以系统环境不能改 我们要开发 只能用pyen ...

  7. linux上安装配置samba服务器

    linux上安装配置samba服务器 在linux上安装配置samba服务器 在这给大家介绍一个不错的家伙,samba服务.如果您正在犯愁,如何在Windows和Linux之间实现资源共享,就请看看这 ...

  8. Node.js~在linux上的部署~pm2管理工具的使用

    之前写了两篇关于在linux上部署nodejs的文章,大家如果没有基础可以先看前两篇<Node.js~在linux上的部署>,<Node.js~在linux上的部署~外网不能访问no ...

  9. 在linux上安装dotnetcore

    dotnet core已经出来有一段时间了,不是什么新名词了.但这个技术,目前还是比较新的,企业也没有普遍应用.它最大的亮点就是跨平台,也就是我们写的c#代码,可以运行在linux上. 在国内学习do ...

随机推荐

  1. mysql中删除binlog的方法?mysql中如何删除binlog?

    需求描述: 在mysql中如何删除binlog,因为随着数据库的运行,mysql中产生的binlog会越来越大,有可能把磁盘撑爆了,所以记录下删除 binlog的方法. 操作过程: 1.通过系统参数控 ...

  2. Javascript富文本编辑器

    分享几款Javascript富文本编辑器 ueditor jqframework xheditor htmlbox kindeditor wymeditor jhtmlarea markitup ck ...

  3. android中sharedPreferences的用法(转)

    SharedPreferences介绍:   做软件开发应该都知道,很多软件会有配置文件,里面存放这程序运行当中的各个属性值,由于其配置信息并不多,如果采用数据库来存放并不划算,因为数据库连接跟操作等 ...

  4. 05-Vim命令合集

    Vim命令合集 命令历史 以:和/开头的命令都有历史纪录,可以首先键入:或/然后按上下箭头来选择某个历史命令. 启动vim 在命令行窗口中输入以下命令即可 vim 直接启动vim vim filena ...

  5. python爬虫系列:做一个简单的动态代理池

    自动 1.设置动态的user agent import urllib.request as ure import urllib.parse as upa import random from bs4 ...

  6. IOPS性能指标

    如何计算mysql的IOPS? qps 每秒处理的查询数tps 每秒处理的事务数IOPS,每秒磁盘进行的I/O操作次数 今天看到一篇文章说磁盘理论最大IOPS为200左右,我有两个疑问:1.MYSQL ...

  7. 使用dshow捕获摄像头图像

    #include "stdafx.h" #include <DShow.h> #include <Guiddef.h> #include <strmi ...

  8. Ansible Playbook 简介

    我们去远程执行命令时要使用 command 模块,拷贝文件时要使用 copy 模块,如果我们要操作的东西很多,那就要执行很多条不同模块的命令Playbook 是一个 yaml 配置文件,我们可以把不同 ...

  9. 在 Linux 使用 GCC 编译C语言共享库

    对任何程序员来说库都是必不可少的.所谓的库是指已经编译好的供你使用的代码.它们常常提供一些通用功能,例如链表和二叉树可以用来保存任何数据,或者是一个特定的功能例如一个数据库服务器的接口,就像MySQL ...

  10. iOS - 直播总结(理论到实践)

    一.直播原理及流程 1.一个完整直播app原理 直播原理:把主播录制的视频,推送到服务器,在由服务器分发给观众观看. 直播环节:推流端(采集.美颜处理.编码.推流).服务端处理(转码.录制.截图.鉴黄 ...