리눅스
우분투에서 apt 패키지 매니저를 사용하여 최신 버전의 Grafana와 Loki를 설치하는 방법
변군이글루
2024. 10. 31. 23:14
반응형
우분투에서 apt 패키지 매니저를 사용하여 최신 버전의 Grafana와 Loki를 설치하는 방법
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
sudo usermod -aG syslog promtail
Promtail 서비스 재시작
sudo systemctl restart promtail
Loki, Promtail 서비스 재시작
sudo systemctl restart loki promtail
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를 선택하여 실시간 로그를 확인할 수 있습니다.
- Dashboards > New Dashboard를 통해 Loki 데이터 소스를 기반으로 다양한 로그 데이터를 시각화하는 대시보드를 구성할 수 있습니다.
Grafana 대시보드에서 Loki를 사용하여 로그 데이터를 시각화할 수 있습니다.
참고URL
- Loki Github : Releases page
- Grafana Labs : Download page
- Grafana Github : Releases page
728x90
반응형