본문 바로가기

리눅스

[draft] 우분투에서 apt 패키지 매니저를 사용하여 최신 버전의 Grafana와 Loki를 설치하는 방법

728x90

우분투에서 apt 패키지 매니저를 사용하여 최신 버전의 Grafana와 Loki를 설치하는 방법

출처-https://cdn.maily.so/yt0ck357o4tynptrp65fa41k87k7

Grafana : 데이터 시각화 도구로 다양한 데이터 소스를 시각화하여 대시보드를 생성합니다.

Loki : 로그 수집 및 저장 시스템으로 로그 데이터를 수집하여 Grafana와 통합합니다.

Promtail : Loki에 로그를 전송하는 에이전트로 로그 파일을 모니터링하고 수집합니다.

1. 시스템 패키지 업데이트

시스템의 패키지 목록을 업데이트합니다.

sudo apt update
sudo apt install -y software-properties-common apt-transport-https
sudo apt install -y adduser libfontconfig1 musl

2. Grafana Loki GPG 키와 저장소 추가

sudo wget -q -O - https://apt.grafana.com/gpg.key | gpg --dearmor | sudo tee /etc/apt/keyrings/grafana.gpg > /dev/null
echo "deb [signed-by=/etc/apt/keyrings/grafana.gpg] https://apt.grafana.com stable main" | sudo tee /etc/apt/sources.list.d/grafana.list

3. Grafana 설치 및 설정

Grafana 설치

sudo apt update
sudo apt install -y grafana
$ grafana-cli -v
grafana version 11.3.0

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

sudo systemctl --now enable grafana-server
sudo systemctl restart grafana-server

Grafana 상태 확인

sudo systemctl status grafana-server

Grafana 설정 파일 편집

vim /etc/grafana/grafana.ini
#################################### Paths ####################################
[paths]
# Path to where grafana can store temp files, sessions, and the sqlite3 db (if that is used)
data = /var/lib/grafana

# Temporary files in `data` directory older than given duration will be removed
;temp_data_lifetime = 24h

# Directory where grafana can store logs
logs = /var/log/grafana

# Directory where grafana will automatically scan and look for plugins
plugins = /var/lib/grafana/plugins

# folder that contains provisioning config files that grafana will apply on startup and while running.
;provisioning = conf/provisioning

#################################### Server ####################################
[server]
# Protocol (http, https, h2, socket)
protocol = http

# Minimum TLS version allowed. By default, this value is empty. Accepted values are: TLS1.2, TLS1.3. If nothing is set TLS1.2 would be taken
;min_tls_version = ""

# The ip address to bind to, empty will bind to all interfaces
http_addr = 0.0.0.0

# The http port to use
http_port = 3000

4. Loki 설치 및 설정

Loki 설치

sudo apt update
sudo apt install -y loki
$ loki --version
loki, version 3.2.1 (branch: release-3.2.x, revision: 3c386cc5)
  build user:       root@2aa92412a4cf
  build date:       2024-10-17T17:59:30Z
  go version:       go1.22.6
  platform:         linux/amd64
  tags:             netgo

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

sudo mkdir -p /var/log/loki
sudo vim /etc/systemd/system/loki.service
[Unit]
Description=Loki service
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=loki
ExecStart=/usr/bin/loki -config.file /etc/loki/config.yml
# Give a reasonable amount of time for the server to start up/shut down
TimeoutSec = 120
Restart = on-failure
RestartSec = 2
StandardOutput=append:/var/log/loki/loki.log
StandardError=append:/var/log/loki/loki.log

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl --now enable loki
sudo systemctl restart loki

Loki 상태 확인

sudo systemctl status loki

Loki 설정 파일 편집

sudo vim /etc/loki/config.yml
더보기

---

cat /etc/loki/config.yml
auth_enabled: false

server:
  http_listen_port: 3100
  grpc_listen_port: 9096
  log_level: debug
  grpc_server_max_concurrent_streams: 1000

common:
  instance_addr: 127.0.0.1
  path_prefix: /tmp/loki
  storage:
    filesystem:
      chunks_directory: /tmp/loki/chunks
      rules_directory: /tmp/loki/rules
  replication_factor: 1
  ring:
    kvstore:
      store: inmemory

ingester_rf1:
  enabled: false

query_range:
  results_cache:
    cache:
      embedded_cache:
        enabled: true
        max_size_mb: 100

schema_config:
  configs:
    - from: 2020-10-24
      store: tsdb
      object_store: filesystem
      schema: v13
      index:
        prefix: index_
        period: 24h

pattern_ingester:
  enabled: true
  metric_aggregation:
    enabled: true
    loki_address: localhost:3100

ruler:
  alertmanager_url: http://localhost:9093

frontend:
  encoding: protobuf

# By default, Loki will send anonymous, but uniquely-identifiable usage and configuration
# analytics to Grafana Labs. These statistics are sent to https://stats.grafana.org/
#
# Statistics help us better understand how Loki is used, and they show us performance
# levels for most users. This helps us prioritize features and documentation.
# For more information on what's sent, look at
# https://github.com/grafana/loki/blob/main/pkg/analytics/stats.go
# Refer to the buildReport method to see what goes into a report.
#
# If you would like to disable reporting, uncomment the following lines:
#analytics:
#  reporting_enabled: false

---

5. Promtail 설치 및 설정

Promtail 설치

apt install -y promtail
$ promtail --version
promtail, version 3.2.1 (branch: release-3.2.x, revision: 3c386cc5)
  build user:       root@2aa92412a4cf
  build date:       2024-10-17T17:59:30Z
  go version:       go1.22.6
  platform:         linux/amd64
  tags:             promtail_journal_enabled

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

sudo systemctl --now enable promtail

Promtail 상태 확인

systemctl status promtail

Promtail 설정 파일 편집

vim /etc/promtail/config.yml
더보기

---

cat /etc/promtail/config.yml
# This minimal config scrape only single log file.
# Primarily used in rpm/deb packaging where promtail service can be started during system init process.
# And too much scraping during init process can overload the complete system.
# https://github.com/grafana/loki/issues/11398

server:
  http_listen_port: 9080
  grpc_listen_port: 0

positions:
  filename: /tmp/positions.yaml

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

scrape_configs:
- job_name: system
  static_configs:
  - targets:
      - localhost
    labels:
      job: varlogs
      #NOTE: Need to be modified to scrape any additional logs of the system.
      __path__: /var/log/messages

---

server:
  http_listen_port: 9080
  grpc_listen_port: 0

positions:
  filename: /tmp/positions.yaml

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

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

6. Grafana 접속 및 설정

브라우저에서 http://localhost:3000으로 접속하여 Grafana에 로그인합니다.

  • default : admin / admin
http://localhost:3000

Grafana와 Loki 연결

  • Connections > Data Sources로 이동합니다.
  • Add data source를 클릭하고 Loki를 선택합니다.
  • Loki의 URL (기본값: http://localhost:3100)을 입력하고 Save & Test를 클릭하여 연결을 확인합니다.

로그 데이터 시각화 및 대시보드 구성

  • Explore 메뉴에서 Loki를 선택하여 실시간 로그를 확인할 수 있습니다.

explore_loki

  • Dashboards > New Dashboard를 통해 Loki 데이터 소스를 기반으로 다양한 로그 데이터를 시각화하는 대시보드를 구성할 수 있습니다.

Grafana 대시보드에서 Loki를 사용하여 로그 데이터를 시각화할 수 있습니다.

 

참고URL

- Loki Github : Releases page

- Grafana Labs : Download page

- Grafana Github : Releases page

 

728x90