写点什么

在 Elasticsearch 中存储 Open Distro for Elasticsearch 的 Performance Analyzer 输出

  • 2019-09-29
  • 本文字数:4427 字

    阅读完需:约 15 分钟

在 Elasticsearch 中存储 Open Distro for Elasticsearch 的 Performance Analyzer 输出

Open Distro for Elasticsearch Performance Analyzer 插件显示从 Elasticsearch 集群返回指标的 REST API。要充分利用这些指标,您可以将它们存储在 Elasticsearch 中,并使用 Kibana 对其进行可视化。尽管您可以使用 Open Distro for Elasticsearch 的 PerfTop 来构建可视化效果,但 PerfTop 不会保留数据,这意味着它为轻量级。


在本博文中,我将通过一个代码示例探索 Performance Analyzer 的 API,该代码读取 Performance Analyzer 的指标并将其写入 Elasticsearch。您可能会想知道为什么 Performance Analyzer 还没有这样做(欢迎您发起 Pull Request!)。Performance Analyzer 设计为 Elasticsearch 的轻量级协同进程。如果您的 Elasticsearch 集群有问题,则它可能无法响应请求,并且 Kibana 可能无法正常工作。如果采用示例代码,建议将数据发送到不同的 Open Distro for Elasticsearch 集群以避免出现此问题。


您可以遵循我在 GitHub 社区存储库中发布的示例代码。当您克隆存储库时,代码位于 pa-to-es 文件夹中。有关其他代码示例的信息,请参阅往期博客文章。

代码概述

pa-to-es 文件夹包含三个 Python 文件(需要 Python 版本 3.x)和一个 Elasticsearch 模板,该模板将 @timestamp 字段的类型设置为 date。main.py 是一个应用程序,包含调用 Performance Analyzer 的无限循环,以进行提取指标、解析这些指标并将其发送到 Elasticsearch:


    while 1:        print('Gathering docs')        docs = MetricGatherer().get_all_metrics()        print('Sending docs: ', len(docs))        MetricWriter(get_args()).put_doc_batches(docs)
复制代码


如您所见,main.py 提供 MetricGatherer 和 MetricWriter 两个类别,以与 Elasticsearch 进行通信。MetricGatherer.get_all_metrics() 将遍历 metric_descriptions.py(每个都调用 get_metric())中的运行指标说明。


要获取指标,MetricGatherer 将生成表单的 URL:


http://localhost:9600/_opendistro/_performanceanalyzer/metrics?metrics=&dim=&agg=&nodes=all


(您可以在我们的文档中获取有关 Performance Analyzer API 的更多详细信息。) 指标说明是 namedtuple,提供指标/维度/聚合三元组。发送多个项目的效率会更高,但我发现解析结果要复杂得多,这使得任何性能提升都不那么重要。为了确定指标说明,我生成了指标/维度/聚合的所有可能组合,测试运行说明并将其保留在 metric_descriptions.py 中。比较好的做法是构建可显示有效组合的 API,而不是从静态描述集进行运行(正如我前面提到的,我们欢迎大家发起 Pull Request)。


MetricGatherer 使用 result_parse.ResultParser 解释对 Performance Analyzer 的调用的输出。输出 JSON 的每个节点包含一个元素。在该元素中,它返回 fields 列表,后跟一组 records:


{  "XU9kOXBBQbmFSvkGLv4iGw": {    "timestamp": 1558636900000,     "data": {      "fields":[        {          "name":"ShardID",          "type":"VARCHAR"        },        {          "name":"Latency",          "type":"DOUBLE"        },        {          "name":"CPU_Utilization",          "type":"DOUBLE"        }      ],      "records":[        [          null,          null,          0.016093937677199393        ]      ]    }  }, ...
复制代码


ResultParser 将分离的字段名称和值压缩在一起,生成一个 dict,跳过空值。records 生成器函数使用此 dict 作为其返回的基础,添加来自原始返回正文的时间戳。records 还将节点名称和聚合作为字段添加到 dict 中,以便在 Kibana 中可视化数据。


MetricWriter 关闭循环,同时收集 dict 并将其作为文档写入 Elasticsearch,构建 _bulk 正文,然后通过 POST 请求批量写入 Elasticsearch。编写时,代码为硬连线,以将 _bulk 发送至 https://localhost:9200。实际上,您需要更改输出以转到不同的 Elasticsearch 集群。POST 请求的身份验证为 admin:admin,请确保在更改 Open Distro for Elasticsearch 的密码时对其进行更改。

将模板添加到集群

您可以按如上所述方式运行代码,您将看到数据流入 Open Distro for Elasticsearch 集群。但是,Performance Analyzer 返回的时间戳是长整数,Elasticsearch 会将映射设置为 number,您将无法对索引使用 Kibana 基于时间的函数。我可以截取时间戳或重写时间戳,以便自动检测映射。我选择了设置模板。


以下模板(pa-to-es 文件夹中的 template.json)将 @timestamp 的字段类型设置为 date。在发送任何数据、自动创建索引之前,您需要将此模板发送到 Elasticsearch。(如果您已经运行了 pa-to-es,请不要担心,只需删除它创建的任何索引。) 您可以使用 Kibana 开发人员窗格将模板发送到 Elasticsearch。


导航至 https://localhost:5601。登录、关闭启动画面,然后选择 DevTools 选项卡。单击 Get to work。复制以下文本并粘贴到交互式窗格中,然后单击右侧的三角形。(根据您运行的 Elasticsearch 版本,您可能会收到有关类型删除的警告。您可以忽略此警告。)


POST _template/pa {    "index_patterns": ["pa-*"],    "settings": {        "number_of_shards": 1    },    "mappings": {        "log": {            "properties": {                "@timestamp": {                    "type": "date"                }            }        }    }}
复制代码

监控 Elasticsearch

我运行 esrally,通过 http_logs 跟踪我的 Open Distro for Elasticsearch,还运行 main.py 来收集指标。然后,我使用这些数据构建了一个 Kibana 控制面板,用于监控我的集群。



显示 Open Distro for Elasticsearch Performance Analyzer 插件收集的指标的 Kibana 控制面板

小结

Elasticsearch 文档中存储的指标具有单个指标/维度/聚合组合,让您可以自由地以最精细的粒度构建 Kibana 可视化效果。例如,我的控制面板将 CPU 利用率细化到 Elasticsearch 操作级别、每个节点上的磁盘等待时间,以及每个操作的读写吞吐量。在随后的博文中,我将深入探讨如何使用 Performance Analyzer 数据构建控制面板和其他可视化效果。


作者介绍:


Jon Handler


Jon Handler (@_searchgeek) 是总部位于加利福尼亚州帕罗奥图市的 Amazon Web Services 的首席解决方案架构师。Jon 与 CloudSearch 和 Elasticsearch 团队密切合作,为想要将搜索工作负载迁移到 AWS 云的广大客户提供帮助和指导。在加入 AWS 之前,Jon 作为一名软件开发人员,曾为某个大型电子商务搜索引擎编写代码长达四年。Jon 拥有宾夕法尼亚大学的文学学士学位,以及西北大学计算机科学和人工智能理学硕士和博士学位。


本文转载自 AWS 技术博客


文章链接:


https://amazonaws-china.com/cn/blogs/china/open-distro-for-elasticsearchs-performance-analyzer-kibana/


2019-09-29 16:29941
用户头像

发布了 1856 篇内容, 共 131.5 次阅读, 收获喜欢 81 次。

关注

评论

发布
暂无评论
发现更多内容

多语言防伪溯源一体化查询管理系统/小程序/网站/app开发搭建

网站,小程序,APP开发定制

京东广告创意:高质量创意生成和千人千面的创意推荐 | 京东零售技术实践

京东零售技术

Netty源码—编解码原理(一)

不在线第一只蜗牛

netty

通俗易懂分布式事务之2PC、3PC、Seata AT模式、Seata TCC模式

伤感汤姆布利柏

IDEA + 飞算 JavaAI:Java 开发者工作台终极形态

飞算JavaAI开发助手

LED全彩屏的“大脑”:驱动IC到底在做什么?

Dylan

屏幕亮度 LED LED display LED显示屏 颜色

聚焦应用常用功能,提升用户体验与分发效率

HarmonyOS SDK

harmoyos

技术详解|DNS隧道及无监督异常检测

日志易

DNS隧道 日志易

TiDB 可观测性解读(二)丨算子执行信息性能诊断案例分享

PingCAP

数据库 算子 TiDB

Hyperliquid 遇袭「拔网线」、Polymarket 遭治理攻击「不作为」,从双平台危机看去中心化治理的进化阵痛

TechubNews

安全 去中心化 web3

HAHM哈姆|HAHM哈姆中国区运营中心首码|HAHM官网

区块链开发团队DappNetWork

从 Copilot 到国产 AI 编程工具:中国开发者需要什么?

飞算JavaAI开发助手

ElevenLabs 对话式 AI 支持 RAG;阿里 TaoAvatar 快速生成 3D 数字人:实时渲染兼容移动设备丨日报

声网

多语言民宿/酒店预订管理系统/小程序网站开发建设

网站,小程序,APP开发定制

团队任务分工不明确?用领歌这个功能试试!

axe

项目管理工具

2025 年 AI 辅助工具精选:免费又好用,轻松提高开发效率

飞算JavaAI开发助手

免去繁琐的手动埋点,Gin 框架可观测性最佳实践

阿里巴巴云原生

阿里云 云原生 可观测

英特尔先进封装:助力AI芯片高效集成的技术力量

E科讯

腾讯云顾问×DeepSeek:全链路生图、ChatBI等功能全新发布

科技热闻

Rust 开发者必备:三分钟掌握视频帧率调整,告别 FFmpeg 命令行与 FFI 烦恼

Yeauty

rust ffmpeg Video media audio

JAVA 应用实现 APM 自动注入(Docker 篇)

观测云

Java Docker APM

职场突围:后端开发者如何靠 AI 工具逆袭高薪?

飞算JavaAI开发助手

中小企业都能负担得起的组网:SD-WAN方案介绍

Ogcloud

SD-WAN 企业组网 SD-WAN组网 sd-wan专线 SD-WAN厂家

电商平台如何用"比价API"省下百万运营成本?实战经验揭秘

代码忍者

API接口平台

鸿蒙栅格布局组件 GridRow 自学指南

李游Leo

HarmonyOS

TapData Oracle 日志解析性能全面领先:20秒处理1GB日志,效率提升100% ——释放数据潜能,驱动实时决策

tapdata

实时数据 日志解析 Oracle日志解析 日志解析性能对比 金融实时数据处理

2025长三角国际物联网展

AIOTE智博会

物联网展览会 物联网展会 物联网博览会 物联网展

成功案例丨Altair Inspire Cast 助力节省 80%时间 :从模具设计到完美铸件

Altair RapidMiner

制造业 altair 汽车零部件 仿真设计 Inspire

MacBook如何拷贝文件到移动硬盘,怎么把Mac数据拷贝到移动硬盘里?

阿拉灯神丁

NTFS 磁盘管理器 Tuxera NTFS教程 Tuxera NTFS2024 Mac磁盘管理 磁盘格式读写软件

OgCloud的SD-WAN方案保障企业网络的高可用性

Ogcloud

SD-WAN 企业组网 SD-WAN组网 sd-wan专线 SD-WAN厂家

hahm哈姆 『全球运营总首码』一手高政策对接团队

区块链开发团队DappNetWork

在 Elasticsearch 中存储 Open Distro for Elasticsearch 的 Performance Analyzer 输出_语言 & 开发_亚马逊云科技 (Amazon Web Services)_InfoQ精选文章