تكوين Grafana Loki
يوفر هذا الدليل إرشادات حول كيفية تكوين Loki لتجميع السجلات و Grafana للاستعلام عن السجلات وعرضها لمجموعة Milvus.
في هذا الدليل، سوف تتعلم كيفية:
- نشر Loki و Promtail على مجموعة Milvus باستخدام Helm.
- تكوين تخزين الكائنات ل Loki.
- الاستعلام عن السجلات باستخدام Grafana.
كمرجع، سيتم إهمال برومتيل، لذا سنقدم لك سبيكة، والتي تم اقتراحها رسميًا من قبل مختبرات Grafana باعتبارها الوكيل الجديد لجمع سجلات Kubernetes وإعادة توجيهها إلى Loki.
المتطلبات الأساسية
- لقد قمت بتثبيت مجموعة Milvus على K8s.
- قمت بتثبيت الأدوات اللازمة، بما في ذلك Helm و Kubectl.
نشر لوكي
لوكي هو نظام تجميع سجلات مستوحى من بروميثيوس. انشر Loki باستخدام Helm لجمع السجلات من مجموعة ميلفوس العنقودية.
1. إضافة مستودع المخططات البيانية لـ Grafana's Helm
أضف مستودع مخططات Grafana إلى Helm وقم بتحديثه:
helm repo add grafana https://grafana.github.io/helm-charts
helm repo update
2. تكوين تخزين الكائنات لـ Loki
اختر أحد خيارات التخزين التالية وأنشئ ملف تكوين loki.yaml:
الخيار 1: استخدام MinIO للتخزين
loki: commonConfig: replication_factor: 1 auth_enabled: false minio: enabled: trueالخيار 2: استخدام AWS S3 للتخزين
في المثال التالي، استبدل
<accessKey>و<keyId>بمفتاح ومعرف الوصول إلى S3 الخاص بك، و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
نشر السبيكة
سنعرض لك تكوين السبيكة.
1. إنشاء تكوين السبيكة
سوف نستخدم alloy.yaml التالي لجمع سجلات جميع كبسولات Kubernetes وإرسالها إلى Loki عبر loki-gate:
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. تثبيت السبيكة
helm install --values promtail.yaml promtail grafana/promtail -n loki
الاستعلام عن السجلات باستخدام Grafana
انشر Grafana وقم بتكوينه للاتصال بـ Loki للاستعلام عن السجلات.
1. نشر غرافانا
قم بتثبيت Grafana باستخدام الأوامر التالية:
kubectl create ns monitoring
helm install my-grafana grafana/grafana --namespace monitoring
قبل أن تتمكن من الوصول إلى جرافانا، تحتاج إلى استرداد كلمة المرور 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 كمصدر بيانات للاستعلام عن السجلات.
- افتح متصفح ويب وانتقل إلى
127.0.0.1:3000. قم بتسجيل الدخول باستخدام اسم المستخدمadminوكلمة المرور التي تم الحصول عليها مسبقًا. - في القائمة اليمنى، اختر اتصالات > إضافة اتصال جديد.
- في الصفحة التي تظهر، اختر Loki كنوع مصدر البيانات. يمكنك إدخال لوكي في شريط البحث للعثور على مصدر البيانات.
- في إعدادات مصدر بيانات Loki، حدد الاسم وعنوان URL، ثم انقر فوق حفظ واختبار.
مصدر البيانات
3. الاستعلام عن سجلات ميلفوس
بعد إضافة Loki كمصدر للبيانات، استعلم عن سجلات ميلفوس في غرافانا:
- في قائمة الجانب الأيسر، انقر فوق استكشاف.
- في الزاوية العلوية اليسرى من الصفحة، اختر مصدر بيانات لوكي.
- استخدم متصفح التسمية لتحديد التسميات والاستعلام عن السجلات.
استعلام