[ PROMPT_NODE_22264 ]
仪表盘管理
[ SKILL_DOCUMENTATION ]
# 仪表盘参考指南
## ⚠️ 关键提示:仪表盘更新具有破坏性
**`dashboards update` 命令会替换整个仪表盘,而不仅仅是你指定的字段。**
如果在更新时遗漏了以下任何字段,它们将被**永久删除**:
- `--template-variables` → 模板变量将被移除
- `--description` → 描述将被清除
- `--notify-list` → 通知列表将被清除
**数据丢失示例:**
bash
# 这将删除模板变量和描述!
npx @leoflores/datadog-cli dashboards update
--id "abc-def-ghi"
--title "My Dashboard"
--layout ordered
--widgets '[...]' # 仅提供了小部件,其他字段被清空!
## 安全的仪表盘更新工作流
**更新仪表盘时,请务必遵循此 3 步流程:**
> ⚠️ **重要:** 始终使用 `--output` 保存到临时文件,而不是将输出捕获到 bash 变量中。当通过 `echo` 管道传输时,包含特殊字符、换行符或 ANSI 代码的 JSON 可能会破坏 `jq` 解析。
### 第 1 步:将当前仪表盘备份到临时文件
bash
# 在进行任何更改之前保存当前的仪表盘状态
# 使用 --output 可确保 JSON 清洁,无编码问题
npx @leoflores/datadog-cli dashboards get --id "abc-def-ghi" --output /tmp/dashboard.json
### 第 2 步:修改并保留所有字段
bash
# 直接从文件提取现有值(不要通过 echo!)
TEMPLATE_VARS=$(jq -c '.dashboard.templateVariables // []' /tmp/dashboard.json)
DESCRIPTION=$(jq -r '.dashboard.description // ""' /tmp/dashboard.json)
# 修改小部件(示例:更改索引为 1 的小部件标题)
WIDGETS=$(jq -c '.dashboard.widgets | .[1].definition.title = "New Title"' /tmp/dashboard.json)
# 更新并保留所有字段
npx @leoflores/datadog-cli dashboards update
--id "abc-def-ghi"
--title "My Dashboard"
--layout ordered
--widgets "$WIDGETS"
--description "$DESCRIPTION"
--template-variables "$TEMPLATE_VARS"
--pretty
### 第 3 步:验证更新
bash
# 确认所有字段完好无损
npx @leoflores/datadog-cli dashboards get --id "abc-def-ghi" --pretty
### 意外数据丢失后的恢复
bash
# 如果你有备份文件,请从中恢复
WIDGETS=$(jq -c '.dashboard.widgets' /tmp/dashboard.json)
TEMPLATE_VARS=$(jq -c '.dashboard.templateVariables // []' /tmp/dashboard.json)
DESCRIPTION=$(jq -r '.dashboard.description // ""' /tmp/dashboard.json)
TITLE=$(jq -r '.dashboard.title' /tmp/dashboard.json)
LAYOUT=$