使用 azure cli 建立 Service principal 串接 Grafana 小記
目前大家真的已經很泛用 Grafana 來呈現不同的監控資料, 然後 Azure Managed Grafana 也 GA 了
接下來看看能不能抓部份時間來 study 還有寫寫 Grafana 的筆記 :)
首先大家可能會搜尋到的是這篇 Azure 原廠的文件, 在 Grafana 中監視 Azure 服務
https://docs.microsoft.com/zh-tw/azure/azure-monitor/visualize/grafana-plugin
如果對 AAD 還有權限沒有很熟悉的狀況下, 看這篇文件的時候, 可能會對於如何建立 Service Principal 以及設定適當權限會有點迷茫( 我是說我自己 :p ).
簡單來說, 要讓 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 的用戶端密碼
$ az ad sp credential reset --id {service principal appId}
重設密碼的原因是預設效期為一年
接下來回到 Grafana 這邊
登入 Grafana
點選 Configuration -- > Data sources
點選 Add data source
搜尋 azure, 應該就會看到 Azure Monitor
點選 Azure Monitor
填入相關資訊
點選 Save & test
成功應該會看到相關訊息
大功告成
接下來就可以找時間針對 Azure 資源來觀察了
~ enjoy it
Reference
https://docs.microsoft.com/zh-tw/azure/azure-monitor/visualize/grafana-plugin
https://sakananote2.blogspot.com/2020/05/azure-dynamic-inventory-with-ansible.html
雲馥夥伴的幫忙