<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Kubernetes on ZAPP</title><link>/datacenter/zapp/tags/kubernetes/</link><description>Recent content in Kubernetes on ZAPP</description><generator>Hugo</generator><language>en-US</language><atom:link href="/datacenter/zapp/tags/kubernetes/index.xml" rel="self" type="application/rss+xml"/><item><title>Deploy the ZAPP Aggregator</title><link>/datacenter/zapp/docs/deployment/zapp-aggregator/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/datacenter/zapp/docs/deployment/zapp-aggregator/</guid><description>&lt;p&gt;Deploy the ZAPP Aggregator before deploying ZAPP Listener instances.&lt;/p&gt;
&lt;p&gt;The ZAPP Aggregator receives telemetry from listeners and exposes listener gRPC, UDP telemetry ingest, subscriber gRPC, metrics, and manifest endpoints.&lt;/p&gt;
&lt;h2 id="zapp-aggregator-values"&gt;ZAPP Aggregator values&lt;/h2&gt;
&lt;p&gt;Most deployments only need to review the image, replica count, ports, resources, metrics, and ServiceMonitor settings.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;zappAggregator&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;enabled&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;image&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;repository&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;nvcr.io/nvidia/zapp-aggregator&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;tag&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;pullPolicy&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;IfNotPresent&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;replicas&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;logLevel&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;info&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;metricsPort&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;8888&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;manifestUI&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;containerPorts&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;listenerGrpc&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;9991&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;udpTelemetry&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;9992&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;clientGrpc&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;9999&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;serviceMonitor&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;enabled&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;interval&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;30s&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Important fields:&lt;/p&gt;</description></item><item><title>NVIDIA ZAPP documentation</title><link>/datacenter/zapp/docs/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/datacenter/zapp/docs/</guid><description>&lt;div class="alert alert-primary" role="alert"&gt;&lt;div class="h4 alert-heading" role="heading"&gt;Important&lt;/div&gt;
&lt;p&gt;NVIDIA ZAPP Aggregation Protocol Pipeline is currently offered as a Developer Preview. The software may have limitations, may change significantly, and includes functionality that continues to be refined through testing and feedback. It should not be used in production environments except as part of an authorized collaboration.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Use this documentation to deploy and operate ZAPP telemetry infrastructure on Kubernetes.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/datacenter/zapp/docs/overview/"&gt;ZAPP overview&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="/datacenter/zapp/docs/concepts/"&gt;Concepts&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="/datacenter/zapp/docs/components/"&gt;Components&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="/datacenter/zapp/docs/plugins/"&gt;Plugins&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="/datacenter/zapp/docs/deployment/"&gt;Deployment&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="/datacenter/zapp/docs/examples/"&gt;Examples&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These pages cover ZAPP concepts, components, pipeline configuration, plugins, deployment, and example listener configurations.&lt;/p&gt;</description></item><item><title>Redfish listener architecture</title><link>/datacenter/zapp/docs/examples/redfish-listener/architecture/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/datacenter/zapp/docs/examples/redfish-listener/architecture/</guid><description>&lt;p&gt;The Redfish listener example combines Redfish sensor discovery, a ZAPP Listener pipeline, and ZAPP Aggregator forwarding.&lt;/p&gt;
&lt;p&gt;&lt;img src="/datacenter/zapp/images/docs/redfish-listener-architecture.png" alt="Redfish listener architecture showing baseboard management controller Redfish endpoints, sensor discovery, the listener pipeline, and the ZAPP Aggregator."&gt;
&lt;/p&gt;
&lt;p&gt;The Redfish listener discovers or collects telemetry from Redfish-enabled baseboard management controllers (BMCs) and forwards telemetry to the ZAPP Aggregator.&lt;/p&gt;
&lt;h2 id="main-components"&gt;Main components&lt;/h2&gt;
&lt;dl&gt;
&lt;dt&gt;&lt;strong&gt;BMC Redfish endpoints&lt;/strong&gt;&lt;/dt&gt;
&lt;dd&gt;BMC Redfish endpoints provide sensor metadata and telemetry from managed infrastructure.&lt;/dd&gt;
&lt;dt&gt;&lt;strong&gt;Sensor pipeline&lt;/strong&gt;&lt;/dt&gt;
&lt;dd&gt;The &lt;code&gt;envPlugins.sensorPipeline&lt;/code&gt; configuration runs before pipeline components start. It loads or discovers sensors and populates the listener sensor manifest.&lt;/dd&gt;
&lt;dt&gt;&lt;strong&gt;Redfish listener pipeline&lt;/strong&gt;&lt;/dt&gt;
&lt;dd&gt;The listener pipeline runs inside the &lt;code&gt;zapp&lt;/code&gt; container. For Redfish deployments, the pipeline includes Redfish configuration and forwards telemetry to an &lt;code&gt;aggregatorStreamer&lt;/code&gt; component.&lt;/dd&gt;
&lt;dt&gt;&lt;strong&gt;ZAPP Aggregator&lt;/strong&gt;&lt;/dt&gt;
&lt;dd&gt;The ZAPP Aggregator receives telemetry from the listener and exposes metrics, manifest data, and subscriber gRPC access.&lt;/dd&gt;
&lt;/dl&gt;
&lt;h2 id="data-flow"&gt;Data flow&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;The listener reads the pipeline file and expands environment and secret references.&lt;/li&gt;
&lt;li&gt;The sensor pipeline reads &lt;code&gt;envPlugins.sensorPipeline&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;ZAPP discovers or loads Redfish sensors into the manifest.&lt;/li&gt;
&lt;li&gt;Pipeline components start.&lt;/li&gt;
&lt;li&gt;The listener forwards telemetry to the ZAPP Aggregator.&lt;/li&gt;
&lt;li&gt;Operators inspect &lt;code&gt;/metrics&lt;/code&gt;, &lt;code&gt;/manifest&lt;/code&gt;, or &lt;code&gt;/manifest.json&lt;/code&gt; to validate deployment health.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The Helm chart mounts the pipeline at &lt;code&gt;/config/pipeline.yaml&lt;/code&gt;, mounts Redfish credential files as Kubernetes Secrets, and passes the ZAPP Aggregator address to the listener with &lt;code&gt;--aggregator&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Redfish listener example</title><link>/datacenter/zapp/docs/examples/redfish-listener/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/datacenter/zapp/docs/examples/redfish-listener/</guid><description>&lt;p&gt;Use this example to understand, configure, monitor, and troubleshoot ZAPP telemetry collection for Redfish-enabled infrastructure.&lt;/p&gt;
&lt;p&gt;&lt;img src="/datacenter/zapp/images/docs/redfish-listener-example.svg" alt="Redfish collection flow showing Helm values, secrets, Redfish endpoints, listener sensor discovery, telemetry collection, aggregation, and operator validation."&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/datacenter/zapp/docs/examples/redfish-listener/architecture/"&gt;Redfish listener architecture&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="/datacenter/zapp/docs/examples/redfish-listener/configure-pipeline/"&gt;Configure the pipeline&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="/datacenter/zapp/docs/examples/redfish-listener/configure-secrets/"&gt;Configure Redfish secrets&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="/datacenter/zapp/docs/examples/redfish-listener/monitor/"&gt;Monitor the Redfish listener&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="/datacenter/zapp/docs/examples/redfish-listener/troubleshoot/"&gt;Troubleshoot the Redfish listener&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Start with &lt;a href="/datacenter/zapp/docs/deployment/zapp/"&gt;Deploy ZAPP Listeners&lt;/a&gt;
 if you already know the topology and need Helm values.&lt;/p&gt;</description></item><item><title>ZAPP Listener</title><link>/datacenter/zapp/docs/components/zapp/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/datacenter/zapp/docs/components/zapp/</guid><description>&lt;p&gt;A ZAPP Listener runs a telemetry pipeline from a YAML configuration file. A listener can receive ZAPP payloads, poll Redfish endpoints, process payload batches, forward telemetry to the ZAPP Aggregator, or expose telemetry directly to consumers.&lt;/p&gt;
&lt;p&gt;&lt;img src="/datacenter/zapp/images/docs/zapp-listener-pipeline.svg" alt="ZAPP Listener pipeline showing deployment inputs, source components, processing components, target components, and telemetry outputs."&gt;
&lt;/p&gt;
&lt;p&gt;A listener pipeline can poll BMC Redfish endpoints and expose the resulting time-series telemetry directly through a &lt;code&gt;grpcServer&lt;/code&gt; component.&lt;/p&gt;</description></item><item><title>ZAPP overview</title><link>/datacenter/zapp/docs/overview/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/datacenter/zapp/docs/overview/</guid><description>&lt;p&gt;ZAPP collects telemetry from infrastructure systems and forwards it through a configurable pipeline. Many deployments include one or more ZAPP Listeners and one ZAPP Aggregator.&lt;/p&gt;
&lt;p&gt;&lt;img src="/datacenter/zapp/images/docs/zapp-overview.svg" alt="ZAPP telemetry topology showing infrastructure sources feeding multiple listener pipelines, a central aggregator, and client and operator endpoints."&gt;
&lt;/p&gt;
&lt;p&gt;ZAPP Listeners collect or receive telemetry near the source. A ZAPP Aggregator receives telemetry from multiple listeners and exposes one client-facing endpoint.&lt;/p&gt;
&lt;h2 id="zapp-listener"&gt;ZAPP Listener&lt;/h2&gt;
&lt;p&gt;A ZAPP Listener runs a configured telemetry pipeline. Depending on the pipeline, the listener can receive telemetry packets, discover sensors, collect Redfish telemetry, process payloads, and forward telemetry to the ZAPP Aggregator or directly to downstream consumers.&lt;/p&gt;</description></item><item><title>Deploy ZAPP Listeners</title><link>/datacenter/zapp/docs/deployment/zapp/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/datacenter/zapp/docs/deployment/zapp/</guid><description>&lt;p&gt;Deploy ZAPP Listener instances after the &lt;a href="/datacenter/zapp/docs/deployment/zapp-aggregator/"&gt;ZAPP Aggregator&lt;/a&gt;
 is running.&lt;/p&gt;
&lt;p&gt;For the current Redfish listener deployment, enable only the &lt;code&gt;redfish&lt;/code&gt; listener entry and set &lt;code&gt;zapp.aggregatorHost&lt;/code&gt; to the ZAPP Aggregator gRPC service.&lt;/p&gt;
&lt;h2 id="redfish-listener-values"&gt;Redfish listener values&lt;/h2&gt;
&lt;p&gt;Helm replaces list values as a whole. If your values file redefines &lt;code&gt;zapp.listeners&lt;/code&gt;, include the complete Redfish listener entry, including &lt;code&gt;config.pipeline&lt;/code&gt;.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;zapp&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;enabled&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;image&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;repository&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;nvcr.io/nvidia/zapp&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;tag&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;pullPolicy&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;IfNotPresent&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;aggregatorHost&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;zapp-aggregator.&amp;lt;namespace&amp;gt;.svc.cluster.local:9991&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;metricsPort&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;8888&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;manifestUI&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;listeners&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="nt"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;redfish&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;enabled&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;replicas&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;metricsPort&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;8011&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;config&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;pipeline&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="sd"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; metricsPort: 8011
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; envPlugins:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; sensorPipeline:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; maxRedfishConnections: 1
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; redfishDevices:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; - endpoint: ${secrets.redfish_endpoint}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; username: ${secrets.redfish_username}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; password: ${secrets.redfish_password}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; version: 1.11.0
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; manifest:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; path: /data/redfish-sensor-manifest.yaml
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; forceReload: false
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; components:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; listener:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; type: udpListener
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; network: udp
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; address: :9091
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; targets:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; - target: payloadProcessor
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; cap: 1000
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; leaky: true
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; payloadProcessor:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; type: payloadProcessor
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; timeseries:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; targets:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; - target: aggregator
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; default:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; targets:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; - target: aggregator
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; aggregator:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; type: aggregatorStreamer&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Important fields:&lt;/p&gt;</description></item><item><title>DSX plugin example</title><link>/datacenter/zapp/docs/examples/dsx-plugin/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/datacenter/zapp/docs/examples/dsx-plugin/</guid><description>&lt;p&gt;Use this example to deploy a ZAPP Listener that uses DSX plugin components to collect GPU power metrics from Redfish-capable hosts.&lt;/p&gt;
&lt;p&gt;The standard ZAPP Listener binary includes the DSX component registrations. This example configures the registered &lt;code&gt;dsxMetrics&lt;/code&gt; component type in the listener pipeline.&lt;/p&gt;
&lt;h2 id="deployment-pattern"&gt;Deployment pattern&lt;/h2&gt;
&lt;p&gt;Deploy the &lt;a href="/datacenter/zapp/docs/deployment/zapp-aggregator/"&gt;ZAPP Aggregator&lt;/a&gt;
 first. Then deploy a ZAPP Listener with a DSX pipeline.&lt;/p&gt;
&lt;p&gt;In this pattern:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;zapp.listeners&lt;/code&gt; defines and enables the DSX Redfish listener&lt;/li&gt;
&lt;li&gt;&lt;code&gt;dsxMetrics&lt;/code&gt; manages the host inventory and polls Redfish metrics&lt;/li&gt;
&lt;li&gt;&lt;code&gt;DSX_REDFISH_PROXY_ENDPOINT&lt;/code&gt; configures an optional deployment-wide Redfish proxy endpoint&lt;/li&gt;
&lt;li&gt;&lt;code&gt;known_sensors_file&lt;/code&gt; loads the chart-provided DSX sensor catalog&lt;/li&gt;
&lt;li&gt;&lt;code&gt;host_persistence_path&lt;/code&gt; preserves host registrations in the listener data volume&lt;/li&gt;
&lt;li&gt;&lt;code&gt;metrics_service.listen_address&lt;/code&gt; exposes the DSX management gRPC service inside the listener pod&lt;/li&gt;
&lt;li&gt;&lt;code&gt;aggregatorStreamer&lt;/code&gt; forwards time-series telemetry to the ZAPP Aggregator&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="encryption-secret"&gt;Encryption Secret&lt;/h2&gt;
&lt;p&gt;The built-in DSX listener persists managed host registrations. Before you enable the listener, create a Kubernetes Secret for the persistence encryption key:&lt;/p&gt;</description></item><item><title>ZAPP Aggregator</title><link>/datacenter/zapp/docs/components/zapp-aggregator/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/datacenter/zapp/docs/components/zapp-aggregator/</guid><description>&lt;p&gt;The ZAPP Aggregator receives telemetry from ZAPP Listeners and exposes a stable API surface for consumers. Use it when you need centralized listener fan-in, manifest visibility, and one client endpoint for telemetry subscribers.&lt;/p&gt;
&lt;h2 id="helm-values"&gt;Helm values&lt;/h2&gt;
&lt;p&gt;Most deployments review image, replica, port, resource, and monitoring settings first.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;zappAggregator&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;enabled&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;image&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;repository&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;nvcr.io/nvidia/zapp-aggregator&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;tag&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;pullPolicy&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;IfNotPresent&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;replicas&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;metricsPort&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;8888&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;manifestUI&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;containerPorts&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;listenerGrpc&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;9991&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;udpTelemetry&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;9992&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;clientGrpc&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;9999&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;serviceMonitor&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;enabled&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;interval&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;30s&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Important fields:&lt;/p&gt;</description></item><item><title>Components</title><link>/datacenter/zapp/docs/components/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/datacenter/zapp/docs/components/</guid><description>&lt;p&gt;ZAPP deployments are built from two runtime components: ZAPP Listeners and the ZAPP Aggregator. Listener pipelines run near telemetry sources. The ZAPP Aggregator provides central fan-in, listener coordination, and consumer-facing APIs.&lt;/p&gt;
&lt;p&gt;Use these pages to understand what each component runs, which configuration fields matter first, and where pipeline configuration fits into a deployment.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/datacenter/zapp/docs/components/zapp/"&gt;ZAPP Listener&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="/datacenter/zapp/docs/components/zapp-aggregator/"&gt;ZAPP Aggregator&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="/datacenter/zapp/docs/components/pipeline/"&gt;Pipeline components&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Configure Redfish Secrets</title><link>/datacenter/zapp/docs/examples/redfish-listener/configure-secrets/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/datacenter/zapp/docs/examples/redfish-listener/configure-secrets/</guid><description>&lt;p&gt;Redfish endpoints and credentials should come from Kubernetes Secrets. The listener reads secret files and expands &lt;code&gt;${secrets.&amp;lt;name&amp;gt;}&lt;/code&gt; references before it parses the pipeline YAML.&lt;/p&gt;
&lt;h2 id="secret-keys"&gt;Secret keys&lt;/h2&gt;
&lt;p&gt;The default Redfish listener values use these keys:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;redfish_endpoint
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;redfish_username
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;redfish_password
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The pipeline references them like this:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;redfishDevices&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="nt"&gt;endpoint&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;${secrets.redfish_endpoint}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;username&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;${secrets.redfish_username}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;password&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;${secrets.redfish_password}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="use-an-existing-secret"&gt;Use an existing Secret&lt;/h2&gt;
&lt;p&gt;Use &lt;code&gt;existingSecret&lt;/code&gt; when another system manages the Secret.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;zapp&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;listeners&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="nt"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;redfish&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;secrets&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="nt"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;redfish-credentials&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;existingSecret&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;redfish-credentials&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;mountPath&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;/secrets/redfish&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The Secret must contain a key named &lt;code&gt;redfish-credentials&lt;/code&gt;. The value should be dotenv-style content:&lt;/p&gt;</description></item><item><title>Monitor the Redfish listener</title><link>/datacenter/zapp/docs/examples/redfish-listener/monitor/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/datacenter/zapp/docs/examples/redfish-listener/monitor/</guid><description>&lt;p&gt;The listener and ZAPP Aggregator expose HTTP monitoring endpoints when &lt;code&gt;metricsPort&lt;/code&gt; is greater than &lt;code&gt;0&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="http-endpoints"&gt;HTTP endpoints&lt;/h2&gt;
&lt;p&gt;Use these endpoints for health and telemetry inspection:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Endpoint&lt;/th&gt;
 &lt;th&gt;Purpose&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;/metrics&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Prometheus metrics&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;/manifest&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Sensor manifest web page&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;/manifest.json&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Sensor manifest JSON&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;On the ZAPP Aggregator, the manifest page also shows connected listeners and sensor counts.&lt;/p&gt;
&lt;h2 id="port-forward-the-zapp-aggregator-manifest"&gt;Port-forward the ZAPP Aggregator manifest&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;kubectl --namespace &amp;lt;namespace&amp;gt; port-forward svc/zapp-aggregator-metrics 8888:8888
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Open the manifest page:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;http://localhost:8888/manifest
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Request manifest JSON:&lt;/p&gt;</description></item><item><title>Plugins</title><link>/datacenter/zapp/docs/plugins/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/datacenter/zapp/docs/plugins/</guid><description>&lt;p&gt;Plugins extend the ZAPP pipeline with additional component types. Use them when built-in components do not cover a site-specific telemetry source, protocol, processor, or output.&lt;/p&gt;
&lt;p&gt;Plugin component packages live in the ZAPP repository and are compiled into the ZAPP Listener binary. When the listener starts, those packages register their component types with the pipeline registry.&lt;/p&gt;
&lt;p&gt;Enable a plugin component by using its registered &lt;code&gt;type&lt;/code&gt; in the listener pipeline:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;components&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;dsx&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;dsxMetrics&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# DSX-specific configuration omitted.&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;targets&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="nt"&gt;target&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;aggregator&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;aggregator&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;aggregatorStreamer&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;For Kubernetes deployments, use a ZAPP Listener image that includes the plugin component registrations you need.&lt;/p&gt;</description></item><item><title>Deployment</title><link>/datacenter/zapp/docs/deployment/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/datacenter/zapp/docs/deployment/</guid><description>&lt;p&gt;Use these pages to deploy the ZAPP Aggregator and Redfish listener chart in your own infrastructure with Helm.&lt;/p&gt;
&lt;p&gt;Deploy the ZAPP Aggregator first. Then adapt the ZAPP Listener chart for the telemetry sources in your environment and point ZAPP Listeners at the ZAPP Aggregator listener gRPC service.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/datacenter/zapp/docs/deployment/zapp-aggregator/"&gt;Deploy the ZAPP Aggregator&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="/datacenter/zapp/docs/deployment/zapp/"&gt;Deploy ZAPP Listeners&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Troubleshoot the Redfish listener</title><link>/datacenter/zapp/docs/examples/redfish-listener/troubleshoot/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/datacenter/zapp/docs/examples/redfish-listener/troubleshoot/</guid><description>&lt;p&gt;Start with Kubernetes readiness, then check listener configuration, ZAPP Aggregator connectivity, Redfish access, and telemetry validation.&lt;/p&gt;
&lt;p&gt;&lt;img src="/datacenter/zapp/images/docs/troubleshooting-validation-path.png" alt="Troubleshooting validation path showing Kubernetes checks, manifest and metrics port-forwarding, and zest gRPC validation."&gt;
&lt;/p&gt;
&lt;p&gt;Use Kubernetes checks, HTTP monitoring endpoints, and &lt;code&gt;zest&lt;/code&gt; to isolate Redfish listener deployment problems.&lt;/p&gt;
&lt;h2 id="check-pods-and-releases"&gt;Check pods and releases&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;helm list --namespace &amp;lt;namespace&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;kubectl get pods --namespace &amp;lt;namespace&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;kubectl get statefulsets --namespace &amp;lt;namespace&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;If a pod is not ready, describe it and inspect recent events:&lt;/p&gt;</description></item><item><title>Examples</title><link>/datacenter/zapp/docs/examples/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/datacenter/zapp/docs/examples/</guid><description>&lt;p&gt;Use these examples as concrete deployment paths for specific ZAPP Listener configurations.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/datacenter/zapp/docs/examples/redfish-listener/"&gt;Redfish listener example&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="/datacenter/zapp/docs/examples/dsx-plugin/"&gt;DSX plugin example&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>