| @@ -62,6 +62,34 @@ Name | Description | |||
| If you are using workers (`matrix_synapse_workers_enabled`) and have enabled `matrix_nginx_proxy_proxy_synapse_metrics` as described above, the playbook will also automatically proxy the all worker threads's metrics to `https://matrix.DOMAIN/_synapse-worker-TYPE-ID/metrics`, where `TYPE` corresponds to the type and `ID` to the instanceId of a worker as exemplified in `matrix_synapse_workers_enabled_list`. | |||
| The playbook also generates an exemplary prometheus.yml config file (`matrix_base_data_path/external_prometheus.yml.template`) with all the correct paths which you can copy to your Prometheus server and adapt to your needs, especially edit the specified `password_file` path and contents and path to your `synapse-v2.rules`. | |||
| It will look a bit like this: | |||
| ```yaml | |||
| scrape_configs: | |||
| - job_name: 'synapse' | |||
| metrics_path: /_synapse/metrics | |||
| scheme: https | |||
| basic_auth: | |||
| username: prometheus | |||
| password_file: /etc/prometheus/password.pwd | |||
| static_configs: | |||
| - targets: ['matrix.DOMAIN:443'] | |||
| labels: | |||
| job: "master" | |||
| index: 1 | |||
| - job_name: 'synapse-generic_worker-1' | |||
| metrics_path: /_synapse-worker-generic_worker-18111/metrics | |||
| scheme: https | |||
| basic_auth: | |||
| username: prometheus | |||
| password_file: /etc/prometheus/password.pwd | |||
| static_configs: | |||
| - targets: ['matrix.DOMAIN:443'] | |||
| labels: | |||
| job: "generic_worker" | |||
| index: 18111 | |||
| ``` | |||
| ### Collecting system and Postgres metrics to an external Prometheus server (advanced) | |||
| When you normally enable the Prometheus and Grafana via the playbook, it will also show general system (via node-exporter) and Postgres (via postgres-exporter) stats. If you are instead collecting your metrics to an external Prometheus server, you can follow this advanced configuration example to also export these stats. | |||
| @@ -38,6 +38,15 @@ | |||
| mode: 0400 | |||
| when: "matrix_nginx_proxy_proxy_synapse_metrics_basic_auth_enabled|bool and matrix_nginx_proxy_proxy_synapse_metrics|bool" | |||
| - name: Generate sample prometheus.yml for external scraping | |||
| template: | |||
| src: "{{ role_path }}/templates/prometheus/external_prometheus.yml.example.j2" | |||
| dest: "{{ matrix_base_data_path }}/external_prometheus.yml.example" | |||
| owner: "{{ matrix_user_username }}" | |||
| group: "{{ matrix_user_groupname }}" | |||
| mode: 0400 | |||
| when: matrix_nginx_proxy_proxy_synapse_metrics|bool | |||
| - name: Ensure Matrix nginx-proxy configured (generic) | |||
| template: | |||
| src: "{{ role_path }}/templates/nginx/conf.d/nginx-http.conf.j2" | |||
| @@ -270,3 +279,9 @@ | |||
| path: "{{ matrix_nginx_proxy_data_path }}/matrix-synapse-metrics-htpasswd" | |||
| state: absent | |||
| when: "not matrix_nginx_proxy_proxy_synapse_metrics_basic_auth_enabled|bool or not matrix_nginx_proxy_proxy_synapse_metrics|bool" | |||
| - name: Ensure sample prometheus.yml for external scraping is deleted | |||
| file: | |||
| path: "{{ matrix_base_data_path }}/external_prometheus.yml.example" | |||
| state: absent | |||
| when: "not matrix_nginx_proxy_proxy_synapse_metrics|bool" | |||
| @@ -0,0 +1,40 @@ | |||
| global: | |||
| scrape_interval: 5s | |||
| # Attach these labels to any time series or alerts when communicating with | |||
| # external systems (federation, remote storage, Alertmanager). | |||
| external_labels: | |||
| monitor: 'synapse-{{ matrix_domain }}' | |||
| rule_files: | |||
| - /etc/prometheus/synapse-v2.rules | |||
| scrape_configs: | |||
| - job_name: 'synapse' | |||
| metrics_path: /_synapse/metrics | |||
| scheme: {{ 'https' if matrix_nginx_proxy_https_enabled else 'http' }} | |||
| {% if matrix_nginx_proxy_proxy_synapse_metrics_basic_auth_enabled %} | |||
| basic_auth: | |||
| username: prometheus | |||
| password_file: /path/to/your/passwordfile.pwd | |||
| {% endif %} | |||
| static_configs: | |||
| - targets: ['{{ matrix_server_fqn_matrix }}:{{ matrix_nginx_proxy_container_https_host_bind_port if matrix_nginx_proxy_https_enabled else matrix_nginx_proxy_container_http_host_bind_port }}'] | |||
| labels: | |||
| job: "master" | |||
| index: 1 | |||
| {% for worker in matrix_nginx_proxy_proxy_synapse_workers_enabled_list %} | |||
| - job_name: 'synapse-{{ worker.type }}-{{ worker.instanceId }}' | |||
| metrics_path: /_synapse-worker-{{ worker.type }}-{{ worker.instanceId }}/metrics | |||
| scheme: {{ 'https' if matrix_nginx_proxy_https_enabled else 'http' }} | |||
| {% if matrix_nginx_proxy_proxy_synapse_metrics_basic_auth_enabled %} | |||
| basic_auth: | |||
| username: prometheus | |||
| password_file: /path/to/your/passwordfile.pwd | |||
| {% endif %} | |||
| static_configs: | |||
| - targets: [{{ matrix_server_fqn_matrix }:{{ matrix_nginx_proxy_container_https_host_bind_port if matrix_nginx_proxy_https_enabled else matrix_nginx_proxy_container_http_host_bind_port }}'] | |||
| labels: | |||
| job: "{{ worker.type }}" | |||
| index: {{ worker.instanceId }} | |||
| {% endfor %} | |||