Friday, November 1, 2024

Tạo server monitor dashboard với Prometheus, Node Exporter và Grafana

-

Tiếp tục bài viết về Prometheus, bài viết  hôm nay mình sẽ hướng dẫn bạn cấu hình thực hiện giám sát một máy chủ Linux.

Thông thường để xem các thông số hệ thống như CPU, RAM, ổ cứng bạn hoàn toàn có thể sử dụng command line để xem các thông tin đó. Tuy nhiên để để thuận tiện hơn cho việc quan sát những thông số về hệ thống chúng ta cần có những giải pháp trực quan, tiện lợi giúp cho những công việc đó trở nên đơn giản hơn. Chúng ta sẽ cùng nhau xây dựng một dashboard giúp quan sát những thông số đó bằng cách sử dụng Prometheus. Nếu bạn chưa biết về Prometheus mình đã có bài viết giới thiệu về Prometheus. Các bạn hãy đọc bài viết trước và cài đặt Prometheus trước khi tiếp tục đọc bài viết này. Như đã nói trong bài viết trước chúng ta có thể sử dụng các exporter cho việc xuất các dữ liệu cần thiết cho Prometheus. Trong bài viết này mình sẽ sử dụng một exporter để xuất dữ liệu về hệ thống như các thông số về CPU, RAM, … cho Prometheus đó là Node Exporter.

Bước 1: Cài đặt Node Exporter lên máy chủ Linux

– Mình sẽ cài đặt Node Exporter lên VPS cá nhân để test luôn. Bạn truy cập vào Node Exporter tại trang chủ để tải về bản mới nhất  nhé. Kéo xuống dưới, tại node_exporter chọn phiên bản phù hợp với hệ điều hành của bạn.

– Copy link tải, sử dụng wget để download về server linux, giải nén nó và move vào thư mục /usr/local/bin/.

wget https://github.com/prometheus/node_exporter/releases/download/v1.5.0/node_exporter-1.5.0.linux-amd64.tar.gz
tar -xzvf node_exporter-1.5.0.linux-amd64.tar.gz
mv node_exporter-1.5.0.linux-amd64/node_exporter /usr/local/bin/

– Tạo user cho node_exporter

useradd --no-create-home --shell /bin/false node_exporter

– Tạo file service cho node_exporter /etc/systemd/system/node_exporter.service, sau đó copy các đoạn mã sau và dán vào file và save lại.

cat > /etc/systemd/system/node_exporter.service << 'OEF'
[Unit]
Description=Node Exporter
Wants=network-online.target
After=network-online.target

[Service]
User=node_exporter
Group=node_exporter
Type=simple
ExecStart=/usr/local/bin/node_exporter

[Install]
WantedBy=default.target
OEF

– Reload lại daemon

systemctl daemon-reload

– Khởi động và kích hoạt dịch vụ node exporter

systemctl enable node_exporter
systemctl start node_exporter
systemctl status node_exporter

Kiểm tra nếu port 9100 trên server đã listen tức là dịch vụ của bạn đã hoạt động.

$ netstat -natlp | grep 9100
tcp6       0      0 :::9100                 :::*                    LISTEN      12014/node_exporter

Bây giờ bạn hãy truy cập http://IP-Address:9100/metrics để kiểm tra nhé.

$ ifconfig enp1s0
enp1s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.13.218  netmask 255.255.254.0  broadcast 192.168.13.255
        inet6 fe80::5054:ff:fe09:f40  prefixlen 64  scopeid 0x20<link>
        ether 52:54:00:09:0f:40  txqueuelen 1000  (Ethernet)
        RX packets 357129  bytes 856651717 (856.6 MB)
        RX errors 0  dropped 682  overruns 0  frame 0
        TX packets 204345  bytes 59021478 (59.0 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Dưới đây là kết quả khi mình sử dụng lệnh curl.

$ curl -s http://192.168.13.218:9100/metrics | tail -n 20
# TYPE process_start_time_seconds gauge
process_start_time_seconds 1.67221209115e+09
# HELP process_virtual_memory_bytes Virtual memory size in bytes.
# TYPE process_virtual_memory_bytes gauge
process_virtual_memory_bytes 7.42846464e+08
# HELP process_virtual_memory_max_bytes Maximum amount of virtual memory available in bytes.
# TYPE process_virtual_memory_max_bytes gauge
process_virtual_memory_max_bytes 1.8446744073709552e+19
# HELP promhttp_metric_handler_errors_total Total number of internal errors encountered by the promhttp metric handler.
# TYPE promhttp_metric_handler_errors_total counter
promhttp_metric_handler_errors_total{cause="encoding"} 0
promhttp_metric_handler_errors_total{cause="gathering"} 0
# HELP promhttp_metric_handler_requests_in_flight Current number of scrapes being served.
# TYPE promhttp_metric_handler_requests_in_flight gauge
promhttp_metric_handler_requests_in_flight 1
# HELP promhttp_metric_handler_requests_total Total number of scrapes by HTTP status code.
# TYPE promhttp_metric_handler_requests_total counter
promhttp_metric_handler_requests_total{code="200"} 0
promhttp_metric_handler_requests_total{code="500"} 0
promhttp_metric_handler_requests_total{code="503"} 0

Bây giờ hãy vào file /etc/prometheus/prometheus.yml.

vi /etc/prometheus/prometheus.yml

Hãy thêm thông tin về node_explore như dưới.

  - job_name: 'Linux'
    static_configs:
    - targets: ['192.168.13.218:9100']
      labels:                           
       hostname: Linux01
       type: linux
       company: hoanghd

Khởi động lại prometheus

systemctl restart prometheus

Sau khi khởi động lại prometheus, hãy vào phần Targets bạn sẽ thấy thông tin của node_explore đã xuất hiện và đang ở trạng thái up.

Hãy thử query một metric, bạn đã có kết quả như dưới.

– Để thêm dashboard cho node_explore hãy click vào link dưới.

https://grafana.com/grafana/dashboards/1860-node-exporter-full/

Có 2 cách để import dashboard đó là sử dụng ID hoặc import bằng file json.

Trên Grafana hãy vào mục import.

Điền ID của dashboard vào và bấm load nếu bạn chọn phương pháp import bằng ID.

Nếu sử dụng phương pháp import bằng file, hãy làm theo các bước như dưới.

Nhìn vào hình dưới, ở phần 1 bạn có thể thay đổi tên và folder chứa dashboard. Ở phần 2 bạn hãy chọn datasource của node_explore.

Và đây là kết quả sau khi import xong.

Chúc các bạn thành công.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

4,956FansLike
256FollowersFollow
223SubscribersSubscribe
spot_img

Related Stories