ci / test (push) Failing after 23s
kube-state-metrics (NodePort 30808) und ServiceAccount prometheus-infra (nur nodes/metrics) im Cluster; Prometheus auf infra liest kubelet/cAdvisor per TLS gegen die k3s-CA. Ziele per file_sd aus kubectl get nodes, cAdvisor auf die nötigen Reihen begrenzt. Dashboard "k3s – Pods" (Vorgabe nex), Alerts K3s* nur mit notify. Playbook monitoring-k3s.yml. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
44 lines
1.9 KiB
YAML
44 lines
1.9 KiB
YAML
# file_sd-Ziele der GPU-VMs (node, gpu, llamacpp). Auch einzeln aufrufbar: playbooks/monitoring-targets.yml
|
|
# (nach refresh-vm-access.sh, wenn sich DHCP-Adressen geändert haben). Prometheus liest die Dateien selbst neu.
|
|
# k3s (Task 6.5): kubelet und kube-state-metrics aus `kubectl get nodes` auf ops. Ist der Cluster nicht
|
|
# erreichbar, bleiben diese Listen leer und der Rest läuft weiter.
|
|
- name: k3s-Knoten lesen (auf ops)
|
|
ansible.builtin.shell: mkdir -p {{ infra_targets_dir }} && kubectl get nodes -o json > {{ infra_targets_dir }}/k3s-nodes.json
|
|
args:
|
|
executable: /bin/bash
|
|
delegate_to: localhost
|
|
run_once: true
|
|
register: k3s_nodes
|
|
failed_when: false
|
|
changed_when: false
|
|
|
|
- name: file_sd-Ziele aus tofu output erzeugen (auf ops)
|
|
ansible.builtin.shell: |
|
|
set -euo pipefail
|
|
tofu output -json gpu_vms | python3 {{ infra_repo_src }}/platform/proxmox/scripts/monitoring-targets.py \
|
|
--registry {{ infra_repo_src }}/sites/{{ knaster_site }}/registry.yaml --out {{ infra_targets_dir }} \
|
|
--llamacpp '{{ dict(_llamacpp_hosts | zip(_llamacpp_hosts | map('extract', hostvars, 'llamacpp_profiles'))) | to_json }}' \
|
|
{{ ('--k3s-nodes ' ~ infra_targets_dir ~ '/k3s-nodes.json') if k3s_nodes.rc == 0 else '' }}
|
|
args:
|
|
chdir: "{{ infra_tofu_dir }}"
|
|
executable: /bin/bash
|
|
delegate_to: localhost
|
|
run_once: true
|
|
vars:
|
|
# Profile je VM aus dem Inventar (Gruppe gpu_llamacpp, Task 6.1)
|
|
_llamacpp_hosts: "{{ groups['gpu_llamacpp'] | default([]) }}"
|
|
changed_when: false
|
|
|
|
- name: file_sd-Verzeichnis
|
|
ansible.builtin.file:
|
|
path: "{{ infra_state_dir }}/file_sd"
|
|
state: directory
|
|
mode: "0755"
|
|
|
|
- name: file_sd-Ziele in den Container kopieren
|
|
ansible.builtin.copy:
|
|
src: "{{ infra_targets_dir }}/{{ item }}.json"
|
|
dest: "{{ infra_state_dir }}/file_sd/{{ item }}.json"
|
|
mode: "0644"
|
|
loop: [node, gpu, llamacpp, kubelet, kube-state-metrics]
|