1.Tổng quan về Zabbix
– Zabbix là một giải pháp giám sát dịch vụ hệ thống mạng phân tán mã nguồn mở nổi tiếng, có nhiều tính năng độc đáo và khả năng tùy biến cao.
– Zabbix có khả năng phục vụ cho hệ thống mạng tầm trung và lớn của doanh nghiệp với mức chi phí đầu tư vừa phải.
– Ưu điểm của Zabbix:
+ Tự động tìm và phát hiện server trong hệ thống mạng.
+ Hỗ trợ server cài đặt trên dòng OS Unix/Linux.
+ Giao diện Web tinh tế và đẹp mắt
+ Có thể thông báo sự cố qua Email, SMS,Telegram ….
+ Có báo cáo biểu đồ qua giao diện Web.
+ Linh động trong việc phân quyền người dùng.
+ Mã nguồn mở, chi phí đầu tư thấp.
+ Nhiều Plugins hỗ trợ cho nhiều dịch vụ hệ thống khác nhau.
+ Hỗ trợ monitor các máy client với nhiều loại OS khác nhau.
– Nhược điểm của Zabbix:
+ Không có giao diện web mobile hỗ trợ.
+ Không phù hợp với hệ thống mạng lớn hơn 1000+ host cần monitor. Do phát sinh vấn đề hiệu suất về PHP và Database.
+ Thiết kế templating/alerting đôi khi khá phức tạp
– Các thành phần trong hệ thống Zabbix:
+ Zabbix Server: Chịu trách nhiệm cho các hoạt động kiểm tra dịch vụ mạng từ xa, thu thập thông tin, lưu trữ, hiển thị, cảnh báo, …. để quản trị viên có thể giám sát hệ thống tốt nhất.
+ Zabbix Proxy: Là một máy chủ được dùng để quản lý các nhanh hệ thống ở xa, hoặc ở các lớp mạng khác nhau, làm nơi chứa metric tạm thời khi client gửi về nhằm giảm tải cho zabbix-server.
+ Zabbix Agent: Được setup ở phía client để thu thập các thông tin về server và gửi về zabbix-server hoặc zabbix-proxy.
+ Zabbix –Sender: Command line dùng để gửi metric cho zabbix –server hoặc zabbix-proxy.
+ Zabbix-Get: Command line để get các thông tin metric từ zabbix-agent
+ Giao diện web: Hiển thị thông tin về các server đang monitor.
2.Cơ chế hoạt động của Zabbix.
- Zabbix có thể thu thập metric dựa vào zabbix-agent, smnp hoặc IPMI sau đó đẩy về Zabbix ser để phân tích.
- Zabbix server dựa vào metric nhận được để tính toán, vẽ biểu đồ và cảnh báo cho người dùng dựa vào các trigger được định nghĩa.
- Sau khi metric được zabbix server phân tích xong sẽ được đẩy vào lưu trữ trong Database.
- Zabbix Web dùng để hiển thị các metric thông qua biểu đồ để theo dõi.
3. Yêu cầu cấu hình phần cứng
– Zabbix yêu cầu cả bộ nhớ vật lý và bộ nhớ đĩa. Tối thiểu là CPU 2Core – RAM 1GB – Disk 50GB.
– Tuy nhiên dựa vào số host và parameters monior để chọn Resource thích hợp:
4. Mô hình triển khai trong Zabbix
Triển khai mô hình monitor zabbix
- Zabbix Server: Zabbix server, zabbix-web, Database.
- Zabbix Agent gửi metric về Zabbix server từ Client hoặc qua Zabbix Proxy.
5. Mã hóa dữ liệu trong Zabbix
Để tránh việc bị các attacker ghe lén các metric của zabbix agent đẩy về zabbix server, zabbix hỗ trợ mã hóa các metric theo kiểu mã hóa đối xứng và mã hóa bất đối xứng. Trong hướng dẫn này tôi sẽ sử dụng loại mã hóa đối xứng sử dụng thuật toán PSK (pre-shared keys). Thuật toán này giữa agent và server sẽ sử dụng chung 1 key cho việc mã hóa và giải mã metric.
Sử dụng kiểu mã hóa “pre-shared keys”
PSK là một chuổi mã hex, ví dụ như sau:
1 |
“e560cb0d918d26d31b4f642181f5f570ad89a390931102e5391d08327ba434e9”. |
1. Tạo PSK
Tạo một psk 32 bytes sử dụng OpenSSL:
1 |
# openssl rand -hex 32 |
1 |
1f87b595725ac58dd977beef14b97461a7c1045b9a1c963065002c5473194952 |
Tạo một file /home/zabbix/zabbix_agentd.psk. và paste chuổi PSK vừa tạo vào. 1f87b595725ac58dd977beef14b97461a7c1045b9a1c963065002c5473194952
Sữa file config của zabbix agent vào thêm PSK vào như sau:
TLSConnect=psk
TLSAccept=psk TLSPSKFile=/home/zabbix/zabbix_agentd.psk TLSPSKIdentity=PSK 001
Cấu hình mã hóa PSK trên Zabbix web:
● Click: Configuration → Hosts
● Select host vào muốn mã hóa và click chọn Encryption
● Thêm PSK đã tạo vào.
6. Tích hợp Telegram với Zabbix
Telegram là 1 ứng dụng messaging hỗ trợ đa nền tảng, thuận tiện cho việc nhận các cảnh báo từ zabbix server. Nên ta sẽ sử dụng telegram thay thế cho cách gửi mail cảnh báo theo kiểu cũ.
Telegram bot: Là một HTTP API sử dụng để gửi các message, được xác thực thông qua token ví dụ như: 158700146:AAHOPReqqTR8V7FXysa8mJCbQACUWSTBog8
Yêu cầu: Zabbix server phải ở trạng thái running. Cài đặt gói pyTelegramBotAPI sử dụng python-pip.
Zabbix agent sẽ thu thập thông tin và gửi về cho Zabbix server để tính toán , xử lý và đưa ra cảnh báo cho Telegram.
Ví dụ telegram sẽ cảnh báo khi disk dưới 20% :
7. Sử dụng Templates trong Zabbix
Thêm một số trigger mới.
- – Add trigger health check
1{Active Check:agent.ping.nodata(5m)}=1 - – /etc/passwd has been changed
1{Active Check:vfs.file.cksum[/etc/passwd].diff(0)}>0 - – /etc/ssh/sshd_config has been changed
1{Active Check:vfs.file.cksum[/etc/ssh/sshd_config].diff(0)}>0 - – /var/log/secure has been changed
1{Active Check:log[/var/log/secure,sshd].diff(0)}>0 - – has just been restarted
1{Active Check:system.uptime.change(0)}<0 - – has just been restarted
1{Active Check:system.uptime.change(0)}<0
Cảnh báo khi có sự cố từ Telegram.
Khi có sự cố xảy ra từ hệ thống Telegram sẽ đưa ra cảnh báo là Problem. Khi xử lý sự cố xong Zabbix sẽ update và gửi thông tin cho telegram và báo trạng thái là OK.
Một số cảnh báo của telegram khi có sự cố và update thông tin khi xử lý xong :
RAM:
Khi Ram sử dụng dưới <200 MB Telegram sẽ đưa ra cảnh báo là PROBLEM và khi Ram >200 MB sẽ update lại và đưa ra cảnh báo OK
DISK:
Khi Disk sử dụng dưới <20% Telegram sẽ đưa ra cảnh báo là PROBLEM và khi Disk >20% sẽ update lại và đưa ra cảnh báo OK
WEB:
Khi Website có sự cố và không truy cập được Telegram sẽ đưa ra cảnh báo là PROBLEM và khi Website truy cập lại bình thường telegram sẽ update lại và đưa ra cảnh báo OK
Restart:
Khi máy chủ có sự cố và phải khởi động lại Telegram sẽ đưa ra cảnh báo là PROBLEM và khi máy chủ khởi động lại xong telegram sẽ update lại và đưa ra cảnh báo OK
NGINX:
Khi service Nginx bị down Telegram sẽ đưa ra cảnh báo là PROBLEM và khi Nginx hoạt động trở lại telegram sẽ update lại và đưa ra cảnh báo OK
Mysql:
Khi service Mysql bị down Telegram sẽ đưa ra cảnh báot là PROBLEM và khi Mysql hoạt động trở lại telegram sẽ update lại và đưa ra cảnh báo OK
Ngoài ra còn rất nhiều cảnh báo khác khi hệ thống lỗi.
8. Tích hợp Grafana với Zabbix
Có rất nhiều phần mềm nổi tiếng về giám sát hệ thống, giám sát mạng (PRTG, Nagios, Centreon, Cacti, Observium…). Zabbix là một phần mềm giám sát rất mạng mẽ và dễ sử dụng. Zabbix ghi lại tình trạng các thiết bị, sự cố, hiệu năng sử dụng… giúp người quản lý dễ dàng có thể theo dõi chúng. Khi gặp sự cố zabbix bắn lên cảnh báo trên trang Dashboard, gửi email, sms, chạy scripts. Graph/Screen của zabbix đủ để cho admin nắm được hiện trạng, tình hình của hệ thống / mạng. Nhưng để tối ưu nhất thì ta có thể cài đặt thêm Grafana, cho phép bạn tạo biểu đồ (customs) và bảng điều khiển từ nhiều hệ thống giám sát khác nhau.
Grafana là một dashboard hỗ trợ cho việc visualization metric. Grafana tương tác với zabbix thông qua zabbix api. Các graph được visualization rất trực quan và thân thiện. Grafana hổ trợ hiển thị time-series ở nhiều backend khác nhau như: Graphite, InfluxDB, Elasticsearch, Zabbix, ….
9.Kết Luận.
Qua bài viết trên chúng ta đã nắm được cách zabbix hoạt động , ưu điểm và nhược điểm của zabbix. Hiểu được zabbix giám sát được những gì và cảnh báo qua app telegram rất đơn giản và có thể xử lý kịp thời thay vì các kiểu cảnh báo qua email , tin nhắn.