DevOps Kiến Thức Linux Linux Nâng Cao

Giám sát MQTT broker với Prometheus và Grafana

monitorig-mqtt

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/statskhô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:

  1. Nhấp  Configuration vào bên trái, sau đó nhấp  Data Sources để vào trang cấu hình nguồn dữ liệu;
  2. Bấm  Add data source và chọn  Prometheus;
  3. Trong  HTTP cấu hình, nhập địa chỉ của dịch vụ Prometheus, ví dụ:  http://127.0.0.1:9090;
  4. 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:

  1. Nhấp  Import vào bên trái để vào trang nhập Bảng điều khiển;
  1. 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ưới  Import via grafana.com cột;
  1. Nhấp  Load và chọn nguồn dữ liệu Prometheus mới tạo, sau đó nhấp  Import để 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ý !

Tags

Add Comment

Click here to post a comment

Đă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ý !