Elastic:使用 docker 来安装 Elastic Stack 8.0-alpha2
2021年9月28日 | by mebius
Elastic Stack 8.0.0-alpha2 刚刚发布,这是一个快速(非官方)的启动和运行指南。 更多功能、文档和公告即将发布,但冒险者已经开始:在几分钟内启动并运行 Docker 上的 Elasticsearch、Kibana 和 Agent。
请注意:
- 这是一个 alpha 发布版。 仅将其用于测试,不要指望最终能够升级到 8.0.0 版本最终版本。
- 期待将会有一些这样或者那样的 bug。 这就是我们再次运行 Elastic Pioneer Program 的原因,以便我们可以解决尽可能多的问题。
- 这是保持简单的最小示例,例如跳过 TLS 证书(尽管这可能会改变)。 请不要将其用作生产环境。
在今天的文章中,我将详细地介绍如何安装 Elastic Stack 8.0-alpha2 版本。
Elasticsearch
在启动并运行 Elasticsearch 之前,需要进行一些 Docker 内务管理。 创建一个将运行 Elastic Stack 的 elastic 网络:
docker network create elastic
$ docker network create elastic
aa69e8e43dcb4cc683cd96d0b674d963493e85a19e5a36c70c024c870b213d71
创建一个将装载 Elasticsearch 数据的 elasticsearch volume。 严格来说,不需要使用 volume,但始终建议使用:
现在是时候使用 elasticsearch volume 和 elastic 网络启动单个(discovery.type=single-node)Elasticsearch 节点,同时还将其暴露给(本地)主机的默认端口 9200。 –name 将派上用场,特别是当堆栈中的其他组件要引用它时。 当未设置 TLS 时,需要启用 xpack.security.authc.api_key.enabled — 用于创建下面的 agent 的 API 密钥:
docker run --name elasticsearch
--publish 127.0.0.1:9200:9200 --net elastic
--env discovery.type=single-node
--env xpack.security.authc.api_key.enabled=true
--volume='elasticsearch:/usr/share/elasticsearch/data'
docker.elastic.co/elasticsearch/elasticsearch:8.0.0-alpha2
在Elasticsearch 启动的过程中,有大量的日志信息会显示在 terminal 里,但请注意与此类似的块:
-----------------------------------------------------------------
Password for tgcodethe elastic user is: DbYlkm3zhuqpfRJ05O8Y
Password for the kibana_system user is: r-CHNwBMkh2IRV0Zb-oo
Please note these down as they will not be shown again.
You can use 'bin/elasticsearch-reset-elastic-password' at any time
in order to reset the password for the elastic user.
You can use 'bin/elasticsearch-reset-kibana-system-password' at any time
in order to reset the password for the kibana_system user.
-----------------------------------------------------------------
在上面,它显示了访问 Elasticsearch 的超级用户 elastic 的密码:DbYlkm3zhuqpfRJ05O8Y 以及访问 Kibana 的密码:r-CHNwBMkh2IRV0Zb-oo。我们需要记下这两个密码,以备下面的访问使用。
等到 Elasticsearch 完全启动后,尝试使用 cURL 连接到它,这将提示你输入 elastic 用户的密码——包括这里的响应:
curl curl -u elastic http://localhost:9200/
$ curl curl -u elastic http://localhost:9200/
Enter host password for user 'elastic':
curl: (6) Could not resolve host: curl
{
"name" : "8c98430f326d",
"tgcodecluster_name" : "docker-cluster",
"cluster_uuid" : "RUTkpLUHRVSGSZjX1NYGMg",
"version" : {
"number" : "8.0.0-alpha2",
"build_flavor" : "default",
"build_type" : "docker",
"build_hash" : "c4aef6f1a6b450952de62640948d2501c85eecec",
"build_date" : "2021-09-11T00:50:06.655031460Z",
"build_snapshot" : false,
"lucene_version" : "8.9.0",
"minimum_wire_compatibility_version" : "7.16.0",
"minimum_index_compatibility_version" : "7.0.0"
},
"tagline" : "You Know, for Search"
}
当然,我们也可以使用浏览器来访问这个地址:http://localhost:9200/。从上面的结果中,我们可以看出来,Elasticsearch 以及完好地运行着。
Kibana
接下来,我们来安装 Kibana。你需要在此处设置 kibana_system 用户的自动生成密码,然后就可以了:
docker run --name kibana
--publish 127.0.0.1:5601:5601 --net elastic
--env ELASTICSEARCH_USERNAME=kibana_system
--env ELASTICSEARCH_PASSWORD='r-CHNwBMkh2IRV0Zb-oo'
docker.elastic.co/kibana/kibana:8.0.0-alpha2
等 Kbana 完全运行起来后,我们可以在本地的浏览器中启动地址http://localhost:5601/。我们使用 elastic 用户及在上一步创建的 Elasticseach 密码DbYlkm3zhuqpfRJ05O8Y 来进行登录:
从上面,我们可以看出来 Kibana 已经成功运行起来了。
到目前为止,我们的 Elasticsearch 及 Kibana 都已经运行起来了。接下来,我们想向 Elasticsearch 添加一些数据。我们可以上使用 Elastic Agent 来摄入数据。
Elastic Agent
虽然有多种方法可以将数据导入 Elastic Stack,但 Elastic Agent 和 Fleet 是最新且有趣的方法之一。 只需几个步骤即可获得完全由 UI 驱动的数据收集管道。UI 驱动非常适合生产。我们可以择天进行详述。对于今天的快速演示,这是一个很好的入门方式。
我们首先配置 Kibana 中的 fleet。前往 Kibana 中的 fleet 页面:
当我们第一次打开这个页面是 ,它需要一些时间来运行一些东西进行配置。请大家稍作等候:
最终,我们可以看到如上所示的 step 1, 2, 3。如果你不是想按照 docker 的方式来部署 fleet 的话,那么你可以阅读我之前的文章 “Observability:运用 Fleet 来轻松地导入 Nginx 日志及指标”。在接下来的安装中,我们将使用 docker 来部署 Elastic Agent。在这里,我们将跳过 step 1, 2, 3。而直接跳到 step 4:
我们在一下的步骤中将会通过 docker 来安装 agent 服务器。它也同时将安装 fleet server。我们按照上面的步骤生产相应的 token:
我们按照如下的步骤来通过 docker 安装 fleet server:
docker run --name agent
--net elastic
--env FLEET_SERVER_ENABLE=true
--env FLEET_SERVER_ELASTICSEARCH_HOST=http://elasticsearch:9200
--env FLEET_SERVER_SERVICE_TOKEN='AAEAAWVsYXN0aWMvZmxlZXQtc2VydmVyL3Rva2VuLTE2MzI4MTkwNTc1MTg6MzhqdDl3Ti1SLUdyd1ByR3dwS0xlQQ'
--user=root
--volume='/var/run/docker.sock:/var/run/docker.sock:ro'
docker.elastic.co/beats/elastic-agent:8.0.0-alpha2
现在我们可以启动 Agent 容器,它也将是 Fleet 服务器 (FLEET_SERVER_ENABLE=true)。 你需要在此处使用您自己的 FLEET_SERVER_SERVICE_TOKEN。–user 和 –volume 配置仅在进一步向下的步骤之一中对 Docker 指标收集是必需的。没有它们,agent 本身也能正常运行。
等 agent 部署完毕后,我们tgcode点击上面的 Continue 按钮:
我们可以看到在 Fleet 页面看到一个状态为 Healthy 的 agent。它目前使用的是 Default Fleet Server Policy。
我点击上面的 Host ID:
如上所示,我们可以看到这个 agent 的一些信息。我们点击 Log:
我们看不到任何的日志。这是为什么呢? 这说明我们的配置还是有些地方是不对的。原来我们还需要去设置一下 fleet server:
点击上面的 Fleet settings:
我们需要作如上的配置。点击 Save and apply settings:
再次回到 Logs。我们可以看到如下的画面:
我们可以看到很多的 Logs。
接下来。我们想为我们的 policy 添加一些新的 integration,比如我们想得到 docker container 的一些指标。我们点击如下的这个 Default Fleet Server policy:
如上所示,我们可以看到 Fleet Server 已经被成功安装了。
我们接下来点击 Add integration 来添加一些我们想要的 integration。
我们选择 Docker:
选择 Add Docker:
这样就完成了对 Docker integration 的添加:
我们接着点击 Data streams。我们可以看到不同的 data streams:
我们点击上面的 View dashboard:
我们可以看到 Fleet server container 的所有 meterics。
我们也可以到 Dashboard 中搜索 docker 的 dashboard:
我们可以看到当前的所有 container 的列表以及它们的指标。
文章来源于互联网:Elastic:使用 docker 来安装 Elastic Stack 8.0-alpha2
相关推荐: 使用 Elasticsearch 时间点读取器获得随时间推移而保持一致的数据视图
总结一下:如果可行,我们推荐您使用 Elasticsearch 的全新时间点功能。对于深度分页,我们不再推荐使用滚动 API(虽然它仍然有效)。 大多数数据都不断变化。在 Elasticsearch 中查询索引,实际上是在一个给定的时间点搜索数据。由于索引不断…