0Pricing
System Observability: Logging, Metrics & Tracing (ELK + OpenTelemetry) · درس

مرشّحات ومسارات Logstash

استكشفوا إعدادات Logstash المتقدمة، بما فيها المنطق الشرطي والمسارات المتعددة والمرشّحات المخصّصة لتحويلات البيانات المعقّدة

مرشّحات ومسارات Logstash درس مجاني في System Observability: Logging, Metrics & Tracing (ELK + OpenTelemetry) على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في System Observability: Logging, Metrics & Tracing (ELK + OpenTelemetry)، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة System Observability: Logging, Metrics & Tracing (ELK + OpenTelemetry) 4 دروس في المجموع.

بعض أجزاء هذا الدرس لم تُترجم بعد وتظهر باللغة الإنجليزية.

Intro to Advanced Logstash

Welcome to an advanced look at Logstash! So far, you've learned how to get logs into Logstash and apply basic filters. But what happens when your data gets more complex?

In this lesson, we'll explore powerful techniques like conditional logic, managing multiple pipelines, and leveraging advanced filters for intricate data transformations. This will help you handle real-world logging challenges.

Conditional Logic: The 'if' Statement

Not all logs are created equal! You might have different log formats coming from various services, or you might want to process events differently based on their content.

Conditional logic allows Logstash to apply filters or outputs only when certain conditions are met. This is achieved using if statements, similar to programming languages.

  • Use if to check field values, tags, or other event properties.
  • Apply specific filters or actions only to matching events.

Conditional Logic in Action

Let's see a simple example. We'll use if to check if a field named type exists and has a specific value. If it does, we'll add a tag.

Try inputting {"message": "Hello", "type": "app_log"} and then {"message": "World"} to see the difference.

input {
  stdin {
    codec => json
  }
}
filter {
  if [type] == "app_log" {
    mutate {
      add_tag => ["processed_app_log"]
    }
  }
}
output {
  stdout {
    codec => rubydebug
  }
}

Beyond 'if': Else and Else If

Just like in programming, you can extend your conditional logic with else if and else blocks. This allows for more complex branching and ensures every event is handled appropriately.

Logstash executes these conditions sequentially. The first matching condition's block is executed, and then it moves on.

  • if [field] == "value": Executes if the condition is true.
  • else if [another_field] == "another_value": Executes if the first if was false, and this condition is true.
  • else: Executes if none of the preceding if or else if conditions were true.

Multiple Pipelines: Why Separate?

As your system grows, you might be collecting logs from many different sources (e.g., web servers, databases, security devices). Each source might require entirely different processing logic.

Multiple pipelines allow you to isolate and manage these distinct processing flows independently. Instead of one giant, complex Logstash configuration, you can have several smaller, focused ones.

  • Isolation: Errors in one pipeline won't affect others.
  • Resource Management: Assign specific resources to different pipelines.
  • Modularity: Easier to develop, test, and maintain configurations.

Configuring Multiple Pipelines

To use multiple pipelines, you define them in a file called pipelines.yml, usually located in your Logstash configuration directory (e.g., /etc/logstash/pipelines.yml).

Each entry specifies a unique ID, the path to its configuration file (.conf), and optional settings like number of worker threads.

Example pipelines.yml:

- pipeline.id: web_logs
path.config: "/etc/logstash/conf.d/web-pipeline.conf"
- pipeline.id: db_logs
path.config: "/etc/logstash/conf.d/db-pipeline.conf"

Deep Dive: The Ruby Filter

Sometimes, built-in Logstash filters aren't enough for very specific or complex data transformations. That's where the ruby filter comes in!

The ruby filter allows you to execute arbitrary Ruby code within your Logstash pipeline. This provides immense flexibility to manipulate events in ways not possible with standard filters.

  • Use for: Complex string manipulations, mathematical operations, custom data lookups, or logic that depends on multiple fields.
  • Caution: Can impact performance if not used carefully.

Ruby Filter Example

Let's use the ruby filter to create a new field that combines parts of existing fields and calculates a value.

Try inputting: {"user_id": "123", "item_count": 5, "price_per_item": 10.5}

input {
  stdin {
    codec => json
  }
}
filter {
  ruby {
    code => "
      event.set('total_cost', event.get('item_count').to_f * event.get('price_per_item').to_f)
      event.set('user_item_summary', 'User ' + event.get('user_id') + ' bought ' + event.get('item_count').to_s + ' items.')
    "
  }
}
output {
  stdout {
    codec => rubydebug
  }
}

Advanced Mutate Operations

The mutate filter is a workhorse for basic field manipulation, but it has some advanced operations that are incredibly useful:

  • split: Splits a string field into an array based on a delimiter.
  • join: Joins an array field into a string using a specified separator.
  • convert: Changes the data type of a field (e.g., string to integer, float to string).
  • rename: Changes the name of an existing field.

These operations help you shape your data precisely for storage and analysis.

Quiz: Logstash Logic

Which of the following are valid reasons to use multiple Logstash pipelines?

Recap: Advanced Logstash Config

Great job! You've leveled up your Logstash skills. We covered:

  • How conditional logic (if, else if, else) allows for dynamic event processing.
  • The benefits and configuration of multiple pipelines for modular and isolated data flows.
  • Leveraging the powerful ruby filter for highly custom data transformations.
  • Advanced operations within the mutate filter like split, join, and convert.

These techniques are crucial for building robust and adaptable Logstash configurations for complex, real-world data.

الأسئلة الشائعة

هل درس «مرشّحات ومسارات Logstash» مجاني؟

نعم — نص درس «مرشّحات ومسارات Logstash» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة System Observability: Logging, Metrics & Tracing (ELK + OpenTelemetry)، انتقل إلى CoddyKit PRO. تتضمن دورة System Observability: Logging, Metrics & Tracing (ELK + OpenTelemetry) 4 دروس في المجموع.

ماذا ستتعلم في «مرشّحات ومسارات Logstash»؟

استكشفوا إعدادات Logstash المتقدمة، بما فيها المنطق الشرطي والمسارات المتعددة والمرشّحات المخصّصة لتحويلات البيانات المعقّدة تتمرن على System Observability: Logging, Metrics & Tracing (ELK + OpenTelemetry) مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ System Observability: Logging, Metrics & Tracing (ELK + OpenTelemetry)؟

لا تُشترط خبرة سابقة. System Observability: Logging, Metrics & Tracing (ELK + OpenTelemetry) على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.

كم من الوقت يستغرق درس «مرشّحات ومسارات Logstash»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس System Observability: Logging, Metrics & Tracing (ELK + OpenTelemetry) هذا؟

نعم. كل درس في System Observability: Logging, Metrics & Tracing (ELK + OpenTelemetry) يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. لغة استعلام Elasticsearch (DSL)
  2. مرشّحات ومسارات Logstash
  3. Kibana Discover وLens
  4. إدارة دورة حياة الفهارس (ILM)
← العودة إلى System Observability: Logging, Metrics & Tracing (ELK + OpenTelemetry)