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

# Configure Lens services

export const ServiceNavIcon = props => {
  return <svg viewBox="0 0 20 20" {...props} className="inline-block h-5 w-5 fill-current" aria-label="Services">
      <path d="M0 13.5463C0 13.3708 0.157997 13.2607 0.284979 13.3478L4.18974 16.0263C4.24909 16.067 4.28571 16.1427 4.28571 16.2248V19.7709C4.28571 19.9465 4.12772 20.0566 4.00074 19.9695L0.0959735 17.291C0.0366259 17.2503 0 17.1745 0 17.0925V13.5463Z" />
      <path d="M5.2381 16.2248C5.2381 16.1427 5.27472 16.067 5.33407 16.0263L9.23883 13.3478C9.36581 13.2607 9.52381 13.3708 9.52381 13.5463V17.0925C9.52381 17.1745 9.48718 17.2503 9.42784 17.291L5.52307 19.9695C5.39609 20.0566 5.2381 19.9465 5.2381 19.7709V16.2248Z" />
      <path d="M4.85641 15.0372L8.75079 12.3658C8.87876 12.2781 8.87876 12.0566 8.75079 11.9688L4.85641 9.29746C4.79785 9.25729 4.72596 9.25729 4.6674 9.29746L0.773017 11.9688C0.645052 12.0566 0.645052 12.2781 0.773016 12.3658L4.6674 15.0372C4.72596 15.0774 4.79785 15.0774 4.85641 15.0372Z" />
      <path d="M5.23804 4.279C5.23804 4.10344 5.39603 3.99337 5.52302 4.08048L9.42778 6.75893C9.48713 6.79964 9.52375 6.8754 9.52375 6.95746V10.5036C9.52375 10.6792 9.36575 10.7892 9.23877 10.7021L5.33401 8.02368C5.27466 7.98297 5.23804 7.90721 5.23804 7.82515V4.279Z" />
      <path d="M10.4761 6.95746C10.4761 6.8754 10.5128 6.79964 10.5721 6.75893L14.4769 4.08048C14.6039 3.99337 14.7618 4.10344 14.7618 4.279V7.82515C14.7618 7.9072 14.7252 7.98297 14.6659 8.02368L10.7611 10.7021C10.6341 10.7892 10.4761 10.6792 10.4761 10.5036V6.95746Z" />
      <path d="M10.0944 5.76985L13.9888 3.09851C14.1168 3.01073 14.1168 2.78924 13.9888 2.70147L10.0944 0.0301261C10.0359 -0.010042 9.964 -0.010042 9.90544 0.0301261L6.01105 2.70147C5.88309 2.78924 5.88309 3.01073 6.01105 3.09851L9.90544 5.76985C9.964 5.81002 10.0359 5.81002 10.0944 5.76985Z" />
      <path d="M10.4761 13.5463C10.4761 13.3708 10.6341 13.2607 10.7611 13.3478L14.6658 16.0263C14.7252 16.067 14.7618 16.1427 14.7618 16.2248V19.7709C14.7618 19.9465 14.6038 20.0566 14.4768 19.9695L10.572 17.291C10.5127 17.2503 10.4761 17.1745 10.4761 17.0925V13.5463Z" />
      <path d="M15.7142 16.2248C15.7142 16.1427 15.7508 16.067 15.8101 16.0263L19.7149 13.3478C19.8419 13.2607 19.9999 13.3708 19.9999 13.5463V17.0925C19.9999 17.1745 19.9633 17.2503 19.9039 17.291L15.9991 19.9695C15.8722 20.0566 15.7142 19.9465 15.7142 19.7709V16.2248Z" />
      <path d="M15.3325 15.0372L19.2269 12.3658C19.3548 12.2781 19.3548 12.0566 19.2269 11.9688L15.3325 9.29746C15.2739 9.25729 15.202 9.25729 15.1435 9.29746L11.2491 11.9688C11.1211 12.0566 11.1211 12.2781 11.2491 12.3658L15.1435 15.0372C15.202 15.0774 15.2739 15.0774 15.3325 15.0372Z" />
    </svg>;
};

<Note>
  This feature isn't available to all Chronosphere Observability Platform users and
  might not be visible in your app. For information about enabling this feature in your
  environment, contact [Chronosphere Support](/support).
</Note>

Configure [service discovery jobs](/administer/service-discovery), merge rules, and
presentations on the **Service Configuration** page in Chronosphere Observability
Platform so [Chronosphere Lens](/observe/services) services show the right metrics,
monitors, dashboards, and SLOs. All users can view service configurations and preview
changes. Only users with
[SysAdmin permissions](/administer/accounts-teams/teams#add-a-role-to-a-team) can
save new or edit existing service configurations.

## Before you start

To open the [Service Configuration](/administer/service-discovery#view-service-configuration)
page, in the navigation menu, click **<Icon icon="shield-user" /> Go to Admin**
and then select
**Platform <span aria-label="and then">></span> Service Configuration**.
Gather details about the services your teams expect to see:

* Important service names and naming patterns
* Technologies in use, such as gRPC, HTTP, Istio, or Kubernetes
* Rough count of services
* Metric sources, such as Prometheus exporters or OpenTelemetry

## Configure discovery

Discovery jobs match metrics and events to services. Follow the procedures for enablement, label
mapping, and apply in that order before moving to merge rules.

### Apply staged changes

On the **Service Configuration** page, edits accumulate until you apply them. After each
edit, click **Stage changes**. When a set of changes is ready, click
**Review & apply changes**, then and then follow the procedures descrived in
[Preview and apply discovery](/administer/service-discovery#preview-and-apply-changes).
Repeat this cycle after discovery jobs, merge rules, and presentations.

### Review discovery jobs

*Discovery jobs* are templates that match metrics and events to a discovered service.
On the **Discovery jobs** tab, enable jobs whose **Services discovered** count looks
reasonable for your environment. Jobs in the **Managed by** column are managed by
Observability Platform and aren't editable.
[Create your own jobs](/administer/service-discovery#create-a-discovery-job) when
defaults don't match your metric prefixes or labels, or
[edit or delete a job](/administer/service-discovery#edit-or-delete-a-discovery-job)
when an existing job needs changes.

Don't enable every default job at once if default label mappings don't match your
metrics.

### Customize service label mappings

When a job discovers too many or too few services, update **Service mapping** in the
job's [edit form](/administer/service-discovery#edit-or-delete-a-discovery-job).

* Use [**Service label**](/administer/service-discovery#create-a-discovery-job) when
  the metric in **Metric name** already includes a service name label.
* Use [**Pod mapping**](/administer/service-discovery#create-a-discovery-job) as an
  advanced option when metrics lack a service label but include a pod or instance
  label that can join with a label in
  [Global mappings](/administer/service-discovery#global-mappings). Review the
  **Global mapping** button on **Service Configuration** before pod mapping when your
  metrics use pod labels. Pod mapping can overmatch. Pair it with a
  [**Suppress** rule](/administer/service-discovery#create-a-merge-rule) when needed.

For metrics discovery jobs, optionally use
[Edit SLO config](/administer/service-discovery#edit-slo-config) to map availability
and latency metrics before you apply discovery changes.

Label names vary across environments. The same concept might appear as `pod`,
`pod_name`, `kubernetes_pod_name`, or `k8s_pod_name`. Review your metrics in
[Metrics Explorer](/investigate/querying/metrics/explorer) before choosing a mapping.

### Preview and apply discovery

After you [apply staged changes](#apply-staged-changes) for discovery jobs, the preview
uses `+`, `-`, and `*` for added, inactivated, and modified services. A removal can
mean a service was merged, reassigned, or excluded by a rule.

After you run discovery, review
[Configuration Status](/administer/service-discovery#configuration-status) on
**Service Configuration** for discovery job errors or conflicts.

## Clean up the service list

Discovery surfaces every name that matches your rules, including legacy naming
schemes, environment suffixes, and ephemeral workloads. Use
[*merge rules*](/administer/service-discovery#use-merge-rules-to-correct-or-remove-services)
on the **Merge rules** tab to shape the list into the services your teams recognize.

Merge rules apply from top to bottom of the list. A service matches the first rule
that applies to it and won't match additional rules. Drag rules to change their
order. [Create a merge rule](/administer/service-discovery#create-a-merge-rule)
using one of these types:

* **Merge:** Combine services that differ only by environment suffix. For example,
  merge `payments-prod`, `payments-dev`, and `payments-load` into `payments` so teams
  use one [service page](/observe/services/service-pages) instead of separate pages per
  environment.
* **Ignore:** Exclude short-lived containers or batch jobs that change too often to
  keep on the list. Match the naming pattern with a
  [regular expression](/investigate/querying/regular-expressions) in the rule's
  **Regex** field.
* **Suppress:** Stop a discovery job from creating new service names while still
  attaching its metrics to services already on the list.

A common suppress pattern example might be where cAdvisor compute metrics have no
app label, so the **Compute Metrics** discovery job uses `namespace` as the service
label. That label includes many values that aren't services. Suppress that job and
list the real service names as **Global Suppression Exceptions** so the job only
attaches metrics to services already discovered by another job.

[Apply staged changes](#apply-staged-changes) after creating or editing rules.

## Configure presentations

Presentations are templates for how service data displays on a
[service page](/observe/services/service-pages). Observability Platform provides
default presentations in [**Chronosphere Managed**](/administer/service-discovery#presentations).
Create your own in
[**Custom Presentations**](/administer/service-discovery#create-a-presentation).

When you import a dashboard, map its service variable to the
[`lens_service`](/investigate/querying/metrics/derived-telemetry/derived-labels)
derived label so panels filter to the current service.

Each presentation card displays **Number of Services** and **Number of panels**.
Adjust matching conditions if those counts don't match expectations, or click a card to
[edit a presentation](/administer/service-discovery#edit-a-presentation).

[Apply staged changes](#apply-staged-changes) after editing presentations.

## Connect monitors, dashboards, and SLOs

After discovery and presentations are stable, connect operational resources to
each service.

### Connect monitors and dashboards

On a [service page](/observe/services/service-pages), click **Manage** next to
**Dashboards** or **All monitors** to add
[owned dashboards and monitors](/observe/services/service-pages#own-dashboards-and-monitors)
or [connected resources](/observe/services/extending-services#view-connected-resources).
Owned resources affect the service's [status](/observe/services#service-status) on the
**Services** list. Add a **Description**, runbook links, and a
[notification policy](/investigate/alerts/notifications/policies) in
[Edit service information](/observe/services/service-pages#edit-service-information).

### Create SLOs

After service pages show the metrics you want to measure, create
[service level objectives](/observe/slo) (SLOs). On a
[service page](/observe/services/service-pages), click **+ Add** and select **SLO**.
The service is already selected as the owner.

For queryless RPC and gRPC SLOs, burn rate alerts, and other creation paths, see
[Create a new SLO](/investigate/alerts/manage-slos#create-a-new-slo).

## Verify the result

To verify your changes, in the navigation menu, select
**<ServiceNavIcon /> System Overview <span aria-label="and then">></span> Services**
to open the **Services** list. Confirm the following:

* Service names match what your teams expect.
* The **Presentations** column lists the presentations attached to each service.
* Clicking a service name opens [visualization panels](/observe/dashboards/panels)
  for compute metrics, RPC metrics, and any custom presentations you configured.
* Monitors, dashboards, and SLOs appear in the sidebar and main column.

For end-user investigation workflows after setup, see
[Service exploration](/observe/services/service-exploration).

## Troubleshooting

If setup doesn't look right, return to the relevant section on this page. For
field-level reference, see
[Manage Chronosphere Lens service configuration](/administer/service-discovery).

| Symptom                                       | Sections to review                                                                                                                                                                                                                                                                                                                       |
| --------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Too many services                             | [Review discovery jobs](#review-discovery-jobs), [Customize service label mappings](#customize-service-label-mappings), [Clean up the service list](#clean-up-the-service-list)                                                                                                                                                          |
| Too few services                              | [Review discovery jobs](#review-discovery-jobs), [Customize service label mappings](#customize-service-label-mappings), [Preview and apply discovery](#preview-and-apply-discovery)                                                                                                                                                      |
| Names differ across metrics, traces, and logs | [Customize service label mappings](#customize-service-label-mappings), [Clean up the service list](#clean-up-the-service-list). The [`lens_service`](/investigate/querying/metrics/derived-telemetry/derived-labels) derived label on metrics won't match trace service names until discovery and merge rules produce a consistent name. |
| Changes missing from service pages            | [Preview and apply discovery](#preview-and-apply-discovery), [Configure presentations](#configure-presentations). Enable **Include inactive services** on the [Services](/observe/services) list to review phased-out services.                                                                                                          |
