1. Trang chủ
  2. » Luận Văn - Báo Cáo

Báo Cáo Tiểu Luận NGHIÊN CỨU VÀ TRIỂN KHAI GIÁM SÁT MẠNG VỚI PROMETHEUS VÀ GRAFANA

51 61 11

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Nghiên Cứu Và Triển Khai Giám Sát Mạng Với Prometheus Và Grafana
Tác giả Nhóm Thực Hiện: N04
Người hướng dẫn ThS. Trần Đắc
Trường học Trường Đại Học Công Thương TP. Hồ Chí Minh
Thể loại báo cáo tiểu luận
Năm xuất bản 2023
Thành phố TP. Hồ Chí Minh
Định dạng
Số trang 51
Dung lượng 1,87 MB

Nội dung

Báo cáo tiểu luận tập trung tìm hiểu về chương trình Prometheus và Grafana. Prometheus là một chương trình giám sát mã nguồn mở cho việc theo dõi và cảnh báo về hệ thống và Grafana là một chương trình giao diện hóa các dữ liệu được gửi về từ nguồn. Prometheus sẽ thu thập các dữ liệu từ máy được giám sát, quản lý lưu trữ và hiển thị thông qua Grafana.

Trang 1

BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC CÔNG THƯƠNG TP HỒ CHÍ MINH

KHOA CÔNG NGHỆ THÔNG TIN

Trang 2

BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC CÔNG THƯƠNG TP HỒ CHÍ MINH

KHOA CÔNG NGHỆ THÔNG TIN

Trang 3

TP Hồ Chí Minh, ngày … tháng … năm 2023

Trang 4

BẢNG PHÂN CÔNG VIỆC LÀM VÀ MỨC ĐỘ HOÀN THÀNH

Họ và Tên MSSV Công việc thực hiện hoàn thành Mức độ

Trang 5

MỤC LỤC

1 GIỚI THIỆU VẤN ĐỀ 1

1.1 Giới thiệu về Prometheus 1

1.2 Các tính năng của Prometheus 3

1.3 Kiến trúc của Prometheus : 3

1.3.1 Quá trình hoạt động của Prometheus : 3

1.3.2 Các thành phần trong mô hình của Prometheus : 4

1.4 Các dạng dữ liệu (metrics) trên Prometheus : 5

1.5 Giới thiệu về Gafana 6

2 MÔ HÌNH THỬ NGHIỆM 7

2.1 Mô hình thực nghiệm : 7

2.2 Danh sách các thiết bị và dịch vụ thiết lập : 7

3 KỊCH BẢN THỬ NGHIỆM 10

4 CÁC BƯỚC THỰC HIỆN 11

4.1 Triển khai cài đặt Prometheus (192.168.38.130/24) : 11

4.2 Cài đặt Node Exporter trên máy Prometheus (192.168.38.130/24) : 15

4.3 Cài đặt Grafana trên máy giám sát (192.168.38.130/24) 19

Trang 6

4.4.1 Cài đặt Node Exporter trên máy Web Server 22

4.4.2 Tích hợp Node Exporter lên máy Prometheus : 26

4.5 Cài đặt Apache Exporter trên máy Web Server (192.168.38.135/24) 28

4.5.1 Cài đặt apache_exporter trên máy Web Server : 28

4.5.2 Thêm đối tượng apache_exporter vào Prometheus : 30

4.5.3 Thêm Dashboard cho đối tượng apache_exporter : 31

4.6 Cài đặt Windows_Exporter trên máy windows Server 2008 R2 (192.168.38.136/24) 34

4.7 Tích hợp đối tượng giám sát vào Prometheus : 35

4.8 Cài đặt Dashboard cho windows_exporter trên Grafana : 36

5 KẾT QUẢ 38

5.1 Thực hiện giám sát máy Web Server thông qua node_exporter : 38

5.2 Thực hiện giám sát lưu lượng mạng bằng speedtest : 40

5.3 Thực hiện giám sát tình trạng dịch vụ Apache trên Web Server : 41

5.4 Thực hiện giám sát máy Windows Server 2008 : 42

6 NHẬN XÉT 43

6.1 Ưu và nhược điểm của Grafana : 43

6.2 Ưu và nhược điểm của Prometheus 44

Trang 7

7 KẾT LUẬN 45

Trang 8

1 GIỚI THIỆU VẤN ĐỀ

1.1 Giới thiệu về Prometheus

Prometheus là một dịch vụ mã nguồn mở sử dụng cho việc theo dõi và cảnh báo về

hệ thống

Xây dựng từ năm 2012 cho dự án SoundCloud nhưng được tách ra và phát triểnthành một dự án độc lập từ năm 2016 sau khi tham gia vào tổ chứ CNCF (CloudNative Computing Foundation)

Tính năng thu thập thông số (metric), dữ liệu từ các dịch vụ được gán thêm yếu tố

về thời gian nhất định được thiết lập, đánh giá các biểu hức quy tắc, hiển thị kếtquả và có thể kích hoạt cảnh báo nếu các điều kiện được thỏa mãn yêu cầu

Được lập trình dựa trên ngôn ngữ Golang được thành lập bởi Google và cung cấp

cơ chế truy vấn dữ liệu sử dụng PromQL (viết tắt của Prometheus QueryLanguage)

 PromQL (Prometheus Query Language) là một dạng ngôn ngữ truy vấn chophép người dùng chọn và tổng hợp các dữ liệu chuỗi thòi gian theo thời gianthực (real time)

 Kết quả được hiển thị dưới dạng biểu độ, dữ liệu dạng bảng hay dữ liệu đầuvào cho chương trình khác thông qua HTTP API

Ví dụ : http_requests_total{job="apiserver", handler="/api/comments"} Ý

nghĩa : thực hiện việc truy vấn dạng dữ liệu chuỗi thời gian

“http_requests_total” với các yếu tố đặc trưng như “job” và “handler”

1

Trang 9

Một số thông tin khác về Prometheus :

 Phần lớn các core tính năng của Prometheus được viết bằng ngôn ngữ Go.Một số còn lại thì được viết bằng Java, Python hoặc Ruby

 Prometheus không dùng để lấy dữ liệu log, thay vì vậy thì Prometheus làdịch vụ giám sát, thu thập và xử lý dữ liệu dạng metric (thông số)

 Prometheus sử dụng cơ chế đi lấy (pull) dữ liệu từ máy chủ remote là chính,chứ không sử dụng cơ chế đợi remote đẩy (push) dữ liệu lên ngoại trừtrường hợp sử dụng PushGateway

 Prometheus sử dụng chương trình cảnh báo Alertmanager để xử lý và gửicảnh báo đi

 Về phần giao diện biểu đồ (đồ thị) thì Prometheus sử dụng mã nguồnGrafana để tích hợp hiển thị

 Metric của Prometheus sử dụng chuẩn OpenMetrics

 Prometheus hỗ trợ 3 hình thức cài đặt các thành phần hệ thống gồm : DockerImage, cài đặt từ source với Go và file chương trình chạy sẵn đã được biêndịch sẵn

Một số thuật ngữ trong quá trình làm việc của Prometheus :

Time-series Data: là một chuỗi các điểm dữ liệu, thường bao gồm các phép

đo liên tiếp được thực hiện từ cùng một nguồn trong một khoảng thời gian

Endpoint: nguồn dữ liệu của các chỉ số (metric) mà Prometheus sẽ đi lấy

thông tin

Instance: một instance là một nhãn (label) dùng để định danh duy nhất cho

Trang 10

1.2 Các tính năng của Prometheus

Một số tính năng chính của Prometheus :

 Mô hình dữ liệu đa chiều – time series được xác định bởi tên của số liệu(metric) và các cặp khóa – giá trị (key/value)

 Ngôn ngữ truy vấn linh hoạt

 Hỗ trợ nhiều chế độ biểu đồ

 Nhiều chương trình tích hợp và hỗ trợ bởi bên thứ 3

 Hoạt động cảnh báo vấn đề linh động dễ cấu hình

 Chỉ cần 1 máy chủ là có thể hoạt động được

 Hỗ trợ Push các time series thông qua một gateway trung gian

 Các máy chủ/thiết bị giám sát có thể được phát hiện thông qua servicediscovery hoặc cấu hình tĩnh

1.3 Kiến trúc của Prometheus :

1.3.1 Quá trình hoạt động của Prometheus :

Quá trình hoạt động của Prometheus :

 Thực hiện quá trình lấy các thông số/số liệu (metric) từ các job được chỉđịnh qua kênh trực tiếp hoặc thông qua dịch vụ Pushgateway trung gian

 Sau đấy Prometheus sẽ lưu trữ các dữ liệu thu thập được ở local máy chủ

 Thực thi các rule để xử lý các dữ liệu theo nhu cầu cũng như kiểm tra thựchiện các cảnh báo nếu thiết lập

3

Trang 11

Hình 1 Kiến trúc của Prometheus.

1.3.2 Các thành phần trong mô hình của Prometheus :

Các thành phần chính trong mô hình của Prometheus :

Prometheus Server (máy chủ Prometheus) : vai trò trung tâm, lấy và lưu trữ

các dạng chuỗi dữ liệu thời gian (còn gọi là time-series)

Client Library (thư viện tại máy khách) : các thư viện về ngôn ngữ lập trình

được cung cấp trong việc khai thác các dữ liệu Khi Prometheus thực hiệnviệc lấy dữ liệu từ Client thông qua điểm cuối HTTP (HTTP Endpoint), cácClient Library sẹ gửi các thông tin trạng thái hiện tại của các dữ liệu đếnmáy chủ

Trang 12

Push Gateway Prometheus : sử dụng cho các job có thời gian thực hiện ngắn

(mang tính tạm thời), cơ bản vì các dạng dữ liệu không tồn tại đủ lâu để máychủ lấy về nên cần phải thông qua một kênh để lấy trực tiếp

Các dạng Exporter : hiểu như các Agent được cài đặt trên các Client để thu

thập các thông tin dữ liệu liên quan đến đối tượng cần giám sát và sẽ đượcPrometheus lấy về theo một khoảng thời gian thiết lập thông qua các HTTPEndpoint

Alert Manger : dịch vụ quản lý, xử lý các cảnh báo (alert).

1.4 Các dạng dữ liệu (metrics) trên Prometheus :

Tổng quan về Time Series Database (TSDB) :

 Là cơ sở dữ liệu được tối ưu hóa cho dữ liệu chuỗi thời gian hoặc có dấuthời gian

 Được xây dựng đặc biệt để xử lý các số liệu và sự kiện hoặc phép đo đượcđóng dấu thời gian

 TSDB được tối ưu hóa để đo lường sự thay đổi theo thời gian

Metrics là một số liệu được đo tại một thời điểm trong hệ thống :

 Đơn vị đo có thể là giá trị, móc thời gian và định danh về một đối tượng cụthể

 Các dữ liệu thì thu thập bất cứ khi nào xuất hiện nhưng số liệu thì chỉ thuthập được trong khoảng thời gian ngắn

 Ví dụ : dữ liệu probe_process thể hiện tình trạng hoạt động của dịch vụ đượcthiết lập luôn có thể thu thập tại bất kì thời điểm nào nhưng số liệu (ví dụ :probe_process = 1 hoặc 0) thì chỉ thu thập khi trạng thái dịch vụ là 1 hoặc 0

5

Trang 13

Số liệu (Metrics) được thể hiện trên Prometheus thông qua 4 dạng :

Counter : là số liệu đại diện cho bộ đếm, có giá trị tăng hoặc trở về 0 khi

được khởi động lại, thường không sử dụng để đếm cho các giá trị có thểgiảm

 Gauge : là số liệu đại diện cho một giá trị số duy nhất, có thể tăng hoặcgiảm

 Histogram : đếm các giá trị theo các tiêu chí được thiết lập, cung cấp cơ chếtính tổng các giá trị theo tiêu chí ấy

 Summary : tương tự như histogram, các giá trị thường là thời lượng yêu cầu

và kích thước phản hồi, ngoài tính tổng giá trị yếu tố còn có thể tính toác cácđới tượng thông qua một dạng cửa sổ trượt (sliding time window)

1.5 Giới thiệu về Gafana

Grafana là một vizualizer hiển thị các metric dưới dạng các biểu đồ (chart) hoặc đồthị (graph), được tập hợp lại thành dashboard có tính tùy biến cao, giúp dễ dàngtheo dõi tình trạng của node

Sau khi thu thập được các Metrics từ thiết bị, grafana sẽ sử dụng metric đó để phântích và tạo ra dashboard mô tả trực quan các metric cần thiết cho việc monitoringnhư CPU, RAM, disks, IO operations và các thông tin hiển thị khác

Trang 14

2 MÔ HÌNH THỬ NGHIỆM

2.1 Mô hình thực nghiệm :

Hình 2 Mô hình thực nghiệm cho bài thực hành triển khai giám sát bằng Prometheus và Grafana

2.2 Danh sách các thiết bị và dịch vụ thiết lập :

Danh sách các thiết bị và dịch vụ thiết lập

ST

T Tên thiết bị Hệ điều hành Tên dịch vụ được cài đặt

1 Máy ảo SV-Winds-2008-ad Windows Server2009

Active Directory Domain Services

DHCP Server

7

Trang 15

Apache HTTP ServerSFTP (thay thế cho FTP)Linux Exporter

Trang 17

3 KỊCH BẢN THỬ NGHIỆM

Các nội dung thực hiện trong bài thực nghiệm :

 Thực hiện thiết lập các thiết bị trong mô hình (cài đặt máy ảo và các dịch vụcần thiết)

 Thiết lập máy giám sát Prometheus và Grafana

 Thiết lập các Exporter trên các Client để thực hiện việc giám sát các đốitượng

 Kiểm tra các nội dung giám sát được trên Prometheus và Grafana

Prometheus thực hiện giám sát các đối tượng được để cập đến trong bài :

 Các thông số về phần cứng như : CPU, Memery, lưu lượng mạng và cácthông số khác

 Thông tin về trạng thái của dịch vụ Apache được cài đặt trên máy WebServer

 Các thông số liên quan đến thiết bị được thu thập qua Node Exporter (thiếtlập trên máy Ubuntu Server 22.04.3) và Windows Exporter (thiết lập trênmáy Windows Server 2008 R2)

Trang 18

4 CÁC BƯỚC THỰC HIỆN

4.1 Triển khai cài đặt Prometheus (192.168.38.130/24) :

Quá trình thực hiện trên máy Ubuntu Server 22.04.3 (192.168.38.130/24)

CÀI ĐẶT PROMETHEUS TRÊN UBUNTU SERVER 22.04.3

(192.168.38.130/24)

Tải tập tin chứa chương

trình từ trang chủ

wget https://github.com/prometheus/prometheus/releases/download/v2.47.0/prometheus-2.47.0.linux-

amd64.tar.gzGiải nén tập tin tar vừa

tải tar xvzf prometheus-2.47.0.linux-amd64.tar.gz

Tạo 2 thư mục

/etc/prometheus và

/var/lib/prometheus

sudo mkdir /etc/prometheus /var/lib/prometheus

Di chuyển vào thư mục

Di chuyển các tập tin như

consoles và

sudo mv consoles/ console_libraries/

/etc/prometheus/

11

Trang 19

console_libraries đến thư

mục /etc/prometheus

Kiểm tra chương trình

chạy bằng kiểm tra

[Service]

User=prometheusGroup=prometheusType=simple

Restart=on-failureRestartSec=5sExecStart=/usr/local/bin/prometheus \

Trang 20

storage.tsdb.path /var/lib/prometheus/ \ web.console.templates=/etc/prometheus/consoles

\ web.console.libraries=/etc/prometheus/console_libraries \

web.listen-address=0.0.0.0:9090 \ web.enable-lifecycle \

log.level=info

[Install]

WantedBy=multi-user.targetKhởi động lại dịch vụ

systemctl daemon sudo systemctl daemon-reload

Trang 21

Hình 3 Truy cập giao diện Dashboard của Promethesu bằng trình duyệt với

http://192.168.38.130:90909

Hình 4 Trang Target hiển thị các Client thực hiện việc giám sát, trường hợp này

là cài đặt trên chính prometheus để quản lý server giám sát bằng node exporter.

Trang 22

4.2 Cài đặt Node Exporter trên máy Prometheus

(192.168.38.130/24) :

Các thông tin cơ bản :

 Quá trình cài đặt thực hiện trên máy Ubuntu Server 22.04.3(192.168.38.130/24)

 Phiên bản của node exporter : v1.6.1

 Hệ điều hành áp dụng : linux amd64

 Loại file tải về : file nén tar

 Tên chi tiết tập tin tải về : node_exporter-1.6.1.linux-amd64.tar.gz

Bảng quá trình cài đặt Node Exporter trên máy Prometheus :

Trang 23

Description=Node ExporterWants=network-online.targetAfter=network-online.target

[Service]

User=node_exporterGroup=node_exporterType=simple

Restart=on-failureRestartSec=5sExecStart=/usr/local/bin/node_exporter

[Install]

WantedBy=multi-user.targetKhởi động lại

dịch vụ

daemon-reload

sudo systemctl daemon-reloadKhởi chạy dịch

Trang 25

Hình 6 Chuyển sang trang metrics sẽ thấy những thông số được thu thập dựa trên các thiết lập mặc định Dựa vào những thông số này có thể gửi về Prometheus và cũng có thể hiển thị trực quan bằng Grafana.

4.3 Cài đặt Grafana trên máy giám sát (192.168.38.130/24)

Các thông tin cơ bản :

 Cài đặt thông qua apt (phiên bản cài đặt : 10.2.0)

 Thực hiện trên máy giám sát : 192.168.38.130/24

Trang 26

Thêm Grafana “Stable

Releases” repository :

[signed-by=/usr/share/keyrings/grafana.key] https://apt.grafana.com stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list

Cài đặt grafana trên máy chủ sudo apt install grafana

Khởi động lại systemctl

daemon

sudo systemctl daemon-reload

Khởi động lại grafana server sudo systemctl start grafana-server

Truy cập web interface bằng

trình duyệt bất kì

http://192.168.38.130:3000

19

Trang 27

Hình 7 Giám sát phần cứng máy Prometheus thực hiện thông qua Grafana

Trang 28

4.4 Cài đặt Node Exporter trên máy Web Server (192.168.38.135/24)

4.4.1 Cài đặt Node Exporter trên máy Web Server

Thông tin cơ bản :

 Quá trình cài đặt thực hiện trên máy Ubuntu Server 22.04.3(192.168.38.135/24)

 Phiên bản của node exporter : v1.6.1

 Hệ điều hành áp dụng : linux amd64

 Loại file tải về : file nén tar

 Tên chi tiết tập tin tải về : node_exporter-1.6.1.linux-amd64.tar.gz

Trang 29

Description=Node ExporterWants=network-online.targetAfter=network-online.target

[Service]

User=node_exporterGroup=node_exporterType=simple

Restart=on-failureRestartSec=5sExecStart=/usr/local/bin/node_exporter

[Install]

WantedBy=multi-user.targetKhởi động lại

Trang 31

Hình 9 Truy cập node_exporter trên máy Client.

4.4.2 Tích hợp Node Exporter lên máy Prometheus :

Thực hiện việc thêm một job, tức đối tượng cần lấy các metrics để hiển thị thôngqua HTTP Endpoint, bằng cách thêm vào tập tin config các thiết lập (tập tin configtại đường dẫn : /etc/prometheus/prometheus.yaml) :

- job_name: “web-server-remote”

scrape_interval: 10s

static_configs:

- targets: [“192.168.39.135:9100”]

Trang 32

Hình 10 Thêm một client vào phần job, đặt ip là của máy Client Web Server.

25

Trang 33

Hình 11 Kiểm tra trên Prometheus thì có hiển thị máy Client remote

Hình 12 Sử dụng Grafana để giám sát các thông tin trong máy Web Server.

Trang 34

4.5.1 Cài đặt apache_exporter trên máy Web Server :

Các thông tin cơ bản :

 Mục đích : giám sát thông tin trạng thái của dịch vụ Apache HTTP Server

 Tải từ trang : https://github.com/Lusitaniae/apache_exporter

 Trang của apache_exporter : http://192.168.38.135:9117

Quá trình cài đặt (thực hiện sau khi tải apache_exporter từ trang github) :

Di chuyển tập tin vào /usr/local/bin sudo mv apache_exporter /usr/local/bin

Thêm user là apache_exporter sudo useradd -rs /bin/false apache_exporter

Thực hiện tạo tập tin

apache_exporter.service

sudo nano /etc/systemd/system/apache_exporter.s ervice

Tùy chỉnh nội dung trong tập tin

/etc/systemd/system/apache_exporter.s

ervice

# Nội dung tập tin File:

/etc/systemd/system/apache_exporter.service

[Unit]

Description=Apache ExporterWants=network-online.targetAfter=network-online.target

[Service]

User=apache_exporter

27

Ngày đăng: 13/03/2024, 16:34

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w