文章转载自:https://mp.weixin.qq.com/s/fLnIzbbqYfILS6uCvGctXw

运行 Elasticsearch

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

当我们第一次启动 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`
--------------------------------------------------------------------------------

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

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

安装及运行 Kibana

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

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

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

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

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

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

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

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

至此,我们已经成功地通过 docker 启动了 Elasticsearch 及 Kibana。

发送请求到 Elasticsearch

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

不能像之前的这种方法来获取数据:

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

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

通过如下的命令来登录容器:

docker exec -it es-node01 /bin/bash

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

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

docker cp es-node01:/usr/share/elasticsearch/config/certs/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

添加多个文档

# 使用 _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 Stack 8.0 并开始使用的更多相关文章

  1. docker安装elastic search和kibana

    安装目标 使用docker安装elastic search和kibana,版本均为7.17.1 安装es 1. docker pull 去dockerhub看具体版本,这里用7.17.1 docker ...

  2. Elastic:用 Docker 部署 Elastic Stack

    文章转载自:https://elasticstack.blog.csdn.net/article/details/100919273 前提条件 首选需要在主机上安装好docker和docker-com ...

  3. centos7用docker安装单节点redis4.0.11

    [root@localhost conf]# docker search redisINDEX NAME DESCRIPTION STARS OFFICIAL AUTOMATEDdocker.io d ...

  4. 创建多个节点的集群 - Elastic Stack 8.0

    文章转载自:https://mp.weixin.qq.com/s/k6u9Q2nebW9qgZMghQwJng 详述如何安装3个节点的 Elasticsearch 集群.我将使用 Docker 来进行 ...

  5. 2 ubuntu 16.04 安装Elastic Stack

    一: 安装JAVA8          添加ppa sudo add-apt-repository ppa:webupd8team/java sudo apt-get update 安装oracle- ...

  6. CentOS7下Elastic Stack 5.0日志分析系统搭建

    原文链接:http://www.2cto.com/net/201612/572296_3.html 在http://localhost:5601下新建索引页面输入“metricbeat-*”,之后ki ...

  7. Elastic Stack 8.0 再次创建enrollment token

    enrollment token 在第一个 Elasticsearch 启动后的有效时间为30分钟.超过30分钟的时间上述 token 将会无效. enrollment token分两个,一个是kib ...

  8. Elastic Stack 安装

    Elastic Stack 是一套支持数据采集.存储.分析.并可视化全面的分析工具,简称 ELK(Elasticsearch,Logstash,Kibana)的缩写. 安装Elastic Stack ...

  9. Elastic Stack学习

    原文链接 Elastic Stack简称ELK,在本教程你将学习如何快速搭建并运行Elastic Stack. 首先你要安装核心开源产品: Elasticsearch: Kibana: Beats: ...

随机推荐

  1. 数据孤岛下的新破局 Real Time DaaS:面向 AP+TP 业务的数据平台架构

    从传统数仓,到大数据平台,再到数据中台和湖仓一体新数据平台,在日益加重的数据孤岛困扰下,面向AP场景的解决方案可谓浩如烟海.但实际上,企业在TP类型业务上的投入和AP的比率却高达9:1,为什么没有为T ...

  2. 解读Go分布式链路追踪实现原理

    摘要:本文将详细介绍分布式链路的核心概念.架构原理和相关开源标准协议,并分享我们在实现无侵入 Go 采集 Sdk 方面的一些实践. 本文分享自华为云社区<一文详解|Go 分布式链路追踪实现原理& ...

  3. springboot connecting to :mongodb://127.0..0.1:27017/test authentication failed

    账号的权限不够,可能是insert进去的脚本的角色有问题 use admin db.createUser({user:'账号',pwd:'密码',roles:[{role:'userAdminAnyD ...

  4. python特殊运算符

    一.逻辑运算符 x = False y = True print(x & y)#仅在布尔中使用 print(x and y)#并且 print(x | y)#仅在布尔中使用 print(x o ...

  5. 初学者对html的认知

    首先是关于本人对一个新事物的理解路线 对html的认知: what:首先我得知道它是什么?html是一门超文本标记语言,它不是一门编程语言 why:它为什么会存在?它存在的意义是什么?随着互联网的发展 ...

  6. Python图像处理丨三种实现图像形态学转化运算模式

    摘要:本篇文章主要讲解Python调用OpenCV实现图像形态学转化,包括图像开运算.图像闭运算和梯度运算 本文分享自华为云社区<[Python图像处理] 九.形态学之图像开运算.闭运算.梯度运 ...

  7. Webpack干货系列 | 在 Webpack 5 集成 ESLint 的方法

    程序员优雅哥(youyacoder)简介:十年程序员,呆过央企外企私企,做过前端后端架构.分享vue.Java等前后端技术和架构. 本文摘要:主要讲解运用Webpack 5 中集成 ESLint 的方 ...

  8. Java开发学习(十五)----AOP入门案例及其工作流程解析

    一.AOP简介 1.1 什么是AOP AOP(Aspect Oriented Programming)面向切面编程,一种编程范式,指导开发者如何组织程序结构. OOP(Object Oriented ...

  9. 【每天学一点-03】 使用Html5+Less实现简单的静态登录界面(入门Less)

    1.首先引用Less 有npm安装.cdn引用.或者下载Less.js本地引用,我采用的是第三种方法 less.js引用: 下载地址:https://github.com/less/less.js/t ...

  10. 剑指offer——day-1

    今天开始记录一下剑指offer的题目训练,提升一下自己的编程能力吧 题目一: 用两个栈实现一个队列.队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列 ...