<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Pipelines on materialize-monitoring Documentation</title><link>https://materializeinc.github.io/materialize-monitoring/reference/development/pipelines/</link><description>Recent content in Pipelines on materialize-monitoring Documentation</description><generator>Hugo</generator><language>en-us</language><atom:link href="https://materializeinc.github.io/materialize-monitoring/reference/development/pipelines/index.xml" rel="self" type="application/rss+xml"/><item><title>Overview</title><link>https://materializeinc.github.io/materialize-monitoring/reference/development/pipelines/overview/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://materializeinc.github.io/materialize-monitoring/reference/development/pipelines/overview/</guid><description>&lt;h1 id="pipelines-as-code"&gt;Pipelines as Code&lt;a class="anchor" href="#pipelines-as-code"&gt;#&lt;/a&gt;&lt;/h1&gt;&#10;&lt;p&gt;Instead of hand-maintained alloy config files, we author pipeline definitions as YAML, validate them against a project-owned JSONSchema, and render them to &lt;code&gt;config.alloy&lt;/code&gt; via the &lt;code&gt;mz-monitoring-build gen-pipelines&lt;/code&gt; subcommand. Sources live under &lt;code&gt;packages/alloy-pipelines/&lt;/code&gt;; schemas under &lt;code&gt;packages/mzmon-lib/schemas/alloy/&lt;/code&gt;; the Rust renderer and validator live under &lt;code&gt;packages/mzmon-lib/&lt;/code&gt;.&lt;/p&gt;&#10;&lt;p&gt;The audience for this section is &lt;strong&gt;repo contributors&lt;/strong&gt; — SRE, Field Engineering, CloudOps, Database Engineers — and AI agents reading the corresponding &lt;code&gt;pipelines-as-code&lt;/code&gt; skill. The pipelines themselves target machines (alloy), not end users, so the conventions below favor &lt;em&gt;contributor&lt;/em&gt; ergonomics: IDE autocomplete, schema-driven docs, escape hatches when reality outpaces the typed model.&lt;/p&gt;</description></item><item><title>Authoring</title><link>https://materializeinc.github.io/materialize-monitoring/reference/development/pipelines/authoring/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://materializeinc.github.io/materialize-monitoring/reference/development/pipelines/authoring/</guid><description>&lt;h1 id="authoring-pipelines"&gt;Authoring Pipelines&lt;a class="anchor" href="#authoring-pipelines"&gt;#&lt;/a&gt;&lt;/h1&gt;&#10;&lt;p&gt;This page covers the model and conventions for authoring alloy pipelines as YAML under &lt;code&gt;packages/alloy-pipelines/&lt;/code&gt;. The runtime aspects (label families, retention) live in &lt;a href="https://materializeinc.github.io/materialize-monitoring/reference/development/pipelines/logging/"&gt;Logging&lt;/a&gt; and &lt;a href="https://materializeinc.github.io/materialize-monitoring/reference/development/pipelines/metrics/"&gt;Metrics&lt;/a&gt;.&lt;/p&gt;&#10;&lt;h2 id="pipeline-model"&gt;Pipeline model&lt;a class="anchor" href="#pipeline-model"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;A pipeline is a YAML document that maps roughly 1:1 to an alloy config file:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;description&lt;/span&gt;: |&lt;span style="color:#e6db74"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; What this pipeline does, why it exists, what it forwards to.&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;logging&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;level&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;info&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;format&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;logfmt&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;blocks&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#f92672"&gt;loki.process&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;label&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;inputProcessor&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;forward_to&lt;/span&gt;: [{&lt;span style="color:#f92672"&gt;ref&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;loki.write.gateway.receiver&amp;#34;&lt;/span&gt;}]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;blocks&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#f92672"&gt;stage.drop&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;older_than&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;12h&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;drop_counter_reason&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;backlog &amp;gt; 12hr&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#f92672"&gt;stage.match&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;selector&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#39;{app=&amp;#34;alloy&amp;#34;}&amp;#39;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;blocks&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#f92672"&gt;stage.logfmt&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;mapping&lt;/span&gt;: { &lt;span style="color:#f92672"&gt;msg&lt;/span&gt;: &lt;span style="color:#f92672"&gt;msg, level&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;level }&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Each entry in &lt;code&gt;blocks&lt;/code&gt; is a &lt;strong&gt;single-key object&lt;/strong&gt; whose key is either:&lt;/p&gt;</description></item><item><title>Metrics</title><link>https://materializeinc.github.io/materialize-monitoring/reference/development/pipelines/metrics/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://materializeinc.github.io/materialize-monitoring/reference/development/pipelines/metrics/</guid><description>&lt;h1 id="metrics-pipelines"&gt;Metrics Pipelines&lt;a class="anchor" href="#metrics-pipelines"&gt;#&lt;/a&gt;&lt;/h1&gt;&#10;&lt;p&gt;Metrics are processed primarily in &lt;strong&gt;otelcol&lt;/strong&gt;: Prometheus ingest and the final write use the &lt;code&gt;prometheus.*&lt;/code&gt; family, but everything between is converted to OTLP and shaped by &lt;code&gt;otelcol.processor.*&lt;/code&gt; components (we found little value in doing the processing with &lt;code&gt;prometheus.*&lt;/code&gt; blocks).&#10;They are authored the same way as log pipelines — see &lt;a href="https://materializeinc.github.io/materialize-monitoring/reference/development/pipelines/authoring/"&gt;Authoring&lt;/a&gt; for the pipeline model, the strict-attributes policy, and the &lt;code&gt;raw:&lt;/code&gt; escape hatch.&lt;/p&gt;&#10;&lt;!-- The logs-side runtime conventions (label families, retention) live in logging.md; this page is their metrics-side analog plus the component reference. --&gt;&#10;&lt;h2 id="gateway-topology"&gt;Gateway topology&lt;a class="anchor" href="#gateway-topology"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;The gateway carries metrics alongside logs (&lt;code&gt;packages/alloy-pipelines/gateway.yaml&lt;/code&gt;).&#10;Prometheus ingest is bridged into OTLP, processed in otelcol, then converted back to Prometheus for the write.&lt;/p&gt;</description></item><item><title>Logging</title><link>https://materializeinc.github.io/materialize-monitoring/reference/development/pipelines/logging/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://materializeinc.github.io/materialize-monitoring/reference/development/pipelines/logging/</guid><description>&lt;h1 id="logging-pipeline"&gt;Logging Pipeline&lt;a class="anchor" href="#logging-pipeline"&gt;#&lt;/a&gt;&lt;/h1&gt;&#10;&lt;p&gt;This is the authoritative reference for the log-processing pipelines that run on &lt;code&gt;alloy-agent&lt;/code&gt; and &lt;code&gt;alloy-gateway&lt;/code&gt;.&#10;The customer-facing &lt;a href="../../../../logs-and-events/architecture/"&gt;Logs &amp;amp; Events&lt;/a&gt; section links here for pipeline detail; this page is for repo contributors.&lt;/p&gt;&#10;&lt;!--&#10;Agent note: this page documents pipeline *conventions and shape*, not the full per-application match table — that lives in the pipeline sources and changes often. When you change pipeline behavior, attribute it via the implementing PR (see "Attribution and adoption status") rather than restating the whole config here.&#10;--&gt;&#10;&lt;h2 id="where-the-pipelines-live"&gt;Where the pipelines live&lt;a class="anchor" href="#where-the-pipelines-live"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;The pipelines are authored as code (see &lt;a href="../authoring/"&gt;Authoring&lt;/a&gt;) and rendered to &lt;code&gt;config.alloy&lt;/code&gt; by &lt;code&gt;mz-monitoring-build gen-pipelines&lt;/code&gt;:&lt;/p&gt;</description></item></channel></rss>