> ## Documentation Index
> Fetch the complete documentation index at: https://otel.fyi/llms.txt
> Use this file to discover all available pages before exploring further.

# Exporters

> OpenTelemetry Exporters components

export const ComponentList = ({items, type, columns}) => {
  const [search, setSearch] = React.useState("");
  const filtered = items.filter(item => item.name.toLowerCase().includes(search.toLowerCase()));
  const badgeColors = {
    stable: {
      bg: "rgba(34, 197, 94, 0.1)",
      text: "#16a34a",
      darkBg: "rgba(34, 197, 94, 0.15)",
      darkText: "#4ade80"
    },
    beta: {
      bg: "rgba(234, 179, 8, 0.1)",
      text: "#a16207",
      darkBg: "rgba(234, 179, 8, 0.15)",
      darkText: "#facc15"
    },
    alpha: {
      bg: "rgba(239, 68, 68, 0.1)",
      text: "#dc2626",
      darkBg: "rgba(239, 68, 68, 0.15)",
      darkText: "#f87171"
    },
    development: {
      bg: "rgba(249, 115, 22, 0.1)",
      text: "#c2410c",
      darkBg: "rgba(249, 115, 22, 0.15)",
      darkText: "#fb923c"
    },
    deprecated: {
      bg: "rgba(156, 163, 175, 0.1)",
      text: "#6b7280",
      darkBg: "rgba(156, 163, 175, 0.15)",
      darkText: "#9ca3af"
    },
    unknown: {
      bg: "rgba(156, 163, 175, 0.1)",
      text: "#6b7280",
      darkBg: "rgba(156, 163, 175, 0.15)",
      darkText: "#9ca3af"
    }
  };
  const StabilityBadge = ({level}) => {
    const colors = badgeColors[level] || badgeColors.unknown;
    return <span className="stability-badge" data-level={level} style={{
      display: "inline-block",
      padding: "0.125rem 0.5rem",
      borderRadius: "9999px",
      fontSize: "0.75rem",
      fontWeight: 500,
      lineHeight: "1.25rem",
      backgroundColor: colors.bg,
      color: colors.text
    }}>
        {level}
      </span>;
  };
  const stabilityLabel = levels => {
    if (!levels || levels.length === 0) return <span style={{
      color: "#6b7280"
    }}>-</span>;
    return <span style={{
      display: "flex",
      gap: "0.25rem",
      flexWrap: "wrap",
      justifyContent: "center"
    }}>
        {levels.map(level => <StabilityBadge key={level} level={level} />)}
      </span>;
  };
  const hasCol = col => columns.includes(col);
  return <div>
      <style>{`
        .dark .stability-badge[data-level="stable"] { background-color: ${badgeColors.stable.darkBg} !important; color: ${badgeColors.stable.darkText} !important; }
        .dark .stability-badge[data-level="beta"] { background-color: ${badgeColors.beta.darkBg} !important; color: ${badgeColors.beta.darkText} !important; }
        .dark .stability-badge[data-level="alpha"] { background-color: ${badgeColors.alpha.darkBg} !important; color: ${badgeColors.alpha.darkText} !important; }
        .dark .stability-badge[data-level="development"] { background-color: ${badgeColors.development.darkBg} !important; color: ${badgeColors.development.darkText} !important; }
        .dark .stability-badge[data-level="deprecated"] { background-color: ${badgeColors.deprecated.darkBg} !important; color: ${badgeColors.deprecated.darkText} !important; }
        .dark .stability-badge[data-level="unknown"] { background-color: ${badgeColors.unknown.darkBg} !important; color: ${badgeColors.unknown.darkText} !important; }
      `}</style>
      <div className="group/search" style={{
    position: "relative",
    marginBottom: "1.5rem"
  }}>
        <svg style={{
    position: "absolute",
    left: "0.75rem",
    top: "50%",
    transform: "translateY(-50%)",
    width: "1rem",
    height: "1rem",
    color: "#9ca3af",
    pointerEvents: "none"
  }} fill="none" stroke="currentColor" viewBox="0 0 24 24">
          <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z" />
        </svg>
        <input type="text" placeholder={`Search ${items.length} ${type.toLowerCase()}...`} value={search} onChange={e => setSearch(e.target.value)} style={{
    width: "100%",
    padding: "0.5rem 0.75rem 0.5rem 2.25rem",
    borderRadius: "4px",
    border: "1px solid var(--border-color, #e5e7eb)",
    backgroundColor: "transparent",
    color: "inherit",
    fontSize: "0.875rem",
    outline: "none"
  }} />
      </div>
      <div style={{
    overflowX: "auto"
  }}>
        <table style={{
    width: "100%",
    borderCollapse: "collapse",
    fontSize: "0.875rem"
  }}>
          <thead>
            <tr>
              <th style={{
    textAlign: "left",
    padding: "0.5rem 0.75rem",
    fontWeight: 600,
    whiteSpace: "nowrap"
  }}>Name</th>
              {hasCol("distributions") && <th style={{
    textAlign: "left",
    padding: "0.5rem 0.75rem",
    fontWeight: 600
  }}>Distributions</th>}
              {hasCol("stability") && <th style={{
    textAlign: "center",
    padding: "0.5rem 0.75rem",
    fontWeight: 600
  }}>Stability</th>}
              {hasCol("traces") && <th style={{
    textAlign: "center",
    padding: "0.5rem 0.75rem",
    fontWeight: 600
  }}>Traces</th>}
              {hasCol("metrics") && <th style={{
    textAlign: "center",
    padding: "0.5rem 0.75rem",
    fontWeight: 600
  }}>Metrics</th>}
              {hasCol("logs") && <th style={{
    textAlign: "center",
    padding: "0.5rem 0.75rem",
    fontWeight: 600
  }}>Logs</th>}
            </tr>
          </thead>
          <tbody>
            {filtered.map(item => <tr key={item.slug}>
                <td style={{
    padding: "0.5rem 0.75rem",
    whiteSpace: "nowrap"
  }}>
                  <a href={item.slug} style={{
    textDecoration: "none",
    color: "inherit",
    fontWeight: 500
  }}>
                    {item.name}
                  </a>
                </td>
                {hasCol("distributions") && <td style={{
    padding: "0.5rem 0.75rem",
    fontSize: "0.8125rem"
  }}>
                    {item.distributions && item.distributions.length > 0 ? <span style={{
    display: "flex",
    gap: "0.25rem",
    flexWrap: "wrap"
  }}>
                          {item.distributions.map(d => <span key={d} style={{
    display: "inline-block",
    padding: "0.125rem 0.5rem",
    borderRadius: "9999px",
    fontSize: "0.75rem",
    fontWeight: 500,
    backgroundColor: "rgba(156, 163, 175, 0.1)",
    color: "#6b7280"
  }}>
                              {d}
                            </span>)}
                        </span> : <span style={{
    color: "#6b7280"
  }}>-</span>}
                  </td>}
                {hasCol("stability") && <td style={{
    textAlign: "center",
    padding: "0.5rem 0.75rem"
  }}>
                    {stabilityLabel(item.stability ? [item.stability] : [])}
                  </td>}
                {hasCol("traces") && <td style={{
    textAlign: "center",
    padding: "0.5rem 0.75rem"
  }}>
                    {stabilityLabel(item.traces)}
                  </td>}
                {hasCol("metrics") && <td style={{
    textAlign: "center",
    padding: "0.5rem 0.75rem"
  }}>
                    {stabilityLabel(item.metrics)}
                  </td>}
                {hasCol("logs") && <td style={{
    textAlign: "center",
    padding: "0.5rem 0.75rem"
  }}>
                    {stabilityLabel(item.logs)}
                  </td>}
              </tr>)}
          </tbody>
        </table>
      </div>
      {filtered.length === 0 && <p style={{
    color: "#9ca3af",
    textAlign: "center",
    marginTop: "2rem"
  }}>
          No {type.toLowerCase()} found matching "{search}"
        </p>}
    </div>;
};

<ComponentList items={[{"name":"Alertmanager","slug":"/components/exporter/alertmanagerexporter","status":"development","distributions":[],"stability":"development","traces":["development"],"metrics":[],"logs":["development"]},{"name":"Alibabacloudlogservice","slug":"/components/exporter/alibabacloudlogserviceexporter","status":"beta","distributions":["contrib"],"stability":"beta","traces":["beta"],"metrics":["beta"],"logs":["beta"]},{"name":"Awscloudwatchlogs","slug":"/components/exporter/awscloudwatchlogsexporter","status":"alpha","distributions":["contrib"],"stability":"alpha","traces":[],"metrics":[],"logs":["alpha"]},{"name":"Awsemf","slug":"/components/exporter/awsemfexporter","status":"beta","distributions":["contrib"],"stability":"beta","traces":[],"metrics":["beta"],"logs":[]},{"name":"Awskinesis","slug":"/components/exporter/awskinesisexporter","status":"beta","distributions":["contrib"],"stability":"beta","traces":["beta"],"metrics":["beta"],"logs":["beta"]},{"name":"Awss3","slug":"/components/exporter/awss3exporter","status":"alpha","distributions":["contrib"],"stability":"alpha","traces":["alpha"],"metrics":["alpha"],"logs":["alpha"]},{"name":"Awsxray","slug":"/components/exporter/awsxrayexporter","status":"beta","distributions":["contrib"],"stability":"beta","traces":["beta"],"metrics":[],"logs":[]},{"name":"Azureblob","slug":"/components/exporter/azureblobexporter","status":"alpha","distributions":["contrib"],"stability":"alpha","traces":["alpha"],"metrics":["alpha"],"logs":["alpha"]},{"name":"Azuredataexplorer","slug":"/components/exporter/azuredataexplorerexporter","status":"beta","distributions":["contrib"],"stability":"beta","traces":["beta"],"metrics":["beta"],"logs":["beta"]},{"name":"Azuremonitor","slug":"/components/exporter/azuremonitorexporter","status":"beta","distributions":["contrib"],"stability":"beta","traces":["beta"],"metrics":["beta"],"logs":["beta"]},{"name":"Bmchelix","slug":"/components/exporter/bmchelixexporter","status":"alpha","distributions":["contrib"],"stability":"alpha","traces":[],"metrics":["alpha"],"logs":[]},{"name":"Cassandra","slug":"/components/exporter/cassandraexporter","status":"alpha","distributions":["contrib"],"stability":"alpha","traces":["alpha"],"metrics":[],"logs":["alpha"]},{"name":"ClickHouse","slug":"/components/exporter/clickhouseexporter","status":"beta","distributions":["contrib"],"stability":"beta","traces":["beta"],"metrics":["alpha"],"logs":["beta"]},{"name":"Coralogix","slug":"/components/exporter/coralogixexporter","status":"beta","distributions":["contrib"],"stability":"beta","traces":["beta"],"metrics":["beta"],"logs":["beta"]},{"name":"Datadog","slug":"/components/exporter/datadogexporter","status":"beta","distributions":["contrib"],"stability":"beta","traces":["beta"],"metrics":["beta"],"logs":["beta"]},{"name":"Dataset","slug":"/components/exporter/datasetexporter","status":"alpha","distributions":["contrib"],"stability":"alpha","traces":["alpha"],"metrics":[],"logs":["alpha"]},{"name":"Doris","slug":"/components/exporter/dorisexporter","status":"alpha","distributions":["contrib"],"stability":"alpha","traces":["alpha"],"metrics":["alpha"],"logs":["alpha"]},{"name":"Elasticsearch","slug":"/components/exporter/elasticsearchexporter","status":"beta","distributions":["contrib"],"stability":"beta","traces":["beta"],"metrics":["development"],"logs":["beta"]},{"name":"Faro","slug":"/components/exporter/faroexporter","status":"alpha","distributions":["contrib"],"stability":"alpha","traces":["alpha"],"metrics":[],"logs":["alpha"]},{"name":"File","slug":"/components/exporter/fileexporter","status":"alpha","distributions":["core","contrib","k8s"],"stability":"alpha","traces":["alpha"],"metrics":["alpha"],"logs":["alpha"]},{"name":"Googlecloud","slug":"/components/exporter/googlecloudexporter","status":"beta","distributions":["contrib"],"stability":"beta","traces":["beta"],"metrics":["beta"],"logs":["beta"]},{"name":"Googlecloudpubsub","slug":"/components/exporter/googlecloudpubsubexporter","status":"beta","distributions":["contrib"],"stability":"beta","traces":["beta"],"metrics":["beta"],"logs":["beta"]},{"name":"Googlecloudstorage","slug":"/components/exporter/googlecloudstorageexporter","status":"alpha","distributions":["contrib"],"stability":"alpha","traces":["development"],"metrics":[],"logs":["alpha"]},{"name":"Googlemanagedprometheus","slug":"/components/exporter/googlemanagedprometheusexporter","status":"beta","distributions":["contrib"],"stability":"beta","traces":[],"metrics":["beta"],"logs":[]},{"name":"Honeycombmarker","slug":"/components/exporter/honeycombmarkerexporter","status":"alpha","distributions":["contrib"],"stability":"alpha","traces":[],"metrics":[],"logs":["alpha"]},{"name":"Influxdb","slug":"/components/exporter/influxdbexporter","status":"beta","distributions":["contrib"],"stability":"beta","traces":["beta"],"metrics":["beta"],"logs":["beta"]},{"name":"Kafka","slug":"/components/exporter/kafkaexporter","status":"beta","distributions":["core","contrib"],"stability":"beta","traces":["beta"],"metrics":["beta"],"logs":["beta"]},{"name":"Loadbalancing","slug":"/components/exporter/loadbalancingexporter","status":"beta","distributions":["contrib","k8s"],"stability":"beta","traces":["beta"],"metrics":["development"],"logs":["beta"]},{"name":"Logicmonitor","slug":"/components/exporter/logicmonitorexporter","status":"alpha","distributions":["contrib"],"stability":"alpha","traces":["alpha"],"metrics":[],"logs":["alpha"]},{"name":"Logzio","slug":"/components/exporter/logzioexporter","status":"beta","distributions":["contrib"],"stability":"beta","traces":["beta"],"metrics":[],"logs":["beta"]},{"name":"Mezmo","slug":"/components/exporter/mezmoexporter","status":"beta","distributions":["contrib"],"stability":"beta","traces":[],"metrics":[],"logs":["beta"]},{"name":"Opensearch","slug":"/components/exporter/opensearchexporter","status":"alpha","distributions":["contrib"],"stability":"alpha","traces":["alpha"],"metrics":[],"logs":["alpha"]},{"name":"Otelarrow","slug":"/components/exporter/otelarrowexporter","status":"beta","distributions":["contrib","k8s"],"stability":"beta","traces":["beta"],"metrics":["beta"],"logs":["beta"]},{"name":"Prometheus","slug":"/components/exporter/prometheusexporter","status":"beta","distributions":["core","contrib"],"stability":"beta","traces":[],"metrics":["beta"],"logs":[]},{"name":"Prometheusremotewrite","slug":"/components/exporter/prometheusremotewriteexporter","status":"beta","distributions":["core","contrib"],"stability":"beta","traces":[],"metrics":["beta"],"logs":[]},{"name":"Pulsar","slug":"/components/exporter/pulsarexporter","status":"alpha","distributions":["contrib"],"stability":"alpha","traces":["alpha"],"metrics":["alpha"],"logs":["alpha"]},{"name":"Rabbitmq","slug":"/components/exporter/rabbitmqexporter","status":"alpha","distributions":["contrib"],"stability":"alpha","traces":["alpha"],"metrics":["alpha"],"logs":["alpha"]},{"name":"Sematext","slug":"/components/exporter/sematextexporter","status":"development","distributions":[],"stability":"development","traces":[],"metrics":["development"],"logs":["development"]},{"name":"Sentry","slug":"/components/exporter/sentryexporter","status":"alpha","distributions":["contrib"],"stability":"alpha","traces":["alpha"],"metrics":[],"logs":["alpha"]},{"name":"Signalfx","slug":"/components/exporter/signalfxexporter","status":"beta","distributions":["contrib"],"stability":"beta","traces":["deprecated"],"metrics":["beta"],"logs":["beta"]},{"name":"Splunkhec","slug":"/components/exporter/splunkhecexporter","status":"beta","distributions":["contrib"],"stability":"beta","traces":["beta"],"metrics":["beta"],"logs":["beta"]},{"name":"Stef","slug":"/components/exporter/stefexporter","status":"alpha","distributions":["contrib"],"stability":"alpha","traces":[],"metrics":["alpha"],"logs":[]},{"name":"Sumologic","slug":"/components/exporter/sumologicexporter","status":"beta","distributions":["contrib"],"stability":"beta","traces":["beta"],"metrics":["beta"],"logs":["beta"]},{"name":"Syslog","slug":"/components/exporter/syslogexporter","status":"alpha","distributions":["contrib"],"stability":"alpha","traces":[],"metrics":[],"logs":["alpha"]},{"name":"Tencentcloudlogservice","slug":"/components/exporter/tencentcloudlogserviceexporter","status":"beta","distributions":["contrib"],"stability":"beta","traces":[],"metrics":[],"logs":["beta"]},{"name":"Tinybird","slug":"/components/exporter/tinybirdexporter","status":"alpha","distributions":["contrib"],"stability":"alpha","traces":["alpha"],"metrics":["alpha"],"logs":["alpha"]},{"name":"Zipkin","slug":"/components/exporter/zipkinexporter","status":"beta","distributions":["core","contrib"],"stability":"beta","traces":["beta"],"metrics":[],"logs":[]}]} columns={["distributions","traces","metrics","logs"]} type="Exporters" />
