diff --git a/docs/.gitignore b/docs/.gitignore index e179dbf9..1b161998 100644 --- a/docs/.gitignore +++ b/docs/.gitignore @@ -1,5 +1,5 @@ -/public/ +public/ .idea/ -docs/config.bak -docs/resources/_gen +config.bak +resources/_gen themes/ diff --git a/docs/config.yaml b/docs/config.yaml index 08352c67..1ec00c2c 100644 --- a/docs/config.yaml +++ b/docs/config.yaml @@ -25,6 +25,10 @@ languages: languageName: English contentDir: content.en weight: 3 + zh: + languageName: 简体中文 + contentDir: content.zh + weight: 4 menu: diff --git a/docs/content.zh/_index.md b/docs/content.zh/_index.md new file mode 100755 index 00000000..0cb2e49c --- /dev/null +++ b/docs/content.zh/_index.md @@ -0,0 +1,59 @@ +--- +title: INFINI Console +type: docs +bookCollapseSection: true +weight: 2 +--- + +# INFINI Console + +## 介绍 + +**INFINI Console** 一款非常轻量级、功能强大的多集群、跨版本的 Elasticsearch 统一管控平台。 +通过对 Elasticsearch 跨版本多集群的集中纳管,我们可以快速方便的对企业内部的所有 Elasticsearch 集群进行统一管理。 + +## 架构 + +{{% load-img "/img/architecture.png" "Architecture Overview" %}} + +## 特性 + +> INFINI Console 功能强大、轻量级、使用起来也非常简单。 + +- 支持多集群管理,可以在一个平台内同时纳管任意多套集群; +- 多版本 Elasticsearch 支持,支持 1.x、2.x、5.x、6.x、7.x、8.x; +- 支持以项目为单位来分组管理集群的元数据信息、支持标签; +- 支持动态注册添加集群,目标集群无需任何变动即可被接入管理; +- 支持统一的多集群层面、索引和 API 接口粒度的权限控制; +- 支持统一的跨集群的告警引擎,灵活配置基于阈值的告警规则; +- 支持查看集群元数据的历史变更信息,用于审计、追踪集群变化; +- 开发者工具支持多个工作区快速切换,支持智能提示,支持常用命令保存和快捷加载; +- 支持任意版本的集群监控,包括集群、节点、索引等详细维度的指标查看和分析; +- 支持索引的管理操作,支持索引的快速查看浏览,支持索引内文档的更新、删除; +- 支持创建索引数据视图,可以修改字段的展示格式,支持时序索引数据的快速查看; +- 支持跨平台部署环境,支持 MacOS(Intel 和 M1)、Windows(32 位和 64 位)、Linux(32 位和 64 位); +- 支持 x86、arm5、arm6、arm7、mips、mipsle、mips64 等 CPU 架构: +- 支持 Docker 容器和 K8s 云原生环境; +- 支持极限网关的集中管理; + +INFINI Console 使用 Golang 编写,安装包很小,只有 11MB 左右,没有任何外部环境依赖,部署安装也都非常简单,只需要下载对应平台的二进制可执行文件,启动程序文件执行即可。 + +{{< button relref="./docs/getting-started/install" >}}即刻开始{{< /button >}} + +## 系统截图 + +{{% load-img "/img/screenshot/screenshot2023/overview.png" "overview" %}} +{{% load-img "/img/screenshot/20220330-devtool_tab.jpg" "多个工作区并存" %}} +{{% load-img "/img/screenshot/20220330-cluster_manage.jpg" "Elasticsearch 集群管理" %}} + +{{< button relref="./docs/screenshot" >}}更多截图{{< /button >}} + +## 社区 + +[加入我们的 Discord](https://discord.gg/4tKTMkkvVX) + + +## 谁在用? + +如果您正在使用 INFINI Console,并且您觉得它还不错的话,请[告诉我们](https://discord.gg/4tKTMkkvVX),所有的用户案例我们会集中放在[这里](./docs/user-cases/),感谢您的支持。 + diff --git a/docs/content.zh/docs/_index.md b/docs/content.zh/docs/_index.md new file mode 100755 index 00000000..3b8cbbf7 --- /dev/null +++ b/docs/content.zh/docs/_index.md @@ -0,0 +1,59 @@ +--- +title: INFINI Console +type: docs +bookCollapseSection: true +weight: 2 +--- + +# INFINI Console + +## 介绍 + +**INFINI Console** 一款非常轻量级、功能强大的多集群、跨版本的 Elasticsearch 统一管控平台。 +通过对 Elasticsearch 跨版本多集群的集中纳管,我们可以快速方便的对企业内部的所有 Elasticsearch 集群进行统一管理。 + +## 架构 + +{{% load-img "/img/architecture.png" "Architecture Overview" %}} + +## 特性 + +> INFINI Console 功能强大、轻量级、使用起来也非常简单。 + +- 支持多集群管理,可以在一个平台内同时纳管任意多套集群; +- 多版本 Elasticsearch 支持,支持 1.x、2.x、5.x、6.x、7.x、8.x; +- 支持以项目为单位来分组管理集群的元数据信息、支持标签; +- 支持动态注册添加集群,目标集群无需任何变动即可被接入管理; +- 支持统一的多集群层面、索引和 API 接口粒度的权限控制; +- 支持统一的跨集群的告警引擎,灵活配置基于阈值的告警规则; +- 支持查看集群元数据的历史变更信息,用于审计、追踪集群变化; +- 开发者工具支持多个工作区快速切换,支持智能提示,支持常用命令保存和快捷加载; +- 支持任意版本的集群监控,包括集群、节点、索引等详细维度的指标查看和分析; +- 支持索引的管理操作,支持索引的快速查看浏览,支持索引内文档的更新、删除; +- 支持创建索引数据视图,可以修改字段的展示格式,支持时序索引数据的快速查看; +- 支持跨平台部署环境,支持 MacOS(Intel 和 M1)、Windows(32 位和 64 位)、Linux(32 位和 64 位); +- 支持 x86、arm5、arm6、arm7、mips、mipsle、mips64 等 CPU 架构: +- 支持 Docker 容器和 K8s 云原生环境; +- 支持极限网关的集中管理; + +INFINI Console 使用 Golang 编写,安装包很小,只有 11MB 左右,没有任何外部环境依赖,部署安装也都非常简单,只需要下载对应平台的二进制可执行文件,启动程序文件执行即可。 + +{{< button relref="./getting-started/install" >}}即刻开始{{< /button >}} + +## 系统截图 + +{{% load-img "/img/screenshot/screenshot2023/overview.png" "overview" %}} +{{% load-img "/img/screenshot/20220330-devtool_tab.jpg" "多个工作区并存" %}} +{{% load-img "/img/screenshot/20220330-cluster_manage.jpg" "Elasticsearch 集群管理" %}} + +{{< button relref="./screenshot" >}}更多截图{{< /button >}} + +## 社区 + +[加入我们的 Discord](https://discord.gg/4tKTMkkvVX) + + +## 谁在用? + +如果您正在使用 INFINI Console,并且您觉得它还不错的话,请[告诉我们](https://discord.gg/4tKTMkkvVX),所有的用户案例我们会集中放在[这里](./user-cases/),感谢您的支持。 + diff --git a/docs/content.zh/docs/configuration/_index.md b/docs/content.zh/docs/configuration/_index.md new file mode 100644 index 00000000..0c987baf --- /dev/null +++ b/docs/content.zh/docs/configuration/_index.md @@ -0,0 +1,11 @@ +--- +weight: 13 +title: 参数配置 +bookCollapseSection: true +--- + +# 参数配置 + +## 参数配置 + + diff --git a/docs/content.zh/docs/configuration/keystore/_index.md b/docs/content.zh/docs/configuration/keystore/_index.md new file mode 100644 index 00000000..2ddd27f7 --- /dev/null +++ b/docs/content.zh/docs/configuration/keystore/_index.md @@ -0,0 +1,89 @@ +--- +weight: 2 +title: Keystore +--- + +# Keystore + +## 简介 + +在配置里面直接明文配置用户密码是非常不安全的操作,通过使用 Keystore 可以很方便的帮助您以键值对的方式管理敏感数据,如用于密码,TOKEN 等身份验证信息管理。 +Keystore 管理功能以 keystore 子命令的方式 支持,查看 KEY 列表,添加和删除 SECRET。 + +## 获取 Keystore 命令帮助 + +命令行进入 console 安装目录,然后执行 `./console-xxx-xxx keystore -h` +输出如下: + +``` +usage : keystore [] +These are common keystore commands used in various situations: +add Add keystore secret +list List keystore keys +remove remove keystore secret +``` + +## 查看 Keystore Key 列表 + +命令行输入 `./console-xxx-xxx keystore list`,然后会输出 Keystore 存储的所有 Key 如下: + +``` +test +test1 +testx +``` + +## 添加 Keystore Secret + +命令行输入 `./console-xxx-xxx keystore add -h` 获取帮助如下: + +``` +Usage of add secret: + -force + Override the existing key + -stdin + Use the stdin as the source of the secret +``` + +可以看到添加 keystore secret `add` 子命令有两个选项 + +- -force 带上这个选项,如果添加 secret 的 Key 值是存在的会自动覆盖旧值,否则直接退出 +- -stdin 标准输入上回显 secret,不带这个选项默认隐藏输入 secret + +添加一个 Key 为 `hello` 的 Secret `./console-xxx-xxx keystore add hello` +然后输入 secret 值就可以了 + +## 删除 Keystore Secret + +以删除 Key 为 `hello` 的 Secret 为例,命令行输入 `./console-xxx-xxx keystore remove hello` 就可以了 + +## keystore 应用 + +INFINI Console, INFINI Gateway, INFINI Agent 都是支持上述功能的。 + +### 配置文件中使用 keystore + +首先使用 Keystore 命令 创建 Key 为 `default_cluster_password` 的 Secret; +然后在 INFINI Gateway 配置文件中 gateway.yml 使用 + +``` +elasticsearch: + - name: default + enabled: true + endpoint: http://192.168.3.8:9200 + basic_auth: + username: elastic + password: $[[keystore.default_cluster_password]] +``` + +[comment]: <> (### 告警模版中使用 keystore) + +[comment]: <> (使用函数 `get_keystore_secret`,传递 Secret Key 作为参数就可以拿到) + +[comment]: <> (Keystore secret 的值了。示例:在告警模版中获取 key 为 `weixin_access_token`的 Secret 值,如下:) + +[comment]: <> (```) + +[comment]: <> ({{get_keystore_secret "weixin_access_token"}}) + +[comment]: <> (```) diff --git a/docs/content.zh/docs/configuration/security/_index.md b/docs/content.zh/docs/configuration/security/_index.md new file mode 100644 index 00000000..84bd05a6 --- /dev/null +++ b/docs/content.zh/docs/configuration/security/_index.md @@ -0,0 +1,74 @@ +--- +weight: 3 +title: LDAP 集成 +--- + +# LDAP 配置 + +## 描述 + +在某些情况下,在用户通过一个域(realm)进行身份验证后,我们可能希望将用户的查找和角色分配委托给另一个域。任何支持用户查找(无需用户凭证)的领域都可以用作认证域。 + +例如,通过 Kerberos 域进行身份验证的用户可以在 LDAP 域中进行查找。LDAP 域负责在 LDAP 中搜索用户并确定其角色。在这种情况下,LDAP 域充当认证域。 + +## 配置示例 + +一个参考配置示例如下: + +``` +security: + enabled: true + authc: + realms: + ldap: + myprovider1: + enabled: true + host: "localhost" + port: 3893 + bind_dn: "cn=serviceuser,ou=svcaccts,dc=glauth,dc=com" + bind_password: "mysecret" + base_dn: "dc=glauth,dc=com" + user_filter: "(cn=%s)" + group_attribute: "ou" + bypass_api_key: true + cache_ttl: "10s" + role_mapping: + group: + superheros: [ "Administrator" ] + uid: + hackers: [ "Administrator" ] + myprovider2: + enabled: true + host: "ldap.forumsys.com" + port: 389 + bind_dn: "cn=read-only-admin,dc=example,dc=com" + bind_password: "password" + base_dn: "dc=example,dc=com" + user_filter: "(uid=%s)" + cache_ttl: "10s" + role_mapping: + uid: + tesla: [ "readonly","data" ] +``` + +上面的配置使用了两个名为 `myprovider1` 和 `myprovider2` 的外部 LDAP 服务器作为认证渠道,任何一个 LDAP 都可以提供认证服务,通过 `role_mapping` 设置关联 LDAP 返回的 UID 和 Group 到 Console 里面的角色信息。 + +## 参数说明 + +| 名称 | 类型 | 说明 | +| ------------------ | ------ | ------------------------------------------------ | +| host | string | LDAP 服务器地址 | +| port | int | LDAP 服务器端口,默认 `389` | +| tls | bool | LDAP 服务器是否为 TLS 安全传输协议,默认 `false` | +| bind_dn | string | 执行 LDAP 查询的用户信息 | +| bind_password | string | 执行 LDAP 查询的密码信息 | +| base_dn | string | 过滤 LDAP 用户的根域 | +| user_filter | string | 过滤 LDAP 用户的查询条件,默认 `(uid=%s)` | +| uid_attribute | string | 用于用户 ID 的属性,默认 `uid` | +| group_attribute | string | 用于用户组的属性,默认 `cn` | +| role_mapping.uid | map | 用于基于用户 UID 的权限映射 | +| role_mapping.group | map | 用于基于用户 Group 的权限映射 | + +## 其他资源 +* [INFINI Console LDAP 配置教程](https://www.bilibili.com/video/BV1kj411S74B/) 视频介绍 +* [常见问题](https://www.infinilabs.cn/blog/2023/console-ldap-setting/) \ No newline at end of file diff --git a/docs/content.zh/docs/getting-started/_index.md b/docs/content.zh/docs/getting-started/_index.md new file mode 100644 index 00000000..ea17d9af --- /dev/null +++ b/docs/content.zh/docs/getting-started/_index.md @@ -0,0 +1,5 @@ +--- +weight: 10 +title: 入门指南 +bookCollapseSection: true +--- diff --git a/docs/content.zh/docs/getting-started/docker.md b/docs/content.zh/docs/getting-started/docker.md new file mode 100644 index 00000000..c4acbe0d --- /dev/null +++ b/docs/content.zh/docs/getting-started/docker.md @@ -0,0 +1,60 @@ +--- +weight: 35 +title: 容器部署 +asciinema: true +--- + +# 容器部署 + +INFINI Console 支持容器方式部署。 + +## 下载镜像 + +INFINI Console 的镜像发布在 Docker 的官方仓库,地址如下: + + + +使用下面的命令即可获取最新的容器镜像: + +```bash +docker pull infinilabs/console:{{< globaldata "console" "version" >}} +``` + +## 验证镜像 + +将镜像下载到本地之后,可以看到 INFINI Console 平台的容器镜像非常小,只有不到 30MB,所以下载的速度应该是非常快的。 + +```text +➜ docker images |grep "console" |grep "{{< globaldata "console" "version" >}}" +REPOSITORY TAG IMAGE ID CREATED SIZE +infinilabs/console latest 8c27cd334e4c 47 minutes ago 26.4MB +``` + +## 启动平台 + +使用如下命令启动极限网关容器: + +```bash +docker run -p 9000:9000 infinilabs/console:{{< globaldata "console" "version" >}} +``` + +## Docker Compose + +还可以使用 docker compose 来管理容器实例,新建一个 `docker-compose.yml` 文件如下: + +```yaml +version: "3.5" + +services: + infini-console: + image: infinilabs/console:{{< globaldata "console" "version" >}} + ports: + - 9000:9000 + container_name: "infini-console" +``` + +在配置文件所在目录,执行如下命令即可启动,如下: + +```bash +docker-compose up +``` diff --git a/docs/content.zh/docs/getting-started/helm.md b/docs/content.zh/docs/getting-started/helm.md new file mode 100644 index 00000000..7e3d2498 --- /dev/null +++ b/docs/content.zh/docs/getting-started/helm.md @@ -0,0 +1,42 @@ +--- +weight: 35 +title: Helm 部署 +asciinema: true +--- + +# Helm 部署 + +INFINI Console 支持 Helm 方式部署。 + +## 添加仓库 + +Chart 仓库地址在这里 [https://helm.infinilabs.com](https://helm.infinilabs.com/)。 + +使用下面的命令添加仓库: + +```bash +helm repo add infinilabs https://helm.infinilabs.com +``` + +## 前提 + +Chart 包中默认配置的 StorageClass 是 local-path,可参考[这里](https://github.com/rancher/local-path-provisioner)安装。 + +如果想使用其他已安装的 StorageClass, 可以创建一个 YAML 文件(例如:values.yaml),添加如下配置 +```yaml +storageClassName: \ +``` +创建的时候使用 `-f` 参数指定,替换默认值。 + +## 安装 + +```bash +helm install console infinilabs/console -n +``` + +## 卸载 + +```bash +helm uninstall console -n +kubectl delete pvc console-data-console-0 console-config-console-0 -n +``` \ No newline at end of file diff --git a/docs/content.zh/docs/getting-started/install.md b/docs/content.zh/docs/getting-started/install.md new file mode 100644 index 00000000..9d58817d --- /dev/null +++ b/docs/content.zh/docs/getting-started/install.md @@ -0,0 +1,149 @@ +--- +weight: 10 +title: 下载安装 +asciinema: true +--- + +# 安装 INFINI Console + +INFINI Console 支持主流的操作系统和平台,程序包很小,没有任何额外的外部依赖,安装起来应该是很快的 :) + +## 安装前准备 + +准备一个可以存储数据的 Elasticsearch 集群,要求为 5.3 及以上版本,用于 INFINI Console 存储相关数据。 + +> 推荐使用 INFINI Easysearch 来作存储,可通过配置开启 ZSTD 来节约存储空间。安装操作如如下 + +{{< asciinema key="./console_with_easysearch" autoplay="1" speed="2" rows="30" preload="1" >}} + +
+ 查看完整操作代码 +
+
# 使用 root 用户操作
+whoami && cat /etc/redhat-release && uptime
+# 安装 jdk
+yum -y install java-11
+# 创建 infini 用户
+groupadd -g 602 infini
+useradd -u 602 -g infini -m -d /home/infini -c 'infini' -s /bin/bash infini
+# 安装 Easysearch & Console
+curl -sSL http://get.infini.cloud | bash -s -- -p easysearch
+curl -sSL http://get.infini.cloud | bash -s -- -p console
+# 配置 Easysearch jdk
+ln -s /usr/lib/jvm/java-11-openjdk-11.0.19.0.7-1.el7_9.x86_64 /opt/easysearch/jdk
+sed -i 's/1g/512m/g' /opt/easysearch/config/jvm.options
+# 初始化 
+cd /opt/easysearch && bin/initialize.sh 
+# 调整目录权限
+chown -R infini.infini /opt/easysearch
+# 运行 Easysearch
+su infini -c "/opt/easysearch/bin/easysearch -d"
+# 运行 Console
+cd /opt/console && ./console-linux-amd64 -service install && ./console-linux-amd64 -service start
+# 检查 Easysearch
+curl -ku admin:44e4e00cded8d82c16cf https://localhost:9200
+#在 INFINI Console 中可以使用以上凭证来进行连接
+
+
+ +## 在线安装 + +**自动安装** + +```bash +curl -sSL http://get.infini.cloud | bash -s -- -p console +``` + +> 通过以上脚本可自动下载相应平台的 console 最新版本并解压到 /opt/console +> +> 脚本的可选参数如下: +> +> - _-v [版本号](默认采用最新版本号)_ +> - _-d [安装目录](默认安装到 /opt/console)_ + +**手动安装** + +根据您所在的操作系统和平台选择相应的下载包,下载地址如下: + + + +## 容器部署 + +INFINI Console 也支持 Docker 容器方式部署。 + +{{< button relref="./docker" >}}了解更多{{< /button >}} + +## 启动 INFINI Console + +下载完成,直接运行程序即可启动 INFINI Console 了(这里使用的是 mac 版本的,不同平台的程序文件名称略有不同),如下: + +```text +➜ ./console-mac-amd64 + ___ __ ___ ___ + / __\/ / /___\/\ /\ / \ + / / / / // // / \ \/ /\ / +/ /__/ /__/ \_//\ \_/ / /_// +\____|____|___/ \___/___,' + ___ ___ __ __ ___ __ __ + / __\/___\/\ \ \/ _\ /___\/ / /__\ + / / // // \/ /\ \ // // / /_\ +/ /__/ \_// /\ / _\ \/ \_// /__//__ +\____|___/\_\ \/ \__/\___/\____|__/ + +[CONSOLE] INFINI Cloud Console, The easiest way to operate your own search platform. +[CONSOLE] 0.3.0_SNAPSHOT, 2022-03-31 10:26:41, 2023-12-31 10:10:10, fa04f6010144b7c5267c71ccaee30230ddf2432d +[03-31 20:27:40] [INF] [app.go:174] initializing console. +[03-31 20:27:40] [INF] [app.go:175] using config: /console-0.3.0_SNAPSHOT-447-mac-amd64/console.yml. +[03-31 20:27:40] [INF] [instance.go:72] workspace: /console-0.3.0_SNAPSHOT-447-mac-amd64/data/console/nodes/c92psf1pdamk8rdhgqpg +[03-31 20:27:40] [INF] [app.go:283] console is up and running now. +[03-31 20:27:40] [INF] [ui.go:197] ui listen at: http://0.0.0.0:9000 +[03-31 20:27:40] [INF] [module.go:116] all modules are started +``` + +看到上面的启动信息,说明 INFINI Console 已经成功运行了,并且监听了 9000 端口。 + +## 停止 INFINI Console + +如果需要停止 INFINI Console,按 `Ctrl+C` 即可停止 INFINI Console 平台,如下: + +```text +^C +[CONSOLE] got signal: interrupt, start shutting down +[03-31 20:33:10] [INF] [module.go:145] all modules are stopped +[03-31 20:33:10] [INF] [app.go:267] console now terminated. +[CONSOLE] 0.3.0_SNAPSHOT, uptime: 5m30.307832s + __ _ __ ____ __ _ __ __ + / // |/ // __// // |/ // / + / // || // _/ / // || // / +/_//_/|_//_/ /_//_/|_//_/ + +©INFINI.LTD, All Rights Reserved. +``` + +## 配置服务后台运行 + +如果希望将 INFINI Console 以后台服务任务的方式运行,如下: + +```text +➜ ./console -service install +Success +➜ ./console -service start +Success +``` + +卸载服务也很简单,如下: + +```text +➜ ./console -service stop +Success +➜ ./console -service uninstall +Success +``` + +## 初始化 + +使用浏览器打开 http://localhost:9000 访问,可以看到如下界面,可以进行初始化配置。 + +{{% load-img "/img/screenshot/initialization/configuration.png" %}} + +{{< button relref="../reference/setup" >}}继续查看{{< /button >}} diff --git a/docs/content.zh/docs/reference/_index.md b/docs/content.zh/docs/reference/_index.md new file mode 100644 index 00000000..2aa7c5cc --- /dev/null +++ b/docs/content.zh/docs/reference/_index.md @@ -0,0 +1,5 @@ +--- +weight: 15 +title: 操作手册 +bookCollapseSection: true +--- diff --git a/docs/content.zh/docs/reference/agent/_index.md b/docs/content.zh/docs/reference/agent/_index.md new file mode 100644 index 00000000..d66aa0c9 --- /dev/null +++ b/docs/content.zh/docs/reference/agent/_index.md @@ -0,0 +1,5 @@ +--- +weight: 11111 +title: 探针管理 +bookCollapseSection: true +--- diff --git a/docs/content.zh/docs/reference/agent/docker.md b/docs/content.zh/docs/reference/agent/docker.md new file mode 100644 index 00000000..b0205580 --- /dev/null +++ b/docs/content.zh/docs/reference/agent/docker.md @@ -0,0 +1,180 @@ +--- +weight: 15 +title: 容器部署 +asciinema: true +--- + +# 容器部署 + +探针 (_INFINI Agent_) 支持容器方式部署。 + +## 下载镜像 + +探针(_INFINI Agent_) 的镜像发布在 Docker 的官方仓库,地址如下: + +[https://hub.docker.com/r/infinilabs/agent](https://hub.docker.com/r/infinilabs/agent) + +使用下面的命令即可获取最新的容器镜像: + +``` +docker pull infinilabs/agent:{{< globaldata "agent" "version" >}} +``` + +## 验证镜像 + +将镜像下载到本地之后,可以看到 探针 (_INFINI Agent_) 的容器镜像非常小,只有不到 20MB,所以下载是非常快的。 + +``` +✗ docker images |grep "agent" |grep "{{< globaldata "agent" "version" >}}" +REPOSITORY TAG IMAGE ID CREATED SIZE +infinilabs/agent latest {{< globaldata "agent" "version" >}} 4 days ago 13.8MB +``` + +## 创建配置 + +现在需要创建一个配置文件 `agent.yml`,来进行基本的配置,如下: + +``` +api: + enabled: true + network: + binding: 0.0.0.0:8080 + +metrics: + enabled: true + queue: metrics + network: + enabled: true + summary: true + details: true + memory: + metrics: + - swap + - memory + disk: + metrics: + - ioqs + - usage + cpu: + metrics: + - idle + - system + - user + - iowait + - load + elasticsearch: + enabled: true + agent_mode: true + node_stats: true + index_stats: true + cluster_stats: true + +elasticsearch: + - name: default + enabled: true + endpoint: http://192.168.3.4:9200 + monitored: false + discovery: + enabled: true + +pipeline: + - name: metrics_ingest + auto_start: true + keep_running: true + processor: + - json_indexing: + index_name: ".infini_metrics" + elasticsearch: "default" + input_queue: "metrics" + output_queue: + name: "metrics_requests" + label: + tag: "metrics" + worker_size: 1 + bulk_size_in_mb: 10 + - name: consume-metrics_requests + auto_start: true + keep_running: true + processor: + - bulk_indexing: + bulk: + compress: true + batch_size_in_mb: 10 + batch_size_in_docs: 5000 + consumer: + fetch_max_messages: 100 + queues: + type: indexing_merge + when: + cluster_available: [ "default" ] + +agent: + major_ip_pattern: "192.*" + labels: + env: dev + tags: + - linux + - x86 + - es7 + - v7.5 + +path.data: data +path.logs: log + +agent.manager.endpoint: http://192.168.3.4:9000 +``` + +Note: 上面配置里面的 Elasticsearch 的相关配置,请改成实际的服务器连接地址和认证信息,需要版本 v7.3 及以上。 + +## 启动 Agent + +使用如下命令启动 Agent 容器: + +``` +docker run -p 8080:8080 -v=`pwd`/agent.yml:/agent.yml infinilabs/agent:{{< globaldata "agent" "version" >}} +``` + +## Docker Compose + +还可以使用 docker compose 来管理容器实例,新建一个 `docker-compose.yml` 文件如下: + +``` +version: "3.5" + +services: + infini-agent: + image: infinilabs/agent:latest + ports: + - 8080:8080 + container_name: "infini-agent" + volumes: + - ./agent.yml:/agent.yml + +volumes: + dist: +``` + +在配置文件所在目录,执行如下命令即可启动,如下: + +``` +➜ docker-compose up +Recreating infini-agent ... done +Attaching to infini-agent +infini-agent | _ ___ __ __ _____ +infini-agent | /_\ / _ \ /__\/\ \ \/__ \ +infini-agent | //_\\ / /_\//_\ / \/ / / /\/ +infini-agent | / _ \/ /_\\//__/ /\ / / / +infini-agent | \_/ \_/\____/\__/\_\ \/ \/ +infini-agent | +infini-agent | [AGENT] A light-weight, powerful and high-performance elasticsearch agent. +infini-agent | [AGENT] 0.1.0_SNAPSHOT#15, 2022-08-26 15:05:43, 2025-12-31 10:10:10, 164bd8a0d74cfd0ba5607352e125d72b46a1079e +infini-agent | [08-31 09:11:45] [INF] [app.go:164] initializing agent. +infini-agent | [08-31 09:11:45] [INF] [app.go:165] using config: /agent.yml. +infini-agent | [08-31 09:11:45] [INF] [instance.go:72] workspace: /data/agent/nodes/cc7ibke5epac7314bf9g +infini-agent | [08-31 09:11:45] [INF] [metrics.go:63] ip:172.18.0.2, host:bd9f43490911, labels:, tags: +infini-agent | [08-31 09:11:45] [INF] [api.go:261] api listen at: http://0.0.0.0:8080 +infini-agent | [08-31 09:11:45] [INF] [actions.go:367] elasticsearch [default] is available +infini-agent | [08-31 09:11:45] [INF] [module.go:116] all modules are started +infini-agent | [08-31 09:11:45] [INF] [manage.go:180] register agent to console +infini-agent | [08-31 09:11:45] [INF] [app.go:334] agent is up and running now. +``` diff --git a/docs/content.zh/docs/reference/agent/install.md b/docs/content.zh/docs/reference/agent/install.md new file mode 100644 index 00000000..523f5349 --- /dev/null +++ b/docs/content.zh/docs/reference/agent/install.md @@ -0,0 +1,298 @@ +--- +weight: 15 +title: 下载安装 +asciinema: true +--- + +# 安装探针 + +探针支持两种方式安装,一种是手动下载安装配置,还有一种是结合新版本的 Console (>=1.3.0),生成一键安装脚本。 +只要执行一键安装脚本即可在主机上完成探针的安装。我们推荐使用结合 Console 来安装探针,简单和方便管理。 + +## 一键安装 + +### 安装前准备 + +安装并运行 [INFINI Console](../../../getting-started/install) + +### 复制一键安装脚本 + +在 INFINI Console 左侧菜单 `资源管理>探针管理`,进入页面之后点击 `Install Agent` 按钮,即可复制类似如下一键安装脚本: + +``` +curl -sSL http://localhost:9000/agent/install.sh?token=cjctdrms4us1c6fu04ag |sudo bash -s -- -u https://release.infinilabs.com/agent/stable -v 0.6.0-262 -t /opt/agent +``` + +> -u和-v参数表示从指定的 URL 下载指定版本的 Agent,-t参数表示安装的路径,在联网的环境中,-- 及后面的参数都可以忽略,默认情况下将从官网下载最新的 Agent 版本进行安装。 + +将一键安装脚本粘贴到终端执行即可完成安装,安装之后该探针实例会被自动注册到 INFINI Console。具体操作步骤参考 [Agent 快速安装](manage/manage/#快速安装探针) + +## 下载安装 + +根据您所在的操作系统和平台选择下面相应的下载地址: + +[https://release.infinilabs.com/agent/](https://release.infinilabs.com/agent/) + +## 容器部署 + +探针(_INFINI Agent_) 也支持 Docker 容器方式部署。 + +{{< button relref="./docker" >}}了解更多{{< /button >}} + +## 配置 + +下载安装包解压之后,打开 `agent.yml` 配置文件,我们可以看到以下配置: + +``` +env: + LOGGING_ES_ENDPOINT: http://localhost:9200 + LOGGING_ES_USER: admin + LOGGING_ES_PASS: admin + API_BINDING: "0.0.0.0:2900" + +path.data: data +path.logs: log + +api: + enabled: true + network: + binding: $[[env.API_BINDING]] + +# omitted ... +``` + +通常,我们只需要修改 `LOGGING_ES_ENDPOINT` 环境变量配置,若 Elasticsearch 开启了安全验证,则需要修改 `LOGGING_ES_USER` 和 `LOGGING_ES_PASS` 配置。 + +这里的用户要求具备集群的元数据、索引的元数据以及 `.infini*` 索引的完全访问权限,以及索引模板的创建权限。 + +## 启动 INFINI Agent + +直接运行程序即可启动 探针(_INFINI Agent_) 了(这里使用的是 Mac 版本的,不同平台的程序文件名称略有不同),如下: + +``` + _ ___ __ __ _____ + /_\ / _ \ /__\/\ \ \/__ \ + //_\\ / /_\//_\ / \/ / / /\/ +/ _ \/ /_\\//__/ /\ / / / +\_/ \_/\____/\__/\_\ \/ \/ + +[AGENT] A light-weight, powerful and high-performance elasticsearch agent. +[AGENT] 0.1.0#14, 2022-08-26 14:09:29, 2025-12-31 10:10:10, 4489a8dff2b68501a0dd9ae15276cf5751d50e19 +[08-31 15:52:07] [INF] [app.go:164] initializing agent. +[08-31 15:52:07] [INF] [app.go:165] using config: /Users/INFINI/agent/agent-0.1.0-14-mac-arm64/agent.yml. +[08-31 15:52:07] [INF] [instance.go:72] workspace: /Users/INFINI/agent/agent-0.1.0-14-mac-arm64/data/agent/nodes/cc7h5qitoaj25p2g9t20 +[08-31 15:52:07] [INF] [metrics.go:63] ip:192.168.3.22, host:INFINI-MacBook.local, labels:, tags: +[08-31 15:52:07] [INF] [api.go:261] api listen at: http://0.0.0.0:8080 +[08-31 15:52:07] [INF] [module.go:116] all modules are started +[08-31 15:52:07] [INF] [manage.go:180] register agent to console +[08-31 15:52:07] [INF] [actions.go:367] elasticsearch [default] is available +[08-31 15:52:07] [INF] [manage.go:203] registering, waiting for review +[08-31 15:52:07] [INF] [app.go:334] agent is up and running now. +``` + +看到上面的启动信息,说明 探针 (_INFINI Agent_) 已经成功运行了! + +## 停止 INFINI Agent + +如果需要停止 探针(_INFINI Agent_) ,按 `Ctrl+C` 即可停止 探针(_INFINI Agent_),如下: + +``` +^C +[AGENT] got signal: interrupt, start shutting down +[08-31 15:57:13] [INF] [module.go:145] all modules are stopped +[08-31 15:57:13] [INF] [app.go:257] agent now terminated. +[AGENT] 0.1.0, uptime: 5m6.240314s + + __ _ __ ____ __ _ __ __ + / // |/ // __// // |/ // / + / // || // _/ / // || // / +/_//_/|_//_/ /_//_/|_//_/ + +©INFINI.LTD, All Rights Reserved. +``` + +## 配置服务后台运行 + +如果希望将 探针(_INFINI Agent_) 以后台任务的方式运行,如下: + +``` +➜ ./agent -service install +Success +➜ ./agent -service start +Success +``` + +卸载服务也很简单,如下: + +``` +➜ ./agent -service stop +Success +➜ ./agent -service uninstall +Success +``` + +## 手动配置 Agent 采集功能 + +如果希望手动配置 Elasticsearch 日志和指标采集,可以参考 `agent.yml` 提供的默认参考配置。如果需要添加其他 Elasticsearch 集群的采集,需要在 `elasticsearch` 增加相应的集群配置信息,并配置对应的 `pipeline` 来采集该集群的数据。 + +如果你需要手动关闭某一项日志采集,把对应的采集 pipeline `enabled` 选项设置为 `false`。 + +### 采集 Elasticsearch 指标 + +配置采集节点 stats: + +``` + - name: collect_default_node_stats + enabled: false + auto_start: true + keep_running: true + retry_delay_in_ms: 10000 + processor: + - es_node_stats: + elasticsearch: default +``` + +配置采集集群索引 stats: + +``` + - name: collect_default_index_stats + enabled: false + auto_start: true + keep_running: true + retry_delay_in_ms: 10000 + processor: + - es_index_stats: + elasticsearch: default +``` + +配置采集集群 stats: + +``` + - name: collect_default_cluster_stats + enabled: false + auto_start: true + keep_running: true + retry_delay_in_ms: 10000 + processor: + - es_cluster_stats: + elasticsearch: default +``` + +配置采集集群健康信息: + +``` + - name: collect_default_cluster_health + enabled: false + auto_start: true + keep_running: true + retry_delay_in_ms: 10000 + processor: + - es_cluster_health: + elasticsearch: default +``` + +### 采集 Elasticsearch 日志 + +配置采集节点日志,`elasticsearch` 需要配置采集节点的 `endpoint`: + +``` + - name: collect_default_es_logs + enabled: false + auto_start: true + keep_running: true + retry_delay_in_ms: 3000 + processor: + - es_logs_processor: + queue_name: "logs" + elasticsearch: default +``` + +如果有多个 Elasticsearch 节点在当前主机运行,每个 Elasticsearch 需要配置的对应的集群信息和 `pipeline`: + +``` +elasticsearch: + # omitted ... + - name: cluster-a-node-1 + enabled: true + endpoint: http://localhost:9202 + monitored: false + discovery: + enabled: true + +# omitted ... + + - name: collect_node_1_es_logs + enabled: false + auto_start: true + keep_running: true + retry_delay_in_ms: 3000 + processor: + - es_logs_processor: + queue_name: "logs" + elasticsearch: cluster-a-node-1 + +``` + +### 采集本地日志文件 + +如果 `es_logs_processor` 提供的配置选项不够灵活,或者你想采集主机上其他日志文件,也可以通过 `logs_processor` 来配置任意目录下的日志采集。`agent.yml` 默认提供了一个采集 Elasticsearch 日志的配置来作为参考,你可以修改这个配置或者增加新的配置来适配本地的日志文件,并添加对应的标签和 metadata 信息来方便过滤筛选。 + +``` + - name: log_collect + enabled: false + auto_start: true + keep_running: true + retry_delay_in_ms: 3000 + processor: + - logs_processor: + queue_name: "logs" + logs_path: "/opt/es/elasticsearch-7.7.1/logs" + # metadata for all log items + metadata: + category: elasticsearch + # patterns are matched in order + patterns: + - pattern: ".*_server.json$" # file name pattern to match + # log type, json/text/multiline + type: json + # metadata for matched files + metadata: + name: server + # (json) timestamp fields in json message, match the first one + timestamp_fields: ["timestamp", "@timestamp"] + # (json) remove fields with specified key path + remove_fields: + [ + "type", + "cluster.name", + "cluster.uuid", + "node.name", + "node.id", + "timestamp", + "@timestamp", + ] + - pattern: "gc.log$" # file name pattern to match + # log type, json/text/multiline + type: json + # metadata for matched files + metadata: + name: gc + # (text) regex to match timestamp in the log entries + timestamp_patterns: + - "\\d{4}-\\d{1,2}-\\d{1,2}T\\d{1,2}:\\d{1,2}:\\d{1,2}.\\d{3}\\+\\d{4}" + - "\\d{4}-\\d{1,2}-\\d{1,2} \\d{1,2}:\\d{1,2}:\\d{1,2},\\d{3}" + - "\\d{4}-\\d{1,2}-\\d{1,2}T\\d{1,2}:\\d{1,2}:\\d{1,2},\\d{3}" + - pattern: ".*.log$" # file name pattern to match + # log type, json/text/multiline + type: multiline + # (multiline) the pattern to match a new line + line_pattern: '^\[' + # metadata for matched files + metadata: + name: server + # (text) regex to match timestamp in the log entries + timestamp_patterns: + - "\\d{4}-\\d{1,2}-\\d{1,2}T\\d{1,2}:\\d{1,2}:\\d{1,2}.\\d{3}\\+\\d{4}" + - "\\d{4}-\\d{1,2}-\\d{1,2} \\d{1,2}:\\d{1,2}:\\d{1,2},\\d{3}" + - "\\d{4}-\\d{1,2}-\\d{1,2}T\\d{1,2}:\\d{1,2}:\\d{1,2},\\d{3}" +``` diff --git a/docs/content.zh/docs/reference/agent/manage/img.png b/docs/content.zh/docs/reference/agent/manage/img.png new file mode 100644 index 00000000..50b08fc8 Binary files /dev/null and b/docs/content.zh/docs/reference/agent/manage/img.png differ diff --git a/docs/content.zh/docs/reference/agent/manage/img_1.png b/docs/content.zh/docs/reference/agent/manage/img_1.png new file mode 100644 index 00000000..9a54ca84 Binary files /dev/null and b/docs/content.zh/docs/reference/agent/manage/img_1.png differ diff --git a/docs/content.zh/docs/reference/agent/manage/img_2.png b/docs/content.zh/docs/reference/agent/manage/img_2.png new file mode 100644 index 00000000..3b41063d Binary files /dev/null and b/docs/content.zh/docs/reference/agent/manage/img_2.png differ diff --git a/docs/content.zh/docs/reference/agent/manage/manage.md b/docs/content.zh/docs/reference/agent/manage/manage.md new file mode 100644 index 00000000..2fc4bcca --- /dev/null +++ b/docs/content.zh/docs/reference/agent/manage/manage.md @@ -0,0 +1,108 @@ +--- +weight: 10 +title: 功能介绍 +bookCollapseSection: false +--- + +## 功能介绍 + +## 简介 + +**INFINI Agent** 是 INFINI Console 的一个可选组件,负责采集和上传 Elasticsearch, Easysearch, Opensearch 集群的日志和指标信息,通过 INFINI Console 管理。**INFINI Agent** 支持主流操作系统和平台,安装包轻量且无任何外部依赖,可以快速方便地安装。 + +Agent 功能特性: + +- 采集上传 Elasticsearch 等集群健康信息/集群 stats/索引 stats/节点 stats 信息 +- 采集上传 Elasticsearch 等实例节点日志 +- 采集主机指标信息 + +## 快速安装探针 + +进入菜单 `资源管理` > `探针管理` 点击按钮 `Install Agent`。 可以看到 Console 会自动生成一段安装脚本,然后只需要点击脚本右上方的复制 Icon, +就可以复制安装脚本了。 +{{% load-img "/img/screenshot/agent/agent-install.jpg" %}} + +将在 Console 中复制的安装脚本粘贴到目标主机上就可以实现一键快速安装了,生成的配置文件内容类似如下: +```aidl +path.configs: config +configs.auto_reload: true +env: + API_BINDING: 0.0.0.0:8080 + +path.data: data +path.logs: log + +api: + enabled: true + tls: + enabled: true + cert_file: config/client.crt + key_file: config/client.key + ca_file: config/ca.crt + skip_insecure_verify: false + network: + binding: $[[env.API_BINDING]] + +badger: + value_log_max_entries: 1000000 + value_log_file_size: 104857600 + value_threshold: 1024 + +agent: + major_ip_pattern: .* +``` +这里的证书在安装的时候由 console 自动生成的,安装成功之后探针实例会被自动注册到 Console, +Console 后续和 agent 通过 mtls 的方式通信。安装过成中使用的 token 仅供快速安装 agent 时使用,不能 +用于其他 API, token 有效期为 `一个小时`。 + +> 这里要求 Console 所在主机和安装 Agent 主机网络是互通的 + +## 探针实例注册 + +第一步填写探针地址,按需开启 TLS 和 身份验证(开启身份验证后需要输入用户名和密码)。 + +{{% load-img "/img/screenshot/agent/agent-register-step1.jpg" %}} + +第二步,信息确认,按需修改探针名称,标签,描述信息。 + +{{% load-img "/img/screenshot/agent/agent-register-step2.jpg" %}} +输入完成之后,点击下一步完成注册 + +> 通过 INFINI Console 一键安装脚本安装 Agent 会自动注册 Console,无需手动注册 + +## 探针实例列表 + +在探针实例列表可以查询注册的探针实例,如下: +{{% load-img "/img/screenshot/agent/agent-list.jpg" %}} + +表格行展开可以看到探针上所有的 Elasticsearch, Easysearch, Opensearch 节点实例进程列表,展开后点击右上角刷新按钮可以刷新进程列表信息 + +## 节点进程关联到 Console 已注册集群 + +将探针自动发现的 Elasticsearch, Easysearch, Opensearch 节点实例进程关联到 Console 中已注册的集群,即可使用 Agent 采集集群指标以及节点日志。 +采集的集群指标数据直接可以在 Console 监控功能中使用,关联具体操作流程如下。 + +在节点实例进程列表中点击 `关联` 会出现如下界面: +{{% load-img "/img/screenshot/agent/agent-node-associate.jpg" %}} + +- 如果该节点进程实例集群已经注册到 Console, 那么只需要在弹出窗口点击 `关联` 即可完成操作。关联成功之后,Agent 会自动采集集群指标以及 + 节点日志。 +- 如果该节点进程需要身份验证信息,关联弹出窗口如下图所示: + {{% load-img "/img/screenshot/agent/agent-node-associate-auth.jpg" %}} + 这里需要输入节点地址,和身份验证信息之后尝试连接,获取节点所在集群信息 +- 如果该节点所在集群还没有在 Console 中注册,关联弹出窗口如下图所示: + {{% load-img "/img/screenshot/agent/agent-node-associate-unregistration.jpg" %}} + 这里只需要按照提示,点击 `go to register` 去注册集群,注册集群成功之后,再进行关联操作即可。 + +## 编辑探针信息 + +点击探针列表表格中的编辑按钮,进入更新界面 + +{{% load-img "/img/screenshot/agent/agent-edit.jpg" %}} + +按需修改配置,然后点击保存按钮提交 + +## 删除探针实例 + +进入菜单 `资源管理` > `探针管理`,在列表中点击对应列的 `删除`,确认之后,探针即被删除。 +{{% load-img "/img/screenshot/agent/agent-delete-instance.jpg" %}} diff --git a/docs/content.zh/docs/reference/alerting/_index.md b/docs/content.zh/docs/reference/alerting/_index.md new file mode 100644 index 00000000..79e7af5b --- /dev/null +++ b/docs/content.zh/docs/reference/alerting/_index.md @@ -0,0 +1,5 @@ +--- +weight: 105 +title: 告警管理 +bookCollapseSection: true +--- diff --git a/docs/content.zh/docs/reference/alerting/channel.md b/docs/content.zh/docs/reference/alerting/channel.md new file mode 100644 index 00000000..600c2471 --- /dev/null +++ b/docs/content.zh/docs/reference/alerting/channel.md @@ -0,0 +1,40 @@ +--- +weight: 3 +title: 告警渠道 +asciinema: true +--- + +# 告警渠道 + +## 简介 + +告警渠道用于当告警规则触发之后,发送通知消息的通道配置,目前支持 `webhook`。 + +## 渠道列表 + +在渠道列表中可以查询已经添加的渠道 +{{% load-img "/img/screenshot/20220715-alerting-channel-list.jpg" "alerting channel list" %}} + +## 新建告警渠道 + +在渠道列表页面中点击 `新建` 按钮进入新建告警渠道页面 + +{{% load-img "/img/screenshot/20220715-alerting-channel-new.jpg" "alerting channel new" %}} + +- 输入渠道名称(必填) +- 选择渠道类型(当前仅支持 webhook ) +- 输入 webhook 地址 +- 选择 HTTP 请求的方法,默认 POST +- 按需添加 HTTP 请求头 +- 配置 webhook 请求体 +- 点击保存按钮提交 + +## 更新渠道配置 + +在渠道列表中选择需要更新的渠道点击编辑按钮进入更新渠道配置页 +{{% load-img "/img/screenshot/20220715-alerting-channel-update.jpg" "alerting channel update" %}} +操作参考新建告警渠道 + +## 删除告警渠道 + +点击告警渠道列表表格中的删除按钮,进行二次确认,确认删除后执行删除操作。 diff --git a/docs/content.zh/docs/reference/alerting/message.md b/docs/content.zh/docs/reference/alerting/message.md new file mode 100644 index 00000000..64023170 --- /dev/null +++ b/docs/content.zh/docs/reference/alerting/message.md @@ -0,0 +1,28 @@ +--- +weight: 1 +title: 告警中心 +asciinema: true +--- + +# 告警中心 + +## 简介 + +消息中心默认展示的是当前系统内正在发生的告警事件,方便管理人员快速预览系统的执行状态。 + +## 事件消息列表 + +消息列表聚合了所有已触发的告警事件,如每个告警规则重复触发了多次告警消息,这里只会聚合显示一条,点击详情就可以去看更多的信息。 +{{% load-img "/img/screenshot/alerting/Alerting-Message.png" "alerting message" %}} + +## 消息详情 + +点击消息列表行列中的详情按钮可以查看当前告警事件消息的详细内容,包含事件消息的基本信息,事件触发周期内的时序曲线图,规则执行检测历史记录等,如下图所示: +{{% load-img "/img/screenshot/alerting/Alerting-Message-Detail.png" "alerting message detail" %}} + +## 忽略告警消息 + +如认为告警事件不需要做处理或者不重要,可以进行忽略操作,忽略后告警消息将不默认展在消息列表中,不过可以通过状态筛选过滤进行查询。 + +操作步骤:点击消息列表表格中的忽略按钮,进行二次确认,填写忽略原因,提交后执行忽略操作。 +{{% load-img "/img/screenshot/alerting/Alerting-Message-Ignore.jpg" "alerting message ignore" %}} diff --git a/docs/content.zh/docs/reference/alerting/rule.md b/docs/content.zh/docs/reference/alerting/rule.md new file mode 100644 index 00000000..1074af12 --- /dev/null +++ b/docs/content.zh/docs/reference/alerting/rule.md @@ -0,0 +1,75 @@ +--- +weight: 2 +title: 告警规则 +asciinema: true +--- + +# 告警规则 + +## 简介 + +告警规则包括数据源,指标定义,触发条件,消息通知四个部分的配置 + +## 告警规则列表 + +在告警规则列表中可以查询已经添加的告警规则 +{{% load-img "/img/screenshot/20220715-alerting-rule-list.jpg" "alerting rule list" %}} + +## 新建告警规则 + +在告警规则列表中点击 `新建` 按钮进入新建告警规则页面 + +### 配置数据源 + +{{% load-img "/img/screenshot/20220715-alerting-rule-new-data.jpg" "alerting rule new" %}} + +- 选择集群(必选) +- 选择索引,支持输入索引 pattern (必填) +- 输入 elasticsearch query DSL 查询过滤条件(可选) +- 选择时间字段(必选) +- 选择统计周期(用于时间字段聚合,默认一分钟) + +### 配置告警指标以及触发条件 + +{{% load-img "/img/screenshot/20220715-alerting-rule-new-metric.jpg" "alerting rule new" %}} + +- 输入规则名称 +- 按需添加分组的字段以及分组大小,可以添加多个,用于 terms 聚合 +- 选择指标聚合字段以及统计类型,可以配置多个,当配置多个时必须配置公式用于计算最终的指标 +- 配置告警触发条件 +- 选择执行检查周期 +- 输入告警事件标题(模版,被模版变量中的 title 引用,点击这里了解 [模版语法](./variables) ) +- 输入告警事件消息(模版,被模版变量中的 message 引用,点击这里了解 [模版语法](./variables) ) + +### 配置消息通知 + +{{% load-img "/img/screenshot/20220715-alerting-rule-new-notification.jpg" "alerting rule new" %}} +{{% load-img "/img/screenshot/20220715-alerting-rule-new-notification1.jpg" "alerting rule new" %}} + +- 配置通知渠道,可以重新配置,也可以通过添加按钮选择已经创建好的渠道作为模版快速填充,并支持添加多个 +- 按需选择是否开启通知升级 +- 选择沉默周期(通知消息发送频率) +- 配置通知发送时间段 +- 点击保存按钮提交 + +## 更新告警规则 + +在告警规则列表中选择需要更新的告警规则点击编辑按钮进入更新告警规则页 + +## 删除告警规则 + +点击告警规则列表表格中的删除按钮,进行二次确认,确认删除后执行删除操作。 + +## 常见规则模板一键导入 + +下面列举了一些常见告警规则,并且配置钉钉、企业微信、Slack 等通知渠道,仅需要替换模板中指定的自定义变量,即可通过 Console 的 DevTools 工具快速导入规则。 + +- [Cluster Health Change to Red](https://github.com/infinilabs/examples/blob/master/Console/Alerting-rules/Cluster-Health-Change-to-Red.md) +- [Index Health Change to Red](https://github.com/infinilabs/examples/blob/master/Console/Alerting-rules/Index-Health-Change-to-Red.md) +- [Disk utilization is Too High](https://github.com/infinilabs/examples/blob/master/Console/Alerting-rules/Disk-Utilization-is-Too-High.md) +- [CPU utilization is Too High](https://github.com/infinilabs/examples/blob/master/Console/Alerting-rules/CPU-Utilization-is-Too-High.md) +- [JVM utilization is Too High](https://github.com/infinilabs/examples/blob/master/Console/Alerting-rules/JVM-Utilization-is-Too-High.md) +- [Shard Storage >= 55G](https://github.com/infinilabs/examples/blob/master/Console/Alerting-rules/Shard-Storage-gte-55G.md) +- [Elasticsearch node left cluster](https://github.com/infinilabs/examples/blob/master/Console/Alerting-rules/Elasticsearch-Node-Left-Cluster.md) +- [Search latency is great than 500ms](https://github.com/infinilabs/examples/blob/master/Console/Alerting-rules/Search-Latency-gte-500ms.md) +- [Too Many Deleted Documents](https://github.com/infinilabs/examples/blob/master/Console/Alerting-rules/Too-Many-Deleted-Documents.md) diff --git a/docs/content.zh/docs/reference/alerting/variables.md b/docs/content.zh/docs/reference/alerting/variables.md new file mode 100644 index 00000000..75646776 --- /dev/null +++ b/docs/content.zh/docs/reference/alerting/variables.md @@ -0,0 +1,274 @@ +--- +weight: 4 +title: 模板变量 +asciinema: true +--- + +# 模板变量 + +## 简介 + +自定义告警触发事件内容时,除了自己撰写的固定文案外,事件标题、事件内容等也支持模板语法。可以使用事件中的字段实现文案的渲染。 + +## 模板变量 + +用于渲染字段的语法为 `{{ .字段名 }}`,可用于模板内容渲染的变量字段如下: + +| 变量字段名 | 字段类型 | 说明 | 示例 | +| -------------------------- | -------- | ------------------------------------------ | ------------------------------------------------------- | +| rule_id | string | rule uuid | c9f663tath2e5a0vksjg | +| rule_name | string | rule name | High CPU usage | +| resource_id | string | resource uuid | c9f663tath2e5a0vksjg | +| resource_name | string | resource name | es-v716 | +| event_id | string | identifier for check details | c9f663tath2e5a0vksjx | +| timestamp | number | Millisecond timestamp | 1654595042399 | +| trigger_at | number | Millisecond timestamp | 1654595042399 | +| duration | string | Alarm duration | "2m10s" | +| objects | string array | resource index name | [".infini_metrics*"] | +| first_group_value | string | The first value of group_values in results | c9aikmhpdamkiurn1vq0 | +| first_threshold | string | The first value of threshold in results | 90 | +| priority | string | The highest priority in results | critical | +| title | string | event title | Node (`{{.first_group_value}}`) disk used >= 90% | +| message | string | event content | EventID:`{{.event_id}}`; Cluster:`{{.resource_name}}` | +| results | array | result of groups | | +| results[0].threshold | array | | ["90"] | +| results[0].priority | string | | high | +| results[0].group_values | array | | ["cluster-xxx", "node-xxx"] | +| results[0].issue_timestamp | number | Millisecond timestamp | 1654595042399 | +| results[0].result_value | float | | 91.2 | +| results[0].relation_values | map | | {a:100, b:91.2} | + +### 变量使用示例 + +示例 1: + +``` +{"content":"【Alerting】Event ID: {{.event_id}}, Cluster:{{.resource_name}}"} +``` + +示例 2(数组遍历): + +``` +{{range .results}} Cluster ID: {{index .group_values 0}} {{end}} +``` + +## 模版中使用环境变量 + +告警模版中可以解析系统环境变量和配置文件中配置的环境变量,系统环境变量优先级高于配置文件环境变量,访问方式为: + +``` +{{$.env.VARIABLE}} +``` + +> INFINI Console 版本 1.2.0 及以上支持 + +### 系统环境变量 + +假如存在系统环境变量 `WECHAT_WEBHOOK_ENDPOINT=https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxxxxx`, +那么在告警模版中使用 `{{$.env.WECHAT_WEBHOOK_ENDPOINT}}` 就可以引用环境变量 `WECHAT_WEBHOOK_ENDPOINT` 了 + +### 配置文件中定义环境变量 + +假如 INFINI Console 配置文件 `console.yml` 中存在如下配置段: + +``` +env: + INFINI_CONSOLE_ENDPOINT: "https://play.infinilabs.com:64443" + WECHAT_WEBHOOK_ENDPOINT: "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxxxyy" +``` + +那么在告警模版中使用 {{$.env.INFINI_CONSOLE_ENDPOINT}} 就可以访问到配置文件中的环境变量 `INFINI_CONSOLE_ENDPOINT` 了 + +> 告警模版在 range 块中,这时候如果省略 $,用 {{.env.INFINI_CONSOLE_ENDPOINT}} 这种写法是没法正确解析的,需要使用 {{$.env.INFINI_CONSOLE_ENDPOINT}} 来访问根部变量 `env` + +## 模板函数 + +除了直接展示告警事件中的字段值外,还支持使用模板函数对字段值进行进一步处理,优化输出。 + +函数支持额外参数,当无需或不传递参数时,可以直接使用以下语法进行使用: + +`{{ <模板变量> | <模板函数> }}` + +具体实例如下: + +模板函数不带参数: + +``` +告警事件触发时间:{{ .timestamp | datetime }} +``` + +模板函数带参数: + +``` +告警事件触发时间:{{ .timestamp | datetime_in_zone "Asia/Shanghai" }} +``` + +多个函数组合使用: + +``` +字节类型的数值格式化后再转位大写:{{.result_value | format_bytes 2 | to_upper}} +``` + +完整的模板函数列表如下: + +| 模板函数 | 参数 | 说明 | +| ------------------- | ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------- | +| to_fixed | 固定小数位数 | float 类型数值保留 N 位小数位
示例:`{{.result_value | to_fixed 2}}`
输出:10.35 | +| format_bytes | 固定小数位数 | 字节类型数值格式化
示例:`{{.result_value | format_bytes 2}}`
输出:10.35gb | +| date | | 时间戳转为 UTC 日期
示例:`{{.timestamp | date}}`
输出:2022-05-01 | +| date_in_zone | 时区 | 时间戳转为当前区域日期
示例:`{{.timestamp | date_in_zone "Asia/Shanghai"}}`
输出:2022-05-01 | +| datetime | | 时间戳转为 UTC 时间
示例:`{{.timestamp | datetime}}`
输出:2022-05-01 10:10:10 | +| datetime_in_zone | 时区 | 时间戳转为当前区域时间
示例:`{{.timestamp | datetime_in_zone "Asia/Shanghai"}}`
输出:2022-05-01 10:10:10 | +| to_lower | | 英文字符转为小写
示例:`{{.resource_name | to_lower }}`
输出:cluster | +| to_upper | | 英文字符转为大写
示例:`{{.resource_name | to_upper }}`
输出:CLUSTER | +| add | 数值类型 | 数值相加
示例:`{{.result_value | add 1 }}`
输出:2 | +| sub | 数值类型 | 数值相减
示例:`{{sub .result_value 1 }}`
输出:0 | +| mul | 数值类型 | 数值相乘
示例:`{{mul .result_value 3 2 }}`
输出:6 | +| div | 数值类型 | 数值相除
示例:`{{div .result_value 2 }}`
输出:0.5 | +| lookup | 字符串类型 | 通过标识字段获取相关数据其他字段信息
示例(根据集群 ID 获取集群名称):`{{lookup "category=metadata, object=cluster, property=name, default=N/A" "cg84bttath2dl9gaf50g"}}`
输出:es710 | +| str_replace | 字符串类型 | 字符串替换
示例:`{{ "hello world" | str_replace "world" "world!"}}`
输出:`hello world!` | +| md_to_html | 字符串类型 | markdown 转 html 格式
示例:`{{ "**hello world**" | md_to_html }}`
输出:`

hello world

` | + +> 目前 lookup 函数第一个查找目录参数设置里面 `category` 仅支持 `metadata` 固定写法;`object` 可选值为 `cluster|node|index`,这三个指分别对应从 +> 系统索引 `.infini_cluster|.infini_node|.infini_index` 中查找数据; `property` 指定获取哪个字段;`default` 找不到对应字段或者出错时的返回值; +> eg: 索引 .infini_node 中有如下一条数据 +> `{ +"metadata": { +"cluster_name": "easysearch-7201", +"cluster_id": "cgn4f7t3q95k3acgcam0", +"host": "10.0.0.3", +"node_name": "node_1", +"category": "elasticsearch", +"node_id": "tM87zZ-3TxCCPtJeOY1hSg", +"labels": { +"ip": "10.0.0.3", +"roles": [ +"data", +"ingest", +"master", +"remote_cluster_client" +], +"transport_address": "10.0.0.3:17201", +"version": "1.0.0", +"status": "unavailable" +} +}, +"payload": {...} +} +` +> +> 则可以使用节点 ID `tM87zZ-3TxCCPtJeOY1hSg` 来查询节点名称,查询方法如下: +> `{{lookup "category=metadata, object=node, property=metadata.node_name, default=N/A" "tM87zZ-3TxCCPtJeOY1hSg"}}` + +## 常用模板语法 + +array 数组遍历: + +``` +{{range .results}} priority: {{.priority}} {{end}} +``` + +通过数组下标取值: + +示例:`group_values = ["value1","value2","value3"]` + +``` +{{index .group_values 0}} +#输出值为:value1 +{{index .group_values 2}} +输出值为:value3 +``` + +if 条件分支: + +``` +{{if pipeline}} T1 {{else}} T0 {{end}} +``` + +示例: + +``` +{{if eq .priority "critical"}} "#C91010" {{else if eq .priority "high"}} "#EB4C21" {{else}} "#FFB449" {{end}} +``` + +完整的比较运算符用法: + +``` +eq + Returns the boolean truth of arg1 == arg2 +ne + Returns the boolean truth of arg1 != arg2 +lt + Returns the boolean truth of arg1 < arg2 +le + Returns the boolean truth of arg1 <= arg2 +gt + Returns the boolean truth of arg1 > arg2 +ge + Returns the boolean truth of arg1 >= arg2 +``` + +{{< expand "Slack message 模板完整示例" "..." >}} + +``` +{ + "blocks": [ + { + "type": "section", + "text": { + "type": "mrkdwn", + "text": "【test201】Alerting:\n <@username>" + } + }, + { + "type": "section", + "text": { + "type": "mrkdwn", + "text": "*Timestamp:* {{.issue_timestamp | datetime}}" + } + } + ], + "attachments": [ + {{range .results}} + { + "color": {{if eq .priority "critical"}} "#C91010" {{else if eq .priority "high"}} "#EB4C21" {{else}} "#FFB449" {{end}}, + "blocks": [ + { + "type": "section", + "fields": [ + { + "type": "mrkdwn", + "text": "*Cluster:* {{index .group_values 0}}" + }, + { + "type": "mrkdwn", + "text": "*Node:* {{index .group_values 1}}" + }, + { + "type": "mrkdwn", + "text": "*Threshold:* {{index .threshold 0}}" + }, + { + "type": "mrkdwn", + "text": "*Priority:* {{.priority}}" + }, + { + "type": "mrkdwn", + "text": "*Monitoring value:* {{.result_value}}" + }, + { + "type": "mrkdwn", + "text": "*Disk usage:* {{.relation_values.a | format_bytes 2 | to_upper}}" + } + ] + } + ] + }, + {{end}} + ] +} +``` + +{{< /expand >}} + +更多模板语法[点击查看](https://pkg.go.dev/text/template#pkg-overview) diff --git a/docs/content.zh/docs/reference/data-insight/_index.md b/docs/content.zh/docs/reference/data-insight/_index.md new file mode 100644 index 00000000..8b3efa63 --- /dev/null +++ b/docs/content.zh/docs/reference/data-insight/_index.md @@ -0,0 +1,5 @@ +--- +weight: 104 +title: 数据分析 +bookCollapseSection: true +--- diff --git a/docs/content.zh/docs/reference/data-insight/dashboard.md b/docs/content.zh/docs/reference/data-insight/dashboard.md new file mode 100644 index 00000000..ecea4bb9 --- /dev/null +++ b/docs/content.zh/docs/reference/data-insight/dashboard.md @@ -0,0 +1,84 @@ +--- +weight: 1 +title: 数据看板 +--- + +# 数据看板 + +## Workspace 列表 + +点击 `标签页+`,可查看已创建的 workspace 列表: + +{{% load-img "/img/screenshot/dashboard/list.png"%}} + +## 创建 Workspace + +点击 workspace 列表中的 `Create New`,进入创建界面: + +{{% load-img "/img/screenshot/dashboard/create.png"%}} + +## 设置 Wrokspace + +点击 `Setting`,进入配置抽屉框,可配置名称、描述、数据来源条件等信息: + +{{% load-img "/img/screenshot/dashboard/setting.png"%}} + +## 删除 Workspace + +点击 workspace 列表中的删除图标,在弹出的确认框中点击 `ok`,即可删除 workspace + +{{% load-img "/img/screenshot/dashboard/delete.png"%}} + +## 保存 Workspace + +点击 `Save`,即可保存当前 workspace 的所有配置信息 + +## 添加 Workspace 到标签栏 + +在 workspace 列表中,点击 workspace,即可添加到标签页 + +## 从标签栏移除 workspace + +点击标签栏最右侧的编辑按钮,进入编辑模式: + +{{% load-img "/img/screenshot/dashboard/remove.png"%}} + +点击标签页上的 `X` 图标,即可移除该标签页 + +## 添加 Widget + +- 创建 widget + +点击 `Add Widget`,在弹出的抽屉框中,选择 widget 类型,点击 `add` 即可创建对应类型的 widget: + +{{% load-img "/img/screenshot/dashboard/add-widget-1.png"%}} + +{{% load-img "/img/screenshot/dashboard/add-widget-2.png"%}} + +- 导入 widget + +点击 `Import Widget`,在弹出的抽屉框中,点击 `add` 即可导入对应视图的 widgets: + +{{% load-img "/img/screenshot/dashboard/import-widget-1.png"%}} + +## 编辑 Widget + +点击 Widget 右上角的 `···`,点击下拉菜单中的 `Setting`: + +{{% load-img "/img/screenshot/dashboard/widget-setting-1.png"%}} + +在弹出的抽屉框中可进行 widget 配置: + +{{% load-img "/img/screenshot/dashboard/widget-setting-2.png"%}} + +点击`Save`保存 widget 配置到 workspace: + +{{% load-img "/img/screenshot/dashboard/widget-setting-3.png"%}} + +## 删除 Widget + +点击 Widget 右上角的`···`,点击下拉菜单中的 `Remove`,即可从 workspace 移除 widget + +## 复制 Widget + +点击 Widget 右上角的`···`,点击下拉菜单中的 `Copy`,即可复制 widget 到当前 workspace diff --git a/docs/content.zh/docs/reference/data-insight/discover.md b/docs/content.zh/docs/reference/data-insight/discover.md new file mode 100644 index 00000000..a9b127f1 --- /dev/null +++ b/docs/content.zh/docs/reference/data-insight/discover.md @@ -0,0 +1,75 @@ +--- +weight: 2 +title: 数据探索 +asciinema: true +--- + +# 数据探索 + +## 简介 + +在数据探索里,可以根据时间、字段等条件对索引或者视图下的数据进行搜索查询,数据展示方式有常规模式和 Insight 模式。 + +## 搜索工具栏 + +### 索引(视图) + +{{% load-img "/img/screenshot/discover/20220825-discover-index.png"%}} + +### 搜索语句 + +{{% load-img "/img/screenshot/discover/20220825-discover-query.png"%}} + +### 时间范围 + +{{% load-img "/img/screenshot/discover/20220825-discover-datepicker.png"%}} + +### 字段过滤 + +{{% load-img "/img/screenshot/discover/20220825-discover-filter.png"%}} + +### 保存搜索 + +{{% load-img "/img/screenshot/discover/20220825-discover-save-icon.png"%}} + +{{% load-img "/img/screenshot/discover/20220825-discover-save.png"%}} + +### 保存的搜索列表 + +{{% load-img "/img/screenshot/discover/20220825-discover-save-list-icon.png"%}} + +{{% load-img "/img/screenshot/discover/20220825-discover-save-list.png"%}} + +### Insight 模式 + +{{% load-img "/img/screenshot/discover/20220825-discover-insight-icon.png"%}} + +### Insight 配置 + +{{% load-img "/img/screenshot/discover/20220825-discover-insight-setting-icon.png"%}} + +{{% load-img "/img/screenshot/discover/20220825-discover-insight-setting.png"%}} + +## 常规模式 + +常规模式下用多功能图表灵活地添加字段来展示数据 + +{{% load-img "/img/screenshot/discover/20220825-discover-normal.png"%}} + +可对文档数据进行编辑、删除等操作 + +{{% load-img "/img/screenshot/discover/20220825-discover-normal-document-actions.png"%}} + +## Insight 模式 + +Insight 模式下会根据数据特征推送可视化图表来展示数据 + +{{% load-img "/img/screenshot/discover/20220825-discover-insight.png"%}} + +可通过推送列表添加图表 + +{{% load-img "/img/screenshot/discover/20220825-discover-insight-metric-list.png"%}} + +可对图表进行编辑、删除 + +{{% load-img "/img/screenshot/discover/20220825-discover-insight-chart-actions.png"%}} diff --git a/docs/content.zh/docs/reference/data/_index.md b/docs/content.zh/docs/reference/data/_index.md new file mode 100644 index 00000000..5b0c0a98 --- /dev/null +++ b/docs/content.zh/docs/reference/data/_index.md @@ -0,0 +1,13 @@ +--- +weight: 103 +title: "数据管理" +bookCollapseSection: true +--- + +# 数据管理 + +## 简介 + +INFINI Console 数据管理,可以让您无缝在不同的业务集群里面遨游,支持索引的常用管理操作,快速查看和浏览索引内的文档信息,就地进行文档的编辑和删除。同时支持创建数据视图,修改字段的展示格式,时序索引数据一键快速查看。 + +{{% load-img "/img/screenshot/20220330-data_indices.jpg" "Create Platform Role" %}} diff --git a/docs/content.zh/docs/reference/data/alias.md b/docs/content.zh/docs/reference/data/alias.md new file mode 100644 index 00000000..eca043ce --- /dev/null +++ b/docs/content.zh/docs/reference/data/alias.md @@ -0,0 +1,27 @@ +--- +weight: 2 +title: 别名管理 +asciinema: true +--- + +# 别名管理 + +## 别名列表 + +别名列表包括对别名的增删改查操作。 + +{{% load-img "/img/screenshot/data/alias-list.jpg" "Alias management" %}} + +## 新建别名 + +{{% load-img "/img/screenshot/data/alias-create.jpg" "Alias management" %}} + +- 别名:输入别名名称 +- 索引:选择别名对应的目标索引,支持使用 (\*) 来绑定多个索引。 +- 是否为写索引:指定选择的索引是否可写,如果别名只绑定一个索引,则默认该索引可写;如果是通过 (\*) 绑定多个索引,最需要指定其中一个索引为可写。 + +## 别名与索引关系列表 + +点开别名列表行首的`+`号按钮,会展开显示该别名对应绑定的索引列表,同时可以对索引进行关系绑定更新设置和删除。 + +{{% load-img "/img/screenshot/data/alias-sub-list.jpg" "Alias management" %}} diff --git a/docs/content.zh/docs/reference/data/indices.md b/docs/content.zh/docs/reference/data/indices.md new file mode 100644 index 00000000..0615a77b --- /dev/null +++ b/docs/content.zh/docs/reference/data/indices.md @@ -0,0 +1,25 @@ +--- +weight: 1 +title: 索引管理 +asciinema: true +--- + +# 索引管理 + +## 索引列表 + +索引列表包括对索引的增删改查操作。 + +{{% load-img "/img/screenshot/20220330-data_indices.jpg" "Index management" %}} + +## 新建索引 + +输入新索引名称及索引设置即可完成添加。 + +{{% load-img "/img/screenshot/20220715-Create Index.png" "Index management" %}} + +## 索引详情 + +可以查看索引健康状态、分片数、文档数、存储大小等详情,以及 Mappings、Edit settings 的查看和修改。 + +{{% load-img "/img/screenshot/20220715-INDEX-Detail.png" "Index management" %}} diff --git a/docs/content.zh/docs/reference/data/view.md b/docs/content.zh/docs/reference/data/view.md new file mode 100644 index 00000000..ea7dbd88 --- /dev/null +++ b/docs/content.zh/docs/reference/data/view.md @@ -0,0 +1,36 @@ +--- +weight: 3 +title: 数据视图 +asciinema: true +--- + +# 数据视图 + +## 视图列表 + +创建和管理数据视图可以帮助您更好地从 Elasticsearch 获取数据。 + +{{% load-img "/img/screenshot/20220715-View.png" "Data View" %}} + +## 创建视图 + +### 步骤 1 定义数据视图 + +{{% load-img "/img/screenshot/20220715-Create View1.png" "Data View" %}} + +- 输入数据视图名称 +- 匹配规则:匹配相应索引,也可以使用 (\*) 来匹配多个索引。 + +### 步骤 2 配置 + +{{% load-img "/img/screenshot/20220715-Create View2.png" "Data View" %}} + +- 为数据视图索引选择时间字段作为时间过滤 + +- 创建完成 + +## 编辑数据视图 + +{{% load-img "/img/screenshot/20220715-View-Edit.png" "Data View" %}} + +页面列出匹配索引的所有字段,可以对字段的 Format、Popularity 等做相关设置。 diff --git a/docs/content.zh/docs/reference/dev-tools/_index.md b/docs/content.zh/docs/reference/dev-tools/_index.md new file mode 100644 index 00000000..512ad238 --- /dev/null +++ b/docs/content.zh/docs/reference/dev-tools/_index.md @@ -0,0 +1,5 @@ +--- +weight: 106 +title: 开发工具 +bookCollapseSection: true +--- diff --git a/docs/content.zh/docs/reference/dev-tools/command.md b/docs/content.zh/docs/reference/dev-tools/command.md new file mode 100644 index 00000000..136286ec --- /dev/null +++ b/docs/content.zh/docs/reference/dev-tools/command.md @@ -0,0 +1,39 @@ +--- +weight: 2 +title: 常用命令 +--- + +# 常用命令 + +## 简介 + +常用命令用于在开发工具中将高频使用的 Elasticsearch 请求保存, 这样后续如果需要使用, +只需要在开发工具中使用 LOAD 命令加载,即可快速使用。 + +## 保存常用命令 + +打开 console 右上角的开发工具(Ctrl+shift+o), 在开发工具中选择需要保存的 Elasticsearch 请求 +(支持一次选中多个请求保存为常用命令),选中之后点击工具栏里面的 Save As Command 提交。 + +{{% load-img "/img/screenshot/20220330-devtool_save.jpg" "devtool save" %}} + +## 加载常用命令 + +在开发工具里,输入 LOAD + 保存的命令名称关键字 会自动提示相关已保存的常用命令, +选中要加载的命令后,按回车键即可自动加载相应的常用命令。 + +{{% load-img "/img/screenshot/20220330-devtool_load.jpg" "devtool load" %}} + +## 常用命令列表 + +在常用命令列表中可以查询已经保存的常用命令 + +{{% load-img "/img/screenshot/20220705-command-list.jpg" "command list" %}} + +点击在列表中常用命令名称一栏可以查看常用命令具体信息, 也可以修改名称和 tag 信息 + +{{% load-img "/img/screenshot/20220705-command-detail.jpg" "command detail" %}} + +## 删除常用命令 + +点击常用命令列表中的删除按钮,进行二次确认,确认之后执行删除操作。 diff --git a/docs/content.zh/docs/reference/dev-tools/dev-tools.md b/docs/content.zh/docs/reference/dev-tools/dev-tools.md new file mode 100644 index 00000000..def1dff4 --- /dev/null +++ b/docs/content.zh/docs/reference/dev-tools/dev-tools.md @@ -0,0 +1,35 @@ +--- +weight: 1 +title: 开发工具 +--- + +# 开发工具 + +## 简介 + +使用开发工具可以快速地编写和执行 Elasticsearch 查询以及其他的 elasticsearch API。 +当开启安装验证后,所有的请求都会经过 API 级别权限校验 + +## 打开开发工具 + +使用 Ctrl+Shift+O 快捷键打开或者在 console 右上角图标打开。 + +{{% load-img "/img/screenshot/20220330-devtool.jpg" "dev tool" %}} + +## 执行请求快捷键 + +Command+Enter 或者 Ctrl+Enter + +## 多集群多 Tab 页支持 + +开发工具支持使用 Tab 页同时打开多个集群,即使是同一个集群,也可以打开多个,Tab 页之间状态是独立的。 +Tab 页默认使用集群名称作为标题,双击 Tab 页标题可以修改。 +开发工具下方是一个状态栏,左侧是当前集群的健康状态、http 地址、版本信息, +右侧是 elasticsearch 接口请求的响应状态以及时长。 + +{{% load-img "/img/screenshot/20220330-devtool_tab.jpg" "dev tool tab" %}} + +## 查看请求头信息 + +当使用开发工具执行 elasticsearch 请求之后,可以在右侧点击 headers Tab 页查看请求头信息。 +{{% load-img "/img/screenshot/20220706-devtool-headers.jpg" "dev tool headers" %}} diff --git a/docs/content.zh/docs/reference/migration/_index.md b/docs/content.zh/docs/reference/migration/_index.md new file mode 100644 index 00000000..949371d3 --- /dev/null +++ b/docs/content.zh/docs/reference/migration/_index.md @@ -0,0 +1,5 @@ +--- +weight: 107 +title: 数据工具 +bookCollapseSection: true +--- diff --git a/docs/content.zh/docs/reference/migration/comparison.md b/docs/content.zh/docs/reference/migration/comparison.md new file mode 100644 index 00000000..caa17dab --- /dev/null +++ b/docs/content.zh/docs/reference/migration/comparison.md @@ -0,0 +1,74 @@ +--- +weight: 1 +title: 数据比对 +asciinema: true +--- + +# 数据比对 + +## 创建比对任务 + +点击 INFINI Console 中左侧菜单 数据工具 》数据比对,然后点击新建按钮创建比对任务,如下图所示: + +{{% load-img "/img/reference/migration/comparison/1.png"%}} + +### 配置比对集群 + +然后在源集群列表中选择集群 `opensearch-v1.0`, 在目标集群列表中选择集群 `sy_cluster`: +{{% load-img "/img/reference/migration/comparison/2.png"%}} + +### 配置比对索引 + +点击选择比对索引按钮, 这里我们选择了索引 `tv6-migration` ,然后点击确认: + +{{% load-img "/img/reference/migration/comparison/3.png"%}} + +然后我们可以选择需要比对的目标索引 `tv6-sy`: + +{{% load-img "/img/reference/migration/comparison/4.png"%}} + +然后点击下一步。 + +### 配置过滤条件和分区规则 + +如果需要过滤源索引和目标索引的数据,可以进行数据范围的设置,过滤条件对源索引和目标索引同时生效: +{{% load-img "/img/reference/migration/comparison/5.png"%}} + +我们可以对数据进行分区配置,分区比对可以方便我们后续定位差异数据的来源。分区规则也对源索引和目标索引同样生效: +{{% load-img "/img/reference/migration/comparison/6.png"%}} + +然后点击下一步。 + +### 运行设置 + +我们设置任务运行的参数,通常情况下不需要调整。我们选择任务运行的节点,然后点击创建任务: +{{% load-img "/img/reference/migration/comparison/7.png"%}} + +### 配置增量数据比对 + +如果索引内的数据是持续写入的(日志等场景),可以配置增量比对任务,持续检测源集群和目标集群的数据差异。 + +在配置索引时,对增量写入的索引配置增量字段(如 timestamp)和数据的写入延迟(默认 15 分钟)。配置写入延迟的目的是为了防止导出数据时有部分数据未落盘,导致数据比对异常: +{{% load-img "/img/reference/migration/comparison/incremental-1.png"%}} + +创建任务时,勾选 Detect Incremental Data,并设置检测间隔(默认 15 分钟): +{{% load-img "/img/reference/migration/comparison/incremental-2.png"%}} + +任务开始后,会持续比对源集群和目标集群的增量数据。如果想要暂停数据比对,可以点击 Pause 按钮,暂停增量任务。点击 Resume 之后,任务暂停期间写入的数据会照常校验: +{{% load-img "/img/reference/migration/comparison/incremental-3.png"%}} + +## 启动比对任务 + +创建比对任务成功后会看到任务列表,我们可以在右侧选择 Start,启动新创建的任务: +{{% load-img "/img/reference/migration/comparison/8.png"%}} + +点击 Detail 按钮,我们可以查看任务的详细情况: +{{% load-img "/img/reference/migration/comparison/9.png"%}} + +我们可以点击索引列表右上方的刷新按钮,这样可以持续更新进度信息: +{{% load-img "/img/reference/migration/comparison/10.png"%}} + +如果数据比对成功,对应的分区方块会显示为绿色,否则为红色: +{{% load-img "/img/reference/migration/comparison/11.png"%}} + +如果比对过程中有方块变成了红色,则表示比对失败,这时候可以点击任务方块进度信息里面的 `View Log` 查看错误日志,定位具体错误原因。 diff --git a/docs/content.zh/docs/reference/migration/migration.md b/docs/content.zh/docs/reference/migration/migration.md new file mode 100644 index 00000000..d28d4014 --- /dev/null +++ b/docs/content.zh/docs/reference/migration/migration.md @@ -0,0 +1,105 @@ +--- +weight: 1 +title: 数据迁移 +asciinema: true +--- + +# 数据迁移 + +## 创建迁移任务 + +点击 INFINI Console 中左侧菜单 数据工具 》数据迁移,然后点击新建按钮创建迁移任务,如下图所示: + +### 配置迁移集群 + +{{% load-img "/img/screenshot/migration/20221025-migration-step1-1.jpg"%}} +在源集群列表中选择集群 es-v5616, 在目标集群列表中选择集群 es-v710 + +### 配置迁移索引 + +点击选择迁移索引按钮, 如下图: + +{{% load-img "/img/screenshot/migration/20230420-create-migration3.jpg"%}} + +这里我们选择了索引 test ,然后点击确认 + +{{% load-img "/img/screenshot/migration/20230420-create-migration4.jpg"%}} + +> test 索引包含两个 type,系统自动按 type 拆分成两个索引 + +表格右方可以设置目标索引名称和文档 type,按需修改即可。 +选择完索引之后,点击下一步,进行索引的初始化操作,如下图: +{{% load-img "/img/screenshot/migration/20230420-create-migration5.jpg"%}} + +点击展开后,可以看到有 mappings 和 settings 设置,如图所示, +mappings 设置左侧显示的是源集群索引的 mappings, 可以点击中间按钮复制到右侧, +然后点击 `Auto Optimize` 自动优化(兼容性优化)。设置完成后点击 `Start` +执行初始化 mappings 和 settings 操作,若没有设置,则自动跳过。 + +> 如果已通过其他方式初始化索引 settings 和 mappings, 这里可以直接点击下一步跳过 + +完成索引初始化之后,点击下一步,进行迁移任务的数据范围设置和分区设置,如下图: +{{% load-img "/img/screenshot/migration/20230420-create-migration6.jpg"%}} + +### 配置数据范围 + +如果需要过滤数据迁移,可以进行数据范围的设置,这里我们进行全量的数据迁移,就不设置了 +{{% load-img "/img/screenshot/migration/20230420-create-migration7.jpg"%}} + +### 配置数据分区 + +如果一个索引数据量特别大,可以进行数据分区的设置。数据分区根据设置的字段,以及分区步长将数据拆成多段,系统最终会将一个分段的数据作为一个子任务去运行,迁移数据, +这样的话即使,一个分段迁移过程出现异常,只需要重跑这个子任务。 + +{{% load-img "/img/screenshot/migration/20230420-create-migration8.jpg"%}} + +数据分区设置目前支持按照日期类型字段(date), 和数字类型 (number) 拆分分区,如上图所示,我们选择日期类型字段 now_widh_format 进行拆分分区,分区步长设置为 5 分钟(5m), 然后点击预览按钮,可以看到根据设置拆分可以得到 8 个分区(文档数为 0 的分区最终不会生成子任务)。 +根据预览信息确认分区设置无误之后,点击保存关闭分区设置并保存,然后点击下一步进行运行设置。 + +### 运行设置 + +{{% load-img "/img/screenshot/migration/20230420-create-migration9.jpg"%}} + +一般情况下使用默认设置,然后执行节点选择先前注册的网关实例 Nebula,然后点击创建任务。 + +### 配置增量数据迁移 + +如果索引内的数据是持续写入的(日志等场景),可以配置增量迁移,持续检测并迁移源集群数据,确保目标集群数据同步。 + +在配置索引时,对增量写入的索引配置增量字段(如 timestamp)和数据的写入延迟(默认 15 分钟)。配置写入延迟的目的是为了防止从源集群导出数据时部分数据未落盘,导致目标集群数据缺失: +{{% load-img "/img/screenshot/migration/20230608-migration-incremental-1.png"%}} + +创建任务时,勾选 Detect Incremental Data,并设置检测间隔(默认 15 分钟): +{{% load-img "/img/screenshot/migration/20230608-migration-incremental-2.png"%}} + +点击开始后,任务每间隔 15 分钟就会导入一次增量数据到目标集群。如果想要暂停增量迁移,可以点击 Pause 按钮,暂停增量任务。点击 Resume 之后,暂停期间源集群写入的数据会照常导入目标集群: + +{{% load-img "/img/screenshot/migration/20230608-migration-incremental-3.png"%}} + +## 启动迁移任务 + +创建迁移任务成功后会看到任务列表,如下图: + +{{% load-img "/img/screenshot/migration/20230420-migration10.jpg"%}} +可以看到,最近一条任务就是我们刚创建的,然后在表格右侧操作栏中点击 start 开始任务 + +> 任务开始之前,需要确认如果迁移索引涉及到 ILM 配置,需要确认目标集群中相关索引模版,ILM 别名是否配置好。 + +点击开始按钮 启动迁移任务。 + +## 查看迁移任务进度 + +任务启动成功之,点击详情进入任务详情页查看任务执行状态。点击 `Refresh` 按钮开启自动刷新之后,我们可以看到任务详情有如下变化: + +{{% load-img "/img/screenshot/migration/20230420-migration11.jpg"%}} + +图中蓝色方块表示,子任务(分区任务)已经在运行,灰色表示任务还没有开始 + +{{% load-img "/img/screenshot/migration/20230420-migration12.jpg"%}} + +上图中可以看到方块变成了绿色,表示子任务(分区任务)已经数据迁移完成,索引 test-doc 的迁移进度是 100%, 索引 test-doc1 迁移进度是 21.11 + +{{% load-img "/img/screenshot/migration/20230420-migration13.jpg"%}} + +上图中可以看到所有方块变成了绿色,索引迁移进度都是 100%, 表示数据已经迁移完成。 +如果迁移过程中有方块变成了红色,则表示迁移过程出现了错误,这时候可以点击任务方块进度信息里面的 `View Log` 查看错误日志,定位具体错误原因。 diff --git a/docs/content.zh/docs/reference/overview/_index.md b/docs/content.zh/docs/reference/overview/_index.md new file mode 100644 index 00000000..11516aa5 --- /dev/null +++ b/docs/content.zh/docs/reference/overview/_index.md @@ -0,0 +1,12 @@ +--- +weight: 101 +title: 工作台 +--- + +# 工作台 + +## 简介 + +工作台是整个系统的概览,可以快速了解整个系统的运行状态。 + +{{% load-img "/img/screenshot/overview/overview.png" %}} diff --git a/docs/content.zh/docs/reference/platform/_index.md b/docs/content.zh/docs/reference/platform/_index.md new file mode 100644 index 00000000..1d7d6ef5 --- /dev/null +++ b/docs/content.zh/docs/reference/platform/_index.md @@ -0,0 +1,5 @@ +--- +weight: 102 +title: 平台管理 +bookCollapseSection: true +--- diff --git a/docs/content.zh/docs/reference/platform/activities.md b/docs/content.zh/docs/reference/platform/activities.md new file mode 100644 index 00000000..0e0f072a --- /dev/null +++ b/docs/content.zh/docs/reference/platform/activities.md @@ -0,0 +1,12 @@ +--- +weight: 4 +title: 集群动态 +--- + +# 集群动态 + +## 简介 + +当注册的集群后,在集群动态里面可以观测到集群的动态。 + +{{% load-img "/img/screenshot/platform/activities.png" %}} diff --git a/docs/content.zh/docs/reference/platform/infini-metrics-fields-description.md b/docs/content.zh/docs/reference/platform/infini-metrics-fields-description.md new file mode 100644 index 00000000..765651af --- /dev/null +++ b/docs/content.zh/docs/reference/platform/infini-metrics-fields-description.md @@ -0,0 +1,682 @@ +--- +weight: 3 +title: 指标说明 +--- + +# .infini_metrics 监控指标字段说明 + +## agent + +| 字段名 | 说明 | +| -------------- | ----------------------------------------------- | +| agent.hostname | 主机名称 | +| agent.id | 实例 ID | +| agent.ips | 主机 IP 列表 | +| agent.major_ip | 主 IP(配置文件 metrics.major_ip_pattern 指定) | + +## metadata + +| 字段名 | 说明 | +| --------------------------------- | -------------------- | +| metadata.category | 指标分类 | +| metadata.datatype | 指标数据类型 | +| metadata.name | 指标名称 | +| metadata.version | 指标所属实例的版本号 | +| metadata.labels.cluster_id | 集群 ID | +| metadata.labels.cluster_uuid | 集群 UUID(ES 生成) | +| metadata.labels.index_id | 索引 ID | +| metadata.labels.index_name | 索引名称 | +| metadata.labels.index_uuid | 索引 UUID(ES 生成) | +| metadata.labels.ip | IP | +| metadata.labels.id | 实例 ID | +| metadata.labels.name | 实例名 | +| metadata.labels.node_id | 节点 ID | +| metadata.labels.node_name | 节点名称 | +| metadata.labels.transport_address | ES 节点 TCP 监听地址 | + +## payload.elasticsearch.cluster_health + +| 字段名 | 说明 | +| --------------------------------------------------------------------- | --------------------------------------- | +| payload.elasticsearch.cluster_health.active_primary_shards | ES 集群可用的主分片数量 | +| payload.elasticsearch.cluster_health.active_shards | ES 集群可用的总分片数量 | +| payload.elasticsearch.cluster_health.active_shards_percent_as_number | ES 集群可用的总分片数量所占百分比 | +| payload.elasticsearch.cluster_health.cluster_name | ES 集群名称 | +| payload.elasticsearch.cluster_health.delayed_unassigned_shards | ES 集群延迟未分配的分片数量 | +| payload.elasticsearch.cluster_health.initializing_shards | ES 集群正在初始化的分片数量 | +| payload.elasticsearch.cluster_health.number_of_data_nodes | ES 集群数据节点数 | +| payload.elasticsearch.cluster_health.number_of_in_flight_fetch | ES 集群未完成读取的数量 | +| payload.elasticsearch.cluster_health.number_of_nodes | ES 集群总节点数 | +| payload.elasticsearch.cluster_health.number_of_pending_tasks | ES 集群等待执行任务数量 | +| payload.elasticsearch.cluster_health.relocating_shards | ES 集群正在迁移的分片数量 | +| payload.elasticsearch.cluster_health.status | ES 集群状态 | +| payload.elasticsearch.cluster_health.task_max_waiting_in_queue_millis | ES 集群任务在队列中等待的最大时间(毫秒) | +| payload.elasticsearch.cluster_health.timed_out | ES 集群是否超时 | +| payload.elasticsearch.cluster_health.unassigned_shards | ES 集群未分配的分片数量 | + +## payload.elasticsearch.cluster_stats + +| 字段名 | 说明 | +| -------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | +| payload.elasticsearch.cluster_stats.cluster_name | ES 集群名称 | +| payload.elasticsearch.cluster_stats.cluster_uuid | ES 集群 UUID(唯一标识) | +| payload.elasticsearch.cluster_stats.indices.analysis.analyzer_types.count | ES 集群索引中使用的该分析器的次数 | +| payload.elasticsearch.cluster_stats.indices.analysis.analyzer_types.index_count | ES 集群中使用该分析器的索引数 | +| payload.elasticsearch.cluster_stats.indices.analysis.analyzer_types.name | ES 集群索引中使用的分析器类型 | +| payload.elasticsearch.cluster_stats.indices.analysis.built_in_filters.count | ES 集群索引中使用的该分析器的次数 | +| payload.elasticsearch.cluster_stats.indices.analysis.built_in_filters.index_count | ES 集群中使用该分析器的索引数 | +| payload.elasticsearch.cluster_stats.indices.analysis.built_in_filters.name | ES 集群索引中使用的分析器类型 | +| payload.elasticsearch.cluster_stats.indices.analysis.built_in_tokenizers.count | ES 集群索引中使用的该内置标记器的次数 | +| payload.elasticsearch.cluster_stats.indices.analysis.built_in_tokenizers.index_count | ES 集群中使用该内置标记器的索引数 | +| payload.elasticsearch.cluster_stats.indices.analysis.built_in_tokenizers.name | ES 集群索引中使用的内置标记器类型 | +| payload.elasticsearch.cluster_stats.indices.completion.size_in_bytes | ES 集群索引 complete 缓存使用大小 | +| payload.elasticsearch.cluster_stats.indices.count | ES 集群索引总数 | +| payload.elasticsearch.cluster_stats.indices.docs.count | ES 集群索引主分片文档数 | +| payload.elasticsearch.cluster_stats.indices.docs.deleted | ES 集群索引主分片删除的文档数 | +| payload.elasticsearch.cluster_stats.indices.field_types.count | ES 集群中使用该数据类型的数量 | +| payload.elasticsearch.cluster_stats.indices.field_types.index_count | ES 集群中使用该数据类型的索引数量 | +| payload.elasticsearch.cluster_stats.indices.field_types.name | ES 集群索引字段数据类型 | +| payload.elasticsearch.cluster_stats.indices.fielddata.evictions | ES 集群索引字段数据缓存中清除的数量(当超过堆内存阈值为了安全保护时会被驱逐,查询抛出 Data too large 异常) | +| payload.elasticsearch.cluster_stats.indices.fielddata.memory_size_in_bytes | ES 集群索引字段数据缓存总大小 | +| payload.elasticsearch.cluster_stats.indices.query_cache.cache_count | ES 集群查询缓存中总的条目数包含被驱逐的(cache_size 与 evictions 之和) | +| payload.elasticsearch.cluster_stats.indices.query_cache.cache_size | ES 集群索引查询缓存中当前总的条目总数 | +| payload.elasticsearch.cluster_stats.indices.query_cache.evictions | ES 集群索引查询缓存清除的总数 | +| payload.elasticsearch.cluster_stats.indices.query_cache.hit_count | ES 集群索引查询缓存命中的数量 | +| payload.elasticsearch.cluster_stats.indices.query_cache.memory_size_in_bytes | ES 集群索引查询缓存总大小 | +| payload.elasticsearch.cluster_stats.indices.query_cache.miss_count | ES 集群索引查询缓存未命中的数量 | +| payload.elasticsearch.cluster_stats.indices.query_cache.total_count | ES 集群索引查询缓存的总数量 | +| payload.elasticsearch.cluster_stats.indices.segments.count | ES 集群索引 segments 总数 | +| payload.elasticsearch.cluster_stats.indices.segments.doc_values_memory_in_bytes | ES 集群索引 doc values 占用缓存大小 | +| payload.elasticsearch.cluster_stats.indices.segments.file_sizes | ES 集群有关索引文件大小的统计信息 | +| payload.elasticsearch.cluster_stats.indices.segments.fixed_bit_set_memory_in_bytes | ES 集群索引 BitSet(带标状态的数组)占用缓存的大小 | +| payload.elasticsearch.cluster_stats.indices.segments.index_writer_memory_in_bytes | ES 集群索引 index writer 占用缓存大小 | +| payload.elasticsearch.cluster_stats.indices.segments.max_unsafe_auto_id_timestamp | ES 集群最近重试的索引请求的 unix 时间戳(毫秒) | +| payload.elasticsearch.cluster_stats.indices.segments.memory_in_bytes | ES 集群索引 segments 使用的缓存总和 | +| payload.elasticsearch.cluster_stats.indices.segments.norms_memory_in_bytes | ES 集群索引 norms(标准信息)使用的缓存大小 | +| payload.elasticsearch.cluster_stats.indices.segments.points_memory_in_bytes | ES 集群索引 points 使用的缓存大小 | +| payload.elasticsearch.cluster_stats.indices.segments.stored_fields_memory_in_bytes | ES 集群索引 fields 使用缓存大小 | +| payload.elasticsearch.cluster_stats.indices.segments.term_vectors_memory_in_bytes | ES 集群索引 Term Vectors(词条向量)使用缓存大小 | +| payload.elasticsearch.cluster_stats.indices.segments.terms_memory_in_bytes | ES 集群索引 terms query 使用的缓存大小 | +| payload.elasticsearch.cluster_stats.indices.segments.version_map_memory_in_bytes | ES 集群索引 version maps(描述 document、fields 包含的内容)占用的缓存大小 | +| payload.elasticsearch.cluster_stats.indices.shards.index.primaries.avg | ES 集群索引的平均主分片数 | +| payload.elasticsearch.cluster_stats.indices.shards.index.primaries.max | ES 集群索引允许的最大主分片数 | +| payload.elasticsearch.cluster_stats.indices.shards.index.primaries.min | ES 集群索引允许的最小主分片数 | +| payload.elasticsearch.cluster_stats.indices.shards.index.replication.avg | ES 集群索引的平均副本数 | +| payload.elasticsearch.cluster_stats.indices.shards.index.replication.max | ES 集群索引允许的最大副本数 | +| payload.elasticsearch.cluster_stats.indices.shards.index.replication.min | ES 集群索引允许的最小副本数 | +| payload.elasticsearch.cluster_stats.indices.shards.index.shards.avg | ES 集群索引的平均分片数 | +| payload.elasticsearch.cluster_stats.indices.shards.index.shards.max | ES 集群索引允许的最大分片数 | +| payload.elasticsearch.cluster_stats.indices.shards.index.shards.min | ES 集群索引允许的最小分片数 | +| payload.elasticsearch.cluster_stats.indices.shards.primaries | ES 集群索引主分片总数 | +| payload.elasticsearch.cluster_stats.indices.shards.replication | ES 集群副本分片数/主分片数 | +| payload.elasticsearch.cluster_stats.indices.shards.total | ES 集群索引分片总数 | +| payload.elasticsearch.cluster_stats.indices.store.reserved_in_bytes | ES 集群预测进行对等恢复、快照恢复和类似活动,分片存储最终会增长多少 | +| payload.elasticsearch.cluster_stats.indices.store.size_in_bytes | ES 集群索引占用总大小 | +| payload.elasticsearch.cluster_stats.nodes.count.coordinating_only | ES 集群协作节点(coordinating)数量 | +| payload.elasticsearch.cluster_stats.nodes.count.data | ES 集群 data 节点数量 | +| payload.elasticsearch.cluster_stats.nodes.count.data_cold | ES 集群 data 冷节点数量 | +| payload.elasticsearch.cluster_stats.nodes.count.data_content | ES 集群 data_content 节点数量 | +| payload.elasticsearch.cluster_stats.nodes.count.data_hot | ES 集群 data 热节点数量 | +| payload.elasticsearch.cluster_stats.nodes.count.data_warm | ES 集群 data_warm 节点数量 | +| payload.elasticsearch.cluster_stats.nodes.count.ingest | ES 集群 ingest 节点数量 | +| payload.elasticsearch.cluster_stats.nodes.count.master | ES 集群 master 节点数量 | +| payload.elasticsearch.cluster_stats.nodes.count.ml | ES 集群 ml 节点数量 | +| payload.elasticsearch.cluster_stats.nodes.count.remote_cluster_client | ES 集群 remote_cluster_client 节点数量 | +| payload.elasticsearch.cluster_stats.nodes.count.total | ES 集群总的节点数量 | +| payload.elasticsearch.cluster_stats.nodes.count.transform | ES 集群 transform 节点数量 | +| payload.elasticsearch.cluster_stats.nodes.count.voting_only | ES 集群 data_warm 节点数量 | +| payload.elasticsearch.cluster_stats.nodes.discovery_types.某种发现类型 | ES 集群使用某种发现类型查找其他节点的节点数 | +| payload.elasticsearch.cluster_stats.nodes.fs.available_in_bytes | ES 集群节点可以的磁盘空间量 | +| payload.elasticsearch.cluster_stats.nodes.fs.free_in_bytes | ES 集群节点未分配的磁盘空间量 | +| payload.elasticsearch.cluster_stats.nodes.fs.total_in_bytes | ES 集群节点占用的磁盘空间量 | +| payload.elasticsearch.cluster_stats.nodes.ingest.number_of_pipelines | ES 集群节点 ingest 管道数量 | +| payload.elasticsearch.cluster_stats.nodes.ingest.processor_stats.gsub.count | ES 集群节点 ingest 管道进程 gsub 总数 | +| payload.elasticsearch.cluster_stats.nodes.ingest.processor_stats.gsub.current | ES 集群节点 ingest 管道进程 gsub 正在运行的数量 | +| payload.elasticsearch.cluster_stats.nodes.ingest.processor_stats.gsub.failed | ES 集群节点 ingest 管道进程 gsub 失败的数量 | +| payload.elasticsearch.cluster_stats.nodes.ingest.processor_stats.gsub.time_in_millis | ES 集群节点 ingest 管道进程 gsub 花费的时间(毫秒) | +| payload.elasticsearch.cluster_stats.nodes.ingest.processor_stats.script.count | ES 集群节点 ingest 管道进程 script 总数 | +| payload.elasticsearch.cluster_stats.nodes.ingest.processor_stats.script.current | ES 集群节点 ingest 管道进程 script 正在运行的数量 | +| payload.elasticsearch.cluster_stats.nodes.ingest.processor_stats.script.failed | ES 集群节点 ingest 管道进程 script 失败的数量 | +| payload.elasticsearch.cluster_stats.nodes.ingest.processor_stats.script.time_in_millis | ES 集群节点 ingest 管道进程 script 花费的时间(毫秒) | +| payload.elasticsearch.cluster_stats.nodes.jvm.max_uptime_in_millis | ES 集群节点 jvm 运行时间 | +| payload.elasticsearch.cluster_stats.nodes.jvm.mem.heap_max_in_bytes | ES 集群节点最大堆内存数 | +| payload.elasticsearch.cluster_stats.nodes.jvm.mem.heap_used_in_bytes | ES 集群节点已使用的堆内存数 | +| payload.elasticsearch.cluster_stats.nodes.jvm.threads | ES 集群节点 jvm 进程数 | +| payload.elasticsearch.cluster_stats.nodes.jvm.versions.count | ES 集群节点使用该 jvm 的数量 | +| payload.elasticsearch.cluster_stats.nodes.jvm.versions.version | ES 集群节点 jvm 版本号 | +| payload.elasticsearch.cluster_stats.nodes.jvm.versions.vm_name | ES 集群节点 jvm 名称 | +| payload.elasticsearch.cluster_stats.nodes.jvm.versions.vm_vendor | ES 集群节点 jvm 供应商 | +| payload.elasticsearch.cluster_stats.nodes.jvm.versions.vm_version | ES 集群节点 jvm 完整版本号 | +| payload.elasticsearch.cluster_stats.nodes.network_types.http_types.security4 | ES 集群节点使用 security4 HTTP 类型的数量 | +| payload.elasticsearch.cluster_stats.nodes.network_types.transport_types.security4 | ES 集群节点使用 security4 传输类型的数量 | +| payload.elasticsearch.cluster_stats.nodes.os.allocated_processors | ES 集群节点已分配的处理器核数 | +| payload.elasticsearch.cluster_stats.nodes.os.available_processors | ES 集群节点可用的处理器核数 | +| payload.elasticsearch.cluster_stats.nodes.os.mem.free_in_bytes | ES 集群节点空闲的物理内存 | +| payload.elasticsearch.cluster_stats.nodes.os.mem.free_percent | ES 集群节点空闲内存百分比 | +| payload.elasticsearch.cluster_stats.nodes.os.mem.total_in_bytes | ES 集群节点总的物理内存 | +| payload.elasticsearch.cluster_stats.nodes.os.mem.used_in_bytes | ES 集群节点已使用的物理内存 | +| payload.elasticsearch.cluster_stats.nodes.os.mem.used_percent | ES 集群节点已用内存百分比 | +| payload.elasticsearch.cluster_stats.nodes.os.names.count | ES 集群节点中该操作系统类型的数量 | +| payload.elasticsearch.cluster_stats.nodes.os.names.name | ES 集群节点操作系统类型 | +| payload.elasticsearch.cluster_stats.nodes.os.pretty_names.count | ES 集群节点中该操作系统名称的数量 | +| payload.elasticsearch.cluster_stats.nodes.os.pretty_names.pretty_name | ES 集群节点操作系统名称 | +| payload.elasticsearch.cluster_stats.nodes.plugins.classname | 用作插件入口点的类名 | +| payload.elasticsearch.cluster_stats.nodes.plugins.description | 插件的描述 | +| payload.elasticsearch.cluster_stats.nodes.plugins.elasticsearch_version | 构建插件的 ES 版本 | +| payload.elasticsearch.cluster_stats.nodes.plugins.java_version | 构建插件的 java 版本 | +| payload.elasticsearch.cluster_stats.nodes.plugins.name | ES 集群节点使用的插件名称 | +| payload.elasticsearch.cluster_stats.nodes.plugins.version | 构建插件的 ES 版本 | +| payload.elasticsearch.cluster_stats.nodes.process.cpu.percent | ES 集群节点 cpu 使用的百分比 | +| payload.elasticsearch.cluster_stats.nodes.process.open_file_descriptors.avg | ES 集群节点打开文件描述符平均数 | +| payload.elasticsearch.cluster_stats.nodes.process.open_file_descriptors.max | ES 集群节点打开文件描述符最大值 | +| payload.elasticsearch.cluster_stats.nodes.process.open_file_descriptors.min | ES 集群节点打开文件描述符最小值 | +| payload.elasticsearch.cluster_stats.nodes.versions | ES 集群节点使用的 elasticsearch 版本 | +| payload.elasticsearch.cluster_stats.status | ES 集群健康状态 | +| payload.elasticsearch.cluster_stats.timestamp | ES 集群指标刷新的最新时间戳 | + +## payload.elasticsearch.index\* + +| 字段名 | 说明 | +| ---------------------------------------------------------------------------------- | ----------------------------------------------------- | +| payload.elasticsearch.index_routing_table | 索引路由信息表 | +| payload.elasticsearch.index_stats.index_info | 索引信息列表 | +| payload.elasticsearch.index_stats.shard_info | 索引分片信息列表 | +| payload.elasticsearch.index_stats.primaries.completion.size_in_bytes | 索引主分片 completion 缓存大小(字节) | +| payload.elasticsearch.index_stats.primaries.docs.count | 索引主分片的文档数 | +| payload.elasticsearch.index_stats.primaries.docs.deleted | 索引主分片的删除文档数 | +| payload.elasticsearch.index_stats.primaries.fielddata.evictions | 索引主分片字段数据缓存中清除的数量 | +| payload.elasticsearch.index_stats.primaries.fielddata.memory_size_in_bytes | 索引主分片字段数据缓存大小(字节) | +| payload.elasticsearch.index_stats.primaries.flush.periodic | 索引主分片 flush 操作定时执行的次数 | +| payload.elasticsearch.index_stats.primaries.flush.total | 索引主分片 flush 操作的总数 | +| payload.elasticsearch.index_stats.primaries.flush.total_time_in_millis | 索引主分片 flush 操作的总耗时(毫秒) | +| payload.elasticsearch.index_stats.primaries.get.current | 索引主分片当前正在进行 get 操作的次数 | +| payload.elasticsearch.index_stats.primaries.get.exists_time_in_millis | 索引主分片 get 操作成功的总耗时(毫秒) | +| payload.elasticsearch.index_stats.primaries.get.exists_total | 索引主分片 get 操作成功的总次数 | +| payload.elasticsearch.index_stats.primaries.get.missing_time_in_millis | 索引主分片 get 操作失败的总耗时(毫秒) | +| payload.elasticsearch.index_stats.primaries.get.missing_total | 索引主分片 get 操作失败的总次数 | +| payload.elasticsearch.index_stats.primaries.get.time_in_millis | 索引主分片 get 操作的总耗时(毫秒) | +| payload.elasticsearch.index_stats.primaries.get.total | 索引主分片 get 操作的总次数 | +| payload.elasticsearch.index_stats.primaries.indexing.delete_current | 索引主分片当前正在进行删除操作的次数 | +| payload.elasticsearch.index_stats.primaries.indexing.delete_time_in_millis | 索引主分片删除操作的总耗时(毫秒) | +| payload.elasticsearch.index_stats.primaries.indexing.delete_total | 索引主分片删除操作的总次数 | +| payload.elasticsearch.index_stats.primaries.indexing.index_current | 索引主分片当前正在进行操作的次数 | +| payload.elasticsearch.index_stats.primaries.indexing.index_failed | 索引主分片操作失败的次数 | +| payload.elasticsearch.index_stats.primaries.indexing.index_time_in_millis | 索引主分片操作消耗的时间(毫秒) | +| payload.elasticsearch.index_stats.primaries.indexing.index_total | 索引主分片操作的总次数 | +| payload.elasticsearch.index_stats.primaries.indexing.is_throttled | 索引主分片操作是否被限流 | +| payload.elasticsearch.index_stats.primaries.indexing.noop_update_total | 索引主分片空更新的次数 | +| payload.elasticsearch.index_stats.primaries.indexing.throttle_time_in_millis | 索引主分片限流操作所花费的时间(毫秒) | +| payload.elasticsearch.index_stats.primaries.merges.current | 索引主分片正在进行 merge 操作的数量 | +| payload.elasticsearch.index_stats.primaries.merges.current_docs | 索引主分片正在进行 merge 操作的文档数 | +| payload.elasticsearch.index_stats.primaries.merges.current_size_in_bytes | 索引主分片正在进行 merge 操作所占用的内存大小(字节) | +| payload.elasticsearch.index_stats.primaries.merges.total | 索引主分片 merge 操作的总数 | +| payload.elasticsearch.index_stats.primaries.merges.total_auto_throttle_in_bytes | 索引主分片自动触发限流操作的阈值(字节) | +| payload.elasticsearch.index_stats.primaries.merges.total_docs | 索引主分片 merge 操作的文档总数 | +| payload.elasticsearch.index_stats.primaries.merges.total_size_in_bytes | 索引主分片 merge 操作的总大小 | +| payload.elasticsearch.index_stats.primaries.merges.total_stopped_time_in_millis | 索引主分片 merge 操作停止的总耗时(毫秒) | +| payload.elasticsearch.index_stats.primaries.merges.total_throttled_time_in_millis | 索引主分片 merge 操作限流的总耗时(毫秒) | +| payload.elasticsearch.index_stats.primaries.merges.total_time_in_millis | 索引主分片 merge 操作的总耗时(毫秒) | +| payload.elasticsearch.index_stats.primaries.query_cache.cache_count | 索引主分片当前查询缓存中的文档数量 | +| payload.elasticsearch.index_stats.primaries.query_cache.cache_size | 索引主分片当前查询缓存中的文档大小 | +| payload.elasticsearch.index_stats.primaries.query_cache.evictions | 索引主分片查询缓存中清除的数量 | +| payload.elasticsearch.index_stats.primaries.query_cache.hit_count | 索引主分片查询缓存命中的次数 | +| payload.elasticsearch.index_stats.primaries.query_cache.memory_size_in_bytes | 索引主分片查询缓存占用的内存大小(字节) | +| payload.elasticsearch.index_stats.primaries.query_cache.miss_count | 索引主分片查询缓存未命中的次数 | +| payload.elasticsearch.index_stats.primaries.query_cache.total_count | 索引主分片查询缓存的总次数 | +| payload.elasticsearch.index_stats.primaries.recovery.current_as_source | 索引主分片当前作为恢复源的数量 | +| payload.elasticsearch.index_stats.primaries.recovery.current_as_target | 索引主分片当前作为恢复目标的数量 | +| payload.elasticsearch.index_stats.primaries.recovery.throttle_time_in_millis | 索引主分片恢复操作的延迟时长 | +| payload.elasticsearch.index_stats.primaries.refresh.external_total | 索引主分片外部 refresh 操作的总数 | +| payload.elasticsearch.index_stats.primaries.refresh.external_total_time_in_millis | 索引主分片外部 refresh 操作的总耗时(毫秒) | +| payload.elasticsearch.index_stats.primaries.refresh.listeners | 索引主分片 refresh listeners 的数量 | +| payload.elasticsearch.index_stats.primaries.refresh.total | 索引主分片 refresh 操作的总数 | +| payload.elasticsearch.index_stats.primaries.refresh.total_time_in_millis | 索引主分片 refresh 操作的总耗时(毫秒) | +| payload.elasticsearch.index_stats.primaries.request_cache.evictions | 索引主分片请求缓存中清除的数量 | +| payload.elasticsearch.index_stats.primaries.request_cache.hit_count | 索引主分片请求缓存的命中数量 | +| payload.elasticsearch.index_stats.primaries.request_cache.memory_size_in_bytes | 索引主分片请求缓存占用的内存大小(字节) | +| payload.elasticsearch.index_stats.primaries.request_cache.miss_count | 索引主分片请求缓存的未命中数量 | +| payload.elasticsearch.index_stats.primaries.search.fetch_current | 索引主分片当前正在进行 fetch 操作的总数量 | +| payload.elasticsearch.index_stats.primaries.search.fetch_time_in_millis | 索引主分片 fetch 操作的总耗时(毫秒) | +| payload.elasticsearch.index_stats.primaries.search.fetch_total | 索引主分片 fetch 操作的总数量 | +| payload.elasticsearch.index_stats.primaries.search.open_contexts | 索引主分片打开查询上下文的总数量 | +| payload.elasticsearch.index_stats.primaries.search.query_current | 索引主分片当前正在进行 query 操作的总数量 | +| payload.elasticsearch.index_stats.primaries.search.query_time_in_millis | 索引主分片 query 操作的总耗时(毫秒) | +| payload.elasticsearch.index_stats.primaries.search.query_total | 索引主分片 query 操作的总数量 | +| payload.elasticsearch.index_stats.primaries.search.scroll_current | 索引主分片当前正在进行 scroll 操作的总数量 | +| payload.elasticsearch.index_stats.primaries.search.scroll_time_in_millis | 索引主分片 scroll 操作的总耗时(毫秒) | +| payload.elasticsearch.index_stats.primaries.search.scroll_total | 索引主分片 scroll 操作的总数量 | +| payload.elasticsearch.index_stats.primaries.search.suggest_current | 索引主分片当前正在进行 suggest 操作的总数量 | +| payload.elasticsearch.index_stats.primaries.search.suggest_time_in_millis | 索引主分片 suggest 操作的总耗时(毫秒) | +| payload.elasticsearch.index_stats.primaries.search.suggest_total | 索引主分片 suggest 操作的总数量 | +| payload.elasticsearch.index_stats.primaries.segments.count | 索引主分片 segments 的数量 | +| payload.elasticsearch.index_stats.primaries.segments.doc_values_memory_in_bytes | 索引主分片 doc values 占用的内存大小(字节) | +| payload.elasticsearch.index_stats.primaries.segments.file_sizes | 有关索引主分片文件大小的统计信息 | +| payload.elasticsearch.index_stats.primaries.segments.fixed_bit_set_memory_in_bytes | 索引主分片 BitSet 占用的内存大小(字节) | +| payload.elasticsearch.index_stats.primaries.segments.index_writer_memory_in_bytes | 索引主分片 index writer 占用的内存大小(字节) | +| payload.elasticsearch.index_stats.primaries.segments.max_unsafe_auto_id_timestamp | 索引主分片自动生成 ID 的最新时间戳 | +| payload.elasticsearch.index_stats.primaries.segments.memory_in_bytes | 索引主分片 segments 占用的内存大小(字节) | +| payload.elasticsearch.index_stats.primaries.segments.norms_memory_in_bytes | 索引主分片 norms 占用的内存大小(字节) | +| payload.elasticsearch.index_stats.primaries.segments.points_memory_in_bytes | 索引主分片 points 占用的内存大小(字节) | +| payload.elasticsearch.index_stats.primaries.segments.stored_fields_memory_in_bytes | 索引主分片存储字段占用的内存大小(字节) | +| payload.elasticsearch.index_stats.primaries.segments.term_vectors_memory_in_bytes | 索引主分片 term vectors 占用的内存大小(字节) | +| payload.elasticsearch.index_stats.primaries.segments.terms_memory_in_bytes | 索引主分片 terms 查询占用的内存大小(字节) | +| payload.elasticsearch.index_stats.primaries.segments.version_map_memory_in_bytes | 索引主分片 version map 占用的内存大小(字节) | +| payload.elasticsearch.index_stats.primaries.store.reserved_in_bytes | 索引主分片快照恢复预计的大小(字节) | +| payload.elasticsearch.index_stats.primaries.store.size_in_bytes | 索引主分片存储大小(字节) | +| payload.elasticsearch.index_stats.primaries.store.total_data_set_size_in_bytes | 索引主分片数据集的总大小(字节) | +| payload.elasticsearch.index_stats.primaries.translog.earliest_last_modified_age | 索引主分片事务日志最后的修改时间 | +| payload.elasticsearch.index_stats.primaries.translog.operations | 索引主分片 translog 操作的数量 | +| payload.elasticsearch.index_stats.primaries.translog.size_in_bytes | 索引主分片 translog 的大小(字节) | +| payload.elasticsearch.index_stats.primaries.translog.uncommitted_operations | 索引主分片 translog 中未提交操作的数量 | +| payload.elasticsearch.index_stats.primaries.translog.uncommitted_size_in_bytes | 索引主分片 translog 中未提交操作的大小(字节) | +| payload.elasticsearch.index_stats.primaries.warmer.current | 索引主分片正在运行预热的数量 | +| payload.elasticsearch.index_stats.primaries.warmer.total | 索引主分片运行预热的总量 | +| payload.elasticsearch.index_stats.primaries.warmer.total_time_in_millis | 索引主分片运行预热的总耗时(毫秒) | +| payload.elasticsearch.index_stats.total.completion.size_in_bytes | 索引 completion 缓存大小(字节) | +| payload.elasticsearch.index_stats.total.docs.count | 索引的文档数 | +| payload.elasticsearch.index_stats.total.docs.deleted | 索引的删除文档数 | +| payload.elasticsearch.index_stats.total.fielddata.evictions | 索引字段数据缓存中清除的数量 | +| payload.elasticsearch.index_stats.total.fielddata.memory_size_in_bytes | 索引字段数据缓存大小(字节) | +| payload.elasticsearch.index_stats.total.flush.periodic | 索引 flush 操作定时执行的次数 | +| payload.elasticsearch.index_stats.total.flush.total | 索引 flush 操作的总数 | +| payload.elasticsearch.index_stats.total.flush.total_time_in_millis | 索引 flush 操作的总耗时(毫秒) | +| payload.elasticsearch.index_stats.total.get.current | 索引当前正在进行 get 操作的次数 | +| payload.elasticsearch.index_stats.total.get.exists_time_in_millis | 索引 get 操作成功的总耗时(毫秒) | +| payload.elasticsearch.index_stats.total.get.exists_total | 索引 get 操作成功的总次数 | +| payload.elasticsearch.index_stats.total.get.missing_time_in_millis | 索引 get 操作失败的总耗时(毫秒) | +| payload.elasticsearch.index_stats.total.get.missing_total | 索引 get 操作失败的总次数 | +| payload.elasticsearch.index_stats.total.get.time_in_millis | 索引 get 操作的总耗时(毫秒) | +| payload.elasticsearch.index_stats.total.get.total | 索引 get 操作的总次数 | +| payload.elasticsearch.index_stats.total.indexing.delete_current | 索引当前正在进行删除操作的次数 | +| payload.elasticsearch.index_stats.total.indexing.delete_time_in_millis | 索引删除操作的总耗时(毫秒) | +| payload.elasticsearch.index_stats.total.indexing.delete_total | 索引删除操作的总次数 | +| payload.elasticsearch.index_stats.total.indexing.index_current | 索引当前正在进行操作的次数 | +| payload.elasticsearch.index_stats.total.indexing.index_failed | 索引操作失败的次数 | +| payload.elasticsearch.index_stats.total.indexing.index_time_in_millis | 索引操作消耗的时间(毫秒) | +| payload.elasticsearch.index_stats.total.indexing.index_total | 索引操作的总次数 | +| payload.elasticsearch.index_stats.total.indexing.is_throttled | 索引操作是否被限流 | +| payload.elasticsearch.index_stats.total.indexing.noop_update_total | 索引空更新的次数 | +| payload.elasticsearch.index_stats.total.indexing.throttle_time_in_millis | 索引限流操作所花费的时间(毫秒) | +| payload.elasticsearch.index_stats.total.merges.current | 索引正在进行 merge 操作的数量 | +| payload.elasticsearch.index_stats.total.merges.current_docs | 索引正在进行 merge 操作的文档数 | +| payload.elasticsearch.index_stats.total.merges.current_size_in_bytes | 索引正在进行 merge 操作所占用的内存大小(字节) | +| payload.elasticsearch.index_stats.total.merges.total | 索引 merge 操作的总数 | +| payload.elasticsearch.index_stats.total.merges.total_auto_throttle_in_bytes | 索引自动触发限流操作的阈值(字节) | +| payload.elasticsearch.index_stats.total.merges.total_docs | 索引 merge 操作的文档总数 | +| payload.elasticsearch.index_stats.total.merges.total_size_in_bytes | 索引 merge 操作的总大小 | +| payload.elasticsearch.index_stats.total.merges.total_stopped_time_in_millis | 索引 merge 操作停止的总耗时(毫秒) | +| payload.elasticsearch.index_stats.total.merges.total_throttled_time_in_millis | 索引 merge 操作限流的总耗时(毫秒) | +| payload.elasticsearch.index_stats.total.merges.total_time_in_millis | 索引 merge 操作的总耗时(毫秒) | +| payload.elasticsearch.index_stats.total.query_cache.cache_count | 索引当前查询缓存中的文档数量 | +| payload.elasticsearch.index_stats.total.query_cache.cache_size | 索引当前查询缓存中的文档大小 | +| payload.elasticsearch.index_stats.total.query_cache.evictions | 索引查询缓存中清除的数量 | +| payload.elasticsearch.index_stats.total.query_cache.hit_count | 索引查询缓存命中的次数 | +| payload.elasticsearch.index_stats.total.query_cache.memory_size_in_bytes | 索引查询缓存占用的内存大小(字节) | +| payload.elasticsearch.index_stats.total.query_cache.miss_count | 索引查询缓存未命中的次数 | +| payload.elasticsearch.index_stats.total.query_cache.total_count | 索引查询缓存的总次数 | +| payload.elasticsearch.index_stats.total.recovery.current_as_source | 索引当前作为恢复源的数量 | +| payload.elasticsearch.index_stats.total.recovery.current_as_target | 索引当前作为恢复目标的数量 | +| payload.elasticsearch.index_stats.total.recovery.throttle_time_in_millis | 索引恢复操作的延迟时长 | +| payload.elasticsearch.index_stats.total.refresh.external_total | 索引外部 refresh 操作的总数 | +| payload.elasticsearch.index_stats.total.refresh.external_total_time_in_millis | 索引外部 refresh 操作的总耗时(毫秒) | +| payload.elasticsearch.index_stats.total.refresh.listeners | 索引 refresh listeners 的数量 | +| payload.elasticsearch.index_stats.total.refresh.total | 索引 refresh 操作的总数 | +| payload.elasticsearch.index_stats.total.refresh.total_time_in_millis | 索引 refresh 操作的总耗时(毫秒) | +| payload.elasticsearch.index_stats.total.request_cache.evictions | 索引请求缓存中清除的数量 | +| payload.elasticsearch.index_stats.total.request_cache.hit_count | 索引请求缓存的命中数量 | +| payload.elasticsearch.index_stats.total.request_cache.memory_size_in_bytes | 索引请求缓存占用的内存大小(字节) | +| payload.elasticsearch.index_stats.total.request_cache.miss_count | 索引请求缓存的未命中数量 | +| payload.elasticsearch.index_stats.total.search.fetch_current | 索引当前正在进行 fetch 操作的总数量 | +| payload.elasticsearch.index_stats.total.search.fetch_time_in_millis | 索引 fetch 操作的总耗时(毫秒) | +| payload.elasticsearch.index_stats.total.search.fetch_total | 索引 fetch 操作的总数量 | +| payload.elasticsearch.index_stats.total.search.open_contexts | 索引打开查询上下文的总数量 | +| payload.elasticsearch.index_stats.total.search.query_current | 索引当前正在进行 query 操作的总数量 | +| payload.elasticsearch.index_stats.total.search.query_time_in_millis | 索引 query 操作的总耗时(毫秒) | +| payload.elasticsearch.index_stats.total.search.query_total | 索引 query 操作的总数量 | +| payload.elasticsearch.index_stats.total.search.scroll_current | 索引当前正在进行 scroll 操作的总数量 | +| payload.elasticsearch.index_stats.total.search.scroll_time_in_millis | 索引 scroll 操作的总耗时(毫秒) | +| payload.elasticsearch.index_stats.total.search.scroll_total | 索引 scroll 操作的总数量 | +| payload.elasticsearch.index_stats.total.search.suggest_current | 索引当前正在进行 suggest 操作的总数量 | +| payload.elasticsearch.index_stats.total.search.suggest_time_in_millis | 索引 suggest 操作的总耗时(毫秒) | +| payload.elasticsearch.index_stats.total.search.suggest_total | 索引 suggest 操作的总数量 | +| payload.elasticsearch.index_stats.total.segments.count | 索引 segments 的数量 | +| payload.elasticsearch.index_stats.total.segments.doc_values_memory_in_bytes | 索引 doc values 占用的内存大小(字节) | +| payload.elasticsearch.index_stats.total.segments.file_sizes | 有关索引文件大小的统计信息 | +| payload.elasticsearch.index_stats.total.segments.fixed_bit_set_memory_in_bytes | 索引 BitSet 占用的内存大小(字节) | +| payload.elasticsearch.index_stats.total.segments.index_writer_memory_in_bytes | 索引 index writer 占用的内存大小(字节) | +| payload.elasticsearch.index_stats.total.segments.max_unsafe_auto_id_timestamp | 索引自动生成 ID 的最新时间戳 | +| payload.elasticsearch.index_stats.total.segments.memory_in_bytes | 索引 segments 占用的内存大小(字节) | +| payload.elasticsearch.index_stats.total.segments.norms_memory_in_bytes | 索引 norms 占用的内存大小(字节) | +| payload.elasticsearch.index_stats.total.segments.points_memory_in_bytes | 索引 points 占用的内存大小(字节) | +| payload.elasticsearch.index_stats.total.segments.stored_fields_memory_in_bytes | 索引存储字段占用的内存大小(字节) | +| payload.elasticsearch.index_stats.total.segments.term_vectors_memory_in_bytes | 索引 term vectors 占用的内存大小(字节) | +| payload.elasticsearch.index_stats.total.segments.terms_memory_in_bytes | 索引 terms 查询占用的内存大小(字节) | +| payload.elasticsearch.index_stats.total.segments.version_map_memory_in_bytes | 索引 version map 占用的内存大小(字节) | +| payload.elasticsearch.index_stats.total.store.reserved_in_bytes | 索引快照恢复预计的大小(字节) | +| payload.elasticsearch.index_stats.total.store.size_in_bytes | 索引存储大小(字节) | +| payload.elasticsearch.index_stats.total.store.total_data_set_size_in_bytes | 索引数据集的总大小(字节) | +| payload.elasticsearch.index_stats.total.translog.earliest_last_modified_age | 索引事务日志最后的修改时间 | +| payload.elasticsearch.index_stats.total.translog.operations | 索引 translog 操作的数量 | +| payload.elasticsearch.index_stats.total.translog.size_in_bytes | 索引 translog 的大小(字节) | +| payload.elasticsearch.index_stats.total.translog.uncommitted_operations | 索引 translog 中未提交操作的数量 | +| payload.elasticsearch.index_stats.total.translog.uncommitted_size_in_bytes | 索引 translog 中未提交操作的大小(字节) | +| payload.elasticsearch.index_stats.total.warmer.current | 索引正在运行预热的数量 | +| payload.elasticsearch.index_stats.total.warmer.total | 索引运行预热的总量 | +| payload.elasticsearch.index_stats.total.warmer.total_time_in_millis | 索引运行预热的总耗时(毫秒) | + +## payload.elasticsearch.node\* + +| 字段名 | 说明 | +| ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | +| payload.elasticsearch.node_routing_table | 节点路由信息列表 | +| payload.elasticsearch.node_stats.timestamp | 节点当前时间戳(毫秒) | +| payload.elasticsearch.node_stats.name | 节点名称 | +| payload.elasticsearch.node_stats.transport_address | 节点传输层的主机和端口,用于集群中节点之间的内部通信 | +| payload.elasticsearch.node_stats.host | 节点所在的网络主机 | +| payload.elasticsearch.node_stats.ip | 节点 IP 地址和端口 | +| payload.elasticsearch.node_stats.roles | 节点角色 | +| payload.elasticsearch.node_stats.attributes | 节点属性列表 | +| payload.elasticsearch.node_stats.indices.docs.count | 节点索引文档数 | +| payload.elasticsearch.node_stats.indices.docs.deleted | 节点索引删除的文档数 | +| payload.elasticsearch.node_stats.indices.store.size_in_bytes | 节点索引分片的总大小(字节) | +| payload.elasticsearch.node_stats.indices.store.reserved_in_bytes | 预测因正在进行的对等恢复、恢复快照和类似活动,节点上的分片存储最终将增长多少(字节) | +| payload.elasticsearch.node_stats.indices.indexing.index_total | 节点索引操作的总数 | +| payload.elasticsearch.node_stats.indices.indexing.index_time_in_millis | 节点执行索引操作所花费的总时间(毫秒) | +| payload.elasticsearch.node_stats.indices.indexing.index_current | 节点当前正在运行的索引操作数 | +| payload.elasticsearch.node_stats.indices.indexing.index_failed | 节点索引操作失败的次数 | +| payload.elasticsearch.node_stats.indices.indexing.delete_total | 节点索引删除操作的总数 | +| payload.elasticsearch.node_stats.indices.indexing.delete_time | 节点执行索引删除操作所花费的时间 | +| payload.elasticsearch.node_stats.indices.indexing.delete_time_in_millis | 节点执行索引删除操作花费的时间(毫秒) | +| payload.elasticsearch.node_stats.indices.indexing.delete_current | 节点当前正在运行的删除索引操作数 | +| payload.elasticsearch.node_stats.indices.indexing.noop_update_total | 节点索引 noop 操作的总次数 | +| payload.elasticsearch.node_stats.indices.indexing.is_throttled | 节点索引是否限制操作 | +| payload.elasticsearch.node_stats.indices.indexing.throttle_time_in_millis | 节点索引限制操作的总时间(毫秒)。 | +| payload.elasticsearch.node_stats.indices.get.total | 节点索引 get 操作的总次数 | +| payload.elasticsearch.node_stats.indices.get.time_in_millis | 节点执行索引 get 操作花费的时间(毫秒) | +| payload.elasticsearch.node_stats.indices.get.exists_total | 节点索引 get 操作成功的总次数 | +| payload.elasticsearch.node_stats.indices.get.exists_time_in_millis | 节点索引 get 操作成功花费的时间(毫秒) | +| payload.elasticsearch.node_stats.indices.get.missing_total | 节点索引 get 操作失败的总次数 | +| payload.elasticsearch.node_stats.indices.get.missing_time_in_millis | 节点索引 get 操作失败花费的时间(毫秒) | +| payload.elasticsearch.node_stats.indices.get.current | 节点当前正在运行的索引 get 操作数 | +| payload.elasticsearch.node_stats.indices.search.open_contexts | 节点索引打开的搜索上下文的数目 | +| payload.elasticsearch.node_stats.indices.search.query_total | 节点索引查询操作总数 | +| payload.elasticsearch.node_stats.indices.search.query_time_in_millis | 节点索引查询花费的时间(毫秒) | +| payload.elasticsearch.node_stats.indices.search.query_current | 节点当前正在运行的索引查询操作数 | +| payload.elasticsearch.node_stats.indices.search.fetch_total | 节点索引读取操作总数 | +| payload.elasticsearch.node_stats.indices.search.fetch_time_in_millis | 节点索引读取操作花费的时间(毫秒) | +| payload.elasticsearch.node_stats.indices.search.fetch_current | 节点当前正在运行的索引读取操作数 | +| payload.elasticsearch.node_stats.indices.search.scroll_total | 节点索引滚动操作总数 | +| payload.elasticsearch.node_stats.indices.search.scroll_time_in_millis | 节点索引滚动操作花费的时间(毫秒) | +| payload.elasticsearch.node_stats.indices.search.scroll_current | 节点当前正在运行的索引滚动操作数 | +| payload.elasticsearch.node_stats.indices.search.suggest_total | 节点索引推荐操作总数 | +| payload.elasticsearch.node_stats.indices.search.suggest_time_in_millis | 节点索引推荐操作花费的时间(毫秒) | +| payload.elasticsearch.node_stats.indices.search.suggest_current | 节点当前正在运行的索引推荐操作数 | +| payload.elasticsearch.node_stats.indices.merges.current | 节点当前正在运行的索引合并操作数 | +| payload.elasticsearch.node_stats.indices.merges.current_docs | 节点当前正在运行索引合并的文档数 | +| payload.elasticsearch.node_stats.indices.merges.current_size_in_bytes | 节点当前执行索引文档合并的内存(字节) | +| payload.elasticsearch.node_stats.indices.merges.total | 节点索引合并操作总数 | +| payload.elasticsearch.node_stats.indices.merges.total_time_in_millis | 节点索引合并操作花费的总时间(毫秒) | +| payload.elasticsearch.node_stats.indices.merges.total_docs | 节点索引合并文档总数 | +| payload.elasticsearch.node_stats.indices.merges.total_size_in_bytes | 节点索引合并文档总大小(字节) | +| payload.elasticsearch.node_stats.indices.merges.total_stopped_time_in_millis | 节点停止索引合并操作的总时间(毫秒) | +| payload.elasticsearch.node_stats.indices.merges.total_throttled_time_in_millis | 节点限制索引合并操作的总时间(毫秒) | +| payload.elasticsearch.node_stats.indices.merges.total_auto_throttle_in_bytes | 节点自动节流索引合并操作的大小(字节) | +| payload.elasticsearch.node_stats.indices.refresh.total | 节点索引 refresh 操作总数 | +| payload.elasticsearch.node_stats.indices.refresh.total_time_in_millis | 节点索引 refresh 操作花费的总时间(毫秒) | +| payload.elasticsearch.node_stats.indices.refresh.external_total | 节点索引外部 refresh 操作总数 | +| payload.elasticsearch.node_stats.indices.refresh.external_total_time_in_millis | 节点索引外部 refresh 操作花费的总时间(毫秒) | +| payload.elasticsearch.node_stats.indices.refresh.listeners | 节点索引 refresh 监听器的数量 | +| payload.elasticsearch.node_stats.indices.flush.total | 节点索引 flush 操作总数 | +| payload.elasticsearch.node_stats.indices.flush.periodic | 节点索引定时 flush 操作总数 | +| payload.elasticsearch.node_stats.indices.flush.total_time_in_millis | 节点索引 flush 操作花费的总时间(毫秒) | +| payload.elasticsearch.node_stats.indices.warmer.current | 节点活跃索引回暖器数量 | +| payload.elasticsearch.node_stats.indices.warmer.total | 节点索引回暖器总数 | +| payload.elasticsearch.node_stats.indices.warmer.total_time_in_millis | 节点执行索引回暖操作花费的总时间(毫秒) | +| payload.elasticsearch.node_stats.indices.query_cache.memory_size_in_bytes | 节点索引查询缓存的总内存量(字节) | +| payload.elasticsearch.node_stats.indices.query_cache.total_count | 节点索引查询缓存中查询命中、未命中和缓存的总数 | +| payload.elasticsearch.node_stats.indices.query_cache.hit_count | 节点索引查询缓存命中数 | +| payload.elasticsearch.node_stats.indices.query_cache.miss_count | 节点索引查询缓存未命中数 | +| payload.elasticsearch.node_stats.indices.query_cache.cache_size | 节点索引查询缓存大小(字节) | +| payload.elasticsearch.node_stats.indices.query_cache.cache_count | 节点索引查询缓存中查询计数 | +| payload.elasticsearch.node_stats.indices.query_cache.evictions | 节点索引查询缓存清除的数量 | +| payload.elasticsearch.node_stats.indices.fielddata.memory_size_in_bytes | 节点用于索引字段数据缓存的内存大小(字节) | +| payload.elasticsearch.node_stats.indices.fielddata.evictions | 节点索引字段数据缓存中清除的数量 | +| payload.elasticsearch.node_stats.indices.completion.size_in_bytes | 节点用于索引完成的总内存量(字节) | +| payload.elasticsearch.node_stats.indices.segments.count | 节点索引段数量 | +| payload.elasticsearch.node_stats.indices.segments.memory_in_bytes | 节点索引段所使用的总内存(字节) | +| payload.elasticsearch.node_stats.indices.segments.terms_memory_in_bytes | 节点用于索引段 terms 的总内存量(字节) | +| payload.elasticsearch.node_stats.indices.segments.stored_fields_memory_in_bytes | 节点用于存储索引字段的总内存量(字节) | +| payload.elasticsearch.node_stats.indices.segments.term_vectors_memory_in_bytes | 节点用于索引段检索词向量的总内存量(字节) | +| payload.elasticsearch.node_stats.indices.segments.norms_memory_in_bytes | 节点用于索引段规范化因子的总内存量(字节) | +| payload.elasticsearch.node_stats.indices.segments.points_memory_in_bytes | 节点用于索引段 points 的总内存量(字节) | +| payload.elasticsearch.node_stats.indices.segments.doc_values_memory_in_bytes | 节点用于存放索引段文档值的总内存量(字节) | +| payload.elasticsearch.node_stats.indices.segments.index_writer_memory_in_bytes | 节点用于索引写入器的总内存量(字节) | +| payload.elasticsearch.node_stats.indices.segments.version_map_memory_in_bytes | 节点用于索引段版本映射的总内存量(字节) | +| payload.elasticsearch.node_stats.indices.segments.fixed_bit_set_memory_in_bytes | 节点用于索引段固定位集的总内存量(字节) | +| payload.elasticsearch.node_stats.indices.segments.file_sizes | 节点有关索引段文件大小的统计信息 | +| payload.elasticsearch.node_stats.indices.translog.operations | 节点索引事务日志操作次数 | +| payload.elasticsearch.node_stats.indices.translog.size_in_bytes | 节点索引事务日志大小(字节) | +| payload.elasticsearch.node_stats.indices.translog.uncommitted_operations | 节点索引未提交的事务日志操作数 | +| payload.elasticsearch.node_stats.indices.translog.uncommitted_size_in_bytes | 节点索引未提交的事务日志大小(字节) | +| payload.elasticsearch.node_stats.indices.translog.earliest_last_modified_age | 节点索引事务日志最后的修改时间 | +| payload.elasticsearch.node_stats.indices.request_cache.memory_size_in_bytes | 节点索引请求缓存的内存大小(字节) | +| payload.elasticsearch.node_stats.indices.request_cache.evictions | 节点索引请求缓存操作次数 | +| payload.elasticsearch.node_stats.indices.request_cache.hit_count | 节点索引请求缓存命中次数 | +| payload.elasticsearch.node_stats.indices.request_cache.miss_count | 节点索引请求缓存未命中次数 | +| payload.elasticsearch.node_stats.indices.recovery.current_as_source | 以节点索引分片为源的恢复次数 | +| payload.elasticsearch.node_stats.indices.recovery.current_as_target | 以节点索引分片为目标的恢复次数 | +| payload.elasticsearch.node_stats.indices.recovery.throttle_time_in_millis | 节点索引由于节流导致恢复操作延迟的时间(毫秒) | +| payload.elasticsearch.node_stats.os.timestamp | 节点系统指标刷新的最新时间戳(毫秒) | +| payload.elasticsearch.node_stats.os.cpu.percent | 节点系统 CPU 使用率 | +| payload.elasticsearch.node_stats.os.cpu.load_average.1m | 节点系统 1 分钟平均负载 | +| payload.elasticsearch.node_stats.os.mem.total_in_bytes | 节点系统物理内存大小(字节) | +| payload.elasticsearch.node_stats.os.mem.free_in_bytes | 节点系统空闲物理内存大小(字节) | +| payload.elasticsearch.node_stats.os.mem.used_in_bytes | 节点系统已使用物理内存大小(字节) | +| payload.elasticsearch.node_stats.os.mem.free_percent | 节点系统空闲内存百分比 | +| payload.elasticsearch.node_stats.os.mem.used_percent | 节点系统已使用内存百分比 | +| payload.elasticsearch.node_stats.os.swap.total_in_bytes | 节点系统 swap 大小(字节) | +| payload.elasticsearch.node_stats.os.swap.free_in_bytes | 节点系统空闲 swap 大小(字节) | +| payload.elasticsearch.node_stats.os.swap.used_in_bytes | 节点系统已使用 swap 大小(字节) | +| payload.elasticsearch.node_stats.process.timestamp | 节点进程指标刷新的最新时间戳(毫秒) | +| payload.elasticsearch.node_stats.process.open_file_descriptors | 节点进程打开的文件描述符的数量 | +| payload.elasticsearch.node_stats.process.max_file_descriptors | 节点进程可以打开的文件描述符的最大数量 | +| payload.elasticsearch.node_stats.process.cpu.percent | 节点进程 CPU 使用率 | +| payload.elasticsearch.node_stats.process.cpu.total_in_millis | 节点 Java 虚拟机进程占用的 CPU 时间(毫秒) | +| payload.elasticsearch.node_stats.process.mem.total_virtual_in_bytes | 节点保证进程可以正常运行的虚拟内存大小(字节) | +| payload.elasticsearch.node_stats.jvm.timestamp | 节点 JVM 最新指标刷新时间 | +| payload.elasticsearch.node_stats.jvm.uptime_in_millis | 节点 JVM 运行的时间(毫秒) | +| payload.elasticsearch.node_stats.jvm.mem.heap_used_in_bytes | 节点 JVM 堆当前使用的内存大小(字节) | +| payload.elasticsearch.node_stats.jvm.mem.heap_used_percent | 节点 JVM 堆当前使用的内存百分比 | +| payload.elasticsearch.node_stats.jvm.mem.heap_committed_in_bytes | 节点 JVM 堆可用的内存大小(字节) | +| payload.elasticsearch.node_stats.jvm.mem.heap_max_in_bytes | 节点 JVM 堆可用的最大内存量(字节) | +| payload.elasticsearch.node_stats.jvm.mem.non_heap_used_in_bytes | 节点 JVM 非堆使用的内存大小(字节) | +| payload.elasticsearch.node_stats.jvm.mem.non_heap_committed_in_bytes | 节点 JVM 非堆可用的内存大小(字节) | +| payload.elasticsearch.node_stats.jvm.mem.pools.young.used_in_bytes | 节点 JVM 年轻代堆已用的内存量(字节) | +| payload.elasticsearch.node_stats.jvm.mem.pools.young.max_in_bytes | 节点 JVM 年轻代堆可用的最大内存量(字节) | +| payload.elasticsearch.node_stats.jvm.mem.pools.young.peak_used_in_bytes | 节点 JVM 年轻代堆历史上使用的最大内存量(字节) | +| payload.elasticsearch.node_stats.jvm.mem.pools.young.peak_max_in_bytes | 节点 JVM 年轻代堆历史上使用的最大内存量(字节) | +| payload.elasticsearch.node_stats.jvm.mem.pools.survivor.used_in_bytes | 节点 JVM 幸存者空间已用的内存量(字节) | +| payload.elasticsearch.node_stats.jvm.mem.pools.survivor.max_in_bytes | 节点 JVM 幸存者空间可用的最大内存量(字节) | +| payload.elasticsearch.node_stats.jvm.mem.pools.survivor.peak_used_in_bytes | 节点 JVM 幸存者空间历史上使用的最大内存量(字节) | +| payload.elasticsearch.node_stats.jvm.mem.pools.survivor.peak_max_in_bytes | 节点 JVM 幸存者空间历史上使用的最大内存量(字节) | +| payload.elasticsearch.node_stats.jvm.mem.pools.old.used_in_bytes | 节点 JVM 老年代堆已用的内存量(字节) | +| payload.elasticsearch.node_stats.jvm.mem.pools.old.max_in_bytes | 节点 JVM 老年代堆可用的最大内存量(字节) | +| payload.elasticsearch.node_stats.jvm.mem.pools.old.peak_used_in_bytes | 节点 JVM 老年代堆历史上使用的最大内存量(字节) | +| payload.elasticsearch.node_stats.jvm.mem.pools.old.peak_max_in_bytes | 节点 JVM 老年代堆历史上使用的最高内存限制(字节) | +| payload.elasticsearch.node_stats.jvm.threads.count | 节点 JVM 正在使用的活跃线程数 | +| payload.elasticsearch.node_stats.jvm.threads.peak_count | 节点 JVM 可用的最大线程数 | +| payload.elasticsearch.node_stats.jvm.gc.collectors.young.collection_count | 节点收集年轻代对象的 JVM 垃圾收集器数量 | +| payload.elasticsearch.node_stats.jvm.gc.collectors.young.collection_time_in_millis | 节点 JVM 收集年轻代对象花费的总时间(毫秒) | +| payload.elasticsearch.node_stats.jvm.gc.collectors.old.collection_count | 节点收集老年代对象的 JVM 垃圾收集器数量 | +| payload.elasticsearch.node_stats.jvm.gc.collectors.old.collection_time_in_millis | 节点 JVM 收集老年代对象花费的总时间(毫秒) | +| payload.elasticsearch.node_stats.jvm.buffer_pools.mapped.count | 节点 JVM 映射缓存池数量 | +| payload.elasticsearch.node_stats.jvm.buffer_pools.mapped.used_in_bytes | 节点 JVM 映射缓存池大小(字节) | +| payload.elasticsearch.node_stats.jvm.buffer_pools.mapped.total_capacity_in_bytes | 节点 JVM 映射缓存池总量(字节) | +| payload.elasticsearch.node_stats.jvm.buffer_pools.direct.count | 节点 JVM 直接缓存池数量 | +| payload.elasticsearch.node_stats.jvm.buffer_pools.direct.used_in_bytes | 节点 JVM 直接缓存池大小(字节) | +| payload.elasticsearch.node_stats.jvm.buffer_pools.direct.total_capacity_in_bytes | 节点 JVM 直接缓存池总量(字节) | +| payload.elasticsearch.node_stats.jvm.classes.current_loaded_count | 节点 JVM 当前加载的类数量 | +| payload.elasticsearch.node_stats.jvm.classes.total_loaded_count | 节点从 JVM 启动开始加载类的总数 | +| payload.elasticsearch.node_stats.jvm.classes.total_unloaded_count | 节点从 JVM 启动开始未加载类的总数 | +| payload.elasticsearch.node_stats.thread_pool.某线程池.threads | 节点某线程池里的线程数 | +| payload.elasticsearch.node_stats.thread_pool.某线程池.queue | 节点某线程池队列里的任务数 | +| payload.elasticsearch.node_stats.thread_pool.某线程池.active | 节点某线程池里的活跃线程数 | +| payload.elasticsearch.node_stats.thread_pool.某线程池.rejected | 节点某线程池执行器拒绝的任务数 | +| payload.elasticsearch.node_stats.thread_pool.某线程池.largest | 节点某线程池中活动线程的最大数目 | +| payload.elasticsearch.node_stats.thread_pool.某线程池.completed | 节点某线程池执行器完成的任务数 | +| payload.elasticsearch.node_stats.fs.timestamp | 节点文件存储统计信息刷新的最新时间(毫秒) | +| payload.elasticsearch.node_stats.fs.total.total_in_bytes | 节点文件存储总量(字节) | +| payload.elasticsearch.node_stats.fs.total.free_in_bytes | 节点文件存储未分配的大小(字节) | +| payload.elasticsearch.node_stats.fs.total.available_in_bytes | 节点 Java 虚拟机在所有文件存储上可用的总量(字节) | +| payload.elasticsearch.node_stats.fs.data.path | 节点某个文件存储路径 | +| payload.elasticsearch.node_stats.fs.data.mount | 节点该文件存储挂载点 | +| payload.elasticsearch.node_stats.fs.data.type | 节点该文件存储类型 | +| payload.elasticsearch.node_stats.fs.data.total_in_bytes | 节点该文件存储总量(字节) | +| payload.elasticsearch.node_stats.fs.data.free_in_bytes | 节点该文件存储未分配的磁盘空间总量(字节) | +| payload.elasticsearch.node_stats.fs.data.available_in_bytes | 节点 Java 虚拟机在该文件存储上可用的总量(字节) | +| payload.elasticsearch.node_stats.transport.server_open | 节点用于内部通信的入方向 TCP 连接数 | +| payload.elasticsearch.node_stats.transport.total_outbound_connections | 节点自启动以来已打开的出站传输连接的累积数量 | +| payload.elasticsearch.node_stats.transport.rx_count | 集群内部通信时,节点接收到的 RX (receive)报文总数 | +| payload.elasticsearch.node_stats.transport.rx_size_in_bytes | 集群内部通信时,节点接收到的 RX (receive)报文大小(字节) | +| payload.elasticsearch.node_stats.transport.tx_count | 集群内部通信时,节点发送的 TX (transmit)报文总数 | +| payload.elasticsearch.node_stats.transport.tx_size_in_bytes | 集群内部通信时,节点发送的 TX (transmit)报文大小(字节) | +| payload.elasticsearch.node_stats.http.current_open | 节点当前打开的 HTTP 连接数 | +| payload.elasticsearch.node_stats.http.total_opened | 节点打开的 HTTP 连接总数 | +| payload.elasticsearch.node_stats.breakers.某断路器.limit_size_in_bytes | 节点某断路器的内存限制(字节) | +| payload.elasticsearch.node_stats.breakers.某断路器.limit_size | 节点某断路器的内存限制 | +| payload.elasticsearch.node_stats.breakers.某断路器.estimated_size_in_bytes | 节点某断路器操作预估使用的内存值(字节) | +| payload.elasticsearch.node_stats.breakers.某断路器.estimated_size | 节点某断路器操作预估使用的内存值 | +| payload.elasticsearch.node_stats.breakers.某断路器.overhead | 一个常数,某断路器的所有估计值与之相乘以计算最终估计值 | +| payload.elasticsearch.node_stats.breakers.某断路器.tripped | 节点某断路器被触发并防止内存不足错误的总次数 | +| payload.elasticsearch.node_stats.script.compilations | 节点执行内联脚本编译的总次数 | +| payload.elasticsearch.node_stats.script.cache_evictions | 节点脚本缓存清除旧数据的总次数 | +| payload.elasticsearch.node_stats.script.compilation_limit_triggered | 节点脚本编译断路器限制内联脚本编译的总次数 | +| payload.elasticsearch.node_stats.discovery.cluster_state_queue.total | 节点的集群状态队列里的总数 | +| payload.elasticsearch.node_stats.discovery.cluster_state_queue.pending | 节点的集群状态队列里挂起的数量 | +| payload.elasticsearch.node_stats.discovery.cluster_state_queue.committed | 节点的集群状态队列里已提交的数量 | +| payload.elasticsearch.node_stats.discovery.published_cluster_states.full_states | 节点发布的集群状态数 | +| payload.elasticsearch.node_stats.discovery.published_cluster_states.incompatible_diffs | 节点发布的集群状态之间不兼容差异数 | +| payload.elasticsearch.node_stats.discovery.published_cluster_states.compatible_diffs | 节点发布的集群状态之间兼容差异数 | +| payload.elasticsearch.node_stats.indexing_pressure.memory.current.combined_coordinating_and_primary_in_bytes | 节点当前在协调或主阶段索引请求所消耗的内存(字节) | +| payload.elasticsearch.node_stats.indexing_pressure.memory.current.coordinating_in_bytes | 节点当前在协调阶段索引请求所消耗的内存(字节) | +| payload.elasticsearch.node_stats.indexing_pressure.memory.current.primary_in_bytes | 节点当前在主阶段索引请求所消耗的内存(字节) | +| payload.elasticsearch.node_stats.indexing_pressure.memory.current.replica_in_bytes | 节点当前在复制阶段索引请求所消耗的内存(字节) | +| payload.elasticsearch.node_stats.indexing_pressure.memory.current.all_in_bytes | 节点当前在协调、主或复制阶段索引请求所消耗的内存(字节) | +| payload.elasticsearch.node_stats.indexing_pressure.memory.total.combined_coordinating_and_primary_in_bytes | 节点自启动以来在协调或主阶段索引请求所消耗的内存(字节) | +| payload.elasticsearch.node_stats.indexing_pressure.memory.total.coordinating_in_bytes | 节点自启动以来在协调阶段索引请求所消耗的内存(字节) | +| payload.elasticsearch.node_stats.indexing_pressure.memory.total.primary_in_bytes | 节点自启动以来在主阶段索引请求所消耗的内存(字节) | +| payload.elasticsearch.node_stats.indexing_pressure.memory.total.replica_in_bytes | 节点自启动以来在复制阶段索引请求所消耗的内存(字节) | +| payload.elasticsearch.node_stats.indexing_pressure.memory.total.all_in_bytes | 节点自启动以来在协调、主或复制阶段索引请求所消耗的内存(字节) | +| payload.elasticsearch.node_stats.indexing_pressure.memory.total.coordinating_rejections | 节点自启动以来在协调阶段被拒绝的索引请求数 | +| payload.elasticsearch.node_stats.indexing_pressure.memory.total.primary_rejections | 节点自启动以来在主阶段被拒绝的索引请求数 | +| payload.elasticsearch.node_stats.indexing_pressure.memory.total.replica_rejections | 节点自启动以来在复制阶段被拒绝的索引请求数 | +| payload.elasticsearch.node_stats.indexing_pressure.memory.limit_in_bytes | 节点索引请求的内存限制 | +| payload.elasticsearch.node_stats.shard_info | 节点分片信息列表 | + +## payload.host + +| 字段名 | 说明 | +| ------------------------------------------------------ | ------------------------------------ | +| payload.host.cpu.idle | 主机 CPU idle 占用百分比 | +| payload.host.cpu.iowait | 主机 CPU iowait 占用百分比 | +| payload.host.cpu.system | 主机 CPU 系统占用百分比 | +| payload.host.cpu.user | 主机 CPU 用户占用百分比 | +| payload.host.cpu.used_percent | 主机 CPU 已使用百分比 | +| payload.host.cpu.load.load1 | 主机 CPU 1 分钟负载值 | +| payload.host.cpu.load.load15 | 主机 CPU 15 分钟负载值 | +| payload.host.cpu.load.load5 | 主机 CPU 5 分钟负载值 | +| payload.host.diskio.read.bytes | 主机磁盘 IO 读取数据量 | +| payload.host.diskio.read.time_in_ms | 主机磁盘 IO 读取数据所用时间 | +| payload.host.diskio_summary.read.bytes | 主机所有磁盘 IO 读取数据量汇总 | +| payload.host.diskio_summary.read.time_in_ms | 主机所有磁盘 IO 读取数据所用时间汇总 | +| payload.host.diskio.write.bytes | 主机磁盘 IO 写入数据量 | +| payload.host.diskio.write.time_in_ms | 主机磁盘 IO 写入数据所用时间 | +| payload.host.diskio_summary.write.bytes | 主机所有磁盘 IO 写入数据量汇总 | +| payload.host.diskio_summary.write.time_in_ms | 主机所有磁盘 IO 写入数据所用时间汇总 | +| payload.host.filesystem.mount_point | 主机磁盘挂载点(按分区) | +| payload.host.filesystem.total.bytes | 主机磁盘总空间量(按分区) | +| payload.host.filesystem.used.bytes | 主机磁盘空间使用量(按分区) | +| payload.host.filesystem.used.percent | 主机磁盘空间使用百分比(按分区) | +| payload.host.filesystem.free.bytes | 主机磁盘剩余空间(按分区) | +| payload.host.filesystem_summary.mount_point | 主机磁盘挂载点(/) | +| payload.host.filesystem_summary.total.bytes | 主机所有磁盘总空间量汇总 | +| payload.host.filesystem_summary.used.bytes | 主机所有磁盘空间使用量汇总 | +| payload.host.filesystem_summary.used.percent | 主机所有磁盘空间使用百分比汇总 | +| payload.host.filesystem_summary.free.bytes | 主机所有磁盘剩余空间总量 | +| payload.host.memory.available.bytes | 主机内存可用量 | +| payload.host.memory.cached.bytes | 主机内存 cache 量 | +| payload.host.memory.free.bytes | 主机内存空闲量 | +| payload.host.memory.total.bytes | 主机内存总量 | +| payload.host.memory.used.bytes | 主机内存使用量 | +| payload.host.memory.used.percent | 主机内存使用百分比 | +| payload.host.swap.total.bytes | 主机 swap 总量 | +| payload.host.swap.used.bytes | 主机 swap 使用量 | +| payload.host.swap.used.percent | 主机 swap 使用百分比 | +| payload.host.swap.free.bytes | 主机 swap 空闲量 | +| payload.host.network.in.bytes | 主机网络接口接收的流量 | +| payload.host.network.in.dropped | 主机网络接口接收时丢弃的流量 | +| payload.host.network.in.errors | 主机网络接口接收时异常的流量 | +| payload.host.network.in.packets | 主机网络接口接收包的数量 | +| payload.host.network.name | 主机网络接口名 | +| payload.host.network.out.bytes | 主机网络接口发送的流量 | +| payload.host.network.out.dropped | 主机网络接口发送时丢弃的流量 | +| payload.host.network.out.errors | 主机网络接口发送时异常的流量 | +| payload.host.network.out.packets | 主机网络接口发送包的数量 | +| payload.host.network_summary.in.bytes | 主机网络所有接口接收的流量汇总 | +| payload.host.network_summary.in.dropped | 主机网络所有接口接收时丢弃的流量汇总 | +| payload.host.network_summary.in.errors | 主机网络所有接口接收时异常的流量汇总 | +| payload.host.network_summary.in.packets | 主机网络所有接口接收包的数量汇总 | +| payload.host.network_summary.out.bytes | 主机网络所有接口发送的流量汇总 | +| payload.host.network_summary.out.dropped | 主机网络所有接口发送时丢弃的流量汇总 | +| payload.host.network_summary.out.errors | 主机网络所有接口发送时异常的流量汇总 | +| payload.host.network_summary.out.packets | 主机网络所有接口发送包的数量汇总 | +| payload.host.network_sockets.all.connections | 主机网络所有 sockets 连接总数 | +| payload.host.network_sockets.all.established | 主机网络所有 sockets 已建立连接总数 | +| payload.host.network_sockets.all.listening | 主机网络所有 sockets listening 总数 | +| payload.host.network_sockets.all.orphan | 主机网络所有 sockets orphan 总数 | +| payload.host.network_sockets.all.udp | 主机网络所有 sockets udp 总数 | +| payload.host.network_sockets.memory.tcp | 主机网络 tcp sockets 内存使用量 | +| payload.host.network_sockets.memory.udp | 主机网络 udp sockets 内存使用量 | +| payload.host.network_sockets.tcp.IPV4/IPV6.connections | 主机网络 sockets 连接总数 | +| payload.host.network_sockets.tcp.IPV4/IPV6.established | 主机网络 sockets 已建立连接数据 | +| payload.host.network_sockets.tcp.IPV4/IPV6.close_wait | 主机网络 sockets close_wait 数 | +| payload.host.network_sockets.tcp.IPV4/IPV6.closing | 主机网络 sockets closing 数 | +| payload.host.network_sockets.tcp.IPV4/IPV6.fin_wait1 | 主机网络 sockets fin_wait1 数 | +| payload.host.network_sockets.tcp.IPV4/IPV6.fin_wait2 | 主机网络 sockets fin_wait2 数 | +| payload.host.network_sockets.tcp.IPV4/IPV6.last_ack | 主机网络 sockets last_ack 数 | +| payload.host.network_sockets.tcp.IPV4/IPV6.listening | 主机网络 sockets listening 数 | +| payload.host.network_sockets.tcp.IPV4/IPV6.sync_recv | 主机网络 sockets sync_recv 数 | +| payload.host.network_sockets.tcp.IPV4/IPV6.sync_sent | 主机网络 sockets sync_sent 数 | +| payload.host.network_sockets.tcp.IPV4/IPV6.time_wait | 主机网络 sockets time_wait 数 | + +## payload.instance + +| 字段名 | 说明 | +| --------------------------------------------------- | ------------------------------------------ | +| payload.instance.entry.my_es_entry.open_connections | 网关客户端连接数 | +| payload.instance.goroutine.任务池名称.blocking | blocked 的任务数量(后台任务统计) | +| payload.instance.goroutine.任务池名称.capacity | 任务池的容量 | +| payload.instance.goroutine.任务池名称.running | 运行中的任务数量 | +| payload.instance.pool.bytes.名称.acquired | 获取 buffer 次数(buffer pool 的统计信息) | +| payload.instance.pool.bytes.名称.allocated | 创建 buffer 次数 | +| payload.instance.pool.bytes.名称.dropped | 被丢弃的 buffer 数量 | +| payload.instance.pool.bytes.名称.inuse | 被占用的 buffer 数量 | +| payload.instance.pool.bytes.名称.pool_items | pool 里的 buffer 数量 | +| payload.instance.pool.bytes.名称.pool_size | pool 的 buffer 总大小 | +| payload.instance.pool.bytes.名称.returned | 被回收的 buffer 数量 | +| payload.instance.pool.objects.名称.acquired | 获取 buffer objects 数量 | +| payload.instance.pool.objects.名称.allocated | 创建 buffer objects 数量 | +| payload.instance.pool.objects.名称.returned | 被回收的 buffer objects 数量 | +| payload.instance.stats.elasticsearch.bulk.submit | bulk_processor.Bulk 调用次数 | +| payload.instance.stats.metrics.save.CATEGORY.NAME | metrics.Save 调用次数 | +| payload.instance.stats.queue.队列名.pop | 队列 pop 次数 | +| payload.instance.stats.queue.队列名.push | 队列 push 次数 | +| payload.instance.system.cgo_calls | CGO 调用次数 | +| payload.instance.system.cpu | CPU 利用率 | +| payload.instance.system.gc | gc 数 | +| payload.instance.system.goroutines | goroutines 数 | +| payload.instance.system.mem | 实际内存使用量 | +| payload.instance.system.mspan | mspan 总大小(heap) | +| payload.instance.system.objects | heap object 数量 | +| payload.instance.system.stack | stack 总大小 | +| payload.instance.system.uptime_in_ms | 进程运行时间 | diff --git a/docs/content.zh/docs/reference/platform/monitoring.md b/docs/content.zh/docs/reference/platform/monitoring.md new file mode 100644 index 00000000..99827734 --- /dev/null +++ b/docs/content.zh/docs/reference/platform/monitoring.md @@ -0,0 +1,80 @@ +--- +weight: 2 +title: 集群监控 +asciinema: true +--- + +# 集群监控 + +## 简介 + +当注册的集群开启了监控之后,`INFINI Console` 会根据相应配置去目标集群定期采集数据, +包括集群、节点、索引层面的一些指标([指标字段说明介绍](./infini-metrics-fields-description))。然后在集群监控里面可以观测到这些指标,从而了解目标集群的运行状态。 + +### 监控所需 Elasticsearch API 权限清单 + +\_cluster/health,\_cluster/stats,\_cat/shards, /\_nodes//stats +\_cat/indices, \_stats, \_cluster/state, \_nodes, \_alias, \_cluster/settings + +## 开启集群监控 + +在集群注册或者修改集群配置的时候,可以看到如下界面 + +{{% load-img "/img/screenshot/20220715-monitor-config.jpg" "monitor config" %}} + +可以看到有一个 `Monitored` 的开关,当这个开关打开时,代表当前集群是开启监控的。 +集群注册的时候,默认是开启监控的。监控配置里面包括集群健康指标、集群指标、节点指标和索引指标, +并且可以分别设置是否开启和采集时间间隔。 + +> 以上是对单个集群的设置,在配置文件`console.yaml`中可以设置对所有集群的监控启停,默认情况下可以看到配置文件中有如下配置: +> +> ```aidl +> metrics: +> enabled: true +> major_ip_pattern: "192.*" +> queue: metrics +> elasticsearch: +> enabled: true +> cluster_stats: true +> node_stats: true +> index_stats: true +> ``` +> +> 如果 `metrics>enable` 设置为 false, 那么所有的集群监控都是没有开启的; +> 如果 `metrics>elasticsearch>cluster_stats>enabled` 设置为 `false`,那么所有的 +> 集群就不会采集集群层面的相关指标。 + +## 查看集群指标监控 + +开启监控之后,在 `INFINI Console` 左侧菜单平台管理下面的监控报表里可以查看集群的监控信息,如下: + +{{% load-img "/img/screenshot/20220715-monitor-cluster-overview.jpg" "monitor cluster overview" %}} + +点击高级 tab 页查看集群层面更多的指标; +{{% load-img "/img/screenshot/20220715-monitor-cluster-advance.jpg" "monitor cluster advance" %}} + +如图所示,可以指定一个集群的多个节点查看节点相关指标,横向对比。 +默认显示 top 5 的节点指标( top 5 节点是根据最近 15 分钟节点的查询 qps 和写入 qps 之和计算)。 +这里切换到索引 tab 页也可以指定几个查看索引的相关指标,和节点类似。 +切换到线程池 tab 页查看节点线程池的相关指标。 + +## 查看节点指标监控 + +点击节点 tab 页查看集群节点列表。 +{{% load-img "/img/screenshot/20220715-monitor-node-list.jpg" "monitor node list" %}} + +列表中点击节点名称查看指定节点的监控 + +{{% load-img "/img/screenshot/20220715-monitor-node-shards.jpg" "monitor node list" %}} + +这里可以查看单个节点的指标监控信息和相关分片信息 + +## 查看索引指标监控 + +点击索引 tab 页查看集群索引列表。 +{{% load-img "/img/screenshot/20220715-monitor-indices.jpg" "monitor node list" %}} + +列表中点击节点名称查看指定索引的监控 + +{{% load-img "/img/screenshot/20220715-monitor-index-shards.jpg" "monitor node list" %}} +这里可以查看单个节点的指标监控信息和相关分片信息 diff --git a/docs/content.zh/docs/reference/platform/overview.md b/docs/content.zh/docs/reference/platform/overview.md new file mode 100644 index 00000000..86ee0c33 --- /dev/null +++ b/docs/content.zh/docs/reference/platform/overview.md @@ -0,0 +1,35 @@ +--- +weight: 1 +title: 平台概览 +asciinema: true +--- + +# 平台概览 + +## 简介 + +在平台概览里,可以查看集群、节点、索引、主机层面的主要指标,了解各层面的运行状态。 + +## 集群 + +{{% load-img "/img/screenshot/platform/overview/20220909-overview-clusters.png"%}} + +## 节点 + +{{% load-img "/img/screenshot/platform/overview/20220909-overview-nodes.png"%}} + +## 索引 + +{{% load-img "/img/screenshot/platform/overview/20220909-overview-indices.png"%}} + +## 主机 + +主机数据来源于 INFINI Agent 数据上报和 Elasticsearch 节点发现。 + +{{% load-img "/img/screenshot/platform/overview/20220909-overview-hosts.png"%}} + +### 发现主机 + +点击主机列表右侧的按钮"Discover host",勾选后,点击按钮"add hosts"即可添加主机到主机列表。 + +{{% load-img "/img/screenshot/platform/overview/20220909-overview-hosts-discover.png"%}} diff --git a/docs/content.zh/docs/reference/resource/_index.md b/docs/content.zh/docs/reference/resource/_index.md new file mode 100644 index 00000000..f3f842c1 --- /dev/null +++ b/docs/content.zh/docs/reference/resource/_index.md @@ -0,0 +1,5 @@ +--- +weight: 108 +title: 资源管理 +bookCollapseSection: true +--- diff --git a/docs/content.zh/docs/reference/resource/cluster.md b/docs/content.zh/docs/reference/resource/cluster.md new file mode 100644 index 00000000..83550a3a --- /dev/null +++ b/docs/content.zh/docs/reference/resource/cluster.md @@ -0,0 +1,41 @@ +--- +weight: 2 +title: 集群管理 +--- + +# 集群管理 + +## 简介 + +集群管理可以快速方便地帮助我们纳管跨版本的多个 Elasticsearch 集群。 + +## 集群列表 + +在集群列表中可以查询注册的 Elasticsearch 集群 +{{% load-img "/img/screenshot/20220330-cluster_manage.jpg" "cluster list" %}} + +## 集群注册 + +第一步填写集群地址,按需开启 TLS 和 身份验证(开启身份验证后需要输入用户名和密码)。 + +{{% load-img "/img/screenshot/20220330-cluster_register_step1.jpg" "cluster register step one" %}} + +第二步,信息确认 + +- 按需修改集群名称,集群描述; +- 是否开启监控(默认开启),启用监控之后可以在 console 监控功能里面查看 Elasticsearch 集群的各种指标 +- 是否开启 Discovery(推荐开启) , 启用之后 console 会自动发现集群所有节点,当配置的集群地址不可用时,console 会尝试使用自动发现的其他节点中可用的地址和 Elasticsearch 交互 + +{{% load-img "/img/screenshot/20220330-cluster_register_step2.jpg" "cluster register step two" %}} + +## 更新集群配置 + +点击集群列表表格中的编辑按钮,进入更新界面 + +{{% load-img "/img/screenshot/20220705-cluster-update.jpg" "cluster update" %}} + +按需修改配置,然后点击保存按钮提交 + +## 删除集群 + +点击集群列表表格中的删除按钮,进行二次确认,确认删除后执行删除操作。 diff --git a/docs/content.zh/docs/reference/resource/gateway.md b/docs/content.zh/docs/reference/resource/gateway.md new file mode 100644 index 00000000..cf377ff2 --- /dev/null +++ b/docs/content.zh/docs/reference/resource/gateway.md @@ -0,0 +1,38 @@ +--- +weight: 1 +title: 网关管理 +--- + +# 网关管理 + +## 简介 + +网关管理可以快速方便地帮助我们纳管多个网关实例。 + +## 网关列表 + +在网关列表中可以查询创建的网关实例 + +{{% load-img "/img/screenshot/resource/gateway/list.png" %}} + +## 创建网关 + +第一步填写网关地址,按需开启 TLS 和 身份验证(开启身份验证后需要输入用户名和密码)。 + +{{% load-img "/img/screenshot/resource/gateway/create.png" %}} + +第二步,信息确认,按需修改网关名称,网关标签,网关描述。 + +{{% load-img "/img/screenshot/resource/gateway/create-confirm.png" %}} + +## 更新网关配置 + +点击网关列表表格中的编辑按钮,进入更新界面 + +{{% load-img "/img/screenshot/resource/gateway/update.png" %}} + +按需修改配置,然后点击保存按钮提交 + +## 删除网关 + +点击网关列表表格中的删除按钮,进行二次确认,确认删除后执行删除操作。 diff --git a/docs/content.zh/docs/reference/setup/_index.md b/docs/content.zh/docs/reference/setup/_index.md new file mode 100644 index 00000000..b25c54be --- /dev/null +++ b/docs/content.zh/docs/reference/setup/_index.md @@ -0,0 +1,68 @@ +--- +weight: 1 +title: 安装向导 +--- + +# 安装向导 + +## 简介 + +首次安装后打开系统,会进入初始化向导页面,在这里需要初始化一些配置,如系统集群、初始化默认用户等。 + +## 配置 + +配置系统集群,elasticsearch 要求 5.3 或更高版本,用于存储相关数据。 + +{{% load-img "/img/screenshot/initialization/configuration.png" %}} + +- TLS + + 默认 http,开启后为 https。 + +- Auth + + 默认不需要连接认证,开启后,需要输入用户名&密码。 + + {{% load-img "/img/screenshot/initialization/configuration-auth.png" %}} + +- 连接测试 + + 测试输入的连接配置,成功后即可进行下一步。 + + {{% load-img "/img/screenshot/initialization/configuration-test.png" %}} + +## 初始化 + +进入初始化步骤时,会校验集群中是否已存在旧数据,进行相关操作后再进入初始化配置。 + +### 校验 + +- 存在旧数据 + + {{% load-img "/img/screenshot/initialization/initialization-history.png" %}} + + 可以使用提示的脚本删除旧数据后,点击刷新后进入初始化;也可以点击跳过,使用旧数据。 + +- 不存在旧数据 + + 将会直接进入初始化 + +### 配置 + +- 使用旧数据 + + 只需配置凭据密钥 + + {{% load-img "/img/screenshot/initialization/initialization-create-old.png" %}} + +- 不使用旧数据 + + 需配置默认用户的用户名和密码,还需配置凭据密钥 + + {{% load-img "/img/screenshot/initialization/initialization-create.png" %}} + +## 完成 + +当初始化完成后,会显示已配置的信息,请点击下载并妥善保管。 + +{{% load-img "/img/screenshot/initialization/finish.png" %}} diff --git a/docs/content.zh/docs/reference/system/_index.md b/docs/content.zh/docs/reference/system/_index.md new file mode 100644 index 00000000..fd3b5fb1 --- /dev/null +++ b/docs/content.zh/docs/reference/system/_index.md @@ -0,0 +1,5 @@ +--- +weight: 109 +title: 系统管理 +bookCollapseSection: true +--- diff --git a/docs/content.zh/docs/reference/system/credential/_index.md b/docs/content.zh/docs/reference/system/credential/_index.md new file mode 100644 index 00000000..ae0349d1 --- /dev/null +++ b/docs/content.zh/docs/reference/system/credential/_index.md @@ -0,0 +1,41 @@ +--- +weight: 1 +title: "凭据管理" +--- + +# 凭据管理 + +## 简介 + +凭据敏感信息使用加密存储。 凭据管理可以帮助我们将身份验证信息集中管理,需要用的地方直接引用,提高了身份验证信息的存储安全性。 + +> 凭据敏感信息加密密钥在 INFINI Console 安装初始化是自动生成或用户自定义设置。该密钥需要用户妥善保存,如果密钥丢失,当升级 INFINI Console 并且重新初始化系统后,先前保存的凭据信息将无法解密。 + +## 凭据列表 + +在凭据列表中可以查询已创建的凭据信息,支持关键词搜索 +{{% load-img "/img/screenshot/credential/20230222-list.jpg" "credential list" %}} + +## 添加凭据 + +点击凭据列表右上角"添加"按钮,右侧弹出添加凭据窗口如下: + +{{% load-img "/img/screenshot/credential/20230222-create.jpg" "add credential" %}} + +- 选择凭据类型(当前仅支持 basic auth) +- 输入凭据名称(必填) +- 输入用户名和密码(必填) +- 给凭据设置标签(可选) +- 点击添加完成 + +## 更新凭据 + +点击凭据列表表格中的编辑按钮,右侧弹出更新凭据窗口如下: + +{{% load-img "/img/screenshot/credential/20230222-edit.jpg" "edit credential" %}} + +按需修改配置,然后点击保存按钮提交 + +## 删除凭据 + +点击凭据列表表格中的删除按钮,进行二次确认,确认删除后执行删除操作(如果系统检测到该凭据有被引用,则无法删除)。 diff --git a/docs/content.zh/docs/reference/system/security/_index.md b/docs/content.zh/docs/reference/system/security/_index.md new file mode 100644 index 00000000..c9a7a8b5 --- /dev/null +++ b/docs/content.zh/docs/reference/system/security/_index.md @@ -0,0 +1,41 @@ +--- +weight: 2 +title: "安全设置" +bookCollapseSection: true +--- + +# 安全设置 + +## 简介 + +INFINI Console Security 具有以下安全方面的能力和优势: + +- 给不同的用户授权访问不同的平台功能 +- 给不同的用户授权不同的 Elasticsearch 集群访问权限,权限粒度可以控制到索引级别和 Elasticsearch API 级别 + +INFINI Console Security 包含两种角色 + +- 平台角色,用于平台功能层面的权限控制 +- 数据角色, 用于控制 Elasticsearch 集群数据的权限控制 + +INFINI Console Security 默认是开启的,如果需要关闭,可以修改 console.yml 配置文件中的 `web>auth>enabled` 配置,将其改为 `false`,如下所示: + +```aidl +web: + enabled: true + embedding_api: true + auth: + enabled: false + ui: + enabled: true + path: .public + vfs: true + local: true + network: + binding: 0.0.0.0:9000 + skip_occupied_port: true + gzip: + enabled: true +``` + +> 开启安全功能之后,需要用户密码登录 INFINI Console 。INFINI Console 内置了一个管理员账户,账户名和密码都为 `admin` 。 diff --git a/docs/content.zh/docs/reference/system/security/role.md b/docs/content.zh/docs/reference/system/security/role.md new file mode 100644 index 00000000..1ff3fae7 --- /dev/null +++ b/docs/content.zh/docs/reference/system/security/role.md @@ -0,0 +1,54 @@ +--- +weight: 35 +title: 角色管理 +asciinema: true +--- + +# 角色管理 + +## 简介 + +角色管理包括对角色的增删改查操作。 INFINI Console 内置了一个管理员角色,角色名为 +`Administrator`, 该角色拥有所有的操作权限, 包括所有的平台权限和数据权限。 数据角色用于控制 elasticsearch 集群的访问权限, +包括 elasticsearch API 的访问权限, elasticsearch API 的列表可以在安装目录下的 config/permission.json 文件中配置。 + +## 创建平台角色 + +{{% load-img "/img/screenshot/20220612-create-platform-role.jpg" "Create Platform Role" %}} + +- 输入唯一的角色名. +- 选择平台权限,不能为空. +- 按需输入角色描述 +- 点击保存按钮保存 + +`All` 权限代表同时拥有读和写的权限, `Read` +代表只读权限, `None` 代表没有权限。 + +## 创建数据角色 + +{{% load-img "/img/screenshot/20220612-create-data-role.jpg" "Create Data Role" %}} + +- 输入唯一的角色名. +- 选择一个或者多个集群, `*` 代表选择所有集群. +- 配置集群级别 API 权限, `*` 代表所有集群级别 API 权限. +- 配置索引级别 API 权限, `*` 代表所有索引级别 API 权限. +- 按需输入角色描述 +- 点击保存按钮保存 + +## 查询角色 + +{{% load-img "/img/screenshot/20220612-search-role.jpg" "Search Role" %}} + +输入关键字点击搜索按钮查询角色。 + +## 更新平台角色 + +{{% load-img "/img/screenshot/20220612-update-platform-role.jpg" "Update Platform Role" %}} + +按需修改角色,然后点击保存按钮保存。 + +## 更新数据角色 + +{{% load-img "/img/screenshot/20220612-update-data-role.jpg" "Update Data Role" %}} + +按需修改角色,然后点击保存按钮保存。 diff --git a/docs/content.zh/docs/reference/system/security/user.md b/docs/content.zh/docs/reference/system/security/user.md new file mode 100644 index 00000000..710552e9 --- /dev/null +++ b/docs/content.zh/docs/reference/system/security/user.md @@ -0,0 +1,38 @@ +--- +weight: 12 +title: 用户管理 +asciinema: true +--- + +# 用户管理 + +## 简介 + +用户管理包括对用户的增删改查操作以及重置用户密码. + +## 创建用户 + +{{% load-img "/img/screenshot/20220612-create-user.jpg" "Create User" %}} + +- 用户名是必填的并且需要唯一,作为登录账号名. +- 昵称, 手机号, 邮箱都是可选的. +- 给用户分配一个或者多个角色. +- 用户标签是可选的,可用于给用户分组. + +## 查询用户 + +{{% load-img "/img/screenshot/20220612-search-user.jpg" "Search User" %}} + +输入关键字,点击搜索按钮查询用户 + +## 更新用户 + +{{% load-img "/img/screenshot/20220612-update-user.jpg" "Update User" %}} + +按需修改,点击保存按钮保存 + +## 重置用户密码 + +{{% load-img "/img/screenshot/20220612-reset-password.jpg" "Reset Password" %}} + +输入新密码点击保存按钮重置密码 diff --git a/docs/content.zh/docs/release-notes/_index.md b/docs/content.zh/docs/release-notes/_index.md new file mode 100644 index 00000000..246f1c90 --- /dev/null +++ b/docs/content.zh/docs/release-notes/_index.md @@ -0,0 +1,677 @@ +--- +weight: 80 +title: "版本历史" +--- + +# 版本发布日志 + +这里是 INFINI Console 历史版本发布的相关说明。 + + +## 1.28.0 (2025-01-11) + +### Features +- 在集群健康状态变为红色时,将分配活动记录到动态日志中。 +- 为索引增加段内存指标(包括 norms、points、version map、fixed bit set)。 +- 支持在 Insight 数据查询 API 中查询 Top N 指标。 +- 新增 Insight 指标 CURD API,用于管理自定义指标。 +- 添加多个常见用例的内置指标模板。 + +### Bug fix +- 修复当集群 UUID 为空时查询线程池指标的问题。 +- 修复单元测试中的问题。 + +### Improvements +- 优化 Agent 列表的 UI,当列数据溢出时改善显示效果。 +- 在概览表格的每一行添加加载动画。 +- 支持通过集群 ID 和集群 UUID 查询指标。 +- 优化指标查询的桶大小设置 (#59)。 +- 在监控图表中,如果时间间隔小于收集间隔导致无数据显示时,添加提示。 +- 检查监控中集群版本是否支持 metric transport_outbound_connections。 +- 将 DatePicker 的时间设置默认超时时间调整为 10 秒。 +- 检查监控中集群版本是否支持 metric transport_outbound_connections。 +- 增强 http_client,支持更多自定义配置选项。 + +## 1.27.0 (2024-12-13) + +### Improvements + +- 代码开源,统一采用 Github [仓库](https://github.com/infinilabs/console) 进行开发 +- 指标采集优化,由原来的单一协程采集调整为每个注册的集群有单独的协程进行采集 +- 指标监控页面图表展示采用懒加载、单个图表独立加载,增强用户体验 +- 通用时间控件增加超时时间设置 +- 集群选择控件增加注册、刷新功能 +- 提供指标采集状态 +- 表格控件排版优化 + +### Bug fix + +- 修复集群元数据更新不及时问题 +- 修复帮助文档等链接不正确问题 +- 修复节点、索引数据因随机 id 出现重复记录问题 +- 修复 Runtime、Agent 实例编辑页面出错问题 +- 修复集群、节点、索引、分片元数据无 Loading 问题 +- 修复索引健康状态指标采集失败问题 +- 修复个别菜单列未国际化问题 + +## 1.26.1 (2024-08-13) + +### Improvements + +- 同步更新 Framework 修复的已知问题 +- 事件上报部分代码重构 + +## 1.26.0 (2024-06-07) + +### Bug fix + +- 修复监控数据布局 +- 修复命令存储权限 +- 修复多行请求包含 SQL 语法 +- 修复文档数过亿时换算错误 +- 修复从低版本 v1.6.0 导入告警规则缺少字段问题 +- 修复当 buck_size 小于 60 秒时,因指标采集延迟导致指标显示异常问题 + +### Improvements + +## 1.25.0 (2024-04-30) + +### Bug fix + +- 修复数据迁移在大数据量消费不及时场景下因解压缩可能引发数据写入条数不正确的问题 +- 修复概览监控页面探针安装链接地址错误问题 +- 修复审计日志权限菜单不显示问题 + +### Improvements + +- 优化索引管理,增加批量删除索引功能 +- 优化告警事件明细页面,增加时间选择范围,可查看历史告警事件 +- 优化探针管理页面表格布局 +- 优化数据探索 URL 展示格式,便于分享使用 +- 优化数据探索字段过滤设置,支持自定义采样条数及全记录分桶 +- 优化系统集群不可用时,可进行开发工具进行索引数据操作 +- 优化开发者工具页面,集群选择弹出框位置固定在右下方 + +## 1.24.0 (2024-04-15) + +### Features + +- 用户操作审计日志功能 + +### Bug fix + +- 修复普通用户权限 403 问题 +- 修复探针管理表格展开显示错位问题 + +### Improvements + +- 优化开发工具集群选择控件显示位置 +- 优化数据探索查询控件显示宽度 +- 优化数据探索字段统计功能 + +## 1.23.0 (2024-03-01) + +### Bug fix + +- 修复数据迁移中数据分片范围因精度导致数据溢出显示为负数 +- 修复删除实例队列后消费的 Offset 未重置问题 +- 修复网友提出的各种问题,如集群设置默认打开节点、索引采集等 + +### Improvements + +- 优化实例管理中增加磁盘空闲空间显示 +- 优化实例队列名称显示 + +## 1.22.0 (2024-01-26) + +### Bug fix + +- 修复迁移任务场景实例状态字段字段不断占用问题 +- 修复 Agent 实例管理分页参数丢失问题 +- 修改 Overview 页面指标首尾过大导致显示异常问题 + +### Improvements + +- 统一版本号 +- 优化组件依赖关系 + +## 1.14.0 (2023-12-29) + +### Features + +- 数据迁移支持根据浮点类型字段进行数据分区设置 +- 数据迁移支持根据数字类型字段进行数据均匀分区 + +### Bug fix + +- 修复告警恢复后,新周期内没有发送告警通知消息的问题 + +## 1.13.0 (2023-12-15) + +### Features + +- 支持 Opensearch 集群存储系统数据 + +### Improvements + +- 优化初始化安装流程 +- 新增探针初始化配置 +- 安装向导,新增凭据检查功能 +- 安装向导,新增管理员密码重置功能 +- 探针管理,支持自动关联 Auto Enroll + +## 1.12.0 (2023-12-01) + +### Bug fix + +- 修复数据探索 multi fields 字段计算 top values 报错的问题 +- 修复由 Framework Bug 造成连接数不释放、内存异常增长的问题 +- 修复内网模式下静态资源远程加载的问题 +- 修复数据看板数据源配置校验异常的问题 + +### Improvements + +- 优化数据探索计算 top values,使用先采样后,后取 top values +- 可通过配置参数 http_client.read_buffer_size 设置读取缓存大小,解决开发工具执行命令时,默认缓存太小的问题 + +## 1.11.0 (2023-11-17) + +### Features + +- 开发工具 SQL 查询支持 + - 支持 SELECT 查询及语法高亮 + - 支持索引和字段自动提示 + - 支持 FROM 前置语法 + +### Bug fix + +- 修复平台概览集群指标为空的问题 + +### Improvements + +- LDAP 支持从 DN 中解析 OU 属性 +- 集群动态优化显示,新增节点名称和索引名称的聚合统计过滤 + +# 1.10.0 (2023-11-03) + +### Features + +- 监控新增分片级别指标 +- 重构探针注册流程 +- 合并精简冗余接口 +- 支持实例的配置查看和动态修改 +- 允许准入和移除探针 +- 节点级别添加线程池相关指标 +- 新增网关动态配置查看和修改功能 + +### Bug fix + +- 修复数据迁移/校验任务列表状态显示异常的问题 +- 优化数据迁移/校验任务剩余时间显示 +- 修复数据探索索引选择列表数据不完整的问题 +- 修复开发工具集群列表找不到集群的问题 +- 修复监控告警详情点击后查询的数据未包含告警时间点产生的数据问题 + +### Improvements + +- 数据探索查询数据支持自定超时时间 +- 数据探索字段 TOP5 统计的总数调整为当前时间范围内的文档数 +- 监控指标支持自定义时间桶的大小 +- 数据检验任务添加导出文档数提示信息 +- 优化集群,网关注册输入框,自动去除两边空格 +- 完善探针探测未知 ES 节点的流程 +- 优化探针安装脚本,新增远程配置服务器参数 +- 优化集群动态界面,新增筛选过滤、时序图等 +- 优化集群管理界面,新增筛选过滤 + +# 1.9.0 (2023-10-20) + +### Features + +- 支持正常结束的数据校验任务重跑 +- 添加后端服务关闭错误提示 +- 新增统一的数据列表展示标准组件,基于该组件,配置相关字段即可快速渲染数据列表 UI +- 新增下拉列表标准组件,支持搜索、多选、排序、过滤、分组、翻页等 + +### Bug fix + +- 修复开发工具不支持 update API 的问题 +- 修复数据校验任务重跑之后不一致文档数显示不对的问题 + +### Improvements + +- 数据校验 UI 优化 +- 集群、节点、索引下拉列表 UI 优化 +- 数据迁移进度条优化 + +# 1.8.0 (2023-09-21) + +### Features + +- 数据迁移任务支持自定义名称和添加标签 +- 数据迁移任务详情页新增若干指标 +- 数据迁移任务详情页新增查看日志 + +### Bug fix + +### Improvements + +- 数据迁移 UI 优化 +- 监控报表、数据看板、数据探索页面时间控件 UI 优化 + +# 1.7.0 (2023-09-01) + +### Features + +- 告警规则新增分类和标签属性 +- 告警 UI 操作增加批量操作 +- 数据看板新增全屏功能 +- 数据看板新增日历热力图 +- 数据看板组件多分组支持分层显示 + +### Bug fix + +- 修复数据迁移任务在大量子任务场景下,统计进度不对的问题 +- 修复某些场景下集群重复注册的问题 + +### Improvements + +- 告警中心页面 UI 优化 +- 告警详情页面 UI 优化 +- 数据看板组件配置 UI 优化 +- 数据看板组件数据源配置优化 +- 网关管理 -> 队列管理支持批量删除队列和消费者 + +# 1.6.0 (2023-08-10) + +### Features + +- 优化平台概览 UI 界面、支持卡片和表格样式切换展示 +- 告警规则新增告警恢复通知配置 +- 告警渠道新增邮件通知 +- 告警规则和告警渠道新增导入导出 +- 新增邮件服务器 + +### Bug fix + +- 修复数据探索切换视图排序失效的问题 + +### Improvements + +- 调整告警规则渠道配置 +- 调整饼图样式 + +# 1.5.0 (2023-07-21) + +### Features + +- 新增熔断器监控指标 +- 网关队列管理支持多选删除消费者 +- 数据看板新增组件矩形树图 + +### Bug fix + +- 修复开发工具智能提示兼容性问题 +- 修复探针列表状态显示异常的问题 +- 修复探针列表分页不生效的问题 +- 修复数据看板 统计函数显示不对的问题 +- 修复探针下发采集指标配置重复的问题 +- 修复数据看板设置过滤条件不生效的问题 +- 修复主机列表探针状态不对的问题 +- 修复删除队列不成功的问题 +- 修复数据探索当前集群没索引时跳转的问题 +- 修复数据看板编辑状态下点击事件的问题 + +### Improvements + +- 探针进程关联支持通过选择集群自动关联,简化操作 +- 探针列表支持排序 +- 探针支持向上滚动查看节点日志 +- 采集监控指标添加 cluster_uuid 信息 +- 数据看板支持配置指标排序 + +# 1.4.0 (2023-06-30) + +### Features + +- 支持 LDAP 集成到登录页面 +- 新增主机列表,查看主机指标 +- 数据看板新增 Iframe 组件,支持嵌入外部链接 +- 数据看板新增表格组件(聚合结果) +- 数据看板新增全局过滤 +- 数据看板新增点击过滤/下钻(饼图、柱状图、日志表格、聚合表格) + +### Bug fix + +- 修复数据探索通过数据视图可以查询没有权限的索引数据问题 +- 修复开发工具通过 \_search 接口查询没有权限的索引数据 +- 修复数据探索编辑过滤字段报错问题 +- 修复数据看板快速切换工具栏字段类型和聚合方式不匹配问题 +- 修复数据看板日志组件加载更多失效问题 + +### Improvements + +- 优化 agent 查看节点日志文件 +- 告警指标 bucket label 支持自定义模版显示 +- 数据看板组件 bucket label 支持配置自定义模版显示 +- 优化数据看板堆叠配置(柱状图、面积图、条形图),支持配置是否百分比堆叠 +- 优化数据看板字段选择框,支持复制字段 + +# 1.3.0 (2023-06-08) + +### Features + +- 数据看板新增新增 Dashboard 导入导出功能 +- 数据看板表格组件 UI 调整,并新增排序功能 +- 数据看板组件支持多指标(折线图、面积图、柱状图、条形图) +- 数据迁移新增增量迁移功能 +- 数据迁移新增定时运行功能 +- 数据比对新增增量比对功能 +- 数据比对新增定时运行功能 +- 新增索引,节点健康状态指标 +- 新增 Agent 管理功能 + - Agent 注册以及基本信息修改 + - 查看 Agent 主机 ES 进程信息,进程关联到已注册集群后,自动采集该 ES 集群指标及日志 + - 通过 Agent 查看 ES 节点日志 + - Agent 支持 linux 平台脚本一键安装 +- 新增免费授权申请功能 + +### Bug fix + +- 修复没给菜单权限,左侧菜单依然显示的问题 +- 修复删除数据看板 Dashboard 时 URL 中 ID 不更新的问题 +- 修复数据看板指标字段搜索无数据的问题 +- 修复数据探索切换索引(视图)时报错的问题 +- 修复数据探索切换时间字段后索引显示不正常的问题 +- 修复数据探索切换表格样式的问题 +- 修复数据看板框选一个坐标点进行时间过滤时无数据的问题 +- 修复数据看板只读用户标签页样式的问题 +- 修复数据看板组件放大后进入编辑界面 UI 不正常的问题 + +### Improvements + +- 节点监控详情分片列表增加索引写入指标 +- 数据看板柱状图和条形图新增配置是否堆叠 +- 告警模版添加函数 get_keystore_secret 支持访问 keystore 变量 + +# 1.2.0 (2023-05-25) + +### Features + +- 数据看板新增表格组件 +- 数据看板组件指标快速切换 UI 调整 +- 数据看板组件时间范围框选 UI 调整,并新增下钻功能 +- 告警模版支持解析配置文件环境变量 +- 增加数据比对 beta 版本,支持索引数据校验 + +### Bug fix + +- 修复数据看板组件复制的问题 +- 修复开启实时推送日志后,不写文件日志的问题 +- 修复初始化时,系统集群没有索引,节点元数据的问题 +- 修复网关重启后,数据迁移任务无法结束的问题 +- 修复数据迁移任务统计数据重复的问题 +- 修复数据探索列表时间字段排序问题 + +### Improvements + +- 告警规则表达式显示优化 +- 优化数据迁移任务调度流程,减少 ES 调用次数 +- 数据迁移任务增加跳过 scroll/bulk 文档数检查选项 + +# 1.1.0 (2023-05-11) + +### Features + +- 网关管理添加查看实时日志的功能 +- 数据迁移添加 ILM,Template, Alias 初始化操作 +- 数据看板图表支持复制、快速切换、时间框选、缩放、标记高亮 + +### Bug fix + +- 修复数据探索保存查询出现 mapping 错误的问题 +- 修复数据看板组件数据源配置的问题 +- 修复数据探索左侧字段栏样式的问题 +- 修复集群注册向导点击跳转后丢失集群类型的问题 + +### Improvements + +- 数据看板汉化 + +# 1.0.0 (2023-04-20) + +### Features + +- 数据迁移添加初始化索引 settings, mappings 可选步骤 +- 数据迁移添加删除功能 +- discover 添加搜索关键词高亮功能 +- 新增数据看板,支持多标签页,支持折线图、柱状图、饼图等图表 + +### Bug fix + +- 修复新注册集群状态不同步更新的问题 +- 修复低版本 ES 多 type 分区查询时没有根据 doctype 过滤的问题 + +### Improvements + +- 添加 Opening scroll context 监控指标 +- 数据迁移分区设置优化 + +# 0.9.0 + +### Features + +- 新增数据迁移功能 + +### Bug fix + +- 修复注册集群选择已创建的凭据时报错的问题 +- 修复服务方式启动数据目录没有初始化的问题 + +### Improvements + +- 开发工具支持 CCS +- 数据视图支持 CCS +- UI 优化 + +# 0.8.0 + +### Features + +- 新增凭据管理功能 +- 集群配置身份验证信息加密存储 +- 在注册集群中添加凭据选择 +- 在用户向导添加凭据密钥配置 + +### Bug fix + +- 修复了网关示例列表 CPU 数值显示问题 +- 修复了系统服务健康监控错误提示 + +### Improvements + +- KV 内存占用优化. + +## 0.7.0 + +### Breaking changes + +### Features + +- 新增初始化向导。 +- 新增系统服务健康监控。 +- 新增授权窗口。 + +### Bug fix + +- 修复了 Discover 第一次加载未发起搜索请求的问题。 +- 修复了告警记录索引配置了生命周期时,查看告警详情报错的问题。 +- 修复了查看节点线程池指标时选择多个节点后指标不显示的问题。 + +## 0.6.0 + +### Breaking changes + +### Features + +- 新增主机概览。 +- 新增主机监控。 +- 节点概览新增日志查看功能(需安装 Agent)。 +- Insight 配置框新增 Search 配置。 + +### Bug fix + +- 修复了 Discover 字段过滤白屏问题。 +- 修复了 Discover 表格添加字段后排序失效问题。 +- 修复了低版本浏览器 JS 不兼容导致集群注册不成功的问题。 +- 修复了 Elasticsearch 8.x 删除文档报错不兼容的问题。 +- 修复了创建新索引不成功时,异常处理的问题。 +- 修复了元数据采集配置空指针引用的问题。 +- 修复了开发工具中使用加载命令失败报错的问题。 + +### Improvements + +- 本地列表搜索查找支持通配符过滤。 +- 支持配置页面标题后缀。 +- 优化告警规则必填字段标记显示。 +- 优化 Discover 时间范围 Auto Fit,设为 15 分钟。 +- 优化 Discover 保存搜索,会保存当前的字段过滤和 Insight 图表配置。 +- 优化集群列表:增加链接跳转;支持集群列表 status 字段排序。 + +## 0.5.0 + +### Breaking changes + +### Features + +- 集群监控节点层面添加 IO 指标(仅支持 Linux 版本 Elasticsearch 集群)。 +- 新增探针管理功能。 +- 新增基于 Centos 的 Docker 镜像。 +- INFINI Insight 新增图表类型(单值、饼图、面积图) + +### Bug fix + +- 修复了 Gateway 实例列表刷新后多次请求的问题。 +- 修复了 docker 镜像时区加载失败的问题。 +- 修复了存储数据 Elasticsearch 集群不可用时,采集监控指标队列不消费的问题。 +- 修复开发工具不能转发请求给后端集群为 Https 类型的问题。 +- 修复 INFINI Insight 编辑组件后所有组件又重新获取数据的问题。 +- 修复从其它页面的索引链接跳转到 Discover 时 Query 依然有旧状态的问题。 + +### Improvements + +- 优化刷新集群状态日志输出。 +- 优化了未授权时跳转至登录界面频繁的弹窗提示。 +- 优化 Discover 搜索栏时间选择控件 UI,空间更紧凑,切换更方便。 + +## 0.4.0 + +### Breaking changes + +### Features + +- 数据探索新增 Insight 功能,根据索引下的数据特征推送图表,可视化展示指标数据。 +- 数据探索新增保存搜索和回放搜索功能。 +- 新增别名管理。 + +### Bug fix + +- 修复了 v0.3.1 没有开启安全的情况下开发工具发送请求响应返回错误的 Bug。 +- 修复了 AWS Elasticsearch 云环境 node http.public_address 没有,导致采集监控数据报错的 Bug。 +- Fixed the bug that when the Elasticsearch cluster for storing data is unavailable, the collected metric data are not consumed(Updating the settings of `elastic>store` defaults to false in `console.yml`). + +### Improvements + +- 优化 Console 存储数据 Elasticsearch 版本检查提示。 + +## 0.3.1 + +### Bug fix + +- The KV module should be initialized before elastic module +- The account profile api should get builtin username dynamically +- Fixed an issue where the index in the overview was not displayed correctly +- Fixed node health status in the overview was not displayed correctly +- Fixed the bug that the new channel could not get the type when the rule was submit + +## 0.3.0 + +### Breaking changes + +### Features + +- Support basic authentication +- Added platform overview +- Added cluster activities +- Added index management +- Added data view management +- Added data discover (Support both index and view) +- Support gzip compression and it is enabled by default +- Support rbac authorization +- Added alerting management (Support Webhook channel) +- Added time-zone quick selector + +### Bug fix + +- Fixed bug:discover multi fields selected +- Fixed bug:the count of `nodes` and `shards` value incorrect in cluster overview +- Fixed bug:overview search request params field `from` do not counting from 0 +- Fixed bug:login page tab not centered +- Fixed bug:Re-login redirect jump parameter problem caused by session expiration +- Fixed bug:OverviewStatistic component mask state value incorrect +- Fixed bug:repeat http request pending state +- Fixed bug:console copy as curl without an endpoint + +### Improvements + +- Rewritten monitoring UI +- Optimize cluster metrics line chart +- Optimize health status component +- Add filter component to quick filter clisters,nodes,indices +- Add local sort for table column of clisters,nodes,indices +- Add isTLS form field for Gateway register +- Index list and node list Support real-time and non-real-time data switching viewing +- The interval for collecting elasticsearch cluster state is configurable +- Optimized requests to elasticsearch +- Add Console version info +- Add client http request timeout auto abort +- Dev tool support search +- Proper Handle metrics collecting while cluster in partial failure + +## 0.2.0 + +### Breaking changes + +### Features + +- Collect Elasticsearch `cluster_health` metrics +- Added thread pool related metrics +- Optimize the grouping of metrics +- Index `.infini_metrics` support ilm configuration +- Added hot key(`Ctrl+Shift+O`) to dev tools +- English version support + +### Bug fix + +- Fixed the "required authentication credentials" issue in the test connection cluster time +- Fixed the issue that the validation failed when the cluster address is a domain name and contains special characters +- Fixed the issue that monitoring data is not displayed on 32-bit operating systems +- Fixed the issue that the development tool was initialized blank when the storage ES address changed +- Fixed the issue that the pagination of cluster list page cannot work + +### Improvements + +- Cluster view Added metrics of counting cluster master, data, and coordinating nodes +- Cluster view Added metric of cluster health +- Node view Add JVM grouping, display related information of JVM memory +- Node view added JVM GC frequency and GC delay metrics +- Use `POST` instead of `GET` when request body is not nil +- Node view added cache hit rate and other related metrics +- Node View added metric of the number of open files +- Show the last time of the metrics was collected When the cluster is unavailable + +## 0.1.0 + +- Elasticsearch clusters management +- Basic monitoring supported for Elasticsearch cluster +- Dev tools support elasticsearch diff --git a/docs/content.zh/docs/resources/_index.md b/docs/content.zh/docs/resources/_index.md new file mode 100644 index 00000000..4a326305 --- /dev/null +++ b/docs/content.zh/docs/resources/_index.md @@ -0,0 +1,36 @@ +--- +weight: 100 +title: "其它资源" +--- + +# 其它资源 + +这里是一些和 INFINI Console 有关的外部有用资源。 + +## 文章 + +- [告警通知全面提升,一键接入多渠道 - 轻松管理,时刻掌控](http://www.infinilabs.com/blog/2023/infini-console-alerting/) +- [使用 INFINI Console 实现 Elasticsearch 的增量数据迁移](https://www.infinilabs.com/blog/2023/data-migration/) +- [ES 数据没了?谁动了我的数据?](https://www.infinilabs.com/blog/2023/manage-es-del-ops/) +- [INFINI Console 全新升级,支持纳管更多搜索引擎](https://www.infinilabs.com/blog/2023/console_support_opensearch_easysearch/) +- [INFINI 产品更新| Console v1.0 版本正式发布](https://www.infinilabs.com/blog/2023/release-20230422/) +- [INFINI Console 最新的 0.3 版本正式发布](https://blog.csdn.net/infinilabs/article/details/125813780) + +## 视频 + +- [INFINI Console 一站式的数据搜索分析和管理平台](https://www.bilibili.com/video/BV1M84y1T7kS/) +- [INFINI Console 告警功能演示 | V1.6.0](https://www.bilibili.com/video/BV1iu411n7MY/) +- [INFINI Console 数据看板表格组件演示 | v1.2.0](https://www.bilibili.com/video/BV17k4y1x7m9/) +- [INFINI Console 数据看板数据下钻演示 | v1.2.0](https://www.bilibili.com/video/BV1FV4y1z7HY/) +- [INFINI Console 数据看板的图表快捷操作 | v1.1.0](https://www.bilibili.com/video/BV1Ws4y1g7Eu/) +- [如何在 INFINI Console 中查看网关的实时日志 | v1.1.0](https://www.bilibili.com/video/BV15z4y1h7Rd/) +- [INFINI Console 安全功能简介](https://www.bilibili.com/video/BV1e94y1D7sp) +- [如何使用 INFINI Console 轻松创建一个 Elasticsearch “游客”账号](https://www.bilibili.com/video/BV1oG4y1e73S) +- [如何给不同 INFINI Console 账户分配不同 Elasticsearch 集群访问权限](https://www.bilibili.com/video/BV1Wa411K7pG) +- [如何给 INFINI Console 账户分配 Elasticsearch 索引级别权限](https://www.bilibili.com/video/BV1Fg411y7zt) +- [INFINI Console 的告警功能概览](https://www.bilibili.com/video/BV1Ea411P7z8) +- [如何监控 Elasticsearch 集群健康状态](https://www.bilibili.com/video/BV1Wd4y1K7HL) +- [如何监控 Elasticsearch 集群节点磁盘使用率](https://www.bilibili.com/video/BV1va4y1f7ej) +- [如何监控 Elasticsearch 集群节点的 CPU 使用率](https://www.bilibili.com/video/BV1ga41157GP) +- [INFINI Console 首发版本 Demo 演示](https://mp.weixin.qq.com/s/GNpOR-vxHXU6HHOGw7_fhA) +- [INFINI Console v0.3 版本 Demo 演示](https://www.bilibili.com/video/BV1UB4y1k731) diff --git a/docs/content.zh/docs/screenshot/_index.md b/docs/content.zh/docs/screenshot/_index.md new file mode 100644 index 00000000..2757700b --- /dev/null +++ b/docs/content.zh/docs/screenshot/_index.md @@ -0,0 +1,104 @@ +--- +weight: 39 +title: "系统截图" +custom_css: "/css/img.css" +--- + +# 系统截图 + +## 工作台 + +{{% load-img "/img/screenshot/screenshot2023/overview.png" "overview" %}} + +## 平台概览 + +{{% load-img "/img/screenshot/screenshot2023/Platform-overview.png" "平台概览" %}} +{{% load-img "/img/screenshot/screenshot2023/Platform-overview2.png" "平台概览" %}} +{{% load-img "/img/screenshot/screenshot2023/Platform-overview3.png" "平台概览" %}} +{{% load-img "/img/screenshot/screenshot2023/Platform-overview4.png" "平台概览" %}} +{{% load-img "/img/screenshot/screenshot2023/Platform-overview5.png" "平台概览" %}} +{{% load-img "/img/screenshot/screenshot2023/Platform-overview6.png" "平台概览" %}} + +## 监控报表 + +{{% load-img "/img/screenshot/screenshot2023/Monitoring1.png" "集群监控" %}} +{{% load-img "/img/screenshot/screenshot2023/Monitoring2.png" "集群监控" %}} +{{% load-img "/img/screenshot/screenshot2023/Monitoring3.png" "集群监控" %}} +{{% load-img "/img/screenshot/screenshot2023/Monitoring4.png" "集群监控" %}} +{{% load-img "/img/screenshot/screenshot2023/Monitoring5.png" "集群监控" %}} +{{% load-img "/img/screenshot/screenshot2023/Monitoring6.png" "节点" %}} +{{% load-img "/img/screenshot/screenshot2023/Monitoring7.png" "索引" %}} +{{% load-img "/img/screenshot/screenshot2023/Monitoring8.png" "节点监控" %}} +{{% load-img "/img/screenshot/screenshot2023/Monitoring9.png" "快速切换集群" %}} + +## 集群动态 + +{{% load-img "/img/screenshot/screenshot2023/ActivIties.png" "集群动态" %}} + +## 数据管理 + +{{% load-img "/img/screenshot/screenshot2023/datamanage.png" "索引" %}} +{{% load-img "/img/screenshot/screenshot2023/datamanage2.png" "别名" %}} +{{% load-img "/img/screenshot/screenshot2023/datamanage3.png" "视图" %}} +{{% load-img "/img/screenshot/screenshot2023/datamanage4.png" "视图" %}} +{{% load-img "/img/screenshot/screenshot2023/datamanage5.png" "视图" %}} +{{% load-img "/img/screenshot/screenshot2023/datamanage6.png" "视图layout" %}} + + +## 数据分析 + +{{% load-img "/img/screenshot/screenshot2023/dataInsight.png" "数据看板" %}} +{{% load-img "/img/screenshot/screenshot2023/dataInsight2.png" "图表设置" %}} +{{% load-img "/img/screenshot/screenshot2023/dataInsight3.png" "图表操作" %}} +{{% load-img "/img/screenshot/screenshot2023/dataInsight4.png" "图表类型" %}} +{{% load-img "/img/screenshot/screenshot2023/dataInsight5.png" "数据探索" %}} + +## 告警管理 + +{{% load-img "/img/screenshot/screenshot2023/alerting.png" "告警消息" %}} +{{% load-img "/img/screenshot/screenshot2023/alerting2.png" "告警详情" %}} +{{% load-img "/img/screenshot/screenshot2023/alerting3.png" "告警规则" %}} +{{% load-img "/img/screenshot/screenshot2023/alerting4.png" "规则创建" %}} +{{% load-img "/img/screenshot/screenshot2023/alerting5.png" "告警渠道" %}} +{{% load-img "/img/screenshot/screenshot2023/alerting6.png" "渠道创建" %}} + +## 开发工具 + +{{% load-img "/img/screenshot/screenshot2023/devtool3.png" "开发工具" %}} +{{% load-img "/img/screenshot/screenshot2023/devtool2.png" "保存命令" %}} +{{% load-img "/img/screenshot/screenshot2023/devtool.png" "加载命令" %}} +{{% load-img "/img/screenshot/screenshot2023/devtool4.png" "快速切换" %}} +{{% load-img "/img/screenshot/screenshot2023/devtool5.png" "智能提示" %}} + +## 数据工具 + +{{% load-img "/img/screenshot/screenshot2023/datatools.png" "数据迁移" %}} +{{% load-img "/img/screenshot/screenshot2023/datatools2.png" "迁移详情" %}} +{{% load-img "/img/screenshot/screenshot2023/datatools3.png" "数据比对" %}} +{{% load-img "/img/screenshot/screenshot2023/datatools4.png" "比对详情" %}} +{{% load-img "/img/screenshot/screenshot2023/datatools5.png" "新建任务1" %}} +{{% load-img "/img/screenshot/screenshot2023/datatools6.png" "新建任务2" %}} +{{% load-img "/img/screenshot/screenshot2023/datatools7.png" "新建任务3" %}} +{{% load-img "/img/screenshot/screenshot2023/datatools8.png" "新建任务4" %}} + +## 资源管理 + +{{% load-img "/img/screenshot/screenshot2023/inventory.png" "网关管理" %}} +{{% load-img "/img/screenshot/screenshot2023/inventory2.png" "网关管理" %}} +{{% load-img "/img/screenshot/screenshot2023/inventory3.png" "网关管理" %}} +{{% load-img "/img/screenshot/screenshot2023/inventory4.png" "网关日志" %}} +{{% load-img "/img/screenshot/screenshot2023/inventory5.png" "集群管理" %}} +{{% load-img "/img/screenshot/screenshot2023/inventory6.png" "集群详情" %}} +{{% load-img "/img/screenshot/screenshot2023/inventory7.png" "注册集群" %}} +{{% load-img "/img/screenshot/screenshot2023/inventory9.png" "探针管理" %}} + +## 系统管理 + +{{% load-img "/img/screenshot/screenshot2023/settings.png" "凭据管理" %}} +{{% load-img "/img/screenshot/screenshot2023/settings2.png" "凭据管理" %}} +{{% load-img "/img/screenshot/screenshot2023/settings3.png" "用户管理" %}} +{{% load-img "/img/screenshot/screenshot2023/settings4.png" "权限管理" %}} +{{% load-img "/img/screenshot/screenshot2023/settings5.png" "数据权限" %}} +{{% load-img "/img/screenshot/screenshot2023/settings6.png" "平台权限" %}} +{{% load-img "/img/screenshot/screenshot2023/settings7.png" "新建用户" %}} + diff --git a/docs/content.zh/docs/troubleshooting/_index.md b/docs/content.zh/docs/troubleshooting/_index.md new file mode 100644 index 00000000..eef1c659 --- /dev/null +++ b/docs/content.zh/docs/troubleshooting/_index.md @@ -0,0 +1,80 @@ +--- +title: "常见问题" +weight: 50 +--- + +# 常见问题及故障处理 + +这里主要收集 INFINI Console 使用过程中遇到的常见问题及处理办法,欢迎反馈提交到[这里](https://github.com/infinilabs/console/issues/new/choose)。 + +## 常见问题 + +### Elasticsearch 前面加上 Nginx,平台提示 400 错误 + +类似错误日志如下: + +``` +[11-25 18:26:58] [TRC] [v0.go:390] search response: {"query":{"match":{"status": "RUNNING"}}}, + Error 400 (Bad Request)!!1 +

400. That’s an error. +

Your client has issued a malformed or illegal request. That’s all we know. +[11-25 18:26:58] [ERR] [init.go:87] json: invalid character '<' looking for beginning of value: + +``` + +#### 问题描述 + +Nginx 对于 GET 请求类型,不支持传递请求体 + +#### 解决方案 + +将 INFINI Console 升级最新版本。 + +### 注册集群后监控数据不显示 + +如下如所示: +{{% load-img "/img/troubleshooting/monitor_no_data.png" "集群监控不显示数据" %}} + +#### 问题描述 + +INFINI Console 需要用到 Elasticsearch 7.0 以上版本的一些特性 + +#### 解决方案 + +将 INFINI Console 存储数据的 ES 集群版本升级到 v7.0+ + +### 启动报错 + +``` +[03-23 08:38:20] [ERR] [metadata.go:529] {"error":{"root_cause":[{"type":"illegal_argument_exception","reason":"Can't merge a non object mapping [payload.node_state.settings.http.type] with an object mapping [payload.node_state.settings.http.type]"}],"type":"illegal_argument_exception","reason":"Can't merge a non object mapping [payload.node_state.settings.http.type] with an object mapping [payload.node_state.settings.http.type]"},"status":400} +``` + +或者出现错误 + +``` +[04-16 09:45:06] [ERR] [schema.go:144] error on update mapping: {"root_cause":[{"type":"mapper_parsing_exception","reason":"Failed to parse mapping [_doc]: analyzer [suggest_text_search] has not been configured in mappings"}],"type":"mapper_parsing_exception","reason":"Failed to parse mapping [_doc]: analyzer [suggest_text_search] has not been configured in mappings","caused_by":{"type":"illegal_argument_exception","reason":"analyzer [suggest_text_search] has not been configured in mappings"}} +``` + +#### 问题描述 + +版本 v0.3 修改了模板和 Mapping,如果升级之前未手动更新模板,旧索引已经存在且 Mapping 不是期望的 object 类型,会提示字段冲突或者分析器找不到。 + +关于升级,请参考 [升级说明](../upgrade/) + +#### 解决方案 + +- 停止 INFINI Console +- 删除索引模板 `.infini` + +``` +DELETE _template/.infini +``` + +- 删除索引 `.infini_node` 和 `.infini_index` + +``` +DELETE .infini_node +DELETE .infini_index +``` + +- 启动 INFINI Console diff --git a/docs/content.zh/docs/tutorials/_index.md b/docs/content.zh/docs/tutorials/_index.md new file mode 100644 index 00000000..0fb4c807 --- /dev/null +++ b/docs/content.zh/docs/tutorials/_index.md @@ -0,0 +1,5 @@ +--- +weight: 40 +title: 动手教程 +bookCollapseSection: true +--- diff --git a/docs/content.zh/docs/tutorials/cluster_health_change.md b/docs/content.zh/docs/tutorials/cluster_health_change.md new file mode 100644 index 00000000..ce2c70c8 --- /dev/null +++ b/docs/content.zh/docs/tutorials/cluster_health_change.md @@ -0,0 +1,100 @@ +--- +weight: 50 +title: 如何监控 Elasticsearch 集群健康状态 +asciinema: true +--- + +# 如何监控 Elasticsearch 集群健康状态 + +## 简介 + +很多时候 Elasticsearch 集群会因为某些原因,集群健康状态会变为红色,这个时候 Elasticsearch +集群至少存在一个主分片未分配或者丢失。所以监控 Elasticsearch 集群健康状态是很有必要的。本文将介绍如何使用 +INFINI Console 告警功能监控 Elasticsearch 集群健康状态。 + +## 准备 + +- 下载并安装最新版 INFINI Console +- 使用 INFINI Console 注册 Elasticsearch 集群 + +## 创建告警规则 + +在浏览器中打开 INFINI Console, 点击左侧菜单 `告警管理 > 规则管理` 进入告警管理页,然后点击 +`新建` 按钮进入创建告警规则页。按以下步骤创建告警规则: + +- 选择集群(这里需要选择 INFINI Console 存储数据的 Elasticsearch 集群,也就是在配置文件 `console.yml` + 配置的 Elasticsearch 集群,如果没有注册到 INFINI Console , 请先注册) +- 选择告警对象 `.infini_metrics`(选择 Elasticsearch 集群下的索引,或者输入索引 pattern, 这里因为 + INFINI Console 采集的监控数据存放在索引 `.infini_metrics` 里面) +- 输入筛选条件(Elasticsearch 查询 DSL) + 这里我们需要过滤监控指标类别为 `cluster_health`,并且健康状态为红色的数据,DSL 如下: + +```json +{ + "bool": { + "must": [ + { + "match": { + "payload.elasticsearch.cluster_health.status": "red" + } + }, + { + "term": { + "metadata.name": { + "value": "cluster_health" + } + } + } + ] + } +} +``` + +- 选择时间字段和统计周期用于做 `date histogram` 聚合 + {{% load-img "/img/screenshot/20220725-alerting-cluster-health1.jpg" "alerting rule settings" %}} +- 输入规则名称 +- 分组设置(可选,可配置多个),当统计指标需要分组的时候设置,由于所有注册到 INFINI Console + 的 Elasticsearch 集群监控指标都存储在索引 `.infini_metrics` 里面,所以需要根据集群 ID + 分组,这里我们选择 `metadata.labels.cluster_id` +- 配置告警指标,选择聚合字段 `payload.elasticsearch.cluster_health.status`,统计方法 `count` +- 配置告警条件,配置 `持续一个周期` 聚合结果 大于等于 1,即触发 `Critical` 告警 +- 设置执行周期,这里配置一分钟执行一次检查 +- 设置事件标题,事件标题是一个模版,可以使用模版变量,模版语法及模版变量用法参考[这里](../reference/alerting/variables/) +- 设置事件内容,事件内容是一个模版,可以使用模版变量,模版语法及模版变量用法参考[这里](../reference/alerting/variables/) + {{% load-img "/img/screenshot/20220725-alerting-cluster-health2.jpg" "alerting rule settings" %}} +- 打开配置告警渠道开关,选择右上角 `add` 快速选择一个告警渠道模版填充,关于怎么创建告警渠道模版请参考[这里](../reference/alerting/channel/) +- 设置沉默周期 1 小时,即触发告警规则后,一个小时内只发送通知消息一次 +- 设置接收时段,默认 00:00-23:59,即全天都可接收通知消息 + +{{% load-img "/img/screenshot/20220725-alerting-cluster-health3.jpg" "alerting rule settings" %}} +{{% load-img "/img/screenshot/20220725-alerting-cluster-health4.jpg" "alerting rule settings" %}} + +设置完成之后点击保存按钮提交。 + +## 模拟触发告警规则 + +打开 INFINI Console 开发工具(Ctrl+Shift+O),输入如下图所示命令: + +{{% load-img "/img/screenshot/20220725-alerting-cluster-health5.jpg" "alerting rule settings" %}} + +## 收到告警通知消息 + +等待一分钟左右,收到钉钉告警消息通知如下: + +{{% load-img "/img/screenshot/20220725-alerting-cluster-health6.jpg" "alerting rule settings" %}} + +可以看到告警通知消息里面显示了健康状态变红的 Elasticsearch 集群 ID,点击消息下方的链接查看告警详细信息如下: + +{{% load-img "/img/screenshot/20220725-alerting-cluster-health8.jpg" "alerting rule settings" %}} + +## 查看告警消息中心 + +除了会收到外部通知消息外,INFINI Console 告警消息中心也会生成一条告警消息。点击菜单 +`告警管理 > 告警中心` 进入 + +{{% load-img "/img/screenshot/20220725-alerting-cluster-health7.jpg" "alerting rule settings" %}} + +## 小结 + +通过使用 INFINI Console 告警功能, 可以很方便地监控 Elasticsearch +集群健康状态。配置告警规则之后,一旦有任何 Elasticsearch 集群状态变红,都会触发告警并发送告警消息。 diff --git a/docs/content.zh/docs/tutorials/cluster_node_cpu_usage.md b/docs/content.zh/docs/tutorials/cluster_node_cpu_usage.md new file mode 100644 index 00000000..14353280 --- /dev/null +++ b/docs/content.zh/docs/tutorials/cluster_node_cpu_usage.md @@ -0,0 +1,109 @@ +--- +weight: 52 +title: 如何监控 Elasticsearch 集群节点的 CPU 使用率 +asciinema: true +--- + +# 如何监控 Elasticsearch 集群节点的 CPU 使用率 + +## 简介 + +本文将介绍如何使用 INFINI Console 监控 Elasticsearch 集群节点磁盘的使用率,并进行告警。 + +## 准备 + +- 下载并安装最新版 INFINI Console +- 使用 INFINI Console 注册 Elasticsearch 集群 + +## 创建告警规则 + +在浏览器中打开 INFINI Console,点击左侧菜单 `告警管理 > 规则管理` 进入告警管理页,然后点击 +`新建` 按钮进入创建告警规则页。按以下步骤创建告警规则: + +- 选择集群(这里需要选择 INFINI Console 存储数据的 Elasticsearch 集群,也就是在配置文件 `console.yml` + 配置的 Elasticsearch 集群,如果没有注册到 INFINI Console,请先注册) +- 输入告警对象 `.infini_metrics*`(选择 Elasticsearch 集群下的索引,或者输入索引 pattern,这里因为 INFINI Console + 采集的监控数据存放在索引 `.infini_metrics` 里面) +- 输入筛选条件(Elasticsearch 查询 DSL)这里我们需要过滤监控指标类别为 `node_stats` + 及元数据分类为 `elasticsearch`,DSL 如下: + +```json +{ + "bool": { + "must": [ + { + "term": { + "metadata.name": { + "value": "node_stats" + } + } + }, + { + "term": { + "metadata.category": { + "value": "elasticsearch" + } + } + } + ] + } +} +``` + +- 选择时间字段 `timestamp` 和统计周期用于做 `date histogram` 聚合 + {{% load-img "/img/screenshot/alerting/Alerting-rules-cpu-1.jpg" "rules" %}} +- 输入规则名称 +- 分组设置(可选,可配置多个),当统计指标需要分组的时候设置,由于所有注册到 INFINI Console + 的 Elasticsearch 集群监控指标都存储在索引 `.infini_metrics` 里面,所以需要先根据集群 ID 分组,然后再根据节点 ID 分组, + 这里我们选择 `metadata.labels.cluster_id` 和 `metadata.labels.node_id`。 +- 配置告警指标,选择聚合字段 `payload.elasticsearch.node_stats.process.cpu.percent`,统计方法 `avg`。 +- 配置指标公式(当配置了一个以上的告警指标的时候,需要设置一个公式来计算目标指标),这里公式 + fx 配置为 `a`。然后设置变量 `a` 的数值类型为比率 `Ratio`。 +- 配置告警条件,这里配置三个告警条件,配置 `持续一个周期` CPU 使用率 大于 80 的时候,触发 `P2(Medium)` 告警; + 配置 `持续一个周期` CPU 使用率 大于 90 的时候,触发 `P1(High)` 告警; + 配置 `持续一个周期` CPU 使用率 大于 95 的时候,触发 `P0(Critical)` 告警; +- 设置执行周期,这里配置一分钟执行一次检查 +- 设置事件标题,事件标题是一个模版,可以使用模版变量,模版语法及模版变量用法参考[这里](../reference/alerting/variables/) +- 设置事件内容,事件内容是一个模版,可以使用模版变量,模版语法及模版变量用法参考[这里](../reference/alerting/variables/) + +```aidl +Priority:{{.priority}} +Timestamp:{{.timestamp | datetime_in_zone "Asia/Shanghai"}} +RuleID:{{.rule_id}} +EventID:{{.event_id}} +{{range .results}} +ClusterID:{{index .group_values 0}}; +NodeID:{{index .group_values 1}}; +CPU:{{.result_value | to_fixed 2}}%; +{{end}} +``` + +{{% load-img "/img/screenshot/alerting/Alerting-rules-cpu-2.jpg" "rules" %}} + +- 打开配置告警渠道开关,选择右上角 `add` 快速选择一个告警渠道模版填充,关于怎么创建告警渠道模版请参考[这里](../reference/alerting/channel/) +- 设置沉默周期 1 小时,即触发告警规则后,一个小时内只发送通知消息一次 +- 设置接收时段,默认 00:00-23:59,即全天都可接收通知消息 + +{{% load-img "/img/screenshot/20220725-alerting-cluster-health3.jpg" "security settings" %}} +{{% load-img "/img/screenshot/20220725-alerting-cluster-health4.jpg" "security settings" %}} + +设置完成之后点击保存按钮提交。 + +## 收到告警通知消息 + +等待一会儿,收到钉钉告警消息通知如下: + +{{% load-img "/img/screenshot/alerting/Alerting-rules-cpu-3.jpg" "rules" %}} + +可以看到告警通知消息里面显示了当前规则触发的 Elasticsearch 集群 ID,节点 ID,当前 CPU 使用率。 + +## 查看告警消息中心 + +除了会收到外部通知消息外,INFINI Console 告警消息中心也会生成一条告警消息。点击菜单 `告警管理 > 告警中心` 进入 + +{{% load-img "/img/screenshot/alerting/Alerting-rules-cpu-4.jpg" "rules" %}} + +## 小结 + +通过使用 INFINI Console 告警功能, 可以很方便地监控 Elasticsearch 集群节点的 CPU +使用率。配置告警规则之后,一旦有任何 Elasticsearch 节点 CPU 使用率超过设定的阈值就会触发告警并发送告警消息。 diff --git a/docs/content.zh/docs/tutorials/cluster_node_disk_usage.md b/docs/content.zh/docs/tutorials/cluster_node_disk_usage.md new file mode 100644 index 00000000..4030b6c0 --- /dev/null +++ b/docs/content.zh/docs/tutorials/cluster_node_disk_usage.md @@ -0,0 +1,107 @@ +--- +weight: 50 +title: 如何监控 Elasticsearch 集群节点磁盘使用率 +asciinema: true +--- + +# 如何监控 Elasticsearch 集群节点磁盘使用率 + +## 简介 + +当系统磁盘使用率过高时,Elasticsearch 集群会出现数据写入不进去的情况,这样很可能导致数据丢失,所以监控 +Elasticsearch 集群节点磁盘使用率是很有必要的。本文将介绍如何使用 INFINI Console +告警功能监控 Elasticsearch 集群节点磁盘的使用率。 + +## 准备 + +- 下载并安装最新版 INFINI Console +- 使用 INFINI Console 注册 Elasticsearch 集群 + +## 创建告警规则 + +在浏览器中打开 INFINI Console,点击左侧菜单 `告警管理 > 规则管理` 进入告警管理页,然后点击 +`新建` 按钮进入创建告警规则页。按以下步骤创建告警规则: + +- 选择集群(这里需要选择 INFINI Console 存储数据的 Elasticsearch 集群,也就是在配置文件 `console.yml` + 配置的 Elasticsearch 集群,如果没有注册到 INFINI Console,请先注册) +- 输入告警对象 `.infini_metrics*`(选择 Elasticsearch 集群下的索引,或者输入索引 + pattern,这里因为 INFINI Console 采集的监控数据存放在索引 `.infini_metrics` 里面) +- 输入筛选条件(Elasticsearch 查询 DSL)这里我们需要过滤监控指标类别为 `node_stats`,DSL 如下: + +```json +{ + "bool": { + "must": [ + { + "term": { + "metadata.name": { + "value": "node_stats" + } + } + } + ] + } +} +``` + +- 选择时间字段 `timestamp` 和统计周期用于做 `date histogram` 聚合 + {{% load-img "/img/screenshot/20220726-alerting-disk-usage1.jpg" "alerting rule settings" %}} +- 输入规则名称 +- 分组设置(可选,可配置多个),当统计指标需要分组的时候设置,由于所有注册到 INFINI Console + 的 Elasticsearch 集群监控指标都存储在索引 `.infini_metrics` 里面,所以需要先根据集群 ID 分组,然后再根据节点 ID 分组, + 这里我们选择 `metadata.labels.cluster_id` 和 `metadata.labels.node_id` +- 配置告警指标,选择聚合字段 `payload.elasticsearch.node_stats.fs.total.free_in_bytes`,统计方法 + `avg`。然后再添加一个告警指标,选择聚合字段 `payload.elasticsearch.node_stats.fs.total.total_in_bytes`,统计方法 `avg`。 +- 配置指标公式(当配置了一个以上的告警指标的时候,需要设置一个公式来计算目标指标),这里公式 + fx 配置为 `((b-a)/b)*100`,意思是先用 `总的磁盘空间` 减去 `剩余磁盘空间` 得到 `磁盘的已使用空间`,然后用 + `磁盘的已使用空间` 除以 `总的磁盘空间` 再乘以 100,得到 `磁盘的使用率` +- 配置告警条件,这里配置三个告警条件,配置 `持续一个周期` 磁盘使用率 大于 80 的时候,触发 `P2(Medium)` + 告警;配置 `持续一个周期` 磁盘使用率 大于 90 的时候,触发 `P1(High)` 告警;配置 `持续一个周期` + 磁盘使用率 大于 95 的时候,触发 `P0(Critical)` 告警 +- 设置执行周期,这里配置一分钟执行一次检查 +- 设置事件标题,事件标题是一个模版,可以使用模版变量,模版语法及模版变量用法参考[这里](../reference/alerting/variables/) +- 设置事件内容,事件内容是一个模版,可以使用模版变量,模版语法及模版变量用法参考[这里](../reference/alerting/variables/) + +```aidl +Priority:{{.priority}} +Timestamp:{{.timestamp | datetime}} +RuleID:{{.rule_id}} +EventID:{{.event_id}} +{{range .results}} +ClusterID:{{index .group_values 0}} ; +NodeID:{{index .group_values 1}} ; +Disk Usage:{{.result_value | to_fixed 2}}%; +Free Storage:{{.relation_values.a | format_bytes 2}}; +{{end}} +``` + +{{% load-img "/img/screenshot/20220726-alerting-disk-usage2.jpg" "alerting rule settings" %}} +{{% load-img "/img/screenshot/20220726-alerting-disk-usage3.jpg" "alerting rule settings" %}} + +- 打开配置告警渠道开关,选择右上角 `add` 快速选择一个告警渠道模版填充,关于怎么创建告警渠道模版请参考[这里](../reference/alerting/channel/) +- 设置沉默周期 1 小时,即触发告警规则后,一个小时内只发送通知消息一次 +- 设置接收时段,默认 00:00-23:59,即全天都可接收通知消息 + +{{% load-img "/img/screenshot/20220725-alerting-cluster-health3.jpg" "alerting rule settings" %}} +{{% load-img "/img/screenshot/20220725-alerting-cluster-health4.jpg" "alerting rule settings" %}} + +设置完成之后点击保存按钮提交。 + +## 收到告警通知消息 + +等待一会儿,收到钉钉告警消息通知如下: + +{{% load-img "/img/screenshot/20220725-alerting-disk-usage1.jpg" "alerting rule settings" %}} + +可以看到告警通知消息里面显示了磁盘使用率过高的 Elasticsearch 集群 ID,节点 ID,磁盘剩余空间。 + +## 查看告警消息中心 + +除了会收到外部通知消息外,INFINI Console 告警消息中心也会生成一条告警消息。点击菜单 `告警管理 > 告警中心` 进入 + +{{% load-img "/img/screenshot/20220726-alerting-disk-usage5.jpg" "alerting rule settings" %}} + +## 小结 + +通过使用 INFINI Console 告警功能, 可以很方便地监控 Elasticsearch +集群节点磁盘使用率。配置告警规则之后,一旦有任何 Elasticsearch 节点磁盘使用率超过设定的阈值就会触发告警并发送告警消息。 diff --git a/docs/content.zh/docs/tutorials/cluster_node_jvm_usage.md b/docs/content.zh/docs/tutorials/cluster_node_jvm_usage.md new file mode 100644 index 00000000..fe0bb6cd --- /dev/null +++ b/docs/content.zh/docs/tutorials/cluster_node_jvm_usage.md @@ -0,0 +1,109 @@ +--- +weight: 53 +title: 如何监控 Elasticsearch 集群节点的 JVM 使用率 +asciinema: true +--- + +# 如何监控 Elasticsearch 集群节点的 JVM 使用率 + +## 简介 + +本文将介绍如何使用 INFINI Console 监控 Elasticsearch 集群节点 JVM 的使用率,并进行告警。 + +## 准备 + +- 下载并安装最新版 INFINI Console +- 使用 INFINI Console 注册 Elasticsearch 集群 + +## 创建告警规则 + +在浏览器中打开 INFINI Console,点击左侧菜单 `告警管理 > 规则管理` 进入告警管理页,然后点击 +`新建` 按钮进入创建告警规则页。按以下步骤创建告警规则: + +- 选择集群(这里需要选择 INFINI Console 存储数据的 Elasticsearch 集群,也就是在配置文件 + `console.yml` 配置的 Elasticsearch 集群,如果没有注册到 INFINI Console,请先注册) +- 输入告警对象 `.infini_metrics*`(选择 Elasticsearch 集群下的索引,或者输入索引 + pattern,这里因为 INFINI Console 采集的监控数据存放在索引 `.infini_metrics` 里面) +- 输入筛选条件(Elasticsearch 查询 DSL)这里我们需要过滤监控指标类别为 + `node_stats` 及元数据分类为 `elasticsearch`,DSL 如下: + +```json +{ + "bool": { + "must": [ + { + "term": { + "metadata.name": { + "value": "node_stats" + } + } + }, + { + "term": { + "metadata.category": { + "value": "elasticsearch" + } + } + } + ] + } +} +``` + +- 选择时间字段 `timestamp` 和统计周期用于做 `date histogram` 聚合 + {{% load-img "/img/screenshot/alerting/Alerting-rules-jvm-1.jpg" "rules" %}} +- 输入规则名称 +- 分组设置(可选,可配置多个),当统计指标需要分组的时候设置,由于所有注册到 INFINI Console + 的 Elasticsearch 集群监控指标都存储在索引 `.infini_metrics` 里面,所以需要先根据集群 ID 分组,然后再根据节点 ID + 分组,这里我们选择 `metadata.labels.cluster_id` 和 `metadata.labels.node_id` +- 配置告警指标,选择聚合字段 `payload.elasticsearch.node_stats.jvm.mem.heap_used_percent`,统计方法 `p90`。 +- 配置指标公式(当配置了一个以上的告警指标的时候,需要设置一个公式来计算目标指标),这里公式 + fx 配置为 `a`。然后设置变量 `a` 的数值类型为比率 `Ratio` +- 配置告警条件,这里配置三个告警条件,配置 `持续一个周期` JVM 使用率 大于 50 的时候,触发 + `P2(Medium)` 告警;配置 `持续一个周期` JVM 使用率 大于 90 的时候,触发 `P1(High)` + 告警;配置 `持续一个周期` JVM 使用率 大于 95 的时候,触发 `P0(Critical)` 告警; +- 设置执行周期,这里配置一分钟执行一次检查 +- 设置事件标题,事件标题是一个模版,可以使用模版变量,模版语法及模版变量用法参考[这里](../reference/alerting/variables/) +- 设置事件内容,事件内容是一个模版,可以使用模版变量,模版语法及模版变量用法参考[这里](../reference/alerting/variables/) + +```aidl +Priority:{{.priority}} +Timestamp:{{.timestamp | datetime_in_zone "Asia/Shanghai"}} +RuleID:{{.rule_id}} +EventID:{{.event_id}} +{{range .results}} +ClusterID:{{index .group_values 0}}; +NodeID:{{index .group_values 1}}; +JVM used percent:{{.result_value | to_fixed 2}}%; +{{end}} +``` + +{{% load-img "/img/screenshot/alerting/Alerting-rules-jvm-2.jpg" "rules" %}} + +- 打开配置告警渠道开关,选择右上角 `add` 快速选择一个告警渠道模版填充,关于怎么创建告警渠道模版请参考[这里](../reference/alerting/channel/) +- 设置沉默周期 1 小时,即触发告警规则后,一个小时内只发送通知消息一次 +- 设置接收时段,默认 00:00-23:59,即全天都可接收通知消息 + +{{% load-img "/img/screenshot/20220725-alerting-cluster-health3.jpg" "security settings" %}} +{{% load-img "/img/screenshot/20220725-alerting-cluster-health4.jpg" "security settings" %}} + +设置完成之后点击保存按钮提交。 + +## 收到告警通知消息 + +等待一会儿,收到钉钉告警消息通知如下: + +{{% load-img "/img/screenshot/alerting/Alerting-rules-jvm-3.jpg" "rules" %}} + +可以看到告警通知消息里面显示了当前规则触发的 Elasticsearch 集群 ID,节点 ID,当前 JVM 使用率。 + +## 查看告警消息中心 + +除了会收到外部通知消息外,INFINI Console 告警消息中心也会生成一条告警消息。点击菜单 `告警管理 > 告警中心` 进入 + +{{% load-img "/img/screenshot/alerting/Alerting-rules-jvm-4.jpg" "rules" %}} + +## 小结 + +通过使用 INFINI Console 告警功能, 可以很方便地监控 Elasticsearch 集群节点的 JVM +使用率。配置告警规则之后,一旦有任何 Elasticsearch 节点 JVM 使用率超过设定的阈值就会触发告警并发送告警消息。 diff --git a/docs/content.zh/docs/tutorials/cluster_slow_request.md b/docs/content.zh/docs/tutorials/cluster_slow_request.md new file mode 100644 index 00000000..84407066 --- /dev/null +++ b/docs/content.zh/docs/tutorials/cluster_slow_request.md @@ -0,0 +1,121 @@ +--- +weight: 50 +title: 如何监控 Elasticsearch 里面的慢查询请求 +asciinema: true +--- + +# 如何监控 Elasticsearch 里面的慢查询请求 + +## 简介 + +很多时候,Elasticsearch 集群会出现数据写入或者查询流量高峰期的情况,这个时候 Elasticsearch +集群压力会很大,通过对 Elasticsearch 索引查询的延迟的监控告警。可以让我们定位 +Elasticsearch 集群的压力主要集中在哪些索引。本文将介绍如何使用 INFINI Console 告警功能监控 Elasticsearch 里面的慢查询请求索引。 + +## 准备 + +- 下载并安装最新版 INFINI Console +- 使用 INFINI Console 注册 Elasticsearch 集群 + +## 创建告警规则 + +在浏览器中打开 INFINI Console,点击左侧菜单 `告警管理 > 规则管理` 进入告警管理页,然后点击 +`新建` 按钮进入创建告警规则页。按以下步骤创建告警规则: + +- 选择集群(这里需要选择 INFINI Console 存储数据的 Elasticsearch 集群,也就是在配置文件 + `console.yml` 配置的 Elasticsearch 集群,如果没有注册到 INFINI Console,请先注册) +- 输入告警对象 `.infini_metrics*`(选择 Elasticsearch 集群下的索引,或者输入索引 + pattern,这里因为 INFINI Console 采集的监控数据存放在索引 `.infini_metrics` 里面) +- 输入筛选条件(Elasticsearch 查询 DSL)这里我们需要过滤监控指标类别为 + `index_stats`,并且索引名称不能为 `_all`,DSL 如下: + +```json +{ + "bool": { + "must": [ + { + "term": { + "metadata.name": { + "value": "index_stats" + } + } + }, + { + "term": { + "metadata.category": { + "value": "elasticsearch" + } + } + } + ], + "must_not": [ + { + "term": { + "metadata.labels.index_name": { + "value": "_all" + } + } + } + ] + } +} +``` + +- 选择时间字段 `timestamp` 和统计周期用于做 `date histogram` 聚合 + {{% load-img "/img/screenshot/20220729-alerting-slow-index1.jpg" "security settings" %}} +- 输入规则名称 +- 分组设置(可选,可配置多个),当统计指标需要分组的时候设置,由于所有注册到 INFINI Console + 的 Elasticsearch 集群监控指标都存储在索引 `.infini_metrics` 里面,所以需要先根据集群 ID 分组,然后再根据索引名称分组, + 这里我们选择 `metadata.labels.cluster_id` 和 `metadata.labels.index_name` +- 配置告警指标,选择聚合字段 `payload.elasticsearch.index_stats.total.search.query_time_in_millis`,统计方法求导 + `derivative`。然后再添加一个告警指标,选择聚合字段 `payload.elasticsearch.index_stats.total.search.query_total`,统计方法 `derivative` +- 配置指标公式(当配置了一个以上的告警指标的时候,需要设置一个公式来计算目标指标),这里公式 fx 配置为 `a/b` 来计算延时, +- 配置告警条件,这里配置三个告警条件,配置 `持续一个周期` 延时 大于 100 的时候,触发 + `P3(Low)` 告警;配置 `持续一个周期` 延时 大于 500 的时候,触发 `P1(High)` 告警;配置 + `持续一个周期` 延时 大于 1000 的时候,触发 `P0(Critical)` 告警 +- 设置执行周期,这里配置一分钟执行一次检查 +- 设置事件标题,事件标题是一个模版,可以使用模版变量,模版语法及模版变量用法参考[这里](../reference/alerting/variables/) +- 设置事件内容,事件内容是一个模版,可以使用模版变量,模版语法及模版变量用法参考[这里](../reference/alerting/variables/) + +```aidl +Priority:{{.priority}} +Timestamp:{{.timestamp | datetime_in_zone "Asia/Shanghai"}} +RuleID:{{.rule_id}} +EventID:{{.event_id}} +{{range .results}} +ClusterID:{{index .group_values 0}}; +Index name:{{index .group_values 1}}; +Current value:{{.result_value | to_fixed 2}}ms; +{{end}} +``` + +{{% load-img "/img/screenshot/20220729-alerting-slow-index2.jpg" "security settings" %}} +{{% load-img "/img/screenshot/20220729-alerting-slow-index3.jpg" "security settings" %}} + +- 打开配置告警渠道开关,选择右上角 `add` 快速选择一个告警渠道模版填充,关于怎么创建告警渠道模版请参考[这里](../reference/alerting/channel/) +- 设置沉默周期 1 小时,即触发告警规则后,一个小时内只发送通知消息一次 +- 设置接收时段,默认 00:00-23:59,即全天都可接收通知消息 + +{{% load-img "/img/screenshot/20220725-alerting-cluster-health3.jpg" "security settings" %}} +{{% load-img "/img/screenshot/20220725-alerting-cluster-health4.jpg" "security settings" %}} + +设置完成之后点击保存按钮提交。 + +## 收到告警通知消息 + +等待一会儿,收到钉钉告警消息通知如下: + +{{% load-img "/img/screenshot/20220729-alerting-slow-index4.jpg" "security settings" %}} + +可以看到告警通知消息里面显示了查询延时过高的 Elasticsearch 集群 ID,索引名称,延时大小。 + +## 查看告警消息中心 + +除了会收到外部通知消息外,INFINI Console 告警消息中心也会生成一条告警消息。点击菜单 `告警管理 > 告警中心` 进入 + +{{% load-img "/img/screenshot/20220729-alerting-slow-index5.jpg" "security settings" %}} + +## 小结 + +通过使用 INFINI Console 告警功能, 可以很方便地监控 Elasticsearch +集群慢索引。配置告警规则之后,一旦有任何 Elasticsearch 索引查询延时过高,都会触发告警并发送告警消息。 diff --git a/docs/content.zh/docs/tutorials/create_readonly_account.md b/docs/content.zh/docs/tutorials/create_readonly_account.md new file mode 100644 index 00000000..5ec8ba5b --- /dev/null +++ b/docs/content.zh/docs/tutorials/create_readonly_account.md @@ -0,0 +1,53 @@ +--- +weight: 21 +title: 如何轻松创建一个 Elasticsearch “游客” 用户 +asciinema: true +--- + +# 如何轻松创建一个 Elasticsearch “游客” 用户 + +## 简介 + +有些情况下,我们想给客户分享一下某些功能或者数据,但是又不希望数据被修改。这个时候我们就需要创建一个“游客” 用户了。本文简单地介绍了如何使用 INFINI Console 创建"游客"用户。 + +## 准备 + +- 下载并安装最新版 INFINI Console +- 开启 INFINI Console [安全功能](../reference/system/security/) + +## 创建角色 + +点击 INFINI Console 左侧菜单 `系统管理 > 安全设置`,选择角色 Tab 页进入角色管理页。 + +### 新建平台角色 `readonly` + +点击新建按钮,选择平台角色,新建一个平台角色 `readonly`,操作步骤如下: + +- 输入角色名称 `readonly` +- 展开所有的功能权限 +- 除了系统设置下面的安全功能,其他所有的功能都选择 `Read` 权限。 +- 系统设置下面的安全功能 设置为 `None` 权限。 +- 点击保存按钮提交 + > 选择某个功能的 `All` 权限代表拥有这个功能的读和写的操作权限, + > `Read` 代表只拥有读的权限, + > `None` 代表没有该功能权限(用户登录之后菜单中没有该功能) + +{{% load-img "/img/screenshot/20220720-role_readonly.jpg" "security settings" %}} + +### 新建数据角色 `es-v7171` + +点击新建按钮,选择数据角色,新建一个数据角色 `es-v7171`,操作步骤如下: + +- 输入角色名称 `es-v7171` +- 集群权限选择集群 `es-v7171` +- 点击保存按钮提交 + {{% load-img "/img/screenshot/20220719-role-v7171.jpg" "security settings" %}} + +## 新建账户 `guest` + +点击 INFINI Console 左侧菜单 `系统管理 > 安全设置`,选择用户 Tab 页进入账户管理页。 +点击新建按钮,新建账户 `guest`,并赋予这个账户角色 `readonly`,`es-v7171` + +{{% load-img "/img/screenshot/20220720-user-new-guest.jpg" "security settings" %}} + +点击保存提交,创建成功之后就可以使用 `guest` 账户登录 INFINI Console,并且只拥有只读权限。 diff --git a/docs/content.zh/docs/tutorials/data_migration.md b/docs/content.zh/docs/tutorials/data_migration.md new file mode 100644 index 00000000..9b7359b8 --- /dev/null +++ b/docs/content.zh/docs/tutorials/data_migration.md @@ -0,0 +1,180 @@ +--- +weight: 54 +title: 如何使用 INFINI 迁移功能 +asciinema: true +--- + +# 如何使用 INFINI 迁移功能 + +## 简介 + +本文将介绍如何使用 INFINI Console 和 INFINI Gateway 来迁移 Elasticsearch 索引数据。 + +## 准备 + +- 下载并安装最新版 INFINI Console (版本要求 0.9.0-1036 及以上) +- 下载并安装最新版的 INFINI Gateway (版本要求 1.12.0-915 及以上) +- 两个 Elasticsearch 集群 + +## Gateway 迁移配置 + +下载解压之后默认配置文件名为 `gateway.yml`,内容如下: + +```yaml +#the env section used for setup default settings,it can be overwritten by system environments. +#eg: PROD_ES_ENDPOINT=http://192.168.3.185:9200 LOGGING_ES_ENDPOINT=http://192.168.3.185:9201 ./bin/gateway +env: #use $[[env.LOGGING_ES_ENDPOINT]] in config instead + LOGGING_ES_ENDPOINT: https://localhost:9200 + LOGGING_ES_USER: admin + LOGGING_ES_PASS: admin + PROD_ES_ENDPOINT: https://localhost:9200 + PROD_ES_USER: admin + PROD_ES_PASS: admin + GW_BINDING: "0.0.0.0:8000" + API_BINDING: "0.0.0.0:2900" +# omitted configurations +# ... +``` + +一般我们只要按需修改 Elasticsearch 集群的地址和身份验证信息, +这里我们修改 env 配置节如下: + +```yaml +env: #use $[[env.LOGGING_ES_ENDPOINT]] in config instead + LOGGING_ES_ENDPOINT: https://192.168.3.12:9212 + LOGGING_ES_USER: admin + LOGGING_ES_PASS: admin + PROD_ES_ENDPOINT: https://192.168.3.12:9212 + PROD_ES_USER: admin + PROD_ES_PASS: admin + GW_BINDING: "0.0.0.0:8000" + API_BINDING: "0.0.0.0:2900" +``` + +> 这里需要注意的是 LOGGING_ES_ENDPOINT 配置的是日志写入的 ES 集群,这个集群需要和 Console 配置的系统 ES 集群保持一致 + +# 启动 Gateway + +```bash +./gateway-xxx-xxx -config gateway.yml +``` + +## 注册 Gateway + +这里我们使用极限网关作为迁移任务的执行者,需要提前将网关实例注册到 Console 里面管理,后面创建迁移任务的时候会用到。 +点击 INFINI Console 中左侧菜单 `资源管理 > 网关管理`,然后点击 `新建` 按钮注册新的实例,如下图所示: + +{{% load-img "/img/screenshot/20230420-new-gateway.jpg"%}} + +输入网关的地址,这里要注意网关的默认 API 地址使用的是 2900 端口,这里我们输入 +192.168.3.12:2900,然后点击下一步 + +{{% load-img "/img/screenshot/20230420-new-gateway2.jpg"%}} + +点击下一步,完成网关注册 + +## 注册源集群和目标集群 + +点击 INFINI Console 中左侧菜单 `资源管理 > 集群管理`,然后点击注册集群,先后注册源集群 es-v5616 和目标集群 es-v710,如下图所示: + +{{% load-img "/img/screenshot/20230420-cluster-register1.jpg"%}} + +如果 Elasticsearch 集群有身份验证,需要设置身份验证信息,然后点击下一步 + +{{% load-img "/img/screenshot/20230420-cluster-register2.jpg"%}} + +确认集群信息无误,然后点击下一步 + +{{% load-img "/img/screenshot/20230420-cluster-register3.jpg"%}} + +到这里源目标集群就注册完成了,目标集群 es-v710 的注册步骤也是一样的,这里就不赘述了。 + +## 创建迁移任务 + +点击 INFINI Console 中左侧菜单 `数据工具 > 数据迁移`,然后点击新建按钮创建迁移任务,如下图所示: + +### 配置迁移集群 + +{{% load-img "/img/screenshot/migration/20230420-create-migration1.jpg"%}} + +在源集群列表中选择集群 es-v5616,在目标集群列表中选择集群 es-v710 + +### 配置迁移索引 + +点击选择迁移索引按钮,如下图: + +{{% load-img "/img/screenshot/migration/20230420-create-migration3.jpg"%}} + +这里我们选择了索引 test ,然后点击确认 + +{{% load-img "/img/screenshot/migration/20230420-create-migration4.jpg"%}} + +> test 索引包含两个 type,系统自动按 type 拆分成两个索引 + +表格右方可以设置目标索引名称和文档 type,按需修改即可。 +选择完索引之后,点击下一步,进行索引的初始化操作,如下图: +{{% load-img "/img/screenshot/migration/20230420-create-migration5.jpg"%}} + +点击展开后,可以看到有 mappings 和 settings 设置,如图所示, +mappings 设置左侧显示的是源集群索引的 mappings, 可以点击中间按钮复制到右侧, +然后点击 `Auto Optimize` 自动优化(兼容性优化)。设置完成后点击 `Start` +执行初始化 mappings 和 settings 操作,若没有设置,则自动跳过。 + +> 如果已通过其他方式初始化索引 settings 和 mappings, 这里可以直接点击下一步跳过 + +完成索引初始化之后,点击下一步,进行迁移任务的数据范围设置和分区设置,如下图: +{{% load-img "/img/screenshot/migration/20230420-create-migration6.jpg"%}} + +### 配置数据范围 + +如果需要过滤数据迁移,可以进行数据范围的设置,这里我们进行全量的数据迁移,就不设置了 +{{% load-img "/img/screenshot/migration/20230420-create-migration7.jpg"%}} + +### 配置数据分区 + +如果一个索引数据量特别大,可以进行数据分区的设置。数据分区根据设置的字段,以及分区步长将数据拆成多段,系统最终会将一个分段的数据作为一个子任务去运行,迁移数据, +这样的话即使,一个分段迁移过程出现异常,只需要重跑这个子任务。 + +{{% load-img "/img/screenshot/migration/20230420-create-migration8.jpg"%}} + +数据分区设置目前支持按照日期类型字段(date),和数字类型 (number) 拆分分区,如上图所示,我们选择日期类型字段 now_widh_format 进行拆分分区,分区步长设置为 5 分钟(5m),然后点击预览按钮,可以看到根据设置拆分可以得到 8 个分区(文档数为 0 的分区最终不会生成子任务)。 +根据预览信息确认分区设置无误之后,点击保存关闭分区设置并保存,然后点击下一步进行运行设置。 + +### 运行设置 + +{{% load-img "/img/screenshot/migration/20230420-create-migration9.jpg"%}} + +一般情况下使用默认设置,然后执行节点选择先前注册的网关实例 Nebula,然后点击创建任务。 + +## 启动迁移任务 + +创建迁移任务成功后会看到任务列表,如下图: + +{{% load-img "/img/screenshot/migration/20230420-migration10.jpg"%}} +可以看到,最近一条任务就是我们刚创建的,然后在表格右侧操作栏中点击 start 开始任务 + +> 任务开始之前,需要确认如果迁移索引涉及到 ILM 配置,需要确认目标集群中相关索引模版,ILM 别名是否配置好。 + +点击开始按钮 启动迁移任务。 + +## 查看迁移任务进度 + +任务启动成功之,点击详情进入任务详情页查看任务执行状态。点击 `Refresh` 按钮开启自动刷新之后,我们可以看到任务详情有如下变化: + +{{% load-img "/img/screenshot/migration/20230420-migration11.jpg"%}} + +图中蓝色方块表示,子任务(分区任务)已经在运行,灰色表示任务还没有开始 + +{{% load-img "/img/screenshot/migration/20230420-migration12.jpg"%}} + +上图中可以看到方块变成了绿色,表示子任务(分区任务)已经数据迁移完成,索引 test-doc 的迁移进度是 100%,索引 test-doc1 迁移进度是 21.11 + +{{% load-img "/img/screenshot/migration/20230420-migration13.jpg"%}} + +上图中可以看到所有方块变成了绿色,索引迁移进度都是 100%,表示数据已经迁移完成。 +如果迁移过程中有方块变成了红色,则表示迁移过程出现了错误,这时候可以点击任务方块进度信息里面的 `View Log` 查看错误日志,定位具体错误原因。 + +## 小结 + +使用 INFINI 数据迁移功能可以很方便地将 Elasticsearch +数据进行跨版本迁移,并且可以很直观地查看当前数据的迁移进度。 diff --git a/docs/content.zh/docs/tutorials/integrate-sso-login-with-github-users.md b/docs/content.zh/docs/tutorials/integrate-sso-login-with-github-users.md new file mode 100644 index 00000000..e382e2db --- /dev/null +++ b/docs/content.zh/docs/tutorials/integrate-sso-login-with-github-users.md @@ -0,0 +1,75 @@ +--- +weight: 60 +title: 为 Console 集成 Github 单点登录 +asciinema: true +--- + +# 为 Console 集成 Github 单点登录 + +## 简介 + +使用用户名和密码来登录 Console 后台有时候确实很麻烦,密码修改几次自己都忘求了。如果能够通过单点登录那多方便,今天给大家介绍一下具体怎么操作。 + +## 准备 + +首先在 Github 里面的个人设置里面或者组织设置里面,找到开发者设置,如下图: + +{{% load-img "/img/screenshot/2023/github-dev-settings.jpg" "github developer settings" %}} + +选择 `OAuth Apps`,点击 `New OAuth App` 按钮,申请一个 OAuth 应用的账号,如下图: + +{{% load-img "/img/screenshot/2023/github-new-oauth-app.jpg" "github new oauth app" %}} + +注意,上面标红的地址换成你部署的 Console 正常访问的地址,Github +登录之后会通过这个地址进行信息的回调,`/sso/callback` 是 Console 固定的用于单点登录的路径,不要修改。 + +如果不出任何意外的话,应该可以跳转到创建成功的页面,在这里可以看到这个 OAuth +应用的 `Client ID`,另外,我们点击 `Generate a new client secret` +来创建一个 `Client secrets`,并复制保存,待会配置的时候会用到。 + +{{% load-img "/img/screenshot/2023/github-oauth-token.jpg" "github new oauth app" %}} + +## 创建角色 + +不同的用户登录之后可能需要分配不同的角色,比如我们为登录成功的用户默认分配只读角色,包括平台功能角色和集群权限,如下图: + +{{% load-img "/img/screenshot/2023/console-setup-default-roles.jpg" "setup default roles in console" %}} + +设置角色 `ReadonlyUI` 如下: + +{{% load-img "/img/screenshot/2023/console-setup-platform-roles.jpg" "setup platform roles in console" %}} + +设置角色 `AllClusters` 如下: + +{{% load-img "/img/screenshot/2023/console-setup-data-roles.jpg" "setup data roles in console" %}} + +## 修改配置 + +进入 Console 配置所在的目录,新增一个配置文件 `oauth.yml`,添加如下配置信息: + +```yaml +security: + oauth: + enabled: true + client_id: "替换为你的 client_id" + client_secret: "替换为你的 client_secret" + default_roles: ["ReadonlyUI", "AllClusters"] #default for all sso users if no specify roles was defined + role_mapping: + Github用户名: ["Administrator"] + authorize_url: "https://github.com/login/oauth/authorize" + token_url: "https://github.com/login/oauth/access_token" + redirect_url: "" + scopes: [] +``` + +替换上面的配置为实际的秘钥信息,在 `role_mapping` 下面可以为指定的用户设置不同的角色。 + +### 重启生效 + +保存配置,重启 Console 即可生效,打开登录界面,点击下方的 Github 登录按钮即可。 + +{{% load-img "/img/screenshot/2023/github-sso-login-success.jpg" "github-sso-login-success" %}} + +## 小结 + +通过集成单点登录,使用 Console 更加简单了。目前 Console 只支持 Github 的集成,更多服务提供方会晚点放出。 diff --git a/docs/content.zh/docs/tutorials/role_with_different_rights.md b/docs/content.zh/docs/tutorials/role_with_different_rights.md new file mode 100644 index 00000000..f8f0f76e --- /dev/null +++ b/docs/content.zh/docs/tutorials/role_with_different_rights.md @@ -0,0 +1,84 @@ +--- +weight: 22 +title: 如何给不同 INFINI Console 账户分配不同 Elasticsearch 集群访问权限 +asciinema: true +--- + +# 如何给不同 INFINI Console 账户分配不同 Elasticsearch 集群访问权限 + +## 简介 + +本文将介绍使用 INFINI Console 给两个不同账户分配两个不同的 Elasticsearch 集群管理权限 + +## 准备 + +- 下载并安装最新版 INFINI Console +- 开启 INFINI Console [安全功能](../reference/system/security/) +- 注册至少两个 Elasticsearch 集群到 INFINI Console + +## 创建角色 + +点击 INFINI Console 左侧菜单 `系统管理 > 安全设置`,选择角色 Tab 页进入角色管理页。 + +### 新建平台角色 `platform_role` + +点击新建按钮,选择平台角色,新建一个平台角色 `platform_role`,操作步骤如下: + +- 输入角色名称 `platform_role` +- 展开所有的功能权限 +- 除了系统设置下面的安全功能,其他所有的功能都选择 `All` 权限。 +- 系统设置下面的安全功能 设置为 `None` 权限。 +- 点击保存按钮提交 + > 选择某个功能的 `All` 权限代表拥有这个功能的读和写的操作权限, + > `Read` 代表只拥有读的权限, + > `None` 代表没有该功能权限(用户登录之后菜单中没有该功能) + +{{% load-img "/img/screenshot/20220719-role-new-platform.jpg" "security settings" %}} + +### 新建数据角色 `es-v7171` + +点击新建按钮,选择数据角色,新建一个数据角色 `es-v7171` + +{{% load-img "/img/screenshot/20220719-role-v7171.jpg" "security settings" %}} + +### 新建数据角色 `es-v630` + +点击新建按钮,选择数据角色,新建一个数据角色 `es-v630`,配置同角色 `es-v7171` 类似 + +## 创建账户 + +点击 INFINI Console 左侧菜单 `系统管理 > 安全设置`,选择用户 Tab 页进入账户管理页。 + +### 新建账户 `zhangsan` + +点击新建按钮,新建账户 `zhangsan`,并赋予这个账户角色 `platform_role`,`es-v717` + +{{% load-img "/img/screenshot/20220719-user-zhangsan.jpg" "security settings" %}} +点击保存按钮提交创建成功之后,保存一下账户密码 + +{{% load-img "/img/screenshot/20220719-user-new-password.jpg" "security settings" %}} + +### 新建账户 `wangwu` + +点击新建按钮,新建账户 `wangwu`,并赋予这个账户角色 `platform_role`,`es-v630` ,配置同账户 `zhangsan` 类似 + +## 使用管理员账号登录 + +使用管理员账号登录之后,查看平台概览,注册的 13 个集群都可以看到 + +{{% load-img "/img/screenshot/20220719-user-admin-view.jpg" "security settings" %}} + +## 使用账号 `zhangsan` 登录 + +使用账号 `zhangsan` 登录之后,查看平台概览,只能看到集群 `es-v7171` +{{% load-img "/img/screenshot/20220719-user-zhangsan-view.jpg" "security settings" %}} + +## 使用账号 `wangwu` 登录 + +使用账号 `zhangsan` 登录之后,查看平台概览,只能看到集群 `es-v630` +{{% load-img "/img/screenshot/20220719-user-wangwu-view.jpg" "security settings" %}} + +## 小结 + +通过创建不同的角色并且赋予不同的 Elasticsearch 集群权限,然后将角色赋予用户,我们可以快速的实现 +对不同用户赋予不同的 Elasticsearch 集群权限。 diff --git a/docs/content.zh/docs/tutorials/role_with_index_limit.md b/docs/content.zh/docs/tutorials/role_with_index_limit.md new file mode 100644 index 00000000..36fa3769 --- /dev/null +++ b/docs/content.zh/docs/tutorials/role_with_index_limit.md @@ -0,0 +1,62 @@ +--- +weight: 23 +title: 如何给 INFINI Console 账户分配 Elasticsearch 索引级别权限 +asciinema: true +--- + +# 如何给 INFINI Console 账户分配 Elasticsearch 索引级别权限 + +## 简介 + +本文将介绍使用 INFINI Console 限定某个账户只有 Elasticsearch 集群里面某些索引的管理权限 + +## 准备 + +- 下载并安装最新版 INFINI Console +- 开启 INFINI Console [安全功能](../reference/system/security/) +- 注册至少两个 Elasticsearch 集群到 INFINI Console + +## 创建角色 + +点击 INFINI Console 左侧菜单 `系统管理 > 安全设置`,选择角色 Tab 页进入角色管理页。 + +### 新建平台角色 `platform_role` + +点击新建按钮,选择平台角色,新建一个平台角色 `platform_role` +{{% load-img "/img/screenshot/20220719-role-new-platform.jpg" "security settings" %}} + +### 新建数据角色 `test_index_only` + +点击新建按钮,选择数据角色,新建一个数据角色 `test_index_only`,然后做如下配置: + +- 将集群只选择 `es-v7140` (限制该角色只有 Elasticsearch 集群 `es-v7140` 的访问权限) +- 设置索引权限 索引只输入索引 pattern `test*` (限制该角色只有索引名称匹配 `test*` 的索引访问权限) + {{% load-img "/img/screenshot/20220720-user-index-limit.jpg" "security settings" %}} + +配置完成之后点击保存按钮提交。 + +## 创建账户 + +点击 INFINI Console 左侧菜单 `系统管理 > 安全设置`,选择用户 Tab 页进入账户管理页。 + +### 新建账户 `liming` + +点击新建按钮,新建账户 `liming`,并赋予这个账户角色 `platform_role`,`test_index_only` + +{{% load-img "/img/screenshot/20220720-user-new-liming.jpg" "security settings" %}} +点击保存按钮提交创建成功之后,保存一下账户密码 + +## 使用管理员账号登录 + +使用管理员账号登录之后,点击菜单数据管理里面的索引管理,选择集群 `es-v7140`, 然后可以看到: + +{{% load-img "/img/screenshot/20220720-user-index-all.jpg" "security settings" %}} + +## 使用账号 `liming` 登录 + +使用账号 `liming` 登录之后,点击菜单数据管理里面的索引管理,选择集群 `es-v7140`, 然后可以看到: +{{% load-img "/img/screenshot/20220720-user-liming-index.jpg" "security settings" %}} + +## 小结 + +通过指定角色的 Elasticsearch 集群权限以及索引权限,可以轻松地将用户的权限分配精准控制到索引级别。 diff --git a/docs/content.zh/docs/tutorials/use-env-variable-in-alert-template.md b/docs/content.zh/docs/tutorials/use-env-variable-in-alert-template.md new file mode 100644 index 00000000..ac9a951f --- /dev/null +++ b/docs/content.zh/docs/tutorials/use-env-variable-in-alert-template.md @@ -0,0 +1,72 @@ +--- +weight: 62 +title: 如何在 Console 告警功能中使用环境变量 +asciinema: true +--- + +# 如何在 Console 告警功能中使用环境变量 + +## 简介 + +在 Console 中配置告警规则的时候,经常可能会遇到这样一个情况,在设置模版的时候,有些内容都是复制粘贴的。 +当这部分内容需要修改时,就需要一个个规则去修改,相当的麻烦。这时候您可能会想到能不能使用一个自定义全局变量来 +定义这部分内容,这样在模版中使用的地方直接引用就可以了。如果您有这种需求,那么使用 Console 1.2.0 版本就可以了。 + +## 准备 + +- 下载并安装最新版 INFINI Console (版本要求 1.2.0 及以上) + +## 告警模版中使用环境变量 + +以下是 INFINI Conosle 内置的一个告警规则 `Shard Storage >= 55G` 配置的告警内容模版,如下图: +{{% load-img "/img/screenshot/20230525-alert-template-env-variable.jpg" "security settings" %}} + +模版配置文本内容如下: + +```aidl +Timestamp:{{.timestamp | datetime}} +RuleID:{{.rule_id}} +EventID:{{.event_id}} +{{range .results}} +ClusterID:{{index .group_values 0}}; +ClusterName:{{lookup "category=metadata,object=cluster,property=name,default=N/A" (index .group_values 0) }}; +Index: [{{index .group_values 1}}]({{$.env.INFINI_CONSOLE_ENDPOINT}}/#/cluster/overview/{{ index .group_values 0}}/indices/{{ index .group_values 1}}?_g={%22cluster_name%22:%22{{ index .group_values 0}}%22}); +Max Shard Storage:{{.result_value | format_bytes 2}}; +{{end}} +``` + +可以看到这个模版中我们使用了环境变量 `INFINI_CONSOLE_ENDPOINT`,在模版内容中是通过 `{{$.env.INFINI_CONSOLE_ENDPOINT}}` 这种书写方式来使用的。 +那么要怎么配置这个环境变量呢,有以下两种方法: + +- 设置系统环境变量 +- 在 Console 配置文件中设置 env 变量 + +> 告警模版在 range 块中,这时候如果省略 `$`,用 `{{.env.INFINI_CONSOLE_ENDPOINT}}` +> 这种写法是没法正确解析的,需要使用 `{{$.env.INFINI_CONSOLE_ENDPOINT}}` 来访问根部变量 `env` + +### 设置系统环境变量 + +以 Macos 为例,启动 Console 时设置环境变量 `INFINI_CONSOLE_ENDPOINT="https://play.infinilabs.com:64443" ./bin/console` + +### 在配置文件中设置 + +只需在 Console 配置文件 `console.yml` 中添加以下配置: + +```yaml +env: + INFINI_CONSOLE_ENDPOINT: "https://play.infinilabs.com:64443" +``` + +这中方式修改配置之后,无需重启 Console 即可生效 + +> 以上两种方式设置的环境变量,系统环境变量优先级会高于配置文件环境变量 + +设置完成之后系统触发规则告警之后,会看到如下图所示告警内容: + +{{% load-img "/img/screenshot/20230525-alert-template-env-variable1.jpg" "security settings" %}} + +从上图中标注部分可以看到使用的环境变量`INFINI_CONSOLE_ENDPOINT` 成功地渲染成了 `https://play.infinilabs.com:64443`。 + +## 小结 + +在 Console 告警功能可以使用系统环境变量(启动时设置)以及在配置文件中 env 配置节下定义变量 两种方式定义环境变量,并在告警模版内容中快速使用 。 diff --git a/docs/content.zh/docs/tutorials/view-real-time-logs.md b/docs/content.zh/docs/tutorials/view-real-time-logs.md new file mode 100644 index 00000000..0b9d4fe9 --- /dev/null +++ b/docs/content.zh/docs/tutorials/view-real-time-logs.md @@ -0,0 +1,64 @@ +--- +weight: 61 +title: 如何使用 Console 查看 INFINI 组件实时日志 +asciinema: true +--- + +# 如何使用 Console 查看 INFINI 组件实时日志 + +## 简介 + +如果你安装了几十个 INFINI Gateway 实例,现在有个需求是查看 gateway +的日志,怎么办呢?登录服务器,然后用 `tail -f gateway.log` +去查看日志。这样操作是可以,但是有没有更高端的操作呢?肯定是有的,下面我们就以查看 +INFINI Gateway 实时日志为例详细介绍 `如何使用 Console 查看 INFINI 组件实时日志` + +## 准备 + +- 下载并安装最新版 INFINI Console (版本要求 1.1.0 及以上) +- 下载并安装最新版的 INFINI Gateway (版本要求 1.13.0 及以上) + +## 配置说明 + +```aidl +api: + enabled: true + network: + binding: "localhost:2900" + websocket: + enabled: true + #忽略客户端 host 检查 + skip_host_verify: true + #设置允许连接的客户端 host 列表,skip_host_verify 为 false 时生效 + permitted_hosts: ["localhost:2900"] +``` + +以 INFINI Gateway v1.13.0 及以上默认配置都是开启 websocket 并且忽略客户端 host 检查的。 + +## 注册网关实例 + +在 Console 中查看 Gateway 日志,首先得把 Gateway 实例在 Console 中注册,详细步骤请参考文档 +[网关管理](../reference/resource/gateway/) + +## 查看 gateway 实时日志 + +登录 Console 之后点击左侧菜单 `资源管理 > 网关管理`,如下图: +{{% load-img "/img/screenshot/20230512-instance-list.jpg" "instance list" %}} + +然后选择相应的 Gateway 实例,点击 `Logging` 进入查看日志页面,如下图: + +{{% load-img "/img/screenshot/20230512-instance-logging1.jpg" "instance logging" %}} + +到这里,如上图先查看右侧连接状态是否正常,选择推送实时日志级别,然后点击 `Start` +按钮就可以查看实时的推送日志了,如下图: + +{{% load-img "/img/screenshot/20230512-instance-logging2.jpg" "instance logging" %}} + +- 这里默认会自动滚动日志,查看最新日志,也可关闭开关 +- 如果需要过滤日志,可以先点击 `Stop` 停止,然后再相应输入框中根据文件名,调用函数名,消息内容过滤,输入完成之后重新 + 点击开始,即可接受到服务器端根据条件过滤后的日志了。 + +## 小结 + +通过 Console 查看 Gateway 的实时日志可以说非常方便快捷,无需登录服务器,然后找到日志文件查看日志这些 +繁琐的操作,在管理多个实例的时候使用此功能优势就更明显了。 diff --git a/docs/content.zh/docs/upgrade/_index.md b/docs/content.zh/docs/upgrade/_index.md new file mode 100644 index 00000000..97d81ad4 --- /dev/null +++ b/docs/content.zh/docs/upgrade/_index.md @@ -0,0 +1,1183 @@ +--- +weight: 80 +title: "升级说明" +--- + +# 版本更新 + +这里是 INFINI Console 版本升级的相关说明。 + +如果您在升级过程中遇到问题,欢迎前往 INFINI Labs Github()Console 项目中提交 Issue。也可以通过 Discord 聊天室()或添加微信小助手(INFINI-Labs)跟我们取得联系与反馈。 + +## 从 v1.27.x 升级至 v1.28.0 + +Console v1.28.0 版本新增了 TopN 功能,用于快速识别排名前 N 的关键指标数据点。它通过强大的多维度指标分析能力,帮助用户更高效地进行性能优化与决策分析。 + +如果您不是通过全新安装的 **INFINI Console**, 而是通过旧版本升级的,那么您需要如下额外操作才能正常使用: + +1. 复制如下指标脚本 DSL 到 **INFINI Console** 开发工具里面。 +2. 将指标脚本 DSL 中字符串 `$[[SETUP_INDEX_PREFIX]]` 批量替换成实际的索引前缀,如果您未修改该配置,默认为 `.infini_` +3. 执行指标脚本 DSL + +{{< expand "指标脚本 DSL" "..." >}} + +```dsl +#shard level +PUT $[[SETUP_INDEX_PREFIX]]metric/_doc/bD2jH5QB7KvGccywNCH9 +{ + "id": "bD2jH5QB7KvGccywNCH9", + "name": "Indexing Rate", + "key": "indexing_rate", + "level": "shard", + "formula": "bD2jH5QB7KvGccywNCH9/{{.bucket_size_in_second}}", + "items": [ + { + "name": "bD2jH5QB7KvGccywNCH9", + "field": "payload.elasticsearch.shard_stats.indexing.index_total", + "statistic": "rate" + } + ], + "statistics": ["rate"], + "format": "number", + "unit": "doc/s", + "builtin": true, + "created": "2025-01-09T14:30:56.63155+08:00", + "updated": "2025-01-09T14:30:56.63155+08:00" +} + +PUT $[[SETUP_INDEX_PREFIX]]metric/_doc/bD2jH5QB7KvGccywNCH1 +{ + "id": "bD2jH5QB7KvGccywNCH1", + "name": "Shard Storage", + "key": "shard_storage", + "level": "shard", + "formula": "bD2jH5QB7KvGccywNCH1", + "items": [ + { + "name": "bD2jH5QB7KvGccywNCH1", + "field": "payload.elasticsearch.shard_stats.store.size_in_bytes", + "statistic": "max" + } + ], + "statistics": ["max", "min", "sum", "avg", "p99", "medium"], + "format": "bytes", + "unit": "", + "builtin": true, + "created": "2025-01-09T14:30:56.63155+08:00", + "updated": "2025-01-09T14:30:56.63155+08:00" +} +PUT $[[SETUP_INDEX_PREFIX]]metric/_doc/bD2jH5QB7KvGccywNCH5 +{ + "id": "bD2jH5QB7KvGccywNCH5", + "name": "Document Count", + "key": "doc_count", + "level": "shard", + "formula": "bD2jH5QB7KvGccywNCH5", + "items": [ + { + "name": "bD2jH5QB7KvGccywNCH5", + "field": "payload.elasticsearch.shard_stats.docs.count", + "statistic": "max" + } + ], + "statistics": ["max", "min", "sum", "avg", "p99", "medium"], + "format": "number", + "unit": "", + "builtin": true, + "created": "2025-01-09T14:30:56.63155+08:00", + "updated": "2025-01-09T14:30:56.63155+08:00" +} + +PUT $[[SETUP_INDEX_PREFIX]]metric/_doc/bD2jH5QB7KvGccywNCH2 +{ + "id": "bD2jH5QB7KvGccywNCH2", + "name": "Search Rate", + "key": "search_rate", + "level": "shard", + "formula": "bD2jH5QB7KvGccywNCH2/{{.bucket_size_in_second}}", + "items": [ + { + "name": "bD2jH5QB7KvGccywNCH2", + "field": "payload.elasticsearch.shard_stats.search.query_total", + "statistic": "rate" + } + ], + "statistics": ["rate"], + "format": "number", + "unit": "doc/s", + "builtin": true, + "created": "2025-01-09T14:30:56.63155+08:00", + "updated": "2025-01-09T14:30:56.63155+08:00" +} +PUT $[[SETUP_INDEX_PREFIX]]metric/_doc/bD2jH5QB7KvGccywNCH3 +{ + "id": "bD2jH5QB7KvGccywNCH3", + "name": "Indexing Latency", + "key": "indexing_latency", + "level": "shard", + "formula": "bD2jH5QB7KvGccywNCx3/bD2jH5QB7KvGccywNCH3", + "items": [ + { + "name": "bD2jH5QB7KvGccywNCx3", + "field": "payload.elasticsearch.shard_stats.indexing.index_total", + "statistic": "rate" + }, + { + "name": "bD2jH5QB7KvGccywNCH3", + "field": "payload.elasticsearch.shard_stats.indexing.index_time_in_millis", + "statistic": "rate" + } + ], + "statistics": ["rate"], + "format": "number", + "unit": "ms", + "builtin": true, + "created": "2025-01-09T14:30:56.63155+08:00", + "updated": "2025-01-09T14:30:56.63155+08:00" +} + +PUT $[[SETUP_INDEX_PREFIX]]metric/_doc/bD2jH5QB7KvGccywNCH4 +{ + "id": "bD2jH5QB7KvGccywNCH4", + "name": "Search Latency", + "key": "search_latency", + "level": "shard", + "formula": "bD2jH5QB7KvGccywNCx4/bD2jH5QB7KvGccywNCH4", + "items": [ + { + "name": "bD2jH5QB7KvGccywNCH4", + "field": "payload.elasticsearch.shard_stats.search.query_total", + "statistic": "rate" + }, + { + "name": "bD2jH5QB7KvGccywNCx4", + "field": "payload.elasticsearch.shard_stats.search.query_time_in_millis", + "statistic": "rate" + } + ], + "statistics": ["rate"], + "format": "number", + "unit": "ms", + "builtin": true, + "created": "2025-01-09T14:30:56.63155+08:00", + "updated": "2025-01-09T14:30:56.63155+08:00" +} +PUT $[[SETUP_INDEX_PREFIX]]metric/_doc/bD2jH5QB7KvGccywNCH6 +{ + "id": "bD2jH5QB7KvGccywNCH6", + "name": "Segment Count", + "key": "segment_count", + "level": "shard", + "formula": "bD2jH5QB7KvGccywNCH6", + "items": [ + { + "name": "bD2jH5QB7KvGccywNCH6", + "field": "payload.elasticsearch.shard_stats.segments.count", + "statistic": "max" + } + ], + "statistics": ["max", "min", "sum", "avg", "p99", "medium"], + "format": "number", + "unit": "", + "builtin": true, + "created": "2025-01-09T14:30:56.63155+08:00", + "updated": "2025-01-09T14:30:56.63155+08:00" +} + +PUT $[[SETUP_INDEX_PREFIX]]metric/_doc/bD2jH5QB7KvGccywNCH7 +{ + "id": "bD2jH5QB7KvGccywNCH7", + "name": "Segment memory", + "key": "segment_memory", + "level": "shard", + "formula": "bD2jH5QB7KvGccywNCH7", + "items": [ + { + "name": "bD2jH5QB7KvGccywNCH7", + "field": "payload.elasticsearch.shard_stats.segments.memory_in_bytes", + "statistic": "max" + } + ], + "statistics": ["max", "min", "sum", "avg", "p99", "medium"], + "format": "number", + "unit": "", + "builtin": true, + "created": "2025-01-09T14:30:56.63155+08:00", + "updated": "2025-01-09T14:30:56.63155+08:00" +} + +#indices level +PUT $[[SETUP_INDEX_PREFIX]]metric/_doc/aD2jH5QB7KvGccywNCH9 +{ + "id": "aD2jH5QB7KvGccywNCH9", + "name": "Indexing Rate", + "key": "indexing_rate", + "level": "indices", + "formula": "aD2jH5QB7KvGccywNCH9/{{.bucket_size_in_second}}", + "items": [ + { + "name": "aD2jH5QB7KvGccywNCH9", + "field": "payload.elasticsearch.index_stats.primaries.indexing.index_total", + "statistic": "rate" + } + ], + "statistics": ["rate"], + "format": "number", + "unit": "doc/s", + "builtin": true, + "created": "2025-01-09T14:30:56.63155+08:00", + "updated": "2025-01-09T14:30:56.63155+08:00" +} + +PUT $[[SETUP_INDEX_PREFIX]]metric/_doc/aD2jH5QB7KvGccywNCH1 +{ + "id": "aD2jH5QB7KvGccywNCH1", + "name": "Index Storage", + "key": "index_storage", + "level": "indices", + "formula": "aD2jH5QB7KvGccywNCH1", + "items": [ + { + "name": "aD2jH5QB7KvGccywNCH1", + "field": "payload.elasticsearch.index_stats.total.store.size_in_bytes", + "statistic": "max" + } + ], + "statistics": ["max", "min", "sum", "avg", "p99", "medium"], + "format": "bytes", + "unit": "", + "builtin": true, + "created": "2025-01-09T14:30:56.63155+08:00", + "updated": "2025-01-09T14:30:56.63155+08:00" +} +PUT $[[SETUP_INDEX_PREFIX]]metric/_doc/aD2jH5QB7KvGccywNCH5 +{ + "id": "aD2jH5QB7KvGccywNCH5", + "name": "Document Count", + "key": "doc_count", + "level": "indices", + "formula": "aD2jH5QB7KvGccywNCH5", + "items": [ + { + "name": "aD2jH5QB7KvGccywNCH5", + "field": "payload.elasticsearch.index_stats.total.docs.count", + "statistic": "max" + } + ], + "statistics": ["max", "min", "sum", "avg", "p99", "medium"], + "format": "number", + "unit": "", + "builtin": true, + "created": "2025-01-09T14:30:56.63155+08:00", + "updated": "2025-01-09T14:30:56.63155+08:00" +} + +PUT $[[SETUP_INDEX_PREFIX]]metric/_doc/aD2jH5QB7KvGccywNCH2 +{ + "id": "aD2jH5QB7KvGccywNCH2", + "name": "Search Rate", + "key": "search_rate", + "level": "indices", + "formula": "aD2jH5QB7KvGccywNCH2/{{.bucket_size_in_second}}", + "items": [ + { + "name": "aD2jH5QB7KvGccywNCH2", + "field": "payload.elasticsearch.index_stats.total.search.query_total", + "statistic": "rate" + } + ], + "statistics": ["rate"], + "format": "number", + "unit": "doc/s", + "builtin": true, + "created": "2025-01-09T14:30:56.63155+08:00", + "updated": "2025-01-09T14:30:56.63155+08:00" +} +PUT $[[SETUP_INDEX_PREFIX]]metric/_doc/aD2jH5QB7KvGccywNCH3 +{ + "id": "aD2jH5QB7KvGccywNCH3", + "name": "Indexing Latency", + "key": "indexing_latency", + "level": "indices", + "formula": "aD2jH5QB7KvGccywNCx3/aD2jH5QB7KvGccywNCH3", + "items": [ + { + "name": "aD2jH5QB7KvGccywNCH3", + "field": "payload.elasticsearch.index_stats.primaries.indexing.index_total", + "statistic": "rate" + }, + { + "name": "aD2jH5QB7KvGccywNCx3", + "field": "payload.elasticsearch.index_stats.primaries.indexing.index_time_in_millis", + "statistic": "rate" + } + ], + "statistics": ["rate"], + "format": "number", + "unit": "ms", + "builtin": true, + "created": "2025-01-09T14:30:56.63155+08:00", + "updated": "2025-01-09T14:30:56.63155+08:00" +} + +PUT $[[SETUP_INDEX_PREFIX]]metric/_doc/aD2jH5QB7KvGccywNCH4 +{ + "id": "aD2jH5QB7KvGccywNCH4", + "name": "Search Latency", + "key": "search_latency", + "level": "indices", + "formula": "aD2jH5QB7KvGccywNCx4/aD2jH5QB7KvGccywNCH4", + "items": [ + { + "name": "aD2jH5QB7KvGccywNCH4", + "field": "payload.elasticsearch.index_stats.total.search.query_total", + "statistic": "rate" + }, + { + "name": "aD2jH5QB7KvGccywNCx4", + "field": "payload.elasticsearch.index_stats.total.search.query_time_in_millis", + "statistic": "rate" + } + ], + "statistics": ["rate"], + "format": "number", + "unit": "ms", + "builtin": true, + "created": "2025-01-09T14:30:56.63155+08:00", + "updated": "2025-01-09T14:30:56.63155+08:00" +} +PUT $[[SETUP_INDEX_PREFIX]]metric/_doc/aD2jH5QB7KvGccywNCH6 +{ + "id": "aD2jH5QB7KvGccywNCH6", + "name": "Segment Count", + "key": "segment_count", + "level": "indices", + "formula": "aD2jH5QB7KvGccywNCH6", + "items": [ + { + "name": "aD2jH5QB7KvGccywNCH6", + "field": "payload.elasticsearch.index_stats.total.segments.count", + "statistic": "max" + } + ], + "statistics": ["max", "min", "sum", "avg", "p99", "medium"], + "format": "number", + "unit": "", + "builtin": true, + "created": "2025-01-09T14:30:56.63155+08:00", + "updated": "2025-01-09T14:30:56.63155+08:00" +} + +PUT $[[SETUP_INDEX_PREFIX]]metric/_doc/aD2jH5QB7KvGccywNCH7 +{ + "id": "aD2jH5QB7KvGccywNCH7", + "name": "Segment memory", + "key": "segment_memory", + "level": "indices", + "formula": "aD2jH5QB7KvGccywNCH7", + "items": [ + { + "name": "aD2jH5QB7KvGccywNCH7", + "field": "payload.elasticsearch.index_stats.total.segments.memory_in_bytes", + "statistic": "max" + } + ], + "statistics": ["max", "min", "sum", "avg", "p99", "medium"], + "format": "bytes", + "unit": "", + "builtin": true, + "created": "2025-01-09T14:30:56.63155+08:00", + "updated": "2025-01-09T14:30:56.63155+08:00" +} + +#node level +PUT $[[SETUP_INDEX_PREFIX]]metric/_doc/jD2jH5QB7KvGccywNCH9 +{ + "id": "jD2jH5QB7KvGccywNCH9", + "name": "Indexing Rate", + "key": "indexing_rate", + "level": "node", + "formula": "jD2jH5QB7KvGccywH9/{{.bucket_size_in_second}}", + "items": [ + { + "name": "jD2jH5QB7KvGccywH9", + "field": "payload.elasticsearch.node_stats.indices.indexing.index_total", + "statistic": "derivative" + } + ], + "statistics": ["rate"], + "format": "number", + "unit": "doc/s", + "builtin": true, + "created": "2025-01-09T14:30:56.63155+08:00", + "updated": "2025-01-09T14:30:56.63155+08:00" +} + + +PUT $[[SETUP_INDEX_PREFIX]]metric/_doc/jD2jH5QB7KvGccywNCH4 +{ + "id": "jD2jH5QB7KvGccywNCH4", + "name": "Process CPU Usage", + "key": "process_cpu_used", + "level": "node", + "formula": "jD2jH5QB7KvGccywNCH4", + "items": [ + { + "name": "jD2jH5QB7KvGccywNCH4", + "field": "payload.elasticsearch.node_stats.process.cpu.percent", + "statistic": "avg" + } + ], + "statistics": ["max", "min", "sum", "avg", "p99", "medium"], + "format": "", + "unit": "%", + "builtin": true, + "created": "2025-01-09T14:30:56.63155+08:00", + "updated": "2025-01-09T14:30:56.63155+08:00" +} + +PUT $[[SETUP_INDEX_PREFIX]]metric/_doc/jD2jH5QB7KvGccywNCH3 +{ + "id": "jD2jH5QB7KvGccywNCH3", + "name": "JVM Heap Usage", + "key": "jvm_heap_used", + "level": "node", + "formula": "jD2jH5QB7KvGccywNCH3", + "items": [ + { + "name": "jD2jH5QB7KvGccywNCH3", + "field": "payload.elasticsearch.node_stats.jvm.mem.heap_used_in_bytes", + "statistic": "max" + } + ], + "statistics": ["max", "min", "sum", "avg", "p99", "medium"], + "format": "bytes", + "unit": "", + "builtin": true, + "created": "2025-01-09T14:30:56.63155+08:00", + "updated": "2025-01-09T14:30:56.63155+08:00" +} +PUT $[[SETUP_INDEX_PREFIX]]metric/_doc/jD2jH5QB7KvGccywNCH1 +{ + "id": "jD2jH5QB7KvGccywNCH1", + "name": "Indexing Latency", + "key": "indexing_latency", + "level": "node", + "formula": "jD2jH5QB7KvGccywNCx1/jD2jH5QB7KvGccywNCH1", + "items": [ + { + "name": "jD2jH5QB7KvGccywNCH1", + "field": "payload.elasticsearch.node_stats.indices.indexing.index_total", + "statistic": "rate" + }, + { + "name": "jD2jH5QB7KvGccywNCx1", + "field": "payload.elasticsearch.node_stats.indices.indexing.index_time_in_millis", + "statistic": "rate" + } + ], + "statistics": ["rate"], + "format": "number", + "unit": "ms", + "builtin": true, + "created": "2025-01-09T14:30:56.63155+08:00", + "updated": "2025-01-09T14:30:56.63155+08:00" +} + +PUT $[[SETUP_INDEX_PREFIX]]metric/_doc/jD2jH5QB7KvGccywNCH0 +{ + "id": "jD2jH5QB7KvGccywNCH0", + "name": "Search Rate", + "key": "search_rate", + "level": "node", + "formula": "jD2jH5QB7KvGccywH0/{{.bucket_size_in_second}}", + "items": [ + { + "name": "jD2jH5QB7KvGccywH0", + "field": "payload.elasticsearch.node_stats.indices.search.query_total", + "statistic": "derivative" + } + ], + "statistics": ["rate"], + "format": "number", + "unit": "query/s", + "builtin": true, + "created": "2025-01-09T14:30:56.63155+08:00", + "updated": "2025-01-09T14:30:56.63155+08:00" +} + +PUT $[[SETUP_INDEX_PREFIX]]metric/_doc/jD2jH5QB7KvGccywNCH9 +{ + "id": "jD2jH5QB7KvGccywNCH9", + "name": "Indexing Rate", + "key": "indexing_rate", + "level": "node", + "formula": "jD2jH5QB7KvGccywH9/{{.bucket_size_in_second}}", + "items": [ + { + "name": "jD2jH5QB7KvGccywH9", + "field": "payload.elasticsearch.node_stats.indices.indexing.index_total", + "statistic": "rate" + } + ], + "statistics": ["rate"], + "format": "number", + "unit": "doc/s", + "builtin": true, + "created": "2025-01-09T14:30:56.63155+08:00", + "updated": "2025-01-09T14:30:56.63155+08:00" +} +PUT $[[SETUP_INDEX_PREFIX]]metric/_doc/jD2jH5QB7KvGccywNCH5 +{ + "id": "jD2jH5QB7KvGccywNCH5", + "name": "Search Latency", + "key": "search_latency", + "level": "node", + "formula": "jD2jH5QB7KvGccywNCx5/jD2jH5QB7KvGccywNCH5", + "items": [ + { + "name": "jD2jH5QB7KvGccywNCH5", + "field": "payload.elasticsearch.node_stats.indices.search.query_total", + "statistic": "rate" + }, + { + "name": "jD2jH5QB7KvGccywNCx5", + "field": "payload.elasticsearch.node_stats.indices.search.query_time_in_millis", + "statistic": "rate" + } + ], + "statistics": ["rate"], + "format": "number", + "unit": "ms", + "builtin": true, + "created": "2025-01-09T14:30:56.63155+08:00", + "updated": "2025-01-09T14:30:56.63155+08:00" +} + +PUT $[[SETUP_INDEX_PREFIX]]metric/_doc/jD2jH5QB7KvGccywNCH6 +{ + "id": "jD2jH5QB7KvGccywNCH6", + "name": "Indices Storage", + "key": "indices_storage", + "level": "node", + "formula": "jD2jH5QB7KvGccywNCH6", + "items": [ + { + "name": "jD2jH5QB7KvGccywNCH6", + "field": "payload.elasticsearch.node_stats.indices.store.size_in_bytes", + "statistic": "max" + } + ], + "statistics": ["max", "min", "sum", "avg", "p99", "medium"], + "format": "bytes", + "unit": "", + "builtin": true, + "created": "2025-01-09T14:30:56.63155+08:00", + "updated": "2025-01-09T14:30:56.63155+08:00" +} +PUT $[[SETUP_INDEX_PREFIX]]metric/_doc/jD2jH5QB7KvGccywNCH7 +{ + "id": "jD2jH5QB7KvGccywNCH7", + "name": "Document Count", + "key": "doc_count", + "level": "node", + "formula": "jD2jH5QB7KvGccywNCH7", + "items": [ + { + "name": "jD2jH5QB7KvGccywNCH7", + "field": "payload.elasticsearch.node_stats.indices.docs.count", + "statistic": "max" + } + ], + "statistics": ["max", "min", "sum", "avg", "p99", "medium"], + "format": "number", + "unit": "", + "builtin": true, + "created": "2025-01-09T14:30:56.63155+08:00", + "updated": "2025-01-09T14:30:56.63155+08:00" +} +``` + +{{< /expand >}} + +## 从 v1.7 升级至 v1.27.x + +下载新版版安装包并解压覆盖旧版本,重启 Console 即可完成升级。 + +## 从 v1.5 升级至 v1.7 + +由于 Console v1.7 版本对告警模块做了改版优化,系统内置规则模板和告警渠道等,更新功能比较多,从低版本升级时,建议先自行备份低版本程序和后端存储数据,然后下载新版本安装包并解压后覆盖旧版本进行升级。 + +## 从 v1.0 升级至 v1.5 + +下载 Console v1.5 安装包并解压覆盖旧版本,重启 Console 即可完成升级,后端存储引擎无需变动。 + +## 从低版本升级至 v1.0 + +由于 Console v1.0 版本更新功能比较多,从低版本升级时,建议先自行备份低版本程序和后端存储数据,然后下载新版本安装包并解压后覆盖旧版本进行升级。 + +两种升级方式: + +- 新环境安装部署 +- 格式化覆盖升级 + +### 新环境安装部署 + +新环境是指将 Console 安装部署至新的磁盘目录,并且使用新的后端存储 Easysearch 或 Elasticsearch。部署安装说明参考:[下载安装](../getting-started/install)。 + +### 格式化覆盖升级 + +格式化覆盖升级是指在原有旧版本基础上进行覆盖升级,并删除旧版 Console 数据。 + +> 提示:如有重要数据请先备份,删除操作造成数据丢失后果自负,请谨慎操作。 + +操作步骤如下: + +1、先切换到 Console 安装目录 `/xxx/console` ,请根据实际情况自行修改。 + +```sh +cd /xxx/console +``` + +2、停止 Console 服务 + +如果是 `-service` 方式启动,则可以通过以下方式停止。 + +```sh +./console -service stop +``` + +如果非 `-service` 方式启动,则自行解决停止服务。 + +3、删除 Console 数据 + +```sh +rm -rif data/ log/ config/ +``` + +4、删除 Easysearch 或 Elasticsearch 中的 Console 系统索引和模板 + +删除 `.infini` 模板 + +```sh +curl -XDELETE http://localhost:9200/_template/.infini +``` + +删除所有 `.infini` 开头的 Console 系统索引 + +```sh +curl -XDELETE http://localhost:9200/.infini* +``` + +5、下载 Console 新版安装包并解压覆盖 + +此过程不再详细描述,请自行操作。 + +6、重新启动 Console 服务 + +本示例以 `-service` 启动。 + +```sh +./console -service install +Success +./console -service start +Success +``` + +7、完成 + +到此为止,格式化覆盖升级已完成。可以使用浏览器打开 http://localhost:9000 访问验证系统是否正常。 + +## 从 v0.2 升级至 v0.3 + +### 更新索引 `.infini` template + +``` +PUT _template/.infini +{ + "order": 0, + "index_patterns": [ + ".infini_*" + ], + "settings": { + "index": { + "max_result_window": "10000000", + "mapping": { + "total_fields": { + "limit": "20000" + } + }, + "analysis": { + "analyzer": { + "suggest_text_search": { + "filter": [ + "word_delimiter" + ], + "tokenizer": "classic" + } + } + }, + "number_of_shards": "1" + } + }, + "mappings": { + "dynamic_templates": [ + { + "strings": { + "mapping": { + "ignore_above": 256, + "type": "keyword" + }, + "match_mapping_type": "string" + } + } + ] + }, + "aliases": {} +} +``` + +### 关闭索引 `.infini_cluster` + +``` +POST .infini_cluster/_close +``` + +### 更新索引 `.infini_cluster` settings + +``` +PUT .infini_cluster/_settings +{ + "analysis": { + "analyzer": { + "suggest_text_search": { + "filter": [ + "word_delimiter" + ], + "tokenizer": "classic" + } + } + } +} +``` + +### 更新索引 `.infini_cluster` mappings + +``` +PUT .infini_cluster/_mapping +{ + "dynamic_templates": [ + { + "strings": { + "match_mapping_type": "string", + "mapping": { + "ignore_above": 256, + "type": "keyword" + } + } + } + ], + "properties": { + "basic_auth": { + "properties": { + "password": { + "type": "keyword" + }, + "username": { + "type": "keyword" + } + } + }, + "created": { + "type": "date" + }, + "description": { + "type": "text" + }, + "discovery": { + "properties": { + "refresh": { + "type": "object" + } + } + }, + "enabled": { + "type": "boolean" + }, + "endpoint": { + "type": "keyword" + }, + "endpoints": { + "type": "keyword" + }, + "host": { + "type": "keyword", + "copy_to": [ + "search_text" + ] + }, + "hosts": { + "type": "keyword" + }, + "labels": { + "properties": { + "health_status": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "location": { + "properties": { + "dc": { + "type": "keyword" + }, + "provider": { + "type": "keyword" + }, + "rack": { + "type": "keyword" + }, + "region": { + "type": "keyword" + } + } + }, + "monitored": { + "type": "boolean" + }, + "name": { + "type": "keyword", + "fields": { + "text": { + "type": "text" + } + } + }, + "order": { + "type": "integer" + }, + "owner": { + "properties": { + "department": { + "type": "keyword", + "copy_to": [ + "search_text" + ] + }, + "id": { + "type": "keyword" + }, + "name": { + "type": "keyword", + "copy_to": [ + "search_text" + ] + } + } + }, + "project": { + "type": "keyword", + "copy_to": [ + "search_text" + ] + }, + "schema": { + "type": "keyword" + }, + "search_text": { + "type": "text", + "analyzer": "suggest_text_search", + "index_prefixes": { + "min_chars": 2, + "max_chars": 5 + }, + "index_phrases": true + }, + "tags": { + "type": "keyword", + "copy_to": [ + "search_text" + ] + }, + "traffic_control": { + "properties": { + "max_bytes_per_node": { + "type": "keyword" + }, + "max_connection_per_node": { + "type": "keyword" + }, + "max_qps_per_node": { + "type": "keyword" + }, + "max_wait_time_in_ms": { + "type": "keyword" + } + } + }, + "updated": { + "type": "date" + }, + "version": { + "type": "keyword", + "copy_to": [ + "search_text" + ] + } + } +} +``` + +### 打开索引 `.infini_cluster` + +``` +POST .infini_cluster/_open +``` + +### Update console.yml + +v0.3 版本在 v0.2 版本上新增了 pipeline 配置: + +``` +- name: metadata_ingest + auto_start: true + keep_running: true + processor: + - metadata: + bulk_size_in_mb: 10 + bulk_max_docs_count: 5000 + fetch_max_messages: 1000 + elasticsearch: "default" + queues: + type: metadata + category: elasticsearch + when: + cluster_available: [ "default" ] +- name: activity_ingest + auto_start: true + keep_running: true + processor: + - activity: + bulk_size_in_mb: 10 + bulk_max_docs_count: 5000 + fetch_max_messages: 1000 + elasticsearch: "default" + queues: + category: elasticsearch + activity: true + consumer: + group: activity + when: + cluster_available: [ "default" ] +``` + +先停止 Console 程序,再在`console.yml` 配置文件中的 pipeline 模块下添加上面面的配置,然后再启动 Console 程序。 + +### 给索引 .infini_alert-history 配置生命周期 + +v0.3 新增了告警功能,告警功能存储执行记录的索引数据量很大,所以需要配置一下 ILM 如下: + +```aidl +PUT _template/.infini_alert-history-rollover +{ + "order" : 100000, + "index_patterns" : [ + ".infini_alert-history*" + ], + "settings" : { + "index" : { + "format" : "7", + "lifecycle" : { + "name" : "infini_metrics-30days-retention", + "rollover_alias" : ".infini_alert-history" + }, + "codec" : "best_compression", + "number_of_shards" : "1", + "translog.durability":"async" + } + }, + "mappings" : { + "dynamic_templates" : [ + { + "strings" : { + "mapping" : { + "ignore_above" : 256, + "type" : "keyword" + }, + "match_mapping_type" : "string" + } + } + ] + }, + "aliases" : { } + } + +DELETE .infini_alert-history + +DELETE .infini_alert-history-00001 +PUT .infini_alert-history-00001 +{ + "settings": { + "index.lifecycle.rollover_alias":".infini_alert-history" + , "refresh_interval": "5s" + }, + "aliases":{ + ".infini_alert-history":{ + "is_write_index":true + } + }, + "mappings": { + "properties" : { + "condition" : { + "properties" : { + "items" : { + "properties" : { + "expression" : { + "type" : "keyword", + "ignore_above" : 256 + }, + "minimum_period_match" : { + "type" : "long" + }, + "operator" : { + "type" : "keyword", + "ignore_above" : 256 + }, + "severity" : { + "type" : "keyword", + "ignore_above" : 256 + }, + "values" : { + "type" : "keyword", + "ignore_above" : 256 + } + } + }, + "operator" : { + "type" : "keyword", + "ignore_above" : 256 + } + } + }, + "condition_result" : { + "type" : "object", + "enabled" : false + }, + "context" : { + "type" : "keyword", + "copy_to" : [ + "search_text" + ] + }, + "created" : { + "type" : "date" + }, + "expression" : { + "type" : "keyword", + "copy_to" : [ + "search_text" + ] + }, + "id" : { + "type" : "keyword" + }, + "is_escalated" : { + "type" : "boolean" + }, + "is_notified" : { + "type" : "boolean" + }, + "message" : { + "type" : "keyword", + "ignore_above" : 256 + }, + "objects" : { + "type" : "keyword", + "copy_to" : [ + "search_text" + ] + }, + "resource_id" : { + "type" : "keyword" + }, + "resource_name" : { + "type" : "keyword" + }, + "rule_id" : { + "type" : "keyword" + }, + "rule_name" : { + "type" : "keyword" + }, + "search_text" : { + "type" : "text", + "analyzer" : "suggest_text_search", + "index_prefixes" : { + "min_chars" : 2, + "max_chars" : 5 + }, + "index_phrases" : true + }, + "severity" : { + "type" : "keyword" + }, + "state" : { + "type" : "keyword", + "ignore_above" : 256 + }, + "title" : { + "type" : "keyword" + }, + "updated" : { + "type" : "date" + } + } + } +} +``` + +## 升级常见问题 + +#### 问题描述 1 + +重复的索引 index 数据 +{{% load-img "/img/troubleshooting/v0.3_duplicated_indices.png" "重复的索引index数据" %}} + +#### 解决方案 + +- 停止 Console +- 删除索引`.infini_index` +- 启动 Console + +#### 问题描述 2 + +重复的节点 node 数据 +{{% load-img "/img/troubleshooting/v0.3_duplicated_nodes.png" "重复的节点node数据" %}} + +#### 解决方案 + +- 停止 Console +- 删除索引 `.infini_node` +- 启动 Console + +#### 问题描述 3 + +data 节点有监控数据,非 data 节点(master、client 等)没有监控数据,如下图非 data 节点所示: +{{% load-img "/img/troubleshooting/v0.3_nodes_monitor_no_data.jpg" "重复的节点node数据" %}} + +#### 解决方案 + +建议升级到最新版。 + +#### 问题描述 4 + +页面出现空白,JS 报错。 + +#### 解决方案 + +建议升级到最新版,并将具体报错信息反馈给我们。 + +## 反馈 + +如有其他任何问题和建议,请通过右侧的反馈功能或点击[这里](https://github.com/infinilabs/console/issues/new)提交给我们,我们将持续优化,感谢您的支持! diff --git a/docs/content.zh/docs/user-cases/_index.md b/docs/content.zh/docs/user-cases/_index.md new file mode 100644 index 00000000..8c2ef9d5 --- /dev/null +++ b/docs/content.zh/docs/user-cases/_index.md @@ -0,0 +1,27 @@ +--- +weight: 45 +title: "用户案例" +custom_css: "/css/img.css?ver=1.0" +--- + +# 用户案例 + +## 谁在用? + +如果您正在使用 **INFINI Console** 并且您觉得还不错愿意告诉大家您也在用的话,请在[Discord](https://discord.gg/4tKTMkkvVX) 留言告诉我们,感谢您的支持和鼓励。 + +INFINI Console - All-in-one search center | Product Hunt + +## 用户 + +{{% load-img-link "/img/logo/midu.png" "蜜度" "https://www.midu.com/" %}} +{{% load-img-link "/img/logo/2dfire.png" "二维火" "https://2dfire.com/" %}} +{{% load-img-link "/img/logo/ztgf.png" "证通股份" "http://www.ect888.com/" %}} +{{% load-img-link "/img/logo/mlsj.png" "明略数据" "https://www.mininglamp.com/" %}} +{{% load-img-link "/img/logo/netease-lingxi-office.svg" "网易灵犀办公" "https://office.163.com/" %}} +{{% load-img-link "/img/logo/gitee.png" "Gitee" "https://gitee.com/" %}} +{{% load-img-link "/img/logo/howbuy.png" "haobuy" "https://www.howbuy.com" %}} +{{% load-img-link "/img/logo/gszq.png" "国盛证券" "https://www.gszq.com/home" %}} +{{% load-img-link "/img/logo/tuhu.png" "途虎养车" "https://www.tuhu.cn" %}} +{{% load-img-link "/img/logo/guance.png" "观测云" "https://www.guance.com" %}} +{{% load-img-link "/img/logo/gongkaoleida.png" "公考雷达" "https://www.gongkaoleida.com/" %}} diff --git a/docs/content.zh/menu/index.md b/docs/content.zh/menu/index.md new file mode 100644 index 00000000..4447b3c2 --- /dev/null +++ b/docs/content.zh/menu/index.md @@ -0,0 +1,6 @@ +--- +headless: true +--- + +- [**Documentation**]({{< relref "/docs/" >}}) +
\ No newline at end of file diff --git a/docs/static/img/logo-zh.svg b/docs/static/img/logo-zh.svg new file mode 100644 index 00000000..2a872441 --- /dev/null +++ b/docs/static/img/logo-zh.svg @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file