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.
- 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 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.
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
-
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.
-
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".
<?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>
-
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
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}"
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
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}%")
-
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.
-
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.
-
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.).
Både Zabbix og Check_MK kan konfigureres til å overvåke utløpsdatoen for SSL-sertifikater ved hjelp av plugins eller skript.
-
Installer Zabbix Template for SSL Monitoring:
- Last ned og importer SSL Certificate Expiration Zabbix Template.
-
Konfigurer SSL Check Items:
- Sett opp elementer i Zabbix for å sjekke SSL-sertifikatutløpsdatoer på VM-er og CT-er som kjører webservere.
-
Installer SSL Certificate Check Plugin:
- Check_MK har et innebygd plugin for SSL-sertifikatovervåking.
-
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).
- 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.
- 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.
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:
- 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.
- Overvåking av SSH-nøkkeladministrasjon: Sikre at SSH-nøkler blir generert, distribuert, og fornyet riktig på alle målservere.
- Overvåking av SSL-sertifikatadministrasjon: Verifisere at SSL-sertifikater genereres, installeres og fornyes i tide.
- Overvåking av automatiske jobber og periodiske inventar: Kontrollere at periodiske oppgaver som cron-jobber for inventarinnsamling og automatiske sertifikatfornyelser utføres som planlagt.
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
.
Zabbix:
-
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
.
-
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:
-
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.
For å overvåke hvorvidt playbooks utføres som forventet, kan vi bruke Ansible's callback plugin til å rapportere resultater til Zabbix eller Check_MK.
-
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'
- Installer Ansible Zabbix Plugin:
-
Bruk en Check_MK-anrop plugin:
- Lag en tilpasset Check_MK-plugin som bruker
curl
ellerhttp
til å sende resultatet av hver playbook-kjøring til Check_MK som en passiv sjekk.
- Lag en tilpasset Check_MK-plugin som bruker
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.
Zabbix:
-
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:
-
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.
-
Opprett regler for å varsle hvis nøklene ikke er tilstede:
- Konfigurer varsler for manglende eller feilaktig SSH-nøkkeldistribusjon.
Bruk Zabbix og Check_MK til å overvåke sertifikatenes status og fornye dem automatisk.
-
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.
-
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.
For å sikre at periodiske oppgaver som cron-jobber for inventarinnsamling og automatiske sertifikatfornyelser utføres som planlagt:
-
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.
- Overvåk
-
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.
- 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.
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.