mirror of
https://github.com/spantaleev/matrix-docker-ansible-deploy.git
synced 2025-08-25 08:11:31 +02:00
Compare commits
2 Commits
0704350fcf
...
fdbc4d292e
Author | SHA1 | Date | |
---|---|---|---|
|
fdbc4d292e | ||
|
e68175a3a2 |
@@ -1,6 +1,15 @@
|
||||
# Setting up synapse-usage-exporter (optional)
|
||||
|
||||
[synapse-usage-exporter](https://github.com/loelkes/synapse-usage-exporter) Allows you to export the usage statistics of a Synapse homeserver to this container service and be scraped by Prometheus. Synapse does not include usage statistics in its prometheus metrics. They can be reported to a HTTP PUT endpoint 5 minutes after startup and from then on at a fixed interval of once every three hours. This role integrates a simple Flask project that offers a HTTP PUT endpoint and holds the most recent received record available to be scraped py Prometheus.
|
||||
[synapse-usage-exporter](https://github.com/loelkes/synapse-usage-exporter) allows you to export the usage statistics of a Synapse homeserver to this container service and for the collected metrics to later be scraped by Prometheus.
|
||||
|
||||
Synapse does not include usage statistics in its Prometheus metrics. They can be reported to an HTTP `PUT` endpoint 5 minutes after startup and from then on at a fixed interval of once every three hours. This role integrates a simple [Flask](https://flask.palletsprojects.com) project that offers an HTTP `PUT` endpoint and holds the most recent received record available to be scraped by Prometheus.
|
||||
|
||||
Enabling this service will automatically:
|
||||
|
||||
- install the synapse-usage-exporter service
|
||||
- re-configure Synapse to push (via HTTP `PUT`) usage statistics information to synapse-usage-exporter
|
||||
- re-configure [Prometheus](./configuring-playbook-prometheus-grafana.md) (if Grafana is enabled), to periodically scrape metrics from synapse-usage-exporter
|
||||
- add a new [Grafana](./configuring-playbook-prometheus-grafana.md) dashboard (if Grafana is enabled) containing Synapse usage statistics
|
||||
|
||||
## Quickstart
|
||||
|
||||
@@ -9,6 +18,8 @@ Add the following configuration to your `inventory/host_vars/matrix.DOMAIN/vars.
|
||||
```yaml
|
||||
matrix_synapse_usage_exporter_enabled: true
|
||||
|
||||
# (optional) Expose endpoint if you want to collect statistics from other homeservers: `matrix.DOMAIN/report-usage-stats/push`
|
||||
# (Optional) Expose endpoint if you want to collect statistics from outside (from other homeservers).
|
||||
# If enabled, synapse-usage-exporter will be exposed publicly at `matrix.DOMAIN/report-usage-stats/push`.
|
||||
# When collecting usage statistics for Synapse running on the same host, you don't need to enable this.
|
||||
# matrix_synapse_usage_exporter_proxying_enabled: true
|
||||
```
|
||||
|
@@ -4462,6 +4462,10 @@ matrix_synapse_app_service_config_files_auto: "{{ matrix_homeserver_app_service_
|
||||
# Disable creation of media repository Synapse worker when using media-repo
|
||||
matrix_synapse_ext_media_repo_enabled: "{{ matrix_media_repo_enabled }}"
|
||||
|
||||
# Enable Synapse statistics reporting when using synapse-usage-exporter
|
||||
matrix_synapse_report_stats: "{{ matrix_synapse_usage_exporter_enabled }}"
|
||||
matrix_synapse_report_stats_endpoint: "http://{{ matrix_synapse_usage_exporter_identifier }}:{{ matrix_synapse_usage_exporter_container_port | string }}/report-usage-stats/push"
|
||||
|
||||
######################################################################
|
||||
#
|
||||
# /matrix-synapse
|
||||
@@ -4611,9 +4615,6 @@ matrix_synapse_usage_exporter_container_labels_traefik_docker_network: "{{ matri
|
||||
matrix_synapse_usage_exporter_container_labels_traefik_entrypoints: "{{ devture_traefik_entrypoint_primary }}"
|
||||
matrix_synapse_usage_exporter_container_labels_traefik_tls_certResolver: "{{ devture_traefik_certResolver_primary }}"
|
||||
|
||||
matrix_synapse_report_stats: "{{ true if matrix_synapse_usage_exporter_enabled else false }}"
|
||||
matrix_synapse_report_stats_endpoint: "http://{{ matrix_synapse_usage_exporter_identifier }}:{{ matrix_synapse_usage_exporter_container_port | string }}/report-usage-stats/push"
|
||||
|
||||
######################################################################
|
||||
#
|
||||
# /matrix-synapse-usage-exporter
|
||||
|
@@ -1,7 +1,7 @@
|
||||
---
|
||||
|
||||
# Synapse Usage Exporter
|
||||
# Project source code URL: https://github.com/loelkes/synapse-usage-exporter/tree/main
|
||||
# Project source code URL: https://github.com/loelkes/synapse-usage-exporter
|
||||
|
||||
matrix_synapse_usage_exporter_enabled: false
|
||||
|
||||
@@ -15,11 +15,11 @@ matrix_synapse_usage_exporter_container_port: 5000
|
||||
matrix_synapse_usage_exporter_container_image_self_build: true
|
||||
matrix_synapse_usage_exporter_container_image_self_build_repo: "https://github.com/loelkes/synapse-usage-exporter.git"
|
||||
|
||||
matrix_synapse_usage_exporter_docker_image_path: "loelkes/synapse-usage-exporter"
|
||||
matrix_synapse_usage_exporter_docker_image: "{{ matrix_synapse_usage_exporter_docker_image_name_prefix }}{{ matrix_synapse_usage_exporter_docker_image_path }}:{{ matrix_synapse_usage_exporter_docker_image_tag }}"
|
||||
matrix_synapse_usage_exporter_docker_image_name_prefix: "{{ 'localhost/' if matrix_synapse_usage_exporter_container_image_self_build else matrix_container_global_registry_prefix }}"
|
||||
matrix_synapse_usage_exporter_docker_image_tag: "{{ 'main' if matrix_synapse_usage_exporter_container_image_self_build else 'latest' }}"
|
||||
matrix_synapse_usage_exporter_docker_image_force_pull: "{{ matrix_synapse_usage_exporter_docker_image.endswith(':latest') }}"
|
||||
matrix_synapse_usage_exporter_container_image_path: "loelkes/synapse-usage-exporter"
|
||||
matrix_synapse_usage_exporter_container_image: "{{ matrix_synapse_usage_exporter_container_image_name_prefix }}{{ matrix_synapse_usage_exporter_container_image_path }}:{{ matrix_synapse_usage_exporter_container_image_tag }}"
|
||||
matrix_synapse_usage_exporter_container_image_name_prefix: "{{ 'localhost/' if matrix_synapse_usage_exporter_container_image_self_build else matrix_container_global_registry_prefix }}"
|
||||
matrix_synapse_usage_exporter_container_image_tag: "{{ 'main' if matrix_synapse_usage_exporter_container_image_self_build else 'latest' }}"
|
||||
matrix_synapse_usage_exporter_container_image_force_pull: "{{ matrix_synapse_usage_exporter_container_image.endswith(':latest') }}"
|
||||
|
||||
matrix_synapse_usage_exporter_base_path: "{{ matrix_base_data_path }}/{{ matrix_synapse_usage_exporter_identifier }}"
|
||||
matrix_synapse_usage_exporter_docker_src_files_path: "{{ matrix_synapse_usage_exporter_base_path }}/docker-src"
|
||||
|
@@ -27,10 +27,10 @@
|
||||
|
||||
- name: Ensure synapse-usage-exporter Docker image is pulled
|
||||
community.docker.docker_image:
|
||||
name: "{{ matrix_synapse_usage_exporter_docker_image }}"
|
||||
name: "{{ matrix_synapse_usage_exporter_container_image }}"
|
||||
source: "{{ 'pull' if ansible_version.major > 2 or ansible_version.minor > 7 else omit }}"
|
||||
force_source: "{{ matrix_synapse_usage_exporter_docker_image_force_pull if ansible_version.major > 2 or ansible_version.minor >= 8 else omit }}"
|
||||
force: "{{ omit if ansible_version.major > 2 or ansible_version.minor >= 8 else matrix_synapse_usage_exporter_docker_image_force_pull }}"
|
||||
force_source: "{{ matrix_synapse_usage_exporter_container_image_force_pull if ansible_version.major > 2 or ansible_version.minor >= 8 else omit }}"
|
||||
force: "{{ omit if ansible_version.major > 2 or ansible_version.minor >= 8 else matrix_synapse_usage_exporter_container_image_force_pull }}"
|
||||
when: "not matrix_synapse_usage_exporter_container_image_self_build | bool"
|
||||
register: result
|
||||
retries: "{{ devture_playbook_help_container_retries_count }}"
|
||||
@@ -43,15 +43,15 @@
|
||||
ansible.builtin.git:
|
||||
repo: "{{ matrix_synapse_usage_exporter_container_image_self_build_repo }}"
|
||||
dest: "{{ matrix_synapse_usage_exporter_docker_src_files_path }}"
|
||||
version: "{{ matrix_synapse_usage_exporter_docker_image.split(':')[1] }}"
|
||||
version: "{{ matrix_synapse_usage_exporter_container_image.split(':')[1] }}"
|
||||
force: "yes"
|
||||
become: true
|
||||
become_user: "{{ matrix_user_username }}"
|
||||
register: matrix_synapse_usage_exporter_git_pull_results
|
||||
|
||||
- name: Check if synapse-usage-exporter Docker image exists
|
||||
ansible.builtin.command: "{{ devture_systemd_docker_base_host_command_docker }} images --quiet --filter 'reference={{ matrix_synapse_usage_exporter_docker_image }}'"
|
||||
register: matrix_synapse_usage_exporter_docker_image_check_result
|
||||
ansible.builtin.command: "{{ devture_systemd_docker_base_host_command_docker }} images --quiet --filter 'reference={{ matrix_synapse_usage_exporter_container_image }}'"
|
||||
register: matrix_synapse_usage_exporter_container_image_check_result
|
||||
changed_when: false
|
||||
|
||||
# Invoking the `docker build` command here, instead of calling the `docker_image` Ansible module,
|
||||
@@ -59,11 +59,11 @@
|
||||
# See: https://github.com/ansible-collections/community.general/issues/514
|
||||
- name: Ensure synapse-usage-exporter Docker image is built
|
||||
ansible.builtin.command:
|
||||
cmd: "{{ devture_systemd_docker_base_host_command_docker }} build -t {{ matrix_synapse_usage_exporter_docker_image }} -f {{ matrix_synapse_usage_exporter_docker_src_files_path }}/docker/Dockerfile {{ matrix_synapse_usage_exporter_docker_src_files_path }}"
|
||||
cmd: "{{ devture_systemd_docker_base_host_command_docker }} build -t {{ matrix_synapse_usage_exporter_container_image }} -f {{ matrix_synapse_usage_exporter_docker_src_files_path }}/docker/Dockerfile {{ matrix_synapse_usage_exporter_docker_src_files_path }}"
|
||||
environment:
|
||||
DOCKER_BUILDKIT: 1
|
||||
changed_when: true
|
||||
when: "matrix_synapse_usage_exporter_git_pull_results.changed | bool or matrix_synapse_usage_exporter_docker_image_check_result.stdout == ''"
|
||||
when: "matrix_synapse_usage_exporter_git_pull_results.changed | bool or matrix_synapse_usage_exporter_container_image_check_result.stdout == ''"
|
||||
|
||||
- name: Ensure synapse-usage-exporter container network is created
|
||||
community.general.docker_network:
|
||||
|
@@ -28,7 +28,7 @@ ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} create \
|
||||
{% for arg in matrix_synapse_usage_exporter_container_extra_arguments %}
|
||||
{{ arg }} \
|
||||
{% endfor %}
|
||||
{{ matrix_synapse_usage_exporter_docker_image }}
|
||||
{{ matrix_synapse_usage_exporter_container_image }}
|
||||
|
||||
{% for network in matrix_synapse_usage_exporter_container_additional_networks %}
|
||||
ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} network connect {{ network }} {{ matrix_synapse_usage_exporter_identifier }}
|
||||
|
Reference in New Issue
Block a user