【Elastic Engineering】Beats:解密 Filebeat 中的 setup 命令

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 这个步骤非常重要,但是描述的内容并不是很多。为什么需要这个步骤呢?它到底能够做什么呢?


在我之前的教程:



我已经详述了如果启动 Filebeat 并监督系统日志。在启动 Filebeat 的过程中,有一个很重要的步骤就是:


./filebeat setup


这个步骤非常重要,但是描述的内容并不是很多。为什么需要这个步骤呢?它到底能够做什么呢?


首先,我们在命令的输出中,我们可以看到如下的内容:


$ ./filebeat setup
Overwriting ILM policy is disabled. Set `setup.ilm.overwrite: true` for enabling.
Index setup finished.
Loading dashboards (Kibana must be running and reachable)
Loaded dashboards
Setting up ML using setup --machine-learning is going to be removed in 8.0.0. Please use the ML app instead.
See more: https://www.elastic.co/guide/en/machine-learning/current/index.html
Loaded machine learning job configurations
Loaded Ingest pipelines
liuxg:filebeat-7.9.1-darwin-x86_64 liuxg$ ./filebeat modules enable system
Enabled system


从上面的输出的内容我们可以看出来这个步骤做了如下的几个事情:


1)Index setup finished


在这个步骤中,它将创建一个 index template,并创建好相应的 index pattern。我们可以在 Kibana 中看到如下的一个新的 index pattern 被创建:



也就是说所有的 filebeat 导入的文件将会自动被这个 index pattern 所访问。


同时它也生产一个相应的 Index Life Cycle Management policy:



我们可以点击 actions 来查看这个 policy 的内容。我们甚至可以来修改这个内容。


我们也可以使用如下的命令来查看为 filebeat 而创建的 index template:


GET _template/filebeat-7.9.1


我们从上面可以看出来这个 index template 里有一个 rollover_alias 叫做 filebeat-7.9.1。我们可以通过如下的方式来查看:


GET _alias/filebeat-7.9.1


上面的命令显示:


{
  "filebeat-7.9.1-2020.10.20-000001" : {
    "aliases" : {
      "filebeat-7.9.1" : {
        "is_write_index" : true
      }
    }
  }
}


我们可以通过 filebeat-7.9.1 这个 alias 来访问所有的 filebeat 的文档:


GET filebeat-7.9.1/_search


2)Loaded dashboards


这个表明它帮我们装载所有和 Filebeat 相关的 dasboards:



在执行完 setup 命令后,我们可以在 Dashboards 中发现已经帮我们生产好的 Dashboard 来供我们使用。

 

3)Setting up ML using setup


这个用来设置一下机器学习的配置。机器学习是白金版的功能。我们必须打开30天试用才可以使用:



具体的使用请参考 https://www.elastic.co/guide/en/machine-learning/current/index.html


4)Loaded Ingest pipelines


它表明装载 ingest pipelines。在没有启动任何的模块之前,我们在 Kibana 中也找不到任何东西,但是一旦我们使用如下的方法来启动一个模块:


./filebeat modules enable system


在上面,我们启动了 system 这个模块。那么在我们的 Kibana 中,我们可以看到:



在上面,我们可以看到有两个 ingest pipeline 同时被创建。我们可以点击右边的三个点进行编辑:



我们可以查看当前的这个 ingest pipeline 的定义情况。当然我们也可以直接点击 Test pipeline 来进行测试。我们可以打开自己的电脑系统,并在如下的路径打开文件:


Mac OS:


/var/log/system.log


Ubuntu OS:


/var/log/syslog


我们拷贝其中的一条信息:



并在 Test pipeline 的窗口中进行如下的编辑:



点击 Run the pipeline:



我们可以看到上面的输出。从上面我们可以看出来这个 ingest pipeline 能够正确地分析 system.log/syslog 信息。


我们可以通过如下的方式来获得这个 ingest pipeline 的内容:


GET _ingest/pipeline/filebeat-7.9.1-system-syslog-pipeline

上面的命令显示:

{
  "filebeat-7.9.1-system-syslog-pipeline" : {
    "description" : "Pipeline for parsing Syslog messages.",
    "processors" : [
      {
        "grok" : {
          "field" : "message",
          "patterns" : [
            """%{SYSLOGTIMESTAMP:system.syslog.timestamp} %{SYSLOGHOST:host.hostname} %{DATA:process.name}(?:\[%{POSINT:process.pid:long}\])?: %{GREEDYMULTILINE:system.syslog.message}""",
            "%{SYSLOGTIMESTAMP:system.syslog.timestamp} %{GREEDYMULTILINE:system.syslog.message}",
            """%{TIMESTAMP_ISO8601:system.syslog.timestamp} %{SYSLOGHOST:host.hostname} %{DATA:process.name}(?:\[%{POSINT:process.pid:long}\])?: %{GREEDYMULTILINE:system.syslog.message}"""
          ],
          "pattern_definitions" : {
            "GREEDYMULTILINE" : """(.|
)*"""
          },
          "ignore_missing" : true
        }
      },
      {
        "remove" : {
          "field" : "message"
        }
      },
      {
        "rename" : {
          "field" : "system.syslog.message",
          "target_field" : "message",
          "ignore_missing" : true
        }
      },
      {
        "date" : {
          "if" : "ctx.event.timezone == null",
          "field" : "system.syslog.timestamp",
          "target_field" : "@timestamp",
          "formats" : [
            "MMM  d HH:mm:ss",
            "MMM dd HH:mm:ss",
            "MMM d HH:mm:ss",
            "ISO8601"
          ],
          "on_failure" : [
            {
              "append" : {
                "field" : "error.message",
                "value" : "{{ _ingest.on_failure_message }}"
              }
            }
          ]
        }
      },
      {
        "date" : {
          "field" : "system.syslog.timestamp",
          "target_field" : "@timestamp",
          "formats" : [
            "MMM  d HH:mm:ss",
            "MMM dd HH:mm:ss",
            "MMM d HH:mm:ss",
            "ISO8601"
          ],
          "timezone" : "{{ event.timezone }}",
          "on_failure" : [
            {
              "append" : {
                "field" : "error.message",
                "value" : "{{ _ingest.on_failure_message }}"
              }
            }
          ],
          "if" : "ctx.event.timezone != null"
        }
      },
      {
        "remove" : {
          "field" : "system.syslog.timestamp"
        }
      },
      {
        "set" : {
          "value" : "event",
          "field" : "event.type"
        }
      }
    ],
    "on_failure" : [
      {
        "set" : {
          "field" : "error.message",
          "value" : "{{ _ingest.on_failure_message }}"
        }
      }
    ]
  }
}


同样地,我们也可以通过如下的方式来进行测试这个 ingest pipeline:


POST _ingest/pipeline/filebeat-7.9.1-system-syslog-pipeline/_simulate
{
  "docs": [
    {
      "_source": {
        "message": "Oct 20 00:41:22 liuxg syslogd[122]: Configuration Notice: ASL Module \"com.apple.cdscheduler\" claims selected messages. Those messages may not appear in standard system log files or in the ASL database."
      }
    }
  ]
}


上面的命令显示的结果是:


{
  "docs" : [
    {
      "doc" : {
        "_index" : "_index",
        "_type" : "_doc",
        "_id" : "_id",
        "_source" : {
          "process" : {
            "name" : "syslogd",
            "pid" : 122
          },
          "system" : {
            "syslog" : {
              "timestamp" : "Oct 20 00:41:22"
            }
          },
          "host" : {
            "hostname" : "liuxg"
          },
          "message" : """Configuration Notice: ASL Module "com.apple.cdscheduler" claims selected messages. Those messages may not appear in standard system log files or in the ASL database.""",
          "error" : {
            "message" : ""
          }
        },
        "_ingest" : {
          "timestamp" : "2020-10-20T06:45:00.940665Z"
        }
      }
    }
  ]
}


显然这个 ingest pipeline 能够正确地解析我们的 syslog 内容。


相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
存储 监控 安全
【Elastic Engineering】Logstash:Logstash 入门教程 (二)
这是之前系列文章 “Logstash:Logstash 入门教程 (一)” 的续集。在之前的文章中,我们详细地介绍了 Logstash 是什么?在今天的文章中,我们将详细介绍如果使用 Logstash,并把 Apache Web log 导入到 Elasticsearch 中。
514 0
【Elastic Engineering】Logstash:Logstash 入门教程 (二)
|
消息中间件 存储 数据可视化
【Elastic Engineering】Logstash:Logstash 入门教程 (一)
Logstash 是一个功能强大的工具,可与各种部署集成。 它提供了大量插件,可帮助你解析,丰富,转换和缓冲来自各种来源的数据。 如果你的数据需要 Beats 中没有的其他处理,则需要将 Logstash 添加到部署中。
797 0
【Elastic Engineering】Logstash:Logstash 入门教程 (一)
|
存储 传感器 JSON
【Elastic Engineering】 Kibana:如何开始使用
Kibana 是用于在 Elasticsearch 中可视化数据的强大工具。 这是开始探索你的 Elasticsearch 数据的方法。Kibana 是一种开源分析和可视化工具,可通过基于浏览器的界面轻松搜索,可视化和探索大量数据。 除了 Elasticsearch,Logstash 和 Beats 之外,Kibana 是 Elastic Stack(以前称为 ELK Stack)的核心部分。
492 0
【Elastic Engineering】 Kibana:如何开始使用
|
监控 数据可视化 前端开发
【Elastic Engineering】Kibana:Kibana 入门 (一)
在我之前的文章 “如何开始使用 Kibana”,我对 Kibana 做了一个简单的介绍。从那篇文章中,我们可以对 Kibana 有一个初步的了解
661 0
【Elastic Engineering】Kibana:Kibana 入门 (一)
|
存储 数据可视化 索引
【Elastic Engineering】Kibana:Kibana 入门 (二)
这篇文章是是上一篇文章 “Kibana:Kibana 入门 (一)” 的续篇。在阅读这篇文章之前,请先阅读上面的这篇文章。
261 0
【Elastic Engineering】Kibana:Kibana 入门 (二)
|
数据可视化 定位技术
|
弹性计算 监控 NoSQL
【Elastic Engineering】Beats:Beats 入门教程 (二)
这篇文章是 “Beats 入门教程 (一)”的续篇。在上一篇文章,我们主要讲述了 Beats 的一些理论方面的知识。在这篇文章中,我们将具体展示如何使用 Filebeat 及 Metriceat 把数据导入到我们的 Elasticsearch 并对他们进行分析。
307 0
【Elastic Engineering】Beats:Beats 入门教程 (二)
|
存储 NoSQL 数据可视化
【Elastic Engineering】Beats:Beats 入门教程 (一)
在今天的这个教程里,我们来针对初学者如何快速地了解 Beats 是什么,并如何快速地部署 Beats。如果你想了解更多关于 Beats 方面的知识,可以参阅我的文章。
635 0
【Elastic Engineering】Beats:Beats 入门教程 (一)
|
数据可视化 定位技术 索引
【Elastic Engineering】Kibana:几种创建 filter 的方法
在 实际的 Kibana 使用中,我们经常会使用到 filter。比如,当我们进行威胁捕获时,我们通过 filter 的使用,快速地定位那些异常的服务器,并采取相应的行动。filter 可以很方便地帮我们筛选所需要的数据,更重要的是它很方便地让我们随时编辑,启动或者禁止这个 filter 的使用。过滤器在很多方面与搜索非常相似。
80047 3
【Elastic Engineering】Kibana:几种创建 filter 的方法
|
监控 Ubuntu 安全
【Elastic Engineering】Observability:使用 Elastic Agent 来摄入日志及指标 - Elastic Stack 8.0
如果你已经安装过最近的 Elastic Stack 的话,你可能已经发现 Beats 已经不是推荐的数据摄入方式,取而代之的是 Elastic Agent。
1317 0
【Elastic Engineering】Observability:使用 Elastic Agent 来摄入日志及指标 - Elastic Stack 8.0