---
title: "Datadog Logs Input"
description: "read events from Datadog Logs"
source: "https://github.com/log-10x/modules/tree/main/pipelines/run/modules/input/analyzer/datadogLogs/module.yaml"
icon: "simple/datadog"

---
Configures a Datadog Logs input from which to read events to transform into typed [TenXObjects](https://doc.log10x.com/api/js/#TenXObject "Provide structured, reflective access to log/trace events read from input(s).").

Instances of this [module](https://doc.log10x.com/engine/module/) define a connection to a Datadog Logs service
from which to retrieve log messages, as well as the querying logic used
such as chronological direction, start values, time ranges, and page size
of each API request sent.

Datadog Logs inputs commonly run within scheduled jobs (e.g., k8s CronJob)
to retrieve a recent sample amount of events (e.g., 200MB in the last 10min) to [transform](https://doc.log10x.com/run/transform/ "Transform log and trace events into well-defined TenXObjects") into TenXObjects as part of the [Dev app](https://doc.log10x.com/apps/dev/) app.

## :material-wrench-outline: Config Files

To configure the Datadog Logs input module, [:material-cog: Edit](https://doc.log10x.com/config/app/#module-config "Learn how to edit app and module configurations") these files.  

Below is the default configuration from: [datadogLogs/config.yaml](https://github.dev/log-10x/config/blob/main/pipelines/run/input/analyzer/datadogLogs/config.yaml "datadogLogs/config.yaml"){target="\_blank"} (<span class="tenx-tooltip" data-tooltip="The config file below contains required fields to activate this module, marked with &#10071;">** Required Fields*</span>).  
  
<div class="edit-options">
    <a class="md-button tenx-edit-online-button" data-tooltip="Edit online on github.dev" href="https://github.dev/log-10x/config/blob/main/pipelines/run/input/analyzer/datadogLogs/config.yaml" target="_blank" rel="noopener noreferrer">
        <span class="twemoji" style="margin-right: 0.3rem;">
            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                <path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"></path>
            </svg>
        </span> Edit Online
    </a>
    <button class="md-button tenx-config.yaml0-edit-button" data-tooltip="Edit configuration file" data-dialog-id="config-yaml0-dialog">
        <span style="margin-right: 0.3rem;">
            <span class="twemoji">
                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                    <path d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                </svg>
            </span>
        </span>Edit Locally
    </button>
</div>

<dialog id="config-yaml0-dialog" class="md-dialog md-dialog--editor">
    <div class="editor-dialog-wrapper">
        <div class="editor-dialog-header">
            <span class="editor-dialog-title">Edit config.yaml Locally</span>
            <div class="editor-header-actions">
                <button class="editor-toolbar-btn yaml-editor-locations" data-tooltip="Save">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path></svg>
                </button>
                <button class="editor-toolbar-btn yaml-editor-reset" data-tooltip="Reset to default">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M12.5 8c-2.65 0-5.05 1-6.9 2.6L2 7v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8z"></path></svg>
                </button>
                <button class="editor-toolbar-btn yaml-editor-copy" data-tooltip="Copy to clipboard">
                    <svg class="icon-copy" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path></svg>
                    <svg class="icon-check" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg>
                </button>
                <span class="header-divider"></span>
                <button class="editor-toolbar-btn yaml-editor-fullscreen" data-tooltip="Fullscreen">
                    <svg class="icon-maximize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5,5H10V7H7V10H5V5M14,5H19V10H17V7H14V5M17,14H19V19H14V17H17V14M10,17V19H5V14H7V17H10Z"></path></svg>
                    <svg class="icon-minimize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M5,16H8V19H10V14H5V16M14,14V19H16V16H19V14H14M16,5V8H19V10H14V5H16M10,5V10H5V8H8V5H10Z"></path></svg>
                </button>
                <span class="header-divider"></span>
                <button class="editor-toolbar-btn editor-dialog-close" onclick="closeDialog('config-yaml0-dialog')" data-tooltip="Close">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path></svg>
                </button>
            </div>
        </div>
        <div class="editor-dialog-content">
            <div class="yaml-editor-container"></div>
        </div>
        <div class="yaml-editor-statusbar">
            <span class="yaml-editor-status"></span>
        </div>
    </div>
    <!-- Locations Popup -->
    <div class="locations-popup" style="display: none;">
        <div class="locations-popup-content">
            <div class="locations-popup-header">
                <span class="locations-header-label">Download and save to:</span>
                <button class="locations-popup-close" aria-label="Close">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
                        <path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path>
                    </svg>
                </button>
            </div>
            <ul class="locations-list">
                <li>
                    <span class="location-label">Linux / Docker / macOS
                        <span class="help-icon" data-tooltip="Default system location. The engine automatically reads configs from here at startup. Best for production deployments.">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                        </span>
                    </span>
                    <div class="location-path-row">
                        <code class="default-path location-path" data-tooltip=""
                            data-copy-osx="/etc/log10x/config/run/input/analyzer/datadogLogs/config.yaml"
                            data-copy-nix="/etc/log10x/config/run/input/analyzer/datadogLogs/config.yaml"
                            data-copy-win="C:\log10x\configs/run/input/analyzer/datadogLogs/config.yaml"></code>
                        <button class="copy-btn" data-tooltip="Copy path">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                            </svg>
                        </button>
                    </div>
                </li>
                <li>
                    <span class="location-label">Custom directory
                        <span class="help-icon" data-tooltip="Set TENX_CONFIG environment variable to point to a custom config directory. Useful when you want configs in a non-standard location.">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                        </span>
                    </span>
                    <div class="location-path-row">
                        <code class="location-path" data-tooltip="$TENX_CONFIG/run/input/analyzer/datadogLogs/config.yaml">$TENX_CONFIG/run/input/analyzer/datadogLogs/config.yaml</code>
                        <button class="copy-btn" data-tooltip="Copy path">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                            </svg>
                        </button>
                    </div>
                </li>
                <li>
                    <span class="location-label">Within cloned repo
                        <span class="help-icon" data-tooltip="First run: git clone github.com/log-10x/config. Then save the file to this path within the cloned folder. Use for version control.">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                        </span>
                    </span>
                    <div class="location-path-row">
                        <code class="location-path" data-tooltip="./pipelines/run/input/analyzer/datadogLogs/config.yaml">./pipelines/run/input/analyzer/datadogLogs/config.yaml</code>
                        <button class="copy-btn" data-tooltip="Copy path">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                            </svg>
                        </button>
                    </div>
                </li>
            </ul>
            <div class="locations-popup-footer">
                <button class="locations-download-btn" title="Download config file">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                        <path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path>
                    </svg>
                    <span>Download</span>
                </button>
            </div>
        </div>
    </div>
</dialog>

<template class="tenx-config-schema" data-encoding="base64">ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJpbmNsdWRlIiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAidGVueCIgOiB7CiAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICB9LAogICAgImRhdGFkb2dMb2dzIiA6IHsKICAgICAgInR5cGUiIDogImFycmF5IiwKICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAidHlwZSIgOiAib2JqZWN0IiwKICAgICAgICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogZmFsc2UsCiAgICAgICAgInByb3BlcnRpZXMiIDogewogICAgICAgICAgIm5hbWUiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJMb2dpY2FsIG5hbWUgZm9yIHRoaXMgRGF0YWRvZ0xvZ3MgaW5wdXRcblxuU2V0cyBhIGxvZ2ljYWwgbmFtZSAoZS5nLiwgJ215RGF0YWRvZ0xvZ3MnKSBmb3IgdGhpcyBpbnB1dC4gVGhlIFtpbnB1dE5hbWVdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vYXBpL2pzLyNUZW5YQmFzZU9iamVjdCtpbnB1dE5hbWUpIGZpZWxkIHJldHVybnMgdGhpcyB2YWx1ZSBhdCBydW4gdGltZSB0byBhbGxvdyBmb3IgaWRlbnRpZnlpbmcgYW5kIG9wZXJhdGluZyBvbiBpbnN0YW5jZXMgb3JpZ2luYXRpbmcgZnJvbSB0aGlzIGlucHV0LiIKICAgICAgICAgIH0sCiAgICAgICAgICAiZW5hYmxlZCIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAiYm9vbGVhbiIsCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJTZXRzIHdoZXRoZXIgdGhpcyBpbnB1dCBpcyBlbmFibGVkXG5cblNldHMgd2hldGhlciB0byBvcGVuIHRoZSBpbnB1dCBzdHJlYW0uIFRvIGVuYWJsZSB0aGlzIGlucHV0IG9ubHkgd2hlbiBhICdkYXRhZG9nTG9nc0hvc3QnIHN0YXJ0dXAgYXJndW1lbnQgdmFsdWUgaXMgdHJ1dGh5LCB1c2U6IGBgYCB5YW1sIGRhdGFkb2dMb2dzRW5hYmxlZDogJD1UZW5YRW52LmdldChcImRhdGFkb2dMb2dzSG9zdFwiKSBgYGAgVG8gbGVhcm4gbW9yZSBzZWUgW1RlblhFbnYuZ2V0XShodHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9qcy8jVGVuWEVudi5nZXQpLiAoQWNjZXB0cyBib29sZWFuIG9yIHN0cmluZyB3aXRoICQ9IHByZWZpeCBmb3IgcnVudGltZSBldmFsdWF0aW9uKSAoRGVmYXVsdDogdHJ1ZSkiLAogICAgICAgICAgICAiZGVmYXVsdCIgOiB0cnVlCiAgICAgICAgICB9LAogICAgICAgICAgInByaW50UHJvZ3Jlc3MiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgImJvb2xlYW4iLAogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiU2V0cyB3aGV0aGVyIHRoaXMgaW5wdXQgcHJpbnRzIHRocm91Z2hwdXQgc3RhdHMgdG8gdGhlIGNvbnNvbGVcblxuU2V0cyB3aGV0aGVyIHRoaXMgaW5wdXQgcHJpbnRzIHRocm91Z2hwdXQgc3RhdHMgdG8gdGhlIGNvbnNvbGUgZm9yIHRlc3RpbmcgYW4gaW50ZWdyYXRpb24gdG8gYSByZW1vdGUgZW5kcG9pbnQuIChBY2NlcHRzIGJvb2xlYW4gb3Igc3RyaW5nIHdpdGggJD0gcHJlZml4IGZvciBydW50aW1lIGV2YWx1YXRpb24pIChEZWZhdWx0OiBmYWxzZSkiLAogICAgICAgICAgICAiZGVmYXVsdCIgOiBmYWxzZQogICAgICAgICAgfSwKICAgICAgICAgICJ0b3RhbER1cmF0aW9uIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiU2V0cyBtYXhpbXVtIHRpbWUgdG8gcXVlcnkgdGhlIGJhY2tlbmRcblxuU2V0cyB0aGUgbWF4aW11bSB0aW1lIHRoZSBwaXBlbGluZSB3aWxsIGNvbnRpbnVlIHRvIHF1ZXJ5IHRoZSBkYXRhZG9nIGFwaSBiYWNrZW5kIGJlZm9yZSBleGl0aW5nLiBGb3IgZXhhbXBsZSwgc2V0dGluZyB0aGlzIHRvICcxbWluJyBtZWFucyB0aGF0IHF1ZXJpZXMgdG8gdGhlIGJhY2tlbmQgd2lsbCBzdG9wIGFmdGVyIDEgbWludXRlIGhhcyBwYXNzZWQuIChEZWZhdWx0OiA1bWluKSIsCiAgICAgICAgICAgICJkZWZhdWx0IiA6ICI1bWluIgogICAgICAgICAgfSwKICAgICAgICAgICJleHRyYWN0b3JzIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJhcnJheSIsCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJMaXN0IG9mIGV4dHJhY3RvcnMgdG8gYXBwbHkgb24gdGhlIGV2ZW50cyByZXR1cm5pbmcgZnJvbSB0aGUgcXVlcnlcblxuU2V0cyBsaXN0IG9mIGV4dHJhY3RvciBuYW1lcyB3aGljaCB3aWxsIHdvcmsgb24gdGhlIGV2ZW50cyByZXR1cm5pbmcgZnJvbSB0aGUgcXVlcnkuIEZvciBtb3JlIGluZm8gb24gZXh0cmFjdG9ycywgc2VlOiBodHRwczovL2RvYy5sb2cxMHguY29tL3J1bi9pbnB1dC9leHRyYWN0IiwKICAgICAgICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIgogICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICAgICAgImhvc3QiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJEYXRhZG9nTG9ncyBob3N0IGFkZHJlc3NcblxuU2V0cyB0aGUgRGF0YWRvZyBzaXRlIGFkZHJlc3MgdG8gY29ubmVjdCB0byAoZS5nLiwgJ3VzNS5kYXRhZG9naHEuY29tJykuIFRvIGxlYXJuIG1vcmUgc2VlIFtEYXRhZG9nIHNpdGVzXShodHRwczovL2RvY3MuZGF0YWRvZ2hxLmNvbS9nZXR0aW5nX3N0YXJ0ZWQvc2l0ZSkiCiAgICAgICAgICB9LAogICAgICAgICAgImFwaUtleSIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkRhdGFkb2cgQVBJIGtleSB0b2tlblxuXG5TZXRzIHRoZSAnREQtQVBJLUtFWScgQVBJIGtleSBhdXRoZW50aWNhdGlvbiByZXF1ZXN0IGhlYWRlci4gVG8gbGVhcm4gbW9yZSBzZWU6IFtBUEkga2V5c10oaHR0cHM6Ly9kb2NzLmRhdGFkb2docS5jb20vYWNjb3VudF9tYW5hZ2VtZW50L2FwaS1hcHAta2V5cy8pLiIKICAgICAgICAgIH0sCiAgICAgICAgICAiYXBwS2V5IiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiRGF0YWRvZyBhcHAga2V5XG5cblNldHMgdGhlICdERC1BUFBMSUNBVElPTi1LRVknIGFwcCBrZXkgYXV0aGVudGljYXRpb24gcmVxdWVzdCBoZWFkZXIuIFRvIGxlYXJuIG1vcmUgc2VlOiBbQVBJIGtleXNdKGh0dHBzOi8vZG9jcy5kYXRhZG9naHEuY29tL2FjY291bnRfbWFuYWdlbWVudC9hcGktYXBwLWtleXMvKS4iCiAgICAgICAgICB9LAogICAgICAgICAgInF1ZXJ5IiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiUXVlcnkgdG8gcGFzcyB0byB0aGUgRGF0YWRvZyAnYXBpL3YyL2xvZ3MvZXZlbnRzL3NlYXJjaCcgUkVTVCBlbmRwb2ludFxuXG5TZXRzIHRoZSBEYXRhZG9nIHF1ZXJ5IHVzZWQgdG8gcmVxdWVzdCBwYWdpbmF0ZWQgZG9jdW1lbnRzIGZyb20gd2hpY2ggdG8gZXh0cmFjdCBldmVudHMgdG8gdHJhbnNmb3JtIGludG8gVGVuWE9iamVjdHMuIFRoZSBbZGVmYXVsdCBxdWVyeV0oaHR0cHM6Ly9naXRodWIuY29tL2xvZy0xMHgvbW9kdWxlcy9ibG9iL21haW4vcGlwZWxpbmVzL3J1bi9tb2R1bGVzL2lucHV0L2FuYWx5emVyL2RhdGFkb2dMb2dzL3F1ZXJ5LnR4dCkgcmV0cmlldmVzIHBhZ2luYXRlZCB2YWx1ZXMgc29ydGVkIGluIGRlc2Mgb3JkZXIgYnkgQHRpbWVzdGFtcCwgc3RhcnRpbmcgZnJvbSB0aGUgdmFsdWUgb2YgJ25vdy0xNW0nIgogICAgICAgICAgfSwKICAgICAgICAgICJpbmRleGVzIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJhcnJheSIsCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJMaXN0IG9mIGluZGljZXMgdG8gc2VhcmNoIGluXG5cblNldHMgdGhlIGxpc3RzIG9mIGRhdGEgaW5kaWNlcyB0byBzZWFyY2ggaW4uIFRvIHNlYXJjaCBhbGwgZGF0YSBzdHJlYW1zIGFuZCBpbmRpY2VzLCBvbWl0IHRoaXMgcGFyYW1ldGVyIG9yIHVzZSAqIG9yIF9hbGwuIiwKICAgICAgICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIgogICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICAgICAgInF1ZXJ5U2l6ZSIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAibnVtYmVyIiwKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIk51bWJlciBvZiBkb2N1bWVudHMgdG8gcmVhZCBwZXIgYmF0Y2ggZnJvbSB0aGUgRGF0YWRvZyBzZXJ2ZXJcblxuU2V0cyB0aGUgbnVtYmVyIG9mIGRvY3VtZW50cyB0byByZXRyaWV2ZSB3aXRoIGVhY2ggcGFnZSBvZiByZXN1bHRzLiAoQWNjZXB0cyBudW1iZXIgb3Igc3RyaW5nIHdpdGggJD0gcHJlZml4IGZvciBydW50aW1lIGV2YWx1YXRpb24pIChEZWZhdWx0OiA1MDApIiwKICAgICAgICAgICAgImRlZmF1bHQiIDogNTAwCiAgICAgICAgICB9LAogICAgICAgICAgInNlYXJjaEZyb20iIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJUaW1lc3RhbXAgZnJvbSB3aGljaCB0byBiZWdpbiB0aGUgc2VhcmNoXG5cblRoaXMgdmFsdWUgc2V0cyB0aGUgaW5pdGlhbCB2YWx1ZSB1c2VkIHRvIHJlcXVlc3QgdGhlIGZpcnN0IHBhZ2Ugb2YgcmVzdWx0cy4gKERlZmF1bHQ6IG5vdygpIGluIG5hbm8uKSIsCiAgICAgICAgICAgICJkZWZhdWx0IiA6ICJub3coKSBpbiBuYW5vLiIKICAgICAgICAgIH0sCiAgICAgICAgICAicmV0cnlUaW1lb3V0IiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJudW1iZXIiLAogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiQSB0aW1lb3V0IHBlcmlvZCAoaW4gbWlsbGlzZWNvbmRzKSB0byB3YWl0IGZvciBxdWVyeWluZyBvZiBuZXcgZGF0YVxuXG5Vc2VkIGJ5IFtkYXRhZG9nLWlucHV0LmpzXShodHRwczovL2dpdGh1Yi5jb20vbG9nLTEweC9tb2R1bGVzL2Jsb2IvbWFpbi9waXBlbGluZXMvcnVuL21vZHVsZXMvaW5wdXQvYW5hbHl6ZXIvZGF0YWRvZ0xvZ3MvZGF0YWRvZy1pbnB1dC5qcykgdG8gZGV0ZXJtaW5lIGhvdyBsb25nIHRvIHdhaXQgdW50aWwgdGhlIG5leHQgdGltZSB0aGUgc2VhcmNoIGVuZHBvaW50IEFQSSBpcyBpbnZva2VkIHRvIHF1ZXJ5IGZvciBuZXcgZGF0YS4gKEFjY2VwdHMgbnVtYmVyIG9yIHN0cmluZyB3aXRoICQ9IHByZWZpeCBmb3IgcnVudGltZSBldmFsdWF0aW9uKSAoRGVmYXVsdDogMTAwMDApIiwKICAgICAgICAgICAgImRlZmF1bHQiIDogMTAwMDAKICAgICAgICAgIH0sCiAgICAgICAgICAidG90YWxCeXRlc0xpbWl0IiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJudW1iZXIiLAogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTWF4aW11bSB0b3RhbCBieXRlcyB0byByZWFkIGZyb20gaW5wdXQgYmVmb3JlIGNsb3NpbmdcblxuU2V0cyB0aGUgbWF4aW11bSBudW1iZXIgb2YgYnl0ZXMgYSB0YXJnZXQgcGlwZWxpbmUgaW5wdXQgd2lsbCByZWFkIGludG8gdGhlIHBpcGVsaW5lLiBUaGlzIHZhbHVlIGxpbWl0cyB0aGUgdm9sdW1lIG9mIGV2ZW50cyB0byByZWFkIGZyb20gYSBsb2NhbC9yZW1vdGUgc291cmNlIChlLmcuLCBsb2cgYW5hbHl6ZXIpLiAgIEZvciBleGFtcGxlOiBgYGAgeWFtbCBkYXRhZG9nTG9nc1RvdGFsQnl0ZXNMaW1pdDogJD1wYXJzZUJ5dGVzKFwiMUdCXCIpIGBgYCAoQWNjZXB0cyBudW1iZXIgb3Igc3RyaW5nIHdpdGggJD0gcHJlZml4IGZvciBydW50aW1lIGV2YWx1YXRpb24pIgogICAgICAgICAgfSwKICAgICAgICAgICJ0b3RhbEV2ZW50c0xpbWl0IiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJudW1iZXIiLAogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTWF4aW11bSB0b3RhbCBldmVudHMgdG8gcmVhZCBmcm9tIGlucHV0IGJlZm9yZSBjbG9zaW5nXG5cblNldHMgdGhlIG1heGltdW0gbnVtYmVyIG9mIGV2ZW50cyBhIHRhcmdldCBwaXBlbGluZSBpbnB1dCB3aWxsIHJlYWQgaW50byB0aGUgcGlwZWxpbmUuIFRoaXMgdmFsdWUgbGltaXRzIHRoZSB2b2x1bWUgb2YgZXZlbnRzIHRvIHJlYWQgZnJvbSBhIGxvY2FsL3JlbW90ZSBzb3VyY2UgKGUuZy4sIGxvZyBhbmFseXplcikuIChBY2NlcHRzIG51bWJlciBvciBzdHJpbmcgd2l0aCAkPSBwcmVmaXggZm9yIHJ1bnRpbWUgZXZhbHVhdGlvbikgKERlZmF1bHQ6IDEwMDAwKSIsCiAgICAgICAgICAgICJkZWZhdWx0IiA6IDEwMDAwCiAgICAgICAgICB9LAogICAgICAgICAgInF1ZXJ5SW50ZXJ2YWwiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgIm51bWJlciIsCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJRdWVyeSBpbnRlcnZhbCAoaW4gbWlsbGlzZWNvbmRzKSBmb3IgY2hlY2tpbmcgbmV3IGRhdGEgZnJvbSByZW1vdGUgc291cmNlXG5cblNldHMgdGhlIGludGVydmFsIGJldHdlZW4gcXVlcmllcyB0byB0aGUgcmVtb3RlIERhdGFkb2cgTG9ncyBBUEkuIFRoaXMgY29udHJvbHMgaG93IGZyZXF1ZW50bHkgdGhlIGlucHV0IHBvbGxzIGZvciBuZXcgbG9nIGRhdGEuICBGb3IgZXhhbXBsZTogYGBgIHlhbWwgZGF0YWRvZ0xvZ3NRdWVyeUludGVydmFsOiAkPXBhcnNlRHVyYXRpb24oXCI1c1wiKSBgYGAgKEFjY2VwdHMgbnVtYmVyIG9yIHN0cmluZyB3aXRoICQ9IHByZWZpeCBmb3IgcnVudGltZSBldmFsdWF0aW9uKSAoRGVmYXVsdDogMjAwMCkiLAogICAgICAgICAgICAiZGVmYXVsdCIgOiAyMDAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAicmVxdWlyZWQiIDogWwogICAgICAgICAgIm5hbWUiLAogICAgICAgICAgImhvc3QiLAogICAgICAgICAgImFwaUtleSIsCiAgICAgICAgICAiYXBwS2V5IgogICAgICAgIF0KICAgICAgfQogICAgfQogIH0sCiAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IHRydWUKfQ==</template>

```yaml
# 🔟❎ 'run' Datadog Logs input configuration

# Configure a Datadog Logs event input
# To learn more see https://doc.log10x.com/run/input/analyzer/datadogLogs/

# Set the 10x pipeline to 'run'
tenx: run

# =============================== Dependencies ================================

include: run/modules/input/analyzer/datadogLogs

# ============================== Datadog Inputs ===============================

# Multiple Datadog inputs can be defined below
datadogLogs:

    # 'name' sets a unique logical name across all pipeline inputs
  - name: DatadogLogs
    
    # -------------------------- Connection Options ---------------------------

    # 'apiKey' and 'appKey' must be set to authenticate with the logs endpoint
    #  To learn more see: https://docs.datadoghq.com/account_management/api-app-keys/
    apiKey: $=TenXEnv.get("DD_API_KEY") # (❗ REQUIRED)

    appKey: $=TenXEnv.get("DD_APP_KEY") # (❗ REQUIRED)

    # 'host' points to the target Datadog site
    #  To learn more see: https://docs.datadoghq.com/getting_started/site/
    host: us5.datadoghq.com

    # ----------------------------- Query Options -----------------------------

    # 'query' sets the Datadog query used to request paginated documents.
    #  The default query (defined in 'run/modules/input/analyzer/datadog/query.txt') retrieves
    #  values sorted in desc order by @timestamp, starting from the value of 'searchFrom'
    query: null

    # 'searchFrom sets the initial value used to request the first page of results.
    searchFrom: now-1000h

    # 'querySize' sets the number of documents to retrieve with each paginated request
    querySize: 500

    # 'indexes' sets the lists of data indices to search in
    # If not provided, will use a default of '*'
    indexes: null

    # --------------------------- Backpressure Options -----------------------

    # 'queryInterval' sets the interval between queries to the remote API
    queryInterval: $=parseDuration("5s")

    # 'totalDuration' sets the max duration to try reading from the the remote input 
    totalDuration: $=parseDuration("5min")

    # 'totalBytesLimit' sets the max total bytes to read from the remote input
    totalBytesLimit: $=parseBytes("50MB")

    # 'totalEventsLimit' sets the max number of events to read the remote input
    totalEventsLimit: 10000

    # --------------------------- Ancillary Options ---------------------------

    # 'printProgress' controls whether to print a progress gage to the console
    #  This option helps test the input
    printProgress: $=!TenXEnv.get("quiet")
```

## :material-menu: Options

Specify the options below to [configure](/config "configure") multiple Datadog Logs input:

|Name|Description|Category|
|---|---|---|
|[datadogLogsName](#datadoglogsname "logical name for this DatadogLogs input")|Logical name for this DatadogLogs input|General|
|[datadogLogsEnabled](#datadoglogsenabled "sets whether this input is enabled")|Sets whether this input is enabled|General|
|[datadogLogsPrintProgress](#datadoglogsprintprogress "sets whether this input prints throughput stats to the console")|Sets whether this input prints throughput stats to the console|General|
|[datadogLogsTotalDuration](#datadoglogstotalduration "sets maximum time to query the backend")|Sets maximum time to query the backend|General|
|[datadogLogsExtractors](#datadoglogsextractors "list of extractors to apply on the events returning from the query")|List of extractors to apply on the events returning from the query|Advanced|
|[datadogLogsHost](#datadoglogshost "DatadogLogs host address")|DatadogLogs host address|Authentication|
|[datadogLogsApiKey](#datadoglogsapikey "Datadog API key token")|Datadog API key token|Authentication|
|[datadogLogsAppKey](#datadoglogsappkey "Datadog app key")|Datadog app key|Authentication|
|[datadogLogsQuery](#datadoglogsquery "query to pass to the Datadog 'api/v2/logs/events/search' REST endpoint")|Query to pass to the Datadog 'api/v2/logs/events/search' REST endpoint|Query|
|[datadogLogsIndexes](#datadoglogsindexes "list of indices to search in")|List of indices to search in|Query|
|[datadogLogsQuerySize](#datadoglogsquerysize "number of documents to read per batch from the Datadog server")|Number of documents to read per batch from the Datadog server|Query|
|[datadogLogsSearchFrom](#datadoglogssearchfrom "timestamp from which to begin the search")|Timestamp from which to begin the search|Query|
|[datadogLogsRetryTimeout](#datadoglogsretrytimeout "a timeout period (in milliseconds) to wait for querying of new data")|A timeout period (in milliseconds) to wait for querying of new data|Query|
|[datadogLogsTotalBytesLimit](#datadoglogstotalbyteslimit "maximum total bytes to read from input before closing")|Maximum total bytes to read from input before closing|Backpressure|
|[datadogLogsTotalEventsLimit](#datadoglogstotaleventslimit "maximum total events to read from input before closing")|Maximum total events to read from input before closing|Backpressure|
|[datadogLogsQueryInterval](#datadoglogsqueryinterval "query interval (in milliseconds) for checking new data from remote source")|Query interval (in milliseconds) for checking new data from remote source|Backpressure|

### General

#### :material-menu-right-outline:**`datadogLogsName`**

Logical name for this DatadogLogs input.

|Type|Required|Category|
|---|---|---|
|String|✔|General|

Sets a logical name (e.g., 'myDatadogLogs') for this input.
The [inputName](https://doc.log10x.com/api/js/#TenXBaseObject+inputName "Returns the context in which the current object, template or summary was created.") field
returns this value at run time to allow for identifying and operating on instances originating from this input.


#### :material-menu-right-outline:**`datadogLogsEnabled`**

Sets whether this input is enabled.

|Type|Default|Category|
|---|---|---|
|Boolean|true|General|

Sets whether to open the input stream.
To enable this input only when a 'datadogLogsHost' startup argument value is truthy, use:

```yaml
datadogLogsEnabled: $=TenXEnv.get("datadogLogsHost")
```

To learn more see [TenXEnv.get](https://doc.log10x.com/api/js/#TenXEnv.get).


#### :material-menu-right-outline:**`datadogLogsPrintProgress`**

Sets whether this input prints throughput stats to the console.

|Type|Default|Category|
|---|---|---|
|Boolean|false|General|

Sets whether this input prints throughput stats to the console
for testing an integration to a remote endpoint.


#### :material-menu-right-outline:**`datadogLogsTotalDuration`**

Sets maximum time to query the backend.

|Type|Default|Category|
|---|---|---|
|String|5min|General|

Sets the maximum time the pipeline will continue to query the datadog api backend before exiting.
For example, setting this to '1min' means that queries to the backend will stop after 1 minute has passed.


### Advanced

#### :material-menu-right-outline:**`datadogLogsExtractors`**

List of extractors to apply on the events returning from the query.

|Type|Default|Category|
|---|---|---|
|List|\[\]|Advanced|

Sets list of extractor names which will work on the events returning from the query.
For more info on extractors, see: https://doc.log10x.com/run/input/extract.


### Authentication

#### :material-menu-right-outline:**`datadogLogsHost`**

DatadogLogs host address.

|Type|Required|Category|
|---|---|---|
|String|✔|Authentication|

Sets the Datadog site address to connect to (e.g., 'us5.datadoghq.com').
To learn more see [Datadog sites](https://docs.datadoghq.com/getting_started/site){target="\_blank"}.


#### :material-menu-right-outline:**`datadogLogsApiKey`**

Datadog API key token.

|Type|Required|Category|
|---|---|---|
|String|✔|Authentication|

Sets the 'DD-API-KEY' API key authentication request header.
To learn more see: [API keys](https://docs.datadoghq.com/account_management/api-app-keys/){target="\_blank"}.


#### :material-menu-right-outline:**`datadogLogsAppKey`**

Datadog app key.

|Type|Required|Category|
|---|---|---|
|String|✔|Authentication|

Sets the 'DD-APPLICATION-KEY' app key authentication request header.
To learn more see: [API keys](https://docs.datadoghq.com/account_management/api-app-keys/){target="\_blank"}.


### Query

#### :material-menu-right-outline:**`datadogLogsQuery`**

Query to pass to the Datadog 'api/v2/logs/events/search' REST endpoint.

|Type|Default|Category|
|---|---|---|
|String|""|Query|

Sets the Datadog query used to request paginated documents from which to extract
events to transform into TenXObjects. The [default query](https://github.com/log-10x/modules/blob/main/pipelines/run/modules/input/analyzer/datadogLogs/query.txt){target="\_blank"}
retrieves paginated values sorted in desc order by @timestamp, starting from the value of 'now-15m'.


#### :material-menu-right-outline:**`datadogLogsIndexes`**

List of indices to search in.

|Type|Default|Category|
|---|---|---|
|List|\[\]|Query|

Sets the lists of data indices to search in.
To search all data streams and indices, omit this parameter or use \* or \_all.


#### :material-menu-right-outline:**`datadogLogsQuerySize`**

Number of documents to read per batch from the Datadog server.

|Type|Default|Category|
|---|---|---|
|Number|500|Query|

Sets the number of documents to retrieve with each page of results.


#### :material-menu-right-outline:**`datadogLogsSearchFrom`**

Timestamp from which to begin the search.

|Type|Default|Category|
|---|---|---|
|String|now() in nano.|Query|

This value sets the initial value used to request the first page of results.


#### :material-menu-right-outline:**`datadogLogsRetryTimeout`**

A timeout period (in milliseconds) to wait for querying of new data.

|Type|Default|Category|
|---|---|---|
|Number|10000|Query|

Used by [datadog-input.js](https://github.com/log-10x/modules/blob/main/pipelines/run/modules/input/analyzer/datadogLogs/datadog-input.js){target="\_blank"} to determine how long to wait
until the next time the search endpoint API is invoked to query for new data.


### Backpressure

#### :material-menu-right-outline:**`datadogLogsTotalBytesLimit`**

Maximum total bytes to read from input before closing.

|Type|Default|Category|
|---|---|---|
|Number|50000000|Backpressure|

sets the maximum number of bytes a target pipeline input will read into the pipeline.
This value limits the volume of events to read from a local/remote source (e.g., log analyzer).

For example:

```yaml
datadogLogsTotalBytesLimit: $=parseBytes("1GB")
```


#### :material-menu-right-outline:**`datadogLogsTotalEventsLimit`**

Maximum total events to read from input before closing.

|Type|Default|Category|
|---|---|---|
|Number|10000|Backpressure|

Sets the maximum number of events a target pipeline input will read into the pipeline.
This value limits the volume of events to read from a local/remote source (e.g., log analyzer).


#### :material-menu-right-outline:**`datadogLogsQueryInterval`**

Query interval (in milliseconds) for checking new data from remote source.

|Type|Default|Category|
|---|---|---|
|Number|2000|Backpressure|

sets the interval between queries to the remote Datadog Logs API.
This controls how frequently the input polls for new log data.

For example:

```yaml
datadogLogsQueryInterval: $=parseDuration("5s")
```


<br/>:material-github: This module is defined in [datadogLogs/module.yaml](https://github.com/log-10x/modules/tree/main/pipelines/run/modules/input/analyzer/datadogLogs/module.yaml "datadogLogs/module.yaml"){target="\_blank"}.

