Monitoring

Install Node Exporter

Tạo một người dùng hệ thống cho Node Exporter bằng cách chạy lệnh sau:

sudo useradd \
    --system \
    --no-create-home \
    --shell /bin/false node_exporter

Tải file binary NodeExporter bằng wget:

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 tải:

tar -xvf node_exporter-1.6.1.linux-amd64.tar.gz

Di chuyển file vào /usr/local/bin:

Tiếp theo, tạo một file service system:

sudo vim /etc/systemd/system/node_exporter.service

với nội dung sau:

[Unit]
Description=Node Exporter
Wants=network-online.target
After=network-online.target
StartLimitIntervalSec=500
StartLimitBurst=5
[Service]
User=node_exporter
Group=node_exporter
Type=simple
Restart=on-failure
RestartSec=5s
ExecStart=/usr/local/bin/node_exporter \
    --collector.logind
[Install]
WantedBy=multi-user.target

Để tự động start NodeExporter mỗi khi khởi động lại hệ thống, dùng lệnh:

sudo systemctl enable node_exporter

Tiếp đến chạy service:

sudo systemctl start node_exporter
sudo systemctl status node_exporter

Install Prometheus

Tạo một người dùng hệ thống cho Prometheus bằng cách chạy lệnh sau:

sudo useradd \
    --system \
    --no-create-home \
    --shell /bin/false prometheus

Tải file binary Prometheus bằng wget:

wget https://github.com/prometheus/prometheus/releases/download/v2.47.1/prometheus-2.47.1.linux-amd64.tar.gz

Giải nén file:

tar -xvf prometheus-2.47.1.linux-amd64.tar.gz

Chuyển thư mục prometheus vào /usr/local/bin:

cd prometheus-2.47.1.linux-amd64/
sudo mv prometheus promtool /usr/local/bin/

Phiên bản của prometheus:

Tạo service prometheus:

sudo vim /etc/systemd/system/prometheus.service
[Unit]
Description=Prometheus
Wants=network-online.target
After=network-online.target
StartLimitIntervalSec=500
StartLimitBurst=5
[Service]
User=prometheus
Group=prometheus
Type=simple
Restart=on-failure
RestartSec=5s
ExecStart=/usr/local/bin/prometheus \
  --config.file=/etc/prometheus/prometheus.yml \
  --storage.tsdb.path=/data \
  --web.console.templates=/etc/prometheus/consoles \
  --web.console.libraries=/etc/prometheus/console_libraries \
  --web.listen-address=0.0.0.0:9090 \
  --web.enable-lifecycle
[Install]
WantedBy=multi-user.target

Để tự động chạy prometheus mỗi khi server khởi động lại, dùng lệnh:

sudo systemctl enable prometheus

Tiếp đến chạy service:

sudo systemctl start prometheus
sudo systemctl status prometheus

Truy cập vào Prometheus: <public_ip:9090>

Thêm NodeExporter vào Prometheus:

sudo vim /etc/prometheus/prometheus.yml
- job_name: node_export
    static_configs:
      - targets: ["localhost:9100"]

Kiểm tra config prometheus :

promtool check config /etc/prometheus/prometheus.yml

Load lại config prometheus:

curl -X POST http://localhost:9090/-/reload

Kiểm tra phần Targets trên prometheus <public_ip:9090/targets:

Install Grafana

Đảm bảo các dependency đã được cài đặt:

sudo apt-get install -y apt-transport-https software-properties-common

Thêm GPG key:

wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -

Thêm repository:

echo "deb https://packages.grafana.com/oss/deb stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list

Sau đó update và cài đặt Grafana:

sudo apt-get update
sudo apt-get -y install grafana

Enable service grafana:

sudo systemctl enable grafana-server

Start service grafana:

sudo systemctl start grafana-server
sudo systemctl status grafana-server

Truy cập vào dashboard grafana <public_ip:3000>:

admin:admin

Thêm DataSource mới:

Chọn Prometheus:

Nhập url của prometheus:

Tiếp đến import DashBoard dùng cho prometheus 1860:

Chọn prometheus của datasource vừa tạo :

Kết quả đạt được:

Cài đặt nginx chạy ứng dụng reactjs

Cài đặt nginx:

sudo apt update
sudo apt install nginx

Khởi động Nginx và đảm bảo Nginx tự khởi động cùng hệ thống:

sudo systemctl start nginx
sudo systemctl enable nginx

Chạy nginx thành công:

Pull code của 1 project reactjs về:

git clone https://github.com/HoangPhan10/Tetris-v2.git

Tải các dependency:

npm i

Build project:

npm run build

Copy các tệp build vào thư mục Nginx:

 sudo cp -r build/* /var/www/html

Khởi động lại nginx:

sudo systemctl restart nginx

Install Loki binary

Download binary:

cd /usr/local/bin
curl -O -L "https://github.com/grafana/loki/releases/download/v3.4.1/loki-linux-amd64.zip"

Cài đặt unzip:

apt install unzip

Giải nén file:

unzip loki-linux-amd64.zip

Tải file cấu hình Loki:

wget https://raw.githubusercontent.com/grafana/loki/refs/heads/main/cmd/loki/loki-local-config.yaml

Tạo user chạy service Loki:

useradd --system loki

Tạo file loki.service:

vim /etc/systemd/system/loki.service
[Unit]
Description=Loki service
After=network.target

[Service]
Type=simple
User=loki
ExecStart=/usr/local/bin/loki-linux-amd64 -config.file /usr/local/bin/loki-local-config.yaml

[Install]
WantedBy=multi-user.target

Start và kiểm tra trạng thái service Loki:

service loki start
service loki status
systemctl enable loki.service

Install Promtail Binary

Download binary:

cd /usr/local/bin
curl -O -L "https://github.com/grafana/loki/releases/download/v3.4.1/promtail-linux-amd64.zip"

Giải nén file zip:

Copy

unzip "promtail-linux-amd64.zip"

Tải cấu hình Promtail:

wget https://raw.githubusercontent.com/grafana/loki/refs/heads/main/clients/cmd/promtail/promtail-local-config.yaml

Chỉnh cấu hình để theo dõi log của nginx:

Tạo user chạy service Promtail:

useradd --system promtail

Tạo file promtail.service:

vim /etc/systemd/system/promtail.service
[Unit]
Description=Promtail service
After=network.target

[Service]
Type=simple
User=promtail
ExecStart=/usr/local/bin/promtail-linux-amd64 -config.file /usr/local/bin/promtail-local-config.yaml

[Install]
WantedBy=multi-user.target

Start và kiểm tra trạng thái service Loki:

service promtail start
service promtail status
systemctl enable promtail.service

Hiện tại thì user promtail đang thuộc group promtail vì thế sẽ không có quyền đọc các logs của hệ thống.

Thêm user promtail vào group adm:

usermod -a -G adm promtail

Khởi động lại Promtail và kiểm tra trạng thái:

service promtail restart
service promtail status

Create Dashboard Loki

Thêm data source loki:

Nhập connection:

Chọn Explore rồi chọn vào Loki:

Truy vấn trên Grafana:

Hiện thị log:

0
Subscribe to my newsletter

Read articles from Phan Văn Hoàng directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Phan Văn Hoàng
Phan Văn Hoàng