入门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.
开始之前
- 有关受支持的操作系统和产品兼容性的信息,请参阅 Elastic Support Matrix
- 确保你的系统满足Logstash和Elasticsearch对JVM最低要求
安装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.name和 node.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模块并开始收集系统数据:
- 从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
- 设置初始环境:
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以查看有关所选主机的详细指标
仪表盘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:
- 新建一个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.
}
}
}
}
- 使用模式匹配路径,然后存储这些路径到一个名为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 => "%{[@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 Guide 和 Logs Monitoring Guide.
随后, 想要在生产环境中配置,参考 Elastic Stack Installation and Upgrade Guide。