Tìm hiểu cách tạo script để gửi thông báo về Telegram về số máy ảo được tạo thành công. Hướng dẫn chi tiết từng bước thiết lập để quản lý máy ảo hiệu quả.
Nếu các bạn là một người quản trị hệ thống VMware thì chắc chắn sẽ có những lúc bạn muốn biết trong vòng 1 ngày hoặc có thể 1 tháng bạn đã tạo ra bao nhiêu máy ảo đúng không. Các bạn hãy cùng SunCloud bọn mình giải đáp thắc mắc đó trong bài viết hướng dẫn tạo Script gửi thông báo về Telegram ngay dưới đây nhé.
>>> Có thể bạn quan tâm: Hướng dẫn chi tiết cấu hình Zabbix gửi cảnh báo đến Telegram
1. Kiến thức cần chuẩn bị trước
Trong Script này mình sẽ sử dụng PowerCLI VMware để thực hành. Chúng mình có 1 seri giải tích chi tiết về PowerCLI VMware các bạn có thể tham khảo ở đây.
Để có thể viết Script thì ta cần dùng notepad hay bất kỳ phần mềm ghi chú nào khác và lưu file dưới dạng ps1.
Tiếp theo bạn cần phải hiểu về event trong vCenter. Bất kỳ 1 sự kiện gì mà vCenter thực hiện xong nó sẽ lưu lại thành những event. Chính vì thế để lấy được các thông tin máy ảo đã tạo thì ta sẽ lấy thông tin trong event.
Suncloud bọn mình cũng đã có bài viết về event rồi đó, bạn có thể tham khảo tại đây.
2. Tạo bot Telegram
Trong Telegram có 1 chức năng đó là tạo ra những con bot nhằm mục đích tự động nhận các tin nhắn hay tự động gửi tin nhắn đến ai đó hay group nào đó.
Tiếp theo sẽ chat /newbot để bắt đầu tạo bot mới sau đó ta sẽ đặt tên và user name cho bot. Khi thành công ta sẽ nhận được token để định danh cho bot của chúng ta.
Lưu ý rằng mã token này rất quan trọng nhé các bạn tránh để lộ nếu không có thể bạn sẽ nhận được rất nhiều tin nhắn spam. Và mã token này cũng dùng để chỉ định con bot mà sẽ gửi tin nhắn tự động đi.
Tiếp theo ta lấy thông tin của chat id. Ta sẽ hiểu như này, bạn muốn con bot nhắn tin cho ai thì bạn sẽ cần chat id của người đấy. Bạn sẽ tìm kiếm Get My ID rồi chat /start rồi sẽ nhận lại được id của bạn.
3. Toàn bộ nội dung Script
Dưới đây là toàn bộ nội dung Script của mình các bạn có thể copy và chạy thử.
#Thiet lap thong tin vSphere $vCenterServer = "IP vCenter" $vCenterUsername = "User đăng nhập" $vCenterPassword = "Passwd của User" Connect-VIServer -Server $vCenterServer -User $vCenterUsername -Password $vCenterPassword #Lay danh sach cac nhiem vu thuc thi trong thang gan nhat $startTime = (Get-Date).AddDays(-1) $endTime = Get-Date $recentEvents = Get-VIEvent -Start $startTime -Finish $endTime | Where-Object {$_.FullFormattedMessage -like "Template * deployed to * on *"} #Bien de dem so luong may ao da tao $createdVMCount = 0 #Thong tin telegram $telegramBotToken = "da che" $chatId = "da che" $telegramApiUrl = "https://api.telegram.org/bot$telegramBotToken/sendMessage" #Lap qua cac su kien va gui thong bao den Telegram foreach ($event in $recentEvents) { $time = $event.CreatedTime $vmName = $event.FullFormattedMessage $user = $event.UserName #Tao thong diep voi cac dong moi $message = "Su kien: May ao da duoc tao`r`n$user`r`nNgay va gio: $time`r`n$vmName" #Tang bien dem neu nhiem vu la createdVMCount $createdVMCount++ #Gui thong bao den Telegram $body = @{ chat_id = $chatId text = $message } Invoke-RestMethod -Uri $telegramApiUrl -Method Post -Body ($body | ConvertTo-Json) -ContentType "application/json" Write-Host $message } #Tao thong diep tong cong va gui den Telegram $totalMessage = "Tong so may ao da tao: $createdVMCount" $body = @{ chat_id = $chatId text = $totalMessage } Invoke-RestMethod -Uri $telegramApiUrl -Method Post -Body ($body | ConvertTo-Json) -ContentType "application/json" #Ngat ket noi voi vSphere Disconnect-VIServer -Server $vCenterServer -Confirm:$false |
4. Giải thích chi tiết
#Lay danh sach cac nhiem vu thuc thi trong thang gan nhat $startTime = (Get-Date).AddDays(-1) $endTime = Get-Date $recentEvents = Get-VIEvent -Start $startTime -Finish $endTime | Where-Object {$_.FullFormattedMessage -like "Template * deployed to * on *"} |
Đoạn code này sẽ lấy ra danh sách các máy ảo đã tạo trong vòng 1 ngày. Đầu tiên đặt 2 biến $startTime và $endTime để có thể chỉ định thời gian lọc sự kiện tạo máy. Câu lệnh tiếp tiếp theo sẽ lấy những sự kiện mà có thông báo "Template * deployed to * on *". Tất cả sử kiện này sẽ lưu vào một list có tên là $recentEvents.
foreach ($event in $recentEvents) { … } |
Ta sử dụng vòng lặp để duyệt qua danh sách lưu vào biến $recentEvents.
$time = $event.CreatedTime $vmName = $event.FullFormattedMessage $user = $event.UserName #Tao thong diep voi cac dong moi $message = "Su kien: May ao da duoc tao`r`n$user`r`nNgay va gio: $time`r`n$vmName" #Tang bien dem neu nhiem vu la createdVMCount $createdVMCount++ |
Lúc này ta sẽ lấy ra các thông tin thời gian, user đã thực hiện tạo máy, và thông tin của máy ảo. Đây chính là những biến cần để gửi cảnh báo đến telegram
$body = @{ chat_id = $chatId text = $message } Invoke-RestMethod -Uri $telegramApiUrl -Method Post -Body ($body | ConvertTo-Json) -ContentType "application/json" |
Phần body chính là nội dung ta gửi cảnh báo đế telegram. Invoke-RestMethod sẽ giúp ta gửi 1 request http theo phương thức post đến url mà ta đã khai báo ở biến $telegramApiUrl, Biến này chứa url liên kết đến con bot bạn đã tạo nhé.
5. Thực hành chạy Script gửi thông báo Telegram
Theo mặc định powerShell sẽ không cho bạn thực hiện script nên bạn cần sử dụng lệnh này trước khi sử dụng lệnh.
Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope CurrentUser |
Lệnh chạy Script
C:\Users\ADMIN\Documents\Schedule\alarm.ps1 |
>>> Xem thêm: Hướng dẫn cài đặt plugin Checkmk cảnh báo qua Telegram
6. Tổng kết
Vậy là SunCloud đã cùng các bạn tìm hiểu cách tạo Script để gửi cảnh báo về Telegram khi có máy tạo trong vòng 1 ngày và gửi tổng số máy ảo đã tạo. Script bọn mình cung cấp không chỉ giới hạn trong vòng 1 ngày mà các bạn có thể tùy chỉnh thời gian sao cho phù hợp. Nếu có những thắc mắc cần giải đáp hãy liên hệ với chúng tôi để được tư vấn sớm nhất nhé. Chúc các bạn thành công!