
0. Introduktion
Jeg kunne ikke finde nogen artikler om NetXMS på Habr, selvom jeg ledte meget. Og kun af den grund besluttede jeg at skrive dette værk for at give opmærksomhed til dette system.
Dette er både en tutorial, en how-to og en overfladisk oversigt over systemets muligheder.
Denne artikel indeholder en overfladisk analyse og beskrivelse af systemets muligheder. Jeg har ikke dykket dybt ind i funktionaliteten af flere grunde. Desuden ville en beskrivelse af al funktionalitet tage langt mere end én artikel.
Da jeg kun har arbejdet lidt med Zabbix, vil denne artikel ofte nævne netop dette system til sammenligning med emnet. Desuden er det blevet en slags skik at sammenligne alt med noget anerkendt.
1. Hvad og hvorfor?
Et overvågningssystem, som det fremgår af definitionen, er et system, der gør det muligt at få aktuel information om en hvilken som helst node i netværket, maskine, router, hvis det er nødvendigt.
Årsagen til dette er også åbenlys. For at være opmærksom på, hvad der sker.
Ofte kan et overvågningssystem give meget udførlige oplysninger om tilstanden af både infrastrukturen som helhed og dens enkelte dele. Derudover, hvis man opsætter alarmer (uden dem er enhver overvågning værdiløs), får man et alvorligt værktøj, der ikke kun gør det muligt at reagere rettidigt på allerede opståede nødsituationer, men i de fleste tilfælde også giver mulighed for at forebygge disse nødsituationer.
2. Hvorfor NetXMS?
Lidt off-topic for dem, der elsker mange bogstaverDa jeg var ung og uerfaren… Begynder alle eventyr sådan? Da jeg var maksimalist, undersøgte jeg spørgsmålet om overvågning af infrastruktur, og resultatet af disse "undersøgelser" var konklusionen, at der ikke er noget bedre end Zabbix. På det tidspunkt kunne jeg virkelig lide det, fordi det kan meget, det har mange funktioner, og dets funktionalitet kan udvides med skræddersyede scripts, så man kan sige, at det faktisk kan alt, hvis man har de rigtige evner. Men Zabbix er et ret komplekst værktøj. For at få lidt styr på det tog det mig næsten to uger. Og det var bare implementeringsfasen. Derefter skulle jeg bruge et par uger på at konfigurere overvågningen af alt det, jeg dengang havde brug for. Jeg læste hvordan man kunne se portstatus på routerne, blev skræmt og besluttede, at det ikke var noget, jeg egentlig havde brug for… Virkelig, det er ret skræmmende for en uforberedt hjerne lige efter universitetet…
Og nu, efter flere år, mere moden og med mere erfaring, besluttede jeg, at det var tid til at opdatere min viden om overvågningssystemer. Og endelig lave en ordentlig, stabil netværksovervågning, da dette problem blev aktuelt i takt med væksten af segmenter, tilslutningen af filialer og andre småting. Alt flyder, alt ændrer sig. Og så begyndte jeg at teste forskellige værktøjer. Jeg installerede den ene system, rørte lidt ved det, så den anden. Og der manglede altid noget, der var altid noget, jeg ikke kunne lide. Nogle gange var brugervenligheden dårlig, nogle gange var opsætningen frustrerende, eller noget andet. Og så stødte jeg på NetXMS. Forresten: hvor jeg brugte to uger på at forstå Zabbix, så gik det med NetXMS hurtigt og glat på et par timer. Måske kom det af min erfaring med Zabbix, eller måske skyldes det selve NetXMS… svært at sige.
NetXMS viste sig at være et ret enkelt system at installere og konfigurere. Det har både server- og administrationskonsolversioner til både Windows og Linux, grafisk opbygning, en indbygget "browser", der gør det muligt at forbinde til routerne via http/https protokoller fra administrationskonsollen, og et intuitivt interface samt en agent til ethvert operativsystem. Alt i alt viste dette system sig at være enkelt og bekvemt. Ved første øjekast.
Deres dokumentation, for at sige det mildt, er 8 ud af 10. De vigtigste oplysninger er angivet, men for at forstå detaljerne, skal man dykke lidt dybere.
De vigtigste fordele, som udvikleren har angivetDybdegående netværksovervågning
Automatisk opdagelse, visualisering og søgning af tilsluttede komponenter på niveau 2 og 3
Fuld støtte til SNMPv3
Aktiv opdagelse ved hjælp af scannende "sonder"
Passiv opdagelse baseret på information fra kontrollerede enheder — ARP og routingtabel, interfaces
Overvågning af applikationer og servere
Alle de nøglemetrikker, du forventer: CPU, filsystemer, input-output, hukommelse, trafik
JMX-bro til overvågning af Java-applikationer
Udvidelser til specifikke applikationer: Oracle, MySQL, PostgreSQL, MongoDB, DB2, Tuxedo og mange flere
API til integration med egne applikationer
Designet til store netværk
En server kan overvåge hundrede metrikker på tusinder af enheder
Fuld støtte til distribueret overvågning og horisontal skalering
Overvågning af overlappende IP-subnetværk
Fleksibel adgangskontrol for operatører og kunder
3. Vi dykker dybere
Hvordan man installerer systemet — der er en hel for administratorer, tilgængelig på , og der er ikke noget kompliceret ved det, så jeg vil ikke stoppe her. Det sværeste ved installationen er at forbinde systemet til databasen... Her vil forskellen kun være valget af DBMS og serverens OS. Jeg valgte Windows (derefter indtast data - klar) og MSSQL, da jeg allerede havde det.
3.1. Aktivere automatisk opdagelse
Automatisk opdagelse af netværksnoder kan aktiveres under installationen. Hvis det af en eller anden grund ikke blev gjort, kan det altid aktiveres i «Configuration-Network Discovery» eller ved at klikke på ikonet med samme navn. I arbejdsområdet vil egenskaberne for opdagelse vises. Det skal aktiveres ved at skifte til passiv eller aktiv tilstand, og andre egenskaber skal angives, såsom de forespurgte subnetværk. Her kan der også oprettes filtre, og man kan både vælge og tilpasse de indbyggede i systemet eller skrive sine egne scripts. Jeg må ærligt sige, at jeg ikke havde brug for filtre. Men indstillingen ser meget venlig og forståelig ud.
Her kan der også angives en standard SNMP-community og dens legitimationsoplysninger (læs: autentificering).
3.2. Tilføjelse af noder
Når automatisk opdagelse er aktiveret, vil slutnoder (PC'er, printere) automatisk blive tilføjet og fordelt i subnetværk. Med aktivt netværksudstyr er alt lidt mere komplekst.
Begynd med at aktivere SNMP på netværksudstyret og indstille community. Hvis standardværdien for SNMP community i netværksnodeopdagelsesegenskaberne ikke er ændret, bruger systemet public community, og denne indstilling kan ændres for hver node i egenskaberne for den tilføjede node.
For nemheds skyld kan enheder grupperes efter enhver praktisk princip; i træet kan du oprette containere i Infrastructure Services-grenen og binde noder fra Entrie Network i dem.
Efter aktivering og opsætning af SNMP på routerne og tilføjelse af dem til listen over overvåget udstyr, vil systemet selv kontakte dem, forespørge dem, identificere hvilke enheder det drejer sig om, anvende skabeloner, begynde datakontrol og vise frontpanelet for hver router. Automatisk. Fra starten. Da jeg opsatte Zabbix, kunne jeg kun drømme om noget sådant.

Jeg tilføjede alle mine netværksudstyr manuelt, da de af en eller anden grund ikke blev opdaget. Det er simpelt. Opret en container i Infrastructure Services med et hvilket som helst passende navn (for eksempel switches), og Højreklik - opret - node, angiv visningsnavnet for noden, dens IP-adresse, og det er bedst at sætte flueben ved "deaktiver brug af NetXMS-agenten", da den ikke kan installeres på netværksudstyr, og ekstra pakker er overflødige.
Indbygget browser. Du kan blot højreklikke på den ønskede router og åbne enhedens webgrænseflade. Jeg fandt det mere bekvemt end hver gang at lede efter den nødvendige IP i mine noter. Sandt nok, browseren er ikke så god.
3.3. Bygning af netværkskort
Først og fremmest skal du oprette et netværkskort som objekt. Som sædvanligt - i grenen Networks Map, højreklik, opret, vælg korttype, indstil parametre, og systemet vil så klare resten selv.
Korttyperne er som følger:
- Custom. Dette er et kort, der er beregnet til manuel oprettelse, efter brugerens ønske.
- Layer 2 topology. Dette er et kort, der automatisk kan fremstille alt for brugeren baseret på OSI-modellens 2. niveau (i bund og grund laver det kortet baseret på enhedernes MAC-adresser).
- IP topology, også kaldet Layer 3. Det samme som i tilfælde af Layer 2, men kortet genereres baseret på 3. niveau af OSI-modellen (IP-adresser).
Når du vælger manuel kortlægning, skal du trække noderne fra træet til kortlaget, forbinde dem osv. Almindelig tegning.
I de to andre tilfælde skal du vælge et udgangspunkt, som systemet begynder at bygge kortet fra. For eksempel en node fra en router. Systemet læser data om de tilsluttede enheder og porte, de er tilsluttet til, hvorefter det læser data fra den næste router, sammenligner og så videre. Efter analysen af alle enheder, vil NetXMS selv tegne forbindelserne mellem netværkets enheder med angivelse af de porte, hvor alt er tilsluttet. Du kan også angive, at systemet skal placere de endelige enheder (printere, pc'er, servere) på kortet, simpelthen ved at trykke på den relevante punkt i kortets egenskaber (Højreklik — egenskaber — kortets egenskaber). Du kan også angive en "opdagelsesradius", hvis det ønskes eller er nødvendigt.
Lille anbefaling. Aktivér egenskaben Always fit layout to screen, så du ikke hver gang skal rulle arbejdsområdet ned og arbejder med zoom, når du opdaterer netværkskortet.

Ved distribueret netværkstopologi kan du placere objekter på kortet over området. Du kan også bruge et billede af racken med udstyr i serverrummet som baggrund, hvorpå du lægger de nødvendige objekter. På den måde kan du hurtigt bestemme status for enhver enhed i racken. Jeg mener, at dette er en ekstremt nyttig ting, hvis du skal overdrage opgaver til en efterfølger eller forklare situationen til en ny kollega. Visualt, praktisk, indlysende.
3.4. Agenter
Agenter findes til både Windows og Linux. Virksomhedsprincippet er det samme som for agenterne i Zabbix: de installeres på maskinen, hvorfra målinger skal tages, og sender data til overvågningsserveren. Agenten kan installeres både før og efter, at noden tilføjes til systemet. Efter agenten optræder på noden, begynder systemet efter et stykke tid at modtage data fra den, ved at anvende standard skabelonen. Du kan tilføje overvågede parametre både for én node og knytte én eller flere foruddefinerede skabeloner til den. Det anbefales naturligvis at arbejde med skabeloner, da denne opsætning er mere fleksibel.
Listen over de overvågede parametre for agenterne er ret omfattende. Den fulde liste kan ses i
Så snart systemet registrerer, at der kører en agent på noden, vil det straks knytte denne node til en af de standard skabeloner — Windows, Linux, HP-UX, Generisk UNIX, AIX, afhængigt af operativsystemet for noden.
Standard skabelon for Windows-værter:

For at tilføje en parameter til overvågning af en specifik node, kan du klikke på «Højreklik-Dataindsamlingsparameter», derefter «Højreklik i arbejdsområdet — Ny parameter», og vælge den ønskede fra listen. Her kan du også konfigurere triggere for den overvågede parameter.
Det er vigtigt, at agenterne, ligesom ved Zabbix, kan køre brugerdefinerede scripts.
Hvordan installerer man?Det er off-topic, da hver… hmm… gør som de vil.
Her er spørgsmålet — skal agenterne kun distribueres til servere, eller alle maskiner i netværket? Hvis det er servere, og de er få — er det nemmest at gøre det manuelt. Hvis der er mange — domænpolitik, KIX, PoSh. Hvad som helst. Agenterne har en nøgle /SILENT, som gør det muligt at 'installere' dem usynligt for brugeren (hvis vi taler om distribution til alle maskiner i netværket). Jeg foretrækker scripts, da man kan opstille en betingelse og oprette en form for flag, i modsætning til politikker, der altid installerer programmet hver gang pc'en tændes. Så vi skriver et script af typen 'tjek for tilstedeværelse af flagfil, hvis ikke — kør installationsprogrammet med nøglen /SILENT, og efter succesfuld installation opret en flagfil'. Profit.
3.5. Triggere
Triggere kan konfigureres til at reagere på bestemte hændelser i de indsamlede data. For eksempel overskridelse af en bestemt ping-pong værdi til routeren. Også måden at underrette for hver trigger konfigureres (for nogle er det nok med et ikon i konsollen, mens andre straks sender underretninger til hvor som helst). Reaktionen på en hændelse vælges fra de forudindstillede i Handlingskonfiguration.
For at oprette en trigger: gå ind i Dataindsamlingskonfigurationen for noden eller skabelonen, dobbeltklik på den relevante parameter (hvis den ikke findes, skal du først oprette den), og i egenskaberne gå til fanen Grænser, klikke på knappen tilføj.

«Funktion» — hvilken eller hvilke værdier der skal bruges til at beregne betingelsen. Kan tage følgende værdier (antallet af værdier, der bruges til kontrol, angives i feltet Prøver):
— Sidste indhentede værdi: den seneste/modtagne værdi/værdier
— Gennemsnitsværdi: gennemsnit af de seneste
— Middelafvigelse: middelafvigelsen
— Afvigelse fra tidligere værdi: forskellen fra den tidligere værdi
— Dataindsamlingsfejl: fejl ved dataindsamling
— Sum af værdier: summen af værdierne
— Script: værdien opnået ved brug af et brugerdefineret script
«Operation» — betingelse for udløsning af triggeren. Kan have værdier (værdien angives i det relevante felt Value):
— <: mindre end: mindre end
— <=: mindre end eller lig med: mindre eller lig med
— == lig med: svarer til
— >=: større end eller lig med: større eller lig med
— >: større end: større end
— !=: ikke lig med: ikke svarer til
— like: nærmeste til
— not like: ikke nærmeste til
Hvad angår de to sidste parametre, har jeg ikke sikkerhed for, hvordan de fungerer. Derfor vil jeg ikke engang gætte på, hvilke grænser der er indbygget i dem.
Kort sagt, alt som i Zabbix, bare uden at skulle indtaste formler manuelt af frygt for at lave fejl eller tastefejl. For at genoprette triggeren (deaktiveringsbegivenhed) vil systemet selv indsætte værdien. (I Zabbix skal du igen skrive det og ikke lave tastefejl).
3.6. Skabeloner
Højreklik - opret skabelon, indtast skabelonnavnet. Højreklik - Dataindsamlingskonfiguration.
Lidt teoriDen indsamlede information kan komme fra flere kilder. Det kan være NetXMS-agent, der kører på maskinen, kan være «simpel forespørgsel' eller 'Intern«, der sendes af serveren selv (for eksempel ping), «SNMP«, «check point SNMP«, «Push«, «Windows Performance Counters«, «SM-CLP«, eller også kan det være brugerdefineret «script«. Hver type information kan have en type, som systemet vil forvente ved modtagelsen. For eksempel vil ping returnere et heltal (integer), mængden af ledig diskplads i bytes vil også være et heltal, mens temperaturen vil være en ikke-heltal, dvs. real).
Til indsamling af information gennem SNMP er der i NetXMS en stor liste over foruddefinerede parametre, hvilket betyder, at du ikke behøver at indtaste en specifik OID, men kan finde den i MIB-træet, hvilket faktisk kan være ret problematisk… Men. I sidste ende skal du grave i producentens dokumentation og finde IOD-værdier for hver enhed enkeltvis. Du kan bruge meget tid på at konfigurere dataindsamlingen fra enhederne, og støde på systembeskeden «UNSUPPORTED», og til sidst viser det sig, at den specifikke enhed bare ikke kan levere de anmodede oplysninger. Her er der ikke andet tilbage end at læse manualer og håbe.
For example, to gather information about node response time (ping), you need to add a new parameter (Right-click-new parameter), select Internal in the Origin field, click the Select button, and choose Ping Time. There is a search function, which I've only dreamed of in Zabbix. It also makes sense to change the node polling interval (by default, it is set to 60 seconds, meaning that if the router stops responding right after being polled by the monitoring system, nearly a whole minute will pass before the system realizes something is wrong and raises an alert).
List of Internal data that can be processed:

After all necessary settings have been added to the template, you need to click Right-click-apply and select all nodes to which this template needs to be applied (ctrl+Left-click). And that's it. After this, a branch will appear under the template in the tree, which, when expanded, will show all the nodes to which this template has been applied.
When detaching a node from the template, the collected data does not stop being collected; to stop its collection, you need to enter Data Collection Configuration for each node and delete everything manually, or first remove the parameters from the template and only then delete the nodes from it. I don't know why it's done this way, but I find it extremely strange. But... it is what it is.
In the template, you can select the necessary collected data and copy it to another template. In bulk. And there's no need to copy-paste from one template to another by hand... I'm starting to hate Zabbix..
3.7. Dashboards
Strangely enough, the NetXMS Wiki contains only one link to YouTube regarding this: , there isn't even a list or description of items that can be added to the Dashboard. In principle, everything is intuitively clear. Label — it's just... well... a label... I don't even know how to translate this. In short, a field with an inscription, used to designate and delineate elements, since the elements themselves do not contain names. Line Chart — this is a line graph. Bar Chart — this is a chart. Alarm Viewer — a list of alerts for the selected node(s). In short, the names speak for themselves.
Derefter skal du åbne dashboardets indstillinger og konfigurere visningerne. Vi er interesseret i fanen Dashboard Elements. Antal kolonner er det antal kolonner, elementer, der vil være placeret vandret. Hvert objekt har sine egne indstillinger, og jeg vil anbefale at fjerne markeringen i punktet Layout-Grib unødvendigt vertikalt plads for at minimere størrelsen på hvert element.

3.8. Handlingskonfiguration
(Konfiguration-Handlingskonfiguration)
I bund og grund er dette handlinger som svar på udløsninger.

NetXMS kan sende e-mail, sms, xmpp besked som svar på aktivering af en trigger. Dette er alt sammen trivielt - udfyld blot de nødvendige felter.
Du kan også:
— Videregive en besked til en anden NetXMS-server
— Udføre en kommando på NetXMS-administrationsserveren
— Udføre en kommando på en node ved hjælp af NetXMS-agenten
— Udføre et NXSL-script (NSXL er )
Efter oprettelsen af handlingen kan der indstilles en forsinkelsestid for udførelsen, samt anvendes et makro til udførelsen. Forsinkelsestid er nødvendig for ikke at forstyrre operatøren, hvis problemet løser sig selv (for eksempel var svartiden på ping-forespørgslen længere end det angivne, men ved den næste kontrol kan det vende tilbage til normal, så hvorfor forstyrre over sådanne småting?).
3.9. Adgangsafgrænsning
For hvert objekt kan der indstilles sine egne adgangsrettigheder. For hvert objekt inden i et andet objekt kan der også indstilles adgangsrettigheder. Dette giver en meget fleksibel fordeling af ansvar og overvågningsmuligheder for forskellige brugergrupper. Det var alt, hvad jeg havde at sige.
4. Konklusion
Jeg vil gerne modsige titlen på min egen artikel. NetXMS er ikke for dovne. Bare udviklerne har ikke lagt vægt på funktionalitet som nogle, men de har også taget sig af grænsefladen.
Lad os sige det sådan. Jeg har brugt Zabbix og NetXMS. Så jeg vil blot skrive mine indtryk af de to systemer.
Så.
NetXMS virker for mig som et ekstremt brugervenligt system. Nå ja… for administratoren… ja, for administratoren. Det har det, man kalder et intuitivt interface, og det er virkelig fantastisk. Der er ikke behov for at skrive egne formler eller læse en masse dokumentation for at aktivere ping-checks til switchen eller nogen anden simpel funktion. Men. I Zabbix er denne samme enkle funktion ikke meget anderledes end noget, der rent faktisk er komplekst, det vil sige, hvis man har lært det, så kan man også gøre alt det andet. I NetXMS er der hints, de fleste indstillinger kan findes i interfacet, vælges med musen og konfigureres. I Zabbix skal man finde ud af, om systemet kan det og det, og hvis ja, hvordan det skrives og hvilke parametre der returneres. Zabbix vinder på fællesskabet og en masse skabeloner til alle situationer… hvis man kan finde det nødvendige i det bjerge af rod… På den anden side har NetXMS også en hel del entusiaster og den tilføjelser, de har lavet til systemet. Og selve systemet kan også overvåge de mest populære applikationer fra start, hvilket der står om på projektets hovedside.
Den største fordel ved NetXMS over Zabbix for mig var muligheden for at køre et script på den problematiske node som svar på en trigger. Temperaturstrømmen i CPU stiger over grænsen - det slukker selv hosten. Så kan vi finde ud af, hvad problemet er. Måske har Zabbix også denne mulighed, men jeg kunne ikke. Ligesom med overvågning af porte på routerne. Her sker det automatisk… Nå, som sagt… Man skal lære scripting-sproget, og så er det det…
Adgangsrettighederne i NetXMS giver en meget fleksibel opdeling af forskellige brugeres muligheder i systemet. Men for at få det hele sat op, kræver det lidt arbejde.
Generelt er systemerne ret ens, og deres muligheder synes ved første øjekast at være mindst sammenlignelige. Selvom man kan mærke, at Zabbix kan mere, men disse funktioner ligger dybt under overfladen og er for en almindelig administrator "alt-i-én" utilgængelige. NetXMS virker derimod enkelt og forståeligt, brugervenligt og behageligt.
Zabbix har fremragende dokumentation, wiki, hvordan man gør, F.A.Q., bedste praksis og forskellige fora osv., hvor man kan finde svar på næsten alle spørgsmål. Og hvis ikke, kan man stille sit eget.
Sammenfattende vil jeg anbefale NetXMS til folk, der lige er begyndt, eller til dem, der ikke har brug for at dykke dybt ned i overvågningen af alt og alle. Jeg er sikker på, at hvis man undersøger det nærmere, kan man finde meget detaljerede indsigter.
Men jeg ser stadig den største fordel som det meget behagelige interface og enkelheden i opsætningen.
5. Anvendte materialer
youtube-kanal
Kilde: habr.com
