Elastic:使用 Docker 安装 Elastic Stack 8.x 并开始使用

这篇具有很好参考价值的文章主要介绍了Elastic:使用 Docker 安装 Elastic Stack 8.x 并开始使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Elastic Stack 8.0 终于于最近发布了。在我之前的文章 “Elastic Stack 8.0 安装 - 保护你的 Elastic Stack 现在比以往任何时候都简单” 我已经详细地描述了如何在本地部署 Elasticsearch 及 Kibana。设置 Elasticsearch 的最简单方法是使用 Elastic Cloud 上的 Elasticsearch Service 创建托管部署。 如果你更喜欢管理自己的测试环境,可以使用 Docker 安装和运行 Elasticsearch。在今天的演示中,我将使用 Docker 来安装 Elastic Stack 8.0,并对它的使用进行展示。

使用 Docker 安装 Elastic Stack 8.x 并开始使用

运行 Elasticsearch

我们需要在自己的电脑上安装好 Docker Desktop。接着我们运行如下的命令:

docker network create elastic
docker pull docker.elastic.co/elasticsearch/elasticsearch:8.3.3
docker run --name es-node01 --net elastic -p 9200:9200 -p 9300:9300 -it docker.elastic.co/elasticsearch/elasticsearch:8.3.3

docker安装elastic,Elastic,Kibana,Elasticsearch,elasticsearch,docker,容器,kibana

 当我们第一次启动 Elasticsearch 时,以下安全配置会自动发生:

  • 为传输层和 HTTP 层生成证书和密钥。
  • 传输层安全 (TLS) 配置设置写入 elasticsearch.yml。
  • 为弹性用户生成密码。
  • 为 Kibana 生成一个注册令牌。
--------------------------------------------------------------------------------
-> Elasticsearch security features have been automatically configured!
-> Authentication is enabled and cluster connections are encrypted.

->  Password for the elastic user (reset with `bin/elasticsearch-reset-password -u elastic`):
  21=0VbI9nz+kjR69l1WT

->  HTTP CA certificate SHA-256 fingerprint:
  05661cff7bef5f59ae84442e25d9f1821662f82ed958b1b1da6147950943ecc3

->  Configure Kibana to use this cluster:
* Run Kibana and click the configuration link in the terminal when Kibana starts.
* Copy the following enrollment token and paste it into Kibana in your browser (valid for the next 30 minutes):
  eyJ2ZXIiOiI4LjAuMCIsImFkciI6WyIxNzIuMjQuMC4yOjkyMDAiXSwiZmdyIjoiMDU2NjFjZmY3YmVmNWY1OWFlODQ0NDJlMjVkOWYxODIxNjYyZjgyZWQ5NThiMWIxZGE2MTQ3OTUwOTQzZWNjMyIsImtleSI6Ilc5TWktMzRCTVZaSFJZRHZXc3piOmk5b1RXWkdFUV95VVoxeUFtU0N0bFEifQ==

-> Configure other nodes to join this cluster:
* Copy the following enrollment token and start new Elasticsearch nodes with `bin/elasticsearch --enrollment-token <token>` (valid for the next 30 minutes):
  eyJ2ZXIiOiI4LjAuMCIsImFkciI6WyIxNzIuMjQuMC4yOjkyMDAiXSwiZmdyIjoiMDU2NjFjZmY3YmVmNWY1OWFlODQ0NDJlMjVkOWYxODIxNjYyZjgyZWQ5NThiMWIxZGE2MTQ3OTUwOTQzZWNjMyIsImtleSI6IlhkTWktMzRCTVZaSFJZRHZXc3pvOnRoQWxhcmxYU3Myb0ZHX2g5czA1Z1EifQ==

  If you're running in Docker, copy the enrollment token and run:
  `docker run -e "ENROLLMENT_TOKEN=<token>" docker.elastic.co/elasticsearch/elasticsearch:8.0.0`
--------------------------------------------------------------------------------

你可能需要向上翻滚才能在 terminal 中看到 password 及 enrollment token(注册令牌)。

复制生成的密码和注册令牌并将其保存在安全位置。 这些值仅在你第一次启动 Elasticsearch 时显示。 你将使用这些将 Kibana 注册到你的 Elasticsearch 集群并登录。

注意:如果需要重置 elastic 用户或其他内置用户的密码,请运行 elasticsearch-reset-password 工具。 要为 Kibana 或 Elasticsearch 节点生成新的注册令牌,请运行 elasticsearch-create-enrollment-token 工具。 这些工具在 Elasticsearch bin 目录中可以找到。

如果我们需要访问 Elasticsearch,请参阅我之前的文章 “Elastic Stack 8.0 安装 - 保护你的 Elastic Stack 现在比以往任何时候都简单”。

如果你想修改超级用户的密码,你可以通过如下的命令来进行修改:

docker exec -it es-node01 /usr/share/elasticsearch/bin/elasticsearch-rest-password -u elastic

请注意上面的 es-node01 是上面的 docker 的名称。

安装及运行 Kibana

要使用直观的 UI 分析、可视化和管理 Elasticsearch 数据,请安装 Kibana。

在新的终端会话中,运行:

docker pull docker.elastic.co/kibana/kibana:8.3.3
docker run --name kib-01 --net elastic -p 5601:5601 docker.elastic.co/kibana/kibana:8.3.3

请注意在上面,我们使用了 --net 来定义 network。请使用和上面在 Elasticsearch 安装中一样的 network。

当我们上面的命令成功运行后,我们可以看到如下的输出:

docker安装elastic,Elastic,Kibana,Elasticsearch,elasticsearch,docker,容器,kibana

在上面,它让我到地址 http://0.0.0.0:5601/?code=915472 去配置 Kibana。在浏览器中打开上面的地址:

docker安装elastic,Elastic,Kibana,Elasticsearch,elasticsearch,docker,容器,kibana

我们把在 Elasticsearch 启动时的 Kibana enrollment token 拷贝进上面的输入框,并点击 Configure Elastic:

docker安装elastic,Elastic,Kibana,Elasticsearch,elasticsearch,docker,容器,kibana

等配置完毕后,我们把之前生成的 elastic 超级用户的密码输入进如下的登录页面:

docker安装elastic,Elastic,Kibana,Elasticsearch,elasticsearch,docker,容器,kibana

点击 Log in,这样我们就进行入到 Kibana 的界面:

docker安装elastic,Elastic,Kibana,Elasticsearch,elasticsearch,docker,容器,kibana

在上面,默认的情况是添加 integrations。这个是用来摄入数据到 Elasticsearch 中的。在今天的展示中,我就先不进行展示了。我们点击 Explore on my own:

docker安装elastic,Elastic,Kibana,Elasticsearch,elasticsearch,docker,容器,kibana

这样我们就成功地进入到 Kibana 界面了。

至此,我们已经成功地通过 docker 启动了 Elasticsearch 及 Kibana。我们可以通过如下的命令来进行查看:

docker ps
$ docker ps
CONTAINER ID   IMAGE                                                 COMMAND                  CREATED          STATUS          PORTS                                            NAMES
7ad78365a6a4   docker.elastic.co/kibana/kibana:8.0.0                 "/bin/tini -- /usr/l…"   13 minutes ago   Up 13 minutes   0.0.0.0:5601->5601/tcp                           kib-01
438986615af6   docker.elastic.co/elasticsearch/elasticsearch:8.0.0   "/bin/tini -- /usr/l…"   24 minutes ago   Up 24 minutes   0.0.0.0:9200->9200/tcp, 0.0.0.0:9300->9300/tcp   es-node01

我们可以看到名叫  kib-01 及 es-node01 的两个容器已经在成功运行。

如果你想了解如何使用 docker-compose 来一键启动 Elastic Stack 8.x, 请阅读另外一篇文章 “Elasticsearch:使用 Docker compose 来一键部署 Elastic Stack 8.x”。

发送请求到 Elasticsearch 

你使用 REST API 向 Elasticsearch 发送数据和其他请求。 这使你可以使用任何发送 HTTP 请求的客户端(例如 curl)与 Elasticsearch 交互。 你还可以使用 Kibana 的控制台向 Elasticsearch 发送请求。

docker安装elastic,Elastic,Kibana,Elasticsearch,elasticsearch,docker,容器,kibana

docker安装elastic,Elastic,Kibana,Elasticsearch,elasticsearch,docker,容器,kibana

比如,我们可以尝试如下的命令来查看请求的结果:

docker安装elastic,Elastic,Kibana,Elasticsearch,elasticsearch,docker,容器,kibana

也许很多开发者想知道如何使用 curl 来得到请求的数据。我们不能像之前的这种方法来获取数据:

curl -X GET http://localhost:9200/

这其中的原因是 Elasticsearch 由于启动了 https 连接,我们必须使用证书来访问 Elasticsearch。Elasticsearch 的访问地址为 https://localhost:9200,而不是 http://localhost:9200。那么我们该如何获取这个证书呢?

我们可以通过如下的命令来获取 Elasticsearch 容器的名称:

docker ps

docker安装elastic,Elastic,Kibana,Elasticsearch,elasticsearch,docker,容器,kibana

我们可以通过如下的命令来登录容器:

docker exec -it es-node01 /bin/bash

我们可以通过如下的方式来找到 Elasticsearch 在启动时生成的证书位置:

docker安装elastic,Elastic,Kibana,Elasticsearch,elasticsearch,docker,容器,kibana

在上面,我们可以看到 Elasticsearch 所生成的证书。这个证书的名称叫做 http_ca.crt。我们可以通过如下的方式来把这个证书拷贝出来:

docker cp es-node01:/usr/share/elasticsearch/config/certs/http_ca.crt .
$ pwd
/Users/liuxg/data/elastic8
$ docker cp es-node01:/usr/share/elasticsearch/config/certs/http_ca.crt . 
$ ls
http_ca.crt

有了这个证书,我们可以使用如下的命令通过 curl 来访问 Elasticsearch:

curl -X GET --cacert ./http_ca.crt -u elastic:21=0VbI9nz+kjR69l1WT https://localhost:9200/

在上面的命令中,请记住需要替换上面的 -u 中的用户名及密码。另外注意的是我们访问的地址是 https://localhost:9200/ 而不是以前的 http://localhost:9200。

上面的命令执行的结果为:

$ curl -X GET --cacert ./http_ca.crt -u elastic:21=0VbI9nz+kjR69l1WT https://localhost:9200/
{
  "name" : "438986615af6",
  "cluster_name" : "docker-cluster",
  "cluster_uuid" : "STCnb4M6SMmvzEmFf6bwmw",
  "version" : {
    "number" : "8.0.0",
    "build_flavor" : "default",
    "build_type" : "docker",
    "build_hash" : "1b6a7ece17463df5ff54a3e1302d825889aa1161",
    "build_date" : "2022-02-03T16:47:57.507843096Z",
    "build_snapshot" : false,
    "lucene_version" : "9.0.0",
    "minimum_wire_compatibility_version" : "7.17.0",
    "minimum_index_compatibility_version" : "7.0.0"
  },
  "tagline" : "You Know, for Search"
}

添加数据

你将数据作为称为文档的 JSON 对象添加到 Elasticsearch。 Elasticsearch 将这些文档存储在可搜索的索引中。

对于时间序列数据,例如日志和指标,你通常将文档添加到由多个自动生成的支持索引组成的数据流中。

数据流需要与其名称匹配的索引模板。 Elasticsearch 使用这个模板来配置流的后备索引。 发送到数据流的文档必须具有 @timestamp 字段。

添加单个文档

提交以下索引请求以将单个日志条目添加到 logs-my_app-default 数据流。 由于 logs-my_app-default 不存在,请求会使用内置的 logs-*-* 索引模板自动创建它。

POST logs-my_app-default/_doc
{
  "@timestamp": "2099-05-06T16:21:15.000Z",
  "event": {
    "original": "192.0.2.42 - - [06/May/2099:16:21:15 +0000] \"GET /images/bg.jpg HTTP/1.0\" 200 24736"
  }
}

响应包括 Elasticsearch 为文档生成的元数据:

  • 包含文档的支持 _index。 Elasticsearch 会自动生成支持索引的名称。
  • 索引中文档的唯一 _id。

docker安装elastic,Elastic,Kibana,Elasticsearch,elasticsearch,docker,容器,kibana

添加多个文档

使用 _bulk 端点在一个请求中添加多个文档。 批量数据必须是换行符分隔的 JSON (NDJSON)。 每行必须以换行符 (\n) 结尾,包括最后一行。

PUT logs-my_app-default/_bulk
{ "create": { } }
{ "@timestamp": "2099-05-07T16:24:32.000Z", "event": { "original": "192.0.2.242 - - [07/May/2020:16:24:32 -0500] \"GET /images/hm_nbg.jpg HTTP/1.0\" 304 0" } }
{ "create": { } }
{ "@timestamp": "2099-05-08T16:25:42.000Z", "event": { "original": "192.0.2.255 - - [08/May/2099:16:25:42 +0000] \"GET /favicon.ico HTTP/1.0\" 200 3638" } }

如果这个时候我们使用如下的命令来查看当前的索引:

GET _cat/indices

我们会发现:

yellow open .ds-logs-my_app-default-2022.02.15-000001 a4I6Rzj_S6yPC0Dww6OzTg 1 1 3 0 8.3kb 8.3kb

我们可以看到没有我们之前的那种我们想要的 logs-my_app-default 索引名,这是因为我们的索引名匹配内置的索引模板 logs-*-*:

docker安装elastic,Elastic,Kibana,Elasticsearch,elasticsearch,docker,容器,kibana

有关索引模板的内容,请参阅我之前的另外一篇文章 “Elastic:Data stream 在索引生命周期管理中的应用”。 有关 data stream 的命令请阅读文章 “Elastic data stream 命名方案介绍”

搜索数据

索引文档可用于近乎实时的搜索。 以下搜索匹配 logs-my_app-default 中的所有日志条目,并按 @timestamp 降序对它们进行排序。

GET logs-my_app-default/_search
{
  "query": {
    "match_all": { }
  },
  "sort": [
    {
      "@timestamp": "desc"
    }
  ]
}

默认情况下,响应的 hits 部分最多包含与搜索匹配的前 10 个文档。 每个命中的 _source 包含索引期间提交的原始 JSON 对象。

{
  "took" : 2,
  "timed_out" : false,
  "_shards" : {
    "total" : 1,
    "successful" : 1,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : {
      "value" : 3,
      "relation" : "eq"
    },
    "max_score" : null,
    "hits" : [
      {
        "_index" : ".ds-logs-my_app-default-2022.02.15-000001",
        "_id" : "ctNa-34BMVZHRYDvfszg",
        "_score" : null,
        "_source" : {
          "@timestamp" : "2099-05-08T16:25:42.000Z",
          "event" : {
            "original" : """192.0.2.255 - - [08/May/2099:16:25:42 +0000] "GET /favicon.ico HTTP/1.0" 200 3638"""
          }
        },
        "sort" : [
          4081940742000
        ]
      },
      {
        "_index" : ".ds-logs-my_app-default-2022.02.15-000001",
        "_id" : "cdNa-34BMVZHRYDvfszg",
        "_score" : null,
        "_source" : {
          "@timestamp" : "2099-05-07T16:24:32.000Z",
          "event" : {
            "original" : """192.0.2.242 - - [07/May/2020:16:24:32 -0500] "GET /images/hm_nbg.jpg HTTP/1.0" 304 0"""
          }
        },
        "sort" : [
          4081854272000
        ]
      },
      {
        "_index" : ".ds-logs-my_app-default-2022.02.15-000001",
        "_id" : "bdNY-34BMVZHRYDv98zk",
        "_score" : null,
        "_source" : {
          "@timestamp" : "2099-05-06T16:21:15.000Z",
          "event" : {
            "original" : """192.0.2.42 - - [06/May/2099:16:21:15 +0000] "GET /images/bg.jpg HTTP/1.0" 200 24736"""
          }
        },
        "sort" : [
          4081767675000
        ]
      }
    ]
  }
}

获得特定的字段

对于大型文档,解析整个 _source 很麻烦。 要将其从响应中排除,请将 _source 参数设置为 false。 相反,请使用 fields 参数来检索你想要的字段。

GET logs-my_app-default/_search
{
  "query": {
    "match_all": { }
  },
  "fields": [
    "@timestamp"
  ],
  "_source": false,
  "sort": [
    {
      "@timestamp": "desc"
    }
  ]
}

响应包含每个命中的字段值作为数组。

{
  "took" : 4,
  "timed_out" : false,
  "_shards" : {
    "total" : 1,
    "successful" : 1,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : {
      "value" : 3,
      "relation" : "eq"
    },
    "max_score" : null,
    "hits" : [
      {
        "_index" : ".ds-logs-my_app-default-2022.02.15-000001",
        "_id" : "ctNa-34BMVZHRYDvfszg",
        "_score" : null,
        "fields" : {
          "@timestamp" : [
            "2099-05-08T16:25:42.000Z"
          ]
        },
        "sort" : [
          4081940742000
        ]
      },
  ...

搜索 date range

要在特定时间或 IP 范围内进行搜索,请使用范围查询。

GET logs-my_app-default/_search
{
  "query": {
    "range": {
      "@timestamp": {
        "gte": "2099-05-05",
        "lt": "2099-05-08"
      }
    }
  },
  "fields": [
    "@timestamp"
  ],
  "_source": false,
  "sort": [
    {
      "@timestamp": "desc"
    }
  ]
}

上面的命令执行的结果为:

{
  "took" : 2,
  "timed_out" : false,
  "_shards" : {
    "total" : 1,
    "successful" : 1,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : {
      "value" : 2,
      "relation" : "eq"
    },
    "max_score" : null,
    "hits" : [
      {
        "_index" : ".ds-logs-my_app-default-2022.02.15-000001",
        "_id" : "cdNa-34BMVZHRYDvfszg",
        "_score" : null,
        "fields" : {
          "@timestamp" : [
            "2099-05-07T16:24:32.000Z"
          ]
        },
        "sort" : [
          4081854272000
        ]
      },
      {
        "_index" : ".ds-logs-my_app-default-2022.02.15-000001",
        "_id" : "bdNY-34BMVZHRYDv98zk",
        "_score" : null,
        "fields" : {
          "@timestamp" : [
            "2099-05-06T16:21:15.000Z"
          ]
        },
        "sort" : [
          4081767675000
        ]
      }
    ]
  }
}

你可以使用日期数学来定义相对时间范围。 以下查询搜索过去一天的数据,这些数据不会匹配 logs-my_app-default 中的任何日志条目。

GET logs-my_app-default/_search
{
  "query": {
    "range": {
      "@timestamp": {
        "gte": "now-1d/d",
        "lt": "now/d"
      }
    }
  },
  "fields": [
    "@timestamp"
  ],
  "_source": false,
  "sort": [
    {
      "@timestamp": "desc"
    }
  ]
}

从非结构化内容中提取字段

你可以在搜索期间从非结构化内容(例如日志消息)中提取运行时字段。

使用以下搜索从 event.original 中提取 source.ip 运行时字段。 要将其包含在响应中,请将 source.ip 添加到 fields 参数。

GET logs-my_app-default/_search
{
  "runtime_mappings": {
    "source.ip": {
      "type": "ip",
      "script": """
        String sourceip=grok('%{IPORHOST:sourceip} .*').extract(doc[ "event.original" ].value)?.sourceip;
        if (sourceip != null) emit(sourceip);
      """
    }
  },
  "query": {
    "range": {
      "@timestamp": {
        "gte": "2099-05-05",
        "lt": "2099-05-08"
      }
    }
  },
  "fields": [
    "@timestamp",
    "source.ip"
  ],
  "_source": false,
  "sort": [
    {
      "@timestamp": "desc"
    }
  ]
}

上面命令运行的结果为:

{
  "took" : 1,
  "timed_out" : false,
  "_shards" : {
    "total" : 1,
    "successful" : 1,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : {
      "value" : 2,
      "relation" : "eq"
    },
    "max_score" : null,
    "hits" : [
      {
        "_index" : ".ds-logs-my_app-default-2022.02.15-000001",
        "_id" : "cdNa-34BMVZHRYDvfszg",
        "_score" : null,
        "fields" : {
          "@timestamp" : [
            "2099-05-07T16:24:32.000Z"
          ],
          "source.ip" : [
            "192.0.2.242"
          ]
        },
        "sort" : [
          4081854272000
        ]
      },
      {
        "_index" : ".ds-logs-my_app-default-2022.02.15-000001",
        "_id" : "bdNY-34BMVZHRYDv98zk",
        "_score" : null,
        "fields" : {
          "@timestamp" : [
            "2099-05-06T16:21:15.000Z"
          ],
          "source.ip" : [
            "192.0.2.42"
          ]
        },
        "sort" : [
          4081767675000
        ]
      }
    ]
  }
}

在上面的命令中,它是用来 runtime fields 来提前我们需要的字段。有关 runtime fields 的更多知识请阅读文章 “Elastic:开发者上手指南” 里的 runtime fields 文章。

Combine queries

你可以使用 bool 查询来组合多个查询。 以下搜索结合了两个范围查询:一个在 @timestamp 上,一个在 source.ip 运行时字段上。

GET logs-my_app-default/_search
{
  "runtime_mappings": {
    "source.ip": {
      "type": "ip",
      "script": """
        String sourceip=grok('%{IPORHOST:sourceip} .*').extract(doc[ "event.original" ].value)?.sourceip;
        if (sourceip != null) emit(sourceip);
      """
    }
  },
  "query": {
    "bool": {
      "filter": [
        {
          "range": {
            "@timestamp": {
              "gte": "2099-05-05",
              "lt": "2099-05-08"
            }
          }
        },
        {
          "range": {
            "source.ip": {
              "gte": "192.0.2.0",
              "lte": "192.0.2.240"
            }
          }
        }
      ]
    }
  },
  "fields": [
    "@timestamp",
    "source.ip"
  ],
  "_source": false,
  "sort": [
    {
      "@timestamp": "desc"
    }
  ]
}

上面的命令执行的结果为:

{
  "took" : 2,
  "timed_out" : false,
  "_shards" : {
    "total" : 1,
    "successful" : 1,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : {
      "value" : 1,
      "relation" : "eq"
    },
    "max_score" : null,
    "hits" : [
      {
        "_index" : ".ds-logs-my_app-default-2022.02.15-000001",
        "_id" : "bdNY-34BMVZHRYDv98zk",
        "_score" : null,
        "fields" : {
          "@timestamp" : [
            "2099-05-06T16:21:15.000Z"
          ],
          "source.ip" : [
            "192.0.2.42"
          ]
        },
        "sort" : [
          4081767675000
        ]
      }
    ]
  }
}

聚合数据

使用聚合将数据汇总为指标、统计数据或其他分析。

以下搜索使用聚合来使用 http.response.body.bytes 运行时字段计算 average_response_size。 聚合仅在与查询匹配的文档上运行。

GET logs-my_app-default/_search
{
  "runtime_mappings": {
    "http.response.body.bytes": {
      "type": "long",
      "script": """
        String bytes=grok('%{COMMONAPACHELOG}').extract(doc[ "event.original" ].value)?.bytes;
        if (bytes != null) emit(Integer.parseInt(bytes));
      """
    }
  },
  "aggs": {
    "average_response_size":{
      "avg": {
        "field": "http.response.body.bytes"
      }
    }
  },
  "query": {
    "bool": {
      "filter": [
        {
          "range": {
            "@timestamp": {
              "gte": "2099-05-05",
              "lt": "2099-05-08"
            }
          }
        }
      ]
    }
  },
  "fields": [
    "@timestamp",
    "http.response.body.bytes"
  ],
  "_source": false,
  "sort": [
    {
      "@timestamp": "desc"
    }
  ]
}

上面的命令运行的结果为:

{
  "took" : 1,
  "timed_out" : false,
  "_shards" : {
    "total" : 1,
    "successful" : 1,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : {
      "value" : 2,
      "relation" : "eq"
    },
    "max_score" : null,
    "hits" : [
      {
        "_index" : ".ds-logs-my_app-default-2022.02.15-000001",
        "_id" : "cdNa-34BMVZHRYDvfszg",
        "_score" : null,
        "fields" : {
          "@timestamp" : [
            "2099-05-07T16:24:32.000Z"
          ],
          "http.response.body.bytes" : [
            0
          ]
        },
        "sort" : [
          4081854272000
        ]
      },
      {
        "_index" : ".ds-logs-my_app-default-2022.02.15-000001",
        "_id" : "bdNY-34BMVZHRYDv98zk",
        "_score" : null,
        "fields" : {
          "@timestamp" : [
            "2099-05-06T16:21:15.000Z"
          ],
          "http.response.body.bytes" : [
            24736
          ]
        },
        "sort" : [
          4081767675000
        ]
      }
    ]
  },
  "aggregations" : {
    "average_response_size" : {
      "value" : 12368.0
    }
  }
}

了解更多的搜索选项

要继续探索,请将更多数据索引到你的数据流并查看常用搜索选项。

清理

当我们已经完成了我们的练习后,我们可以使用如下的命令来进行清理:

DELETE _data_stream/logs-my_app-default

上述命令将删除你的测试 data stream 及相关的支撑索引。

当然我们甚至可以使用如下的命令来彻底地删除你的测试环境以节省存储空间:

docker stop es-node01
docker stop kib-01

上述两个命令将停止 Elasticsearch 及 Kibana 容器。我们可以使用如下的命令来彻底删除容器及网络:文章来源地址https://www.toymoban.com/news/detail-594482.html

docker network rm elastic
docker rm es-node01
docker rm kib-01

到了这里,关于Elastic:使用 Docker 安装 Elastic Stack 8.x 并开始使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Elastic Stack 和 Docker-Compose 入门

    作者:Eddie Mitchell 随着 Elastic Stack 多年来的发展和功能集的增加,在本地开始或尝试概念验证 (POC) 的复杂性也越来越高。 虽然 Elastic Cloud 仍然是开始使用 Elastic 最快、最简单的方式,但对本地开发和测试的需求仍然非常丰富。 作为开发人员,我们被吸引到快速设置和快速开

    2024年02月07日
    浏览(57)
  • Elastic Stack 和 Docker Compose 入门:第 2 部分

    作者:Eddie Mitchell 欢迎阅读 Elastic® Stack 和 Docker Compose 入门的第二部分。 在第一部分博客中,我们了解了 Docker Compose 的基础知识以及如何将单节点集群建立为本地游乐场,其中包括 Elasticsearch®、Kibana®、Logstash®、Metricbeat 和 Filebeat。 如果你还没有阅读第一篇博客,你可能需

    2024年02月07日
    浏览(37)
  • Elasticsearch:如何使用自定义的证书安装 Elastic Stack 8.x

    在我之前的文章 “如何在 Linux,MacOS 及 Windows 上进行安装 Elasticsearch”,我详细描述了如何在各个平台中安装 Elastic Stack 8.x。在其中的文章中,我们大多采用默认的证书来安装 Elasticsearch。在今天的文章中,我们用自己创建的证书一步一步地来安装 Elastic Stack 8.x。我们可以参

    2024年02月08日
    浏览(34)
  • Elastic Stack 8.0 安装 - 保护你的 Elastic Stack 现在比以往任何时候都简单

    在 8.0 中,我们很高兴为所有用户带来简化的安全功能。 从 7.1 开始,我们向所有人免费提供了确保 Elastic Stack 安全所需的所有功能。 然而,我们知道设置安全性并不好玩,你需要专注于你的项目目标。 好消息给你! 从 8.0 开始,自管理集群默认启用 Elastic Stack 安全性,配置

    2023年04月08日
    浏览(43)
  • elasticsearch&elastic-head docker安装

    Elasticsearch8.7.1 安装 拉取镜像 创建elastic 网络 执行创建 注意log中的elastic 用户密码 重置密码:docker exec -it esA /usr/share/elasticsearch/bin/elasticsearch-reset-password 4. 查看结果 拷贝证书到当前文件夹 访问9200 elasticsearch-head 安装 拉取镜像 执行创建 访问9100 elasticsearch-head 无法连接elasti

    2024年02月06日
    浏览(40)
  • Elastic 栈中的 Kibana安装

    Kibana 是一个开源分析和可视化平台,旨在与 Elasticsearch 协同工作。 你使用 Kibana 搜索,查看和与存储在 Elasticsearch 索引中的数据进行交互。 你可以轻松执行高级数据分析,并在各种图表,表格和地图中可视化你的数据。 官方链接:Kibana:如何在 Linux,MacOS 及 Windows 上安装

    2024年02月11日
    浏览(37)
  • Elastic Stack(1):Elastic Stack简介

    1 简介 ELK是一个免费开源的日志分析架构技术栈总称,官网https://www.elastic.co/cn。包含三大基础组件,分别是Elasticsearch、Logstash、Kibana。但实际上ELK不仅仅适用于日志分析,它还可以支持其它任何数据搜索、分析和收集的场景,日志分析和收集只是更具有代表性。并非唯一性。

    2024年01月19日
    浏览(50)
  • 【Elastic (ELK) Stack 实战教程】11、使用 ElastAlert 实现 ES 钉钉群日志告警

    目录 一、ElastAlert 概述 二、安装 ElastAlert 2.1 安装依赖 2.2 安装 Python 环境 2.3 安装 ElastAlert 2.4 ElastAlert 配置文件 2.5 创建 ElastAlert 索引 2.6 测试告警配置是否正常 三、ElastAlert 集成钉钉 3.1 下载 ElastAlert 钉钉报警插件 3.2 创建钉钉机器人 3.3 请求 nginx 频繁出现 401 场景 3.3.1 配

    2023年04月23日
    浏览(52)
  • Elastic Stack 环境配置与框架简介

    目录 简介 什么是Elastic Stack Elasticasearch Logstash Kibana Beats 框架图 下载 配置 一、安装java环境 启动 Elasticsearch Kibana FileBeat Logstash 测验 Elastic Stack 缩写为elk,它由三个软件组成: Elasticsearch 、 Logstash 、 Kibana ,因此缩写为elk,随着版本的变化,添加了一个新软件 Beats ,因此其全

    2024年02月12日
    浏览(46)
  • Elastic(ELK) Stack 架构师成长路径

    Elastic Stack(ELK Stack)是一个开源的日志分析平台,由 Elasticsearch、Logstash 和 Kibana 三个组件组成,主要用于数据搜索、分析和可视化。要成为一名 ELK Stack 架构师,需要遵循一定的成长路径,以便逐步掌握相关知识和技能。 基本了解:在这个阶段,您需要学习基本的ELK Stack概

    2023年04月21日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包