Service Map fully visualizes your system architecture, breaking down your application into all its constituent services and drawing the observed dependencies between them in real-time based on your [distributed tracing](https://coralogix.com/docs/user-guides/data_exploration/spans/index.md).

## Setup

To use Service Map:

- [Install and configure](https://coralogix.com/docs/user-guides/apm/getting-started/apm-onboarding-tutorial/index.md) Coralogix APM.
- Send spans (not only Span Metrics) using head or tail sampling.

## Span attributes

To identify certain services in the Service Map, define the following attributes.

### [AWS S3](https://opentelemetry.io/docs/specs/semconv/object-stores/s3/)

| Attribute       | Type   | Description                                                                 |
| --------------- | ------ | --------------------------------------------------------------------------- |
| `span.kind`     | string | Set to `CLIENT`, as it's an external call                                   |
| `rpc.system`    | string | Set to `aws-api`                                                            |
| `rpc.service`   | string | Contains S3 or tag with prefix `aws.s3`                                     |
| `aws.s3.bucket` | string | The name of the S3 is retrieved from this attribute. If missing, S3 is used |

We also identify AWS S3 spans based on the specific S3 icon.

### [Kafka](https://opentelemetry.io/docs/specs/semconv/messaging/kafka/)

| Attribute                                               | Type   | Description                                                                                                                                                                        |
| ------------------------------------------------------- | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `span.kind`                                             | string | In one match (call), Kafka can be either a destination or source service. Set to `PRODUCER` if Kafka is the destination service. Set to `CONSUMER` if Kafka is the source service. |
| `messaging.system`                                      | string | Set to `kafka`                                                                                                                                                                     |
| `messaging.destination` or `messaging.destination.name` | string | Name of the topic displayed the UI: "kafka topic \<x>"                                                                                                                             |

We also identify Kafka spans based on the specific Kafka icon.

### [RabbitMQ](https://opentelemetry.io/docs/specs/semconv/messaging/rabbitmq/)

| Attribute                                               | Type   | Description                                                                                                                                                                       |
| ------------------------------------------------------- | ------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `span.kind`                                             | string | In one match (call), RabbitMQ can be either a destination or source service. Set to PRODUCER if Kafka is the destination service. Set to CONSUMER if Kafka is the source service. |
| `messaging.system`                                      | string | Set to `rabbitmq`                                                                                                                                                                 |
| `messaging.destination` or `messaging.destination.name` | string | Name of the topic displayed the UI: "RabbitMQ \<x>"                                                                                                                               |

We also identify RabbitMQ spans based on the specific RabbitMQ icon.

### [Redis](https://opentelemetry.io/docs/specs/semconv/database/redis/)

| Attribute                             | Type   | Description                                                                                |
| ------------------------------------- | ------ | ------------------------------------------------------------------------------------------ |
| `span.kind`                           | string | Set to `CLIENT`, as it's an external call                                                  |
| `db.system`                           | string | Set to `redis`                                                                             |
| `db.name` + `db.redis.database_index` | string | Database name. If one attribute is missing, the system uses the attribute that is present. |

## How it works

The Service Map offers insights into your services and their well-being, effectively cutting through extraneous information to pinpoint problematic areas.

### Access Service Map

To access this feature, navigate to **APM**, then to **Service Map** in your Coralogix toolbar.

### Visualize traces

View a visualization of your traces, organized into clusters. In the left-hand sidebar, filter by LANGUAGE, PROVIDER, ENVIRONMENT and/or DATABASE, MESSAGING SYSTEM, and BUCKET.

### Identify service dependencies

The Service Map presents a comprehensive overview of a service's dependencies, encompassing connections in various environments.

- Hover over and select a service point to view all of its associated information.
- Select the service and proceed to viewing its overview, logs, and traces, as shown below.
- Search for a service using the search function.

## Limitations

The Service Map supports rendering up to 20,000 nodes. If the map exceeds this limit, it is not rendered. To view the map, refine your scope by reducing the number of services.

## Next steps

If your map includes Lambda functions, see [Serverless monitoring](https://coralogix.com/docs/user-guides/apm/features/serverless-monitoring/index.md) for function-level invocations and traces.

## Additional resources

|               |                                                                                                                                                                                                               |
| ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Documentation | [Application Performance Monitoring (APM)](https://coralogix.com/blog/application-performance-monitoring-visibility/) [Explore spans](https://coralogix.com/docs/user-guides/data_exploration/spans/index.md) |
| Blog          | [One Click Visibility: Coralogix Expands APM Capabilities to Kubernetes](https://coralogix.com/blog/application-performance-monitoring-visibility/)                                                           |

## Support

**Need help?**

Our world-class customer success team is available 24/7 to walk you through your setup and answer any questions that may come up.

Feel free to reach out to us **via our in-app chat** or by sending us an email at **[support@coralogix.com](mailto:support@coralogix.com)**.
