diff --git a/group_vars/all.yml b/group_vars/all.yml index f6e150c..e5d5003 100644 --- a/group_vars/all.yml +++ b/group_vars/all.yml @@ -21,13 +21,7 @@ monitoring_groups: # Все серверы с node_exporter node_exporter_servers: - "{{ server_ips.olimp }}" - - "{{ server_ips.gateway }}" - - "{{ server_ips.data }}" - - "{{ server_ips.media }}" - - "{{ server_ips.photo }}" - "{{ server_ips.nextcloud }}" - - "{{ server_ips.talk }}" - - "{{ server_ips.games }}" - "{{ server_ips.manage }}" # Серверы с Docker (cAdvisor) diff --git a/roles/cadvisor/tasks/main.yml b/roles/cadvisor/tasks/main.yml index e8097b0..f064a69 100644 --- a/roles/cadvisor/tasks/main.yml +++ b/roles/cadvisor/tasks/main.yml @@ -5,7 +5,7 @@ ignore_errors: yes changed_when: false -- name: Install cAdvisor (only on Docker hosts) +- name: Install cAdvisor block: - name: Create cAdvisor directories file: @@ -17,6 +17,16 @@ - "{{ cadvisor_config_dir }}" become: yes + - name: Check if port {{ cadvisor_port }} is available + wait_for: + host: localhost + port: "{{ cadvisor_port }}" + state: stopped + timeout: 5 + ignore_errors: yes + register: port_check + become: no + - name: Deploy cAdvisor docker-compose template: src: docker-compose.yml.j2 @@ -26,6 +36,13 @@ mode: '0644' become: yes + - name: Stop existing cAdvisor container + community.docker.docker_compose_v2: + project_src: "{{ cadvisor_base_dir }}" + state: absent + become: yes + ignore_errors: yes + - name: Run cAdvisor container community.docker.docker_compose_v2: project_src: "{{ cadvisor_base_dir }}" @@ -35,24 +52,60 @@ - name: Wait for cAdvisor to start wait_for: host: localhost - port: 8080 + port: "{{ cadvisor_port }}" timeout: 30 state: started + become: no + + - name: Check cAdvisor container status + community.docker.docker_container_info: + name: cadvisor + register: container_info become: yes - name: Verify cAdvisor is responding uri: - url: "http://localhost:8080/metrics" + url: "http://localhost:{{ cadvisor_port }}/metrics" status_code: 200 timeout: 10 register: cadvisor_check - become: yes + become: no - name: Show cAdvisor status debug: - msg: "cAdvisor is running and responding on port {{ cadvisor_internal_port }}" + msg: "cAdvisor is running and responding on port {{ cadvisor_port }}" when: cadvisor_check.status == 200 + rescue: + - name: Get cAdvisor container logs + community.docker.docker_container_logs: + name: cadvisor + tail: 50 + register: cadvisor_logs + become: yes + + - name: Display cAdvisor logs for debugging + debug: + var: cadvisor_logs.log + when: cadvisor_logs is defined + + - name: Check running containers + command: docker ps -a + register: docker_ps + become: yes + + - name: Display running containers + debug: + var: docker_ps.stdout + when: docker_ps is defined + + - name: Fail with detailed error message + fail: + msg: | + cAdvisor не удалось запустить {{ inventory_hostname }}. + Порт {{ cadvisor_port }} может использоваться или контейнер выходит из строя. + Подробности смотрите в журналах выше. + when: - docker_check.rc == 0 - cadvisor_enabled | default(true) \ No newline at end of file