2 Детаљи претходне обраде

Преглед

Овај одељак пружа детаље о вредности предобраде корака ставке. Предобрада вредности ставке омогућава да се дефинишу и изврше правила трансформације за примљене вредности ставкe.

Предобрада управља процес менаџера за претходну обраду заједно са радницима за предобрадy који обављају кораке претходне обраде. Све вредности (са или без претходне обраде) од различитих сакупљача података пролазе кроз менаџер за предобраду пре него што се додају у кеш историје. IPC комуникација заснована на сокету се користи између сакупљача података (полери, трапери, итд.) и процеса предобраде. Или Zabbix сервер или Zabbix прокси (за ставке које надгледа проки) обављају кораке предобраде.

Обрада вредности ставке

Да бисмо визуелизовали ток података од извора података до Zabbix базе података, можемо користити следећи поједностављени дијаграм:

Горњи дијаграм приказује само процесе, објекте и радње које се односе на обраду вредности ставке у поједностављеном облику. Дијаграм не приказује условне промене правца, руковање грешкама или петље. Локални кеш података менаџера за претходну обраду такође није приказан јер не утиче директно на ток података. Циљ овог дијаграма је да прикаже процесе који су укључени у обраду вредности ставке и начин на који они међусобно делују.

  • Прикупљање података почиње са сировим подацима из извора података. У овом тренутку, подаци садрже само ID, временску ознаку и вредност (могу бити и више вредности).
  • Без обзира на то који се тип сакупљача података користи, идеја је иста за активне или пасивне провере, за ставке ловца итд. само мења формат података и покретач комуникације (или сакупљач података чека на везу и податке, или прикупљање података покреће комуникацију и захтева податке). Необрађени подаци се потврђују, конфигурација ставке се преузима из кеша конфигурације (подаци су обогаћени конфигурационим подацима).
  • IPC механизам заснован на утичници се користи за прослеђивање података од сакупљача података до менаџера за претходну обраду. У овом тренутку сакупљач података наставља са прикупљањем података без чекања на одговор од препроцессингманагер-а.
  • Извршава се претходна обрада података. Ово укључује извршење корака претходне обраде и зависну обраду ставке.

Ставка може променити своје стање у НИЈЕ ПОДРЖАН док се претпроцесирање обавља ако било који од корака претходне обраде не успе.

  • Подаци историје из локалне кеш меморије података менаџера за претходну обраду се испушта у кеш историје.
  • У овом тренутку ток података се зауставља до следеће синхронизације кеша историје (када процес синхронизације историје врши синхронизацију података).
  • Процес синхронизације почиње нормализацијом података пре складиштења података Zabbix базе података. Нормализација података врши конверзије у жељени тип ставке (тип дефинисан у конфигурацији ставке), укључујући скраћивање текстуалних података на основу унапред дефинисаних величина дозвољених за те типове (HISTORY_STR_VALUE_LEN за стринг,HISTORY_TEXT_VALUE_LEN for text and HISTORY_LOG_VALUE_LEN за вредност дневника). Подаци се шаљу у Zabbix базу података након што се нормализација изврши.

Ставка може променити своје стање у НИЈЕ ПОДРЖАН ако нормализација података не успе (на пример, када текстуална вредност не може да се конвертује у број).

  • Прикупљени подаци се обрађују - окидачи се проверавају, конфигурација ставке се ажурира ако ставка постане НИЈЕ ПОДРЖАНА, итд.
  • Ово се сматра крајем података ток са становишта обраде вредности предмета.

Предобрада вредности ставке

Претходна обрада података се изводи у следећим корацима:

  • Вредност ставке се прослеђује менаџеру за претходну обраду користећи IPC механизам заснован на UNIX сокету.
  • Ако ставка нема ни претходну обраду ни зависне ставке, њена вредност се или додаје у кеш историје или шаље менаџеру LLD. У супротном:
  • Задатак за претходну обраду се креира и додаје у ред чекања и радници за претходну обраду бивају обавештени о новом задатку.
  • У овом тренутку ток података се зауставља све док не буде најмање један незаузет (тј. не извршава ниједан задатак) радник за претходну обраду.
  • Када је радник за претходну обраду доступан, он преузима следећи задатак из реда.
  • Након што се предобрада заврши (и неуспешно и успешно извршење корака претходне обраде), претходно обрађена вредност се додаје у ред завршених задатака и менаџер се обавештава о новом завршеном задатку.
  • Менаџер за претходну обраду конвертује резултат у жељени формат (дефинисан типом вредности ставке) и или га додаје у кеш историје или шаље LLD менаџеру.
  • Ако постоје зависне ставке за обрађену ставку, тада се зависне ставке додају у ред за претходну обраду са претходно обрађеном вредношћу главне ставке. Зависне ставке се стављају у ред заобилазећи захтеве за претходну обраду нормалне вредности, али само за главне ставке са постављеном вредношћу, а не у стању НИЈЕ ПОДРЖАН.

Имајте на уму да је на дијаграму претходна обрада главне ставке мало поједностављена прескакањем претходне обраде кеширање.

Ред за претходну обраду

Ред за претходну обраду је организован као:

  • листа задатака на чекању:
    • задаци креирани директно из захтева за претходну обраду вредности по редоследу којим су примљени
  • листа непосредних задатака (обрађених пре задатака на чекању):
    • задаци за тестирање (креирани као одговор на ставку /претходна обрада захтева за тестирање од стране фронтенда)
    • задаци зависне ставке
    • задаци низа (задаци који се морају извршити у строгом редослед):
    • са корацима за претходну обраду користећи последњу вредност:
    • промена
    • пригушивање
    • JavaScript (кеширање бајткода)
    • кеширање зависне ставке за претходну обраду
    • листа завршених задатака

Кеширање предпроцесирања

Кеширање предпроцесирања је уведено да би се побољшале перформансе препроцесирања за више зависних ставки које имају сличне кораке препроцесирања (што је уобичајен LLD исход).

Кеширање се врши претходном обрадом једне зависне ставке и поновним коришћењем неких интерних података за претпроцесирање за остале зависне ставке. Кеш за претходну обраду је подржан само за први корак претходне обраде следећих типова:

  • Прометејев образац (индексира унос помоћу метрике)
  • JSONPath (рашчлањава податке у стабло објеката и индексира први израз [?(@.path == "value) ")])

Радни процеси за предобраду

Конфигурациона датотека Zabbix сервера омогућава корисницима да подесе број нити радних процеса за предобраду. StartPreprocessors конфигурациони параметар треба да се користи за подешавање броја унапред покренутих инстанци предобрада радних процеса, који би требало да одговарају најмање броју доступних CPU језгара.

Ако задаци предобраде нису везани за CPU и укључују честе мрежне захтеве, препоручује се конфигурисање додатних радних процеса. Оптималан број радних процеса предобраде може се одредити на основу многих фактора, укључујући број "претходно обрадивих" ставки (ставки које захтевају да се изврше било који корак предобраде), број процеса прикупљања података, просечан број корака за претходну обраду ставке, итд. Недовољан број радних процеса може довести до велике употребе меморије. За решавање проблема прекомерне употребе меморије на вашој Zabbix инсталацији, погледајте Профилисање прекомерне употребе меморије помоћу tcmalloc-а.

Aли под претпоставком да не постоје захтевне операције пре обраде као што је парсирање великих XML/JSON датотека, број претпроцесорских радних процеса може одговарати укупном броју процеса за прикупљање података. На овај начин ће углавном (осим у случајевима када подаци са сакупљача долазе у великим серијама) бити најмање један слободан слободан претпроцесорски радни процес за обраду прикупљених података.

Превише процеса прикупљања података (полери, недоступни полери, ODBC полери, HTTP полери, Java полери, пингери, трапери, proxy полери) заједно са IPMI менаџером, SNMP трапером и претпроцесорским радним процесима могу да исцрпе ограничење дескриптора датотеке по процесу за менаџера за предобраду.

Исцрпљивање ограничења дескриптора датотеке по процесу ће довести до заустављања Zabbix сервера, обично убрзо након покретања, али понекад траје дуже. Да бисте избегли такве проблеме , прегледајте Zabbix конфигурациону датотеку сервера да бисте оптимизовали број истовремених провера и процеса. Додатно, ако је потребно, уверите се да је ограничење дескриптора датотека постављено довољно високо провером и подешавањем системских ограничења.

Процесна линија за обраду вредности

Обрада вредности ставке се извршава у више корака (или фаза) вишеструким процесима. Ово може проузроковати:

  • Зависна ставка може да прими вредности, док главна вредност не може. Ово се може постићи коришћењем следећег случаја употребе:
  • Главна ставка има тип вредности UINT (може се користити ставка трапера), зависна ставка има вредност укуцајте TEXT.
  • Нису потребни кораци за претходну обраду и за главне и за зависне ставке.
  • Текстуална вредност (на пример, "абц") треба да се проследи главној ставци.
  • Пошто нема корака претходне обраде да би извршио, менаџер препроцесирања проверава да ли главна ставка није у стању НИЈЕ ПОДРЖАНА и да ли је вредност постављена (обе су тачне) и ставља у ред зависне ставке са истом вредношћу као и главна ставка (пошто нема корака претходне обраде).
  • Када и главна и зависна ставка достигну синхронизацију историје фаза, главна ставка постаје НИЈЕ ПОДРЖАНА због грешке конверзије вредности (текстуални подаци се не могу конвертовати у непотписане цео број).

Као резултат, зависна ставка прима вредност, док главна ставка мења своје стање у НИЈЕ ПОДРЖАН.

  • Зависна ставка прима вредност која није присутна у историји главне ставке. Случај употребе је веома сличан претходном, осим типа главне ставке. На пример, ако се тип CHAR користи за главну ставку, тада ће вредност главне ставке бити скраћена у фази синхронизације историје, док ће зависне ставке добити своје вредности од почетне (не скраћене) вредности главне ставке.