zoukankan      html  css  js  c++  java
  • ELK 安装Logstash

    章节


    ELK中,Logstash不是必须安装的。

    Logstash是一个功能强大的工具,提供了大量的插件,用于解析、加工各种来自数据源的数据。如果Beat采集的数据,需要加工处理后才能使用,就需要将集成Logstash。

    要下载安装Logstash,打开一个命令行窗口,执行以下命令:

    Logstash依赖Java 8 或 Java 11,确保已经安装了Java。

    [root@qikegu ~]# java --version
    openjdk 11.0.3 2019-04-16 LTS
    OpenJDK Runtime Environment 18.9 (build 11.0.3+7-LTS)
    OpenJDK 64-Bit Server VM 18.9 (build 11.0.3+7-LTS, mixed mode, sharing)
    

    deb:

    curl -L -O https://artifacts.elastic.co/downloads/logstash/logstash-7.1.0.deb
    sudo dpkg -i logstash-7.1.0.deb
    

    rpm:

    curl -L -O https://artifacts.elastic.co/downloads/logstash/logstash-7.1.0.rpm
    sudo rpm -i logstash-7.1.0.rpm
    

    mac and linux:

    curl -L -O https://artifacts.elastic.co/downloads/logstash/logstash-7.1.0.tar.gz
    tar -xzvf logstash-7.1.0.tar.gz
    

    win:

    1. 从Logstash下载页面下载Logstash 7.1.0 Windows zip文件。
    2. 将zip文件的内容解压到一个目录,例如C:Program Files

    要了解有关安装、配置和运行Logstash的更多信息,请阅读官网文档

    配置Logstash侦听Beats输入

    Logstash提供了输入插件,用于接受数据输入。在本教程中,你将创建一个Logstash管道配置,用于侦听Beat输入,并将接收到的数据发送到Elasticsearch。

    配置Logstash

    创建一个新的Logstash管道配置文件,命名为demo-metrics-pipeline.conf。如果将Logstash安装为deb或rpm包,请在Logstash配置目录(例如:/etc/logstash/conf.d/)中创建文件。

    文件必须包含:

    • 输入配置,设置beat端口为5044
    • 输出配置,配置elasticsearch的相关信息

    示例:

    input {
      beats {
        port => 5044
      }
    }
    
    # The filter part of this file is commented out to indicate that it
    # is optional.
    # filter {
    #
    # }
    
    output {
      elasticsearch {
        hosts => "localhost:9200"
        manage_template => false
        index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
      }
    }
    

    使用此管道配置启动Logstash时,Beat事件都将通过Logstash发往elasticsearch,在Logstash中,可以使用Logstash的强大功能分析加工数据。

    启动 Logstash

    启动Logstash,如果将Logstash安装为deb或rpm包,请确保配置文件位于配置目录中。

    deb:

    sudo /etc/init.d/logstash start
    

    rpm:

    sudo service logstash start
    

    mac and linux:

    ./bin/logstash -f demo-metrics-pipeline.conf
    

    win:

    ./bin/logstash -f demo-metrics-pipeline.conf
    

    Logstash开始监听Beat发送过来的事件。接下来,需要配置Metricbeat,将事件发送到Logstash。

    配置Metricbeat将事件发送到Logstash

    默认情况下,Metricbeat将事件发送到Elasticsearch。

    要将事件发送到Logstash,需修改配置文件metricbeat.yml。可以在Metricbeat安装目录下找到这个文件,或者/etc/metricbeat(rpm和deb)。

    注释掉output.elasticsearch部分,启用output.logstash部分:

    #-------------------------- Elasticsearch output ------------------------------
    #output.elasticsearch:
      # Array of hosts to connect to.
      #hosts: ["localhost:9200"]
    
    ...
    
    #----------------------------- Logstash output --------------------------------
    output.logstash:
      # The Logstash hosts
      hosts: ["localhost:5044"]
    

    保存文件,重新启动Metricbeat,使配置更改生效。

    定义过滤器,从字段中提取数据

    目前,Logstash只是将事件转发给Elasticsearch,没有进行处理。接下来,将学习使用过滤器。

    Metricbeat收集的系统数据,包括一个名为cmdline的字段,该字段包含了进程启动的完整命令行参数。例如:

    "cmdline": "/Applications/Firefox.app/Contents/MacOS/plugin-container.app/Contents/MacOS/plugin-container -childID 3
    -isForBrowser -boolPrefs 36:1|299:0| -stringPrefs 285:38;{b77ae304-9f53-a248-8bd4-a243dbf2cab1}| -schedulerPrefs
    0001,2 -greomni /Applications/Firefox.app/Contents/Resources/omni.ja -appomni
    /Applications/Firefox.app/Contents/Resources/browser/omni.ja -appdir
    /Applications/Firefox.app/Contents/Resources/browser -profile
    /Users/dedemorton/Library/Application Support/Firefox/Profiles/mftvzeod.default-1468353066634
    99468 gecko-crash-server-pipe.99468 org.mozilla.machname.1911848630 tab"
    

    你可能只需要命令的路径,而不是将整个命令行参数发送给Elasticsearch。一种方法是使用Grok过滤器,学习Grok超出了本教程的范围,但是如果想了解更多,请参阅Grok filter插件文档

    要提取路径,在前面创建的Logstash配置文件中,在输入和输出部分之间,添加以下Grok过滤器:

    filter {
      if [system][process] {
        if [system][process][cmdline] {
          grok {
            match => { 
              "[system][process][cmdline]" => "^%{PATH:[system][process][cmdline_path]}"
            }
            remove_field => "[system][process][cmdline]" 
          }
        }
      }
    }
    
    • 使用模式匹配路径,然后将路径存储在名为cmdline_path的字段中。
    • 删除原始字段cmdline,因此在Elasticsearch中不为其建立索引。

    完成后,完整的配置文件应该如下所示:

    input {
      beats {
        port => 5044
      }
    }
    
    filter {
      if [system][process] {
        if [system][process][cmdline] {
          grok {
            match => {
              "[system][process][cmdline]" => "^%{PATH:[system][process][cmdline_path]}"
            }
            remove_field => "[system][process][cmdline]"
          }
        }
      }
    }
    
    output {
      elasticsearch {
        hosts => "localhost:9200"
        manage_template => false
        index => "qikegu-%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
      }
    }
    

    重新启动Logstash,使配置生效。该事件现在包含一个名为cmdline_path的字段,包含命令的路径:

    "cmdline_path": "/Applications/Firefox.app/Contents/MacOS/plugin-container.app/Contents/MacOS/plugin-container"
    
  • 相关阅读:
    普通平衡树(AVL树)
    正态分布与二项分布
    grahql操作
    skywalking定时删除在大并发下引起的性能问题
    Apache SkyWalking SQL注入漏洞复现分析 (CVE-2020-9483)
    skywalking远程调试Apache SkyWalking SQL注入
    sourceTree详细使用教程
    git 分支的相关操作、创建分支、查看分支、切换分支、删除分支
    [Git高级教程 (一)] 通过Tag标签回退版本修复bug
    idea 版本2018.3.6版本的安装
  • 原文地址:https://www.cnblogs.com/jinbuqi/p/11531770.html
Copyright © 2011-2022 走看看