Grafana 공식 stable APT repository와 signed-by keyring을 사전 구성하고 공식 fingerprint를 사람이 검증한 기록
LOG OBSERVABILITY
Loki·Grafana Alloy 로그 수집 구성
소규모 내부·PoC 단일 노드 Loki에 TSDB·filesystem 보존을 구성하고 Grafana Alloy로 journal·파일 로그를 최소 권한 수집해 Grafana Explore까지 검증합니다.BEFORE YOU START
시작 전에 준비하세요
승인된 Loki·Alloy·Grafana 정확한 버전과 별도 로그 disk의 용량·IOPS·backup·복구 기준
filesystem은 소규모 내부·PoC 단일 노드에만 사용하며 HA·지원 운영은 object storage와 공식 deployment로 전환하는 승인
수집 허용 로그 경로와 개인정보·secret redaction 정책
Loki 3100을 외부 공개하지 않는 사설망 또는 인증 TLS reverse proxy 설계
권장 대상 서버 로그를 사설 Loki에 수집하며 민감정보·보존·디스크·접근 통제를 책임지는 운영자
FOLLOW THE RECIPE
8단계 구성·점검 레시피
로그량·disk·기존 agent 확인
일일 ingest·보존 기간·label cardinality와 기존 Promtail/agent 충돌을 확인합니다.
cat /etc/os-release
uname -m
free -h
df -hT / /var/lib/loki /var/lib/alloy 2>/dev/nullsystemctl status loki.service alloy.service grafana-server.service --no-pager -l || truesudo ss -lntp | grep -E ':(3100|12345|3000)\b' || truesudo find <APPROVED_LOG_ROOT> -maxdepth 2 -type f -printf '%m %u:%g %s %p
' | head -100- 일일 ingest×보존과 compaction 여유 disk를 산정했습니다.
- 수집 대상과 제외할 secret·개인정보를 승인했습니다.
- 기존 agent의 positions 소유권을 확인했습니다.
filesystem backend는 disk-full에 따라 자동 삭제하지 않으므로 용량 계획이 없으면 중단합니다.
공급망·backup·노출을 사전 점검합니다.
공급망·backup·노출·이전 service 상태 점검
설치·설정·시작 전에 Grafana 공식 repository, Loki checksum, 기존 rollback 대상과 세 service의 이전 상태를 0600 증거로 보존합니다.
sudo stat -Lc '%a %U:%G %n' /etc/loki/config.yaml /etc/systemd/system/loki.service /etc/alloy/config.alloy /etc/default/alloy /etc/grafana/grafana.ini /etc/grafana/provisioning/datasources/loki.yaml 2>/dev/null || truesudo install -d -o root -g root -m 0700 <APPROVED_BACKUP_DIR>
{ printf 'loki.enabled='; systemctl is-enabled loki.service || true; printf 'loki.active='; systemctl is-active loki.service || true; printf 'alloy.enabled='; systemctl is-enabled alloy.service || true; printf 'alloy.active='; systemctl is-active alloy.service || true; printf 'grafana.enabled='; systemctl is-enabled grafana-server.service || true; printf 'grafana.active='; systemctl is-active grafana-server.service || true; } | sudo tee <APPROVED_BACKUP_DIR>/service-state.before >/dev/null
sudo chmod 0600 <APPROVED_BACKUP_DIR>/service-state.before
sudo cat <APPROVED_BACKUP_DIR>/service-state.before이 명령은 변경 전 한 번만 실행합니다. rollback에서는 파일을 읽기만 하며 덮어쓰지 않습니다.sudo du -sh /var/lib/loki /var/lib/alloy /var/lib/grafana 2>/dev/null || truesudo ufw status verbose- service-state.before가 config·package 변경 전에 생성됐고 0600입니다.
- 공식 checksum·repository key를 변경 기록에 남겼습니다.
- 기존 Loki data·Grafana DB의 일관된 backup 소유자를 확인했습니다.
- 3100·12345·3000은 인터넷에 직접 공개하지 않습니다.
backup이나 disk 여유가 없거나 로그 민감도 분류가 끝나지 않았으면 설치하지 않습니다.
0700 작업공간에서 package를 검증합니다.
고정 Loki·Alloy package 설치
공식 자산과 서명 repository만 사용하고 버전을 정확히 고정합니다.
umask 077
mktemp -d -p /var/tmp haru-loki.XXXXXXXX출력 경로를 <LOKI_WORK_DIR>에 그대로 대입합니다.stat -Lc '%a %U:%G %n' <LOKI_WORK_DIR>
curl -fL -o <LOKI_WORK_DIR>/loki.zip https://github.com/grafana/loki/releases/download/v<APPROVED_LOKI_VERSION>/loki-linux-<LOKI_ARCH>.zip
printf '%s %s
' '<APPROVED_LOKI_SHA256>' '<LOKI_WORK_DIR>/loki.zip' | sha256sum --check --strictunzip -q <LOKI_WORK_DIR>/loki.zip -d <LOKI_WORK_DIR>/loki
sudo install -o root -g root -m 0755 <LOKI_WORK_DIR>/loki/loki-linux-<LOKI_ARCH> /usr/local/bin/loki
/usr/local/bin/loki --versionsudo apt update
apt-cache policy alloy grafana
sudo apt install alloy=<APPROVED_ALLOY_PACKAGE_VERSION> grafana=<APPROVED_GRAFANA_PACKAGE_VERSION>- Loki SHA-256·version·architecture가 승인값입니다.
- Alloy·Grafana는 공식 signed-by repository의 고정 package입니다.
- Promtail 신규 설치 대신 Alloy를 사용합니다.
Grafana 공식 stable APT repository와 signed-by key fingerprint를 사전 검증하지 않았거나 checksum·candidate가 승인값과 다르면 설치를 중단합니다.
기존 config를 조건부 백업하고 최소 권한으로 편집합니다.
Loki·Alloy·Grafana 설정 백업·편집
기존 파일만 no-clobber 백업하고 신규 파일은 변경 기록에 남깁니다. data와 component state는 지속 경로를 사용합니다.
getent passwd loki >/dev/null || sudo useradd --system --home /var/lib/loki --shell /usr/sbin/nologin loki
sudo install -d -o root -g loki -m 0750 /etc/loki
sudo install -d -o loki -g loki -m 0750 /var/lib/loki
sudo chown root:alloy /etc/alloy
sudo chmod 0750 /etc/alloy
sudo chown alloy:alloy /var/lib/alloy
sudo chmod 0750 /var/lib/alloy
id alloyif sudo test -f /etc/loki/config.yaml; then sudo cp --archive --no-clobber /etc/loki/config.yaml /etc/loki/config.yaml.<BACKUP_SUFFIX>; fi
if sudo test -f /etc/systemd/system/loki.service; then sudo cp --archive --no-clobber /etc/systemd/system/loki.service /etc/systemd/system/loki.service.<BACKUP_SUFFIX>; fi
if sudo test -f /etc/alloy/config.alloy; then sudo cp --archive --no-clobber /etc/alloy/config.alloy /etc/alloy/config.alloy.<BACKUP_SUFFIX>; fi
if sudo test -f /etc/default/alloy; then sudo cp --archive --no-clobber /etc/default/alloy /etc/default/alloy.<BACKUP_SUFFIX>; fi
if sudo test -f /etc/grafana/grafana.ini; then sudo cp --archive --no-clobber /etc/grafana/grafana.ini /etc/grafana/grafana.ini.<BACKUP_SUFFIX>; fi
if sudo test -f /etc/grafana/provisioning/datasources/loki.yaml; then sudo cp --archive --no-clobber /etc/grafana/provisioning/datasources/loki.yaml /etc/grafana/provisioning/datasources/loki.yaml.<BACKUP_SUFFIX>; fisudoedit /etc/loki/config.yaml
sudoedit /etc/systemd/system/loki.service
sudoedit /etc/alloy/config.alloy
sudoedit /etc/default/alloy
sudoedit /etc/grafana/grafana.ini
sudoedit /etc/grafana/provisioning/datasources/loki.yaml
sudo chown root:loki /etc/loki/config.yaml
sudo chmod 0640 /etc/loki/config.yaml
sudo chown root:alloy /etc/alloy/config.alloy
sudo chmod 0640 /etc/alloy/config.alloy
sudo chown root:root /etc/default/alloy
sudo chmod 0644 /etc/default/alloyauth_enabled: false
server:
http_listen_address: 127.0.0.1
http_listen_port: 3100
common:
path_prefix: /var/lib/loki
replication_factor: 1
ring:
kvstore:
store: inmemory
storage:
filesystem:
chunks_directory: /var/lib/loki/chunks
rules_directory: /var/lib/loki/rules
schema_config:
configs:
- from: <SCHEMA_START_DATE>
store: tsdb
object_store: filesystem
schema: v13
index:
prefix: index_
period: 24h
limits_config:
retention_period: <APPROVED_RETENTION>
compactor:
working_directory: /var/lib/loki/compactor
retention_enabled: true
delete_request_store: filesystem단일 tenant·loopback 예시입니다. 다중 사용자 또는 네트워크 접근은 auth_enabled와 인증 reverse proxy를 별도로 설계합니다.[Unit]
Description=Grafana Loki
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=loki
Group=loki
ExecStart=/usr/local/bin/loki -config.file=/etc/loki/config.yaml
Restart=on-failure
RestartSec=10s
NoNewPrivileges=true
PrivateTmp=true
ProtectSystem=strict
ProtectHome=true
ReadWritePaths=/var/lib/loki
UMask=0027
[Install]
WantedBy=multi-user.targetLoki HTTP listen은 config.yaml에서 127.0.0.1:3100으로 고정합니다.loki.source.journal "system" {
max_age = "24h"
forward_to = [loki.write.local.receiver]
}
local.file_match "approved" {
path_targets = [{ __path__ = "<APPROVED_LOG_GLOB>", job = "<APP_LABEL>" }]
}
loki.source.file "approved" {
targets = local.file_match.approved.targets
forward_to = [loki.write.local.receiver]
}
loki.write "local" {
endpoint { url = "http://127.0.0.1:3100/loki/api/v1/push" }
}수집 전에 secret·개인정보를 application에서 redaction하며 파일 접근은 광범위한 group 대신 ACL로 제한합니다.CONFIG_FILE="/etc/alloy/config.alloy"
CUSTOM_ARGS="--server.http.listen-addr=127.0.0.1:12345"
RESTART_ON_UPGRADE=trueDebian·Ubuntu 공식 package는 /etc/default/alloy의 CUSTOM_ARGS를 service run 명령에 전달합니다.[server]
protocol = http
http_addr = 127.0.0.1
http_port = 3000
[auth.anonymous]
enabled = false외부 제공 시에는 인증된 HTTPS reverse proxy를 별도로 구성합니다. admin credential을 이 파일에 넣지 않습니다.apiVersion: 1
datasources:
- name: Loki
type: loki
access: proxy
url: http://127.0.0.1:3100
editable: falseGrafana와 Loki가 같은 host일 때의 loopback 예시이며 query API path를 URL 뒤에 붙이지 않습니다.- 기존 파일은 백업했고 원본이 없던 파일은 신규 생성으로 기록했습니다.
- <SCHEMA_START_DATE>는 오늘 또는 이전 과거 날짜여서 active period가 됩니다.
- Loki data·Compactor marker와 Alloy component state는 지속 disk입니다.
- Alloy CUSTOM_ARGS는 127.0.0.1:12345를 명시합니다.
- Alloy는 adm·systemd-journal membership 또는 정확한 파일 ACL만 사용합니다.
- 로그 label에 사용자 ID·request ID 같은 무제한 값을 넣지 않습니다.
비밀이 config literal에 있거나 world-readable이면 시작하지 않습니다.
config 예시를 검증하고 services를 순차 시작합니다.
문법 검증 후 순차 시작
Loki config, Alloy component graph, Grafana provisioning을 검증한 뒤 backend부터 시작합니다.
sudo systemd-analyze verify /etc/systemd/system/loki.service/usr/local/bin/loki -config.file=/etc/loki/config.yaml -verify-configsudo -u alloy /usr/bin/alloy validate /etc/alloy/config.alloy
grep -Fx 'CUSTOM_ARGS="--server.http.listen-addr=127.0.0.1:12345"' /etc/default/alloy
grep -Eq '^http_addr[[:space:]]*=[[:space:]]*127\.0\.0\.1$' /etc/grafana/grafana.ini
grep -A2 '^\[auth.anonymous\]' /etc/grafana/grafana.ini | grep -Eq 'enabled[[:space:]]*=[[:space:]]*false'
systemctl cat alloy.service | grep -F 'EnvironmentFile'sudo systemctl daemon-reload
sudo systemctl enable --now loki.service
curl -fsS http://127.0.0.1:3100/ready
sudo systemctl enable --now alloy.service grafana-server.servicessh -N -L 33000:127.0.0.1:3000 <ADMIN_USER>@<SERVER_HOST>관리자 workstation에서 실행해 https가 아닌 local tunnel http://127.0.0.1:33000으로 접속하고 UI에서 즉시 admin 암호를 변경합니다. 완료 전 외부 reverse proxy와 공개 ingress를 연결하지 않습니다.systemctl status loki.service alloy.service grafana-server.service --no-pager -l
sudo ss -lntp | grep -E '127.0.0.1:(3100|12345|3000)\b'- Loki /ready가 성공한 뒤 Alloy를 시작했습니다.
- 세 service가 비 root 계정으로 active입니다.
- 3100·12345·3000은 명시적으로 loopback입니다.
- Grafana anonymous access가 disabled이고 SSH local port-forward UI에서 초기 admin 암호를 변경했습니다.
검증 실패나 permission denied면 권한을 넓히지 말고 정확한 파일 ACL과 service User를 확인합니다.
canary 로그·query·보존·disk를 검증합니다.
수집·query·보존·disk 검증
민감하지 않은 고유 canary를 승인 로그에 남기고 Grafana Explore와 Loki query에서 한 번만 확인합니다.
curl -fsS http://127.0.0.1:3100/ready
curl -fsS http://127.0.0.1:12345/-/readyjournalctl -u loki.service -u alloy.service --since '-15 min' --no-pagersudo du -sh /var/lib/loki /var/lib/alloy
sudo stat -Lc '%a %U:%G %n' /etc/alloy /etc/alloy/config.alloy /var/lib/alloy
id alloy
curl -fsS http://127.0.0.1:12345/metrics | grep -E 'loki_source|loki_write' | head -30Alloy storage.path의 component state는 구현 세부 파일명을 가정하지 않고 UI·metrics·재시작 후 중복 여부로 검증합니다.curl -fsS http://127.0.0.1:3000/api/health- canary가 한 번 수집되고 재시작 뒤 중복 폭증이 없습니다.
- Compactor가 실행되고 retention·delete request store 오류가 없습니다.
- Alloy 계정은 adm·systemd-journal membership 또는 승인 로그의 정확한 ACL을 가집니다.
- disk 증가율과 20% 이상 여유 경보가 있습니다.
- Grafana Explore query와 datasource health가 성공합니다.
Alloy component state를 삭제하면 재수집될 수 있고 retention 변경은 기존 로그에 소급되지 않습니다.
인증·TLS·권한·민감 로그를 점검합니다.
인증·TLS·권한·민감정보 점검
Loki에는 내장 인증 계층이 없으므로 loopback을 유지하거나 인증 TLS reverse proxy를 둡니다.
sudo ss -lntp | grep -E ':(3100|12345|3000)\b'
sudo ufw status verbosesudo stat -Lc '%a %U:%G %n' /etc/loki/config.yaml /var/lib/loki /etc/alloy/config.alloy /var/lib/alloyid loki
id alloy
systemctl show loki.service alloy.service -p User -p Group- Loki·Alloy admin endpoint는 loopback 또는 인증 TLS proxy 뒤에 있습니다.
- TLS 인증서 검증을 끄지 않고 multi-tenant이면 X-Scope-OrgID를 신뢰 proxy가 덮어씁니다.
- Alloy는 root가 아니며 journal/파일에 최소 ACL만 가집니다.
- token·cookie·Authorization·개인정보는 ingest 전에 제거합니다.
- filesystem backend와 Compactor marker를 함께 backup·restore 시험합니다.
- <...> 자리표시자는 승인된 리터럴 값으로 직접 치환하며 외부 입력으로 shell 명령을 조립하거나 eval하지 않습니다.
public 3100, 무인증 proxy, world-readable config, 무제한 retention이면 운영 투입을 중단합니다.
config 복원과 신규 설치 격리를 분리합니다.
A 기존 복원 또는 B 신규 격리 중 하나만 선택
precheck에서 저장한 0600 service-state.before를 읽어 A의 이전 상태를 복구합니다. A와 B는 상호배타이며 같은 변경 흐름에서 둘 다 실행하지 않습니다.
sudo test -r <APPROVED_BACKUP_DIR>/service-state.before
sudo stat -Lc '%a %U:%G %n' <APPROVED_BACKUP_DIR>/service-state.before
sudo cat <APPROVED_BACKUP_DIR>/service-state.before
sudo sha256sum /etc/loki/config.yaml /etc/systemd/system/loki.service /etc/alloy/config.alloy /etc/default/alloy /etc/grafana/grafana.ini /etc/grafana/provisioning/datasources/loki.yamlrollback에서는 service-state.before를 덮어쓰거나 다시 생성하지 않습니다.sudo test -r <APPROVED_BACKUP_DIR>/service-state.before || exit 1
sudo systemctl stop alloy.service loki.service grafana-server.service
if sudo test -f /etc/loki/config.yaml.<BACKUP_SUFFIX>; then sudo cp --archive /etc/loki/config.yaml.<BACKUP_SUFFIX> /etc/loki/config.yaml; fi
if sudo test -f /etc/systemd/system/loki.service.<BACKUP_SUFFIX>; then sudo cp --archive /etc/systemd/system/loki.service.<BACKUP_SUFFIX> /etc/systemd/system/loki.service; fi
if sudo test -f /etc/alloy/config.alloy.<BACKUP_SUFFIX>; then sudo cp --archive /etc/alloy/config.alloy.<BACKUP_SUFFIX> /etc/alloy/config.alloy; fi
if sudo test -f /etc/default/alloy.<BACKUP_SUFFIX>; then sudo cp --archive /etc/default/alloy.<BACKUP_SUFFIX> /etc/default/alloy; fi
if sudo test -f /etc/grafana/grafana.ini.<BACKUP_SUFFIX>; then sudo cp --archive /etc/grafana/grafana.ini.<BACKUP_SUFFIX> /etc/grafana/grafana.ini; fi
if sudo test -f /etc/grafana/provisioning/datasources/loki.yaml.<BACKUP_SUFFIX>; then sudo cp --archive /etc/grafana/provisioning/datasources/loki.yaml.<BACKUP_SUFFIX> /etc/grafana/provisioning/datasources/loki.yaml; fi
sudo systemctl daemon-reload
if sudo grep -Fxq 'loki.enabled=enabled' <APPROVED_BACKUP_DIR>/service-state.before; then sudo systemctl enable loki.service; else sudo systemctl disable loki.service; fi
if sudo grep -Fxq 'alloy.enabled=enabled' <APPROVED_BACKUP_DIR>/service-state.before; then sudo systemctl enable alloy.service; else sudo systemctl disable alloy.service; fi
if sudo grep -Fxq 'grafana.enabled=enabled' <APPROVED_BACKUP_DIR>/service-state.before; then sudo systemctl enable grafana-server.service; else sudo systemctl disable grafana-server.service; fi
if sudo grep -Fxq 'loki.active=active' <APPROVED_BACKUP_DIR>/service-state.before; then sudo systemctl start loki.service; else sudo systemctl stop loki.service; fi
if sudo grep -Fxq 'alloy.active=active' <APPROVED_BACKUP_DIR>/service-state.before; then sudo systemctl start alloy.service; else sudo systemctl stop alloy.service; fi
if sudo grep -Fxq 'grafana.active=active' <APPROVED_BACKUP_DIR>/service-state.before; then sudo systemctl start grafana-server.service; else sudo systemctl stop grafana-server.service; fi고정 문자열만 검사하며 파일 값을 명령으로 실행하거나 eval하지 않습니다. 기존 설치에서만 선택하고 B를 실행하지 않습니다.sudo systemctl disable --now alloy.service loki.service grafana-server.service
sudo install -d -o root -g root -m 0700 <APPROVED_QUARANTINE_DIR>
if ! sudo test -f /etc/loki/config.yaml.<BACKUP_SUFFIX> && sudo test -f /etc/loki/config.yaml; then sudo mv --no-clobber /etc/loki/config.yaml <APPROVED_QUARANTINE_DIR>/loki-config.yaml.new; fi
if ! sudo test -f /etc/systemd/system/loki.service.<BACKUP_SUFFIX> && sudo test -f /etc/systemd/system/loki.service; then sudo mv --no-clobber /etc/systemd/system/loki.service <APPROVED_QUARANTINE_DIR>/loki.service.new; fi
if ! sudo test -f /etc/alloy/config.alloy.<BACKUP_SUFFIX> && sudo test -f /etc/alloy/config.alloy; then sudo mv --no-clobber /etc/alloy/config.alloy <APPROVED_QUARANTINE_DIR>/alloy-config.alloy.new; fi
if ! sudo test -f /etc/default/alloy.<BACKUP_SUFFIX> && sudo test -f /etc/default/alloy; then sudo mv --no-clobber /etc/default/alloy <APPROVED_QUARANTINE_DIR>/alloy.default.new; fi
if ! sudo test -f /etc/grafana/grafana.ini.<BACKUP_SUFFIX> && sudo test -f /etc/grafana/grafana.ini; then sudo mv --no-clobber /etc/grafana/grafana.ini <APPROVED_QUARANTINE_DIR>/grafana.ini.new; fi
if ! sudo test -f /etc/grafana/provisioning/datasources/loki.yaml.<BACKUP_SUFFIX> && sudo test -f /etc/grafana/provisioning/datasources/loki.yaml; then sudo mv --no-clobber /etc/grafana/provisioning/datasources/loki.yaml <APPROVED_QUARANTINE_DIR>/grafana-loki.yaml.new; fi
sudo systemctl daemon-reload신규 설치 변경 기록과 대상별 backup 부재가 확인될 때만 선택합니다. A를 실행했다면 B를 실행하지 않으며 package·data를 purge하지 않습니다.systemctl is-enabled loki.service alloy.service grafana-server.service || true
systemctl is-active loki.service alloy.service grafana-server.service || true- A 또는 B 하나만 선택했다고 기록했습니다.
- A는 precheck snapshot의 이전 enabled·active 상태를 실제 복원했습니다.
- B는 각 backup 부재가 확인된 신규 파일만 격리했습니다.
- rollback에서 service-state.before를 덮어쓰지 않았습니다.
filesystem chunk를 직접 삭제하지 않습니다.
선택 branch·이전/최종 service 상태를 기록합니다.
SECURITY CHECK
운영 전 마지막 보안 점검
- Loki 3100과 Alloy 12345는 loopback 또는 인증 TLS proxy 뒤에 둡니다.
- Loki에는 내장 인증 계층이 없다는 전제로 접근을 통제합니다.
- Alloy 전용 계정에 journal 또는 승인 로그 ACL만 부여합니다.
- 민감정보는 ingest 전에 redaction하고 label cardinality를 제한합니다.
- Compactor retention·delete_request_store와 지속 marker disk를 함께 구성합니다.
- package·config·data rollback을 분리하고 purge하지 않습니다.
- <...> 자리표시자는 승인된 리터럴 값으로 직접 치환하며 외부 입력으로 shell 명령을 조립하거나 eval하지 않습니다.
COMMON ERRORS
자주 막히는 지점
Alloy permission denied
- 증상
- journal 또는 파일 로그를 읽지 못합니다.
- 가능한 원인
- alloy 계정의 journal group 또는 대상 경로 ACL이 없습니다.
- 확인 순서
- 전체 권한을 열지 말고 공식 권한 가이드에 따라 필요한 경로만 ACL로 허용합니다.
Loki disk 급증
- 증상
- filesystem data가 디스크를 채웁니다.
- 가능한 원인
- retention 비활성·Compactor 오류·고카디널리티·ingest 증가일 수 있습니다.
- 확인 순서
- Compactor와 증가율을 확인하고 chunk를 직접 삭제하지 않습니다.
no org id
- 증상
- Loki API가 401 no org id를 반환합니다.
- 가능한 원인
- multi-tenant 모드에서 X-Scope-OrgID가 없거나 신뢰 proxy가 설정하지 않았습니다.
- 확인 순서
- 인증 reverse proxy가 인증 주체에서 tenant header를 덮어쓰게 하고 client 입력을 그대로 신뢰하지 않습니다.
PRIMARY REFERENCES
공식 문서
- Grafana Loki · Install Loki
- Grafana Loki · Storage
- Grafana Loki · Filesystem object store 한계
- Grafana Loki · Log retention
- Grafana Loki · Manage authentication
- Grafana Alloy · Install on Linux
- Grafana Alloy · Linux service 환경과 CUSTOM_ARGS
- Grafana Alloy · Linux access and permissions
- Grafana Alloy · Logs and relabeling basics
- Grafana · Configure the Loki data source
- Grafana · Debian/Ubuntu 공식 APT repository 설치
설치 저장소와 지원 버전은 바뀔 수 있습니다. 검토일 이후에는 링크된 공식 문서와 현재 서버의 패키지 후보 버전을 함께 확인하세요.