Giám sát Windows Server hiệu quả với Zabbix và Prometheus
Giới Thiệu
Giám sát Windows Server là một phần thiết yếu trong quản lý hạ tầng CNTT, giúp đảm bảo hiệu suất ổn định, phát hiện sớm các sự cố và tối ưu hóa tài nguyên. Bài viết này sẽ hướng dẫn bạn cách thiết lập giám sát Windows Server bằng hai công cụ phổ biến và mạnh mẽ: Zabbix và Prometheus. Zabbix cung cấp giải pháp giám sát toàn diện với Agent-based, trong khi Prometheus mang lại sự linh hoạt với mô hình pull-based thông qua Node Exporter.
Chúng ta sẽ đi qua các bước cài đặt và cấu hình cho cả hai phương pháp, giúp bạn lựa chọn giải pháp phù hợp nhất với môi trường của mình.
📋 Thời gian: Khoảng 30-45 phút | Độ khó: Trung bình
Yêu Cầu
Để thực hiện theo hướng dẫn này, bạn cần có:
- Một máy chủ Windows Server (phiên bản 2012 R2 trở lên) đã cài đặt và có quyền quản trị (Administrator).
- Một Zabbix Server đã hoạt động và có thể truy cập từ Windows Server (đối với phương pháp Zabbix).
- Một Prometheus Server đã hoạt động và có thể truy cập từ Windows Server (đối với phương pháp Prometheus).
- Truy cập mạng giữa máy chủ giám sát (Zabbix/Prometheus) và Windows Server (đảm bảo các cổng cần thiết được mở).
- Hiểu biết cơ bản về Windows Server và cách sử dụng dòng lệnh.
Các Bước Thực Hiện
Bước 1: Giám sát Windows Server bằng Zabbix Agent
Zabbix sử dụng Agent để thu thập dữ liệu từ Windows Server.
1.1 Cài đặt Zabbix Agent trên Windows Server
-
Tải Zabbix Agent: Truy cóp trang tải Zabbix và chọn phiên bản Agent phù hợp với kiến trúc Windows Server của bạn (x64 hoặc x86). Tải gói MSI.
-
Cài đặt Agent: Mở Command Prompt hoặc PowerShell với quyền Administrator. Điều hướng đến thư mục chứa file MSI đã tải về và chạy lệnh sau, thay thế
<Zabbix_Server_IP>bằng địa chỉ IP của Zabbix Server của bạn và<Hostname_Windows>bằng tên máy chủ Windows mà bạn muốn hiển thị trong Zabbix.msiexec /i zabbix_agent-6.4.x-windows-amd64-openssl.msi /qn /norestart SERVER=<Zabbix_Server_IP> SERVERACTIVE=<Zabbix_Server_IP> HOSTNAME=<Hostname_Windows>SERVER: Địa chỉ IP của Zabbix Server cho chế độ passive checks.SERVERACTIVE: Địa chỉ IP của Zabbix Server cho chế độ active checks (Agent gửi dữ liệu đến Server).HOSTNAME: Tên máy chủ mà Zabbix Agent sẽ sử dụng khi gửi dữ liệu. Tên này phải khớp với tên Host bạn sẽ tạo trong Zabbix Server.
💡 Mẹo: Bạn có thể chỉnh sửa file
zabbix_agentd.conf(thường nằm trongC:\Program Files\Zabbix Agent\) để tinh chỉnh cấu hình sau khi cài đt. -
Kiểm tra dịch vụ: Sau khi cài đặt, dịch vụ Zabbix Agent sẽ tự động khởi động. Bạn có thể kiểm tra trạng thái của nó qua Services Manager hoặc PowerShell:
Get-Service | Where-Object {$_.DisplayName -like "*Zabbix Agent*"}✅ Đảm bảo dịch vụ đang chạy (Status: Running). Nếu không, hãy khởi động nó:
Start-Service "Zabbix Agent".
1.2 Cấu hình trên Zabbix Server
-
Thêm Host mới:
- Đăng nhập vào giao diện web của Zabbix Server.
- Đi tới
Configuration->Hosts. - Nhấp vào
Create host. - Nhập các thông tin sau:
- Host name: Phải khớp với
HOSTNAMEbạn đã cấu hình trong Zabbix Agent (<Hostname_Windows>). - Visible name: Tên hiển thị trong Zabbix (có thể khác Host name).
- Groups: Chọn một nhóm phù hợp (ví dụ:
Windows servers). - Agent interfaces: Nhấp
Add, chọnAgent, nhập địa chỉ IP của Windows Server và cổng mặc định10050.
- Host name: Phải khớp với
-
Liên kết Template:
- Chuyển sang tab
Templates. - Nhấp
Addvà tìmWindows by Zabbix agent. Chọn nó và nhấpSelect. - Nhấp
Addđể hoàn tất việc tạo Host.
- Chuyển sang tab
-
Kiểm tra kết nối: Sau vài phút, Zabbix Server sẽ bắt đầu thu thập dữ liệu. Bạn có thể kiểm tra trạng thái của Host trong
Configuration->Hosts. Biểu tượngZBXnên chuyển sang màu xanh lá cây. Bạn cũng có thể kiểm tra kết nối từ Zabbix Server bằng lệnhzabbix_get:zabbix_get -s <Windows_Server_IP> -p 10050 -k "agent.ping"Nếu trả về
1, Agent đang hoạt động và giao tiếp được với Server. ⚠️ Lưu ý: Đảm bảo tường lửa trên Windows Server đã mở cổng10050(và10051nếu dùng Active checks) cho Zabbix Server.
Bước 2: Giám sát Windows Server bằng Prometheus Node Exporter
Prometheus sử dụng Node Exporter để thu thập metrics từ Windows Server.
2.1 Cài đặt Prometheus Node Exporter trên Windows Server
-
Tải Node Exporter: Truy cập trang Prometheus download và tìm
node_exportercho Windows. Tải về file ZIP. -
Giải nén và cấu hình:
- Giải nén file ZIP vào một thư mục cố định, ví dụ:
C:\Program Files\node_exporter. - Bên trong thư mục, bạn sẽ thấy file
node_exporter.exe.
- Giải nén file ZIP vào một thư mục cố định, ví dụ:
-
Cài đt Node Exporter như một dịch vụ Windows: Để Node Exporter chạy liên tục, bạn nên cài đặt nó như một dịch vụ. Chúng ta sẽ sử dụng
nssm(Non-Sucking Service Manager) vì nó đơn giản và hiệu quả.-
Tải NSSM: Tải
nssmtừ trang chủ. Giải nén và sao chépnssm.exe(phiên bản phù hợp với kiến trúc của bạn) vào một thư mục trong biến môi trường PATH của hệ thống, ví dụ:C:\Windows\System32. -
Cài đặt dịch vụ: Mở Command Prompt hoặc PowerShell với quyền Administrator và chạy lệnh:
nssm install node_exporterMột cửa sổ GUI sẽ xuất hiện:
- Path:
C:\Program Files\node_exporter\node_exporter.exe(đường dẫn đến filenode_exporter.exe). - Arguments: (để trống hoặc thêm
--web.listen-address=":9100"nếu bạn muốn chỉ định rõ cổng, mặc định là 9100). - Nhấp
Install service.
- Path:
-
Kiểm tra dịch vụ:
Get-Service | Where-Object {$_.DisplayName -like "*node_exporter*"}✅ Đảm bảo dịch vụ đang chạy. Nếu không, hãy khởi động nó:
Start-Service "node_exporter".
-
-
Mở cổng tường lửa: Node Exporter mặc định lắng nghe trên cổng
9100. Bạn cần mở cổng này trên Windows Firewall để Prometheus Server có thể truy cập.netsh advfirewall firewall add rule name="Prometheus Node Exporter" dir=in action=allow protocol=TCP localport=9100
2.2 Cấu hình trên Prometheus Server
-
Chỉnh sửa
prometheus.yml: Trên Prometheus Server, chỉnh sửa file cấu hìnhprometheus.yml(thường nằm trong thư mục cài đặt Prometheus). Thêm một job mới vào phầnscrape_configs:- job_name: 'windows_servers'
static_configs:
- targets: ['<Windows_Server_IP>:9100']
labels:
instance: 'windows-server-01' # Tên hiển thị tùy chỉnhThay thế
<Windows_Server_IP>bằng địa chỉ IP của Windows Server. -
Tải lại cấu hình Prometheus: Bạn có thể tải lại cấu hình Prometheus mà không cần khởi động lại dịch vụ.
# Gửi tín hiệu SIGHUP đến tiến trình Prometheus
# Tìm PID của Prometheus và dùng lệnh kill -HUP <PID>
# Hoặc nếu Prometheus chạy bằng systemd:
sudo systemctl reload prometheus💡 Mẹo: Đảm bảo cú pháp YAML của bạn chính xác. Sử dụng công cụ kiểm tra YAML nếu cần.
2.3 Kiểm tra dữ liệu
-
Kiểm tra trực tiếp Node Exporter: Mở trình duyệt trên bất kỳ máy nào có thể truy cập Windows Server và điều hướng đến
http://<Windows_Server_IP>:9100/metrics. Bạn sẽ thấy một danh sách dài các metrics mà Node Exporter đang thu thập. -
Kiểm tra trên Prometheus UI: Truy cập giao diện web của Prometheus Server (thường là
http://<Prometheus_Server_IP>:9090).- Đi tới
Status->Targets. - Bạn sẽ thấy
windows_serversjob và trạng thái của target<Windows_Server_IP>:9100nên làUP. - Trong tab
Graph, bạn có thể thử truy vấn các metrics nhưwindows_cpu_total_idle_time_totalhoặcwindows_memory_physical_bytes_free.
- Đi tới
Troubleshooting
Zabbix
-
⚠️ Agent không kết nối được (ZBX màu đỏ):
- Kiểm tra Firewall: Đảm bảo cổng
10050(và10051nếu dùng Active checks) trên Windows Server đã được mở cho Zabbix Server. - Kiểm tra cấu hình Agent: Xác minh
ServervàServerActivetrongzabbix_agentd.conftrỏ đúng đến IP cóa Zabbix Server. Đảm bảoHostnamekhớp với tên Host trong Zabbix UI. - Kiểm tra dịch vụ Agent: Đảm bảo dịch vụ "Zabbix Agent" đang chạy trên Windows Server.
- Kiểm tra Log Agent: Xem file log của Zabbix Agent (thường ở
C:\Program Files\Zabbix Agent\zabbix_agentd.log) để tìm lỗi.
- Kiểm tra Firewall: Đảm bảo cổng
-
⚠️ Dữ liệu không hiển thị:
- Template: Đảm bảo bạn đã liên kết template "Windows by Zabbix agent" hoặc một template Windows phù hợp khác với Host.
- Items/Triggers: Kiểm tra xem các Items và Triggers có được kích hoạt (Enabled) trong template hay không.
Prometheus
-
⚠️ Node Exporter không trả về metrics:
- Kiểm tra Firewall: Đảm bảo cổng
9100trên Windows Server đã được mở cho Prometheus Server. - Kiểm tra dịch vụ Node Exporter: Đảm bảo dịch vụ
node_exporterđang chạy trên Windows Server. - Truy cập trực tiếp: Thử truy cập
http://<Windows_Server_IP>:9100/metricstừ trình duyệt. Nếu không thấy gì, có thể Node Exporter chưa chạy đúng cách hoặc bị chặn bởi firewall cục bộ của máy chủ. - Kiểm tra Log Node Exporter: Nếu bạn cài đặt bằng
nssm, bạn có thể kiểm tra log trong NSSM GUI hoặc Event Viewer.
- Kiểm tra Firewall: Đảm bảo cổng
-
⚠️ Prometheus Server không scrape được:
- Cấu hình
prometheus.yml: Kiểm tra lại cú pháp YAML và địa chỉ IP/port của target trongprometheus.yml. Một lỗi nhỏ cũng có thể khiến Prometheus không tải được cấu hình. - Reload Prometheus: Đảm bảo bạn đã reload cấu hình Prometheus sau khi thay đổi
prometheus.yml. - Prometheus UI: Kiểm tra
Status->Targetstrong Prometheus UI để xem trạng thái của target. Nó sẽ hiển thị lỗi nếu có vấn đề khi scrape.
- Cấu hình
Kết Luận
Giám sát Windows Server là một quá trình liên tục và cần thiết. Với Zabbix và Prometheus, bạn có hai lựa chọn mạnh mẽ để theo dõi hiệu suất và sức khỏe của các máy chủ Windows của mình.
- Zabbix là một hệ thống giám sát toàn diện, cung cấp các tính năng như thu thập dữ liệu, biểu đồ, cảnh báo và báo cáo trong một giao diện người dùng thống nhất. Nó phù hợp cho các môi trường yêu cầu một giải pháp "tất cả trong một".
- Prometheus nổi bật với mô hình thu thập dữ liệu pull-based, ngôn ngữ truy vấn linh hoạt PromQL và khả năng tích hợp tốt với các công cụ hiển thị như Grafana để tạo dashboard tùy chỉnh. Nó lý tưởng cho các môi trường DevOps và microservices.
✅ Best practices:
- Giám sát các chỉ số quan trọng: Luôn theo dõi CPU, RAM, Disk I/O, Network traffic, các dịch vụ quan trọng và không gian ổ đĩa trống.
- Đặt ngưỡng cảnh báo phù hợp: Cấu hình cảnh báo dựa trên các ngưỡng thực tế để nhận thông báo kịp thời về các vấn đề tiềm ẩn mà không bị quá tải bởi các cảnh báo giả.
- Sử dụng Grafana: Dù bạn chọn Zabbix hay Prometheus, việc tích hợp với Grafana sẽ giúp bạn tạo ra các dashboard trực quan và mạnh mẽ để dễ dàng theo dõi hệ thống.
- Bảo mật: Đảm bảo các cổng giám sát chỉ mở cho các địa chỉ IP của máy chủ giám sát của bạn để tránh rủi ro bảo mật.
Xem thêm: