Elastic Search

入门Elastic Stack

2020-04-15  本文已影响0人  Vekaco

正在找Elastic Stack(ELK)指南,那本介绍如何搭建Elastic Stack和快速启动运行的宝典?那你就找对地方了!首先,请安装以下核心产品:

刚开始你可以将Elastic Stack安装到单独的虚拟机或者你的笔记本电脑上。

⚠️ 在Elastic Stack设置中集成安全组件是非常重要的。为了快速启动和运行样例,现在暂时略去此步骤。但项目中在网络上发送敏感数据前,请确保已经加密 secure the Elastic Stack启用 encrypted communications.

开始之前
安装Elasticsearch

Elasticsearch是一款实时,分布式存储,搜索和分析引擎。用途广泛,但最重要的一个特点是索引半结构化的数据,比如日志或者解码的网络数据包。

ℹ️你可以在自己的硬件上运行Elasticsearch,或者ElasticCloud运行 hosted Elasticsearch Service。这项服务在AWS和GCP上都有。免费试用Elasticsearch Service.

下载安装Elasticsearch,打开终端并运行命令(deb for Debian/Ubuntu, rpm for Redhat/Centos/Fedora, mac or brew for OS X, linux for Linux, and win for Windows):
deb:
Version 7.8.0 of Elasticsearch has not yet been released.
rpm:
Version 7.8.0 of Elasticsearch has not yet been released.
mac:
Version 7.8.0 of Elasticsearch has not yet been released.
brew:
Version 7.8.0 of Elasticsearch has not yet been released.
linux:
Version 7.8.0 of Elasticsearch has not yet been released.
win:
Version 7.8.0 of Elasticsearch has not yet been released.
其他操作系统, 请访问 Elasticsearch download 页面.

ℹ️默认的 cluster.namenode.name分别是elasticsearch和你的主机名。如果你打算继续使用这个集群或者添加更多的节点,那么最好把这些参数改成唯一的名称。详细关于这些修改和其他在elasticsearch.yml中的参数,参考Configuring Elasticsearch.

更多关于Elasticsearch安装、配置和运行的细节,请参阅Elasticsearch Reference

确保Elasticsearch启动运行

测试Elasticsearch守护进程启动并运行,发送HTTP的GET请求到端口9200。

curl http://127.0.0.1:9200

Windows上,如果你没有安装cURL,那就直接在浏览器打开http://127.0.0.1:9200
如果运行正常,那么你可以看到如下的返回信息:

{
  "name" : "QtI5dUu",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "DMXhqzzjTGqEtDlkaMOzlA",
  "version" : {
    "number" : "7.8.0",
    "build_flavor" : "default",
    "build_type" : "tar",
    "build_hash" : "00d8bc1",
    "build_date" : "2018-06-06T16:48:02.249996Z",
    "build_snapshot" : false,
    "lucene_version" : "7.3.1",
    "minimum_wire_compatibility_version" : "5.6.0",
    "minimum_index_compatibility_version" : "5.0.0"
  },
  "tagline" : "You Know, for Search"
}
安装Kibana

Kibana是用域数据分析和可视化的Elasticsearch最佳搭档。通过Ki 办啊可以与Elasticsearch索引进行交互,查询,查看。你可以在Kibana使用高级的数据分析、数据可是化,它支持多种图、表、地图等。

ℹ️如果您在Elastic Cloud托管Elasticsearch,那么只需轻轻一点开关就可以启用Kibana

我建议你在与Elasticsearch同一台服务器上安装Kibana,但倒也不是必须这么做。如果你将产品安装在不同的服务器上,那么就需要启动之前在Kibana配置文件kibana.yml上修改Elasticsearch服务器的地址(IP:PORT).

可以通过终端下载Kibana安装包,国内可以使用huawei镜像下载:
deb, rpm, or linux:
Version 7.8.0 of Kibana has not yet been released.
mac:
Version 7.8.0 of Kibana has not yet been released.
brew:
Version 7.8.0 of Kibana has not yet been released.
win:
Version 7.8.0 of Kibana has not yet been released.

其他操作系统, 访问Kibana download页面.

关于安装、配置、运行Kibana的相关细节,参阅Kibana Reference

访问Kibana页面控制台

访问Kibana页面控制台,在浏览器中打开http://127.0.0.1:5601

安装Beats

Beats是您作为代理安装在服务器上的开源数据发送者,用于将运营数据发送到Elasticsearch。 Beats可以将数据直接发送到Elasticsearch或通过Logstash发送,您可以在其中进一步处理和增强数据。

每个Beat是单独安装的产品。在本指南中,您将学习如何在启用system模块以收集系统指标的情况下安装和运行Metricbeat。

要了解有关安装和配置其他Beats的更多信息,请参阅《入门指南》文档.

Elastic Beats To capture
Auditbeat Audit data
Filebeat Log files
Functionbeat Cloud data
Heartbeat Availability monitoring
Journalbeat Systemd journals
Metricbeat Metrics
Packetbeat Network traffic
Winlogbeat Windows event logs
安装Metricbeat

下载安装Metricbeat,打开终端运行你的系统支持的命令:
deb:
Version 7.8.0 of Metricbeat has not yet been released.
rpm:
Version 7.8.0 of Metricbeat has not yet been released.
mac:
Version 7.8.0 of Metricbeat has not yet been released.
brew:
Version 7.8.0 of Metricbeat has not yet been released.
linux:
Version 7.8.0 of Metricbeat has not yet been released.
win:
Version 7.8.0 of Metricbeat has not yet been released.

其他系统,前往Beats download 页面。

将系统数据发送到Elasticsearch

Metricbeat提供了预构建的模块,可用于在约5分钟内快速实现和部署系统监视解决方案,并带有示例仪表板和数据可视化。

这一节中,您将学到如何运行system模块从操作系统和服务器上运行的服务中收集数据。system模块收集操作系统级别的数据,比如CPU用量,内存,文件系统,磁盘IO和网络IO统计量,同时系统上运行的每个进程的顶级统计数据。

开始之前:检查Elasticsearch和Kibana已经正常运行并且能够接收来自Metricbeat的数据。

设置system模块并开始收集系统数据:

  1. 从Metricbeat安装目录中启动system模块:

deb and rpm:

sudo metricbeat modules enable system

mac and linux:

./metricbeat modules enable system

brew:

metricbeat modules enable system

win:

PS C:\Program Files\Metricbeat> .\metricbeat.exe modules enable system
  1. 设置初始环境:

deb and rpm:

sudo metricbeat setup -e

mac and linux:

./metricbeat setup -e

brew:

metricbeat setup -e

win:

PS C:\Program Files\Metricbeat> metricbeat.exe setup -e

setup命令将加载Kibana仪表板。如果已经设置了仪表板,请忽略此命令。 -e标志是可选的,并将输出发送到标准错误而不是syslog

启动Metricbeat:

deb and rpm:

sudo service metricbeat start

mac and linux:

./metricbeat -e

brew:

metricbeat -e

win:

PS C:\Program Files\Metricbeat> Start-Service metricbeat

Metricbeat运行并开始将系统指标发送到Elasticsearch。

Kibana可视化系统数据

打开浏览器,访问Metricbeat系统仪表盘

ℹ️如果你在Kibana中看不到数据,试着把数据范围扩大。默认,Kibana只展示最近15分钟之内的数据;如果有错误,请确保metricbeat正常运行,并刷新页面。

单击Host Overview以查看有关所选主机的详细指标

仪表盘1
仪表盘2

现在您已经知道如何为Elastic Stack设置最简单的架构-一个或多个Beats将事件数据直接发送到运行在同一服务器上的Elasticsearch实例-让我们添加Logstash。

安装Logstash(可选)

Logstash是一个可以与多种部署交互的强大的工具。它提供大陆昂可选插件来帮你从各种数据源解析、扩展、转换、缓存数据。如果你的数据要求其他Beats里无法处理的需求,你可以在部署中添加Logstash。

下载安装Logstash,打开你的系统终端,用系统支持的命令:
deb:
Version 7.8.0 of Logstash has not yet been released.
rpm:
Version 7.8.0 of Logstash has not yet been released.
mac and linux:
Version 7.8.0 of Logstash has not yet been released.
brew:
Version 7.8.0 of Logstash has not yet been released.
win:
Version 7.8.0 of Logstash has not yet been released.

其他系统,参阅 Logstash download

更多关于安装、配置、运行Logstash,参阅Logstash Reference

配置Logstash监听Beats的输入

Logstash提供输入插件可以从不同的输入源获取数据。在本指南中,你将创建一个Logstash管道配置监听Beats作为输入源,并将接收到的事件作为输出发送给Elasticssearch。

配置Logstash:

  1. 新建一个Logstash管道,命名配置文件为demo-metricss-pipeline.conf。如果你是通过deb或者rpm包安装的Logstash,将这个文件创建在Logstash的config目录下,这个文件需要包含:

举个例子,

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时,Beats的事件通过Logstash路由,通过Logstash我们有完全的控制权限来收集、扩展、转换和传输数据。

启动Logstash

使用系统支持的命令行。如果你通过deb或者rpm包安装Logstash,确保配置文件在config目录下。其他平台,config目录不是必须的,但是最好能保持一致。
deb:

sudo /etc/init.d/logstash start

rpm:

sudo service logstash start

mac and linux:

cd logstash-7.8.0
./bin/logstash -f path/to/config/demo-metrics-pipeline.conf

brew:

logstash -f path/to/config/demo-metrics-pipeline.conf

win:

bin\logstash.bat -f path\to\config\demo-metrics-pipeline.conf

ℹ️如果出现JVM错误信息,请确保java 版本是跟 Installing Logstash
中匹配的。

Logstash开始监听来自Beats的事件作为输入。接下来你需要配置Metricbeat来发送事件到Logstash。

配置Metricbeat发送事件到Logstash

Metricbeat默认发送事件到Elasticsearch。发送事件到Logstash,修改Metricbeat配置文件metricbeat.yml。你可以在Metricbeat安装目录下找到这份文件。rpm和deb在/etc/metricbeat,brew在/usr/local/etc/metricbeat.

注释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从Beats中读取数据然后往Elasticsearch发送索引事件。到目前位置,你还没有定义过滤器,所以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 plugin文档中学习更多有关内容。

抓取路径,可以在Logstash配置的输入输出配置之间添加下面Grok过滤器:

filter {
  if [system][process] {
    if [system][process][cmdline] {
      grok{
          match => { 1.
            "[system][process][cmdline]" => "^%{PATH:[system][process][cmdline_path]}"
}
        remove_field => "[system][process][cmdline]" 2.
}
}
}
}
  1. 使用模式匹配路径,然后存储这些路径到一个名为cmdline_path的域中
  2. 移除最初的域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 => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
  }
}

重启Logstash来更新配置。现在事件引入了一个名为cmdline_path的域:

"cmdline_path": "/Applications/Firefox.app/Contents/MacOS/plugin-container.app/Contents/MacOS/plugin-container"
接下来是什么?

恭喜!你已经成功的配置好了Elastic Stack。你学到了如何将系统数据导入Elasticsearch,在Kibana中可视化数据。你要学习了如何使用Logstash过滤Metricbeat收集的数据。

接下来,你想要在Elastic Stack设置安全性,激活你的试用许可,这样你可以激活Elastic Stack的所有功能。如何学习?

否想通过指标监视和集中式日志分析快速启动并运行?在Kibana中试用Metrics应用程序和Logs应用程序。更多细节,参见Metrics Monitoring GuideLogs Monitoring Guide.
随后, 想要在生产环境中配置,参考 Elastic Stack Installation and Upgrade Guide

上一篇下一篇

猜你喜欢

热点阅读