Nhà xuất khẩu mongodb grafana

Nếu bạn đang ở mức trung bình và đang bắt đầu tập tành chạy các ứng dụng của mình trên vps/server thì với số lượng nhỏ có thể không có vấn đề gì. Tuy nhiên, khi số lượng lớn có thể chạy nhiều ứng dụng hoặc nhiều vùng chứa thì máy chủ sẽ bắt đầu có những hiện tượng đang tải về tài nguyên [cpu, ram, lưu trữ, mạng,…]. Thường thì ta sẽ ước chừng thủ công với việc lưu lượng sử dụng của từng ứng dụng hoặc tính toán xem ứng dụng nào đang đông người dùng để có biện pháp [nâng cấp máy chủ hoặc cân bằng tải]

Tuy nhiên công việc theo dõi hay ước tính những dữ liệu về cpu, ram,… thủ công như vậy khá tốn thời gian và không trực quan trong thời hạn. Và tada sau một thời gian vọc vạch thì mình đã tìm ra được một bộ combo thần thánh giúp chúng ta thực hiện được việc theo dõi các số duy nhất của vps/server rất chi tiết và lượt xem thì phải gọi là bá đạo

Ví dụ về “Giám sát máy chủ các số cơ bản”

Ví dụ về “Docker container monitor”

Có nhìn kết quả giao diện trên thì ít ai biết rằng chúng ta đều miễn phí và cấu hình cũng không phải là quá khó với Docker [đến đây lại thấy yêu Docker hơn 😛 ]. Và sau đây chính là các thành phần trong hệ thống giám sát máy chủ của chúng ta, xin được phép giới thiệu

  • nhà xuất khẩu nút. Đây là một export được viết trên Golang[Exporter tạm hiểu là các dịch vụ có khả năng thu thập/xuất ra các thông số của server/vps]
  • CAAdvisor. Ở trên node-exporter thì xuất ra các thông số của server/vps nhưng mình muốn theo dõi thêm thông số của các container đang chạy trong hệ thống thì dùng thằng CAdvisor[Vừa rồi là một nhà xuất khẩu] cực ngon mà lại còn là
  • Prometheus. Có chức năng thu thập dữ liệu từ các nhà xuất khẩu[VD. Node-exporter, CAdvisor, Mongodb, InfluxDB,…] dưới dạng số liệu theo từng khoảng thời gian [Ví dụ cứ 5s thì lấy dữ liệu từ 1 nhà xuất bất kỳ] sau đó gắn các số liệu với thời gian hiện tại và đưa vào cơ sở dữ liệu để lưu trữ tại đó . Ngoài ra prometheus còn có chức năng cảnh báo khi đạt ngưỡng[Ví dụ. Khi ram sử dụng quá 50% thì gửi cảnh báo cho chúng ta qua các kênh như STMP] nhưng trong bài viết này mình sẽ tập trung vào phần chính và các bạn có thể thử nghiên cứu thêm
  • Grafana. Sau khi kết hợp các nhà xuất khẩu và prometheus, cơ bản là có thể giám sát máy chủ rồi tuy nhiên giao diện khá cùi và thiếu trực quan. Do đó, chúng tôi sẽ kết hợp prometheus với grafana để hiển thị dữ liệu. Về cơ bản thằng grafana này có khả năng hiển thị mọi loại dữ liệu ở dạng chuỗi thời gian rất ưu tiên và đa dạng nguồn dữ liệu

*Dưới đây là mô hình hệ thống giám sát máy chủ của mình[đặt trên 1 vps]*

![][//images.viblo.asia/669ebc32-777b-457b-9b94-d91fd1edf8cb.png]
Như trên thì prometheus sẽ thu thập dữ liệu từ 2 nhà xuất khẩu [Node-exporter và CAdvisor] và gắn thời gian cho dữ liệu. Sau đó grafana sẽ lấy dữ liệu đã được xử lý từ prometheus và hiển thị lên.

Bỏ qua mấy phần chém gióthời gian ở trên, cùng thực hành luôn cho nóng 😆

  1. Đầu tiên ta cần tạo tệp prometheus. yml to config scrape
global:
  scrape_interval: 20s
  scrape_timeout: 15s

scrape_configs:
- job_name: cadvisor
  static_configs:
  - targets:
    - cadvisor:8080
    
- job_name: node_exporter
  static_configs:
  - targets: 
    - node-exporter:9100
  • global mình sẽ cấu hình scrape_interval. 20s[tương ứng với cứ 20s sẽ gọi tới các công việc và lấy dữ liệu 1 lần] và timeout_interval. 25s[nghĩa là sau 25s mà không lấy được dữ liệu từ nhà xuất khẩu thì sẽ hết thời gian]. Cấu hình toàn cầu sẽ được áp dụng cho toàn bộ công việc
  • job_name đặt theo ý của bạn nhưng nên đặt theo tên nhà xuất khẩu để dễ quản lý
  • static_configs => targets => cadvisor:8080 ở dòng này là config exporter mà scrape sẽ pull data về. cadvisor:8080 là do mình chạy cadvisor trên docker-compose nên cadvisor sẽ tương ứng với host giả sử cadvisor chạy trên ip 172.10.0.12 thì cadvisor:8080 172.10.0.12:8080. Các bạn tìm hiểu thêm về phần networking trong docker nhé. Lưu ý: cadvisor chạy mặc định ở port 8080 và node-exporter chạy mặc định ở port 9100.
  1. Tiếp tục thực hiện cấu hình tệp docker-compose. yml with the content as after
version: "3"

services:
    cadvisor:
        image: gcr.io/cadvisor/cadvisor:v0.39.0
        container_name: cadvisor
        restart: always
        volumes:
            - /:/rootfs:ro
            - /var/run:/var/run:rw
            - /sys:/sys:ro
            - /var/lib/docker/:/var/lib/docker:ro
            
    node-exporter:
        image: prom/node-exporter:v1.1.2
        container_name: node-exporter
        restart: always
        volumes:
            - /proc:/host/proc:ro
            - /sys:/host/sys:ro
            - /:/rootfs:ro
        command:
            - "--path.procfs=/host/proc"
            - "--path.sysfs=/host/sys"
            - "--path.rootfs=/rootfs"
            - "--collector.filesystem.ignored-mount-points='^/[sys|proc|dev|host|etc|rootfs/var/lib/docker/containers|rootfs/var/lib/docker/overlay2|rootfs/run/docker/netns|rootfs/var/lib/docker/aufs][$$|/]'"
    
    prometheus:
        image: prom/prometheus:v2.26.0
        container_name: prometheus
        restart: always
        volumes:
            - ./prometheus.yml:/etc/prometheus/prometheus.yml
        depends_on:
            - cadvisor
    
    grafana:
        image: grafana/grafana:7.5.3-ubuntu
        container_name: grafana
        restart: always
        ports:
            - 3000:3000
        depends_on:
            - prometheus
  1. Mở cmd và chạy
docker-compose up -d
  1. Truy cập nhật [ip của vps]. 3000 ví dụ vps mình là. 132. 123. 1x. xx. 3000 will see the current page login of grafana as after.

    Mật khẩu và tài khoản mặc định là quản trị viên. quản trị sau khi đăng nhập ta chọn Bảng điều khiển => Quản lý => Nhập chọn nhập qua grafana. bảng điều khiển com điền id là 1860[node-exporter] và 193[cadvisor] sau đó nhấp vào Tải và điền tên, thư mục, nguồn dữ liệu prometheus như sau.
    Lưu ý với mỗi bảng điều khiển ta thực hiện nhập 1 lần.

    Nhấp vào nhập và tada đây là kết quả.

Trông cũng ra gì và đây cũng trông =]]. Bảng điều khiển nhập khẩu đã được tạo sẵn và được đăng trên grafana để rút ngắn thời gian thiết kế. Tất nhiên các bạn có thể tự thiết kế bảng điều khiển với các số liệu nhé. Sau khi import xong 2 dash board cho container[cadvisor] và host[node-exporter] thì nhấn save back to use this after

Qua bài viết này thì chúng ta đã cấu hình được 1 hệ thống máy chủ giám sát khá đơn giản và trực quan. Nếu trước đây có thể mất hàng tuần thậm chí hàng tháng để làm việc này thì giờ chỉ gói gọn trong khoảng 30p. Quá ngon đi =]]. Các bạn có thể phát triển các tính năng cho hệ thống giám sát máy chủ trên bằng cách thêm cảnh báo khi vượt ngưỡng, chỉnh sửa lại bảng điều khiển hoặc thậm chí là cấu hình 1 máy chủ giám sát để giám sát các máy chủ/vps khác trong cùng một hệ thống

Chủ Đề