赞
踩
Elastic Stack 是用于日志聚合和分析的出色开源堆栈。它代表 Elasticsearch(NoSQL数据库和搜索服务器),Logstash(日志传送和解析服务)和Kibana(将用户与Elasticsearch 数据库连接并为系统操作用户启用可视化和搜索选项的 Web 界面)。随着庞大的开源社区,Elastic Stack 变得非常流行,并且很高兴与之合作。在本文中,我们将指导你完成在 AWS 或 Amazon Web Services 上的 Elastic Stack 的简单安装。
以下说明将引导你完成创建有效的沙箱环境所涉及的步骤。由于生产设置更为全面,我们决定详细说明如何更改每个组件的配置以准备在生产环境中使用。
我们将首先描述环境,然后逐步介绍每个组件的安装方式,最后配置沙箱服务器以将其系统日志发送到 Logstash 并通过 Kibana 进行查看。
我们使用本地存储在 m4.large 实例上的单个 AWS Ubuntu 18.04 实例上运行了本教程。 我们在 VPC 的公共子网中启动了一个 EC2 实例,然后我们设置了安全组(防火墙),以允许使用 SSH 和 TCP 5601(Kibana)从任何地方进行访问。
生产提示:生产安装至少需要三个 EC2 实例-每个组件一个,每个实例都有一个附加的 EBS SSD 卷。
为了完成我们的这个教程,你必须在AWS上注册一个账号,并创建一个 Ubuntu 18.04 的 EC2 实例。为了能够使得我们的 9200 及 5601 口地址被外部进行访问,我们必须通过设置 inbound rules 开放这两个口:
添加两个 Custom TCP 的配置:
这样我们就打开了5601及9200这两个口。
Elasticsearch 是广泛使用的数据库和搜索服务器,它是ELK设置的主要组成部分。
Elasticsearch 的优势包括:
有多种安装 Elasticsearch 的方法,但我们将使用 DEB 软件包。
要开始安装 Elasticsearch,请添加以下存储库密钥:
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
安装 apt-transport-https 软件包:
sudo apt-get install apt-transport-https
将以下 Elasticsearch 列表添加到密钥:
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list
要安装仅包含 Apache 2.0 许可功能的 Elasticsearch 版本,请使用:
echo "deb https://artifacts.elastic.co/packages/oss-7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list
更新你的系统并使用以下命令安装 Elasticsearch:
sudo apt-get update && sudo apt-get install elasticsearch
在以下位置打开 Elasticsearch 配置文件:/etc/elasticsearch/elasticsearch.yml:
sudo vi /etc/elasticsearch/elasticsearch.yml
并应用以下配置:
- network.host: "0.0.0.0"
- http.port: 9200
- cluster.initial_master_nodes: ["<PrivateIP"]
在上面我们把 network.host 设置为“0.0.0.0”,这样可以使得我们的 Elasticsearch 可以绑定到我们机器上所有的网路接口上。详细的描述可以参照文章。另外,如果我们想得到我们的机器的PrivateIP,我们可以使用如下的命令:
ifconfig
启动 Elasticsearch 服务:
sudo service elasticsearch start
如果由于某种原因,我们修改了 elasticsearch.yml 这个配置文件,我们可以使用如下的命令来重新启动我们的服务:
sudo systemctl restart elasticsearch
通过 curl 命令验证安装:
curl http://localhost:9200
如果我看到如下的结果,则表明我们的安装时成功的:
- {
- "name" : "ip-172-31-2-44",
- "cluster_name" : "elasticsearch",
- "cluster_uuid" : "rQ9x67KPTs2D_75b1A1LZQ",
- "version" : {
- "number" : "7.6.0",
- "build_flavor" : "default",
- "build_type" : "deb",
- "build_hash" : "7f634e9f44834fbc12724506cc1da681b0c3b1e3",
- "build_date" : "2020-02-06T00:09:00.449973Z",
- "build_snapshot" : false,
- "lucene_version" : "8.4.0",
- "minimum_wire_compatibility_version" : "6.8.0",
- "minimum_index_compatibility_version" : "6.0.0-beta1"
- },
- "tagline" : "You Know, for Search"
- }

我么也可以在我们的浏览器的地址栏中输入我们的地址:
要使服务在机器启动时启动,可以打入如下的命令:
sudo update-rc.d elasticsearch defaults 95 10
生产提示:请勿向世界开放任何其他端口,例如 9200! 有许多机器人会搜索 9200 并执行常规脚本来取代计算机。 不要将 Elasticsearch 绑定到公共 IP。
Logstash 是一个开源工具,可以收集,解析和存储日志以备将来使用,并可以进行快速日志分析。 Logstash 可用于聚合来自多个来源(如 Docker 实例集群)的日志,并将其从文本行解析为 JSON 之类的结构化格式。 在 Elastic Stack 中,Logstash 使 Elasticsearch 来存储和索引日志。
Logstash 需要安装 Java 8 或 Java 11:
sudo apt-get install default-jre
验证是否已安装 Java:
java -version
如果上一个命令的输出与下面的相似,那么你将知道自己朝着正确的方向前进:
- openjdk version "11.0.6" 2020-01-14
- OpenJDK Runtime Environment (build 11.0.6+10-post-Ubuntu-1ubuntu118.04.1)
- OpenJDK 64-Bit Server VM (build 11.0.6+10-post-Ubuntu-1ubuntu118.04.1, mixed mode, sharing)
使用以下命令安装 Logstash:
sudo apt-get install logstash
我们首先使用如下的命令来下载一个测试的文件:
wget https://github.com/liu-xiao-guo/logstash_multi-pipeline/blob/master/apache-daily-access.log
如果我们在我们的 home 里运行上面的命令,我们可以发现有一个叫做 apache-daily-access.log 的文件。
创建一个 Logstash 配置文件:
sudo vi/etc/logstash/conf.d/apache-01.conf
输入以下配置:
- input {
- file {
- path => "/home/ubuntu/apache-daily-access.log"
- start_position => "beginning"
- sincedb_path => "/dev/null"
- }
- }
-
- filter {
- grok {
- match => { "message" => "%{COMBINEDAPACHELOG}" }
- }
- date {
- match => [ "timestamp" , "dd/MMM/yyyy:HH:mm:ss Z" ]
- }
- geoip {
- source => "clientip"
- }
- }
-
- output {
- elasticsearch {
- hosts => ["localhost:9200"]
- }
- }

该文件告诉 Logstash 收集本地 /home/ubuntu/apache-daily-access.log 文件,并将其发送到 Elasticsearch 进行索引。
输入部分指定要收集的文件(路径)以及期望的格式。 过滤器部分告诉 Logstash 如何使用 grok,date 和 geoip 过滤器处理数据。 输出部分定义 Logstash 将数据运送到的位置–在这种情况下,是本地 Elasticsearch。
在此示例中,我们使用 localhost 作为 Elasticsearch 主机名。 但是,在实际生产设置中,Elasticsearch 主机名会有所不同,因为 Logstash 和 Elasticsearch 应该托管在不同的计算机上。
最后,启动 Logstash 以读取配置:
sudo service logstash start
为了确保数据被索引,请使用:
sudo curl -XGET 'localhost:9200/_cat/indices?v&pretty'
你应该看到创建了新的 Logstash 索引
- sudo curl -XGET 'localhost:9200/_cat/indices?v&pretty'
- health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
- green open .kibana_task_manager_1 X5tnbl34QsyMyOvpDUM7lQ 1 0 2 1 29.7kb 29.7kb
- green open .apm-agent-configuration pNnvaxiHQomiPCuYIoEP7Q 1 0 0 0 283b 283b
- green open ilm-history-1-000001 hWfdS8rvRDyc38zcva0KJg 1 0 6 0 15.6kb 15.6kb
- yellow open logstash-2020.02.20-000001 qbIz0PcKT7yC1NL7uQot9g 1 1 957 0 162.9kb 162.9kb
- green open .kibana_1 JUlEHYinSLCbfONHxarrZw 1 0 6 0 22.6kb 22.6kb
在上面,我们可以看到 logstash-2020.02.20-000001 的索引。
在实际的使用中,我们可能使用 beats 来收集数据并导入到 Logstash 之中,那么在这种情况下,我们需要打开额外的口地址来把数据导入到 Logstash 中。
Kibana 是 Elasticsearch 的开源数据可视化插件。 它在 Elasticsearch 集群上索引的内容之上提供可视化功能。 用户可以创建条形图,折线图和散点图。 饼状图; 并在大量数据之上进行映射。
除其他用途外,Kibana 使使用日志变得超级轻松甚至有趣,其图形化 Web 界面使初学者可以执行功能强大的日志搜索。
要安装 Kibana,请使用以下命令:
sudo apt-get install kibana
打开 Kibana 配置文件并输入以下配置:
- server.port: 5601
- server.host: "0.0.0.0"
- elasticsearch.hosts: ["http://localhost:9200"]
启动 Kibana:
sudo service kibana start
如果由于某种原因,我们修改上面的 kibana.yml 文件,我们可以使用如下的命令来重新启动 Kibana:
sudo systemctl restart kibana
测试:我们在我们的浏览器地址栏中打入如下链接:
如果你看到上面的输出,那么表明我们的 Kibana 的安装是成功的。
Kibana 的下一步是定义 Elasticsearch 索引模式。
“index pattern” 是什么意思,为什么我们必须对其进行配置? Logstash 每天都会创建一个新的 Elasticsearch索引(数据库)。 索引的名称如下所示:logstash-YYYY.MM.DD- 例如,我们上面在2019年4月16日创建的索引的 “logstash-2020.02.20-000001”。
Kibana 在这些 Elasticsearch 索引之上工作,因此它需要知道你要使用哪个索引。 转到 Management-> Kibana -> Index pattern。 Kibana 会自动识别 Logstash 索引,因此你要做的就是使用 'logstash-* 对其进行定义:
在下一步中,我们将选择 @timestamp 时间戳字段,然后单击 “Create index pattern” 按钮以在 Kibana 中定义模式。
生产提示:在本教程中,我们将直接通过其端口 5601 上的应用程序服务器访问 Kibana,但是在生产环境中,你可能希望在其前面放置一个反向代理服务器(如 Nginx)。
要查看你的日志,请转到 Kibana 中的 Discover 页面:
如你所见,创建日志传送,存储和查看的整个管道并不是一项艰巨的任务。 过去,存储和分析日志是一种不可思议的技术,需要处理庞大的非结构化文本文件。 但是未来看起来更加光明和简单。
如果你想对 Elastic 有一个更加深入的了解,你可以参阅我之前的文章:
对我们的安装进行加固,设置安全,请参阅文章 “Elasticsearch:设置 Elastic 账户安全”
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。