Proxmox VE IoT ‐ 5 - itnett/FTD02H-N GitHub Wiki

For å overvåke din Proxmox-server og alle tilhørende VM-er, containere (CTs), nettverk, tjenester og sertifikatstatus ved hjelp av Zabbix og Check_MK, må vi sette opp overvåkingsløsninger som dekker alle aspekter av ditt Proxmox-miljø. Dette innebærer å konfigurere Zabbix og Check_MK til å samle data fra Proxmox API, overvåke tilstandene til VM-er/CT-er, nettverk, tjenester, og SSL-sertifikater, og sette opp varsler for å håndtere avvik.

1. Overvåkingsløsninger: Zabbix og Check_MK

Zabbix:

  • Zabbix er en robust og skalerbar overvåkingsplattform som kan brukes til å overvåke servere, nettverk, applikasjoner, og mer. Den støtter også innsamling av data fra API-er som Proxmox, og kan settes opp til å gi varsel ved bestemte hendelser.

Check_MK:

  • Check_MK er en overvåkingsløsning som bygger på Nagios, og gir en kraftig måte å samle inn og analysere overvåkingsdata på. Den har et stort sett med plugins og støtter overvåking av Proxmox via API-er.

2. Zabbix-konfigurasjon for Proxmox-overvåking

Steg 1: Installer Zabbix-agent på Proxmox

Installer Zabbix-agenten på Proxmox-serveren din for å samle data direkte fra den:

# Installer Zabbix-agent
apt update
apt install zabbix-agent

# Start og aktiver agenten
systemctl start zabbix-agent
systemctl enable zabbix-agent

Steg 2: Konfigurer Zabbix-server

  1. Legg til Proxmox-server i Zabbix-serverens webgrensesnitt:

    • Gå til "Configuration" -> "Hosts" -> "Create host".
    • Legg til din Proxmox-server, sett host name, IP-adresse, og link til riktig Zabbix-agent template.
  2. Last ned og bruk Proxmox Zabbix Template:

    • Bruk en eksisterende Proxmox-mal for Zabbix, eller lag en egen. Her er en mal som overvåker CPU, RAM, diskbruk, nettverksstatus, VM/CT-status, og mer.
    • Importer malen i Zabbix: Gå til "Configuration" -> "Templates" -> "Import".

Eksempel på en Zabbix-mal for Proxmox

<?xml version="1.0" encoding="UTF-8"?>
<zabbix_export>
  <version>5.0</version>
  <date>2024-09-03T00:00:00Z</date>
  <groups>
    <group>
      <name>Templates/Proxmox</name>
    </group>
  </groups>
  <templates>
    <template>
      <template>Template Proxmox Monitoring</template>
      <name>Template Proxmox Monitoring</name>
      <groups>
        <group>
          <name>Templates/Proxmox</name>
        </group>
      </groups>
      <items>
        <!-- CPU, Memory, Disk, VM/CT monitoring -->
        <item>
          <name>Proxmox Node CPU Utilization</name>
          <key>system.cpu.util[,avg1]</key>
          <type>SNMP Agent</type>
          <value_type>Float</value_type>
          <units>%</units>
          <applications>
            <application>
              <name>CPU</name>
            </application>
          </applications>
        </item>
        <!-- Legg til flere items som VM-status, diskbruk, nettverk, tjenester -->
      </items>
    </template>
  </templates>
</zabbix_export>
  1. Sett opp Overvåking for VM-er og Containere:
    • Bruk Zabbix API-skript for å hente status for alle VMs og CTs periodisk. Skriptene kan integreres i Zabbix-agentens konfigurasjon.
UserParameter=proxmox.vm.status[*],/usr/local/bin/proxmox_vm_status.sh $1

proxmox_vm_status.sh

Lag et script for å hente statusen til VM-er og CT-er.

#!/bin/bash
VM_ID=$1
PROXMOX_API_URL="https://192.168.1.10:8006/api2/json"
TOKEN_NAME="root@pam!mytoken"
TOKEN_VALUE="yourtokenvalue"

VM_STATUS=$(curl -s -k -H "Authorization: PVEAPIToken=${TOKEN_NAME}=${TOKEN_VALUE}" ${PROXMOX_API_URL}/nodes/pve/qemu/${VM_ID}/status/current | jq -r '.data.status')

echo "${VM_STATUS}"

3. Check_MK-konfigurasjon for Proxmox-overvåking

Steg 1: Installer Check_MK-agent på Proxmox

Installer Check_MK-agenten på Proxmox-serveren:

# Last ned Check_MK-agenten
wget https://download.checkmk.com/checkmk/2.0.0p3/check-mk-agent_2.0.0p3-1_all.deb

# Installer agenten
dpkg -i check-mk-agent_2.0.0p3-1_all.deb

# Start og aktiver agenten
systemctl start check-mk-agent
systemctl enable check-mk-agent

Steg 2: Opprett Check_MK-plugin for Proxmox

Opprett et Check_MK-plugin for å overvåke Proxmox-API-et. Dette pluginet vil hente data fra Proxmox API og sende det til Check_MK-serveren.

Lag en fil /usr/lib/check_mk_agent/local/proxmox_check.py med følgende innhold:

#!/usr/bin/env python3
from proxmoxer import ProxmoxAPI
import json

proxmox = ProxmoxAPI('192.168.1.10', user='root@pam', password='proxmox_password', verify_ssl=False)

# Samle data fra Proxmox
nodes = proxmox.nodes.get()

for node in nodes:
    node_name = node['node']
    print(f"P {node_name} - CPU Utilization {node['cpu']*100:.2f}%")
    print(f"P {node_name} - Memory Utilization {node['mem']/node['maxmem']*100:.2f}%")
    print(f"P {node_name} - Disk Utilization {node['disk']/node['maxdisk']*100:.2f}%")

Steg 3: Konfigurer Check_MK for å hente Proxmox-data

  1. Legg til Proxmox-serveren i Check_MK-webgrensesnittet:

    • Gå til "WATO" -> "Hosts" -> "New Host".
    • Legg til Proxmox-serverens IP-adresse og konfigurer Check_MK-agenten.
  2. Lag regler for å overvåke spesifikke tjenester:

    • Gå til "WATO" -> "Rulesets" -> "Monitoring Configuration".
    • Opprett regler for overvåking av CPU, minne, disk, nettverk, tjenester og SSL-sertifikatstatus.
  3. Sett opp varsler i Check_MK:

    • Gå til "WATO" -> "Notifications" og konfigurer varsler basert på regler og terskler for forskjellige målinger (CPU-utnyttelse, minnebruk, diskbruk, etc.).

4. Varslingslogikk for SSL-sertifikater

Både Zabbix og Check_MK kan konfigureres til å overvåke utløpsdatoen for SSL-sertifikater ved hjelp av plugins eller skript.

Zabbix SSL-sertifikat Overvåking:

  1. Installer Zabbix Template for SSL Monitoring:

    • Last ned og importer SSL Certificate Expiration Zabbix Template.
  2. Konfigurer SSL Check Items:

    • Sett opp elementer i Zabbix for å sjekke SSL-sertifikatutløpsdatoer på VM-er og CT-er som kjører webservere.

Check_MK SSL-sertifikat Overvåking:

  1. Installer SSL Certificate Check Plugin:

    • Check_MK har et innebygd plugin for SSL-sertifikatovervåking.
  2. Konfigurer pluginet:

    • Gå til "WATO" -> "Rulesets" -> "Active checks (HTTP, TCP, etc.)" -> "Check HTTP service".
    • Legg til en ny regel for å sjekke SSL-sertifikater og konfigurere varslingsterskler for sertifikat utløpsdato (for eksempel 30 dager før utløp).

5. Implementasjon av Grafing og Trendanalyse

  • Zabbix har innebygde verktøy for grafing og trendanalyse. Når overvåkningsdataene begynner å strømme inn, kan du bruke "Monitoring" -> "Graphs" og "Screens" for å lage egendefinerte dashbord.
  • Check_MK tilbyr også grafing av data

som samles inn fra Proxmox og kan vise historiske trender. Bruk "Views" for å lage tilpassede visninger og dashboards.

6. Automatiseringsverktøy og Historikkovervåking

  • Bruk Zabbix og Check_MK til å opprette automatiseringsverktøy ved hjelp av "Actions" og "Event handlers". Dette kan inkludere automatisk restart av tjenester, migrering av VM-er, eller utskifting av sertifikater når de er nær utløp.
  • Historikk: Begge verktøyene kan logge historiske data og hendelser, som du kan bruke for trendanalyse og kapasitetsplanlegging.

Oppsummering

Med Zabbix og Check_MK konfigurert til å overvåke Proxmox og alle tilhørende tjenester, har du en omfattende overvåkings- og varslingsløsning. Dette gir deg full innsikt i status og ytelse for alle VM-er, containere, nettverk, tjenester og SSL-sertifikater, samt gir muligheten for å automatisere vedlikehold og oppdateringer basert på overvåkningsdata.

For å overvåke og validere at Ansible-pakken din utfører alle oppgavene som forventet på Proxmox-serveren og dens VM-er og containere, trenger vi å utvide logikken for Zabbix og Check_MK til å overvåke selve Ansible-operasjonene. Dette inkluderer:

  1. Overvåking av Ansible Playbooks: Sikre at alle Ansible-playbooks utføres uten feil, at endringer blir anvendt som forventet, og at playbooks kjører innenfor akseptable tidsrammer.
  2. Overvåking av SSH-nøkkeladministrasjon: Sikre at SSH-nøkler blir generert, distribuert, og fornyet riktig på alle målservere.
  3. Overvåking av SSL-sertifikatadministrasjon: Verifisere at SSL-sertifikater genereres, installeres og fornyes i tide.
  4. Overvåking av automatiske jobber og periodiske inventar: Kontrollere at periodiske oppgaver som cron-jobber for inventarinnsamling og automatiske sertifikatfornyelser utføres som planlagt.

1. Overvåking av Ansible Playbooks og Operasjoner

Steg 1: Loggføre Ansible Kjøringer

For å kunne overvåke Ansible, må vi sikre at all kjøring av playbooks blir logget. Opprett en Ansible-konfigurasjonsfil (ansible.cfg) med logging aktivert.

Opprett eller rediger ansible.cfg:

[defaults]
log_path = /var/log/ansible/ansible.log
retry_files_enabled = False

Dette vil loggføre alle Ansible-operasjoner til /var/log/ansible/ansible.log.

Steg 2: Konfigurer Zabbix og Check_MK for å overvåke Ansible-loggen

Zabbix:

  1. Opprett et nytt element for loggfilovervåking:

    • Gå til "Configuration" -> "Hosts" -> Velg verten (kontrollmaskinen som kjører Ansible) -> "Items" -> "Create Item".
    • Sett "Name" til "Ansible Log Monitor".
    • Sett "Type" til "Zabbix agent (active)".
    • Sett "Key" til log[/var/log/ansible/ansible.log,,skip].
    • Sett "Type of information" til "Log".
    • Sett "Log time format" til yyyyMMddTHHmmss.
  2. Sett opp varsler basert på loggfiler:

    • Gå til "Configuration" -> "Actions".
    • Opprett en ny handling for å varsle når det finnes "ERROR" eller "FAILED" i Ansible-loggen.
    • Bruk en tilpasset utløseruttrykk: {control-server:log[/var/log/ansible/ansible.log,,skip].regexp("ERROR|FAILED")}=1.

Check_MK:

  1. Opprett en tilpasset loggregel for Ansible-loggen:
    • Gå til "WATO" -> "Logfile monitoring".
    • Legg til en ny regel for å overvåke /var/log/ansible/ansible.log.
    • Sett regler for varsler når "ERROR" eller "FAILED" finnes i loggfilen.

Steg 3: Overvåkning av Playbook-resultater

For å overvåke hvorvidt playbooks utføres som forventet, kan vi bruke Ansible's callback plugin til å rapportere resultater til Zabbix eller Check_MK.

  1. Bruk en Ansible Zabbix Callback Plugin:

    • Installer Ansible Zabbix Plugin:
      pip install ansible-zabbix-callback
    • Rediger ansible.cfg for å aktivere callback:
      [defaults]
      callback_whitelist = zabbix
    • Sett opp nødvendige miljøvariabler for Zabbix:
      export ZABBIX_SERVER='zabbix-server-ip'
      export ZABBIX_HOST='ansible-control-machine'
      export ZABBIX_HOSTNAME_ITEM='ansible-result'
      export ZABBIX_API_USER='api-user'
      export ZABBIX_API_PASSWORD='api-password'
  2. Bruk en Check_MK-anrop plugin:

    • Lag en tilpasset Check_MK-plugin som bruker curl eller http til å sende resultatet av hver playbook-kjøring til Check_MK som en passiv sjekk.

2. Overvåking av SSH-nøkkeladministrasjon

For å sikre at SSH-nøkkeladministrasjonen fungerer som forventet, må vi overvåke at:

  • SSH-nøklene er riktig generert og distribuert.
  • Nøklene er tilgjengelige på alle nødvendige VM-er og CT-er.
  • Ingen feil oppstår under distribusjon.

Overvåk SSH-nøkkelfiler og Autorisasjonsstatus

Zabbix:

  1. Overvåkning av SSH-nøkkelfiler:
    • Opprett en ny "item" i Zabbix for å overvåke at SSH-nøklene finnes og er i bruk.
    • Bruk Zabbix agent:
      vfs.file.exists[/home/ansible/.ssh/id_rsa.pub]
    • Sett opp en utløser hvis denne filen mangler på kontrollmaskinen eller på målservere.

Check_MK:

  1. Bruk Check_MK's filovervåkingsmodul:

    • Gå til "WATO" -> "Manual Checks" -> "File Grouping Patterns".
    • Legg til en sjekk for å overvåke tilstedeværelsen av SSH-nøkkelfiler.
  2. Opprett regler for å varsle hvis nøklene ikke er tilstede:

    • Konfigurer varsler for manglende eller feilaktig SSH-nøkkeldistribusjon.

3. Overvåking av SSL-sertifikatadministrasjon

Bruk Zabbix og Check_MK til å overvåke sertifikatenes status og fornye dem automatisk.

Zabbix SSL-sertifikat Overvåking:

  1. Opprett en mal for SSL-sertifikatutløpssjekk:
    • Bruk SSL Certificate Expiration Template til å overvåke utløpsdatoer for alle sertifikater.
    • Sett opp en handling for å fornye sertifikatet automatisk når utløpsdatoen nærmer seg.

Check_MK SSL-sertifikat Overvåking:

  1. Installer og konfigurer SSL-sertifikat plugin i Check_MK:
    • Bruk Check_MK's innebygde plugin for SSL-sertifikatovervåking.
    • Konfigurer sjekker for å overvåke sertifikater på alle webservere i miljøet.

4. Overvåking av Periodiske Inventaroppgaver og Automatiske Jobber

For å sikre at periodiske oppgaver som cron-jobber for inventarinnsamling og automatiske sertifikatfornyelser utføres som planlagt:

Zabbix Cron-job Overvåking:

  1. Opprett et nytt item for cron-job status:
    • Overvåk cron-loggene for å sikre at jobber utføres som planlagt:
      log[/var/log/syslog,,skip] regexp "CRON.*inventory_proxmox.yml"
    • Sett opp en utløser for å varsle hvis jobben feiler eller ikke kjører på riktig tidspunkt.

Check_MK Cron-job Overvåking:

  1. Overvåk loggfiler for cron-jobber i Check_MK:
    • Gå til "WATO" -> "Logfile Monitoring".
    • Opprett en regel for å overvåke /var/log/syslog for cron-jobber.

5. Trend- og Historikkovervåking

  • Zabbix: Bruk historiske data til å lage trender for Ansible-kjøringer, sertifikatfornyelser, og nøkkeldistribusjon.
  • Check_MK: Konfigurer grafer og visninger for å se trender i Ansible-operasjoner og vedlikeholdsjobber.

Oppsummering

Ved å utvide overvåkingen til også å dekke selve Ansible-operasjonene og jobbhåndteringen, sikrer vi at automatiseringen fungerer som forventet. Dette gir full synlighet i alt som skjer på Proxmox-serveren og tilhørende VM-er og CT-er, og sikrer at de nødvendige tiltakene utføres riktig og innenfor tidsrammene. Dette gir deg et komplett overvåkingssystem for både infrastrukturovervåking og automatiseringsverifisering.

⚠️ **GitHub.com Fallback** ⚠️