check_mk_værdata_2 - itnett/FTD02H-N GitHub Wiki
For å oppnå en slik integrasjon hvor du kan ha flere byer (f.eks., Bergen, Oslo, Kairo) og koble værdata fra MET.no til de respektive hostene basert på geografiske koordinater, kan vi lage en mer avansert Check_MK-pakke. Denne pakken vil kunne definere "hosts" som representerer de geografiske stedene og integrere MET.no-data dynamisk for hver av dem.
Løsning: Check_MK Integrasjon for MET.no med Stedsbaserte Koordinater
Denne løsningen vil opprette en plugin-pakke som kan brukes til å overvåke værdata for forskjellige steder, basert på deres geografiske koordinater.
Steg 1: Opprette Check_MK Plugin for MET.no API
Opprett en ny Check_MK-pakke som inkluderer en plugin som kan hente værdata for et gitt sett av koordinater (f.eks. for Bergen, Oslo, Kairo) og knytte disse dataene til en bestemt host eller gruppe av hosts.
- Check Skript: Opprett et skript som henter værdata for en bestemt host basert på dens angitte koordinater.
- Variabler for Koordinater: Definer en metode for å sette koordinater som variabler for hver host.
- Tilknytning til Host Tags: Bruk host tags eller etiketter for å knytte hosts til værdata basert på deres geografiske plassering.
Steg 2: Skriv Check Skriptet for MET.no Integrasjon
Opprett et nytt Python-skript som heter met_weather.py
i local/share/check_mk/checks/
:
#!/usr/bin/env python3
import requests
import json
from datetime import datetime
def fetch_weather_data(latitude, longitude):
"""Henter værdata fra MET.no API basert på geografiske koordinater."""
API_URL = f"https://api.met.no/weatherapi/locationforecast/2.0/compact?lat={latitude}&lon={longitude}"
headers = {
"User-Agent": "CheckMK/1.0"
}
try:
response = requests.get(API_URL, headers=headers)
response.raise_for_status()
return response.json()
except requests.exceptions.RequestException as e:
print(f"Error fetching data from MET.no: {e}")
return None
def inventory_met_weather(params):
"""Definerer inventaret for MET.no værdata sjekker."""
return [("weather_data", None)]
def check_met_weather(item, params, info):
"""Kjører sjekken for MET.no værdata."""
latitude = params.get("latitude")
longitude = params.get("longitude")
weather_data = fetch_weather_data(latitude, longitude)
if not weather_data:
return (2, "MET.no data unavailable")
timeseries = weather_data.get("properties", {}).get("timeseries", [])
if not timeseries:
return (1, "No weather data available")
# Finn den nyeste tilgjengelige værdataen
current_weather = timeseries[0] # Den første posten er vanligvis den nyeste
details = current_weather["data"]["instant"]["details"]
air_temp = details["air_temperature"]
air_pressure = details["air_pressure_at_sea_level"]
humidity = details["relative_humidity"]
wind_speed = details["wind_speed"]
# Generer meldingen og perfdata
output_message = f"Weather: Temp={air_temp}°C, Pressure={air_pressure}hPa, Humidity={humidity}%, Wind={wind_speed}m/s"
perfdata = f"air_temperature={air_temp}|air_pressure={air_pressure}|humidity={humidity}|wind_speed={wind_speed}"
return (0, output_message, perfdata)
# Definer sjekkfunksjoner og parametere for Check_MK
check_info["met_weather"] = {
"check_function": check_met_weather,
"inventory_function": inventory_met_weather,
"service_description": "Weather Data for MET.no",
"has_perfdata": True,
"group": "weather",
"item": "weather_data"
}
wato
Plugin for Variabler
Steg 3: Definer Lag en weather_parameters.py
under web/plugins/wato/
for å definere en konfigurasjon som gjør det mulig å angi koordinater for hver host i WATO (Web Administration Tool).
from cmk.gui.valuespec import (
Dictionary,
TextAscii,
Float,
)
from cmk.gui.plugins.wato import (
HostRulespec,
rulespec_registry,
RulespecGroupCheckParametersEnvironment,
)
def _parameter_valuespec_met_weather():
return Dictionary(
elements=[
("latitude", Float(title=_("Latitude"), unit=_("°"), default_value=59.91)),
("longitude", Float(title=_("Longitude"), unit=_("°"), default_value=10.75)),
],
optional_keys=[],
)
rulespec_registry.register(
HostRulespec(
group=RulespecGroupCheckParametersEnvironment,
name="met_weather_parameters",
valuespec=_parameter_valuespec_met_weather,
)
)
Dette gjør at du kan sette koordinater for hver host i Check_MK webgrensesnittet.
Steg 4: Opprette Host Tags for Værdata
- Gå til WATO > Host & Service Parameters > Grouping > Host Tags.
- Lag en ny Host Tag for "Location" som kan være verdiene "Bergen", "Oslo", "Kairo", etc.
- Bruk disse taggene til å spesifisere hvilke værdata som skal vises basert på geografisk plassering.
Steg 5: Opprette Værdata Hosts
For å integrere dette med flere lokasjoner:
- Lag en host i Check_MK for hver by (f.eks.
MET_Bergen
,MET_Oslo
,MET_Kairo
). - Sett koordinatene som variabler for hver host ved å bruke WATO.
Steg 6: Koble Andre Hoster til Værdata
Bruk Host Groups eller Service Groups for å gruppere hostene dine basert på plassering. Du kan også bruke Host Tags til å knytte hostene til deres respektive værdatakilder.
Steg 7: Bygg og Installer Check_MK Pakken
Opprett package_info
-filen for pakken:
title: MET.no Weather Integration
version: 1.0
author: Ditt Navn
description: Integrates weather data from MET.no API for different geographic locations.
Bygg og installer pakken:
check_mk -P build met_weather_plugin
check_mk -P install met_weather_plugin-1.0.mkp
Resultat
Dette vil gi deg en fleksibel integrasjon der du kan knytte værdata fra MET.no til alle hostene dine basert på deres geografiske lokasjon. Du vil kunne se værdata som temperatur, trykk, fuktighet og vindhastighet for hver lokasjon og hvordan det påvirker dine lokale hoster.
Videre Forbedringer
- Grafdefinisjoner: Lag avanserte grafer som kombinerer systemdata med værdata for å se hvordan eksterne faktorer påvirker ytelsen.
- Varsling: Sett opp varsler basert på spesifikke værforhold som kan påvirke driften.
- Dashboards: Lag dashboards som visualiserer værdata på tvers av flere lokasjoner.
Dette gir deg en omfattende og tilpassbar løsning for å integrere værdata med systemovervåking i Check_MK.