mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2026-11-06 10:59:59 +00:00
108 lines
5.0 KiB
Django/Jinja
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 %}
|