---
title: "Pipeline Monitor"
description: "emit pipeline debug values to log and the 10x time series backend"
source: "https://github.com/log-10x/modules/tree/main/pipelines/shared/units/monitor/unit.yaml"
icon: "material/heart-cog-outline"

---
Logs diagnostics and publishes health metrics from pipeline [units](https://doc.log10x.com/engine/pipeline/#units).

Each unit emits counters (scanned symbols, input events) and states (scan errors), periodically logged and published to the [metric output](https://doc.log10x.com/run/output/metric/ "Write aggregated TenXSummary instances to metric outputs (e.g., Prometheus, Datadog)") the pipeline configures.

## :material-wrench-outline: Config Files

To configure the Pipeline monitor unit, [:material-cog: Edit](https://doc.log10x.com/config/app/#module-config "Learn how to edit app and module configurations") these files:
??? tenx-run "Run"

    <a id="run"></a>
    ### Run {.hidden-heading}

    Launch a [run pipeline](https://doc.log10x.com/run "run pipeline") to report, receive and optimize log/trace events in edge and cloud environments.

    Below is the default configuration from: [monitor/config.yaml](https://github.dev/log-10x/config/blob/main/pipelines/run/monitor/config.yaml "monitor/config.yaml"){target="\_blank"}.  
  
    <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/monitor/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 Pipeline monitor Config 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/monitor/config.yaml"
                                data-copy-nix="/etc/log10x/config/run/monitor/config.yaml"
                                data-copy-win="C:\log10x\configs/run/monitor/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/monitor/config.yaml">$TENX_CONFIG/run/monitor/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/monitor/config.yaml">./pipelines/run/monitor/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">ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJ0ZW54IiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAibW9uaXRvciIgOiB7CiAgICAgICJ0eXBlIiA6ICJvYmplY3QiLAogICAgICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogZmFsc2UsCiAgICAgICJwcm9wZXJ0aWVzIiA6IHsKICAgICAgICAicG9sbEludGVydmFsIiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJJbnRlcnZhbCB0byBpbmZvcm1hdGlvbiB0byBsb2cvIHB1Ymxpc2ggY291bnRlcnNcblxuU2V0cyB0aGUgZnJlcXVlbmN5IHRvIGxvZyBkZWJ1ZyBpbmZvcm1hdGlvbiBmb3IgcGlwZWxpbmUgdW5pdHMgc3BlY2lmaWVkIGJ5ICdtb25pdG9yVW5pdHMnIHRvIGxvZy90aW1lIHNlcmllcyBiYWNrZW5kLiAoRGVmYXVsdDogMXMpIiwKICAgICAgICAgICJkZWZhdWx0IiA6ICIxcyIKICAgICAgICB9LAogICAgICAgICJ1bml0cyIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJhcnJheSIsCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiUGlwZWxpbmUgdW5pdCBuYW1lcyB0byBsb2cgYW5kIGVtaXQgZGVidWcgbWV0cmljc1xuXG5TcGVjaWZpZXMgd2hpY2ggMTB4IHBpcGVsaW5lIHVuaXRzIHdpbGwgbG9nIGFuZCBlbWl0IGRlYnVnIG1ldHJpY3Mgd2hpbGUgZXhlY3V0aW5nLiBFYWNoIHBpcGVsaW5lIHByaW50cyB0aGUgbmFtZXMgb2YgaXRzIGNvbmZpZ3VyZWQgdW5pdHMgdXBvbiBzdGFydHVwIG9uIHRoZSBjb25zb2xlIGFuZCBsb2cgZmlsZS4gIFRvIGVtaXQgaW5mb3JtYXRpb24gZm9yIGFsbCBwaXBlbGluZSB1bml0cywgc3BlY2lmeSAnKicuIiwKICAgICAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAibWV0cmljUGF0dGVybiIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiUmVnZXhwIHBhdHRlcm4gdG8gbWF0Y2ggYWdhaW5zdCBjb3VudGVycyB0byBwdWJsaXNoIGFzIG1ldHJpY3NcblxuRGVmaW5lcyBhIHBhdHRlcm4gdG8gbWF0Y2ggYWdhaW5zdCBjb3VudGVycyBkZWJ1ZyBwcm9kdWNlZCBieSB1bml0cyBzcGVjaWZpZWQgYnkgW21vbml0b3JVbml0c10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9zaGFyZWQvbW9uaXRvci8jbW9uaXRvcnVuaXRzKS4gRWFjaCBjb3VudGVyIHByb3ZpZGVzIGEgbmFtZSBpbiB0aGUgZm9sbG93aW5nIGZvcm1hdDogYDx1bml0IG5hbWU+XzxrZXkwLi4uS2V5Tj5gIChlLmcuLCBpbnB1dF9ldmVudHNfMCkuICBUaGUgcGlwZWxpbmUgd2lsbCBlbWl0IGNvdW50ZXJzIG1hdGNoaW5nIHRoZSBwYXR0ZXJuLCBbdGFnZ2luZyBlYWNoIGNvdW50ZXJdKGh0dHBzOi8vd3d3LmJhZWxkdW5nLmNvbS9taWNyb21ldGVyIzEtdGFncykgIHdpdGggaW5mb3JtYXRpb24gYWJvdXQgdGhlIHJlcG9ydGluZyB1bml0IGluc3RhbmNlIChlLmcuLCB0aGUgZGVzdGluYXRpb24gZm9yIGEgJ3J1bicgcGlwZWxpbmUgb3V0cHV0KS4iCiAgICAgICAgfQogICAgICB9CiAgICB9CiAgfSwKICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogZmFsc2UKfQ==</template>

    ```yaml
    # 🔟❎ 'run' monitor configuration
    #
    # Emit diagnostic information and metrics to the 10x console and log.
    # To learn more see https://doc.log10x.com/run/monitor/
    
    # Set the 10x pipeline to 'run'
    tenx: run
    
    # ============================== Monitor Options ================================
    
    monitor:
    
      # 'pollInterval' sets the frequency by which to emit debug information
      #  for the target units specified below.
      pollInterval: 1s
    
      # 'metricPattern' specifies a regex pattern to match against counters generated
      #  by the specified 'units' below to publish as metrics to the 10x console
      metricPattern: null
    
      # 'units' specifies the run pipeline units to emit period diagnostic
      #  information to the 10x log and console. Possible values:
      units:
     
        # load symbol library file(s)
        # - symbolLoader
    
        # load TenXTemplates file(s)
        # - templateLoader
    
        # load hash values of known TenXTemplates from file(s)
        # - loadTemplateHashes
    
        # read input log/trace event from text content passes a launch argument
        # - readInline
    
        # read input log/trace event from a file
        # - readFile
    
        # read input log/trace event from a java.io.InputStream/Reader
        # - readStream
    
        # split transform workload across multiple cores
        # - parallelize
    
        # transform input events into structured well-defined TenXObjects
        # - transform
    
        # group TenXObjects into composite logical units
        # - group
    
        # aggregate TenXObjects into summary instances
        # - aggregateSingle
    
        # write TenXObjects to java.io.OutputStream/Writer(s)
        # - streamOutput
    
        # write TenXObjects to stdout/err
        # - stdOutput
    
        # write TenXObjects to log4j2 appenders
        # - logOutput
    
        # write TenXObjects to Micrometer registries
        # - metricOutput
    ```

??? tenx-compile "Compile"

    <a id="compile"></a>
    ### Compile {.hidden-heading}

    Launch a [compile pipeline](https://doc.log10x.com/compile "compile pipeline") to scan source code and binary files to generate symbol unit and library files.

    Below is the default configuration from: [monitor/config.yaml](https://github.dev/log-10x/config/blob/main/pipelines/compile/monitor/config.yaml "monitor/config.yaml"){target="\_blank"}.  
  
    <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/compile/monitor/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.yaml1-edit-button" data-tooltip="Edit configuration file" data-dialog-id="config-yaml1-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-yaml1-dialog" class="md-dialog md-dialog--editor">
        <div class="editor-dialog-wrapper">
            <div class="editor-dialog-header">
                <span class="editor-dialog-title">Edit Pipeline monitor Config 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-yaml1-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/compile/monitor/config.yaml"
                                data-copy-nix="/etc/log10x/config/compile/monitor/config.yaml"
                                data-copy-win="C:\log10x\configs/compile/monitor/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/compile/monitor/config.yaml">$TENX_CONFIG/compile/monitor/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/compile/monitor/config.yaml">./pipelines/compile/monitor/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">ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJ0ZW54IiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAibW9uaXRvciIgOiB7CiAgICAgICJ0eXBlIiA6ICJvYmplY3QiLAogICAgICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogZmFsc2UsCiAgICAgICJwcm9wZXJ0aWVzIiA6IHsKICAgICAgICAicG9sbEludGVydmFsIiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJJbnRlcnZhbCB0byBpbmZvcm1hdGlvbiB0byBsb2cvIHB1Ymxpc2ggY291bnRlcnNcblxuU2V0cyB0aGUgZnJlcXVlbmN5IHRvIGxvZyBkZWJ1ZyBpbmZvcm1hdGlvbiBmb3IgcGlwZWxpbmUgdW5pdHMgc3BlY2lmaWVkIGJ5ICdtb25pdG9yVW5pdHMnIHRvIGxvZy90aW1lIHNlcmllcyBiYWNrZW5kLiAoRGVmYXVsdDogMXMpIiwKICAgICAgICAgICJkZWZhdWx0IiA6ICIxcyIKICAgICAgICB9LAogICAgICAgICJ1bml0cyIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJhcnJheSIsCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiUGlwZWxpbmUgdW5pdCBuYW1lcyB0byBsb2cgYW5kIGVtaXQgZGVidWcgbWV0cmljc1xuXG5TcGVjaWZpZXMgd2hpY2ggMTB4IHBpcGVsaW5lIHVuaXRzIHdpbGwgbG9nIGFuZCBlbWl0IGRlYnVnIG1ldHJpY3Mgd2hpbGUgZXhlY3V0aW5nLiBFYWNoIHBpcGVsaW5lIHByaW50cyB0aGUgbmFtZXMgb2YgaXRzIGNvbmZpZ3VyZWQgdW5pdHMgdXBvbiBzdGFydHVwIG9uIHRoZSBjb25zb2xlIGFuZCBsb2cgZmlsZS4gIFRvIGVtaXQgaW5mb3JtYXRpb24gZm9yIGFsbCBwaXBlbGluZSB1bml0cywgc3BlY2lmeSAnKicuIiwKICAgICAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAibWV0cmljUGF0dGVybiIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiUmVnZXhwIHBhdHRlcm4gdG8gbWF0Y2ggYWdhaW5zdCBjb3VudGVycyB0byBwdWJsaXNoIGFzIG1ldHJpY3NcblxuRGVmaW5lcyBhIHBhdHRlcm4gdG8gbWF0Y2ggYWdhaW5zdCBjb3VudGVycyBkZWJ1ZyBwcm9kdWNlZCBieSB1bml0cyBzcGVjaWZpZWQgYnkgW21vbml0b3JVbml0c10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9zaGFyZWQvbW9uaXRvci8jbW9uaXRvcnVuaXRzKS4gRWFjaCBjb3VudGVyIHByb3ZpZGVzIGEgbmFtZSBpbiB0aGUgZm9sbG93aW5nIGZvcm1hdDogYDx1bml0IG5hbWU+XzxrZXkwLi4uS2V5Tj5gIChlLmcuLCBpbnB1dF9ldmVudHNfMCkuICBUaGUgcGlwZWxpbmUgd2lsbCBlbWl0IGNvdW50ZXJzIG1hdGNoaW5nIHRoZSBwYXR0ZXJuLCBbdGFnZ2luZyBlYWNoIGNvdW50ZXJdKGh0dHBzOi8vd3d3LmJhZWxkdW5nLmNvbS9taWNyb21ldGVyIzEtdGFncykgIHdpdGggaW5mb3JtYXRpb24gYWJvdXQgdGhlIHJlcG9ydGluZyB1bml0IGluc3RhbmNlIChlLmcuLCB0aGUgZGVzdGluYXRpb24gZm9yIGEgJ3J1bicgcGlwZWxpbmUgb3V0cHV0KS4iCiAgICAgICAgfQogICAgICB9CiAgICB9CiAgfSwKICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogZmFsc2UKfQ==</template>

    ```yaml
    # 🔟❎ 'compile' monitor configuration
    
    # Emit diagnostic information and metrics to the 10x console and log.
    # To learn more see https://doc.log10x.com/compile/monitor/
    
    # Set the 10x pipeline to 'compile'
    tenx: compile
    
    # ============================== Monitor Options ================================
    
    monitor:
    
      # 'pollInterval' sets the frequency by which to emit debug information
      #  for the target units specified below.
      pollInterval: null
    
      # 'metricPattern' specifies a regex pattern to match against counters generated
      #  by the specified 'units' below to publish as metrics to the 10x console
      metricPattern: null
    
      # 'units' specifies the compile pipeline units to emit period diagnostic
      #  information to the 10x log and console. Possible values:
      units:
    
        # Push output symbol files to a GitHub repository
        - githubPushFolder
    
        # discover input source code/binary files to scan on disk
        - discoverSources
    
        # scan input files to generate output symbol unit files
        - scanToFolder
    
        # launch a subprocess to scan target input files
        - subprocessScan
    
        # link symbol unit files into a symbol library file for use at run time
        - link
     
    ```

## :material-menu: Options

Specify the options below to [configure](/config "configure") the Pipeline monitor:

|Name|Description|
|---|---|
|[monitorPollInterval](#monitorpollinterval "interval to information to log/ publish counters")|Interval to information to log/ publish counters|
|[monitorUnits](#monitorunits "pipeline unit names to log and emit debug metrics")|Pipeline unit names to log and emit debug metrics|
|[monitorMetricPattern](#monitormetricpattern "regexp pattern to match against counters to publish as metrics")|Regexp pattern to match against counters to publish as metrics|

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

Interval to information to log/ publish counters.

|Type|Default|
|---|---|
|String|1s|

Sets the frequency to log debug information for pipeline units specified by 'monitorUnits' to
log/time series backend.


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

Pipeline unit names to log and emit debug metrics.

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

Specifies which 10x pipeline units will log and emit debug metrics
while executing. Each pipeline prints the names of its configured units upon startup on the console and log file.
To emit information for all pipeline units, specify '\*'.


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

Regexp pattern to match against counters to publish as metrics.

|Type|Default|
|---|---|
|String|""|

Defines a pattern to match against counters debug produced by units specified by [monitorUnits](https://doc.log10x.com/shared/monitor/#monitorunits).
Each counter provides a name in the following format: `<unit name>_<key0...KeyN>` (e.g., input\_events\_0).

The pipeline will emit counters matching the pattern, [tagging each counter](https://www.baeldung.com/micrometer#1-tags){target="\_blank"}
with information about the reporting unit instance (e.g., the destination for a 'run' pipeline output).


<br/>:material-github: This unit is defined in [monitor/unit.yaml](https://github.com/log-10x/modules/tree/main/pipelines/shared/units/monitor/unit.yaml "monitor/unit.yaml"){target="\_blank"}.

