Metadata-Version: 2.3
Name: synapse-prometheus-exporter
Version: 0.0.2
Summary: A Prometheus exporter for Synapse metrics
Project-URL: Homepage, https://git.private.coffee/kumi/synapse-prometheus-exporter
Project-URL: Bug Tracker, https://git.private.coffee/kumi/synapse-prometheus-exporter/issues
Project-URL: Source Code, https://git.private.coffee/kumi/synapse-prometheus-exporter
Author-email: Kumi Mitterer <synapse-prometheus-exporter@kumi.email>
License: Copyright (c) 2024 Kumi Mitterer <synapse-prometheus-exporter@kumi.email>
        
        Permission is hereby granted, free of charge, to any person obtaining a copy
        of this software and associated documentation files (the "Software"), to deal
        in the Software without restriction, including without limitation the rights
        to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
        copies of the Software, and to permit persons to whom the Software is
        furnished to do so, subject to the following conditions:
        
        The above copyright notice and this permission notice shall be included in all
        copies or substantial portions of the Software.
        
        THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
        IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
        FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
        AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
        LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
        OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
        SOFTWARE.
License-File: LICENSE
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Requires-Python: >=3.10
Requires-Dist: prometheus-client
Requires-Dist: psycopg2-binary
Requires-Dist: pyyaml
Description-Content-Type: text/markdown

# Synapse Exporter for Prometheus

This is an exporter for Prometheus that collects metrics from a Synapse PostgreSQL database. SQLite is not supported.

It is designed to be used with the Synapse Matrix server and provides some additional metrics that are not exported by the internal Prometheus exporter.

## Metrics

The exporter currently provides the following metrics:

- `synapse_local_users_state`: Number of local users by state (active, disabled)
- `synapse_local_users_type`: Number of local users by type (guest, user, appservice)
- `synapse_local_users_moderation`: Number of local users by moderation status (active, shadow_banned, locked)
- `synapse_local_users_appservice`: Number of local users by appservice ID
- `synapse_total_devices`: Total number of devices
- `synapse_total_rooms`: Total number of rooms
- `synapse_total_events`: Total number of events
- `synapse_federation_destinations`: Number of federation destinations (i.e. federated servers)

## Installation

You can install the exporter from PyPI. Within a virtual environment, run:

```bash
pip install synapse-prometheus-exporter
```

## Configuration

The exporter is configured using a `config.yaml`. You can create a default configuration file in the current working directory with:

```bash
synapse-prometheus-exporter --create-config
```

Now, edit the `config.yaml` file to match your PostgreSQL connection settings. Here is an example configuration:

```yaml
hosts:
  - host: localhost
    port: 5432
    user: postgres
    password: postgres
    database: synapse
```

## Usage

After you have created your `config.yaml`, you can start the exporter with:

```bash
synapse-prometheus-exporter
```

By default, the exporter listens on `localhost:8999`. You can change the address in the `config.yaml` file, or using the `--host` and `--port` flags:

```bash
synapse-prometheus-exporter --host 0.0.0.0 --port 9899
```

You can also specify a different configuration file with the `--config` flag:

```bash
synapse-prometheus-exporter --config /path/to/config.yaml
```

## License

This project is licensed under the MIT License. See the [LICENSE](LICENSE) file for details.