插件 〉服务依赖图
服务依赖图
Novatec 服务依赖图面板
版本 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 Column
和Target Component Column
需要设置为相应字段的确切名称。数据可以包含多个值列。这些列必须使用面板的
Data Mappings
选项映射到特定属性。示例:假设数据表包含一个名为req_rate
的列,其值表示当前时间窗口内相关连接的请求速率。为了将这些值正确可视化为请求速率,Request Rate Column
选项必须设置为列名req_rate
。
示例
示例 1
如果遵循了前面描述的要求,一个最小的表格可以如下所示
app | target_app | req_rate |
---|---|---|
服务 a | 服务 b | 50 |
服务 a | 服务 c | 75 |
服务 c | 服务 d | 25 |
假设面板设置为截图中所示,面板将如下可视化数据
注意:需要知道的是,只有定义了至少一个请求速率列(传入或传出),才能生成连接。
示例 2
在本例中,我们在示例 1 的数据表中添加另一列,表示特定连接的所有请求响应时间总和(例如,所有 HTTP 请求响应时间总和)。
app | target_app | req_rate | resp_time |
---|---|---|---|
服务 a | 服务 b | 50 | 4000 |
服务 a | 服务 c | 75 | 13650 |
服务 c | 服务 d | 25 | 750 |
现在,面板的 Data Mappings
选项 Response Time Column
设置为 resp_time
。这指定了 resp_time
列中的值应被视为连接的响应时间。默认情况下,此列中的值将被视为所有响应时间的总和 - 有点像 Prometheus 风格的指标。此行为可以通过使用 Handle Timings as Sums
选项更改。此表格将导致以下可视化。
服务图标
服务依赖图插件允许您在绘制的节点中显示您自己的符号。为此,可以使用 'Service Icon Mapping' 选项。在这里您可以指定图标与特定名称模式的对应关系。所有匹配指定模式(正则表达式)的节点都将获得该图标。
示例
默认包含一个示例分配:Pattern: java // Icon: java
。这意味着所有名称中包含 java
的节点都将获得 java
图标。
自定义服务图标
您可以通过将自定义图标放入插件的 /assets/icons/
目录来添加。文件类型必须是 PNG
,并且图标本身必须是正方形。为了能够使用该图标,其名称(不带后缀)必须添加到位于 /assets/icons/
目录中的 icon_index.json
文件所包含的数组中。
示例
如果 icon_index.json
包含以下内容
["java", "star_trek"]
则假定 /assets/icons/
目录中存在文件 java.png
和 star_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 上安装服务依赖图
在 Grafana Cloud 实例上安装插件是一键式操作;更新也一样。很酷,对吧?
请注意,插件可能需要最多 1 分钟才能显示在您的 Grafana 中。
在 Grafana Cloud 实例上安装插件是一键式操作;更新也一样。很酷,对吧?
请注意,插件可能需要最多 1 分钟才能显示在您的 Grafana 中。
在 Grafana Cloud 实例上安装插件是一键式操作;更新也一样。很酷,对吧?
请注意,插件可能需要最多 1 分钟才能显示在您的 Grafana 中。
在 Grafana Cloud 实例上安装插件是一键式操作;更新也一样。很酷,对吧?
请注意,插件可能需要最多 1 分钟才能显示在您的 Grafana 中。
在 Grafana Cloud 实例上安装插件是一键式操作;更新也一样。很酷,对吧?
请注意,插件可能需要最多 1 分钟才能显示在您的 Grafana 中。
在 Grafana Cloud 实例上安装插件是一键式操作;更新也一样。很酷,对吧?
请注意,插件可能需要最多 1 分钟才能显示在您的 Grafana 中。
在 Grafana Cloud 实例上安装插件是一键式操作;更新也一样。很酷,对吧?
请注意,插件可能需要最多 1 分钟才能显示在您的 Grafana 中。
欲了解更多信息,请参阅有关插件安装的文档。
在本地 Grafana 上安装
对于本地实例,插件通过简单的 CLI 命令进行安装和更新。插件不会自动更新,但当有更新可用时,您将在 Grafana 内收到通知。
1. 安装面板
使用 grafana-cli 工具从命令行安装服务依赖图
grafana-cli plugins install
插件将安装到您的 grafana 插件目录中;默认路径为 /var/lib/grafana/plugins。有关 cli 工具的更多信息。
2. 将面板添加到仪表盘
已安装的面板会立即出现在 Grafana 主菜单的“仪表盘”部分,可以像 Grafana 中的任何其他核心面板一样添加。
要查看已安装的面板列表,请单击主菜单中的插件项。核心面板和已安装的面板都会出现。
更新日志
此项目的所有显著更改都将在此文件中记录。
v4.2.0
更新依赖项
v4.1.2
添加分层机制 添加边标签之间的碰撞 更新依赖项
v4.0.2
修复图标路径中的 bug
v4.0.1
SumTimings 现在按预期工作 节点统计信息中现在显示响应时间健康状态 外部图标现在使用正确的路径
v4.0.0
项目已移植到 React。aggregationType 不再需要作为模板变量。现在可以选择数据单位类型。传入/传出统计信息表格现在可排序。激活虚拟数据时,显示虚拟数据所需的设置现在会自动填充。服务图标现在可以针对内部和外部服务进行自定义。