‫Elasticsearch מגרסה 7.9 ואילך

‫Elasticsearch הוא שרת חיפוש בקוד פתוח, שמבוסס על ספריית החיפוש Lucene. הוא פועל במכונה וירטואלית של Java על גבי מספר מערכות הפעלה. elasticsearch המקלט אוסף טלמטריה ברמת הצומת והאשכול ממופעי Elasticsearch.

מידע נוסף על Elasticsearch זמין במאמרי העזרה בנושא Elasticsearch 7.9 ואילך.

דרישות מוקדמות

כדי לאסוף טלמטריה של Elasticsearch, צריך להתקין את סוכן התפעול:

  • כדי להשתמש במדדים, צריך להתקין את גרסה 2.21.0 ואילך.
  • כדי לראות את היומנים, צריך להתקין את גרסה 2.9.0 ומעלה.

השילוב הזה תומך ב-Elasticsearch גרסה 7.9 ואילך.

הגדרת מופע Elasticsearch

אם מפעילים את תכונות האבטחה של Elasticsearch, צריך להגדיר משתמש עם הרשאת אשכול monitor או manage.

הגדרת סוכן תפעול ל-Elasticsearch

פועלים לפי ההוראות במדריך הגדרת Ops Agent, מוסיפים את הרכיבים הנדרשים לאיסוף נתוני טלמטריה ממופעי Elasticsearch ומפעילים מחדש את הסוכן.

הגדרה לדוגמה

הפקודות הבאות יוצרות את ההגדרה לאיסוף ולעיבוד של נתוני טלמטריה עבור Elasticsearch:

# Configures Ops Agent to collect telemetry from the app. You must restart the agent for the configuration to take effect.

set -e

# Check if the file exists
if [ ! -f /etc/google-cloud-ops-agent/config.yaml ]; then
  # Create the file if it doesn't exist.
  sudo mkdir -p /etc/google-cloud-ops-agent
  sudo touch /etc/google-cloud-ops-agent/config.yaml
fi

# Create a back up of the existing file so existing configurations are not lost.
sudo cp /etc/google-cloud-ops-agent/config.yaml /etc/google-cloud-ops-agent/config.yaml.bak

# Configure the Ops Agent.
sudo tee /etc/google-cloud-ops-agent/config.yaml > /dev/null << EOF
metrics:
  receivers:
    elasticsearch:
      type: elasticsearch
  service:
    pipelines:
      elasticsearch:
        receivers:
          - elasticsearch

logging:
  receivers:
    elasticsearch_json:
      type: elasticsearch_json
    elasticsearch_gc:
      type: elasticsearch_gc
  service:
    pipelines:
      elasticsearch:
        receivers:
          - elasticsearch_json
          - elasticsearch_gc
EOF

כדי שהשינויים האלה ייכנסו לתוקף, צריך להפעיל מחדש את Ops Agent:

Linux

  1. כדי להפעיל מחדש את הסוכן, מריצים את הפקודה הבאה במופע:
    sudo systemctl restart google-cloud-ops-agent
    
  2. כדי לוודא שהסוכן הופעל מחדש, מריצים את הפקודה הבאה ומוודאים שהרכיבים Metrics Agent ו-Logging Agent הופעלו:
    sudo systemctl status "google-cloud-ops-agent*"
    

Windows

  1. מתחברים למופע באמצעות RDP או כלי דומה ומתחברים ל-Windows.
  2. פותחים טרמינל ב-PowerShell עם הרשאות אדמין על ידי לחיצה ימנית על סמל PowerShell ובחירה באפשרות הפעלה כמנהל מערכת.
  3. כדי להפעיל מחדש את הסוכן, מריצים את פקודת PowerShell הבאה:
    Restart-Service google-cloud-ops-agent -Force
    
  4. כדי לוודא שהסוכן הופעל מחדש, מריצים את הפקודה הבאה ומוודאים שהרכיבים Metrics Agent ו-Logging Agent הופעלו:
    Get-Service google-cloud-ops-agent*
    

הגדרת איסוף יומנים

כדי להטמיע יומנים מ-Elasticsearch, צריך ליצור מקלט ליומנים ש-Elasticsearch מייצר, ואז ליצור צינור למקלט החדש.

כדי להגדיר מקלט ליומני elasticsearch_json, מציינים את השדות הבאים:

שדה ברירת מחדל תיאור
exclude_paths רשימה של תבניות נתיבים במערכת הקבצים שצריך להחריג מהקבוצה שתואמת ל-include_paths.
include_paths [/var/log/elasticsearch/*_server.json, /var/log/elasticsearch/*_deprecation.json, /var/log/elasticsearch/*_index_search_slowlog.json, /var/log/elasticsearch/*_index_indexing_slowlog.json, /var/log/elasticsearch/*_audit.json] רשימה של נתיבי מערכת קבצים לקריאה על ידי מעקב אחרי כל קובץ. אפשר להשתמש בתו כללי לחיפוש (*) בנתיבים.
record_log_file_path false אם הערך הוא true, הנתיב לקובץ הספציפי שממנו נלקחה רשומת היומן מופיע ברשומת היומן של הפלט כערך של התווית agent.googleapis.com/log_file_path. כשמשתמשים בתו כללי, רק הנתיב של הקובץ שממנו התקבל הרשומה מתועד.
type הערך חייב להיות elasticsearch_json.
wildcard_refresh_interval 60s המרווח שבו נתיבי קבצים עם תו כללי ב-include_paths מתעדכנים. הערך מוצג כמשך זמן, לדוגמה 30s או 2m. הנכס הזה יכול להיות שימושי כשקצב העברת הנתונים של הרישום גבוה, וקובצי היומן מתחלפים מהר יותר מהמרווח שמוגדר כברירת מחדל.

כדי להגדיר מקלט ליומני elasticsearch_gc, מציינים את השדות הבאים:

שדה ברירת מחדל תיאור
exclude_paths רשימה של תבניות נתיבים במערכת הקבצים שצריך להחריג מהקבוצה שתואמת ל-include_paths.
include_paths [/var/log/elasticsearch/gc.log] רשימה של נתיבי מערכת קבצים לקריאה על ידי מעקב אחרי כל קובץ. אפשר להשתמש בתו כללי לחיפוש (*) בנתיבים.
record_log_file_path false אם הערך הוא true, הנתיב לקובץ הספציפי שממנו נלקחה רשומת היומן מופיע ברשומת היומן של הפלט כערך של התווית agent.googleapis.com/log_file_path. כשמשתמשים בתו כללי, רק הנתיב של הקובץ שממנו התקבל הרשומה מתועד.
type הערך חייב להיות elasticsearch_gc.
wildcard_refresh_interval 60s המרווח שבו נתיבי קבצים עם תו כללי ב-include_paths מתעדכנים. הערך מוצג כמשך זמן, לדוגמה 30s או 2m. הנכס הזה יכול להיות שימושי כשקצב העברת הנתונים של הרישום גבוה, וקובצי היומן מתחלפים מהר יותר מהמרווח שמוגדר כברירת מחדל.

מה נרשם ביומן

הערך של logName נגזר ממזהי המקלט שצוינו בהגדרה. אלה השדות המפורטים שבתוך LogEntry:

יומני elasticsearch_json מכילים את השדות הבאים ב-LogEntry:

שדה סוג תיאור
jsonPayload.cluster מחרוזת האשכול שפולט את רשומת היומן
jsonPayload.cluster.name מחרוזת השם של האשכול שיוצר את רשומת היומן
jsonPayload.cluster.uuid מחרוזת המזהה הייחודי האוניברסלי (UUID) של האשכול שיוצר את רשומת היומן
jsonPayload.component מחרוזת הרכיב של Elasticsearch שהפיק את היומן
jsonPayload.level מחרוזת רמת רשומת היומן
jsonPayload.message מחרוזת הודעה ביומן
jsonPayload.node מחרוזת הצומת שפולט את רשומת היומן
jsonPayload.node.name מחרוזת השם של הצומת שפולט את רשומת היומן
jsonPayload.node.uuid מחרוזת המזהה הייחודי האוניברסלי (UUID) של הצומת שפולט את רשומת היומן
jsonPayload.type מחרוזת סוג היומן, שמציין מאיזה יומן הגיעה הרשומה (לדוגמה, server מציין שרשומת היומן הזו הגיעה מיומן השרת)
severity מחרוזת (LogSeverity) רמת רשומת היומן (מתורגמת).

יומני elasticsearch_gc מכילים את השדות הבאים ב-LogEntry:

שדה סוג תיאור
jsonPayload.gc_run מספר הפעלה של מנגנון איסוף הזבל
jsonPayload.message מחרוזת הודעה ביומן
jsonPayload.type מחרוזת סוג רשומת היומן
severity מחרוזת (LogSeverity) רמת רשומת היומן (מתורגמת).

הגדרת איסוף מדדים

כדי להטמיע מדדים מ-Elasticsearch, צריך ליצור מקלט למדדים ש-Elasticsearch מייצר, ואז ליצור צינור למקלט החדש.

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

כדי להגדיר נמען למדדים של elasticsearch, צריך לציין את השדות הבאים:

שדה ברירת מחדל תיאור
ca_file הנתיב לאישור CA. בתור לקוח, הוא מאמת את אישור השרת. אם העמודה ריקה, המקבל משתמש ב-CA הבסיסי של המערכת.
cert_file נתיב לאישור TLS לשימוש בחיבורים שנדרש בהם mTLS.
collection_interval 60s ערך של משך זמן, כמו 30s או 5m.
endpoint http://localhost:92002 כתובת ה-URL הבסיסית של Elasticsearch API בארכיטקטורת REST.
insecure true הגדרה שקובעת אם להשתמש בחיבור TLS מאובטח. אם המדיניות מוגדרת לערך false, פרוטוקול TLS מופעל.
insecure_skip_verify false ההגדרה קובעת אם לדלג על אימות האישור או לא. אם הערך של insecure הוא true, המערכת לא משתמשת בערך insecure_skip_verify.
key_file הנתיב למפתח ה-TLS שבו יש להשתמש לחיבורים שנדרש בהם mTLS.
password הסיסמה לאימות ב-Elasticsearch. חובה אם הערך של username מוגדר.
type הערך חייב להיות elasticsearch.
username שם המשתמש לאימות ב-Elasticsearch. חובה אם הערך של password מוגדר.

מה נבדק

בטבלה הבאה מפורטים המדדים שסוכן התפעול אוסף ממופע Elasticsearch.

סוג המדד 
סוג, סוג
משאבים במעקב
תוויות
workload.googleapis.com/elasticsearch.breaker.memory.estimated
GAUGEINT64
gce_instance
name
workload.googleapis.com/elasticsearch.breaker.memory.limit
GAUGEINT64
gce_instance
name
workload.googleapis.com/elasticsearch.breaker.tripped
CUMULATIVEINT64
gce_instance
name
workload.googleapis.com/elasticsearch.cluster.data_nodes
GAUGEINT64
gce_instance
 
workload.googleapis.com/elasticsearch.cluster.health
GAUGEINT64
gce_instance
status
workload.googleapis.com/elasticsearch.cluster.in_flight_fetch
GAUGEINT64
gce_instance
 
workload.googleapis.com/elasticsearch.cluster.nodes
GAUGEINT64
gce_instance
 
workload.googleapis.com/elasticsearch.cluster.pending_tasks
GAUGEINT64
gce_instance
 
workload.googleapis.com/elasticsearch.cluster.published_states.differences
GAUGEINT64
gce_instance
state
workload.googleapis.com/elasticsearch.cluster.published_states.full
GAUGEINT64
gce_instance
 
workload.googleapis.com/elasticsearch.cluster.shards
GAUGEINT64
gce_instance
state
workload.googleapis.com/elasticsearch.cluster.state_queue
GAUGEINT64
gce_instance
state
workload.googleapis.com/elasticsearch.cluster.state_update.count
CUMULATIVEINT64
gce_instance
state
workload.googleapis.com/elasticsearch.cluster.state_update.time
CUMULATIVEINT64
gce_instance
state
type
workload.googleapis.com/elasticsearch.indexing_pressure.memory.limit
GAUGEINT64
gce_instance
 
workload.googleapis.com/elasticsearch.indexing_pressure.memory.total.primary_rejections
CUMULATIVEINT64
gce_instance
 
workload.googleapis.com/elasticsearch.indexing_pressure.memory.total.replica_rejections
CUMULATIVEINT64
gce_instance
 
workload.googleapis.com/elasticsearch.memory.indexing_pressure
GAUGEINT64
gce_instance
stage
workload.googleapis.com/elasticsearch.node.cache.count
GAUGEINT64
gce_instance
type
workload.googleapis.com/elasticsearch.node.cache.evictions
CUMULATIVEINT64
gce_instance
cache_name
workload.googleapis.com/elasticsearch.node.cache.memory.usage
GAUGEINT64
gce_instance
cache_name
workload.googleapis.com/elasticsearch.node.cluster.connections
GAUGEINT64
gce_instance
 
workload.googleapis.com/elasticsearch.node.cluster.io
CUMULATIVEINT64
gce_instance
direction
workload.googleapis.com/elasticsearch.node.disk.io.read
GAUGEINT64
gce_instance
 
workload.googleapis.com/elasticsearch.node.disk.io.write
GAUGEINT64
gce_instance
 
workload.googleapis.com/elasticsearch.node.documents
GAUGEINT64
gce_instance
state
workload.googleapis.com/elasticsearch.node.fs.disk.available
GAUGEINT64
gce_instance
 
workload.googleapis.com/elasticsearch.node.fs.disk.free
GAUGEINT64
gce_instance
 
workload.googleapis.com/elasticsearch.node.fs.disk.total
GAUGEINT64
gce_instance
 
workload.googleapis.com/elasticsearch.node.http.connections
GAUGEINT64
gce_instance
 
workload.googleapis.com/elasticsearch.node.ingest.documents
CUMULATIVEINT64
gce_instance
 
workload.googleapis.com/elasticsearch.node.ingest.documents.current
GAUGEINT64
gce_instance
 
workload.googleapis.com/elasticsearch.node.ingest.operations.failed
CUMULATIVEINT64
gce_instance
 
workload.googleapis.com/elasticsearch.node.open_files
GAUGEINT64
gce_instance
 
workload.googleapis.com/elasticsearch.node.operations.completed
CUMULATIVEINT64
gce_instance
operation
workload.googleapis.com/elasticsearch.node.operations.time
CUMULATIVEINT64
gce_instance
operation
workload.googleapis.com/elasticsearch.node.pipeline.ingest.documents.current
GAUGEINT64
gce_instance
name
workload.googleapis.com/elasticsearch.node.pipeline.ingest.documents.preprocessed
GAUGEINT64
gce_instance
name
workload.googleapis.com/elasticsearch.node.pipeline.ingest.operations.failed
CUMULATIVEINT64
gce_instance
name
workload.googleapis.com/elasticsearch.node.script.cache_evictions
CUMULATIVEINT64
gce_instance
 
workload.googleapis.com/elasticsearch.node.script.compilation_limit_triggered
CUMULATIVEINT64
gce_instance
 
workload.googleapis.com/elasticsearch.node.script.compilations
GAUGEINT64
gce_instance
 
workload.googleapis.com/elasticsearch.node.shards.data_set.size
GAUGEINT64
gce_instance
 
workload.googleapis.com/elasticsearch.node.shards.reserved.size
GAUGEINT64
gce_instance
 
workload.googleapis.com/elasticsearch.node.shards.size
GAUGEINT64
gce_instance
 
workload.googleapis.com/elasticsearch.node.thread_pool.tasks.finished
CUMULATIVEINT64
gce_instance
state
thread_pool_name
workload.googleapis.com/elasticsearch.node.thread_pool.tasks.queued
GAUGEINT64
gce_instance
thread_pool_name
workload.googleapis.com/elasticsearch.node.thread_pool.threads
GAUGEINT64
gce_instance
state
thread_pool_name
workload.googleapis.com/elasticsearch.node.translog.operations
CUMULATIVEINT64
gce_instance
 
workload.googleapis.com/elasticsearch.node.translog.size
GAUGEINT64
gce_instance
 
workload.googleapis.com/elasticsearch.node.translog.uncommitted.size
GAUGEINT64
gce_instance
 
workload.googleapis.com/elasticsearch.os.cpu.load_avg.15m
GAUGEDOUBLE
gce_instance
 
workload.googleapis.com/elasticsearch.os.cpu.load_avg.1m
GAUGEDOUBLE
gce_instance
 
workload.googleapis.com/elasticsearch.os.cpu.load_avg.5m
GAUGEDOUBLE
gce_instance
 
workload.googleapis.com/elasticsearch.os.cpu.usage
GAUGEINT64
gce_instance
 
workload.googleapis.com/elasticsearch.os.memory
GAUGEINT64
gce_instance
state

אימות ההגדרה

בקטע הזה מוסבר איך לוודא שהגדרתם נכון את מקלט Elasticsearch. יכול להיות שיעברו דקה או שתיים עד שהסוכן של Ops יתחיל לאסוף נתוני טלמטריה.

כדי לוודא שיומני Elasticsearch נשלחים אל Cloud Logging:

  1. במסוף Google Cloud , נכנסים לדף Logs Explorer:

    כניסה אל Logs Explorer

    אם משתמשים בסרגל החיפוש כדי למצוא את הדף הזה, בוחרים בתוצאה שכותרת המשנה שלה היא Logging.

  2. מזינים את השאילתה הבאה בעורך ולוחצים על Run query:
    resource.type="gce_instance"
    (log_id("elasticsearch_json") OR log_id("elasticsearch_gc"))
    

כדי לוודא שהמדדים של Elasticsearch נשלחים ל-Cloud Monitoring:

  1. נכנסים לדף  Metrics explorer במסוף Google Cloud :

    כניסה אל Metrics Explorer

    אם משתמשים בסרגל החיפוש כדי למצוא את הדף הזה, בוחרים בתוצאה שבה הכותרת המשנית היא Monitoring.

  2. בסרגל הכלים של החלונית ליצירת שאילתות, לוחצים על הלחצן ששמו  PromQL.
  3. מזינים את השאילתה הבאה בעורך ולוחצים על Run query:
    {"workload.googleapis.com/elasticsearch.node.open_files", monitored_resource="gce_instance"}
    

צפייה בלוח הבקרה

כדי לראות את המדדים של Elasticsearch, צריך להגדיר תרשים או לוח בקרה. השילוב של Elasticsearch כולל לוח בקרה אחד או יותר. כל מרכזי הבקרה מותקנים אוטומטית אחרי שמגדירים את השילוב וסוכן Ops מתחיל לאסוף נתונים של מדדים.

אפשר גם לראות תצוגות מקדימות סטטיות של מרכזי בקרה בלי להתקין את השילוב.

כדי לראות מרכז בקרה שהותקן:

  1. במסוף Google Cloud , עוברים לדף  Dashboards:

    עוברים אל מרכזי בקרה.

    אם משתמשים בסרגל החיפוש כדי למצוא את הדף הזה, בוחרים בתוצאה שבה הכותרת המשנית היא Monitoring.

  2. לוחצים על הכרטיסייה רשימת לוחות הבקרה ואז בוחרים בקטגוריה שילובים.
  3. לוחצים על השם של מרכז הבקרה שרוצים להציג.

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

כדי לראות תצוגה מקדימה סטטית של מרכז הבקרה:

  1. נכנסים לדף  Integrations במסוף Google Cloud :

    עוברים אל שילובים

    אם משתמשים בסרגל החיפוש כדי למצוא את הדף הזה, בוחרים בתוצאה שבה הכותרת המשנית היא Monitoring.

  2. לוחצים על המסנן Compute Engine של פלטפורמת הפריסה.
  3. מאתרים את הערך של Elasticsearch ולוחצים על הצגת פרטים.
  4. לוחצים על הכרטיסייה מרכזי בקרה כדי לראות תצוגה מקדימה סטטית. אם מרכז הבקרה מותקן, אפשר לעבור אליו בלחיצה על View dashboard (הצגת מרכז הבקרה).

מידע נוסף על לוחות בקרה ב-Cloud Monitoring זמין במאמר בנושא לוחות בקרה וטבלאות.

מידע נוסף על השימוש בדף Integrations (שילובים) זמין במאמר ניהול שילובים.

התקנה של כללי מדיניות התראות

מדיניות התראות מורה ל-Cloud Monitoring לשלוח לכם התראה כשמתרחשים תנאים מסוימים. השילוב של Elasticsearch כולל מדיניות התראות אחת או יותר שתוכלו להשתמש בהן. אפשר לראות ולהתקין את מדיניות ההתראות הזו בדף שילובים ב-Monitoring.

כדי לראות את התיאורים של כללי מדיניות ההתראות הזמינים ולהתקין אותם:

  1. נכנסים לדף  Integrations במסוף Google Cloud :

    עוברים אל שילובים

    אם משתמשים בסרגל החיפוש כדי למצוא את הדף הזה, בוחרים בתוצאה שבה הכותרת המשנית היא Monitoring.

  2. מאתרים את הערך של Elasticsearch ולוחצים על הצגת פרטים.
  3. לוחצים על הכרטיסייה התראות. בכרטיסייה הזו מופיעים תיאורים של מדיניות ההתראות הזמינה וממשק להתקנתן.
  4. התקנה של כללי מדיניות התראות. כדי שמדיניות ההתראות תדע לאן לשלוח התראות על הפעלה של התראה, היא צריכה לקבל מכם מידע להתקנה. כדי להתקין מדיניות התראות:
    1. ברשימת מדיניות ההתראות הזמינה, בוחרים את אלה שרוצים להתקין.
    2. בקטע הגדרת התראות, בוחרים ערוץ התראות אחד או יותר. יש לכם אפשרות להשבית את השימוש בערוצי התראות, אבל אם תעשו את זה, מדיניות ההתראות שלכם תופעל בשקט. אפשר לבדוק את הסטטוס שלהם בדף 'מעקב', אבל לא תקבלו התראות.

      מידע נוסף על ערוצי התראות זמין במאמר בנושא ניהול ערוצי התראות.

    3. לוחצים על יצירת מדיניות.

למידע נוסף על מדיניות התראות ב-Cloud Monitoring, אפשר לעיין במאמר מבוא להתראות.

מידע נוסף על השימוש בדף Integrations (שילובים) זמין במאמר ניהול שילובים.

המאמרים הבאים

בסרטון Install the Ops Agent to troubleshoot third-party applications מוסבר איך להשתמש ב-Ansible כדי להתקין את סוכן תפעול, להגדיר אפליקציית צד שלישי ולהתקין לוח בקרה לדוגמה.