我的任务是自动化邮递员烟雾测试,在 kubernetes 集群中每 x 分钟运行一次,并将结果推送到 prometheus,后来由 grafana 可视化,并将警报推送到最重要的频道。
我已经使用 newman 和其他软件包创建了一个基于 alpine 的自定义 docker 镜像(我没有使用 newman docker 镜像,因为我无法在其中添加任何我想要的东西),复制了我所有的收藏和环境。文件到 docker 映像中,命令newman run
也被打包到 dockerfile 中(否则,如果我从 kubernetes 中的 pod 定义 yaml 调用它,它不起作用)。所需要做的就是运行容器,它会在/newman
容器内的文件夹中创建一个报告。
我创建了 kubernetes cronjob 来运行容器,它运行并进入完成状态。如果我使用一些循环命令保持容器打开,我可以登录并确保结果在那里(并且它们是)。由于这项工作是短暂的,并且普罗米修斯没有时间刮掉它,我正试图将结果推送到普罗米修斯推送网关(为此我已经部署了它)。我正在尝试curl
将结果放入其中(命令也在 dockerfile 中定义),例如cat myreport.xml | curl --data-binary @- push-prometheus-pushgateway:9091/metrics/job/newman
但是,问题是:我无法以任何有意义的方式将结果格式化为普罗米修斯推送网关接受它。我也没有找到任何可能适合此目的的自定义“记者”。目前我正在使用junit
记者,但我没有设法sed/awk
将输出由 pushgateway 消化并使其具有任何实际意义......
过去有没有人做过类似的事情并取得了一些成功?
提前谢谢了!