Files
computer-playbook/roles/web-app-prometheus/templates/compose.yml.j2

108 lines
5.0 KiB
Django/Jinja

{% include 'roles/sys-svc-compose/templates/base.yml.j2' %}
{% set service_name = 'prometheus' %}
{{ service_name }}:
{{ lookup('container_healthcheck', service_name) | indent(4) }}
{% include 'roles/sys-svc-container/templates/base.yml.j2' %}
{{ lookup('container_image', application_id, 'prometheus') }}
{{ lookup('compose_only', 'container_name', PROMETHEUS_CONTAINER) }}
{{ lookup('container_ports', ['prometheus', 'http', DOCKER_BIND_HOST]) | indent(4) }}
{{ lookup('container_extra_hosts', extra_hosts=['host.docker.internal:host-gateway']) | indent(4) }}
command:
- "--config.file={{ PROMETHEUS_CONFIG_DOCKER }}"
- "--storage.tsdb.path={{ lookup('volume', 'web-app-prometheus', 'data').target }}"
- "--query.timeout={{ PROMETHEUS_QUERY_TIMEOUT }}"
- "--web.enable-lifecycle"
{{ lookup('container_volumes', service_name) | indent(4) }}
{{ lookup('container_networks') | indent(4) }}
{% for metrics_app_id in lookup('native_metrics_apps') %}
{{ metrics_app_id | get_entity_name }}:
{% endfor %}
{% set service_name = 'blackbox-exporter' %}
{{ service_name }}:
{{ lookup('container_healthcheck', service_name) | indent(4) }}
{% include 'roles/sys-svc-container/templates/base.yml.j2' %}
{{ lookup('container_image', application_id, 'blackbox-exporter') }}
{{ lookup('compose_only', 'container_name', BLACKBOX_CONTAINER) }}
command:
- "--config.file={{ BLACKBOX_CONFIG_DOCKER }}"
{{ lookup('container_volumes', service_name) | indent(4) }}
{% set service_name = 'alertmanager' %}
{{ service_name }}:
{{ lookup('container_healthcheck', service_name) | indent(4) }}
{% include 'roles/sys-svc-container/templates/base.yml.j2' %}
{{ lookup('container_image', application_id, 'alertmanager') }}
{{ lookup('compose_only', 'container_name', ALERTMANAGER_CONTAINER) }}
command:
- "--config.file={{ ALERTMANAGER_CONFIG_DOCKER }}"
- "--storage.path={{ lookup('volume', 'web-app-prometheus', 'alertmanager_data').target }}"
{{ lookup('container_volumes', service_name) | indent(4) }}
{% set service_name = 'cadvisor' %}
{{ service_name }}:
{% include 'roles/sys-svc-container/templates/base.yml.j2' %}
{{ lookup('container_image', application_id, 'cadvisor') }}
{{ lookup('compose_only', 'container_name', CADVISOR_CONTAINER) }}
{% if DEPLOYMENT_MODE == 'compose' %}
privileged: true
devices:
- /dev/kmsg
{% endif %}
{{ lookup('container_volumes', service_name) | indent(4) }}
{% set service_name = 'node-exporter' %}
{{ service_name }}:
{{ lookup('container_healthcheck', service_name) | indent(4) }}
{% include 'roles/sys-svc-container/templates/base.yml.j2' %}
{{ lookup('container_image', application_id, 'node-exporter') }}
{{ lookup('compose_only', 'container_name', NODE_EXPORTER_CONTAINER) }}
{% if DEPLOYMENT_MODE == 'compose' %}
# nocheck: network-mode-host-without-swarm-gate
network_mode: host
pid: host
{% endif %}
{{ lookup('container_volumes', service_name) | indent(4) }}
command:
- "--path.procfs={{ lookup('volume', 'web-app-prometheus', 'host_proc').target }}"
- "--path.rootfs={{ lookup('volume', 'web-app-prometheus', 'host_rootfs').target }}"
- "--path.sysfs={{ lookup('volume', 'web-app-prometheus', 'host_sys').targets['node-exporter'] }}"
- "--collector.filesystem.mount-points-exclude=^/(sys|proc|dev|host|etc)($$|/)"
- "--collector.textfile.directory={{ lookup('volume', 'web-app-prometheus', 'metrics_textfile').targets['node-exporter'] }}"
{% if PROMETHEUS_MCP_ENABLED | bool %}
{% set service_name = PROMETHEUS_MCP_SERVICE_KEY %}
{{ service_name }}:
{% include 'roles/sys-svc-container/templates/base.yml.j2' %}
{{ lookup('container_image', application_id, 'prometheusmcp') }}
build:
context: {{ PROMETHEUS_MCP_INSTANCE_DIR }}
dockerfile: Dockerfile
args:
MCP_ADAPTER_BASE_IMAGE: {{ lookup('config', application_id, 'services.prometheusmcp.image') }}
MCP_ADAPTER_BASE_VERSION: "{{ lookup('config', application_id, 'services.prometheusmcp.version') }}"
{{ lookup('compose_only', 'container_name', PROMETHEUS_MCP_CONTAINER) }}
read_only: true
cap_drop:
- ALL
security_opt:
- no-new-privileges:true
environment:
ADAPTER_CONTRACT: {{ PROMETHEUS_MCP_CONTRACT | to_json | to_json | replace('$', '$$') }}
ADAPTER_BEARER: {{ PROMETHEUS_MCP_BEARER | to_json }}
ADAPTER_PORT: "{{ PROMETHEUS_MCP_PORT }}"
ADAPTER_UPSTREAM_KEY: {{ PROMETHEUS_MCP_UPSTREAM_KEY | to_json }}
expose:
- "{{ PROMETHEUS_MCP_PORT }}"
{{ lookup('container_networks', own_network_only=True, provider_self_alias=False) | indent(4) }}
{% endif %}
{{ lookup('compose_volumes') }}
{{ lookup('compose_networks') }}
{% for metrics_app_id in lookup('native_metrics_apps') %}
{% set service_name = metrics_app_id | get_entity_name %}
{{ service_name }}:
external: true
{% endfor %}