grafana-util docs

疑難排解與名詞解釋

本章不是只列錯誤訊息,而是幫你分辨問題到底屬於哪一類:

  • auth 還是 scope
  • live 還是 staged
  • 指令形狀錯,還是輸出形狀不對
  • 本機 profile 設定問題,還是遠端 Grafana 行為

如果你正在追查驗證或連線設定,請把 profilestatusoverviewaccess 一起開著。

適用對象

  • 遇到錯誤訊息,但不確定是語法、權限還是 scope 的人
  • 想先分辨 live / staged / profile 問題的人
  • 需要把常見錯誤整理成可重複排查流程的人

主要目標

  • 先分辨問題類型
  • 再決定要看哪一頁、跑哪個檢查
  • 最後才進到修正或回報

採用前後對照

  • 以前:看到錯誤時,很難分辨是語法、scope,還是工作流選錯。
  • 現在:把連線、範圍、staged input 與輸出格式問題拆開來看,排障會快很多。

成功判準

  • 你可以在看完整份 command 頁之前,就先判斷問題大概屬於哪一類。
  • 你知道該先修驗證、範圍、staged input,還是輸出格式。
  • 你能判斷這個問題是不是應該回到工作流章節,而不是只留在這裡。

失敗時先檢查

  • 如果看完第一步還是不清楚症狀,先不要繼續動 live。
  • 如果語法錯誤蓋掉真正問題,先確認 lane 與 auth source。
  • 如果輸出形狀怪,但命令其實正常結束,先回文件確認 contract,不要直接懷疑 renderer。

CLI 診斷與調修

1. 啟用 verbose 日誌

grafana-util 使用標準 Rust logging。你可以提高日誌等級來看實際 API request / response。

# 用途:grafana-util 使用標準 Rust logging。你可以提高日誌等級來看實際 API request / response。
RUST_LOG=debug grafana-util overview live --profile prod
grafana-util dashboard list -v

適合拿來回答這些問題:

  • CLI 打到的是不是你以為的那台主機
  • 是 auth、scope,還是 network 在拒絕請求
  • 指令形狀是不是和文件理解的不一樣

2. 常見錯誤與快速修補

症狀常見原因建議修補方式
401 Unauthorizedtoken 或帳密無效檢查 profile、環境變數、或實際輸入的憑證
403 Forbiddencredential 有效,但權限不足確認角色/權限,或改用更廣的管理員憑證
Connection RefusedURL 錯誤或網路阻擋驗證 --url 與 Grafana 網路可達性
Timeoutestate 太大或後端太慢增加 --timeout,必要時先縮小 scope

3. 權限範圍與驗證方式不匹配

這類問題最麻煩的地方是,看起來像「指令有跑成功」,但其實回傳結果不完整。

症狀常見原因下一步先檢查什麼
--all-orgs 回來的 org 比預期少token scope 比要求的讀取範圍窄改用 admin-backed profile 或 direct Basic auth 重試
read-only status 可跑,但 access/admin 類指令失敗credential 有效,但範圍不夠對照目前 credential 與要執行的 command family
同一個 token 在某個 job 可用,換一個 job 就失敗第二個 job 用到更廣的操作面檢查該流程是否其實該用 profile-backed Basic auth

原則:

  • 驗證成功不代表 scope 一定足夠
  • 如果輸出「看起來怪怪但不是完全報錯」,先懷疑 scope,不要先懷疑 parser

4. staged 與 live 搞混

這是最常見的維運誤判之一。

症狀真正發生的事建議修補方式
status staged 看起來健康,但 live apply 仍失敗staged 檔案結構正確,不代表 live state 或權限也正確先跑 status live,再跑 change checkchange preview 或 command-specific dry-run
overview live 看起來正常,就直接略過 change reviewlive 可讀性不等於 staged 套件正確apply 前仍要跑 staged gate 與 preview path
import 或 apply 比預期改得更多staged 套件從來沒有先做 inspect 或 preview執行前先用 change inspectchange preview--dry-run

5. profile 與 secret 問題

症狀常見原因建議修補方式
profile show --show-secrets 解不出來env var 不存在、OS store entry 不見,或 encrypted secret file / key 不見回頭檢查 profile 指到的 secret source
本機可跑、CI 跑不起來env 注入或 config path 不同檢查 GRAFANA_UTIL_CONFIG、env vars 與必要的 secret files
--store-secret os 在 macOS 可用,但 Linux 不行Linux runner 沒有可用的 Secret Service session改用 password_envtoken_envencrypted-file

6. 輸出格式用錯

症狀常見原因建議修補方式
CI parser 突然壞掉用到了給人看的輸出模式改用 jsonyaml 或其他適合腳本處理的結構化輸出
指令不接受某個 --output-format這個指令只支援較少的輸出格式直接查該 command help 或指令頁
第一次檢查時互動式輸出太複雜畫面雖然好看,但資訊不夠直接先切成 yamljson

名詞解釋

術語定義
Surface高階操作面分類,例如 StatusOverviewChange
Lane資料路徑,例如 raw/prompt/provisioning/
Contract用來定義 readiness 或 compatibility 的結構化 JSON 文件
Masked Recovery匯出時先把 secrets 遮蔽,匯入或 replay 時再補回
Desired State儲存在 Git 中、CLI 拿來對照 live Grafana 的目標設定
Driftlive Grafana 與本地 staged / desired 輸出物之間的差距

取得更多協助

  • 先確認版本:回報問題時先執行 grafana-util --version
  • 專案儲存庫:請在 GitHub Issues 回報 Bug 或提需求

回報問題時,盡量附上:

  • 完整指令
  • 這次是 live 還是 staged
  • 使用的是 --profile、direct Basic auth,還是 token auth
  • 問題比較像語法、連線、scope,還是 staged input shape

⬅️ 上一章:實戰錦囊與最佳實踐 | 🏠 回首頁