#grafana #script #script-runner #event-handling #events #run #handler

app gdo-runner

Grafana自定义事件处理器脚本运行器

1个不稳定版本

0.1.0 2022年8月18日

#14#grafana

MIT/Apache

5MB
20K SLoC

JavaScript 19K SLoC // 0.2% comments Rust 422 SLoC // 0.0% comments Python 45 SLoC

Grafana Do

CI

关于

Grafana Do 允许您在Grafana或其插件的关键事件中运行自己的脚本。脚本内置了对丰富的Grafana API的访问。

团队

The team

技术概述

Technical overview

您还可以在 Excalidraw 中打开 assets/grafana-do-overview.excalidraw 并从这里继续工作。

开发

首先,获取源代码副本

git clone [email protected]:grafana/hackathon-2022-08-grafana-do.git

系统依赖项

  1. 首先,安装 rustup 并确保安装rust工具包1.63或更高版本。(最新版本应该可以工作)
  2. 确保全局安装了 WasmEdge库
  3. 确保Docker已设置并正在运行。

开发

  • cargo build 将构建运行器,输出放置在 target 目录中。
  • cargo check 将检查lint问题
  • cargo run 将构建并运行运行器

构建Docker镜像

  • docker build.
  • make publish 可以用来构建适合发布到Docker Hub的'multiarch'部署镜像。

使用Flakes进行系统依赖项和构建/运行

您可能想使用nix和nix flakes来管理依赖项。这消除了我们系统之间的差异,并使得有用的共享工具变得可用。

如果尚未安装,请以推荐的方式 安装nix

安装后,在macOS上使用flakes

  • 安装flakes: nix-env -.nixFlakes

  • 修改 ~/.config/nix/nix.conf 以包含以下行

    experimental-features = nix-command flakes
    keep-derivations = true
    keep-outputs = true
    

完成上述步骤后,您可以在项目中使用nix命令进行测试。

  • nix build 在仓库根目录将构建整个项目,留下包含构建产品的 result 目录。
  • nix develop 将启动一个带有有用工具的shell。
  • nix run 将运行 gdo-runner 运行器。

用法

API

  • GET / → 无令牌确认服务器正在运行
  • POST /execute → 提交多部分脚本进行执行,返回脚本的 SHA256 并异步运行。需要在头部包含密钥。
  • POST /challenge → 检查令牌是否正确,不进行其他操作

环境变量

目前,存在以下运行时环境变量

export APP_KEY="YOUR_SHARED_SECRET"
export APP_ROOT_PATH="/tmp/wasm-scripts"
export APP_USER="[email protected]"
export APP_ROLE="Admin"
export APP_API_KEY="zjzTah35Tl6bVJfsmg9LCJuIjosdf5ja0="

建议您使用像 .envdirenv 这样的工具来管理这些变量。

运行脚本

请参阅 example/README.md 以获取 curl 命令示例,用于测试运行器。

依赖项

~23–37MB
~609K SLoC