Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Mautrix metrics #2427

Merged
merged 2 commits into from
Jan 30, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions roles/custom/matrix-bridge-mautrix-facebook/defaults/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,9 @@ matrix_mautrix_facebook_homeserver_token: ''
# If false, created portal rooms will never be federated.
matrix_mautrix_facebook_federate_rooms: true

# Whether or not metrics endpoint should be enabled.
matrix_mautrix_facebook_metrics_enabled: false

matrix_mautrix_facebook_bridge_permissions: |
{{
{matrix_mautrix_facebook_homeserver_domain: 'user'}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,3 +42,28 @@
URL endpoint to the matrix-mautrix-facebook container.
You can expose the container's port using the `matrix_mautrix_facebook_container_http_host_bind_port` variable.
when: "not matrix_nginx_proxy_enabled | default(False) | bool"

- name: Generate mautrix-facebook metrics proxying configuration for matrix-nginx-proxy (matrix.DOMAIN/metrics/mautrix-facebook)
ansible.builtin.set_fact:
matrix_mautrix_facebook_nginx_metrics_configuration_block: |
location /metrics/mautrix-facebook {
{% if matrix_nginx_proxy_enabled | default(False) %}
{# Use the embedded DNS resolver in Docker containers to discover the service #}
resolver 127.0.0.11 valid=5s;
set $backend "matrix-mautrix-facebook:8000";
proxy_pass http://$backend/metrics;
{% else %}
return 404 "matrix-nginx-proxy is disabled and no host port was bound to the container, so metrics are unavailable";
{% endif %}
}
when: matrix_mautrix_facebook_metrics_enabled | bool

- name: Register mautrix-facebook metrics proxying configuration with matrix-nginx-proxy (matrix.DOMAIN/metrics/mautrix-facebook)
ansible.builtin.set_fact:
matrix_nginx_proxy_proxy_matrix_metrics_additional_system_location_configuration_blocks: |
{{
matrix_nginx_proxy_proxy_matrix_metrics_additional_system_location_configuration_blocks | default([])
+
[matrix_mautrix_facebook_nginx_metrics_configuration_block]
}}
when: matrix_mautrix_facebook_metrics_enabled | bool
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ appservice:

# Prometheus telemetry config. Requires prometheus-client to be installed.
metrics:
enabled: false
enabled: {{ matrix_mautrix_facebook_metrics_enabled }}
listen_port: 8000

# Bridge config
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,9 @@ matrix_mautrix_instagram_homeserver_token: ''
# If false, created portal rooms will never be federated.
matrix_mautrix_instagram_federate_rooms: true

# Whether or not metrics endpoint should be enabled.
matrix_mautrix_instagram_metrics_enabled: false

# Database-related configuration fields.
#
# To use Postgres:
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
---

- name: Fail if matrix-nginx-proxy role already executed
ansible.builtin.fail:
msg: >-
Trying to append mautrix-whatapp-metrics's reverse-proxying configuration to matrix-nginx-proxy,
but it's pointless since the matrix-nginx-proxy role had already executed.
To fix this, please change the order of roles in your playbook,
so that the matrix-nginx-proxy role would run after the matrix-bridge-mautrix-instagram role.
when: matrix_nginx_proxy_role_executed | default(False) | bool

- name: Generate mautrix-instagram metrics proxying configuration for matrix-nginx-proxy (matrix.DOMAIN/metrics/mautrix-instagram)
ansible.builtin.set_fact:
matrix_mautrix_instagram_nginx_metrics_configuration_block: |
location /metrics/mautrix-instagram {
{% if matrix_nginx_proxy_enabled | default(False) %}
{# Use the embedded DNS resolver in Docker containers to discover the service #}
resolver 127.0.0.11 valid=5s;
set $backend "matrix-mautrix-instagram:8000";
proxy_pass http://$backend/metrics;
{% else %}
return 404 "matrix-nginx-proxy is disabled and no host port was bound to the container, so metrics are unavailable";
{% endif %}
}

- name: Register mautrix-instagram metrics proxying configuration with matrix-nginx-proxy (matrix.DOMAIN/metrics/mautrix-instagram)
ansible.builtin.set_fact:
matrix_nginx_proxy_proxy_matrix_metrics_additional_system_location_configuration_blocks: |
{{
matrix_nginx_proxy_proxy_matrix_metrics_additional_system_location_configuration_blocks | default([])
+
[matrix_mautrix_instagram_nginx_metrics_configuration_block]
}}
9 changes: 9 additions & 0 deletions roles/custom/matrix-bridge-mautrix-instagram/tasks/main.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,14 @@
---

- block:
- when: matrix_mautrix_instagram_enabled | bool and matrix_mautrix_instagram_metrics_enabled | bool
ansible.builtin.include_tasks: "{{ role_path }}/tasks/inject_into_nginx_proxy.yml"
tags:
- setup-all
- setup-nginx-proxy
- install-all
- install-nginx-proxy

- block:
- when: matrix_mautrix_instagram_enabled | bool
ansible.builtin.include_tasks: "{{ role_path }}/tasks/validate_config.yml"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ appservice:

# Prometheus telemetry config. Requires prometheus-client to be installed.
metrics:
enabled: false
enabled: {{ matrix_mautrix_instagram_metrics_enabled }}
listen_port: 8000

instagram:
Expand Down
3 changes: 3 additions & 0 deletions roles/custom/matrix-bridge-mautrix-signal/defaults/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,9 @@ matrix_mautrix_signal_logging_level: WARNING
# If false, created portal rooms will never be federated.
matrix_mautrix_signal_federate_rooms: true

# Whether or not metrics endpoint should be enabled.
matrix_mautrix_signal_metrics_enabled: false

# Database-related configuration fields
#
# This bridge only supports postgres.
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
---

- name: Fail if matrix-nginx-proxy role already executed
ansible.builtin.fail:
msg: >-
Trying to append mautrix-whatapp-metrics's reverse-proxying configuration to matrix-nginx-proxy,
but it's pointless since the matrix-nginx-proxy role had already executed.
To fix this, please change the order of roles in your playbook,
so that the matrix-nginx-proxy role would run after the matrix-bridge-mautrix-signal role.
when: matrix_nginx_proxy_role_executed | default(False) | bool

- name: Generate mautrix-signal metrics proxying configuration for matrix-nginx-proxy (matrix.DOMAIN/metrics/mautrix-signal)
ansible.builtin.set_fact:
matrix_mautrix_signal_nginx_metrics_configuration_block: |
location /metrics/mautrix-signal {
{% if matrix_nginx_proxy_enabled | default(False) %}
{# Use the embedded DNS resolver in Docker containers to discover the service #}
resolver 127.0.0.11 valid=5s;
set $backend "matrix-mautrix-signal:8000";
proxy_pass http://$backend/metrics;
{% else %}
return 404 "matrix-nginx-proxy is disabled and no host port was bound to the container, so metrics are unavailable";
{% endif %}
}

- name: Register mautrix-signal metrics proxying configuration with matrix-nginx-proxy (matrix.DOMAIN/metrics/mautrix-signal)
ansible.builtin.set_fact:
matrix_nginx_proxy_proxy_matrix_metrics_additional_system_location_configuration_blocks: |
{{
matrix_nginx_proxy_proxy_matrix_metrics_additional_system_location_configuration_blocks | default([])
+
[matrix_mautrix_signal_nginx_metrics_configuration_block]
}}
9 changes: 9 additions & 0 deletions roles/custom/matrix-bridge-mautrix-signal/tasks/main.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,14 @@
---

- block:
- when: matrix_mautrix_signal_enabled | bool and matrix_mautrix_signal_metrics_enabled | bool
ansible.builtin.include_tasks: "{{ role_path }}/tasks/inject_into_nginx_proxy.yml"
tags:
- setup-all
- setup-nginx-proxy
- install-all
- install-nginx-proxy

- block:
- when: matrix_mautrix_signal_enabled | bool
ansible.builtin.include_tasks: "{{ role_path }}/tasks/validate_config.yml"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ appservice:

# Prometheus telemetry config. Requires prometheus-client to be installed.
metrics:
enabled: false
enabled: {{ matrix_mautrix_signal_metrics_enabled }}
listen_port: 8000

# Manhole config.
Expand Down
3 changes: 3 additions & 0 deletions roles/custom/matrix-bridge-mautrix-twitter/defaults/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,9 @@ matrix_mautrix_twitter_appservice_bot_username: twitterbot
# Specifies the default log level for all bridge loggers.
matrix_mautrix_twitter_logging_level: WARNING

# Whether or not metrics endpoint should be enabled.
matrix_mautrix_twitter_metrics_enabled: false

# Default configuration template which covers the generic use case.
# You can customize it by controlling the various variables inside it.
#
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
---

- name: Fail if matrix-nginx-proxy role already executed
ansible.builtin.fail:
msg: >-
Trying to append mautrix-whatapp-metrics's reverse-proxying configuration to matrix-nginx-proxy,
but it's pointless since the matrix-nginx-proxy role had already executed.
To fix this, please change the order of roles in your playbook,
so that the matrix-nginx-proxy role would run after the matrix-bridge-mautrix-twitter role.
when: matrix_nginx_proxy_role_executed | default(False) | bool

- name: Generate mautrix-twitter metrics proxying configuration for matrix-nginx-proxy (matrix.DOMAIN/metrics/mautrix-twitter)
ansible.builtin.set_fact:
matrix_mautrix_twitter_nginx_metrics_configuration_block: |
location /metrics/mautrix-twitter {
{% if matrix_nginx_proxy_enabled | default(False) %}
{# Use the embedded DNS resolver in Docker containers to discover the service #}
resolver 127.0.0.11 valid=5s;
set $backend "matrix-mautrix-twitter:8000";
proxy_pass http://$backend/metrics;
{% else %}
return 404 "matrix-nginx-proxy is disabled and no host port was bound to the container, so metrics are unavailable";
{% endif %}
}

- name: Register mautrix-twitter metrics proxying configuration with matrix-nginx-proxy (matrix.DOMAIN/metrics/mautrix-twitter)
ansible.builtin.set_fact:
matrix_nginx_proxy_proxy_matrix_metrics_additional_system_location_configuration_blocks: |
{{
matrix_nginx_proxy_proxy_matrix_metrics_additional_system_location_configuration_blocks | default([])
+
[matrix_mautrix_twitter_nginx_metrics_configuration_block]
}}
9 changes: 9 additions & 0 deletions roles/custom/matrix-bridge-mautrix-twitter/tasks/main.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,14 @@
---

- block:
- when: matrix_mautrix_twitter_enabled | bool and matrix_mautrix_twitter_metrics_enabled | bool
ansible.builtin.include_tasks: "{{ role_path }}/tasks/inject_into_nginx_proxy.yml"
tags:
- setup-all
- setup-nginx-proxy
- install-all
- install-nginx-proxy

- block:
- when: matrix_mautrix_twitter_enabled | bool
ansible.builtin.include_tasks: "{{ role_path }}/tasks/validate_config.yml"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ appservice:

# Prometheus telemetry config. Requires prometheus-client to be installed.
metrics:
enabled: false
enabled: {{ matrix_mautrix_twitter_metrics_enabled }}
listen_port: 8000

# Bridge config
Expand Down
3 changes: 3 additions & 0 deletions roles/custom/matrix-bridge-mautrix-whatsapp/defaults/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,9 @@ matrix_mautrix_whatsapp_logging_level: 'warn'
# If false, created portal rooms will never be federated.
matrix_mautrix_whatsapp_federate_rooms: true

# Whether or not metrics endpoint should be enabled.
matrix_mautrix_whatsapp_metrics_enabled: false

# Database-related configuration fields.
#
# To use SQLite, stick to these defaults.
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
---

- name: Fail if matrix-nginx-proxy role already executed
ansible.builtin.fail:
msg: >-
Trying to append mautrix-whatapp-metrics's reverse-proxying configuration to matrix-nginx-proxy,
but it's pointless since the matrix-nginx-proxy role had already executed.
To fix this, please change the order of roles in your playbook,
so that the matrix-nginx-proxy role would run after the matrix-bridge-mautrix-whatsapp role.
when: matrix_nginx_proxy_role_executed | default(False) | bool

- name: Generate mautrix-whatsapp metrics proxying configuration for matrix-nginx-proxy (matrix.DOMAIN/metrics/mautrix-whatsapp)
ansible.builtin.set_fact:
matrix_mautrix_whatsapp_nginx_metrics_configuration_block: |
location /metrics/mautrix-whatsapp {
{% if matrix_nginx_proxy_enabled | default(False) %}
{# Use the embedded DNS resolver in Docker containers to discover the service #}
resolver 127.0.0.11 valid=5s;
set $backend "matrix-mautrix-whatsapp:8001";
proxy_pass http://$backend/metrics;
{% else %}
return 404 "matrix-nginx-proxy is disabled and no host port was bound to the container, so metrics are unavailable";
{% endif %}
}

- name: Register mautrix-whatsapp metrics proxying configuration with matrix-nginx-proxy (matrix.DOMAIN/metrics/mautrix-whatsapp)
ansible.builtin.set_fact:
matrix_nginx_proxy_proxy_matrix_metrics_additional_system_location_configuration_blocks: |
{{
matrix_nginx_proxy_proxy_matrix_metrics_additional_system_location_configuration_blocks | default([])
+
[matrix_mautrix_whatsapp_nginx_metrics_configuration_block]
}}
9 changes: 9 additions & 0 deletions roles/custom/matrix-bridge-mautrix-whatsapp/tasks/main.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,14 @@
---

- block:
- when: matrix_mautrix_whatsapp_enabled | bool and matrix_mautrix_whatsapp_metrics_enabled | bool
ansible.builtin.include_tasks: "{{ role_path }}/tasks/inject_into_nginx_proxy.yml"
tags:
- setup-all
- setup-nginx-proxy
- install-all
- install-nginx-proxy

- block:
- when: matrix_mautrix_whatsapp_enabled | bool
ansible.builtin.include_tasks: "{{ role_path }}/tasks/validate_config.yml"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,9 +67,9 @@ segment_key: null
# Prometheus config.
metrics:
# Enable prometheus metrics?
enabled: false
enabled: {{ matrix_mautrix_whatsapp_metrics_enabled }}
# IP and port where the metrics listener should be. The path is always /metrics
listen: 127.0.0.1:8001
listen: 0.0.0.0:8001

# Config for things that are directly sent to WhatsApp.
whatsapp:
Expand Down