feat: добавить Prometheus-метрики для nfs-server addon
- Устанавливает prometheus-node-exporter на NFS-хостах (включает NFSD-коллектор из /proc/net/rpc/nfsd) - Открывает порт 9100 в UFW для cluster-сети - При addon_prometheus_stack=true создаёт в k8s: - headless Service nfs-server-node-exporter - Endpoints со списком IP NFS-хостов из inventory - ServiceMonitor с label release: kube-prometheus-stack
This commit is contained in:
@@ -19,3 +19,9 @@ nfs_create_export_dirs: true
|
|||||||
nfs_export_dir_mode: "0777"
|
nfs_export_dir_mode: "0777"
|
||||||
nfs_export_dir_owner: "nobody"
|
nfs_export_dir_owner: "nobody"
|
||||||
nfs_export_dir_group: "nogroup"
|
nfs_export_dir_group: "nogroup"
|
||||||
|
|
||||||
|
# ── Метрики (node_exporter с NFSD-коллектором) ───────────────────────────────
|
||||||
|
nfs_metrics_enabled: true
|
||||||
|
nfs_metrics_port: 9100
|
||||||
|
# Namespace в k8s для ServiceMonitor/Endpoints (должен существовать)
|
||||||
|
nfs_metrics_namespace: "monitoring"
|
||||||
|
|||||||
@@ -47,6 +47,109 @@
|
|||||||
become: true
|
become: true
|
||||||
failed_when: false # UFW может быть не установлен
|
failed_when: false # UFW может быть не установлен
|
||||||
|
|
||||||
|
- name: Install prometheus-node-exporter for NFS metrics
|
||||||
|
ansible.builtin.apt:
|
||||||
|
name: prometheus-node-exporter
|
||||||
|
state: present
|
||||||
|
become: true
|
||||||
|
when: nfs_metrics_enabled | bool
|
||||||
|
|
||||||
|
- name: Enable and start prometheus-node-exporter
|
||||||
|
ansible.builtin.systemd:
|
||||||
|
name: prometheus-node-exporter
|
||||||
|
enabled: true
|
||||||
|
state: started
|
||||||
|
become: true
|
||||||
|
when: nfs_metrics_enabled | bool
|
||||||
|
|
||||||
|
- name: Allow node-exporter port through UFW (if active)
|
||||||
|
community.general.ufw:
|
||||||
|
rule: allow
|
||||||
|
src: "{{ nfs_allowed_network }}"
|
||||||
|
port: "{{ nfs_metrics_port }}"
|
||||||
|
proto: tcp
|
||||||
|
become: true
|
||||||
|
failed_when: false
|
||||||
|
when: nfs_metrics_enabled | bool
|
||||||
|
|
||||||
|
- name: Build NFS host IP list for Endpoints
|
||||||
|
ansible.builtin.set_fact:
|
||||||
|
_nfs_endpoints_addresses: "{{ (_nfs_endpoints_addresses | default([])) + [{'ip': hostvars[item]['ansible_default_ipv4']['address']}] }}"
|
||||||
|
loop: "{{ groups['nfs_server'] }}"
|
||||||
|
run_once: true
|
||||||
|
when: nfs_metrics_enabled | bool and addon_prometheus_stack | default(false) | bool
|
||||||
|
|
||||||
|
- name: Create headless Service for NFS node-exporter
|
||||||
|
kubernetes.core.k8s:
|
||||||
|
state: present
|
||||||
|
definition:
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: nfs-server-node-exporter
|
||||||
|
namespace: "{{ nfs_metrics_namespace }}"
|
||||||
|
labels:
|
||||||
|
app: nfs-server-node-exporter
|
||||||
|
spec:
|
||||||
|
clusterIP: None
|
||||||
|
ports:
|
||||||
|
- name: metrics
|
||||||
|
port: "{{ nfs_metrics_port }}"
|
||||||
|
targetPort: "{{ nfs_metrics_port }}"
|
||||||
|
delegate_to: "{{ groups['k3s_master'][0] }}"
|
||||||
|
run_once: true
|
||||||
|
become: true
|
||||||
|
environment:
|
||||||
|
KUBECONFIG: "{{ k3s_kubeconfig_path }}"
|
||||||
|
when: nfs_metrics_enabled | bool and addon_prometheus_stack | default(false) | bool
|
||||||
|
|
||||||
|
- name: Create Endpoints for NFS node-exporter
|
||||||
|
kubernetes.core.k8s:
|
||||||
|
state: present
|
||||||
|
definition:
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Endpoints
|
||||||
|
metadata:
|
||||||
|
name: nfs-server-node-exporter
|
||||||
|
namespace: "{{ nfs_metrics_namespace }}"
|
||||||
|
subsets:
|
||||||
|
- addresses: "{{ _nfs_endpoints_addresses }}"
|
||||||
|
ports:
|
||||||
|
- name: metrics
|
||||||
|
port: "{{ nfs_metrics_port }}"
|
||||||
|
delegate_to: "{{ groups['k3s_master'][0] }}"
|
||||||
|
run_once: true
|
||||||
|
become: true
|
||||||
|
environment:
|
||||||
|
KUBECONFIG: "{{ k3s_kubeconfig_path }}"
|
||||||
|
when: nfs_metrics_enabled | bool and addon_prometheus_stack | default(false) | bool
|
||||||
|
|
||||||
|
- name: Create ServiceMonitor for NFS node-exporter
|
||||||
|
kubernetes.core.k8s:
|
||||||
|
state: present
|
||||||
|
definition:
|
||||||
|
apiVersion: monitoring.coreos.com/v1
|
||||||
|
kind: ServiceMonitor
|
||||||
|
metadata:
|
||||||
|
name: nfs-server-node-exporter
|
||||||
|
namespace: "{{ nfs_metrics_namespace }}"
|
||||||
|
labels:
|
||||||
|
release: kube-prometheus-stack
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: nfs-server-node-exporter
|
||||||
|
endpoints:
|
||||||
|
- port: metrics
|
||||||
|
path: /metrics
|
||||||
|
interval: 30s
|
||||||
|
delegate_to: "{{ groups['k3s_master'][0] }}"
|
||||||
|
run_once: true
|
||||||
|
become: true
|
||||||
|
environment:
|
||||||
|
KUBECONFIG: "{{ k3s_kubeconfig_path }}"
|
||||||
|
when: nfs_metrics_enabled | bool and addon_prometheus_stack | default(false) | bool
|
||||||
|
|
||||||
- name: Verify NFS exports are active
|
- name: Verify NFS exports are active
|
||||||
ansible.builtin.command: exportfs -v
|
ansible.builtin.command: exportfs -v
|
||||||
register: nfs_exportfs
|
register: nfs_exportfs
|
||||||
|
|||||||
Reference in New Issue
Block a user