入门Elastic Stack

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

  • Elasticsearch
  • Kibana
  • Beats
  • Logstash(可选)
    之后你就可以学习到如何集成一套系统监测解决方案。用Metricbeat收集服务器指标数据,将数据发送到ElasticSearch,通过Kibana进行搜索和可视化数据。这些基础的步骤完成之后,你还可以添加Logstash进行其他分析。

刚开始你可以将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目录下,这个文件需要包含:
  • 输入阶段 :为Logstash配置监听端口5044来连接Beats
  • 输出阶段:触发Elasticsearch索引事件。同时输出阶段配置Logstash将索引写到Metricbeat

举个例子,

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,826评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,968评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,234评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,562评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,611评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,482评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,271评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,166评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,608评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,814评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,926评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,644评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,249评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,866评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,991评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,063评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,871评论 2 354

推荐阅读更多精彩内容