EMQX là broker MQTT nguồn mở phổ biến và có khả năng mở rộng cao nhất với hiệu suất cao kết nối hơn 100 triệu thiết bị IoT trong 1 cụm với độ trễ 1ms. Nó có thể di chuyển và xử lý hàng triệu tin nhắn MQTT mỗi giây. EMQX 5.0 đã được xác minh trong các kịch bản thử nghiệm để mở rộng quy mô lên 100 triệu kết nối thiết bị đồng thời và là sản phẩm đầu tiên giới thiệu QUIC cho MQTT.
EMQX GitHub: https://github.com/emqx/emqx
Khi sử dụng EMQX, người dùng, người vận hành và nhà phát triển cần theo dõi, quan sát trạng thái hoạt động và số liệu của nó để kịp thời tìm ra vấn đề và xử lý. Ngoài việc sử dụng Bảng điều khiển tích hợp, EMQX còn cung cấp API để tích hợp dữ liệu giám sát vào nền tảng giám sát của bên thứ ba nhằm theo dõi trạng thái hoạt động của EMQX, bao gồm trạng thái nút cụm, kết nối, đăng ký và chủ đề, thông lượng tin nhắn và các số liệu liên quan khác .
Sử dụng hệ thống giám sát của bên thứ ba có thể giám sát EMQX thuận tiện hơn. Ví dụ:
- Tích hợp dữ liệu giám sát của EMQX với dữ liệu giám sát của các hệ thống khác để tạo thành hệ thống giám sát hoàn chỉnh, như các thông tin liên quan của máy chủ;
- Sử dụng biểu đồ giám sát phong phú hơn để hiển thị dữ liệu giám sát trực quan hơn, chẳng hạn như sử dụng Grafana;
- Sử dụng các phương pháp cảnh báo phong phú hơn để tìm ra vấn đề kịp thời hơn, chẳng hạn như sử dụng Alertmanager của Prometheus.
Trong bài viết này, chúng tôi sẽ giới thiệu cách tích hợp dữ liệu giám sát EMQX 5.0 vào Prometheus, sử dụng Grafana để hiển thị dữ liệu giám sát EMQX và cuối cùng là xây dựng hệ thống giám sát EMQX đơn giản.
Prometheus là giải pháp cảnh báo và giám sát nguồn mở do SoundCloud phát triển, hỗ trợ mô hình dữ liệu đa chiều, ngôn ngữ truy vấn linh hoạt, quản lý cảnh báo mạnh mẽ và các tính năng khác. Grafana là một công cụ trực quan hóa dữ liệu nguồn mở hỗ trợ nhiều nguồn dữ liệu, bao gồm cả Prometheus.
Sự chuẩn bị
Trước khi bắt đầu, chúng ta cần chuẩn bị môi trường chạy sau, cài đặt và chạy EMQX 5.0, chuẩn bị gói cài đặt Prometheus, cài đặt và khởi động Grafana. Người dùng cũng có thể tải xuống bản cài đặt hoặc gói nhị phân theo địa chỉ tải được cung cấp trong bài viết và tự cài đặt. Trong ví dụ chúng ta sẽ sử dụng Docker để cài đặt và kích hoạt.
Cài đặt EMQX 5.0
Sau đây là cách cài đặt và khởi động nhanh EMQX 5.0 bằng Docker:
docker run -d --name emqx -p 1883:1883 -p 8083:8083 -p 8883:8883 -p 8084:8084 -p 18083:18083 emqx/emqx<br>
Ngoài việc sử dụng Docker để cài đặt EMQX, chúng ta cũng có thể sử dụng gói RPM hoặc DEB để cài đặt. Để biết các phương pháp cài đặt cụ thể, vui lòng tham khảo Hướng dẫn cài đặt EMQX 5.0 .
Sau khi cài đặt chúng ta có thể mở http://localhost:18083
truy cập vào EMQX Dashboard để xem trạng thái đang chạy. Nếu bạn truy cập được thì thông thường EMQX đã được cài đặt thành công.
Cài đặt Prometheus
Tương tự như vậy, chúng ta sẽ sử dụng Docker để nhanh chóng cài đặt và sử dụng Prometheus trong ví dụ vì chúng ta vẫn chưa bắt đầu cấu hình Prometheus để có thể lấy hình ảnh Docker do Prometheus cung cấp.
docker pull prom/prometheus
Bởi vì sau khi cài đặt, chúng ta cần cấu hình tệp cấu hình Prometheus để chỉ định nguồn dữ liệu của Prometheus, quy tắc cảnh báo và các cấu hình Scrape khác. Do đó, trong phần hướng dẫn sau bài viết, chúng ta sẽ cấu hình tệp cấu hình Prometheus sau khi cấu hình hoàn tất và sau đó khởi động nó bằng cách gắn tệp cấu hình vào vùng chứa để chạy.
Người dùng cũng có thể tham khảo tài liệu Prometheus để tải xuống và sử dụng gói nhị phân để cài đặt và chạy Prometheus.
Cài đặt Grafana
Dưới đây là cách cài đặt và khởi động Grafana nhanh chóng bằng Docker:
docker run -d --name grafana -p 3000:3000 grafana/grafana-oss
Người dùng cũng có thể tham khảo tài liệu Grafana để tải xuống và sử dụng gói nhị phân để cài đặt và chạy Grafana.
Sau khi cài đặt Grafana, chúng ta có thể mở http://localhost:3000
để truy cập Grafana. Nếu chúng ta có thể truy cập trang đăng nhập của Grafana thường xuyên, điều đó có nghĩa là Grafana đã khởi động thành công.
Cài đặt Node Exporter
Cài đặt Node Exporter, tùy chọn nếu người dùng muốn theo dõi thông tin hệ thống của máy vật lý hoặc VM. Node Exporter thu thập dữ liệu giám sát của máy chủ, chẳng hạn như CPU, bộ nhớ, đĩa, mạng, v.v.
Lưu ý: Node Exporter chỉ hỗ trợ các hệ thống *nix
Không nên sử dụng Docker để cài đặt Node Exporter trong bài viết này. Để cài đặt và sử dụng Node Exporter, vui lòng tham khảo Tài liệu chính thức của Node Exporter . Sau khi cài đặt, chúng ta có thể truy cập dữ liệu giám sát của máy chủ hệ thống thông qua http://localhost:9100/metrics
. Nếu chúng tôi có thể truy cập dữ liệu giám sát của máy chủ hệ thống, điều đó có nghĩa là Node Exporter đã được cài đặt thành công.
cấu hình Prometheus
Khi hoàn thành công việc chuẩn bị, chúng tôi cần cấu hình Prometheus để nó có thể thu thập dữ liệu giám sát EMQX nói chung.
cấu hình thu thập dữ liệu Prometheus
Prometheus sử dụng tệp cấu hình để chỉ định mục tiêu thu thập dữ liệu. Đường dẫn tệp cấu hình mặc định là /etc/prometheus/prometheus.yml
, có thể được đặt theo --config.file
tham số.
EMQX 5.0 cung cấp API HTTP để lấy dữ liệu giám sát định dạng Prometheus — /api/v5/prometheus/stats
không yêu cầu thông tin xác thực. Chúng ta chỉ cần cấu hình nó metrics_path
trong tập tin cấu hình.
Để sử dụng Node Exporter để lấy dữ liệu giám sát của máy chủ, chúng tôi cũng cần cấu hình địa chỉ của dịch vụ Node Exporter static_configs
trong tệp cấu hình.
Trong tệp cấu hình Prometheus, chỉ định mục tiêu thu thập dữ liệu thông qua scrape_configs
. Sau đây là ví dụ nội dung tệp cấu hình Prometheus hoàn chỉnh:
Lưu ý: Khi sử dụng file cấu hình, bạn cần thay thế địa chỉ IP trong target của từng dịch vụ bằng địa chỉ IP thực tế của dịch vụ bạn đã triển khai. Nếu bạn đang sử dụng triển khai cục bộ, bạn có thể bỏ qua lời nhắc này.
# prometheus.yaml
global:
scrape_interval: 10s # The default scrape interval is every 10 seconds.
evaluation_interval: 10s # The default evaluation interval is every 10 seconds.
# On this machine, every time series will be exported by default.
external_labels:
monitor: 'emqx-monitor'
# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
# - "first.rules"
# - "second.rules"
- "/etc/prometheus/rules/*.rules"
# Data pull configuration
scrape_configs:
# EMQX monitoring
- job_name: 'emqx'
metrics_path: /api/v5/prometheus/stats
scrape_interval: 5s
honor_labels: true
static_configs:
# EMQX IP endpoint
- targets: [127.0.0.1:18083]
- job_name: 'node-exporter'
scrape_interval: 5s
static_configs:
# node-exporter IP endpoint
- targets: ['127.0.0.1:9100']
labels:
instance: dashboard-local
Trong cấu hình trên, job_name
là tên tác vụ thu thập dữ liệu, static_configs
là mục tiêu thu thập dữ liệu, targets
là địa chỉ thu thập dữ liệu đích và 127.0.0.1:18083
là điểm cuối của dịch vụ API EMQX 5.0.
Cuối cùng, chúng tôi lưu nội dung tệp cấu hình ở trên prometheus.yaml
và sao chép nó vào thư /etc/prometheus/
mục hoặc lưu trữ trong đường dẫn tùy chỉnh nơi bạn cần giữ tệp. Tại thời điểm này, chúng ta đã hoàn thành cấu hình đơn giản của Prometheus.
Start Prometheus
Sau khi hoàn tất cấu hình Prometheus, chúng ta có thể khởi động dịch vụ Prometheus bằng cách sử dụng tệp. Nếu bạn đã tải xuống image Prometheus bằng Docker, bạn có thể khởi động Prometheus bằng lệnh sau:
docker run -d --name prometheus -p 9090:9090 -v /path/to/your/prometheus.yaml:/etc/prometheus.yaml prom/prometheus --config.file=/etc/prometheus/prometheus.yaml
Nếu cài đặt Prometheus bằng phương pháp khác, bạn có thể chỉ định đường dẫn file cấu hình khi chạy Prometheus, ví dụ:
./prometheus --config.file=prometheus.yml<br>
Lưu ý: Khi sử dụng tệp cấu hình, bạn cần thay thế
/path/to/your/prometheus.yaml
bằng đường dẫn thực tế nơi bạn lưu trữ tệp cấu hình Prometheus.
Nếu thành công, bạn có thể truy cập Bảng điều khiển Prometheus bằng cách mở http://localhost:9090 . Thông qua Bảng điều khiển, bạn có thể xem trạng thái hoạt động của Prometheus và tìm kiếm dữ liệu giám sát của EMQX bằng cách nhập emqx
. Nếu dữ liệu hiển thị bình thường nghĩa là Prometheus đã khởi động và thu thập thành công dữ liệu giám sát của EMQX.
Giới thiệu về Pushgateway
Ngoài việc chỉ định các số liệu thu thập dữ liệu bằng tệp cấu hình API chứa EMQX, EMQX còn hỗ trợ sử dụng Pushgateway để thu thập các số liệu dữ liệu.
Pushgateway là một thành phần của Prometheus được sử dụng để lưu trữ tạm thời các số liệu dữ liệu và sau đó Prometheus lấy các số liệu dữ liệu từ Pushgateway.
Chúng ta không cần sử dụng dịch vụ Pushgateway vì EMQX hỗ trợ lấy số liệu dữ liệu thông qua API. Giả sử bạn sử dụng PushGateway một cách mù quáng để lấy dữ liệu. Trong trường hợp đó, bạn có thể gặp phải một số vấn đề, chẳng hạn như: khi Pushgateway giám sát nhiều phiên bản, Pushgateway sẽ trở thành một điểm lỗi duy nhất, Pushgateway sẽ không loại bỏ hoặc xóa Series của nó và sẽ tiếp tục hiển thị nó cho Prometheus, v.v.
Nhưng trong một số trường hợp, chúng tôi có thể cần sử dụng Pushgateway để thu thập số liệu dữ liệu.
Ví dụ: khi dịch vụ EMQX chạy trong vùng chứa Docker hoặc cụm Kubernetes, chúng ta có thể sử dụng Pushgateway để thu thập số liệu dữ liệu thay vì hiển thị API EMQX ra mạng bên ngoài. Và thông thường, trường hợp sử dụng hợp lệ duy nhất của Pushgateway là nắm bắt kết quả của các công việc hàng loạt cấp dịch vụ. Nhấn vào đây để xem và tìm hiểu thêm về Khi nào nên sử dụng Pushgateway .
Sử dụng Docker để cài đặt dịch vụ Pushgateway:
docker run -d --name pushgateway -p 9091:9091 prom/pushgateway
Để biết thêm về cách cài đặt và sử dụng Pushgateway, vui lòng tham khảo Tài liệu cài đặt Pushgateway . Tại thời điểm này, chúng ta có thể truy cập Bảng điều khiển Pushgateway bằng http://localhost:9091
.
EMQX Cung cấp API để cấu hình dịch vụ Pushgateway, có thể báo cáo số liệu dữ liệu của EMQX thông qua cấu hình tới địa chỉ dịch vụ của Pushgateway và cuối cùng được Prometheus lấy từ Pushgateway. Đồng thời, bạn cũng có thể cấu hình địa chỉ dịch vụ của Pushgateway trực tiếp trong Bảng điều khiển EMQX, nhập thông tin hoàn thành và nhấp vào Cập nhật.
Khi sử dụng Pushgateway, bạn cần thêm cấu hình sau vào scrape_configs
phần tệp cấu hình Prometheus:
Lưu ý: Về cấu hình, cần
targets
phải thay thế bằng điểm cuối dịch vụ Pushgateway thực tế của bạn.
# EMQX Pushgateway monitoring
- job_name: 'pushgateway'
scrape_interval: 5s
honor_labels: true
static_configs:
# Pushgateway IP endpoint
- targets: ['127.0.0.1:9091']
Sau khi hoàn tất cấu hình, bạn có thể khởi động dịch vụ Prometheus bằng cách sử dụng file cấu hình tương tự như thao tác trên để tạo Prometheus. Điều này hoàn tất việc cấu hình giám sát của EMQX.
cấu hình Grafana
Sau khi hoàn tất cấu hình sử dụng Prometheus để thu thập số liệu dữ liệu của EMQX, chúng ta có thể sử dụng Grafana để trực quan hóa việc giám sát dữ liệu số liệu của EMQX. Trong các bước trên, chúng ta đã mở thành công bảng điều khiển Web của Grafana. Lần đầu tiên sử dụng Grafana, tài khoản và mật khẩu mặc định là admin
. Sau khi đăng nhập thành công chúng ta có thể thêm nguồn dữ liệu.
Prometheus là nguồn dữ liệu
Khi sử dụng Grafana, bạn có thể sử dụng Prometheus làm nguồn dữ liệu. Các bước để thêm Prometheus làm nguồn dữ liệu như sau:
- Nhấp
Configuration
vào bên trái, sau đó nhấpData Sources
để vào trang cấu hình nguồn dữ liệu; - Bấm
Add data source
và chọnPrometheus
; - Trong
HTTP
cấu hình, nhập địa chỉ của dịch vụ Prometheus, ví dụ:http://127.0.0.1:9090
; - Cuối cùng, nhấp vào
Save & Test
. Nếu cấu hình đúng sẽ hiển thịData source is working
, nghĩa là cấu hình thành công.
Sau khi cấu hình hoàn tất, chúng ta có thể sử dụng Prometheus làm nguồn dữ liệu để lấy dữ liệu giám sát trong Grafana. Tiếp theo, chúng ta có thể tiếp tục thêm mẫu Dashboard để trực quan hóa việc theo dõi các chỉ số dữ liệu của EMQX. Bạn cũng có thể tạo Dashboard theo cách thủ công và thêm biểu đồ theo nhu cầu của mình.
Import Dashboard
Chúng tôi cung cấp mẫu Bảng điều khiển Grafana mặc định mà Bạn có thể nhập trực tiếp vào Grafana và chọn nguồn dữ liệu Prometheus mới được tạo. Sau khi nhập thành công, hãy mở bảng Dashboard và bạn có thể xem dữ liệu giám sát của EMQX.
Bạn có thể tải xuống các mẫu Bảng điều khiển mặc định từ EMQX | Bảng điều khiển Grafana hoặc bạn có thể nhấp vào Download
nút trên trang trợ giúp của trang cấu hình Bảng điều khiển EMQX Monitoring Integration
.
Các bước nhập khẩu cụ thể như sau:
- Nhấp
Import
vào bên trái để vào trang nhập Bảng điều khiển;
- Nhấp
Upload JSON file
và chọn mẫu Bảng điều khiển vừa tải xuống hoặc nhập trực tiếp EMQX | Địa chỉ Grafana Labs trong hộp nhập bên dướiImport via grafana.com
cột;
- Nhấp
Load
và chọn nguồn dữ liệu Prometheus mới tạo, sau đó nhấpImport
để nhập mẫu Dashboard.
Sau khi nhập mẫu Bảng điều khiển, bạn có thể xem dữ liệu giám sát của EMQX trong bảng giám sát, như trong hình sau:
Lưu ý: Theo mặc định, mẫu sẽ giám sát dữ liệu số liệu của toàn bộ cụm EMQX.
Số liệu được hiển thị:
- Chung, bao gồm số lượng kết nối, chủ đề và đăng ký.
- Tin nhắn bao gồm số lượng tin nhắn được xuất bản và nhận cũng như số lượng tin nhắn được xuất bản và nhận mỗi giây.
- Hệ thống, bao gồm số lượng tiến trình, CPU và bộ nhớ Erlang VM, v.v.
- Gói, bao gồm số lượng hộp được kết nối, xuất bản, nhận, v.v.
Người dùng cũng có thể tùy chỉnh Dashboard dựa trên mẫu mặc định, thêm số liệu của họ hoặc sửa đổi kiểu biểu đồ, v.v. Để biết các bước thao tác cụ thể, vui lòng tham khảo Tài liệu chính thức của Grafana .
Cách cấu hình trong Bảng điều khiển EMQX
Phiên bản EMQX được sử dụng trong bài viết này là 5.0.11 . Bạn cũng có thể nhận thêm thông tin hoạt động tích hợp giám sát từ phiên bản này bằng cách nhấp vào nút “Trợ giúp” trên trang Configuration
-> Monitoring
-> Integration
trong Bảng điều khiển EMQX.
Trên trang trợ giúp, bạn chỉ cần cài đặt dịch vụ Prometheus và Grafana theo lời nhắc từng bước, sau đó điền một số thông tin cấu hình quan trọng vào các mục cấu hình.
Chẳng hạn như điểm cuối của EMQX, API để lấy dữ liệu số liệu, v.v. Nhấp vào nút Tạo để tự động tạo và tải xuống tệp cấu hình và cuối cùng, bạn có thể tải xuống mẫu Bảng điều khiển Grafana mặc định.
Theo cách tương tự, trợ giúp có thể được chia thành hai chế độ cấu hình: mặc định và sử dụng Pushgateway. Ở chế độ cấu hình sử dụng Pushgateway, bạn có thể mở công tắc trên trang, nhập địa chỉ Pushgateway và thời gian báo cáo dữ liệu rồi nhấn Save để hoàn tất cấu hình sau khi lưu.
Để biết thêm về cách cấu hình tích hợp Prometheus trong Bảng điều khiển, bạn có thể tham khảo tài liệu Tích hợp giám sát cấu hình bảng điều khiển EMQX .
Phần kết luận
Bài viết này giới thiệu ngắn gọn cách sử dụng Prometheus để thu thập các số liệu dữ liệu của EMQX, sau đó sử dụng Grafana để trực quan hóa việc giám sát các số liệu dữ liệu của EMQX. Sau EMQX 5.0.11, bạn cũng có thể nhận thêm thông tin vận hành tích hợp giám sát bằng cách nhấp vào nút “Trợ giúp” trên Integration
trang trong Bảng điều khiển EMQX.
Đăng ký liền tay Nhận Ngay Bài Mới
Subscribe ngay
Cám ơn bạn đã đăng ký !
Lỗi đăng ký !
Add Comment