> ## Documentation Index
> Fetch the complete documentation index at: https://docs.apinizer.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Graylog

> Securely transmits GELF log events to Graylog cluster via TCP/UDP. You can perform central log collection in GELF format and transmission via TCP/UDP

## Overview

<AccordionGroup>
  <Accordion title="What is its Purpose?">
    <CardGroup cols={2}>
      <Card title="Central Log Collection" icon="archive">
        Enables collecting Apinizer log events in GELF format at a single central location
      </Card>

      <Card title="Traffic Management" icon="chart-line">
        Provides log delivery continuity by managing traffic intensity with queue and compression settings
      </Card>

      <Card title="Security" icon="shield">
        Secures data sent over the log channel with TLS/certificate verification options
      </Card>

      <Card title="Environment Management" icon="server">
        Reduces management costs by maintaining Development/Test/Production separation with environment-based parameters
      </Card>
    </CardGroup>
  </Accordion>

  <Accordion title="Working Principle">
    <CardGroup cols={2}>
      <Card title="Connection Initiation" icon="plug">
        When a Graylog connection is requested from within an Integration Flow or Connector, the system reads the configured connection parameters
      </Card>

      <Card title="Connection Pool Management" icon="database">
        Asynchronous send queue separates threads from the connection pool based on maxInflightSends and queueSize values
      </Card>

      <Card title="Authentication" icon="shield-alt">
        If TLS is active, mutual TLS and certificate chain verification are applied; otherwise, IP whitelisting is used at network level
      </Card>

      <Card title="Data Communication" icon="network-wired">
        GELF messages are encoded according to the selected compression policy and sent to Graylog endpoint via selected transportType (TCP or UDP)
      </Card>

      <Card title="Connection Management" icon="link">
        After the operation completes, the connection remains open and returns to the pool; if unused for a long time, tcpKeepAlive setting comes into effect
      </Card>

      <Card title="Error Management" icon="exclamation-triangle">
        On connection error, timeout, or authentication error, reconnectDelay duration is waited, event is logged, and detailed error message is shown to the user
      </Card>
    </CardGroup>
  </Accordion>

  <Accordion title="Usage Areas">
    <CardGroup cols={2}>
      <Card title="Central Log Transmission" icon="server">
        Transferring application logs from all Apinizer nodes to central Graylog cluster
      </Card>

      <Card title="Real-Time Monitoring" icon="eye">
        Real-time monitoring of custom function logs in Integration Flow steps (e.g., external API responses)
      </Card>

      <Card title="Early Warning Mechanism" icon="bell">
        Providing early warning mechanism by logging Scheduled Job results or gateway health metrics
      </Card>

      <Card title="SIEM Integration" icon="shield">
        Feeding data for anomaly detection with special GELF levels to Security/SIEM teams
      </Card>
    </CardGroup>
  </Accordion>
</AccordionGroup>

## Technical Features and Capabilities

<AccordionGroup>
  <Accordion title="Basic Features">
    <CardGroup cols={2}>
      <Card title="GELF Transport Selection" icon="network-wired">
        Leaves reliability/performance balance to the user by allowing selection between TCP and UDP.
      </Card>

      <Card title="Compression Policy" icon="compress">
        Optimizes bandwidth with GZIP, ZLIB, or NONE options.
      </Card>

      <Card title="Environment-Based Configuration" icon="code-branch">
        Ability to define separate connection parameters for each environment (Development, Test, Production).
      </Card>

      <Card title="Enable/Disable Control" icon="toggle-on">
        Activating or deactivating the connection (enable/disable toggle). In passive state, the connection cannot be used but its configuration is preserved.
      </Card>
    </CardGroup>
  </Accordion>

  <Accordion title="Advanced Features">
    <CardGroup cols={2}>
      <Card title="TLS Certificate Chain Upload" icon="certificate">
        Importing and validating PEM-based certificate file through the UI.
      </Card>

      <Card title="Advanced TCP Settings" icon="network-wired">
        Network optimization with tcpNoDelay, tcpKeepAlive, and sendBufferSize values.
      </Card>

      <Card title="Multi-Threaded Sending" icon="cog">
        Scales high-volume logs with threads and maxInflightSends parameters.
      </Card>

      <Card title="Connection Test Feature" icon="flask">
        Ability to validate connection parameters before saving using the "Test Connection" button.
      </Card>

      <Card title="Export/Import Feature" icon="file-export">
        Exporting connection configuration as a ZIP file. Importing to different environments (Development, Test, Production). Version control and backup capability.
      </Card>

      <Card title="Connection Monitoring" icon="chart-line">
        Monitoring connection health, pool status, and performance metrics.
      </Card>
    </CardGroup>
  </Accordion>
</AccordionGroup>

## Connection Parameters

<AccordionGroup>
  <Accordion title="Required Parameters">
    <CardGroup cols={2}>
      <Card title="Name" icon="tag">
        **Description:** Connection name (must be unique)\
        **Example Value:** `Production_Graylog`\
        **Notes:** Cannot start with a space, special characters should not be used
      </Card>

      <Card title="Environment (Ortam)" icon="server">
        **Description:** Published environment ID where logs will be routed\
        **Example Value:** `prod-env-01`\
        **Notes:** Registration is blocked if environment is not published
      </Card>

      <Card title="Hostname" icon="network-wired">
        **Description:** Graylog GELF endpoint DNS/IP address\
        **Example Value:** `graylog.internal.local`\
        **Notes:** Use FQDN for production
      </Card>

      <Card title="Port" icon="network-wired">
        **Description:** GELF listener port\
        **Example Value:** 12201\
        **Notes:** TCP/UDP can share the same port
      </Card>

      <Card title="TransportType" icon="network-wired">
        **Description:** Connection transport type (TCP/UDP)\
        **Example Value:** TCP\
        **Notes:** TCP recommended; reliable network required for UDP
      </Card>

      <Card title="CompressionType" icon="compress">
        **Description:** GELF message compression policy\
        **Example Value:** GZIP\
        **Notes:** Bandwidth increases when NONE is selected
      </Card>

      <Card title="GelfMessageLevel" icon="filter">
        **Description:** Minimum log level\
        **Example Value:** WARNING\
        **Notes:** Selection provides filtering within Graylog
      </Card>

      <Card title="QueueSize" icon="list">
        **Description:** Log wait queue size on UI side\
        **Example Value:** 512\
        **Notes:** High values increase RAM consumption
      </Card>

      <Card title="ReconnectDelay (ms)" icon="repeat">
        **Description:** Reconnection delay after interruption\
        **Example Value:** 2500\
        **Notes:** In milliseconds
      </Card>

      <Card title="ConnectTimeout (ms)" icon="clock">
        **Description:** Wait time while establishing connection\
        **Example Value:** 10000\
        **Notes:** Adjust according to network delays
      </Card>

      <Card title="SendBufferSize (byte)" icon="database">
        **Description:** TCP send buffer size\
        **Example Value:** -1\
        **Notes:** -1 uses system default
      </Card>

      <Card title="MaxInflightSends" icon="paper-plane">
        **Description:** Concurrent send count\
        **Example Value:** 512\
        **Notes:** Excessive values can create pressure on Graylog side
      </Card>

      <Card title="Threads" icon="cog">
        **Description:** Background log sending thread count\
        **Example Value:** 0\
        **Notes:** 0 automatically adjusts according to CPU cores
      </Card>
    </CardGroup>
  </Accordion>

  <Accordion title="Optional Parameters">
    <CardGroup cols={2}>
      <Card title="Description" icon="file-alt">
        **Description:** Description about connection purpose\
        **Default Value:** (Empty)\
        **Recommended Value:** Prod log forwarding for CoreAPI
      </Card>

      <Card title="TLS Enabled" icon="shield">
        **Description:** TLS usage in GELF traffic\
        **Default Value:** false\
        **Recommended Value:** true (Production)
      </Card>

      <Card title="TLS Cert Verification Enabled" icon="shield-alt">
        **Description:** Server certificate verification\
        **Default Value:** false\
        **Recommended Value:** true (Production)
      </Card>

      <Card title="TLS Trust Cert Chain File" icon="certificate">
        **Description:** PEM certificate chain file\
        **Default Value:** (Empty)\
        **Recommended Value:** graylog-ca.pem
      </Card>

      <Card title="TCP No Delay" icon="toggle-on">
        **Description:** Disables Nagle algorithm\
        **Default Value:** true\
        **Recommended Value:** true
      </Card>

      <Card title="TCP Keep Alive" icon="link">
        **Description:** Preserves passive connections\
        **Default Value:** false\
        **Recommended Value:** true (remote DC)
      </Card>

      <Card title="Append To Attributes" icon="plus-circle">
        **Description:** Adds Apinizer metadata to GELF extra fields\
        **Default Value:** true\
        **Recommended Value:** true
      </Card>

      <Card title="Append To Message" icon="plus-circle">
        **Description:** Adds Apinizer context to message body\
        **Default Value:** true\
        **Recommended Value:** true
      </Card>
    </CardGroup>
  </Accordion>
</AccordionGroup>

### Timeout and Connection Pool Parameters

<CardGroup cols={2}>
  <Card title="Connection Timeout" icon="clock">
    **Description:** Maximum wait time for connection establishment\
    **Default:** 10000\
    **Min:** 1000 | **Max:** 60000\
    **Unit:** milliseconds
  </Card>

  <Card title="Request Timeout" icon="hourglass">
    **Description:** Maximum wait time for request response\
    **Default:** N/A\
    **Min:** - | **Max:** -\
    **Unit:** milliseconds
  </Card>

  <Card title="Pool Size" icon="layer-group">
    **Description:** Maximum number of connections in the connection pool\
    **Default:** Determined by threads value\
    **Min:** 1 | **Max:** 64\
    **Unit:** count
  </Card>

  <Card title="ReconnectDelay" icon="repeat">
    **Description:** Reconnection interval\
    **Default:** 2500\
    **Min:** 500 | **Max:** 60000\
    **Unit:** milliseconds
  </Card>
</CardGroup>

## Usage Scenarios

<CardGroup cols={2}>
  <Card title="Real-Time API Logging" icon="chart-line">
    **Situation:** Core API gateway produces errors under high traffic\
    **Solution:** TransportType=TCP, Compression=GZIP, GelfLevel=ERROR\
    **Expected Behavior:** Only error logs appear on Graylog side, bandwidth is optimized
  </Card>

  <Card title="SIEM Integration" icon="shield">
    **Situation:** Security team wants critical alarms\
    **Solution:** GelfLevel=ALERT, AppendToAttributes=true\
    **Expected Behavior:** SIEM enriches alarm context thanks to extra attributes
  </Card>

  <Card title="Low-Latency Monitoring" icon="tachometer-alt">
    **Situation:** Latency measurements will be carried via UDP\
    **Solution:** TransportType=UDP, QueueSize=256\
    **Expected Behavior:** Logs are sent with low latency, possible losses are accepted
  </Card>

  <Card title="Multi-DC Graylog" icon="server">
    **Situation:** Connecting to remote data center with TLS\
    **Solution:** TLS Enabled=true, TLS Cert Verification=true, upload certificate\
    **Expected Behavior:** Encrypted channel is established, self-signed certificates are rejected
  </Card>

  <Card title="Intensive Batch Jobs" icon="tasks">
    **Situation:** Night jobs produce many logs in a short time\
    **Solution:** QueueSize=2048, Threads=8, MaxInflight=1024\
    **Expected Behavior:** Log transfer completes without queue overflow
  </Card>

  <Card title="Test Environment Observation" icon="bug">
    **Situation:** Verbose logging in test environment\
    **Solution:** GelfLevel=DEBUG, Compression=NONE\
    **Expected Behavior:** All logs are transmitted uncompressed for troubleshooting
  </Card>
</CardGroup>

## Connection Configuration

### Creating a New Graylog Connection

<img src="https://mintcdn.com/apinizer/YX1NcEKlSBeHefxE/images/yonetici/baglantilar/graylog-variable-new.png?fit=max&auto=format&n=YX1NcEKlSBeHefxE&q=85&s=e82a1980d453e8511928f3c96e1c1ce5" alt="Image 2024 9 9 15 35 35 Pn" width="1000" className="mr-auto" data-path="images/yonetici/baglantilar/graylog-variable-new.png" />

#### Configuration Steps

<Steps>
  <Step title="Navigate to Creation Page">
    * Go to **Connection → Graylog** from the left menu.
    * Click the **\[+ Create]** button in the top right.
  </Step>

  <Step title="Enter Basic Information">
    **Enable Status (Active Status):**

    * Set active/passive status with toggle. New connections are active by default.

    **Name (Name) - Required:**

    * Example: `Production_Graylog`
    * Enter unique name, cannot start with space.
    * System automatically checks. Green checkmark: available. Red X: existing name.

    **Description (Description):**

    * Example: "Graylog prod ingestion"
    * Max. 1000 characters.
    * Describe the connection's purpose.

    <Info>
      In the action button area at the top of the page, you can use the **\[\<> Variable]** button to select dynamic values, and with global variables, you can manage connection parameters with variable-based values instead of fixed values. For detailed information, review the [Dynamic Variables](/en/concepts/core-concepts/dynamic-variables) page.
    </Info>
  </Step>

  <Step title="Environment Selection">
    * Select environment from dropdown menu: **Development**, **Test**, or **Production**.
    * Different connection parameters can be defined for each environment.
  </Step>

  <Step title="Graylog-Specific Parameters - Network">
    * **Hostname & Port:** Enter Graylog GELF listener information.
    * **TransportType:** Select TCP (reliable) or UDP (low latency).
    * **CompressionType:** Determine GZIP/ZLIB/NONE options according to latency and CPU.
    * Wrong hostname causes log loss.
  </Step>

  <Step title="Graylog-Specific Parameters - Log & Queue">
    * **GELF Message Level:** Select appropriate level from Debug to Emergency.
    * **QueueSize, Threads, MaxInflightSends:** Set values according to log volume.
    * **Append options:** Determine whether Apinizer metadata will be included in logs.
  </Step>

  <Step title="Timeout and Connection Pool Settings">
    * **ConnectTimeout & ReconnectDelay:** Determine in milliseconds according to network conditions.
    * **SendBufferSize:** -1 uses system default, enter byte value in custom fields.
    * Increase threads value to prevent Pool exhausted warning in heavy traffic.
  </Step>

  <Step title="Security and Authentication Settings">
    * **TLS Enabled:** Required in Production.
    * **TLS Cert Verification Enabled:** Upload certificate when verification is enabled.
    * **TLS Trust Cert Chain File:** Upload PEM file from UI, maximum 100 MB.
  </Step>

  <Step title="Test Connection">
    * Click the **\[Test Connection]** button.
    * Test whether connection parameters are correct.
    * **Successful:** Green confirmation message
    * **Failed:** Error details are shown
  </Step>

  <Step title="Save">
    * Click the **\[Save and Deploy]** button in the top right.

    **Checklist:**

    * Unique name
    * Required fields filled
    * Test connection successful (recommended)

    **Result:**

    * Connection is added to list
    * Becomes available for use in Integration Flow and Connector steps
    * Becomes active according to environment

    <Check>
      Connection successfully created! You can now use it in Integration Flow and Connector steps.
    </Check>
  </Step>
</Steps>

### Deleting Connection

<CardGroup cols={2}>
  <Card title="Delete Operation" icon="trash">
    Select **Delete** from the **⋮** menu at the end of the row or click the **\[Delete]** button on the connection detail page
  </Card>

  <Card title="Delete Tips" icon="info-circle">
    **Check Before Deleting:** May be in use in Integration Flow or Connector steps. If necessary, assign an alternative connection. Take a backup with **Export** before deleting
  </Card>

  <Card title="Alternative: Deactivate" icon="toggle-off">
    Instead of deleting, use the **Disable** option. Connection becomes passive but is not deleted. Can be reactivated when needed
  </Card>
</CardGroup>

### Exporting/Importing Connection

<Info>
  In this step, users can export (export) existing connections for backup, moving to different environments, or sharing purposes, or import (import) a previously exported connection again. This operation is used to maintain data integrity in version control, transitions between test and production environments, or inter-team sharing processes.
</Info>

<AccordionGroup>
  <Accordion title="Export">
    <CardGroup cols={2}>
      <Card title="Method 1" icon="download">
        Select **⋮ → Export** from the action menu. ZIP file is automatically downloaded.
      </Card>

      <Card title="Method 2" icon="file-export">
        Click the **\[Export]** button on the connection detail page. ZIP file is downloaded.
      </Card>

      <Card title="File Format" icon="file-zipper">
        Format: `Date-connection-ConnectionName-export.zip`\
        Example: `13 Nov 2025-connection-Production_Graylog-export.zip`
      </Card>

      <Card title="ZIP Contents" icon="folder-open">
        * Connection JSON file
        * Metadata information
        * Dependency information (e.g., certificates, key store)
      </Card>

      <Card title="Usage Areas" icon="list-check">
        * Backup
        * Moving between environments (Test → Prod)
        * Versioning
        * Team or project-based sharing
      </Card>
    </CardGroup>
  </Accordion>

  <Accordion title="Import">
    <CardGroup cols={2}>
      <Card title="Import Steps" icon="upload">
        * Click the **\[Import Graylog]** button on the main list.
        * Select the downloaded ZIP file.
        * System checks: Is format valid? Is there a name conflict? Are dependencies available?
        * Then click the **\[Import]** button.
      </Card>

      <Card title="Import Scenarios" icon="info-circle">
        **Scenario 1: Name Conflict** → Overwrite the old connection or create with a new name.

        **Scenario 2: Missing Dependencies** → Create missing certificates or key stores first or remove them during import.
      </Card>
    </CardGroup>
  </Accordion>
</AccordionGroup>

### Connection Usage Areas

<CardGroup cols={2}>
  <Card title="Connection Creation and Activation" icon="check-circle">
    **Steps:**

    1. Create the connection
    2. Verify the connection with **Test Connection**
    3. Save and activate with **Save and Deploy**
    4. Ensure the connection is in **Enabled** status
  </Card>

  <Card title="Usage in Integration / Connector Steps" icon="plug">
    Select Graylog Connection in steps requiring log sending. Examples: steps like "Send Message", "Custom Log", "Notify SIEM". Connection selection is made from the Connection field in these steps' configuration
  </Card>

  <Card title="Scheduled Job Usage" icon="clock">
    In scheduled tasks (e.g., health check log every 5 minutes), access external systems by selecting Graylog Connection. When connection changes, job behavior uses new parameters
  </Card>

  <Card title="Test Usage" icon="flask">
    Connection accuracy can be checked independently of Integration Flow using the Connection Test feature. This test is critical in the debugging process
  </Card>
</CardGroup>

## Best Practices

<AccordionGroup>
  <Accordion title="Things to Do and Best Practices">
    <CardGroup cols={2}>
      <Card title="Log Schema Standardization" icon="file-code">
        **Bad:** Different GELF field names in each step\
        **Good:** Using common field names\
        **Best:** Making Apinizer context attributes mandatory and validating with Graylog pipeline
      </Card>

      <Card title="Compression Strategy" icon="compress">
        **Bad:** Selecting NONE in all environments\
        **Good:** Using GZIP in Production\
        **Best:** Determining dynamic policy according to traffic and monitoring decompress cost on Graylog side
      </Card>

      <Card title="Transport Selection" icon="network-wired">
        **Bad:** Sending critical logs via UDP\
        **Good:** Using TCP in Prod, UDP in Test\
        **Best:** Making TCP + TLS mandatory, using UDP only for low-risk metrics
      </Card>

      <Card title="Queue Size Management" icon="list">
        **Bad:** Leaving QueueSize value too low\
        **Good:** Setting between 512-1024 according to traffic analysis\
        **Best:** Updating queue/buffer settings automatically according to peak load measurements
      </Card>

      <Card title="Environment Management" icon="server">
        **Bad:** Using the same connection parameters in all environments\
        **Good:** Creating separate connections for each environment\
        **Best:** Managing all environments in a single connection using the Environment option, only changing environment when transitioning between environments
      </Card>

      <Card title="Connection Test" icon="check-circle">
        **Bad:** Saving and deploying connection without testing\
        **Good:** Verifying with Test Connection before saving\
        **Best:** Testing after every parameter change, performing full integration test in test environment before going to production
      </Card>
    </CardGroup>
  </Accordion>

  <Accordion title="Security Best Practices">
    <CardGroup cols={2}>
      <Card title="TLS Certificate Management" icon="certificate">
        Obtain certificate chains only from trusted sources. Monitor expiration dates, upload new file before renewal
      </Card>

      <Card title="Network Segmentation" icon="network-wired">
        Make Graylog endpoint accessible only from necessary Apinizer subnets; apply allowlist in firewall
      </Card>

      <Card title="Log Content Masking" icon="mask">
        If personal data or access tokens are being logged, sanitize GELF messages; add masking rules in Apinizer policies
      </Card>

      <Card title="Credential Management" icon="lock">
        Store sensitive information such as usernames and passwords using environment variables or secret manager. Do not hardcode credentials in code or configuration files. Update passwords periodically
      </Card>

      <Card title="SSL/TLS Usage" icon="shield-alt">
        Always enable SSL/TLS in production environment. Use self-signed certificates only in development environment. Track certificate expiration dates and renew them on time
      </Card>

      <Card title="Access Control" icon="user-shield">
        Allow only authorized users to change connection configuration. Store connection change logs. Apply change approval process for critical connections
      </Card>
    </CardGroup>
  </Accordion>

  <Accordion title="Things to Avoid">
    <CardGroup cols={2}>
      <Card title="High-Critical Logging in UDP" icon="ban">
        **Why to avoid:** UDP packet loss leads to loss of critical events\
        **Alternative:** Use TCP + TLS
      </Card>

      <Card title="Wrong Log Level" icon="exclamation-triangle">
        **Why to avoid:** Unnecessary DEBUG levels bloat Graylog storage\
        **Alternative:** Determine level according to business need, add pipeline filters
      </Card>

      <Card title="Not Updating Certificate File" icon="certificate">
        **Why to avoid:** Expired certificate drops TLS connection\
        **Alternative:** Renew certificates with calendar reminders
      </Card>

      <Card title="Using Production Connection in Test Environment" icon="exclamation-triangle">
        **Why to avoid:** Test data may be written to production system, real users may be affected, security risk occurs\
        **Alternative:** Create separate connections for each environment, use environment parameter, separate connection names by adding prefix according to environment (Test\_, Prod\_)
      </Card>

      <Card title="Very Low Timeout Values" icon="clock">
        **Why to avoid:** Connection continuously times out in network delays, Integration steps fail\
        **Alternative:** Set timeout values according to real usage scenarios, measure network latency and set timeouts accordingly
      </Card>

      <Card title="Not Using Connection Pool" icon="database">
        **Why to avoid:** New connection opens with each request, performance decreases, resource consumption increases, target system load increases\
        **Alternative:** Enable connection pool, set pool size according to traffic volume, set up pool monitoring
      </Card>
    </CardGroup>
  </Accordion>

  <Accordion title="Performance Tips">
    <CardGroup cols={2}>
      <Card title="Batch Send Size" icon="list">
        **Recommendation:** Use QueueSize value as single send batch, adjust according to Graylog capacity\
        **Effect:** Latency decreases, throughput increases
      </Card>

      <Card title="Compression Balance" icon="compress">
        **Recommendation:** Plan transitions to ZLIB or NONE instead of GZIP by tracking CPU, plan slowdowns\
        **Effect:** CPU consumption is balanced, log latency decreases in critical periods
      </Card>

      <Card title="Thread Setting" icon="cog">
        **Recommendation:** Limit threads value to 50% of active CPU cores, scale horizontally if needed\
        **Effect:** System resources remain balanced, throttling decreases
      </Card>

      <Card title="Connection Pool Optimization" icon="database">
        **Recommendation:** Set pool size according to peak traffic (recommended: concurrent request count × 1.5), set idle connection timeouts, perform pool health check\
        **Effect:** Connection opening cost decreases by 80%, response times decrease, resource usage is optimized
      </Card>

      <Card title="Timeout Values Optimization" icon="clock">
        **Recommendation:** Measure real network latency, set timeout values accordingly, avoid very low or very high timeouts\
        **Effect:** Unnecessary waits are prevented, fast fail-over is provided, user experience improves
      </Card>

      <Card title="Connection Monitoring" icon="chart-line">
        **Recommendation:** Monitor connection pool usage, track timeout rates, perform connection health check, set up alerting\
        **Effect:** Problems are proactively detected, performance bottlenecks are identified early, downtime decreases
      </Card>
    </CardGroup>
  </Accordion>
</AccordionGroup>

## Troubleshooting

<AccordionGroup>
  <Accordion title="GELF Message Rejected">
    <Warning>
      Message size exceeds 1 MB, JSON fields may be wrong type, or Graylog pipeline error may exist.
    </Warning>

    <Steps>
      <Step title="Message Size">
        Reduce large fields in message.
      </Step>

      <Step title="JSON Schema">
        Check JSON schema.
      </Step>

      <Step title="Pipeline Logs">
        Review Graylog pipeline logs.
      </Step>
    </Steps>
  </Accordion>

  <Accordion title="TLS Handshake Failed">
    <Warning>
      Certificate chain missing, hostname mismatch, or TLS disabled server may exist.
    </Warning>

    <Steps>
      <Step title="Certificate Upload">
        Re-upload certificate file.
      </Step>

      <Step title="Hostname Verification">
        Verify hostname matches CN/SAN.
      </Step>

      <Step title="TLS Settings">
        Check Graylog server TLS settings.
      </Step>
    </Steps>
  </Accordion>

  <Accordion title="Connection Timeout">
    <Warning>
      Network delay, target system responding slowly, or timeout value may be too low.
    </Warning>

    <Steps>
      <Step title="Network Check">
        Check network connectivity.
      </Step>

      <Step title="System Health">
        Check target system health.
      </Step>

      <Step title="Timeout Settings">
        Increase timeout values.
      </Step>

      <Step title="Log Review">
        Review connection logs.
      </Step>
    </Steps>
  </Accordion>

  <Accordion title="Authentication Failed">
    <Warning>
      Wrong username/password, expired credentials, or permission problem may exist.
    </Warning>

    <Steps>
      <Step title="Credentials">
        Verify credentials.
      </Step>

      <Step title="User Status">
        Check that the user is active in the target system.
      </Step>

      <Step title="Permission Check">
        Check that necessary permissions are granted.
      </Step>

      <Step title="Certificate Check">
        Check SSL/TLS certificates.
      </Step>
    </Steps>
  </Accordion>

  <Accordion title="Pool Exhausted">
    <Warning>
      Pool size may be too low, connection leak may exist, or traffic may be too high.
    </Warning>

    <Steps>
      <Step title="Pool Size">
        Increase pool size.
      </Step>

      <Step title="Connection Check">
        Check that connections are properly closed.
      </Step>

      <Step title="Idle Timeout">
        Set idle connection timeouts.
      </Step>

      <Step title="Metric Monitoring">
        Monitor connection usage metrics.
      </Step>
    </Steps>
  </Accordion>

  <Accordion title="Connection Test Successful But Integration Flow Errors">
    <Warning>
      Different connection may be selected in Integration/Connector step, step may be misconfigured, or Flow/Job may not be redeployed.
    </Warning>

    <Steps>
      <Step title="Enable Toggle">
        Check that the connection's enable toggle is active.
      </Step>

      <Step title="Connection Selection">
        Verify that the correct connection is selected in Integration Flow.
      </Step>

      <Step title="Connection Deploy">
        Redeploy the connection.
      </Step>

      <Step title="Flow/Job Deploy">
        Redeploy Integration Flow or Job.
      </Step>

      <Step title="Log Check">
        Check Gateway logs.
      </Step>
    </Steps>
  </Accordion>
</AccordionGroup>

## Frequently Asked Questions (FAQ)

<AccordionGroup>
  <Accordion title="How many projects can Graylog Connection be shared in?">
    <Info>
      Connections created as Admin are global and can be used by all projects; those created at project level are only visible in the related project.
    </Info>
  </Accordion>

  <Accordion title="How many environments can connect to Graylog at the same time?">
    <Info>
      Separate entries can be made for each environment; environment list is loaded from Environment service and only published environments can be selected.
    </Info>
  </Accordion>

  <Accordion title="What format should TLS certificate file be in?">
    <Info>
      PEM chain is supported; uploaded file cannot exceed 100 MB limit and must contain BEGIN CERTIFICATE block.
    </Info>
  </Accordion>

  <Accordion title="Do I need to redeploy when changing GELF transport?">
    <Warning>
      Yes, TransportType change redeploys the connection; if Graylog listener is not compatible, change fails.
    </Warning>
  </Accordion>

  <Accordion title="Should I set log level in Graylog or in Connection?">
    <Info>
      gelfMessageLevel in Connection determines minimum threshold, Graylog pipelines can do additional filtering; manage both together.
    </Info>
  </Accordion>

  <Accordion title="Can I use the same connection in multiple Integration Flows?">
    <Check>
      Yes, the same connection can be used in multiple Integration Flow or Connector steps. This provides central management and guarantees configuration consistency. However, changes made to the connection will affect all usage locations, so care should be taken.
    </Check>
  </Accordion>

  <Accordion title="Is using connection pool mandatory?">
    <Info>
      Using connection pool is not mandatory but strongly recommended in high-traffic systems. Reusing existing connections instead of opening new ones with each request significantly increases performance.
    </Info>
  </Accordion>

  <Accordion title="Should I create different connections for Test and Production?">
    <Check>
      Yes, it is recommended to create separate connections for each environment. Alternatively, you can manage all environments within a single connection using the environment parameter. This approach provides easier management and less error risk.
    </Check>
  </Accordion>

  <Accordion title="Test Connection is successful but not working in Integration Flow, why?">
    <Warning>
      Several reasons may exist:
    </Warning>

    1. Connection enable toggle may be passive
    2. Different connection may be selected in Integration step
    3. Connection may not be deployed
    4. Integration Flow may not be redeployed yet
  </Accordion>
</AccordionGroup>
