אסוף והעבר יומני Kubernetes של DigitalOcean (DOKS) ל-OpenSearch מנוהל של DigitalOcean

הקדמה

הדרכה הזו מראה איך לאסוף ולהעביר לוגים ממערכת DigitalOcean Kubernetes (DOKS) לאינスטANCE DigitalOcean Managed OpenSearch בעזרת AxoSyslog, מעבד מידע בטיחות סקאלבלי. על ידי עיצוב הדרך הזו, תלמדו איך להגדיר מערכת לוגים עמידה של ריסוק וניתוח לוגים מיישמים קוברנטים שלכם, שיאפשר לכם להשגיח, לתיקון ולהגן בתשתית שלכם.

בהדרכה זו, תשתמשו ב AxoSyslog כדי להעביר לוגים מקובלת עמידות מערכת קוברנטים ל OpenSearch.

דרישות

לפני שיתחילו, ודאו שיש לכם את הדרישות הבאות במערכת:

  1. תצטרך גישה ל-חשבון DigitalOcean Cloud כדי ליצור ולנהל את משאבי Kubernetes ו-OpenSearch שלך.
  2. כלי ממשק שורת הפקודה של DigitalOcean (CLI), doctl, צריך להיות מותקן ומוגדר במחשב המקומי שלך.
  3. אשכול DigitalOcean Kubernetes (DOKS) פועל.
  4. מנהלי החבילות של Kubernetes, Helm, צריכים להיות מותקנים כדי לנהל את היישומים של Kubernetes.
  5. היכרות עם Kubernetes, Helm, ושירותי הניהול של DigitalOcean.

מקרה שימוש

פרויקט זה אידיאלי לתסריטים שבהם אתה זקוק לפתרון ריכוזי לרישום כדי לפקח ולנתח יומנים מיישומים שונים הפועלים באשכול Kubernetes. בין אם אתה מנהל קבוצה קטנה של יישומים או תשתית בקנה מידה גדול, איסוף והעברת יומנים לאשכול OpenSearch ייעודי מסייע ב:

  • מעקב בטחון: זיהוי ותגובה להתרחשויות בריונים על-ידי ניתוח לוגים בזמן-אמת.
  • בדיקה מסבר: זיהוי מהיר ופתרון בעיות בין היישומים שלך בקובניטס באמצעות גישה ללוגים פרטניים.
  • החלטת הדברים: שמירה על לוג של אירועים עבור הדרך האיגודית.

על-ידי השלמת AxoSyslog עם DigitalOcean Managed OpenSearch, אתה יכול לעבד ולאחסן ביעילות מספרים גדולים של לוגים, מה שיקל לך להוציא מחשבות יקרות ולשמור על הבריאות והבטחון של המערכות שלך.

שלב 1 – יצירת קבוצת OpenSearch

בשלב זה, תיצרו את הרכב היסוד של מערכת הלוגים שלך, קבוצת OpenSearch. OpenSearch יהיה היעד לכל הלוגים שאתה אוספ מקובצת הקובניטס שלך. תיצירו מקבץ חדש OpenSearch באזור הבחר שלך בDigitalOcean על-ידי ביצוע הפקודה הבאה.

doctl databases create opensearch-doks --engine opensearch --region lon1 --size db-s-1vcpu-2gb --num-nodes 1

חליפו lon1 עם אזור הבחר שלך. כדי לרשום את הגודלים הזמינים, ביקור במדריך המידע הראשי של ה API.

שלב 2 – ייצרו כמה רגילות אחרונות

לפני שידור הרגילות לOpenSearch, צריך לקבל רגילות בהן לעבוד. אם לא יש לך אפליקציה שמייצרת רגילות בתוך קבוצת הכוחות שלך, השלב הזה יראה לך איך להשתמש בגרף Helm כדי להדביק מערכת הרגילות. מערכת הרגילות הזו תייצר זרם יציב של רגילות דוגמאות שנוכל להשתמש בהן לבדיקה ולדגמה של העריצה הרגילה שלך.

ראשית, תוספו את האחסן העריצות של הגרף Helm ות装置 את המערכת הרגילות:

helm repo add kube-logging https://kube-logging.github.io/helm-charts
helm repo update

אחר כך, תשתמש בHelm כדי להתקין את המערכת הרגילות:

helm install --generate-name --wait kube-logging/log-generator

ניתן לבדוק שהמערכת הרגילות פועלת על ידי צפייה ברגילות שהיא מייצרת:

kubectl logs -l app.kubernetes.io/name=log-generator

שלב 3 – הכנה AxoSyslog Collector ל装置

בשלב זה, תסווג את AxoSyslog Collector, שאחראי לאספת הרגילות מקבוצת הכוחות שלך ולשדרגן אותן אל אופנסיסearch. זה מגיע על ידי ספקת פרטים החיבור הנכונים לקבוצת הOpenSearch שלך (שם המחשב, המשתמש, והסיסמה).

אנחנו נהשתמש בhelm כדי להתקין AxoSyslog Collector ולהעביר ערכים מותאמים אישית.

על מנת להגדיר את משדר ה AxoSyslog עם הכתובת הנכונה, המשתמש וסיסמתם לבסיס הנתונים שלך של OpenSearch, בואו אחר הצעדים הבאים:

סקript אוטומטי

על מנת לשיפור את ההגדרה הפשוטה, תוכל להשתמש בסקript אוטומטי שלך שלובסט את הפרטים הנחוצים לקישור לבסיס הנתונים של OpenSearch ועודד את הקונפיגורציית ה AxoSyslog שלך.

שמה את הסקript הבא בשם update_axoflow_demo.sh:

update_axoflow_demo.sh
#!/bin/bash

# שלב מעבדת הנתונים עבור opensearch-doks
DB_ID=$(doctl databases list --format Name,ID --no-header | grep opensearch-doks | awk '{print $2}')

# שלב מקבלת שמות המחשב, המשתמשים והסיסמאות
OPENSEARCHHOSTNAME=$(doctl databases connection $DB_ID --no-header --format Host)
OPENSEARCHUSERNAME=$(doctl databases connection $DB_ID --no-header --format User)
OPENSEARCHPASSWORD=$(doctl databases connection $DB_ID --no-header --format Password)

# עדכון הקונפיגורציית axoflow-demo.yaml עם הערכים הנשלטים בעזרת yq
yq eval ".config.destinations.opensearch[0].address = \"$OPENSEARCHHOSTNAME\"" -i axoflow-demo.yaml
yq eval ".config.destinations.opensearch[0].user = \"$OPENSEARCHUSERNAME\"" -i axoflow-demo.yaml
yq eval ".config.destinations.opensearch[0].password = \"$OPENSEARCHPASSWORD\"" -i axoflow-demo.yaml

echo "axoflow-demo.yaml has been updated."

ודא שיש לך הרשאה לביצוע על הסקript לפני שירוןו:

chmod +x update_axoflow_demo.sh && ./update_axoflow_demo.sh

הסקript הזה ישלב את המידע הנחוצה מחשבך של DigitalOcean בעזרת doctl ויעדכן את הקונפיגורציית axoflow-demo.yaml בהתאמה.

שלבים ידניים לעדכון axoflow-demo.yaml

אם אתה מעדיף להגדיר את משדר ה AxoSyslog בצורה ידנית, בואו אחר הצעדים הבאים:

רץ את הפקודה הבאה כדי לשלב את מעבדת הנתונים ל opensearch-doks:

doctl databases list --format Name,ID --no-header | grep opensearch-doks | awk '{print $2}'

כדי לקבל את שמות המחשבים, השם המשתמש והסיסמה, בודקות את הפקטים הבאים באופן מקביל:

doctl databases connection <id> --no-header --format Host
doctl databases connection <id> --no-header --format User
doctl databases connection <id> --no-header --format Password

עכשיו, עליך לעדכן ישורת הaxoflow-demo.yaml באופן ידני:

פתח את הקובץ axoflow-demo.yaml במערכת עורכת טקסט והחלף את השדות הרלוונטיים עם הערכים הנוצרים:

axoflow-demo.yaml
config:
  sources:
    kubernetes:
      # אספק לוגים של kubernetes
      enabled: true
  destinations:
    # שלח לוגים אל OpenSearch
    opensearch:
      - address: "x.k.db.ondigitalocean.com"
        index: "doks-demo"
        user: "doadmin"
        password: "AVNS_x"
        tls:
          # אסור לוגים את סמכות המסמך TLS של השרת.
          peerVerify: false
        # שלח את שדות syslog + המידע מ .k8s.* בעלות JSON
        template: "$(format-json --scope rfc5424 --exclude DATE --key ISODATE @timestamp=${ISODATE} k8s=$(format-json .k8s.* --shift-levels 2 --exclude .k8s.log))"

שלב 4 – התקנה AxoSyslog-collector

אחרי שהתבצעת את ההגדרות, השלב הבא הוא להכניס את משדר הלוגים AxoSyslog לקבוצת הקובעים הקיימת שלך. זה יאפשר את אספקת הלוגים והעברתם אל על ידי OpenSearch.

הוסף את המאגר הלוגי AxoSyslog והתקנה את משדר הלוגים AxoSyslog בעזרת קובץ ההגדרות המותאם:

helm repo add AxoSyslog https://axoflow.github.io/AxoSyslog-charts
helm repo update
helm install AxoSyslog -f axoflow-demo.yaml AxoSyslog/AxoSyslog-collector --wait

כדי לוודא שהלוגים מושלכים לפתח ה OpenSearch הנכון, עדכנו את ההגדרות של משדר הלוגים AxoSyslog על ידי עדכון את הconfigmap שלך:

kubectl get configmap AxoSyslog-AxoSyslog-collector -o yaml | sed 's/9200\/_bulk/25060\/_bulk/' | kubectl apply -f -

לבסוף, מחק את הפודים הקיימים כדי ליישם את ההגדרות העדכונות:

kubectl delete pods -l app=AxoSyslog-AxoSyslog-collector

סיכום

הגדרת תהליך רשמים מ-DigitalOcean Kubernetes אל OpenSearch בעזרת AxoSyslog אינה רק מרכזת את הרשמים שלך אלא גם משנה את היכולת שלך לנטרל, אנליזה ואבטחת את היישומים שלך. עם השלבים המסוגלים בהוראה הזו, אתה יכול להשתמש בהם להדביק מהירות את הפתרון הזה, ולהשיג יותר בהינתן מבט עמוק בסביבת ה-Kubernetes שלך ולהבטיח שהתשתית שלך תישאר מוגנת ומורגנת לפי הדירוגים.

Source:
https://www.digitalocean.com/community/tutorials/collect-and-forward-kubernetes-logs-to-opensearch