Tanka
원본: https://grafana.com/docs/loki/latest/setup/install/tanka/ (opens in a new tab)
Grafana Cloud를 사용하면 자체 Grafana Loki 인스턴스를 설치, 유지 관리 및 확장할 필요가 없습니다. 무료 계정을 만들어 시작 (opens in a new tab)하세요. 여기에는 10k 메트릭, 50GB 로그, 50GB 추적, 500VUh k6 테스트 등에 대한 영구 무료 액세스가 포함됩니다.
Tanka (opens in a new tab)는 Ksonnet이 더 이상 사용되지 않게 된 후 Grafana Labs에서 만든 Ksonnet (opens in a new tab)의 재구현입니다. Tanka는 Grafana Labs에서 프로덕션 환경에서 Grafana Loki를 실행하는 데 사용됩니다.
Tanka 설치는 마이크로서비스 모드로 Loki 클러스터를 실행합니다.
전제 조건
tk env
명령을 사용하려면 최신 버전의 Tanka(버전 v0.31.0 이상)를 설치하세요. Tanka용 미리 빌드된 바이너리는 Tanka 릴리스 URL (opens in a new tab)에서 찾을 수 있습니다.
구성 리포지토리에서 Tanka 애플리케이션이 없는 경우 폴더를 만들고 그 안에서 tk init
를 호출합니다. 그런 다음 Loki용 환경을 만들고 배포할 쿠버네티스 API 서버의 URL(예: https://localhost:6443
)을 제공합니다.
mkdir <application name>
cd <application name>
tk init
tk env add environments/loki --namespace=loki --server=<Kubernetes API server>
jsonnet-bundler
(jb
)를 설치하고, Tanka의 설치 문서 (opens in a new tab)에서 플랫폼에 맞는 지침을 찾으세요.
배포
jb
(버전 v0.6.0 이상)를 사용하여 Loki 및 Promtail 모듈을 다운로드하고 설치합니다.
jb init # `tk init`를 이미 실행한 경우에는 필요하지 않습니다.
jb install github.com/grafana/loki/production/ksonnet/loki@main
jb install github.com/grafana/loki/production/ksonnet/promtail@main
environments/loki/main.jsonnet
의 YAML 내용을 수정하여 다음 변수를 업데이트합니다.
username
,password
및 관련htpasswd
변수 값을 업데이트합니다.- 객체 저장소 유형에 따라 S3 또는 GCS 변수 값을 업데이트합니다. 자세한 구성 내용은 storage_config를 참조하세요.
- 설정에 포함되지 않은 S3 또는 GCS 객체 저장소 변수를 구성에서 제거합니다.
- Promtail 구성
container_root_path
변수의 값을 Docker 데몬의 루트 경로를 반영하도록 업데이트합니다.docker info | grep "Root Dir"
를 실행하여 루트 경로를 확인합니다. - Loki
schema_config
섹션의from
값을 현재 날짜보다 14일 이전으로 설정합니다.from
날짜는schema_config
섹션이 유효한 첫날을 나타냅니다. 예를 들어 오늘이2021-01-15
이면from
을2021-01-01
로 설정합니다. 이 권장 사항은 Loki가 기본적으로 최대 14일 전의 로그 라인을 허용하는 것을 기반으로 합니다.reject_old_samples_max_age
구성 변수는 허용 범위를 제어합니다.
local gateway = import 'loki/gateway.libsonnet';
local loki = import 'loki/loki.libsonnet';
local promtail = import 'promtail/promtail.libsonnet';
loki + promtail + gateway {
_config+:: {
namespace: 'loki',
htpasswd_contents: 'loki:$apr1$H4yGiGNg$ssl5/NymaGFRUvxIV1Nyr.',
// S3 variables -- Remove if not using s3
storage_backend: 's3,dynamodb',
s3_access_key: 'key',
s3_secret_access_key: 'secret access key',
s3_address: 'url',
s3_bucket_name: 'loki-test',
dynamodb_region: 'region',
// GCS variables -- Remove if not using gcs
storage_backend: 'bigtable,gcs',
bigtable_instance: 'instance',
bigtable_project: 'project',
gcs_bucket_name: 'bucket',
//Update the object_store and from fields
loki+: {
schema_config: {
configs: [
{
from: 'YYYY-MM-DD',
store: 'boltdb-shipper',
object_store: 'my-object-storage-backend-type',
schema: 'v11',
index: {
prefix: '%s_index_' % $._config.table_prefix,
period: '%dh' % $._config.index_period_hours,
},
},
],
},
},
//Update the container_root_path if necessary
promtail_config+: {
clients: [
{
scheme:: 'http',
hostname:: 'gateway.%(namespace)s.svc' % $._config,
username:: 'loki',
password:: 'password',
container_root_path:: '/var/lib/docker',
},
],
},
replication_factor: 3,
consul_replicas: 1,
},
}
tk show environments/loki
를 실행하여 클러스터에 배포될 매니페스트를 확인합니다. tk apply environments/loki
를 실행하여 매니페스트를 배포합니다. 클러스터에서 환경을 삭제하려면 tk delete environments/loki
를 실행합니다.