Logstash 的命令行入门 ( 附上相关实验步骤 )

时间:2021-05-23 17:14:34   收藏:0   阅读:17

Logstash 的命令行入门 ( 附上相关实验步骤 )


在之前的博客中,我们已经在 Macbook Big Sur 环境下安装了 ELK 的相关软件,并且已经可以成功运行对应的模块;

如果没有安装的同学,或者对于安装有困惑的朋友请点击下边的链接,仅限于 Mac OS 环境的安装指南,后期可能会补上在 Linux 下的安装步骤:

https://www.cnblogs.com/doherasyang/p/14629555.html

目前,我在 ELK方向 的主要的精力都在学习 Elasticsearch 的相关特性 以及 与 Kibana 的配合进行数据展示,但是 尝试写了一下 Elasticsearch 的相关博客内容,我真的觉得很难写,因为只是知识点,对于实际操作部分的内容撰写比较花时间,我也是在逐步摸索中,难以形成体系的内容,因此我决定先将这部分的内容放下,先集中精力 撰写 ELK 的数据处理部分 - Logstash


1. 数据准备

数据是你干啥都非常重要的事情,没有数据基本上做啥都没有用,并且数据的相关格式内容必须要贴近你自己的需求,对于我个人来说,对于 ELK 的需求有两个方面:

总之,使用 ELK 的技术 是为了应对大数据环境做好日常的运维日志处理、审计工作的重要一环,也是未来数据中心IDC运维工程师技术发展的重要方向,因此我认为学习的重要性也是非常大的;‘

从这么长时间的学习上来看,我认为 ELK 具备未来技术的相关特性,简单来说有以下几个方面:

说了这么多,我非常推荐你使用ELK技术栈来解决你在工作、或者个人兴趣开发上遇到的任何问题,因此我也会尽心来准备 和 编写关于这方面的内容的博客内容,如果有什么问题或者错误,请您发送问题和内容到: doherasyanng@gamil.com


1.1 开源数据库推荐

「后续将会继续补充我遇到的比较好的数据源」

当然,我也会后续自己上传自己制作的相关数据集,有兴趣的朋友可以关注一下这部分的内容;


1.2 本文中用到的数据集

@copyright Security Repo - auth.log - approx 86k lines, and mostly failed SSH login attempts

内容:


1.3 摘取部分日志内容 - auth.log

Dec  1 08:31:33 ip-172-31-27-153 sshd[24839]: Received disconnect from 67.205.20.23: 11: Bye Bye [preauth]
Dec  1 08:31:34 ip-172-31-27-153 sshd[24841]: Invalid user git from 67.205.20.23
Dec  1 08:31:34 ip-172-31-27-153 sshd[24841]: input_userauth_request: invalid user git [preauth]
Dec  1 08:31:34 ip-172-31-27-153 sshd[24841]: Received disconnect from 67.205.20.23: 11: Bye Bye [preauth]
Dec  1 08:31:35 ip-172-31-27-153 sshd[24843]: Received disconnect from 67.205.20.23: 11: Bye Bye [preauth]
Dec  1 08:31:35 ip-172-31-27-153 sshd[24845]: Received disconnect from 67.205.20.23: 11: Bye Bye [preauth]


2. Logstash 的命令行配置讲解

从之前的内容我们已经可以正常在 MacOS 环境下使用 Logstash 命令,从而启动 Logstash 服务为我们处理相关的数据流,本章的内容结构如下:


2.1 Logstash 服务

Logstash 是可以作为服务被托管在你的Linux系统上,详细如何了解怎么被托管,你可以参考 Elastic 的官方文档,在这里不做更加详细的介绍:https://www.elastic.co/guide/en/logstash/current/running-logstash.html

但是,需要了解 Logstash 是怎么工作的,下边的图片简单的揭示了 Logstash 的整体运作原理:

技术分享图片

Logstash 被分成了三种部分:

在不同部分中,Logstash 使用 pipeline 进行数据在不同插件(模块)的传递和处理, 你可以在 Logstash 的配置文件中,配置 pipeline 的相关参数,接下来的内容会讲到 pipeline 的参数配置;

其实对于 Elasticsearch 来说, Logstash 整体就是一个 pipeline 为 Elasticsearch 提供数据;


2.2 Logstash 命令的参数配置

在前边中,我们已经知道了 Logstash 是通过命令行或者自己配置服务进行启动的,那么通过命令行启动就一定要涉及到参数的配置问题,Logstash 支持指定参数配置文件从而运行相关服务;

你可以通过 --help 命令来打印 Logstash 的所有的参数信息配置,非常非常的长和复杂,在这里挑几个重要的说一下:


简单的做一个简单的例子,首先创建一个实验的目录,我创建的实验目录如下:

DoHeras-Macbook-Pro ~/Desktop/Elastic/demo $pwd
/Users/doheras/Desktop/Elastic/demo

目前当前目录下所有的文件:

DoHeras-Macbook-Pro ~/Desktop/Elastic/demo $ls
auth.log	demo.config
# auth.log 就是之前下载的关于 SSHD 和 CRON 服务的相关日志信息
# demo.config 是你需要去创建的一个 Logstash 的配置文件

demo.config 的内容如下:

input {
    file {
        # 必须是绝对路径
        path => "/Users/doheras/Desktop/Elastic/demo/auth.log"
        start_position => "beginning"
        type => "syslog"
        # 需要指定特定的文件
        sincedb_path => "/Users/doheras/Desktop/Elastic/demo/.storedb"
    }
}

filter {

    grok {
        # 第一步我们需要来提取日期这个非常关键的日志信息-下边的正则表达式可以
        match => {
            "message" => "^(?<Date_Time>\w+\s\d+\s\d+:\d+:\d+)"
        }
    }    
}

output {
      stdout {
        codec => rubydebug {
            
        }
    }
}

上边文件的相关内容会在下一篇: Logstash 的配置文件内容详解 中讲到,这里不做介绍;


运行下边的命令:

DoHeras-Macbook-Pro ~/Desktop/Elastic/demo $sudo logstash -f ./demo.config -l ./logstash.log --log.format json --pipeline.batch.size 200 --pipeline.workers 5  --log.level debug --config.debug

上边的命令:

如果正常你的屏幕就可以打印相关的日志信息了,如下所示:

技术分享图片

在配置文件中创建了 .storedb 来存放当前日志文件读取的日志文件的位置,当你的控制台没有任何输出时,需要删除这个文件:

DoHeras-Macbook-Pro ~/Desktop/Elastic/demo $ls -a
.		..		.DS_Store	.storedb	auth.log	demo.config	logstash.log
DoHeras-Macbook-Pro ~/Desktop/Elastic/demo $rm -rf ./.storedb

我们还可以发现,Logstash 为我们创建了一个文件夹: logstash.log

该文件夹下边有三个文件:

原文:https://www.cnblogs.com/doherasyang/p/14801259.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!