加州酒店

[bsd3型,图书馆,程序,未分类的][建议标签]
版本[RSS(RSS)] 0.0.1.0,0.0.2.0版本,0.0.3.0,0.0.4.0,0.0.5.0,0.0.6.0
更改日志 CHANGELOG.md公司
依赖关系 基础(>=4.7 && <5),字节删除,目录,文件路径,加州酒店,hs开放遥测api(>=0.1.0.0),hs开放遥测导出器otlp,hs-戊二醛-聚丙烯-w3c,hs-opentelemetry-sdk型(>=0.0.3.6),hs-opentelemetry-utils-例外,hs-戊四醇-内孔梳,http类型,optparse应用程序,posix景观,文本,时间,类型化流程,不自由的,无序控制器[细节]
许可证 BSD-3条款
版权 2023年马特·帕森斯
作者 马特·帕森斯
维护人员 parsonsmatt@gmail.com
主页 https://github.com/parsonsmatt/加州酒店#readme
Bug跟踪器 https://github.com/parsonsmatt/hotel-california/issues网站
源回购 头部:git克隆https://github.com/parsonsmatt/hotel-california网站
已上传 通过牧师2024-03-28T20:47:10Z
分配 尼克斯(NixOS):0.0.6.0
可执行程序 酒店
下载 总共173个(过去30天内有32个)
评级 (尚未投票)[估算人贝叶斯平均]
您的评分
  • λ
  • λ
  • λ
状态 可用文档[生成日志]
上一次成功报告于2024-03-28[所有1个报告]

加州酒店自述-0.0.6.0

[返回包描述]

加州酒店

加州酒店灵感来自跟踪otel-cli公司,一对用于跟踪shell脚本的实用程序。我们需要这样的东西来检测本地构建,这样我们才能了解人们在等待构建、测试等方面花费了多少时间。

用法

二进制名称为酒店.目前,唯一支持的命令是执行官

$酒店高管——帮助用法:酒店高管[-s|--span-name span_name][-i |--设置sigint-status SPAN_status][-a|--属性KEY=VALUE]。。。(命令[参数]…|--shell脚本)在启用跟踪的情况下执行给定命令可用选项:-h、 --help显示此帮助文本-s、 --span-name span_name程序报告的span的名称。默认情况下,这是您传入的脚本。-i、 --设置信号状态SPAN_status进程被终止时报告的状态信号。-a、 --attribute KEY=VALUE要添加到范围的字符串属性。--shell SCRIPT运行任意shell脚本,而不是运行可执行命令

目前,程序仅在环境变量中查找配置。

  • OTEL_EXPORTER_OTLP_ENDPOINT(终点)(默认为本地主机:4317)
  • OTEL_服务_名称
  • OTEL_EXPORTER_OTLP_标题
  • 备注_资源_属性
  • 可能还有其他人,请参阅hs-opentelemetry-sdk型了解更多信息

背景/常见问题解答

Lol名字怎么了

otel-cli公司是该工具的好名字。但这是一个Haskell实现,所以我需要一个小时在那里的某个地方。hotel-cli酒店听起来不错。但是等等。。。克莱…我还能用它做什么?啊哈!

对不起的

与的差异跟踪

这个跟踪工具具有以下基本工作流:

$TRACE_PARENT=$(跟踪开始“构建”)$make构建$trace完成

当你打电话时跟踪开始“trace-name”,它生成一个跟踪ID跨度Id并将其记录到临时目录中的文件中。文件名包含跟踪ID和范围ID。该文件包含跟踪的名称、开始时间以及您提供的任何其他元数据。

当你打电话时迹线光洁度,工具将查找跟踪_家长环境变量。然后它会在$TMP/记录道/状态跟踪_家长.它加载文件,创建一个跨度使用文件中给定的时间戳,然后调用跨度。终点.然后,该工具发出网络请求以报告此数据。

问题

性能

该工具允许您启动组并运行将生成单个跨度的命令,从而了解整体跟踪。跟踪组开始类似于跟踪开始时间-它创建一个新的跨度ID,将其附加到父跨度,并将其写入临时目录。跟踪任务做一些更地道的事情-它创建了一个跨度,运行您提供的命令,然后执行跨度.结束.跟踪组完成类似于迹线光洁度-它加载组的父跨度信息,创建一个跨度、和呼叫跨度。终点从组中加载时间戳。

我做的玩具示例如下:

$TRACE_PARENT=$(跟踪开始“为什么”)\GROUP=$(跟踪组开始“why-1”)\跟踪任务“$GROUP”——开始构建\跟踪组完成“$group”\迹线光洁度

据蜂巢公司称,这需要170ms的时间开始构建,然后再花费650毫秒来完成整个过程-为什么-1小组赛加时约370毫秒,然后是决赛迹线光洁度呼叫又增加了300米。

对于工具的明显意图(检测CI构建)来说,这种性能影响可能不是很大,但对于我的工具的意图-检测本地开发人员工作流。300米是重要的,但如果发生一次也不可怕。然而,我们想记录的每一步都会发生这种情况吗?这是一个问题。

现成的解决方案是使用机器本地的OpenTelemetry收集器,可以在后台定期报告跨度。这是一个额外的部署步骤,所以如果可能的话,最好避免这样做。

嵌套

API要求您以这种方式工作:

$TRACE_PARENT=$(跟踪开始“my-TRACE”)$OUTER_GROUP=$(跟踪组以“整洁”开头)$INNER_GROUP=$(跟踪组开始“整洁”“$OUTER_GROOP”)$trace任务“$INNER_GROUP”--生成$trace group完成“$INNER_group”$trace group完成“$OUTER_group”$trace完成

所以你什么时候都可以跟踪开始时间,则为父跨度创建标识符。但你什么时候都可以跟踪组完成,您可以查找相关的父spanID,然后实际创造子跨度.

这使得创建span很困难,只需“知道”您是否在根目录中。为了提供一个可组合的接口,您需要这样做:shell脚本调用其他可以记录跨度的shell脚本。

与的差异otel-cli公司

好,otel-cli公司解决了上述大多数问题。主要入口点是otel-cli执行官,它为您运行命令,并报告其跨度。你可以筑巢otel-cli执行任意调用,效果很好。然而,它也有一些问题,其中最具挑战性的是围绕信号的错误。我根本弄不清Golang中信号周围的行为,所有可用的互联网建议都没有什么帮助。然后我决定用钉子钉出这个工具。