본문 바로가기

리눅스

[draft] 우분투에서 Promtail을 설치하고 설정하는 방법

728x90

우분투에서 Promtail을 설치하고 설정하는 방법

Promtail

  • 역할 : 로그 수집 에이전트.
  • 기능 : Promtail은 Loki에 로그를 전송하는 역할을 하며 로그 파일을 모니터링하고 이를 Loki에 전송합니다. Promtail은 다양한 로그 소스(예: 파일, 시스템 로그 등)에서 로그를 수집하고 수집된 로그에 레이블을 추가하여 Loki에 전달합니다.

1. Promtail 사용자 생성

sudo useradd --system --no-create-home --shell /usr/sbin/nologin promtail
sudo usermod -aG syslog promtail

2. Promtail 설치

Grafana Loki 버전 정보

PROMTAIL_VERSION=$(curl -fsSL https://api.github.com/repos/grafana/loki/releases/latest | grep '"tag_name"' | cut -d '"' -f 4 | sed 's/^v//')
echo $PROMTAIL_VERSION

Promtail 바이너리 다운로드

PROMTAIL_VERSION="3.2.1"
sudo mkdir -p /usr/local/bin /etc/promtail
curl -O -fsSL "https://github.com/grafana/loki/releases/download/v${PROMTAIL_VERSION}/promtail-linux-$(dpkg --print-architecture).zip"

압축 해제

unzip promtail-linux-amd64.zip

실행 권한 부여

chmod +x promtail-linux-amd64
sudo mv promtail-linux-amd64 /usr/local/bin/promtail

3. Promtail 설정

Promtail 설정 파일 다운로드 및 편집

sudo mkdir -p /etc/promtail
curl -O https://raw.githubusercontent.com/grafana/loki/main/clients/cmd/promtail/promtail-local-config.yaml
sudo mv promtail-local-config.yaml /etc/promtail/config.yml
vim /etc/promtail/config.yml

또는

sudo tee /etc/promtail/config.yml > /dev/null <<EOF
server:
  http_listen_port: 9080

clients:
  - url: http://localhost:3100/loki/api/v1/push

positions:
  filename: /var/lib/promtail/positions.yaml

scrape_configs:
  - job_name: system
    static_configs:
      - targets:
          - localhost
        labels:
          job: varlogs
          __path__: /var/log/*.log
          server_name: server2
EOF

4. Promtail 서비스 등록

Promtail 시스템 서비스 구성

vim /etc/systemd/system/promtail.service
sudo tee /etc/systemd/system/promtail.service > /dev/null <<EOF
[Unit]
Description=Promtail service
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=promtail
ExecStart=/usr/local/bin/promtail -config.file /etc/promtail/config.yml
TimeoutSec=60
Restart=on-failure
RestartSec=2

[Install]
WantedBy=multi-user.target
EOF

Promtail 서비스 시작 및 자동 시작 설정

sudo systemctl daemon-reload
sudo systemctl enable --now promtail
sudo systemctl restart promtail

5. Promtail 상태 확인

sudo systemctl status promtail

또는

sudo systemctl status promtail --no-pager

6. Promtail 로그 및 시스템 로그 확인

Promtail의 최근 로그를 확인할 수 있습니다.

sudo journalctl -u promtail -f

7. Promtail을 자동으로 설치하고 구성하는 스크립트

vim install_promtail.sh
#!/bin/bash

# Promtail 버전 설정
PROMTAIL_VERSION="3.2.1"

# unzip 설치
if ! command -v unzip &>/dev/null; then
  echo "Installing unzip..."
  sudo apt update && sudo apt install -y unzip
fi

# Promtail 사용자 생성
if ! id "promtail" &>/dev/null; then
  sudo useradd --system --no-create-home --shell /usr/sbin/nologin promtail
fi

# Promtail 바이너리 다운로드
if ! curl -O -fsSL "https://github.com/grafana/loki/releases/download/v${PROMTAIL_VERSION}/promtail-linux-amd64.zip"; then
  echo "Promtail 다운로드에 실패했습니다."
  exit 1
fi

# Promtail 설치
if [[ -f "promtail-linux-amd64.zip" ]]; then
  unzip -o promtail-linux-amd64.zip
  chmod +x promtail-linux-amd64
  sudo mv promtail-linux-amd64 /usr/local/bin/promtail
  rm promtail-linux-amd64.zip
else
  echo "다운로드된 파일이 존재하지 않습니다."
  exit 1
fi

# 필요한 디렉터리 생성
sudo mkdir -p /etc/promtail /var/lib/promtail

# Promtail 설정 파일 생성 (이미 있는 경우 덮어쓰지 않음)
if [[ ! -f /etc/promtail/config.yml ]]; then
  sudo tee /etc/promtail/config.yml > /dev/null <<EOF
server:
  http_listen_port: 9080

clients:
  - url: http://localhost:3100/loki/api/v1/push

positions:
  filename: /var/lib/promtail/positions.yaml

scrape_configs:
  - job_name: system
    static_configs:
      - targets:
          - localhost
        labels:
          job: varlogs
          __path__: /var/log/*.log
          server_name: server2
EOF
fi

# Promtail 서비스 파일 생성 (이미 있는 경우 덮어쓰지 않음)
if [[ ! -f /etc/systemd/system/promtail.service ]]; then
  sudo tee /etc/systemd/system/promtail.service > /dev/null <<EOF
[Unit]
Description=Promtail service
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=promtail
ExecStart=/usr/local/bin/promtail -config.file /etc/promtail/config.yml
TimeoutSec=60
Restart=on-failure
RestartSec=2

[Install]
WantedBy=multi-user.target
EOF
fi

# systemd 데몬 갱신 및 Promtail 서비스 시작
sudo systemctl daemon-reload
sudo systemctl enable --now promtail

# Promtail 서비스 재시작
sudo systemctl restart promtail
chmod +x install_promtail.sh
bash install_promtail.sh

 

Promtail이 정상적으로 실행되면 Loki에 로그가 전송됩니다.

 

728x90