<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>faro on Grafana Labs</title><link>https://grafana.com/docs/alloy/v1.15/reference/components/faro/</link><description>Recent content in faro on Grafana Labs</description><generator>Hugo -- gohugo.io</generator><language>en</language><atom:link href="/docs/alloy/v1.15/reference/components/faro/index.xml" rel="self" type="application/rss+xml"/><item><title>faro.receiver</title><link>https://grafana.com/docs/alloy/v1.15/reference/components/faro/faro.receiver/</link><pubDate>Mon, 13 Apr 2026 07:37:47 +0000</pubDate><guid>https://grafana.com/docs/alloy/v1.15/reference/components/faro/faro.receiver/</guid><content><![CDATA[&lt;h1 id=&#34;faroreceiver&#34;&gt;&lt;code&gt;faro.receiver&lt;/code&gt;&lt;/h1&gt;
&lt;p&gt;&lt;code&gt;faro.receiver&lt;/code&gt; accepts web application telemetry data from the &lt;a href=&#34;https://github.com/grafana/faro-web-sdk&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Grafana Faro Web SDK&lt;/a&gt; and forwards it to other components for processing.&lt;/p&gt;


&lt;div class=&#34;admonition admonition-note&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Note&lt;/p&gt;&lt;p&gt;This component does not work with &lt;a href=&#34;/products/cloud/frontend-observability-for-real-user-monitoring/&#34;&gt;Grafana Cloud Frontend Observability&lt;/a&gt;.
For more information, refer to the &lt;a href=&#34;../../../../collect/choose-component/#frontend-telemetry&#34;&gt;Choose a component&lt;/a&gt; guide.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;h2 id=&#34;usage&#34;&gt;Usage&lt;/h2&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;Alloy&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-alloy&#34;&gt;faro.receiver &amp;#34;&amp;lt;LABEL&amp;gt;&amp;#34; {
    output {
        logs   = [&amp;lt;LOKI_RECEIVERS&amp;gt;]
        traces = [&amp;lt;OTELCOL_COMPONENTS&amp;gt;]
    }
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h2 id=&#34;arguments&#34;&gt;Arguments&lt;/h2&gt;
&lt;p&gt;You can use the following arguments with &lt;code&gt;faro.receiver&lt;/code&gt;:&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Name&lt;/th&gt;
              &lt;th&gt;Type&lt;/th&gt;
              &lt;th&gt;Description&lt;/th&gt;
              &lt;th&gt;Default&lt;/th&gt;
              &lt;th&gt;Required&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;extra_log_labels&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;map(string)&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Extra labels to attach to emitted log lines.&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;no&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;log_format&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Export format for the logs.&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;&amp;quot;logfmt&amp;quot;&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;no&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h3 id=&#34;log-format&#34;&gt;Log format&lt;/h3&gt;
&lt;p&gt;The following strings are valid log line formats:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;&amp;quot;json&amp;quot;&lt;/code&gt;: Export logs as JSON objects.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;quot;logfmt&amp;quot;&lt;/code&gt;: Export logs as &lt;a href=&#34;https://brandur.org/logfmt&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;&lt;code&gt;logfmt&lt;/code&gt;&lt;/a&gt; lines.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;blocks&#34;&gt;Blocks&lt;/h2&gt;
&lt;p&gt;You can use the following blocks with &lt;code&gt;faro.receiver&lt;/code&gt;:&lt;/p&gt;
&lt;div class=&#34;config-app&#34; style=&#34;--config-tree-row-count: 6;&#34; x3-data=&#34;configVisualizer(&amp;#34;\u003csection class=\&amp;#34;expand-table-wrapper\&amp;#34;\u003e\u003cdiv class=\&amp;#34;button-div\&amp;#34;\u003e\n      \u003cbutton class=\&amp;#34;expand-table-btn\&amp;#34;\u003eExpand table\u003c/button\u003e\n    \u003c/div\u003e\u003cdiv class=\&amp;#34;responsive-table-wrapper\&amp;#34;\u003e\n    \u003ctable\u003e\n      \u003cthead\u003e\n          \u003ctr\u003e\n              \u003cth\u003eBlock\u003c/th\u003e\n              \u003cth\u003eDescription\u003c/th\u003e\n              \u003cth\u003eRequired\u003c/th\u003e\n          \u003c/tr\u003e\n      \u003c/thead\u003e\n      \u003ctbody\u003e\n          \u003ctr\u003e\n              \u003ctd\u003e\u003ca href=\&amp;#34;#output\&amp;#34;\u003e\u003ccode\u003eoutput\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n              \u003ctd\u003eConfigures where to send collected telemetry data.\u003c/td\u003e\n              \u003ctd\u003eyes\u003c/td\u003e\n          \u003c/tr\u003e\n          \u003ctr\u003e\n              \u003ctd\u003e\u003ca href=\&amp;#34;#server\&amp;#34;\u003e\u003ccode\u003eserver\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n              \u003ctd\u003eConfigures the HTTP server.\u003c/td\u003e\n              \u003ctd\u003eno\u003c/td\u003e\n          \u003c/tr\u003e\n          \u003ctr\u003e\n              \u003ctd\u003e\u003ccode\u003eserver\u003c/code\u003e \u0026gt;  \u003ca href=\&amp;#34;#rate_limiting\&amp;#34;\u003e\u003ccode\u003erate_limiting\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n              \u003ctd\u003eConfigures rate limiting for the HTTP server.\u003c/td\u003e\n              \u003ctd\u003eno\u003c/td\u003e\n          \u003c/tr\u003e\n          \u003ctr\u003e\n              \u003ctd\u003e\u003ca href=\&amp;#34;#sourcemaps\&amp;#34;\u003e\u003ccode\u003esourcemaps\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n              \u003ctd\u003eConfigures sourcemap retrieval.\u003c/td\u003e\n              \u003ctd\u003eno\u003c/td\u003e\n          \u003c/tr\u003e\n          \u003ctr\u003e\n              \u003ctd\u003e\u003ccode\u003esourcemaps\u003c/code\u003e \u0026gt; \u003ca href=\&amp;#34;#cache\&amp;#34;\u003e\u003ccode\u003ecache\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n              \u003ctd\u003eConfigures sourcemap caching behavior.\u003c/td\u003e\n              \u003ctd\u003eno\u003c/td\u003e\n          \u003c/tr\u003e\n          \u003ctr\u003e\n              \u003ctd\u003e\u003ccode\u003esourcemaps\u003c/code\u003e \u0026gt;  \u003ca href=\&amp;#34;#location\&amp;#34;\u003e\u003ccode\u003elocation\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n              \u003ctd\u003eConfigures on-disk location for sourcemap retrieval.\u003c/td\u003e\n              \u003ctd\u003eno\u003c/td\u003e\n          \u003c/tr\u003e\n      \u003c/tbody\u003e\n    \u003c/table\u003e\n  \u003c/div\u003e\n\u003c/section\u003e&amp;#34;)&#34;&gt;
  &lt;noscript&gt;
    &lt;div class=&#34;config-app__noscript&#34;&gt;&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Block&lt;/th&gt;
              &lt;th&gt;Description&lt;/th&gt;
              &lt;th&gt;Required&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#output&#34;&gt;&lt;code&gt;output&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Configures where to send collected telemetry data.&lt;/td&gt;
              &lt;td&gt;yes&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#server&#34;&gt;&lt;code&gt;server&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Configures the HTTP server.&lt;/td&gt;
              &lt;td&gt;no&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;server&lt;/code&gt; &amp;gt;  &lt;a href=&#34;#rate_limiting&#34;&gt;&lt;code&gt;rate_limiting&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Configures rate limiting for the HTTP server.&lt;/td&gt;
              &lt;td&gt;no&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#sourcemaps&#34;&gt;&lt;code&gt;sourcemaps&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Configures sourcemap retrieval.&lt;/td&gt;
              &lt;td&gt;no&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;sourcemaps&lt;/code&gt; &amp;gt; &lt;a href=&#34;#cache&#34;&gt;&lt;code&gt;cache&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Configures sourcemap caching behavior.&lt;/td&gt;
              &lt;td&gt;no&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;sourcemaps&lt;/code&gt; &amp;gt;  &lt;a href=&#34;#location&#34;&gt;&lt;code&gt;location&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Configures on-disk location for sourcemap retrieval.&lt;/td&gt;
              &lt;td&gt;no&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;/div&gt;
  &lt;/noscript&gt;
  &lt;main class=&#34;config-app__main&#34;&gt;
    &lt;template x3-if=&#34;flatBlocks.length === 0&#34;&gt;
      &lt;div class=&#34;empty-state&#34;&gt;
        &lt;div class=&#34;empty-state__icon&#34; x3-html=&#34;icons.AlertCircle&#34;&gt;&lt;/div&gt;
        &lt;p&gt;No valid configuration blocks found.&lt;/p&gt;
      &lt;/div&gt;
    &lt;/template&gt;

    &lt;template x3-if=&#34;flatBlocks.length &gt; 0&#34;&gt;
      &lt;div class=&#34;config-tree&#34;&gt;
        &lt;div class=&#34;config-tree__toolbar&#34;&gt;
          &lt;div class=&#34;config-tree__title&#34;&gt;&lt;/div&gt;
          &lt;button
            class=&#34;tree-explorer__button w-130 text-right&#34;
            x3-on:click=&#34;toggleExpandAll&#34;
            x3-bind:title=&#34;allExpanded ? &#39;Collapse all&#39; : &#39;Expand all&#39;&#34;
          &gt;
            &lt;span x3-text=&#34;allExpanded ? &#39;Collapse all&#39; : &#39;Expand all&#39;&#34;&gt;&lt;/span&gt;
            &lt;svg class=&#34;api-icon&#34; viewBox=&#34;0 0 24 24&#34;&gt;
              &lt;path x3-show=&#34;!allExpanded&#34; d=&#34;m6 9 6 6 6-6&#34; /&gt;
              &lt;path x3-show=&#34;allExpanded&#34; d=&#34;m18 15-6-6-6 6&#34; /&gt;
            &lt;/svg&gt;
          &lt;/button&gt;
        &lt;/div&gt;

        &lt;div class=&#34;nodes-container&#34;&gt;
          &lt;template x3-for=&#34;block in flatBlocks&#34; x3-bind:key=&#34;block.id&#34;&gt;
            &lt;div class=&#34;node&#34; x3-bind:class=&#34;isNodeVisible(block) ? &#39;node--visible&#39; : &#39;node--hidden&#39;&#34;&gt;
              &lt;div
                class=&#34;node__row&#34;
                x3-bind:class=&#34;getRowClass(block)&#34;
                x3-bind:style=&#34;`padding-left: ${block.level * 24 &#43; 16}px`&#34;
                x3-on:click=&#34;toggleNode(block.id)&#34;
              &gt;
                &lt;div class=&#34;node__left&#34;&gt;
                  &lt;div class=&#34;node__indicator&#34;&gt;
                    &lt;template x3-if=&#34;block.hasChildren&#34;&gt;
                      &lt;button type=&#34;button&#34; class=&#34;node__toggle&#34; x3-on:click.stop=&#34;toggleNode(block.id)&#34;&gt;
                        &lt;div
                          class=&#34;node__toggle-icon&#34;
                          x3-bind:class=&#34;block.expanded ? &#39;node__toggle-icon--expanded&#39; : &#39;&#39;&#34;
                          x3-html=&#34;icons.ChevronDown&#34;
                        &gt;&lt;/div&gt;
                      &lt;/button&gt;
                    &lt;/template&gt;
                    &lt;template x3-if=&#34;!block.hasChildren&#34;&gt;
                      &lt;div class=&#34;node__toggle-spacer&#34;&gt;&lt;/div&gt;
                    &lt;/template&gt;
                  &lt;/div&gt;

                  &lt;div class=&#34;node__content&#34;&gt;
                    &lt;div
                      class=&#34;node__title prose&#34;
                      x3-bind:class=&#34;block.level === 0 ? &#39;node__title--root&#39; : &#39;node__title--nested&#39;&#34;
                      x3-html=&#34;block.displayName&#34;
                    &gt;&lt;/div&gt;
                    &lt;div class=&#34;node__description body-xsmall&#34; x3-html=&#34;block.description&#34;&gt;&lt;/div&gt;
                  &lt;/div&gt;
                &lt;/div&gt;

                &lt;div class=&#34;node__meta&#34;&gt;
                  &lt;span
                    class=&#34;badge&#34;
                    x3-bind:class=&#34;block.required ? &#39;badge--required&#39; : &#39;badge--optional&#39;&#34;
                    x3-text=&#34;block.required ? &#39;Required&#39; : &#39;Optional&#39;&#34;
                  &gt;&lt;/span&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;
          &lt;/template&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/template&gt;
  &lt;/main&gt;
&lt;/div&gt;

&lt;h3 id=&#34;output&#34;&gt;&lt;code&gt;output&lt;/code&gt;&lt;/h3&gt;
&lt;span class=&#34;docs-labels__stage docs-labels__small docs-labels__item mr-half&#34;&gt;
  Required
  &lt;/span&gt;

&lt;p&gt;The &lt;code&gt;output&lt;/code&gt; block specifies where to forward collected logs and traces.&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Name&lt;/th&gt;
              &lt;th&gt;Type&lt;/th&gt;
              &lt;th&gt;Description&lt;/th&gt;
              &lt;th&gt;Default&lt;/th&gt;
              &lt;th&gt;Required&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;logs&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;list(LogsReceiver)&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;A list of &lt;code&gt;loki&lt;/code&gt; components to forward logs to.&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;[]&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;no&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;traces&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;list(otelcol.Consumer)&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;A list of &lt;code&gt;otelcol&lt;/code&gt; components to forward traces to.&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;[]&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;no&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h3 id=&#34;server&#34;&gt;&lt;code&gt;server&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;The &lt;code&gt;server&lt;/code&gt; block configures the HTTP server managed by the &lt;code&gt;faro.receiver&lt;/code&gt; component.
Clients using the &lt;a href=&#34;https://github.com/grafana/faro-web-sdk&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Grafana Faro Web SDK&lt;/a&gt; forward telemetry data to this HTTP server for processing.&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Name&lt;/th&gt;
              &lt;th&gt;Type&lt;/th&gt;
              &lt;th&gt;Description&lt;/th&gt;
              &lt;th&gt;Default&lt;/th&gt;
              &lt;th&gt;Required&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;listen_address&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Address to listen for HTTP traffic on.&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;&amp;quot;127.0.0.1&amp;quot;&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;no&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;listen_port&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;number&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Port to listen for HTTP traffic on.&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;12347&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;no&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;cors_allowed_origins&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;list(string)&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Origins for which cross-origin requests are permitted.&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;[]&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;no&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;api_key&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;secret&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Optional API key to validate client requests with.&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;no&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;max_allowed_payload_size&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Maximum size (in bytes) for client requests.&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;&amp;quot;5MiB&amp;quot;&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;no&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;include_metadata&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;bool&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Propagate incoming connection metadata to downstream consumers.&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;no&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;p&gt;By default, telemetry data is only accepted from applications on the same local network as the browser.
To accept telemetry data from a wider set of clients, modify the &lt;code&gt;listen_address&lt;/code&gt; attribute to the IP address of the appropriate network interface to use.&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;cors_allowed_origins&lt;/code&gt; argument determines what origins browser requests may come from.
The default value, &lt;code&gt;[]&lt;/code&gt;, disables CORS support.
To support requests from all origins, set &lt;code&gt;cors_allowed_origins&lt;/code&gt; to &lt;code&gt;[&amp;quot;*&amp;quot;]&lt;/code&gt;.
The &lt;code&gt;*&lt;/code&gt; character indicates a wildcard.&lt;/p&gt;
&lt;p&gt;You can use the following headers for cross-domain requests: &lt;code&gt;Content-Type&lt;/code&gt;, &lt;code&gt;Traceparent&lt;/code&gt;, &lt;code&gt;X-API-Key&lt;/code&gt;, &lt;code&gt;X-Faro-Session-Id&lt;/code&gt;, or &lt;code&gt;X-Scope-OrgID&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;When the &lt;code&gt;api_key&lt;/code&gt; argument is non-empty, client requests must have an HTTP header called &lt;code&gt;X-API-Key&lt;/code&gt; matching the value of the &lt;code&gt;api_key&lt;/code&gt; argument.
Requests that are missing the header or have the wrong value are rejected with an &lt;code&gt;HTTP 401 Unauthorized&lt;/code&gt; status code.
If the &lt;code&gt;api_key&lt;/code&gt; argument is empty, no authentication checks are performed, and the &lt;code&gt;X-API-Key&lt;/code&gt; HTTP header is ignored.&lt;/p&gt;
&lt;h4 id=&#34;rate_limiting&#34;&gt;&lt;code&gt;rate_limiting&lt;/code&gt;&lt;/h4&gt;
&lt;p&gt;The &lt;code&gt;rate_limiting&lt;/code&gt; block configures rate limiting for client requests.&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Name&lt;/th&gt;
              &lt;th&gt;Type&lt;/th&gt;
              &lt;th&gt;Description&lt;/th&gt;
              &lt;th&gt;Default&lt;/th&gt;
              &lt;th&gt;Required&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;enabled&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;bool&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Whether to enable rate limiting.&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;true&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;no&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;strategy&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;The strategy to use for rate limiting.&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;global&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;no&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;rate&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;number&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Rate of allowed requests per second.&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;50&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;no&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;burst_size&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;number&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Allowed burst size of requests.&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;100&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;no&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;p&gt;The following &lt;code&gt;strategy&lt;/code&gt; strings are valid:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;&amp;quot;global&amp;quot;&lt;/code&gt;: Global rate limiting.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;quot;per_app&amp;quot;&lt;/code&gt;: Application/Environment based rate limiting.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Rate limiting functions as a &lt;a href=&#34;https://en.wikipedia.org/wiki/Token_bucket&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;token bucket algorithm&lt;/a&gt;, where a bucket has a maximum capacity for up to &lt;code&gt;burst_size&lt;/code&gt; requests and refills at a rate of &lt;code&gt;rate&lt;/code&gt; per second.&lt;/p&gt;
&lt;p&gt;Each HTTP request drains the capacity of the bucket by one.&lt;/p&gt;
&lt;p&gt;After the bucket is empty, HTTP requests are rejected with an &lt;code&gt;HTTP 429 Too Many Requests&lt;/code&gt; status code until the bucket has more available capacity.&lt;/p&gt;
&lt;p&gt;When &lt;code&gt;strategy&lt;/code&gt; is &lt;code&gt;per_app&lt;/code&gt;, rate limiting is applied per application and environment combination instead of globally.&lt;/p&gt;
&lt;p&gt;This prevents one application from affecting the rate limits of other applications sending their data on the same gateway.&lt;/p&gt;
&lt;p&gt;The application and environment are extracted from the Faro payload metadata using the &lt;code&gt;app.name&lt;/code&gt; and &lt;code&gt;app.environment&lt;/code&gt; fields. If these fields are missing, the request shares a rate limiter with other requests that also lack this metadata.&lt;/p&gt;
&lt;p&gt;Configuring the &lt;code&gt;rate&lt;/code&gt; argument determines how fast the bucket refills, and configuring the &lt;code&gt;burst_size&lt;/code&gt; argument determines how many requests can be received in a burst before the bucket is empty and starts rejecting requests.&lt;/p&gt;
&lt;h3 id=&#34;sourcemaps&#34;&gt;&lt;code&gt;sourcemaps&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;The &lt;code&gt;sourcemaps&lt;/code&gt; block configures how to retrieve sourcemaps.
Sourcemaps are then used to transform file and line information from minified code into the file and line information from the original source code.&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Name&lt;/th&gt;
              &lt;th&gt;Type&lt;/th&gt;
              &lt;th&gt;Description&lt;/th&gt;
              &lt;th&gt;Default&lt;/th&gt;
              &lt;th&gt;Required&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;download&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;bool&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Whether to download sourcemaps.&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;true&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;no&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;download_from_origins&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;list(string)&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Which origins to download sourcemaps from.&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;[&amp;quot;*&amp;quot;]&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;no&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;download_timeout&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;duration&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Timeout when downloading sourcemaps.&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;&amp;quot;1s&amp;quot;&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;no&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;p&gt;When exceptions are sent to the &lt;code&gt;faro.receiver&lt;/code&gt; component, it can download sourcemaps from the web application.
You can disable this behavior by setting the &lt;code&gt;download&lt;/code&gt; argument to &lt;code&gt;false&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;download_from_origins&lt;/code&gt; argument determines which origins a sourcemap may be downloaded from.
The origin is attached to the URL that a browser is sending telemetry data from.
The default value, &lt;code&gt;[&amp;quot;*&amp;quot;]&lt;/code&gt;, enables downloading sourcemaps from all origins.
The &lt;code&gt;*&lt;/code&gt; character indicates a wildcard.&lt;/p&gt;
&lt;p&gt;By default, sourcemap downloads are subject to a timeout of &lt;code&gt;&amp;quot;1s&amp;quot;&lt;/code&gt;, specified by the &lt;code&gt;download_timeout&lt;/code&gt; argument.
Setting &lt;code&gt;download_timeout&lt;/code&gt; to &lt;code&gt;&amp;quot;0s&amp;quot;&lt;/code&gt; disables timeouts.&lt;/p&gt;
&lt;p&gt;To retrieve sourcemaps from disk instead of the network, specify one or more [&lt;code&gt;location&lt;/code&gt; blocks][location].
When &lt;code&gt;location&lt;/code&gt; blocks are provided, they&amp;rsquo;re checked first for sourcemaps before falling back to downloading.&lt;/p&gt;
&lt;h4 id=&#34;cache&#34;&gt;&lt;code&gt;cache&lt;/code&gt;&lt;/h4&gt;
&lt;p&gt;The &lt;code&gt;cache&lt;/code&gt; block configures sourcemap caching behavior.&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Name&lt;/th&gt;
              &lt;th&gt;Type&lt;/th&gt;
              &lt;th&gt;Description&lt;/th&gt;
              &lt;th&gt;Default&lt;/th&gt;
              &lt;th&gt;Required&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;cleanup_check_interval&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;duration&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;How often Alloy checks cached sourcemaps for cleanup.&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;&amp;quot;30s&amp;quot;&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;no&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;error_cleanup_interval&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;duration&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;How long Alloy waits before retrying a failed source map download.&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;&amp;quot;1h&amp;quot;&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;no&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;ttl&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;duration&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;How long Alloy keeps an unused source map in the cache.&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;inf&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;no&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;p&gt;By default, Alloy keeps sourcemaps in memory indefinitely.
Set &lt;code&gt;ttl&lt;/code&gt; to remove sourcemaps that are not accessed within the specified duration.&lt;/p&gt;
&lt;p&gt;Alloy caches errors that occur while downloading or parsing a sourcemap.
Use &lt;code&gt;error_cleanup_interval&lt;/code&gt; to control how long these errors remain cached.&lt;/p&gt;
&lt;p&gt;Cached sourcemaps are checked for cleanup every 30 seconds by default.
Set &lt;code&gt;cleanup_check_interval&lt;/code&gt; to adjust this frequency.&lt;/p&gt;
&lt;h4 id=&#34;location&#34;&gt;&lt;code&gt;location&lt;/code&gt;&lt;/h4&gt;
&lt;p&gt;The &lt;code&gt;location&lt;/code&gt; block declares a location where sourcemaps are stored on the filesystem.
You can specify the &lt;code&gt;location&lt;/code&gt; block multiple times to declare multiple locations where sourcemaps are stored.&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Name&lt;/th&gt;
              &lt;th&gt;Type&lt;/th&gt;
              &lt;th&gt;Description&lt;/th&gt;
              &lt;th&gt;Default&lt;/th&gt;
              &lt;th&gt;Required&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;minified_path_prefix&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;The prefix of the minified path sent from browsers.&lt;/td&gt;
              &lt;td&gt;&lt;/td&gt;
              &lt;td&gt;yes&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;path&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;The path on disk where sourcemaps are stored.&lt;/td&gt;
              &lt;td&gt;&lt;/td&gt;
              &lt;td&gt;yes&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;p&gt;The &lt;code&gt;minified_path_prefix&lt;/code&gt; argument determines the prefix of paths to JavaScript files, such as &lt;code&gt;http://example.com/&lt;/code&gt;.
The &lt;code&gt;path&lt;/code&gt; argument then determines where to find the sourcemap for the file.&lt;/p&gt;
&lt;p&gt;For example, given the following location block:&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;Alloy&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-alloy&#34;&gt;location {
    path                 = &amp;#34;/var/my-app/build&amp;#34;
    minified_path_prefix = &amp;#34;http://example.com/&amp;#34;
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;To look up the sourcemaps for a file hosted at &lt;code&gt;http://example.com/example.js&lt;/code&gt;, the &lt;code&gt;faro.receiver&lt;/code&gt; component:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Removes the minified path prefix to extract the path to the file &lt;code&gt;example.js&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Searches the path for the file with a &lt;code&gt;.map&lt;/code&gt; extension, for example &lt;code&gt;example.js.map&lt;/code&gt; in the path &lt;code&gt;/var/my-app/build/example.js.map&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Optionally, the value for the &lt;code&gt;path&lt;/code&gt; argument may contain &lt;code&gt;{{ .Release }}&lt;/code&gt; as a template value, such as &lt;code&gt;/var/my-app/{{ .Release }}/build&lt;/code&gt;.
The template value is replaced with the release value provided by the &lt;a href=&#34;https://github.com/grafana/faro-web-sdk&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Faro Web App SDK&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;exported-fields&#34;&gt;Exported fields&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;faro.receiver&lt;/code&gt; doesn&amp;rsquo;t export any fields.&lt;/p&gt;
&lt;h2 id=&#34;component-health&#34;&gt;Component health&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;faro.receiver&lt;/code&gt; is reported as unhealthy when the integrated server fails to start.&lt;/p&gt;
&lt;h2 id=&#34;debug-information&#34;&gt;Debug information&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;faro.receiver&lt;/code&gt; doesn&amp;rsquo;t expose any component-specific debug information.&lt;/p&gt;
&lt;h2 id=&#34;debug-metrics&#34;&gt;Debug metrics&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;faro.receiver&lt;/code&gt; exposes the following metrics for monitoring the component:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;faro_receiver_logs_total&lt;/code&gt; (counter): Total number of ingested logs.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;faro_receiver_measurements_total&lt;/code&gt; (counter): Total number of ingested measurements.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;faro_receiver_exceptions_total&lt;/code&gt; (counter): Total number of ingested exceptions.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;faro_receiver_events_total&lt;/code&gt; (counter): Total number of ingested events.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;faro_receiver_exporter_errors_total&lt;/code&gt; (counter): Total number of errors produced by an internal exporter.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;faro_receiver_request_duration_seconds&lt;/code&gt; (histogram): Time (in seconds) spent serving HTTP requests.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;faro_receiver_request_message_bytes&lt;/code&gt; (histogram): Size (in bytes) of HTTP requests received from clients.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;faro_receiver_response_message_bytes&lt;/code&gt; (histogram): Size (in bytes) of HTTP responses sent to clients.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;faro_receiver_inflight_requests&lt;/code&gt; (gauge): Current number of inflight requests.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;faro_receiver_sourcemap_cache_size&lt;/code&gt; (gauge): Number of items in sourcemap cache per origin.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;faro_receiver_sourcemap_downloads_total&lt;/code&gt; (counter): Total number of sourcemap downloads performed per origin and status.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;faro_receiver_sourcemap_file_reads_total&lt;/code&gt; (counter): Total number of sourcemap retrievals using the filesystem per origin and status.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;faro_receiver_rate_limiter_active_app&lt;/code&gt; (gauge): Number of active applications with rate limiters. Inactive limiters are cleaned up every 10 minutes.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;faro_receiver_rate_limiter_requests_total&lt;/code&gt; (counter): Total number of requests processed by the rate limiter per app/environment.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;example&#34;&gt;Example&lt;/h2&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;Alloy&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-alloy&#34;&gt;faro.receiver &amp;#34;default&amp;#34; {
    server {
        listen_address = &amp;#34;&amp;lt;NETWORK_ADDRESS&amp;gt;&amp;#34;
    }

    sourcemaps {
        location {
            path                 = &amp;#34;&amp;lt;PATH_TO_SOURCEMAPS&amp;gt;&amp;#34;
            minified_path_prefix = &amp;#34;&amp;lt;WEB_APP_PREFIX&amp;gt;&amp;#34;
        }
    }

    output {
        logs   = [loki.write.default.receiver]
        traces = [otelcol.exporter.otlphttp.traces.input]
    }
}

loki.write &amp;#34;default&amp;#34; {
    endpoint {
        url = &amp;#34;https://LOKI_ADDRESS/loki/api/v1/push&amp;#34;
    }
}

otelcol.exporter.otlphttp &amp;#34;traces&amp;#34; {
    client {
        endpoint = &amp;#34;&amp;lt;OTLP_ADDRESS&amp;gt;&amp;#34;
    }
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Replace the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;&lt;code&gt;&amp;lt;NETWORK_ADDRESS&amp;gt;&lt;/code&gt;&lt;/em&gt;: The IP address of the network interface to listen to traffic on.
This IP address must be reachable by browsers using the web application to instrument.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;code&gt;&amp;lt;PATH_TO_SOURCEMAPS&amp;gt;&lt;/code&gt;&lt;/em&gt;: The path on disk where sourcemaps are located.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;code&gt;&amp;lt;WEB_APP_PREFIX&amp;gt;&lt;/code&gt;&lt;/em&gt;: Prefix of the web application being instrumented.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;LOKI_ADDRESS&lt;/code&gt;: Address of the Loki server to send logs to.
Refer to &lt;a href=&#34;../../loki/loki.write/&#34;&gt;&lt;code&gt;loki.write&lt;/code&gt;&lt;/a&gt; if you want to use authentication to send logs to the Loki server.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;code&gt;&amp;lt;OTLP_ADDRESS&amp;gt;&lt;/code&gt;&lt;/em&gt;: The address of the OTLP-compatible server to send traces to.
Refer to&lt;a href=&#34;../../otelcol/otelcol.exporter.otlphttp/&#34;&gt;&lt;code&gt;otelcol.exporter.otlphttp&lt;/code&gt;&lt;/a&gt; if you want to use authentication to send logs to an OTLP server.&lt;/li&gt;
&lt;/ul&gt;
&lt;!-- START GENERATED COMPATIBLE COMPONENTS --&gt;
&lt;h2 id=&#34;compatible-components&#34;&gt;Compatible components&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;faro.receiver&lt;/code&gt; can accept arguments from the following components:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Components that export &lt;a href=&#34;../../../compatibility/#loki-logsreceiver-exporters&#34;&gt;Loki &lt;code&gt;LogsReceiver&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Components that export &lt;a href=&#34;../../../compatibility/#opentelemetry-otelcolconsumer-exporters&#34;&gt;OpenTelemetry &lt;code&gt;otelcol.Consumer&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;div class=&#34;admonition admonition-note&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Note&lt;/p&gt;&lt;p&gt;Connecting some components may not be sensible or components may require further configuration to make the connection work correctly.
Refer to the linked documentation for more details.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;!-- END GENERATED COMPATIBLE COMPONENTS --&gt;
]]></content><description>&lt;h1 id="faroreceiver">&lt;code>faro.receiver&lt;/code>&lt;/h1>
&lt;p>&lt;code>faro.receiver&lt;/code> accepts web application telemetry data from the &lt;a href="https://github.com/grafana/faro-web-sdk" target="_blank" rel="noopener noreferrer">Grafana Faro Web SDK&lt;/a> and forwards it to other components for processing.&lt;/p>
&lt;div class="admonition admonition-note">&lt;blockquote>&lt;p class="title text-uppercase">Note&lt;/p>&lt;p>This component does not work with &lt;a href="/products/cloud/frontend-observability-for-real-user-monitoring/">Grafana Cloud Frontend Observability&lt;/a>.
For more information, refer to the &lt;a href="../../../../collect/choose-component/#frontend-telemetry">Choose a component&lt;/a> guide.&lt;/p></description></item></channel></rss>