使用 Stackdriver 監控 GCE CPU 使用率, 超出監控值主動發出通知小記
OS: Container with openSUSE Leap 15
以前管地端機器的時候, 因為大部分的專案跟自己有關係, 可以藉由 nagios 或其他方式進行監控. 現在業務上以雲端的資源為主, 所以就要多利用雲端原生的方式來進行監控.
需求: GCE CPU 超過一定使用量, 通知使用者
做法: 使用 Stackdriver Monitoring Alert 來達成
登入 GCP Console
點選 STACKDRIVER 的 Monitoring
這個時候會被導向到另外一個頁面 https://app.google.stackdriver.com/
如果之前專案沒有建立過 Starkdriver 的工作區, 那就按照引導建立工作區並將 GCP 上面的專案加入到工作區
- Stackdriver 費用又是另外一個故事, 改天再來說
點選 Alerting -- > Create a Policy
點選 Add Condition
Metrics 的部分我使用
compute.googleapis.com/instance/cpu/utilization
- 另外有看到 agent.googleapis.com/cpu/utilization, 猜測是要安裝 agent, 然後由agent 傳回值
Filter 的部分
剛開始是使用 instance_id 方式, 但是要一台一台指定, 轉向使用 name (VM 名稱)的方式來進行.
之後的目標是使用標籤的方式來 filter.
更新使用標籤的部分
- 之前沒有看到標籤是因為時間差, 我一建立完 GCE, 然後套用 env: prod 的標籤就去設定 Stackdriver monitoring policy, 標籤的資料還沒同步過去, 當套用標籤後過一些時間, 再重新建立 filter 就會看到 env 可以選, 然後點選 prod 就可以了
- 感謝 GCPUG.TW 的朋友幫忙
Configuration 部分設定 1分鐘超過 50 % 就警告
可以在右方觀察到基準線
也可以看到套用的 GCE VM
點選 SAVE 完成 Condition 設定
接下來設定通知方式
點選下拉式選單來選取, 這邊我是只能選 Email
- 希望未來使用 Telegram 通知 :)
輸入要通知的 E-mail address -- > Add Notification Channel
輸入 Policy 名稱 -- > Save
完成設定
接下來進行驗證
我在GCP 上面建立兩台 openSUSE Leap 15, 並安裝 stress-ng 來進行壓測
- 可以參考之前的文章 [1]
使用 stress-ng 壓測
在 GCE VM 上面
# stress-ng -c 4 --cpu-method all
可以從剛剛設定的 Policy 觀察到 CPU 超過監控值
達到門檻值, 也看到產生 Incident 與通知使用者
完成相關設定以及驗證
做完 Console 的方式, 接下來當然會想去評估 API 方式, 參考官方文件
看起來的邏輯是要
- 建立通知管道 Notification
- 然後才能建立 Policy
因為還要針對 YAML 或是 JSON 內容進行編輯, 不能直接使用 get 或是 describe 方式取得之後來套用, 所以這個部分就先跳過
先記下來
~ enjoy it
Reference:
- 宏庭科技 Joy 幫忙, 給我基本相關做法
沒有留言:
張貼留言