1. Giới Thiệu

Trong kiến trúc PNG Stack, các Exporter là những thành phần quan trọng giúp thu thập metrics từ các hệ thống và dịch vụ khác nhau, sau đó gửi chúng tới Prometheus để xử lý và lưu trữ. Exporter có khả năng lấy dữ liệu từ nhiều nguồn khác nhau như máy chủ, ứng dụng, thiết bị mạng và các nền tảng ảo hóa.

Bài viết này sẽ hướng dẫn cách cấu hình các loại Exporter phổ biến như Node Exporter, Blackbox Exporter, SNMP Exporter, và VMware Exporter. Ngoài ra, chúng ta cũng sẽ đề cập đến cách cài đặt một số Exporter ngoại vi khác.

2. Các Loại Exporter Phổ Biến

Dưới đây là các Exporter phổ biến được sử dụng trong thực tế:

  • Node Exporter: Dùng để thu thập metrics từ hệ điều hành Linux, như CPU, bộ nhớ, dung lượng ổ đĩa, và băng thông mạng.
  • Windows Exporter: Tương tự Node Exporter nhưng dành cho hệ điều hành Windows.
  • Blackbox Exporter: Giám sát các endpoint từ bên ngoài, kiểm tra trạng thái HTTP, DNS, TCP, ICMP, v.v.
  • SNMP Exporter: Thu thập dữ liệu từ các thiết bị mạng (switch, router, firewall) qua giao thức SNMP.
  • VMware Exporter: Thu thập metrics từ môi trường ảo hóa VMware (vSphere, ESXi).
  • HAProxy Exporter: Giám sát dữ liệu từ HAProxy và thu thập số liệu thống kê.
  • Mysqld Exporter: Thu thập thống kê về trạng thái và tình trạng của Mysql.
  • Ceph Exporter: Thu thập dữ liệu từ hệ thống lưu trữ phân tán Ceph.
  • Kubernetes Exporter: Thu thập dữ liệu từ các cụm Kubernetes.
  • Docker Exporter: Thu thập metrics từ các container Docker.

3. Cấu Hình Các Exporter thuộc kiến trúc giám sát

Như trong sơ hồ hệ thống bài trước mình có đề cập thì trong số Exporter trên có 3 Exporter khá quan trọng và sẽ thuộc vị trí “trong hệ thống giám sát” và giao tiếp ra bên ngoài để lấy dữ liệu về.

Chúng ta sẽ cập nhật tệp docker-stack.yml từ bài trước để thêm các Exporter vào hệ thống giám sát.

*Tùy vào hệ thống thực tế mà bạn sử dụng sẽ chọn loại Exporter phù hợp, không cần sử dụng hết

Source Code phần này mình cũng sẽ để ở cuối bài viết! Sau đây là break down và giải thích từng phần:

3.1. Cấu hình Blackbox Exporter

Blackbox exporter dùng để giám sát các dịch vụ qua các giao thức, đây là một Exporter đa dụng nhất để kiểm tra các dịch vụ qua mạng. Ở đây mình có mount file config tùy chỉnh các module probe check, các bạn có thể bỏ qua cũng được:

https://github.com/prometheus/blackbox_exporter

Ví dụ về metrics của Blackbox Exporter khi chạy thực tế:

3.2. Cấu hình VMware Exporter

Tiếp đến là Vmware Exporter dùng để thu thập các thông tin về Esxi host, Datastore, VMs và các thông tin liên quan.

https://github.com/pryorda/vmware_exporter

Exporter này có thể cấu hình dạng biến môi trường hoặc file cấu hình:

Ví dụ về metrics của VMware Exporter khi chạy thực tế:

3.3. Cấu hình SNMP Exporter

Thành phần thức tạp nhất cũng như quan trọng nhất là SNMP Exporter, dùng để giám sát thiết bị mạng qua giao thức Simple Network Monitoring Protocol được hỗ trợ bởi hầu hết thiết bị mạng (Firewall, Switch, Router, NAS, Server vật lý, thậm chí cả OS).

Tại sao mình nói là phức tạp? Vì với các hệ thống giám sát khác thì nó được tích hợp sẵn, ấn nút là dùng, nhưng với PNG Stack, bạn phải build cho mình một bộ giám sát từ đầu (giống kiểu một module để giải mã các tín hiệu SNMP vậy).

Ở đây các bạn có thể thấy mount file cấu hình cũng ngắn thôi, không có gì nhiều nhưng để generate ra file cấu hình này cần khá nhiều bước kỳ công.

Các bạn có thể tham khảo thêm về SNMP, MIB và OID tại phần cuối (*)

Thư mục snmp sẽ gồm có các thành phần như sau:

  • Thư mục mibs lưu trữ các MIB của các hãng (phần này các bạn có thể collect và tổng hợp trên google/github, tùy hãng sẽ khác nhau)
  • File generator.yml là mẫu ngắn gọn chứa các thông tin OID muốn giám sát và authen SNMP.
  • File snmp.yml là cấu hình hoàn chỉnh (rất dài nếu file generator không được tinh chỉnh chính xác)

*Phần này nếu làm theo hướng dẫn build từ source hoặc lấy template trên mạng hoặc trang chủ đều outdate hết nên sẽ không chạy được, mình đã thử và rút kinh nghiệm là nên sử dụng Docker image vừa tiện mà không phải phức tạp.

Chạy lệnh sau ở vị trí ngang hàng với generator.yml và thư mục mibs để tạo snmp.yml

# docker run -it --rm -v .:/opt prom/snmp-generator:main

Định dạng file generator bản mới nhất tại thời điểm viết bài:

Ở ví dụ trên mình khai báo 2 khối authen loại SNMPv2 với community khác nhau do một số thiết bị mạng sử dụng authen riêng biệt.

  1. Hướng dẫn cài đặt các Exporter ngoại vi

Ở đây mình phân thành các Exporter ngoại vi, bởi vì chúng được cài như một agent trên các hệ điều hành và hoạt động độc lập không thuộc sự quản lý bởi kiến trúc giám sát.

4.1. Node Exporter

Node Exporter chạy trên cổng 9100 và thu thập các chỉ số của hệ thống như CPU, bộ nhớ, và dung lượng ổ đĩa.

Cài đặt Node exporter:

# wget https://github.com/prometheus/node_exporter/releases/download/v1.7.0/node_exporter-1.7.0.linux-amd64.tar.gz
# tar -xzf node_exporter-1.7.0.linux-amd64.tar.gz
# cd node_exporter-1.7.0.linux-amd64
# sudo mv node_exporter /usr/local/bin/
# node_exporter --version

*Cách chạy “node exporter as a service” các bạn tham khảo bài viết cài đặt Prometheus

Chi tiết tại: https://github.com/prometheus/node_exporter

4.2. Windows Exporter

Windows Exporter chạy trên cổng 9182 và thu thập thông tin về hệ điều hành Windows và các thông tin về AD, LDAP, DNS, DHCP,… với Windows Server.

Cài đặt Windows exporter: https://github.com/prometheus-community/windows_exporter/releases

Có 2 phiên bản Agent:

+ wmi_exporter.exe (click to run, dành cho các bạn nào chỉ cần các metric được enable sẵn).

+ wmi_exporter.msi (dùng để cài đặt thông qua CMD, enable các tính năng thu thập metric nâng cao).

Khi cài agent qua CMD sẽ giúp các bạn chọn lọc thu thập những loại metric nào cần thu thập, giảm các loại metric không cần thiết, có thể thu thập nhiều loại metric hơn mặc định.

Chi tiết tại: https://github.com/prometheus-community/windows_exporter

4.3. Ceph Exporter

Ceph Exporter dùng để giám sát về trạng thái cụm lưu trữ phân tán Ceph. Hiện nay có hai phiên bản để Exporter metrics Ceph cho Prometheus:

+ Ceph_exporter của digital ocean: https://github.com/digitalocean/ceph_exporter

+ Module prometheus có sẵn của ceph: https://docs.ceph.com/en/quincy/mgr/prometheus/

Mình recommend dùng build-in của Ceph luôn, mặc định được bật tại port 9283

4.4. Mysqld Exporter

Mysqld Exporter dùng để giám sát dịch vụ mysqld và mysql server. Ở đây là giám sát tình trạng hệ thống chứ không giám sát dữ liệu nên các bạn yên tâm không lo bị vấn đề an toàn thông tin nhé.

Chi tiết tại: https://github.com/prometheus/mysqld_exporter

4.5. Docker Exporter

Docker Exporter bản chất là chạy một container mount vào file daemon của Docker và đọc dữ liệu để giám sát thông số, hiệu năng của Docker và Docker Swarm.

Chi tiết tại: https://github.com/prometheus-net/docker_exporter

4.6. Kubernetes Exporter

Tương tự Docker, nhưng Kubernetes Exporter là một kiến trúc (bộ cài kube-state-metrics) gồm nhiều thành phần như Node Exporter, Blackbox, cAdvisor, Kubelet API, Prometheus và Alertmanager của chính nó.

Chi tiết tại: https://github.com/kubernetes/kube-state-metrics

4.7. Haproxy Exporter

Haproxy Exporter dùng để giám sát các thông số từ bảng Haproxy stats và dưới dạng dữ liệu thời gian. Bạn có thể bật tính năng này trong cấu hình Haproxy.

Chi tiết tại: https://www.haproxy.com/documentation/haproxy-configuration-tutorials/alerts-and-monitoring/prometheus/

5. Cấu hình mục tiêu giám sát trên Prometheus

Sau khi cấu hình, các Exporter thường expose metrics ở endpoint http://<IP>:<port>/metrics, bây giờ việc cần làm là cho Prometheus scrape các metrics đó về TSDB. Thêm job ở phần scrape_configs trong file prometheus.yml tại thư mục prometheus:

Ví dụ cấu hình SNMP Exporter trên Prometheus, chỉ định module và auth cho nhóm thiết bị:

*Nếu nhiều thiết bị thuộc nhóm chỉ cần thêm block targets tương ứng

Ví dụ cấu hình mục tiêu cho VMware Exporter:

Các Exporter khác cấu hình như bình thường, tương tự Node Exporter mình đã hướng dẫn ở bài trước.

Kết quả:

6. Kết Luận

Việc cài đặt và cấu hình các Exporter là một bước quan trọng trong việc xây dựng hệ thống giám sát hiệu quả. Bằng cách thu thập dữ liệu từ nhiều nguồn khác nhau như hệ thống máy chủ, thiết bị mạng, và nền tảng ảo hóa, chúng ta có thể giám sát toàn diện hạ tầng IT.

(*) Tài liệu tham khảo:

Tổng quan SNMP, MIBs và OIDs: https://www.paessler.com/info/snmp_mibs_and_oids_an_overview

Tải SNMP cho Windows: https://sourceforge.net/projects/net-snmp/

Định dạng file và mẫu generator: https://github.com/prometheus/snmp_exporter/blob/main/generator/generator.yml

Trang download MIBs: https://mibbrowser.online/mibdb_search.php

Trang tìm kiếm MIBs (VD: cisco và fortigate):

https://mibs.observium.org/mib/CISCO-PRODUCTS-MIB/

https://mibs.observium.org/mib/FORTINET-FORTIGATE-MIB/

Đây là file trong bài lab này

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *