Áú»¢¶Ä²©

2 Detalls de preprocessament

Vista general

Aquesta secci¨® proporciona detalls sobre el preprocessament del valor de l'article. El preprocessament del valor d'element us permet definir i executar regles de transformaci¨® per als valors d'element rebuts.

El preprocessament es gestiona mitjan?ant un proc¨¦s gestor de preprocessament, aix¨ª com agents de preprocessament que executen passes de preprocessament. Tots els valors (amb o sense preprocessament) dels diferents recopiladors de dades passen pel controlador de preprocessament abans d'afegir-se a la mem¨°ria cau de l'historial. La comunicaci¨® IPC basada en socket s'empra entre els col¡¤lectors de dades (pollers, trappers, etc.) i el proc¨¦s de preprocessament. El servidor Áú»¢¶Ä²© o el proxy Áú»¢¶Ä²© (per elements monitorats pel proxy) realitza les passes de preprocessament.

Processament del valor de l'element

Per visualitzar el flux de dades de la font de dades a la base de dades Áú»¢¶Ä²©, podem emprar el seg¨¹ent diagrama simplificat:

El diagrama anterior nom¨¦s mostra els processos, objectes i accions relacionades amb el processament del valor de l'element en una forma simplificada. El diagrama no mostra canvis de direcci¨® condicionals, tractament d'errors ni bucles. Tampoc es mostra la mem¨°ria cau de dades locals del gestor de preprocessament perqu¨¨ no afecta directament el flux de dades. L'objectiu d'aquest diagrama ¨¦s mostrar els processos implicats en el processament del valor dels elements i com interactuen.

  • La recollida de dades comen?a amb dades en brut d'una font de dades. En aquest moment, les dades nom¨¦s contenen ID, marca de temps i valor (tamb¨¦ poden ser diversos valors)
  • Independentment del tipus de col¡¤lector de dades emprat, la idea ¨¦s la mateixa per a controls actius o passius, per a elements trapper, etc., ja que nom¨¦s canvia el format de les dades i l'inici de la comunicaci¨® (o el col¡¤lector de dades ¨¦s esperant una connexi¨® i dades, o el recollidor de dades inicia la comunicaci¨® i demana les dades). Les dades en brut es validen, la configuraci¨® de l'element es recupera de la mem¨°ria cau de configuraci¨® (les dades s'enriqueixen amb dades de configuraci¨®).
  • El mecanisme IPC basat en socket s'empra per passar dades dels col¡¤lectors de dades al gestor de preprocessament. En aquest punt, el recopilador de dades continua recopilant dades sense esperar la resposta del gestor de preprocessament.
  • Es fa un pretractament de dades. Aix¨° inclou fer passes de preprocessament i processar elements dependents.

L'element pot canviar d'estat a NO SOPORTAT durant el preprocessament si alguna de les passes de preprocessament falla.

  • Les dades de l'historial de la mem¨°ria cau de dades local del gestor de preprocessament s'envien a la mem¨°ria cau de l'historial.
  • En aquest punt, el flux de dades s'atura fins a la seg¨¹ent sincronitzaci¨® de la mem¨°ria cau de l'historial (quan el proc¨¦s de sincronitzaci¨® de l'historial realitza la sincronitzaci¨® de dades).
  • El proc¨¦s de sincronitzaci¨® comen?a amb la normalitzaci¨® de dades emmagatzemant dades a la base de dades Áú»¢¶Ä²©. La normalitzaci¨® de dades realitza conversions al tipus d'element esperat (tipus definit a la configuraci¨® de l'element), incl¨°s el truncament de les dades textuals segons les mides predefinides permeses per a aquests tipus (HISTORY_STR_VALUE_LEN per a la cadena, HISTORY_TEXT_VALUE_LEN per a text i HISTORY_LOG_VALUE_LEN per als valors de registre). Les dades s'envien a la base de dades Áú»¢¶Ä²© despr¨¦s de la normalitzaci¨®.

L'element pot canviar d'estat a NO SOPORTAT si la normalitzaci¨® de dades falla (per exemple, quan el valor del text no es pot convertir a nombre).

  • S'estan processant les dades recollides: es comproven els triggers, s'actualitza la configuraci¨® de l'element si l'element no ¨¦s compatible, etc.
  • Es considera el final del flux de dades des del punt de vista del processament del valor de l'element.

Preprocessament del valor de l'article

El preprocessament de les dades es realitza en els passos seg¨¹ents:

  • El valor de l'element es passa al gestor de preprocessament mitjan?ant un mecanisme IPC basat en s¨°cols UNIX.
  • Si l'element no t¨¦ elements de preprocessament ni dependents, el seu valor s'afegeix a la mem¨°ria cau de l'historial o s'envia al gestor de LLD. D'una altra manera:
    • Es crea una tasca de preprocessament i s'afegeix a la cua i els treballadors de preprocessament reben una notificaci¨® sobre la nova tasca.
    • En aquest punt, el flux de dades s'atura fins que hi hagi almenys un treballador de preprocessament desocupat (¨¦s a dir, no executant cap tasca).
    • Quan un treballador de preprocessament ¨¦s disponible, pren la seg¨¹ent tasca de la cua.
    • Un cop finalitzat el preprocessament (tant amb l'execuci¨® fallida com amb l'¨¨xit dels passos de preprocessament), el valor preprocessat s'afegeix a la cua de tasques acabades i el gestor rep una notificaci¨® sobre una nova tasca acabada.
    • El gestor de preprocessament converteix el resultat al format desitjat (definit pel tipus de valor d'element) i l'afegeix a la mem¨°ria cau de l'historial o l'envia al gestor de LLD.
    • Si hi ha elements dependents per a l'element processat, els elements dependents s'afegeixen a la cua de preprocessament amb el valor de l'element principal preprocessat. Els elements dependents es posen a la cua sense passar per alt les sol¡¤licituds de preprocessament del valor normal, per¨° nom¨¦s per als elements mestres amb el valor establert i no en un estat NO SUPORTAT.

Tingueu en compte que al diagrama el preprocessament de l'element principal es simplifica lleugerament si omet la mem¨°ria cau del preprocessament.

Cua de preprocessament

La cua de preprocessament s'organitza com:

  • llista de tasques pendents:
    • tasques creades directament a partir de peticions de preprocessament de valors en l'ordre en qu¨¨ es van rebre.
  • llista de tasques immediates (processades abans de les tasques pendents):
    • tasques de prova (creades com a resposta a les peticions de prova d'elements/preprocessament per part del frontend)
    • tasques d'elements dependents
    • tasques de seq¨¹¨¨ncia (tasques que s'han d'executar en un ordre estricte):
      • tenir passos de preprocessament emprant el darrer valor:
        • canviar
        • estrangulament
        • JavaScript (emmagatzematge en mem¨°ria cau de bytecode)
      • mem¨°ria cau del preprocessament d'elements dependents
  • la llista de tasques acabades

Preprocessament de la mem¨°ria cau

La mem¨°ria cau del preprocessament es va introduir per millorar el rendiment del preprocessament per a diversos elements dependents amb passes de preprocessament similars (que ¨¦s un resultat com¨² de LLD).

La mem¨°ria cau es fa preprocessant un element dependent i reutilitzant algunes de les dades de preprocessament intern per a la resta d'elements dependents. La mem¨°ria cau de preprocessament nom¨¦s s'admet a la primera passa de preprocessament dels tipus seg¨¹ents:

  • Patr¨® Prometheus (¨ªndexs introdu?ts per m¨¨triques)
  • JSONPath (analitza les dades a l'arbre d'objectes i indexa la primera expressi¨® [?(@.path == "valor")])

Processos de treball de preprocessament

El fitxer de configuraci¨® del servidor Áú»¢¶Ä²© permet als usuaris establir el nombre de processos de treball de preprocessament. El par¨¤metre de configuraci¨® StartPreprocessors s'ha d'emprar per establir el nombre d'inst¨¤ncies pre-bifurcades dels processos de treball de preprocessament, que com a m¨ªnim ha de tindre el nombre de nuclis de CPU disponibles.

Si les tasques de preprocessament no s¨®n pas vinculades a la CPU i impliquen peticions freq¨¹ents de xarxa, es recomana configurar treballadors addicionals. El nombre ¨°ptim de processos de treball de preprocessament es pot determinar per molts factors, incl¨°s el nombre d'elements "preprocessables" (elements que requereixen que es facin passes de preprocessament), el nombre de processos de recollida de dades, el nombre mitj¨¤ de passes per al preprocessament d'elements, etc. Un nombre insuficient de processos de treball pot provocar un ¨²s elevat de mem¨°ria. Per resoldre problemes d'¨²s excessiu de mem¨°ria a la instal¡¤laci¨® de Áú»¢¶Ä²©, consulteu Perfil de l'¨²s excessiu de mem¨°ria amb tcmalloc.

Per¨° suposant que no hi hagi operacions de preprocessament pesades com ara l'an¨¤lisi de grans blocs XML/JSON, el nombre de processos de treball de preprocessament pot coincidir amb el nombre total de recopiladors de dades. D'aquesta manera hi haur¨¤ la majoria de les vegades (excepte en els casos en qu¨¨ les dades del col¡¤lector arriben mica en mica) almenys un preprocessador inactiu per a les dades recollides.

Massa processos de recollida de dades (enquestadors, enquestadors d'inaccessibilitat, enquestadors ODBC, enquestadors HTTP, pollers Java, pingers, trappers, proxypollers) associats amb el gestor IPMI, el trapper SNMP i els agents de preprocessament poden esgotar el l¨ªmit de descriptors de fitxer per proc¨¦s per al gestor de preprocessament.

Esgotar el l¨ªmit del descriptor de fitxers per proc¨¦s far¨¤ que el servidor Áú»¢¶Ä²© s'aturi, normalment poc despr¨¦s de l'inici, per¨° de vegades triga m¨¦s. Per evitar aquests problemes, reviseu el fitxer de configuraci¨® del servidor Áú»¢¶Ä²© per optimitzar el nombre de comprovacions i processos concurrents. A m¨¦s, si cal, assegureu-vos que el l¨ªmit del descriptor de fitxer s'estableixi prou alt verificant i ajustant els l¨ªmits del sistema.

Pipeline del processament del valor

El processament del valor de l'article es fa en m¨²ltiples passos (o fases) mitjan?ant diversos processos. Aix¨° pot dur a:

  • L'element dependent pot rebre valors, a difer¨¨ncia del valor principal. Aix¨° es pot aconseguir emprant el seg¨¹ent cas d'¨²s:
    • L'element principal t¨¦ el tipus de valor UINT (es pot emprar l'element trapper), l'element dependent t¨¦ el tipus de valor TEXT.
    • No es requereix cap passa de preprocessament per als elements principals i dependents.
    • El valor de text (com "abc") s'ha de passar a l'element principal.
    • Com que no hi ha passes de preprocessament per executar, el controlador de preprocessament comprova si l'element principal no es troba en l'estat NO ADM?S i si el valor ¨¦s establert (tots dos s¨®n certs) posa en cua l'element dependent amb el mateix valor que l'element principal (perqu¨¨ no hi ha cap passa de preprocessament).
    • Quan els elements primaris i dependents arriben a la fase de sincronitzaci¨® de l'historial, l'element principal passa a NO ADM?S, a causa de l'error de conversi¨® de valors (les dades de text no es poden convertir a un nombre enter sense signe).

Per tant, l'element dependent rep un valor, mentre que l'element principal canvia el seu estat a NO ADM?S.

  • L'element dependent rep un valor que no ¨¦s present a l'hist¨°ric de l'element principal. El cas d'¨²s ¨¦s molt semblant a l'anterior, excepte pel tipus d'element principal. Per exemple, si s'empra el tipus CHAR per a l'element principal, el valor de l'element principal es truncar¨¤ durant la fase de sincronitzaci¨® de l'historial, mentre que els elements dependents rebran el seu valor del valor inicial (no truncat) de l'element principal.