---
title: Charmhub | Deploy Alertmanager using Charmhub - The Open Operator Collection
description: Deploy the latest version of Alertmanager as a Kubernetes Operator on
  any cloud.
url: https://charmhub.io/alertmanager-k8s/libraries/alertmanager_dispatch
---

# Alertmanager

[Canonical Observability](https://charmhub.io/publisher/observability "View all packages from Canonical Observability")

* [Canonical Observability](https://charmhub.io/publisher/observability "View all packages from Canonical Observability")

Platform:

0.31/stable tf-0.31.1-1-g7796bf8

```
juju deploy alertmanager-k8s --channel 0.31/stable
```

[Learn to deploy on juju >](https://juju.is/docs/juju/manage-applications)

[Toggle side navigation](https://charmhub.io/alertmanager-k8s/libraries/alertmanager_dispatch#drawer)

## charms.alertmanager\_k8s.v1.alertmanager\_dispatch

* [*Docstrings*Docstrings](https://charmhub.io/alertmanager-k8s/libraries/alertmanager_dispatch)
  [*Code*Source code](https://charmhub.io/alertmanager-k8s/libraries/alertmanager_dispatch/source-code)
* + Download

    Fetch library

    ```
    charmcraft fetch-lib charms.alertmanager_k8s.v1.alertmanager_dispatch
    ```

    [Download alertmanager\_dispatch.py](https://charmhub.io/alertmanager-k8s/libraries/alertmanager_dispatch/download)
  + *Last updated* 14 Feb 2024
  + *Revision* Library version 1.2

#### Alertmanager library.

This library is designed to be used by a charm consuming or providing the `alertmanager_dispatch`
relation interface.

This library is published as part of the
[Alertmanager charm](https://charmhub.io/alertmanager-k8s).

You can file bugs [here](https://github.com/canonical/alertmanager-operator/issues)!

A typical example of including this library might be:

```
# ...
from charms.alertmanager_k8s.v1.alertmanager_dispatch import AlertmanagerConsumer

class SomeApplication(CharmBase):
  def __init__(self, *args):
    # ...
    self.alertmanager_consumer = AlertmanagerConsumer(self, relation_name="alertmanager")
    # ...
```

---

Index

* [class ClusterChanged](https://charmhub.io/alertmanager-k8s/libraries/alertmanager_dispatch#clusterchanged)
* [class AlertmanagerConsumerEvents](https://charmhub.io/alertmanager-k8s/libraries/alertmanager_dispatch#alertmanagerconsumerevents)
* [class RelationManagerBase](https://charmhub.io/alertmanager-k8s/libraries/alertmanager_dispatch#relationmanagerbase)
* + [def \_\_init\_\_(
    self,
    charm,
    relation\_name,
    relation\_role)](https://charmhub.io/alertmanager-k8s/libraries/alertmanager_dispatch#relationmanagerbase-__init__)
* [class AlertmanagerConsumer](https://charmhub.io/alertmanager-k8s/libraries/alertmanager_dispatch#alertmanagerconsumer)
* + [def \_\_init\_\_(
    self,
    charm)](https://charmhub.io/alertmanager-k8s/libraries/alertmanager_dispatch#alertmanagerconsumer-__init__)
* + [def get\_cluster\_info(
    self)](https://charmhub.io/alertmanager-k8s/libraries/alertmanager_dispatch#alertmanagerconsumer-get_cluster_info)
* [class AlertmanagerProvider](https://charmhub.io/alertmanager-k8s/libraries/alertmanager_dispatch#alertmanagerprovider)
* + [def \_\_init\_\_(
    self,
    charm)](https://charmhub.io/alertmanager-k8s/libraries/alertmanager_dispatch#alertmanagerprovider-__init__)
* + [def update(
    self)](https://charmhub.io/alertmanager-k8s/libraries/alertmanager_dispatch#alertmanagerprovider-update)

#### class ClusterChanged

Event raised when an alertmanager cluster is changed.

Description

If an alertmanager unit is added to or removed from a relation,
then a :class:`ClusterChanged` event should be emitted.

#### class AlertmanagerConsumerEvents

Description

Event descriptor for events raised by `AlertmanagerConsumer`. None

#### class RelationManagerBase

Base class that represents relation ends ("provides" and "requires").

Methods

RelationManagerBase.
\_\_init\_\_(

*self*

,
charm: CharmBase

,
relation\_name: str

,
relation\_role: RelationRole
)

#### class AlertmanagerConsumer

A "consumer" handler to be used by charms that relate to Alertmanager (the 'requires' side).

Arguments

charm
(CharmBase)

consumer charm

relation\_name
(str)

from consumer's metadata.yaml

Attributes

charm
(CharmBase)

consumer charm

Description

To have your charm consume alertmanager cluster data, declare the interface's use in your
charm's metadata.yaml file:

```
requires:
  alertmanager:
    interface: alertmanager_dispatch
```

A typical example of importing this library might be

```
from charms.alertmanager_k8s.v1.alertmanager_dispatch import AlertmanagerConsumer
```

In your charm's `__init__` method:

```
self.alertmanager_consumer = AlertmanagerConsumer(self, relation_name="alertmanager")
```

Every change in the alertmanager cluster emits a :class:`ClusterChanged` event that the
consumer charm can register and handle, for example:

```
self.framework.observe(self.alertmanager_consumer.on.cluster_changed,
                       self._on_alertmanager_cluster_changed)
```

The updated alertmanager cluster can then be obtained via the `get_cluster_info` method

This consumer library expect the consumer charm to observe the `cluster_changed` event.

Methods

AlertmanagerConsumer.
\_\_init\_\_(

*self*

,
charm: CharmBase
)

AlertmanagerConsumer.
get\_cluster\_info(

*self*
)

Description

Returns a list of URLs of all alertmanager units. None

#### class AlertmanagerProvider

A "provider" handler to be used by charms that relate to Alertmanager (the 'provides' side).

Arguments

charm

consumer charm

external\_url

URL for this unit's workload API endpoint

relation\_name

relation name (not interface name)

Description

To have your charm provide alertmanager cluster data, declare the interface's use in your
charm's metadata.yaml file:

```
provides:
  alerting:
    interface: alertmanager_dispatch
```

A typical example of importing this library might be

```
from charms.alertmanager_k8s.v1.alertmanager_dispatch import AlertmanagerProvider
```

In your charm's `__init__` method:

```
self.alertmanager_provider = AlertmanagerProvider(
    self, relation_name=self._relation_name, external_url=f"http://{socket.getfqdn()}:9093"
)
```

Then inform consumers on any update to alertmanager cluster data via

```
self.alertmanager_provider.update(external_url=self.ingress.url)
```

This provider auto-registers relation events on behalf of the main Alertmanager charm.

Methods

AlertmanagerProvider.
\_\_init\_\_(

*self*

,
charm: CharmBase
)

AlertmanagerProvider.
update(

*self*
)

Description

Update data pertaining to this relation manager (similar args to **init**). None
