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

# Send Metrics to Honeycomb

> Send application and system metrics to Honeycomb and query them alongside your traces and logs.

export const HnyIcon = ({alias, path, size = 16, iconColor}) => {
  const iconMap = {
    "home": "house.svg",
    "marker": "caretFilledDown.svg",
    "show-marker-options": "chatTextLeft.svg",
    "download": "arrowLineDown.svg",
    "trace-waterfall": "trace.svg",
    "show-query-details": "listDashes.svg",
    "table": "table.svg",
    "log-lines": "logLines.svg",
    "chart": "chartLine.svg",
    "show-settings": "gear.svg",
    "add": "plus.svg",
    "remove": "delete.svg",
    "persist": "caretDown.svg",
    "close": "close.svg",
    "copy": "copy.svg",
    "zoom-in": "magnifyingGlassPlus.svg",
    "zoom-out": "magnifyingGlassMinus.svg",
    "color-assignment": "drop.svg",
    "drag": "dots-six-vertical.svg",
    "drawer": "drawer.svg",
    "show-actions": "dotsThree.svg",
    "edit": "pencil.svg",
    "delete": "trash.svg",
    "move": "arrowsOutCardinal.svg",
    "show-legend": "circleInfo.svg",
    "usage-ok": "usageGood.svg",
    "usage-warning": "usageWarning.svg",
    "usage-danger": "usageDanger.svg",
    "open-query-builder": "query.svg",
    "home-menu": "house.svg",
    "query-menu": "query.svg",
    "boards-menu": "board.svg",
    "triggers-menu": "bell.svg",
    "slos-menu": "handshake.svg",
    "service-map-menu": "serviceMap.svg",
    "history-menu": "clockCounterClockwise.svg",
    "manage-data-menu": "cube.svg",
    "usage-menu": "usageGood.svg",
    "show-details": "dotsThreeVertical.svg",
    "resize-handle": "board-panel-resize-handle.png",
    "standard-dataset": "cube.svg",
    "trace-dataset": "cubeChat.svg",
    "all-datasets": "linkedSquares.svg",
    "share": "arrowBentRight.svg",
    "run-in-query-builder": "arrowSquareUpRight.svg",
    "link": "link.svg",
    "text": "text.svg",
    "receive": "arrowLineDown.svg",
    "process": "lightning.svg",
    "sample": "drop.svg",
    "send": "arrowLineUp.svg",
    "submit": "arrowUp.svg",
    "canvas-menu": "sparkle.svg",
    "canvas": "sparkle.svg",
    "private": "lockKey.svg",
    "shared": "people.svg",
    "expand": "caretDown.svg",
    "previous": "caretLeft.svg",
    "next": "caretRight.svg"
  };
  const iconBasePath = "/_assets/icons/";
  const iconPath = path || (alias ? `${iconBasePath}${iconMap[alias]}` : undefined);
  return <span className="hny-icon" style={{
    display: "inline-block",
    width: `${size}px`,
    height: `${size}px`,
    maskImage: `url(${iconPath})`,
    maskSize: "contain",
    maskRepeat: "no-repeat",
    maskPosition: "center",
    WebkitMaskImage: `url(${iconPath})`,
    WebkitMaskSize: "contain",
    WebkitMaskRepeat: "no-repeat",
    WebkitMaskPosition: "center",
    backgroundColor: iconColor || "var(--hny-icon-color)",
    verticalAlign: "middle"
  }} />;
};

Metrics are well suited to giving a picture of the general health of a host or resource.
Honeycomb can consume and display metrics in addition to tracing and telemetry data.

## Sending metrics to Honeycomb

Honeycomb supports [OpenTelemetry metric types](https://opentelemetry.io/docs/concepts/signals/metrics/), including gauges, delta and cumulative sums, and histograms.

There are several ways to send metric data to Honeycomb.
In general, we recommend that you send metric data to its own dataset.

* Send [host metrics to Honeycomb with an OpenTelemetry Collector](/send-data/metrics/system/) running as an agent on each host
* Send metrics from a [Prometheus Client](/integrations/metrics/prometheus/)
* Send AWS metrics from [AWS CloudWatch metric streams](/integrations/metrics/aws-cloudwatch/)
* An [OpenTelemetry SDK](/send-data/metrics/application/) can send metrics from within an application

## Querying metrics

Querying metrics is just like querying any other data in Honeycomb.
Metric resources and attributes are stored as fields and can be used in **WHERE** and **GROUP BY** clauses to plot specific timeseries.
You can also use [temporal aggregation functions](/investigate/query/temporal-aggregation) in your queries such as `RATE()`, `INCREASE()`, `SUMMARIZE()`, and `LAST()`.

Learn more about [writing queries for metrics data](/investigate/query/examples-metrics/).

### Making metrics graphs look less spikey

Because metric data arrives at known, regular intervals, you may find that your metrics graphs have a spiky appearance where after each metric, the line graph drops to zero before plotting the next point.
Some people prefer a continuous line graph, without the drops to zero, because it is easier to identify trends in the data.
There are two ways to achieve this continuous line graph:

1. Modify the Granularity using the time picker in Query Builder. Alternatively, set a [default granularity](/reference/honeycomb-ui/manage-data/datasets/dataset-settings/#default-granularity) for the dataset.
2. Enable the **Omit Missing Values** graph setting on the query. To do this:
   1. On the right side of Query Results, select the Settings icon (<HnyIcon alias="show-settings" />) to display the **Display Settings**.
   2. Select **Omit Missing Values**.
   3. The graph refreshes and should display a continuous line.

## Correlating query results and metrics data

Use the [Correlations tab](/investigate/analyze/correlate/) in Query Builder and compare query results with your metrics data.

Looking at your infrastructure metrics alongside query results can give you a better insight into your system.
For example, a system running out of memory, CPU, or network resources might be the reason for an [out-of-compliance SLO](/notify/slos/) or an [alerting trigger](/notify/triggers/), and seeing the graph of the problem alongside graphs of relevant system resources could confirm or deny this kind of hypothesis.

## Adjusting metrics event volume

Honeycomb stores metrics in events, and it combines as many metrics into a single event as possible.
Every captured data point is stored as a value in an event whose timestamp represents the time of capture.
All attributes that uniquely identify the metric's timeseries are included on the event.
Events that contain metrics are most effective (and cost-effective) when many data points for the same resource, same attributes, and same timestamp arrive together.
Learn about factors that affect [metrics event volume and how to manage it](/manage-data-volume/adjust-granularity/metrics-events/).

## Integrations

Honeycomb provides the following integrations for sending metrics:

<Card title="AWS Cloudwatch" href="/integrations/metrics/aws-cloudwatch/">
  Stream metrics stored in AWS CloudWatch to Honeycomb using AWS Kinesis Data Firehose.
</Card>

<Card title="HashiCorp Consul" href="/integrations/metrics/hashicorp-consul/">
  Configure HashiCorp Consol to send cluster metrics to Honeycomb with an OpenTelemetry Collector.
</Card>

<Card title="HashiCorp Nomad" href="/integrations/metrics/hashicorp-nomad/">
  Configure HashiCorp Nomad to send metrics to Honeycomb with an OpenTelemetry Collector.
</Card>

<Card title="HashiCorp Vault" href="/integrations/metrics/hashicorp-vault/">
  Configure HashiCorp Vault to send server metrics to Honeycomb with an OpenTelemetry Collector.
</Card>

<Card title="Prometheus Clients" href="/integrations/metrics/prometheus/">
  Scrape Prometheus client metrics with an OpenTelemetry Collector and send them to Honeycomb.
</Card>
