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_owner: "nobody"
|
||||
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
|
||||
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
|
||||
ansible.builtin.command: exportfs -v
|
||||
register: nfs_exportfs
|
||||
|
||||
Reference in New Issue
Block a user