{% 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 %}