Share This
//Thiết Lập Và Monitoring Hệ Thống Với Prometheus / Loki / Grafana (Phần 1)

Thiết Lập Và Monitoring Hệ Thống Với Prometheus / Loki / Grafana (Phần 1)

Trong thế giới số hóa như hiện nay, hệ thống thông tin đóng một vai trò không thể thiếu đối với hầu hết các khía cạnh của cuộc sống và doanh nghiệp. Từ ứng dụng web, dịch vụ trực tuyến đến các cơ sở dữ liệu và hạ tầng mạng. Vì vậy, việc đảm bảo hiệu suất và độ tin cậy của các hệ thống là yếu tố cực kỳ quan trọng trong việc vận hành của bất cứ tổ chức doanh nghiệp nào. Một hệ thống ổn định giúp tăng hiệu suất công việc cũng như trải nghiệm người dùng đối với sản phẩm của doanh nghiệp. Việc xây dựng hệ thống giám sát đảm bảo rằng mọi thứ hoạt động trong tầm kiểm soát và có thể ứng phó với sự cố một cách hiệu quả. Vậy việc không xây dựng một hệ thống giám sát sẽ ảnh hưởng như thế nào, cách thiết lập mô hình giám sát bằng Prometheus/Loki/Grafana ra sao, hãy cùng nhau tìm hiểu thông qua bài viết dưới đây:

Thiếu Giám sát Hệ thống: Nguy cơ và Tác động

Hệ thống nếu thiếu đi sự giám sát sẽ đối mặt với nhiều nguy cơ cũng như đối mặt với các tác động tiêu cực, từ đó sẽ ảnh hưởng đến chất lượng và hiệu suất của tổ chức. Dưới đây là một vài vấn đề có thể gặp phải nếu không triển khai hệ thống giám sát hoặc việc giám sát không có hiệu quả:

Hiệu suất thấp và sự cố ẩn

Chúng ta sẽ không nhận biết được các vấn đề tiềm ẩn trong hệ thống ảnh hưởng đến hiệu suất nếu không có hệ thống giám sát. Nếu không có cơ chế để theo dõi và ghi nhận dữ liệu liên quan đến hiệu suất thì các vấn đề như: “tốc độ xử lý chậm”, “tài nguyên sử dụng quá mức”, “thời gian đáp ứng dài hơn có thể xảy ra”,… sẽ khó phát hiện chính xác. Điều này có thể dẫn đến các sự cố không lường trước được và thậm chí có thể gây gián đoạn, đình trệ công việc.

Khả năng dự báo và lập kế hoạch yếu

Không có hệ thống giám sát sẽ không có dữ liệu giúp cho doanh nghiệp có thể dự báo các sự cố có thể xảy ra cũng như lập kế hoạch cho tương lai. Dữ liệu giám sát giúp định rõ xu hướng tăng trưởng và biến đổi trong hiệu suất hệ thống. Khi thiếu thông tin này, việc lập kế hoạch tài nguyên, mở rộng hạ tầng và tối ưu hóa sẽ gặp khó khăn. Điều này có thể dẫn đến sự lãng phí tài nguyên và gây cản trở trong việc lên kế hoạch đáp ứng nhanh chóng với nhu cầu thay đổi.

Khả năng điều tra và khắc phục yếu

Khi xảy ra sự cố hoặc vấn đề hệ thống, việc không có dữ liệu sẽ gây khó khăn trong việc xác định nguyên nhân và khắc phục sự cố. Thiếu thông tin về hoạt động hệ thống trước, trong và sau sự cố làm tăng thời gian cần thiết để xác định nguyên nhân gốc rễ và thực hiện các biện pháp khắc phục sự cố. Điều này có thể dẫn đến thời gian điều tra kéo dài không cần thiết, ảnh hưởng đến sự hài lòng của khách hàng và uy tín của doanh nghiệp.

Thiếu khả năng theo dõi và cảnh báo

Các hệ thống không được giám sát có thể bỏ lỡ các tình huống quan trọng cần can thiệp ngay lập tức. Nếu không có cơ chế cảnh báo hoặc bảng điều khiển để theo dõi các metric (chỉ số) quan trọng, các vấn đề như sự cạn kiệt tài nguyên, các sự cố về bảo mật và tình trạng rủi ro, không mong muốn có thể xảy ra mà không bị phát hiện sớm. Điều này có thể gây ra hậu quả nghiêm trọng đối với sự ổn định và an ninh của hệ thống.

Prometheus, Loki và Grafana: Giải pháp cho Hệ thống giám sát

Để giải quyết rủi ro trên, việc sử dụng các công cụ giám sát như Prometheus, Loki và Grafana là cần thiết. Bằng cách tự động thu thập dữ liệu hiệu suất, logs, trực quan hóa thông tin, công cụ hỗ trợ đã cung cấp cái nhìn toàn diện về chi tiết trạng thái cũng như hoạt động của hệ thống.

Bên cạnh đó, thiết lập hệ thống monitoring bằng cách sử dụng kết hợp giữa các công cụ nói trên sẽ giúp doanh nghiệp có thể cải thiện được khả năng dự báo, xử lý sự cố hay theo dõi và phát hiện các vấn đề bảo mật có thể xảy ra.

Prometheus là gì?

Prometheus là một dự án open source (mã nguồn mở), đã thay đổi cách chúng ta tiếp cận việc giám sát hệ thống. Với khả năng thu thập dữ liệu về hiệu suất và sức đề kháng của hệ thống từ các nguồn khác nhau, Prometheus cho phép chúng ta theo dõi và phân tích hệ thống theo cách linh hoạt và chính xác hơn.

Prometheus thu thập các metric về tài nguyên hệ thống, ứng dụng và các thành phần khác. Các thông số này sau đó được sử dụng để tạo cảnh báo, thống kê và biểu đồ cho việc theo dõi sự phát triển của hệ thống.

Prometheus thu thập và lưu trữ các chỉ số của nó dưới dạng dữ liệu chuỗi thời gian, tức là thông tin chỉ số được lưu trữ với dấu thời gian mà tại đó nó được ghi lại, cùng với các cặp key – value tùy chọn được gọi là label.

Loki là gì ?

Một thành phần quan trọng khác trong hệ thống giám sát là việc theo dõi logs. Loki – một dự án được thiết kế từ Prometheus – tập trung vào việc thu thập, truy vết và phân tích logs hệ thống.

Loki được thiết kế cho phép chúng ta tìm kiếm, lọc và truy vết logs từ các nguồn khác nhau một cách hiệu quả. Bằng cách kết hợp Prometheus và Loki, doanh nghiệp có thể nắm bắt được cả khía cạnh số liệu và logs của hệ thống, tạo ra một hình ảnh toàn diện và chi tiết về tình trạng hệ thống.

Grafana là gì ?

Việc giám sát và có dữ liệu là tốt, nhưng biến đổi dữ liệu thành thông tin hữu ích cho doanh nghiệp có thể nhìn được tổng quan hơn là nhiệm vụ của Grafana.

Grafana là một nền tảng trực quan hóa dữ liệu mạnh mẽ. Giúp tạo ra các dashboard, đồ thị từ các dữ liệu và metric lấy được từ các thiết bị giúp quan sát được các thông tin một cách trực quan và hiệu quả.

Sự kết hợp giữa Prometheus, Loki và Grafana cho phép doanh nghiệp tạo ra các bảng điều khiển tổng hợp, cung cấp cái nhìn tổng thể về tình trạng hệ thống và dễ dàng nhận biết các vấn đề và rủi ro về bảo mật tiềm ẩn tạo ra một hệ thống mạnh mẽ tạo tiền đề phát triển bền vững cho các tổ chức và doanh nghiệp hiện nay.

Triển khai mô hình giám sát hệ thống

Trong phạm vi bài hướng dẫn này, chúng ta sẽ thiết lập một hệ thống giám sát cơ bản các nguồn thông tin như : 

  1. Tỷ lệ sử dụng CPU của server
  2. Tỷ lệ sử dụng Memory của server
  3. Giám sát process của sshd
  4. Log của hệ thống /var/log/messages
  5. Log của Cron job

Công cụ sử dụng :

  1. Prometheus: 1 công cụ có thể thu thập và trực quan hóa các số liệu của service và app của server
  2. Loki: Log và query của hệ thống
  3. Grafana: Tool dùng để chuyển data thành công cụ giao diện nhìn trực quan
  4. Node Exporter:
    1. Tool để thu thập số liệu
    2. Truyền tải dữ liệu trong cài đặt ở phía máy chủ giám sát, thiết lập riêng để nhận thông tin Process Export từ phía máy chủ cần giám sát
  5. Promtail
    1. Tool dùng để format Log
    2. Thiết lập để format log từ server cần monitor đến server monitoring
  6. Cấu trúc server demo
Tên serverIP serverCấu hìnhTool sử dụng
Server cần theo dõi192.168.88.233OS: Centos8
Ram: 2GB
CPU: 2Core
・Node Exporter
・Process Exporter
・Promtail
Server monitor192.168.88.206OS: Centos8
Ram: 2GB
CPU: 2Core
・Grafana
・Loki
・Prometheus

Trình tự thiết lập

1. Thiết lập server cần theo dõi

Cài đặt các tool cần thiết như : Node Exporter, Process Exporter và Promtail

a. Install Node Exporter

Download phiên bản mới nhất từ Prometheus

# Tạo folder sử dụng để download source
$ mkdir /usr/local/src/prometheus
# Di chuyển đến folder source vừa tạo
$ cd /usr/local/src/prometheus
# Download file nén của source
$ wget https://github.com/prometheus/node_exporter/releases/download/v1.6.1/node_exporter-1.6.1.linux-amd64.tar.gz
# Giải nén file vừa download
$ tar zxvf node_exporter-1.6.1.linux-amd64.tar.gz
$ mv node_exporter-1.6.1.linux-amd64.tar.gz node_exporter
# Lưu trữ vào /usr/bin
$ cp -r node_exporter /usr/bin

Tạo script start

# Tạo script start
$ vi /usr/lib/systemd/system/prometheus-node-exporter.service

Nội dung của prometheus-node-exporter.service như sau

[Unit]
Description=Node Exporter
Documentation=https://github.com/prometheus/node_exporter
[Service]
Type=simple
ExecStart=/usr/bin/node_exporter/node_exporter $OPTIONS
Restart=always
[Install]
WantedBy=multi-user.target

Khởi động và kiểm tra hoạt động

# Reload daemon
$ systemctl daemon-reload
# Setup tự động restart service
$ systemctl enable prometheus-node-exporter.service
# Khởi động service
$ systemctl start prometheus-node-exporter.service
# Kiểm tra status của service
$ systemctl status prometheus-node-exporter.service

Kiểm tra kết quả

# Gọi thử API kiểm tra
$ curl 192.168.88.233:9100/metrics

Kết quả kiểm thử như sau là chính xác

b. Install Process Exporter

Download và cài đặt phiên bản mới từ Process Exporter

# Tạo folder sử dụng để download source
$ mkdir /usr/local/src/process-exporter
# Di chuyển đến folder source vừa tạo
$ cd /usr/local/src/process-exporter
# Download file nén của source
$ wget https://github.com/ncabatoff/process-exporter/releases/download/v0.7.10/process-exporter-0.7.10.linux-amd64.tar.gz
# Giải nén file vừa download
$ tar zxvf process-exporter-0.7.10.linux-amd64.tar.gz
$ mv process-exporter-0.7.10.linux-amd64 process-exporter
# Lưu trữ vào /usr/bin
$ cp -r /usr/local/src/process-exporter/process-exporter /usr/bin
# Tạo folder chứa config file cho process exporter
$ mkdir /etc/process-exporter
# Tạo config file
$ vi /etc/process-exporter/config.yml

Ghi nội dung script vào file config process-exporterconfig.yml

# Ghi nội dung vào file
$ vi /etc/process-exporter/process-exporterconfig.yml

Nội dung như sau :

process_names:
  - cmdline:
    - .+

Tạo script start

# Tạo script start
$ vi /usr/lib/systemd/system/process-exporter.service

Nội dung của process-exporter.service như sau

[Unit]
Description=Process Exporter
Documentation=https://github.com/ncabatoff/process-exporter
[Service]
Type=simple
ExecStart=/usr/bin/process-exporter/process-exporter \
  -config.path /etc/process-exporter/config.yml
[Install]
WantedBy=multi-user.target

Khởi động và kiểm tra hoạt động

# Reload và khởi động
$ systemctl daemon-reload
$ systemctl enable process-exporter.service
$ systemctl start process-exporter.service
$ systemctl status process-exporter.service

Kiểm tra service status như sau là thành công

Kiểm tra kết quả

# Gọi thử API kiểm tra
$ curl 192.168.88.233:9256/metrics

Kết quả kiểm thử như sau là chính xác

c. Install Promtail

Download và cài đặt phiên bản mới từ Grafana/Loki

# Tạo folder sử dụng để download source
$ mkdir /usr/local/src/promtail
# Di chuyển đến folder source vừa tạo
$ cd /usr/local/src/promtail
# Download file nén của source
$ curl -O -L "https://github.com/grafana/loki/releases/download/v2.8.4/promtail-linux-amd64.zip"
# Giải nén file vừa download
$ unzip "promtail-linux-amd64.zip"
# Cấp quyền thực thi cho file
$ chmod a+x promtail-linux-amd64
# Lưu trữ vào /usr/bin
$ cp -r /usr/local/src/promtail/promtail-linux-amd64 /usr/bin

Download file config promtail-local-config.yaml

# Tạo folder sử dụng để download file
$ mkdir /etc/promtail
# Di chuyển đến folder source vừa tạo
$ cd /etc/promtail
# Download file config
$ wget https://raw.githubusercontent.com/grafana/loki/main/clients/cmd/promtail/promtail-local-config.yaml

Chỉnh sửa cấu hình promtail-local-config.yaml cho phù hợp

  • Cập nhật lại IP của server monitor dùng để push thông tin từ server theo dõi (server monitor ở đây đang dùng IP: 192.168.88.206)
  • Thiết lập để có thể thu thập được log của hệ thống và cron job log:
    /var/log/messages và /var/log/crond
  • Chỉnh lại file cấu hình /etc/promtail/promtail-local-config.yaml như sau:
server:
http_listen_port: 9080
grpc_listen_port: 0
positions:
filename: /tmp/positions.yam
clients:
- url: http://192.168.88.206:3100/loki/api/v1/push
scrape_configs:
- job_name: system
static_configs:
- targets:
- localhost
labels:
job: varlogs
      __path__: /var/log/messages
- job_name: cron
  static_configs:
  - targets:
     - localhost
    labels:
      job: cronlogs
      __path__: /var/log/cron

Tạo script khởi động

$ vi /usr/lib/systemd/system/promtail.service

Nội dung script promtail.service như sau

[Unit]
Description=Promtail
Documentation=https://github.com/grafana/loki/releases/
[Service]
Type=simple
ExecStart=/usr/bin/promtail-linux-amd64 \
  --config.file=/etc/promtail/promtail-local-config.yaml
[Install]
WantedBy=multi-user.target

Khởi động lại và kiểm tra kết quả

# Reload và khởi động
$ systemctl daemon-reload
$ systemctl enable promtail.service
$ systemctl start promtail.service
$ systemctl status promtail.service

Kiểm tra trạng thái dịch vụ như sau là thành công

Kiểm tra kết quả bằng API

# Gọi thử API kiểm tra
$ curl 192.168.88.233:9080/targets

Kết quả như sau

Xác nhận Promtail hoạt động trên browser (Chrome) theo địa chỉ
http://192.168.88.233:9080/targets

Hết phần 1

*Ở phần 2 chúng ta sẽ nói về Cách thiết lập server monitor. Hãy tiếp tục theo dõi bài viết nhé!

Phan Văn Liền
Web Developer

ỨNG TUYỂN







    Chế độ phúc lợi

    CHÍNH SÁCH LƯƠNG & THƯỞNG

    Thấu hiểu tâm tư nguyện vọng của nhân viên, công ty Rivercrane Việt Nam đặc biệt thiết lập chế độ xét tăng lương định kỳ 2lần/năm. Xét đánh giá vào tháng 06 và tháng 12 hàng năm và thay đổi lương vào tháng 01 và tháng 07 hàng năm. Ngoài ra, nhân viên còn được thưởng thành tích định kỳ cho các cá nhân xuất sắc trong tháng, năm.

    CHẾ ĐỘ ĐÀO TẠO TẠI NHẬT

    Luôn luôn mong muốn các kỹ sư và nhân viên trong công ty có cái nhìn toàn diện về lập trình những mảng kỹ thuật trên thế giới, công ty Rivercrane Việt Nam quyết định chế độ 3 tháng 1 lần đưa nhân viên đi học tập tại Nhật. Các bạn kỹ sư hoàn toàn đều có thể quyết định khả năng phát triển bản thân theo hướng kỹ thuật hoặc theo hướng quản lý.

    CHẾ ĐỘ ĐI DU LỊCH HÀNG NĂM

    Không chỉ đưa đến cho nhân viên những công việc thử thách thể hiện bản thân, công ty Rivercrane Việt Nam muốn nhân viên luôn thích thú khi đến với những chuyến hành trình thú vị hàng năm. Những buổi tiệc Gala Dinner sôi động cùng với những trò chơi Team Building vui nhộn sẽ giúp cho đại gia đình Rivercrane thân thiết hơn.

    CHẾ ĐỘ EVENT CÔNG TY

    Những hoạt động Team building, Company Building, Family Building, Summer Holiday, Mid-Autumn Festival… sẽ là những khoảnh khắc gắn kết đáng nhớ của mỗi một nhân viên trong từng dự án, hoặc sẽ là những điều tự hào khi giới thiệu công ty mình với với gia đình thân thương, cùng nhau chia sẻ yêu thương với thông điệp “We are One”

    BẢO HIỂM

    Công ty Rivercrane Việt Nam đảm bảo tham gia đầy đủ chế độ Bảo hiểm xã hội, bảo hiểm y tế và bảo hiểm thất nghiệp. Cam kết chặt chẽ về mọi thủ tục phát sinh công ty đều hỗ trợ và tiến hành cho nhân viên từ đầu đến cuối. Những chế độ bảo hiểm khác công ty cũng đặc biệt quan tâm và từng bước tiến hành.

    CHẾ ĐỘ PHÚC LỢI KHÁC

    Hỗ trợ kinh phí cho các hoạt động văn hóa, văn nghệ, thể thao; Hỗ trợ kinh phí cho việc mua sách nghiên cứu kỹ thuật; Hỗ trợ kinh phí thi cử bằng cấp kỹ sư, bằng cấp dành cho ngôn ngữ. Hỗ trợ kinh phí tham gia các lớp học về quản lý kỹ thuật bên ngoài; Các hỗ trợ phúc lợi khác theo quy định công ty…

    © 2012 RiverCrane Vietnam. All rights reserved.

    Close