انتقل إلى المحتوى الرئيسي

الفصل 11.2 - إدارة السجلات

أهداف التعلم​

في نهاية هذا الفصل، ستكون قادرًا على:

  • فهم إدارة السجلات في Kubernetes
  • استخدام kubectl لعرض السجلات
  • توحيد السجلات باستخدام EFK/Loki
  • تكوين Fluentd/Fluent Bit
  • تحليل السجلات باستخدام Kibana/Grafana
  • تنفيذ تدوير السجلات

مقدمة​

السجلات ضرورية لتصحيح الأخطاء والمراقبة. في Kubernetes، تُدار السجلات على مستوى الحاويات ويجب توحيدها لتحليل فعال.


السجلات باستخدام kubectl​

عرض سجلات Pod​

# سجلات Pod
kubectl logs my-pod

# سجلات حاوية معينة
kubectl logs my-pod -c my-container

# سجلات جميع الحاويات
kubectl logs my-pod --all-containers=true

# سجلات مع المتابعة (البث)
kubectl logs -f my-pod

# السجلات السابقة (إذا تم إعادة تشغيل Pod)
kubectl logs my-pod --previous

# سجلات مع الطابع الزمني
kubectl logs my-pod --timestamps

# تحديد عدد الأسطر
kubectl logs my-pod --tail=100

# سجلات منذ تاريخ معين
kubectl logs my-pod --since=1h

سجلات لعدة Pods​

# سجلات جميع Pods مع تسمية
kubectl logs -l app=my-app

# سجلات Deployment
kubectl logs deployment/my-app

# سجلات StatefulSet
kubectl logs statefulset/my-app

توحيد السجلات​

EFK Stack (Elasticsearch, Fluentd, Kibana)​

الهيكلية:

  • Fluentd: يجمع ويرسل السجلات
  • Elasticsearch: يخزن السجلات
  • Kibana: يعرض ويبحث في السجلات

Loki Stack (Loki, Grafana)​

الهيكلية:

  • Fluent Bit: يجمع السجلات
  • Loki: يخزن السجلات (مثل Prometheus للسجلات)
  • Grafana: يعرض السجلات

تثبيت EFK Stack​

عبر Helm​

# إضافة المستودع
helm repo add elastic https://helm.elastic.co
helm repo update

# تثبيت Elasticsearch
helm install elasticsearch elastic/elasticsearch \
--namespace logging \
--create-namespace

# تثبيت Fluentd
helm install fluentd fluent/fluentd \
--namespace logging

# تثبيت Kibana
helm install kibana elastic/kibana \
--namespace logging

تكوين Fluentd​

DaemonSet Fluentd​

apiVersion: apps/v1
kind: DaemonSet
metadata:
name: fluentd
namespace: logging
spec:
selector:
matchLabels:
app: fluentd
template:
metadata:
labels:
app: fluentd
spec:
containers:
- name: fluentd
image: fluent/fluentd-kubernetes-daemonset:v1-debian-elasticsearch
env:
- name: FLUENT_ELASTICSEARCH_HOST
value: "elasticsearch.logging.svc.cluster.local"
- name: FLUENT_ELASTICSEARCH_PORT
value: "9200"
volumeMounts:
- name: varlog
mountPath: /var/log
- name: varlibdockercontainers
mountPath: /var/lib/docker/containers
readOnly: true
volumes:
- name: varlog
hostPath:
path: /var/log
- name: varlibdockercontainers
hostPath:
path: /var/lib/docker/containers

تثبيت Loki Stack​

عبر Helm​

# إضافة المستودع
helm repo add grafana https://grafana.github.io/helm-charts
helm repo update

# تثبيت Loki
helm install loki grafana/loki-stack \
--namespace logging \
--create-namespace

تكوين Fluent Bit​

apiVersion: v1
kind: ConfigMap
metadata:
name: fluent-bit-config
namespace: logging
data:
fluent-bit.conf: |
[SERVICE]
Flush 1
Log_Level info

[INPUT]
Name tail
Path /var/log/containers/*.log
Parser docker
Tag kube.*
Refresh_Interval 5

[OUTPUT]
Name loki
Match kube.*
Host loki.logging.svc.cluster.local
Port 3100
Labels job=fluentbit

التحليل باستخدام Kibana​

الوصول​

# Port-forward
kubectl port-forward -n logging svc/kibana-kibana 5601:5601

البحث في السجلات​

Kibana Query Language (KQL):

kubernetes.namespace: "production" AND level: "error"

Lucene:

kubernetes.namespace:production AND level:error

التحليل باستخدام Grafana​

الوصول​

# Port-forward
kubectl port-forward -n logging svc/loki-grafana 3000:80

LogQL (Loki Query Language)​

# سجلات namespace
{namespace="production"}

# سجلات مع أخطاء
{namespace="production"} |= "error"

# معدل السجلات في الثانية
rate({namespace="production"}[5m])

أفضل الممارسات​

1. التوحيد​

توحيد جميع السجلات في نظام واحد.

2. التدوير​

تكوين تدوير السجلات لتجنب استنفاد التخزين.

3. الفهرسة​

فهرسة السجلات للبحث السريع.

4. الاحتفاظ​

تحديد سياسة احتفاظ مناسبة.

5. التحليل​

تحليل السجلات المهيكلة (JSON) لتحسين البحث.


ملخص​

في هذا الفصل، تعلمت:

kubectl logs: عرض سجلات الـ Pods
التوحيد: EFK Stack أو Loki Stack
Fluentd/Fluent Bit: جمع السجلات
Elasticsearch: تخزين وبحث
Loki: تخزين خفيف للسجلات
Kibana/Grafana: تصور وتحليل
أفضل الممارسات: التوحيد، التدوير، الفهرسة، الاحتفاظ


الخطوات التالية​

الفصل 11.3: التنبيه
الفصل 11.4: التتبع الموزع
المختبر 11.3: تكوين السجلات


تم إنشاء الفصل في: ديسمبر 2024