Elastic:使用 docker 来安装 Elastic Stack 8.0-alpha2

Posted 中国社区官方博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Elastic:使用 docker 来安装 Elastic Stack 8.0-alpha2相关的知识,希望对你有一定的参考价值。

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,但始终建议使用:

docker volume create elasticsearch

现在是时候使用 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 the 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",
  "cluster_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 部署完毕后,我们点击上面的 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的主要内容,如果未能解决你的问题,请参考以下文章

Elastic:运用 Docker 安装 Elastic Stack 并采集日志文件

Elasticsearch:使用 Docker 来安装 FSCrawler 并摄入 Word 及 PDF 文件

Elasticsearch:使用 RPM 安装包来安装 Elastic Stack 8.x

运用 Elastic Stack 收集 docker 容器日志

Elasticsearch:保护你的 Elasticsearch 实例 - 如何使用带有内置证书的 Docker 镜像

Elasticsearch:保护你的 Elasticsearch 实例 - 如何使用带有内置证书的 Docker 镜像