Grafana Loki 구성
이 가이드는 로그를 수집하도록 Loki를 구성하는 방법과 Milvus 클러스터에 대한 로그를 쿼리하고 표시하도록 Grafana를 구성하는 방법에 대한 지침을 제공합니다.
이 가이드에서는 다음과 같은 방법을 배웁니다:
참고로 Promtail은 더 이상 사용되지 않습니다. 따라서 Grafana Labs에서 공식적으로 제안한 새로운 에이전트로서 Kubernetes 로그를 수집하여 Loki로 전달할 수 있는 Alloy를 소개합니다.
전제 조건
- K8에 Milvus 클러스터를 설치했습니다.
- Helm과 Kubectl을 포함한 필요한 도구를 설치했습니다.
Loki 배포
Loki는 Prometheus에서 영감을 얻은 로그 집계 시스템이다. 헬름을 사용하여 Milvus 클러스터에서 로그를 수집하기 위해 Loki를 배포합니다.
1. Grafana의 헬름 차트 리포지토리 추가하기
헬름에 Grafana의 차트 리포지토리를 추가하고 업데이트한다:
helm repo add grafana https://grafana.github.io/helm-charts
helm repo update
2. 로키용 오브젝트 스토리지 구성
다음 스토리지 옵션 중 하나를 선택하고 loki.yaml 구성 파일을 생성합니다:
옵션 1: 스토리지에 MinIO 사용
loki: commonConfig: replication_factor: 1 auth_enabled: false minio: enabled: true옵션 2: 스토리지에 AWS S3 사용
다음 예제에서는
<accessKey>및<keyId>을 자신의 S3 액세스 키 및 ID로,s3.endpoint을 S3 엔드포인트로,s3.region을 S3 리전으로 바꿉니다.loki: commonConfig: replication_factor: 1 auth_enabled: false storage: bucketNames: chunks: loki-chunks ruler: loki-ruler admin: loki-admin type: 's3' s3: endpoint: s3.us-west-2.amazonaws.com region: us-west-2 secretAccessKey: <accessKey> accessKeyId: <keyId>
3. Loki 설치
다음 명령을 실행하여 Loki를 설치합니다:
kubectl create ns loki
helm install --values loki.yaml loki grafana/loki -n loki
Alloy 배포
Alloy 구성이 표시됩니다.
1. Alloy 구성 생성
다음 alloy.yaml 을 사용하여 모든 Kubernetes 파드의 로그를 수집하고 loki-gateway를 통해 Loki로 전송합니다:
alloy:
enableReporting: false
resources: {}
configMap:
create: true
content: |-
loki.write "default" {
endpoint {
url = "http://loki-gateway/loki/api/v1/push"
}
}
discovery.kubernetes "pod" {
role = "pod"
}
loki.source.kubernetes "pod_logs" {
targets = discovery.relabel.pod_logs.output
forward_to = [loki.write.default.receiver]
}
// Rewrite the label set to make log query easier
discovery.relabel "pod_logs" {
targets = discovery.kubernetes.pod.targets
rule {
source_labels = ["__meta_kubernetes_namespace"]
action = "replace"
target_label = "namespace"
}
// "pod" <- "__meta_kubernetes_pod_name"
rule {
source_labels = ["__meta_kubernetes_pod_name"]
action = "replace"
target_label = "pod"
}
// "container" <- "__meta_kubernetes_pod_container_name"
rule {
source_labels = ["__meta_kubernetes_pod_container_name"]
action = "replace"
target_label = "container"
}
// "app" <- "__meta_kubernetes_pod_label_app_kubernetes_io_name"
rule {
source_labels = ["__meta_kubernetes_pod_label_app_kubernetes_io_name"]
action = "replace"
target_label = "app"
}
// "job" <- "__meta_kubernetes_namespace", "__meta_kubernetes_pod_container_name"
rule {
source_labels = ["__meta_kubernetes_namespace", "__meta_kubernetes_pod_container_name"]
action = "replace"
target_label = "job"
separator = "/"
replacement = "$1"
}
// L"__path__" <- "__meta_kubernetes_pod_uid", "__meta_kubernetes_pod_container_name"
rule {
source_labels = ["__meta_kubernetes_pod_uid", "__meta_kubernetes_pod_container_name"]
action = "replace"
target_label = "__path__"
separator = "/"
replacement = "/var/log/pods/*$1/*.log"
}
// "container_runtime" <- "__meta_kubernetes_pod_container_id"
rule {
source_labels = ["__meta_kubernetes_pod_container_id"]
action = "replace"
target_label = "container_runtime"
regex = "^(\\S+):\\/\\/.+$"
replacement = "$1"
}
}
2. Alloy 설치
helm install --values alloy.yaml alloy grafana/alloy -n loki
Grafana로 로그 쿼리
Grafana를 배포하고 로그 쿼리를 위해 Loki에 연결하도록 구성합니다.
1. Grafana 배포
다음 명령을 사용하여 Grafana를 설치합니다:
kubectl create ns monitoring
helm install my-grafana grafana/grafana --namespace monitoring
Grafana에 액세스하려면 먼저 admin 비밀번호를 검색해야 합니다:
kubectl get secret --namespace monitoring my-grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo
그런 다음 로컬 머신에 Grafana 포트를 전달합니다:
export POD_NAME=$(kubectl get pods --namespace monitoring -l "app.kubernetes.io/name=grafana,app.kubernetes.io/instance=my-grafana" -o jsonpath="{.items[0].metadata.name}")
kubectl --namespace monitoring port-forward $POD_NAME 3000
2. Grafana에서 Loki를 데이터 소스로 추가하기
Grafana가 실행되면 로그를 쿼리하기 위해 Loki를 데이터 소스로 추가해야 합니다.
- 웹 브라우저를 열고
127.0.0.1:3000로 이동합니다.admin이라는 사용자 아이디와 앞서 얻은 비밀번호를 사용하여 로그인합니다. - 왼쪽 메뉴에서 연결 > 새 연결 추가를 선택합니다.
- 표시되는 페이지에서 데이터 소스 유형으로 Loki를 선택합니다. 검색창에 loki를 입력하여 데이터 소스를 찾을 수 있습니다.
- Loki 데이터 소스 설정에서 이름과 URL을 지정한 다음 저장 및 테스트를 클릭합니다.
데이터 소스
3. Milvus 로그 쿼리
Loki를 데이터 소스로 추가한 후, Grafana에서 Milvus 로그를 쿼리합니다:
- 왼쪽 메뉴에서 탐색을 클릭합니다.
- 페이지의 왼쪽 상단 모서리에서 loki 데이터 소스를 선택합니다.
- 레이블 브라우저를 사용하여 레이블을 선택하고 로그를 쿼리합니다.
쿼리