星期六, 9月 03, 2022

使用 azure cli 建立 Service principal 串接 Grafana 小記

使用 azure cli 建立 Service principal 串接 Grafana 小記


目前大家真的已經很泛用 Grafana 來呈現不同的監控資料, 然後 Azure Managed Grafana 也 GA 了


接下來看看能不能抓部份時間來 study 還有寫寫 Grafana 的筆記  :)


首先大家可能會搜尋到的是這篇 Azure 原廠的文件, 在 Grafana 中監視 Azure 服務


簡單來說, 要讓 Grafana 可以監視 Azure 的服務, 大概就是

  • 建立 Azure Service principal ( 應用程式註冊 )

  • 設定該 Service principal 用戶端密碼 ( 建立給 Grafana 使用的密碼 )

  • 在 AAD 內的角色指派, 針對該 Service principal 給予相關權限

    • Log Analytics 讀取者

    • 讀者


上述的動作肯定可以使用 Console 來達成, 但是有的時候 Console 不熟的人, 可能對上述的建立會比較苦手 ( 如果哪天介面又改變的話 ), 所以今天就使用 azure cli 來實作


首先登入 Azure Portal

接下來就使用 Cloud Shell 來進行相關操作


參考之前自己的文章


我們可以藉由以下指令來列出相關資訊, 看看之前有沒有使用 azure cli 建立過應用程式

$ az  ad  sp  list --output table 


  • 這樣可能會列出太多資訊, 所以過濾一下關鍵字



$ az  ad  sp  list --output table  |  grep  azure-cli


  • 從輸出的 azure-cli-202x-xx-xx-xx-xx-xx 就可以知道建立的時間


接下來使用 azure cli 來建立 Service Principal 


使用 az account 指令取得 subscription_id


$ az  account  show  --query  "{ subscription_id: id }"


{

 "subscription_id": "6a2bdf3b-XXXX-XXXX-XXXX-3371d3401feb"

}


使用以下指令建立 Service Principal 指定 Role 為 Log Analytics Reader, 並同時建立用戶端密碼


$ az  ad  sp  create-for-rbac --role  "Log Analytics Reader" --scopes  /subscriptions/6a2bdf3b-XXXX-XXXX-XXXX-3371d3401feb


輸出範例如下

{

  "appId": "83d5xxxx-xxxx-xxxx-xxxx-xxxxxxxxad2d",

  "displayName": "azure-cli-2022-09-03-13-08-28",

  "password": "5KN7Q~pygZIH5RbAGBSGz3Nx.bC4JSXUSjfQ-dvv",

  "tenant": "4cd3xxxx-xxxx-xxxx-xxxx-xxxxxxxxabd4"

}


  • az ad sp 指令可以用 -n 方式指定名稱, 但是我喜歡不指定名稱, 這樣我可以知道是何時建立

  • password 只會這個時候出現, 請記下來後續使用


之前的文章如果 Service Principal 密碼到期, 作法上可能會

  • 使用 az ad sp delete 刪除舊的認証, 然後再建立新的認証


這邊再紀錄另外一種方式, 直接重設 Service Principal 的用戶端密碼


接下來回到 Grafana 這邊


登入 Grafana

點選 Configuration -- > Data sources


點選 Add data source


搜尋 azure, 應該就會看到 Azure Monitor

點選 Azure Monitor



填入相關資訊



點選 Save & test

成功應該會看到相關訊息



大功告成

接下來就可以找時間針對 Azure 資源來觀察了


~ enjoy it




Reference