Sziasztok!
A problémám az lenne, hogy nem tudom hogyan kell egyedi monitorzosát beállítani hogyha az agent egy satelit nodehoz csatlakozik.
hálózati eszközöknél nincs gond, de agentnél nem tudok rájönni, hogyan lehet. Ha apply service-zel csinálok egy általános checket az meg, de nem akarok minden agentre külön csinálni ilyet,
csak olyanra ami közös bennünk. Szóval a kérdésem hogyan lehet object service-t csinálni elosztott monitorozásnál?
Próbáltam utánna nézni de nem nagyon találtam semmi hasznosat hozzá, vagy csak én rontok el valamit.
- 344 megtekintés
Hozzászólások
Megnézem neked. Nincs satelitem, de ha csak ezen múlik, beiktatok egyet.
Kérdés: van működő konfigod agentel, ami a master-el rendben kommunikál? Gondolok itt beállított zonára, etc/icinga2/zones.d-n belül global-templates és minden más megvan-e? Mielőtt nekiugrok a satellite-nek, ezt először tisztázzuk, mi van meg.
- A hozzászóláshoz be kell jelentkezni
Ez a mesteren a host config:
bject Endpoint "agent1.local.lan" {
host = "agent1.local.lan"
log_duration = 0
}
object Zone "agent1.local.lan" {
endpoints = [ "agent1.local.lan" ]
parent = "Telephely1"
}
Ez pedig az agenten a zona.conf
object Endpoint "satelit1.local.lan" {
}
object Zone "Telephely1" {
endpoints = [ "satelit1.local.lan" ]
}
object Endpoint "agent1.local.lan" {
}
object Zone "agent1.local.lan" {
endpoints = [ "agent1.local.lan" ]
parent = "Telephely1"
}
object Zone "global-templates" {
global = true
}
object Zone "director-global" {
global = true
}
Ez pedig egy működő általános service
apply Service "SSD1 - Health" {
import "generic-service"
command_endpoint = host.vars.agent_endpoint
check_command = "check_linux_smart"
vars.check_linux_smart_device = "/dev/sda"
vars.check_linux_smart_interface = "megaraid,8"
assign where host.zone == "Telephely1" && host.vars.agent_endpoint
}
Az egészet ebből a leírásból kezdtem el csinálni. Lehet ez így jó és csak az a gond, hogy belekevertem az snmp-s dolgokat.
https://icinga.com/docs/icinga-2/latest/doc/06-distributed-monitoring/
A kommunikáció biztos jó, egyrész nem szürkék a beállított checkek és frissülnek is a statusok, valamit
a minta sevice csak ennél működhet, a többi virtuális ott nincs ssd.
Amit nem értek, ez a global-template könytárból származik, a mesteren és a sateliten megy hiba nélkül, az agenten is elvileg, de a satelit státusát teszi bele. Ezt biztos
apply Service "users" {
import "generic-service"
check_command = "users"
assign where host.vars.os == "ubuntu"
}
- A hozzászóláshoz be kell jelentkezni
Még satellite-et nem raktam, de összenéztem a saját konfigommal a tied. Amit így elsőre észrevettem, hogy nincs megadva a Master-en, az Endpointnál, ki a "parent".
Nekem tételesen fel van sorolva a Master-en az összes Endpointom, mint Zone (Minden végpont külön zónának számít. Olyan sok klienst nem monitorozok így.)
object Endpoint "gpu1..hu" {
host = "xxx.xxx.xxx.xxx"
}
object Zone "gpu1..hu" {
endpoints = [ "gpu1.hu" ]
parent = "master"
}
Amit nem értek, ez a global-template könytárból származik, a mesteren és a sateliten megy hiba nélkül, az agenten is elvileg, de a satelit státusát teszi bele.
Az Endpoint-on is kell a zones.d-be egy "global-templates" folder, ott a service.config-ba, amit futtatni szeretnél: assign where host.name == NodeName
A zones.conf-ot is szerkesztened kell:
object Endpoint "icinga2-master..hu" {
host = "xxx.xxx.xxx.xxx"
port = "5665"
}
object Zone "master" {
endpoints = [ "icinga2-master..hu" ]
}
object Endpoint "gpu1..hu" {
}
object Zone "gpu1..hu" {
endpoints = [ "gpu1..hu" ]
parent = "master"
}
object Zone "global-templates" {
global = true
}
object Zone "director-global" {
global = true
}
- A hozzászóláshoz be kell jelentkezni
Bocs a lassú válaszért, kicsit sok a meló.
A leírás alapján így kell felvenni a zona beállításokat, de lehet én néztem be valamit.
Igen, az Endpointon is benne van a global config. Így néz ki teljes valójában:
object Endpoint "satelit" {
}
object Zone "Telephely1" {
endpoints = [ "satelit" ]
}
object Endpoint "endpoint1" {
}
object Zone "endpoint1" {
endpoints = [ "endpoint1" ]
parent = "Telephely1"
}
object Zone "global-templates" {
global = true
}
object Zone "director-global" {
global = true
}
És így néz ki a satelit nodeon
object Endpoint "mester" {
host = "1.1.1.1"
port = "5665"
}
object Zone "master" {
endpoints = [ "mester" ]
}
object Endpoint "satelit" {
}
object Zone "Szombathely" {
endpoints = [ "satelit" ]
parent = "master"
}
object Zone "global-templates" {
global = true
}
object Zone "director-global" {
global = true
}
Amit javasoltál assign where host.name == NodeName kipróbálom, azt hittem ezt ki lehet hagyni, de akkor lehet nem.
- A hozzászóláshoz be kell jelentkezni
Bocs a lassú válaszért, kicsit sok a meló.
Sajnos én sem haladtam a héten, de itt a péntek délután. Ideje elrontani valamit, ami működik :]
Amit javasoltál assign where host.name == NodeName kipróbálom, azt hittem ezt ki lehet hagyni, de akkor lehet nem.
Már én sem tudom, ezt kinek a "receptjéből főztem", de logikus a NodeName használta, mert ezzel elég konkrétan tudod triggerelni, hol fusson le.
Nekiálltam felhúzni egy vm-et satellite módban, mert engem is érdekel, ez hogy működik. Még a két, vagy több masteres felállást is ki akarom próbálni. Amit monitorozok arra elég egy master is, ezt csak a kíváncsiság miatt akarom.
- A hozzászóláshoz be kell jelentkezni
a NodeName nem jó, mert akkor csak a mesteren hajtódnak végre a lekérések. Most próbáltam meg és egyből eltünt a lekérdezés az összes hostról ami nem mester volt.
- A hozzászóláshoz be kell jelentkezni
Ez a felállás eddig úgy néz ki működik, mindent elmozgattam adott zónába és így definiáltam. Nem tudom mennyire, jó, de ez működik eddig.
Master:
apply Service "apt" {
import "generic-service"
check_command = "apt"
assign where host.name == NodeName
}
Telephely1
apply Service "apt" {
check_command = "apt"
command_endpoint = host.vars.agent_endpoint
assign where host.vars.os == "ubuntu" && host.vars.agent_endpoint
}
apply Service "apt" {
import "generic-service"
check_command = "apt"
assign where host.name == "satelit"
}
- A hozzászóláshoz be kell jelentkezni
Lehet, hogy valamit félreértünk:
Ha apply service-zel csinálok egy általános checket az meg, de nem akarok minden agentre külön csinálni ilyet,
Vagyis, úgy gondolod, hogy a Masteren elkészíted a konfigot, megírod és az majd működni fog az Agent-en is, anélkül, hogy azokon bármit is tenned kellene? Mert ha ilyet forgatsz a fejedbe, azt kell mondjam, ez elvileg működik, gyakorlatilag meg nem tudtam én sem rájönni, voltaképpen mit csinál, amikor ezzel próbálkozik az icinga. Ha ez a terved, akkor ki kell ábrándítsalak, mert jobban jársz, ha megírsz mindent - vagyis átmásolsz - az agent-ekre is.
Letesz ugyan valamilyen fájlokat az agent-en a /var/lib/icinga2/api/zones folderbe, de, hogy ezek pontosan milyen forrásból vannak, lövésem sincs. Se nem a default, módosítás előtti állapot, sem nem amit már én módosítottam. És ezeket frissíti is, amikor olyanja van.
Egyébként ami még eszembe jutott és hibakeresésben hasznos, az a "icinga2 object list" parancs, --name és --type-al paraméterezve. Látni fogod mit és honnan vesz, mit és mivel módosít. (sor és oszlop pontossággal)
- A hozzászóláshoz be kell jelentkezni