Monday, July 1, 2024

Monitor cụm Ceph với Ceph Exporter

-

Ceph Exporter là một công cụ sử dụng Prometheus để thu thập thông tin cụm Ceph đang hoạt động. Tất cả thông tin được thu thập từ cụm này được lấy thông qua giao tiếp với các máy chủ giám sát của Ceph bằng cách sử dụng thông qua rados_mon_command(). Vì vậy, bạn không cần cài đặt bất kỳ thiết lập bổ sung nào ngoài việc có một cụm Ceph hoạt động.

Hướng dẫn này mình sử dụng Ceph Exporter tại repo https://github.com/digitalocean/ceph_exporter.git . Danh sách tất cả các thông số mà Ceph Exporter thu thập có thể được tìm thấy trên trang METRICS.md.

Để chạy Ceph Exporter một cách tốt nhất, bạn nên chạy nó từ client có thể giao tiếp với cụm Ceph. Tương tự như bất kỳ ứng dụng Ceph client khác, Ceph Exporter cần các file sau để hoạt động đúng cách:

  • File ceph.conf chứa cấu hình Ceph của bạn.
  • File ceph.<user>.keyring để xác thực với cụm Ceph của bạn.

Ceph Exporter sẽ tự động tìm và sử dụng những file này nếu chúng tồn tại trong bất kỳ vị trí mặc định nào. Nếu không, bạn cần cung cấp cấu hình một cách thủ công bằng cách sử dụng các biến môi trường sau:

  • CEPH_CLUSTER: Tên cluster (mặc định là “ceph”).
  • CEPH_CONFIG: File cấu hình mà một ứng dụng Ceph client sử dụng để kết nối với cụm (mặc định là “/etc/ceph/ceph.conf”).
  • CEPH_USER: Tên người dùng của ứng dụng Ceph client được sử dụng để kết nối với cụm (mặc định là “admin”).

Mình sử dụng ứng dụng Ceph Golang để thực hiện các lệnh trên cụm.

Ceph_exporter hiện tại hỗ trợ các phiên bản Nautilus, Octopus (chưa được thử nghiệm) và Pacific. Nó có thể không hoạt động như mong đợi trên các phiên bản Ceph cũ hơn hoặc phiên bản không được hỗ trợ lâu dài (non-LTS).

Dưới đây là danh sách các biến môi trường (Environment Variables):

  • TELEMETRY_ADDR: Đây là địa chỉ ceph_exporter và cổng (Host:Port) mà ceph_exporter sẽ sử dụng để cung cấp các số liệu thống kê (metrics) cho Prometheus. Giá trị mặc định là “*:9128”, có nghĩa là nó sẽ lắng nghe trên tất cả các interface với cổng 9128.
  • TELEMETRY_PATH: Đây là đường dẫn URL mà bạn sử dụng để truy cập các số liệu thống kê trong Prometheus. Giá trị mặc định là “/metrics”.
  • EXPORTER_CONFIG: Đây là đường dẫn đến file cấu hình của ceph_exporter. Giá trị mặc định là “/etc/ceph/exporter.yml”.
  • RGW_MODE: Chế độ thu thập thống kê từ RGW (Rados Gateway). 0 có nghĩa là tắt, 1 có nghĩa là bật, và 2 có nghĩa là chạy nền. Giá trị mặc định là 0, tức là tắt.
  • CEPH_CLUSTER: Tên của cụm Ceph. Giá trị mặc định là “ceph”.
  • CEPH_CONFIG: Đường dẫn đến file cấu hình Ceph. Giá trị mặc định là “/etc/ceph/ceph.conf”.
  • CEPH_USER: Tên người dùng Ceph được sử dụng để kết nối với cụm. Giá trị mặc định là “admin”.
  • CEPH_RADOS_OP_TIMEOUT: Thời gian timeout cho các hoạt động Rados OSD và Rados Monitor khi liên hệ với cụm. Giá trị mặc định là 30 giây.
  • LOG_LEVEL: Cấp độ ghi log. Có thể là một trong các giá trị: [trace, debug, info, warn, error, fatal, panic]. Giá trị mặc định là “info”.
  • TLS_CERT_FILE_PATH: Đường dẫn đến file chứa chứng chỉ x509 để kích hoạt TLS (đường dẫn tới file key cũng phải được chỉ định).
  • TLS_KEY_FILE_PATH: Đường dẫn đến file chứa khóa x509 để kích hoạt TLS (đường dẫn tới file chứng chỉ cũng phải được chỉ định). Giá trị mặc định là trống.

Để cài đặt Ceph Exporter bạn có thể sử dụng một trong những phương pháp sau:

Cách 1 – Sử dụng Go để cài đặt hoặc xây dựng từ mã nguồn.

Nếu bạn đã có các phụ thuộc (dependencies) cần thiết cho cgo, bạn có thể sử dụng Go để cài đặt hoặc xây dựng Ceph Exporter như sau:

Cài đặt.

go install -tags nautilus

Build.

go build -o ceph_exporter -tags nautilus

Lệnh trên sẽ build ứng dụng với hỗ trợ cho phiên bản Nautilus nhưng ứng dụng này cũng sẽ hoạt động cho Octopus và Pacific.

Cách 2 – Sử dụng Docker Image

Docker Image chính thức có sẵn trên Docker Hub dưới tên digitalocean/ceph_exporter. Bạn có thể sử dụng nó bằng cách chạy container Docker:

docker run -itd --name=ceph_exporter -v /etc/ceph:/etc/ceph -p=9128:9128 -it digitalocean/ceph_exporter

Lưu ý rằng ứng dụng này cần truy cập đến cấu hình Ceph của bạn để kết nối với máy chủ giám sát Ceph. Bạn có thể truyền nó thông qua một tùy chọn thêm vào hoặc gắn thư mục chứa cả file ceph.conf và keyring của người dùng dưới vị trí mặc định /etc/ceph.

Cách 3 – Xây dựng từ mã nguồn bằng Dockerfile.

Nếu bạn muốn xây dựng Docker image từ repo này bạn có thể chạy lệnh sau:

docker build -t digitalocean/ceph_exporter .

Bạn cũng có thể thêm tùy chọn --build-arg TEST=true để chạy các bài kiểm tra cho Golang trong quá trình xây dựng:

docker build -t digitalocean/ceph_exporter . --build-arg TEST=true --no-cache

Sau khi build xong, bạn có thể chạy container ceph_exporter như đã thể hiện ở trên.

Cuối cùng, hãy cấu hình Prometheus để thu thập số liệu từ Ceph Exporter trên cổng 9128 hoặc cổng mà bạn đã chọn nếu bạn thay đổi cấu hình. Dưới đây là nội dung file prometheus.yml, nhớ thay đổi các tham số phù hợp với môi trường của bạn.

global:
    scrape_interval: 5s
    external_labels:
        monitor: my-monitor
        
scrape_configs:
    - job_name: prometheus
      static_configs:
          - targets: ['localhost:9090']

    - job_name: 'ceph-exporter'
        static_configs:
        - targets: ['192.168.13.200:9128']
            labels:
            alias: ceph-exporter

Nếu bạn chạy Ceph Exporter ở ngoài Node của Ceph thì hãy copy toàn bộ file trong thư mục /etc/ceph sang bên máy chủ chạy Ceph Exporter, bỏ vào đường dẫn nào đó phù hợp với vị trị mount của bạn. Trường hợp bạn chạy Ceph Exporter trên chính Node của cụm Ceph thì hãy bỏ qua nó.

/etc/ceph/
├── ceph.client.admin.keyring
├── ceph.client.cephfs.keyring
├── ceph.client.hoanghd.keyring
├── ceph.conf
└── rbdmap

Sau khi chuẩn bị đầy đủ cấu hình, hãy triển khai container và bạn sẽ có kết quả như dưới.

$ docker ps
CONTAINER ID   IMAGE                                      COMMAND                  CREATED         STATUS                  PORTS                                       NAMES
2cf67be40f7e   digitalocean/ceph_exporter                 "/bin/ceph_exporter"     8 minutes ago   Up 7 minutes            0.0.0.0:9128->9128/tcp, :::9128->9128/tcp   ceph_exporter

Hãy vào trang targets Prometheus và bạn có kết quả.

Kết quả khi truy cập http://<IP-Ceph-Exporter>:9128/metrics.

Kết quả khi thử truy vấn trên Prometheus.

Để đóng góp vào dự án Ceph Exporter bạn có thể tham khảo hướng dẫn CONTRIBUTING để biết thêm thông tin về cách gửi các thay đổi của bạn đến kho lưu trữ này.

Sử dụng Dashboard sau cho Ceph Exporter nhé.

Ceph Pools Overview: https://grafana.com/dashboards/926
Ceph Cluster Overview: https://grafana.com/dashboards/917
Ceph OSD Overview: https://grafana.com/dashboards/923

Ngoài ra, bạn có thể tìm thấy một file docker-compose ví dụ trong thư mục ./examples. Nếu bạn muốn nhanh chóng thiết lập môi trường thử nghiệm, file docker-compose này đã tích hợp với Grafana.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

4,956FansLike
256FollowersFollow
223SubscribersSubscribe
spot_img

Related Stories