我们知道可以在 Kibana 中定义变量这样我们可以在 Kibana 的 Dev Tools 中进行使用。这样做有很多好处可以在多处使用同一个变量。在定义变量的地方修改所有的的命令都同时生效针对一下比较敏感的信息比如 API key。在展示的时候我们可以不用硬编码这样很多人都可以看到。有关如何定义 Kibana 中的变量请参考我之前的文章 “Kibana如何设置变量并应用它们”。对于我们定义很多变量的情况下如果我们一旦清除浏览器中的 cache那么对不起所有的变量都会消失这是因为这些变量不是存在一个永久存储的地点。它存在于浏览器中一个叫做 Local Storage 的地方。另外一种情况就是如果我们想把这些变量复制到另一个集群中手动复制一个一个的变量非常浪费时间。那么我们会有更好的办法保存这些变量的定义吗答案是有的。我创建了一个代码仓库GitHub - liu-xiao-guo/elastic_devtools_variables · GitHub下载代码我们根据如下的命令来下载代码git clone https://github.com/liu-xiao-guo/elastic_devtools_variables一对 Python 脚本用于备份和恢复 Kibana DevTools Console 变量。Kibana 将 DevTools 变量存储在浏览器的 localStorage 中对应的键为 sense:variables —— 而不是存储在服务器端 —— 因此这些脚本通过 AppleScript 直接从正在运行的 Chrome 会话中读取和写入这些变量。文件描述backup_devtools_variables.py从 Kibana 读取变量并将其保存到 devtools_variables.jsonrestore_devtools_variables.py读取 devtools_variables.json 并将变量写回 Kibanadevtools_variables.json保存的变量由备份脚本自动生成.env连接配置不会提交到版本控制系统注意强烈建议你在向任何浏览器恢复变量之前先备份当前变量。配置在项目目录中创建一个 .env 文件KIBANA_URLhttp://localhost:5601 KIBANA_API_KEYyour-base64-encoded-api-key创建 Kibana API Key在 Kibana UI 中进入 Stack Management → API Keys → Create API key或者通过 API 创建curl -X POST http://localhost:5601/api/security/api_key \ -H kbn-xsrf: true \ -H Content-Type: application/json \ -u elastic:password \ -d {name: devtools-variables-manager}使用方法备份变量从正在运行的 Chrome 中读取 sense:variables并将其保存到 devtools_variables.jsonpython backup_devtools_variables.py恢复变量将 devtools_variables.json 中的变量写回 Chrome 的 localStoragepython restore_devtools_variables.py在恢复变量时如果这个时候修改 .env 中的端点值那么就可以把当前 devtools_variables.json 中的变量值恢复到另外一个集群中。恢复完成后重新加载 Kibana DevTools 配置页面/app/dev_tools#/console/config即可查看变更。编辑变量devtools_variables.json 是一个普通 JSON 文件 —— 你可以在备份和恢复之间自由编辑它[ { name: ${COHERE_API_KEY}, value: Your Cohere API KEY }, { name: ${OPENAI_API_KEY}, value: sk-... } ]变量名称必须使用 Kibana 在 Console 中显示的 ${NAME} 格式。