插件 〉服务依赖图


开发者

Novatec Consulting GmbH

注册以接收不定期产品新闻和更新



面板
社区

服务依赖图

  • 概述
  • 安装
  • 更新日志
  • 相关内容

Novatec 服务依赖图面板

Dynamic JSON Badge License

SDG_PRESENTATION

版本 4.2.0 仅兼容 Grafana 10.4.0 及更高版本!

版本 4.0.0 仅兼容 Grafana 7.1.0 及更高版本!

Novatec 的 Novatec 服务依赖图面板为您提供许多功能,例如监控所需服务的延迟、错误和请求。这个用于 Grafana 的交互式面板将帮助您更好地可视化应用程序的流程。

更新服务依赖图面板

图标映射的文件结构在 4.0.0 版本中已更改。图标现在位于 'plugins/novatec-sdg-panel/assets/icons/' 路径下。这同样适用于自定义图标!


数据源配置

使用静态虚拟数据

如果您想在尚未拥有自己的数据源的情况下初步体验此面板,该面板提供了一些虚拟数据供您尝试。

虚拟数据基本上是多个查询结果的表格格式快照。您可以在面板的 GitHub 仓库中此处找到其源文件。

根据查询结果,数据提供以下标签

  • service:数据相关的服务(应用程序)。
  • namespace:服务的命名空间。每个用 "." 分隔的文本对应于一个命名空间层级。例如 demo.infrastructure
  • protocol:通信类型(例如 HTTP、JMS 等)。
  • origin_service:如果是传入通信,这是来源服务。
  • target_service:如果是传出通信,这是目标服务。
  • origin_external:传入通信的来源,无法与已知服务关联(例如第三方应用程序的 HTTP 请求)。
  • target_external:传出通信的目标,无法与已知服务关联(例如第三方 HTTP 端点)。

根据查询结果,数据提供以下字段

  • in_timesum:所有传入请求响应时间总和。(Prometheus 风格)
  • in_count:传入请求总数。
  • error_in:产生错误的传入请求数量。
  • out_timesum:所有传出请求响应时间总和。(Prometheus 风格)
  • out_count:传出请求总数。
  • error_out:产生错误的传出请求数量。
  • threshold:传入请求响应时间的临界阈值(毫秒)。

要使用此数据,只需激活“通用设置”中的“虚拟数据开关”。所有必需的选项都将自动应用。激活虚拟数据后,您的数据映射应如下所示

响应时间in_timesum
请求速率in_count
错误率error_in
响应时间(传出)out_timesum
请求速率(传出)out_count
错误率(传出)error_out
响应时间基线(上限)threshold

请注意,您可能需要刷新仪表盘或重新加载页面才能使其工作。

实时虚拟数据示例

下载并启动 inspectIT Ocelot demo #1 将为您提供实时虚拟数据而不是静态数据。只需打开 docker 镜像的 Grafana,并选择仪表盘 Service Graph 即可查看完全功能的服务依赖图。


使用您自己的数据源

如果您现在想使用自己的数据源,您需要确保接收到的数据格式为 TABLE,并且结构如下

  • 表格至少需要一列指定连接的来源或目标。设置 Source Component ColumnTarget Component Column 需要设置为相应字段的确切名称。

  • 数据可以包含多个值列。这些列必须使用面板的 Data Mappings 选项映射到特定属性。示例:假设数据表包含一个名为 req_rate 的列,其值表示当前时间窗口内相关连接的请求速率。为了将这些值正确可视化为请求速率,Request Rate Column 选项必须设置为列名 req_rate

示例

示例 1

如果遵循了前面描述的要求,一个最小的表格可以如下所示

apptarget_appreq_rate
服务 a服务 b50
服务 a服务 c75
服务 c服务 d25

假设面板设置为截图中所示,面板将如下可视化数据

Visualization of the minimal data table.

注意:需要知道的是,只有定义了至少一个请求速率列(传入或传出),才能生成连接。

示例 2

在本例中,我们在示例 1 的数据表中添加另一列,表示特定连接的所有请求响应时间总和(例如,所有 HTTP 请求响应时间总和)。

apptarget_appreq_rateresp_time
服务 a服务 b504000
服务 a服务 c7513650
服务 c服务 d25750

现在,面板的 Data Mappings 选项 Response Time Column 设置为 resp_time。这指定了 resp_time 列中的值应被视为连接的响应时间。默认情况下,此列中的值将被视为所有响应时间的总和 - 有点像 Prometheus 风格的指标。此行为可以通过使用 Handle Timings as Sums 选项更改。此表格将导致以下可视化。

Visualization of a data table including request rate and response times.


服务图标

服务依赖图插件允许您在绘制的节点中显示您自己的符号。为此,可以使用 'Service Icon Mapping' 选项。在这里您可以指定图标与特定名称模式的对应关系。所有匹配指定模式(正则表达式)的节点都将获得该图标。

Custom service icons in the graph.

示例

默认包含一个示例分配:Pattern: java // Icon: java。这意味着所有名称中包含 java 的节点都将获得 java 图标。

自定义服务图标

您可以通过将自定义图标放入插件的 /assets/icons/ 目录来添加。文件类型必须是 PNG,并且图标本身必须是正方形。为了能够使用该图标,其名称(不带后缀)必须添加到位于 /assets/icons/ 目录中的 icon_index.json 文件所包含的数组中。

示例

如果 icon_index.json 包含以下内容

["java", "star_trek"]

则假定 /assets/icons/ 目录中存在文件 java.pngstar_trek.png


追踪钻取

服务依赖图插件允许您为每个绘制的节点指定后端 URL。为此,可以使用 'Tracing Drilldown' 选项。在这里您可以指定一个后端 URL。一对开放和封闭的大括号 {} 是所选节点的占位符。每个节点将在详细信息视图中获得一个箭头图标。此图标是指向您在选项中指定的后端的链接。大括号 {} 将替换为所选节点。

示例

当您选择 customers-service 时,http://{}/my/awesome/path 将变为 http://customers-service/my/awesome/path


分层

从版本 4.1.0 开始,服务依赖图面板支持按服务的命名空间对服务节点进行分层。

设置

要使用此功能,请向您的数据添加一个包含服务命名空间的标签。然后将面板选项中对应的选项 Namespace Column 设置为此标签的名称。如果您有多个命名空间层希望在面板中表示,您可以通过特定字符分隔命名空间标签中的多个命名空间。此字符必须在面板选项中设置为 Namespace Delimiter。默认分隔符是 .。因此,如果命名空间列的内容是 my.awesome.namespace,则图表将以 my 作为第 0 层,awesome 作为第 1 层,namespace 作为第 2 层构建。您的相应服务将位于第 3 层。

使用方法

您可以使用面板右上角的 (+) 和 (-) 按钮控制面板的层级。 (+) 增加当前显示的层级,(-) 减少层级。


创建发布

要创建发布包,请确保已安装 release-it

npm install --global release-it

构建发布包

release-it [--no-git.requireCleanWorkingDir]

发现 bug?有问题?想做贡献?

请随时开启一个 issue。我们将为您提供帮助,并尽力满足需求。非常感谢您的任何建议/贡献。

在 Grafana Cloud 上安装服务依赖图

欲了解更多信息,请参阅有关插件安装的文档。

更新日志

此项目的所有显著更改都将在此文件中记录。

v4.2.0

更新依赖项

v4.1.2

添加分层机制 添加边标签之间的碰撞 更新依赖项

v4.0.2

修复图标路径中的 bug

v4.0.1

SumTimings 现在按预期工作 节点统计信息中现在显示响应时间健康状态 外部图标现在使用正确的路径

v4.0.0

项目已移植到 React。aggregationType 不再需要作为模板变量。现在可以选择数据单位类型。传入/传出统计信息表格现在可排序。激活虚拟数据时,显示虚拟数据所需的设置现在会自动填充。服务图标现在可以针对内部和外部服务进行自定义。