Mengkonfigurasi Grafana Loki
Panduan ini menyediakan instruksi tentang cara mengonfigurasi Loki untuk mengumpulkan log dan Grafana untuk menanyakan dan menampilkan log untuk cluster Milvus.
Dalam panduan ini, Anda akan mempelajari cara:
- Menerapkan Loki dan Alloy pada cluster Milvus menggunakan Helm.
- Mengonfigurasi penyimpanan objek untuk Loki.
- Melakukan kueri log menggunakan Grafana.
Sebagai referensi, Promtail akan ditinggalkan. Jadi, kami memperkenalkan Alloy, yang secara resmi disarankan oleh Grafana Labs sebagai agen baru untuk mengumpulkan log Kubernetes dan meneruskannya ke Loki.
Prasyarat
- Anda telah menginstal klaster Milvus pada K8.
- Anda telah menginstal alat yang diperlukan, termasuk Helm dan Kubectl.
Menerapkan Loki
Loki adalah sistem agregasi log yang terinspirasi oleh Prometheus. Terapkan Loki menggunakan Helm untuk mengumpulkan log dari cluster Milvus Anda.
1. Menambahkan Repositori Bagan Helm Grafana
Tambahkan repositori bagan Grafana ke Helm dan perbarui:
helm repo add grafana https://grafana.github.io/helm-charts
helm repo update
2. Mengonfigurasi Penyimpanan Objek untuk Loki
Pilih salah satu opsi penyimpanan berikut dan buat file konfigurasi loki.yaml:
Opsi 1: Menggunakan MinIO untuk penyimpanan
loki: commonConfig: replication_factor: 1 auth_enabled: false minio: enabled: trueOpsi 2: Menggunakan AWS S3 untuk penyimpanan
Pada contoh berikut, ganti
<accessKey>dan<keyId>dengan kunci akses dan ID S3 Anda sendiri,s3.endpointdengan titik akhir S3, dans3.regiondengan wilayah 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. Menginstal Loki
Jalankan perintah berikut untuk menginstal Loki:
kubectl create ns loki
helm install --values loki.yaml loki grafana/loki -n loki
Menyebarkan Paduan
Kami akan menunjukkan kepada Anda Konfigurasi Paduan.
1. Membuat Konfigurasi Paduan
Kita akan menggunakan alloy.yaml berikut ini untuk mengumpulkan log dari semua pod Kubernetes & mengirimkannya ke Loki melalui loki-gateway:
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. Instal Alloy
helm install --values alloy.yaml alloy grafana/alloy -n loki
Menanyakan Log dengan Grafana
Terapkan Grafana dan konfigurasikan agar terhubung ke Loki untuk log kueri.
1. Menyebarkan Grafana
Instal Grafana menggunakan perintah berikut:
kubectl create ns monitoring
helm install my-grafana grafana/grafana --namespace monitoring
Sebelum Anda dapat mengakses Grafana, Anda perlu mengambil kata sandi admin:
kubectl get secret --namespace monitoring my-grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo
Kemudian, teruskan porta Grafana ke mesin lokal Anda:
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. Menambahkan Loki sebagai Sumber Data di Grafana
Setelah Grafana berjalan, Anda perlu menambahkan Loki sebagai sumber data untuk menanyakan log.
- Buka peramban web dan arahkan ke
127.0.0.1:3000. Masuk menggunakan nama penggunaadmindan kata sandi yang telah Anda dapatkan sebelumnya. - Pada menu sebelah kiri, pilih Sambungan > Tambah sambungan baru.
- Pada halaman yang muncul, pilih Loki sebagai tipe sumber data. Anda dapat memasukkan loki pada kolom pencarian untuk menemukan sumber data.
- Di pengaturan sumber data Loki, tentukan Nama dan URL, lalu klik Simpan & uji.
Sumber Data
3. Menanyakan Log Milvus
Setelah menambahkan Loki sebagai sumber data, lakukan kueri log Milvus di Grafana:
- Pada menu sebelah kiri, klik Jelajahi.
- Di sudut kiri atas halaman, pilih sumber data Loki.
- Gunakan browser Label untuk memilih label dan menanyakan log.
Kueri