This is a translation of the original English documentation page. Help us make it better.

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

Преглед

Претходна обрада вам омогућава да примените трансформације на примљене вредности ставки пре него што их сачувате у базу података. Ове трансформације/кораке претходне обраде извршава Zabbix сервер или прокси (ако се ставке прате путем проксија).

Ова функција подржава различите случајеве употребе, као што су:

  • претварање бајтова у битове (нпр. множење вредности мрежног саобраћаја са "8");
  • израчунавање статистике по секунди за постепено повећање вредности;
  • примена регуларних израза за издвајање или модификовање вредности;
  • извршавање прилагођених скрипти на вредностима;
  • одбацивање непромењених вредности ради оптимизације складиштења базе података.

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

Ако корак претходне обраде не успе, ставка постаје неподржана. Ово се може избећи обрадом грешака Прилагођено при неуспеху (доступно за већину трансформација), што вам омогућава да одбаците вредности или подесите прилагођене вредности.

За ставке дневника, метаподаци дневника (без вредности) ће увек ресетовати стање ставке као неподржане, чинећи је поново подржаном. Ово се дешава чак и ако се почетна грешка догодила након пријема вредности дневника од агента.

Све вредности прослеђене претходној обради се иницијално третирају као стрингови. Конверзија у жељени тип вредности (као што је дефинисано у конфигурацији ставке) се врши на крају цевовода претходне обраде. Међутим, одређени кораци претходне обраде могу покренути раније конверзије, ако је потребно. За детаљне техничке информације, погледајте Детаљи претходне обраде.

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

Погледајте такође: Примери претходне обраде

Конфигурација

Кораци претходне обраде су дефинисани на картици Претходна обрада ставке конфигурација образац.

Кликните на Додај да бисте изабрали подржану трансформацију.

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

Supported transformations

All supported transformations are listed below. Click on the transformation name to see full details about it.

Name Description Type
Regular expression Match the value to the regular expression and replace with the required output. Text
Replace Find the search string and replace it with another (or nothing).
Trim Remove specified characters from the beginning and end of the value.
Right trim Remove specified characters from the end of the value.
Left trim Remove specified characters from the beginning of the value.
XML XPath Extract value or fragment from XML data using XPath functionality. Structured data
JSON Path Extract value or fragment from JSON data using JSONPath functionality.
CSV to JSON Convert CSV file data into JSON format.
XML to JSON Convert data in XML format to JSON.
SNMP walk value Extract value by the specified OID/MIB name and apply formatting options. SNMP
SNMP walk to JSON Convert SNMP values to JSON.
SNMP get value Apply formatting options to the SNMP get value.
Custom multiplier Multiply the value by the specified integer or floating-point value. Arithmetic
Simple change Calculate the difference between the current and previous value. Change
Change per second Calculate the value change (difference between the current and previous value) speed per second.
Boolean to decimal Convert the value from boolean format to decimal. Numeral systems
Octal to decimal Convert the value from octal format to decimal.
Hexadecimal to decimal Convert the value from hexadecimal format to decimal.
JavaScript Enter JavaScript code. Custom scripts
In range Define a range that a value should be in. Validation
Matches regular expression Specify a regular expression that a value must match.
Does not match regular expression Specify a regular expression that a value must not match.
Check for error in JSON Check for an application-level error message located at JSONPath.
Check for error in XML Check for an application-level error message located at XPath.
Check for error using a regular expression Check for an application-level error message using a regular expression.
Check for not supported value Check if there was an error in retrieving item value.
Discard unchanged Discard a value if it has not changed. Throttling
Discard unchanged with heartbeat Discard a value if it has not changed within the defined time period.
Prometheus pattern Use the following query to extract the required data from Prometheus metrics. Prometheus
Prometheus to JSON Convert the required Prometheus metrics to JSON.

Note that for Change and Throttling preprocessing steps, Zabbix has to remember the last value to calculate/compare the new value as required. These previous values are handled by the preprocessing manager. If Zabbix server or proxy is restarted or there is any change made to preprocessing steps, the last value of the corresponding item is reset, resulting in:

  • for Simple change, Change per second steps - the next value will be ignored because there is no previous value to calculate the change from;
  • for Discard unchanged, Discard unchanged with heartbeat steps - the next value will never be discarded, even if it should have been because of discarding rules.
Регуларни израз

Ускладите вредност са регуларним изразом и замените је потребним излазом.

Параметри:

  • шаблон - регуларни израз;
  • излаз - шаблон за форматирање излаза. Ескејп секвенца \N (где је N=1…9) замењује се N-том подударном групом. Ескејп секвенца \0 замењује се подударним текстом.

Коментари:

  • Неуспех у подударању са улазном вредношћу учиниће ставку неподржаном;
  • Регуларни израз подржава издвајање највише 10 снимљених група са секвенцом \N;
  • Ако означите поље за потврду Прилагођено при неуспеху, могуће је навести прилагођене опције за руковање грешкама: или одбацити вредност, подесити одређену вредност или подесити одређену поруку о грешци. У случају неуспешног корака претходне обраде, ставка неће постати неподржана ако је изабрана опција за одбацивање вредности или постављање одређене вредности.
  • Молимо погледајте одељак регуларни изрази за неке постојеће примере.
Замени

Пронађите стринг за претрагу и замените га другим (или ништа).

Параметри:

  • search string - стринг за проналажење и замену, разликује велика и мала слова (обавезно);
  • replacement - стринг којим ће се заменити стринг за претрагу. Низ за замену такође може бити празан што омогућава брисање стринга за претрагу када се пронађе.

Коментари:

  • Сва појављивања стринга за претрагу ће бити замењена;
  • Могуће је користити есцапе секвенце за тражење или замену прелома редова, враћања носиоца, табулатора и размака "\n \r \t \s"; обрнута коса црта се може избећи као "\\", а излазне секвенце се могу избећи као "\\n";
  • Бежање од линије паузе, повратак кочије, картице се аутоматски врши током откривања ниског нивоа.
Трим

Уклоните наведене знакове са почетка и краја вредности.

Десни трим

Уклоните наведене знакове са краја вредности.

Леви оквир

Уклоните наведене знакове са почетка вредности.

XML XPath

Извуците вредност или фрагмент из XML података користећи XPath функционалност.

Коментари:

  • Да би ова опција радила, Zabbix сервер (или Zabbix прокси) мора бити компајлиран са подршком за либкмл;
  • Простори имена нису подржани;
  • Ако означите поље за потврду Прилагођено при неуспеху, могуће је навести прилагођене опције за руковање грешкама: или да одбаците вредност, поставите одређену вредност или поставите одређену поруку о грешци. У случају неуспелог корака претходне обраде, ставка неће постати неподржана ако је изабрана опција за одбацивање вредности или постављање одређене вредности.

Примери:

number(/document/item/value) #will издвојити '10' из <document><item><value>10</value></item></document>
       number(/document/item/@attribute) #will издвојити '10' из  <document><item attribute="10"></item></document>/document/item #will издвојити '<item><value>10</value></item>' из <document><item><value>10</value></item></document>
JSON путања

Извуците вредност или фрагмент из JSON података помоћу JSONPath функционалност.

Ако означите поље за потврду Прилагођено при неуспеху, могуће је навести прилагођене опције за руковање грешкама: или да одбаците вредност, поставите одређену вредност или поставите одређену поруку о грешци. У случају неуспелог корака претходне обраде, ставка неће постати неподржана ако је изабрана опција за одбацивање вредности или постављање одређене вредности.

CSV у JSON

Конвертујте податке CSV датотеке у JSON формат.

За више информација погледајте: Претходна обрада CSV у JSON.

XML у JSON

Конвертујте податке у XML формату у JSON.

За више информација погледајте: Правила серијализације.

Ако означите поље за потврду Прилагођено при неуспеху, могуће је навести прилагођене опције за руковање грешкама: или да одбаците вредност, поставите одређену вредност или поставите одређену поруку о грешци. У случају неуспелог корака претходне обраде, ставка неће постати неподржана ако је изабрана опција за одбацивање вредности или постављање одређене вредности.

Вредност SNMP шетње

Издвоји вредност према наведеном OID/MIB имену и примени опције форматирања:

  • Unchanged - врати хексадецимални стринг као неекскапирани хексадецимални стринг (напомена да се и даље примењују савети за приказивање);
  • UTF-8 from hex-STRING - конвертуј хексадецимални стринг у UTF-8 стринг;
  • MAC from hex-STRING - потврди хексадецимални стринг као MAC адресу и врати исправан MAC адресни стринг (где су ' ' замењени са ':');
  • Integer from BITS - конвертуј првих 8 бајтова битовског стринга израженог као низ хексадецималних знакова (нпр. "1A 2B 3C 4D") у 64-битни неозначени цео број. У битовским стринговима дужим од 8 бајтова, наредни бајтови ће бити игнорисани.

Ако означите поље за потврду Прилагођено при неуспеху, могуће је навести прилагођене опције за руковање грешкама: или одбацивање вредности, постављање одређене вредности или постављање одређене поруке о грешци. У случају неуспелог корака претходне обраде, ставка неће постати неподржана ако је изабрана опција за одбацивање вредности или постављање одређене вредности.

SNMP хода до JSON

Конвертујте SNMP вредности у JSON.

Наведите име поља у JSON-у и одговарајућу SNMP OID путању. Вредности поља ће бити попуњене вредностима у наведеној SNMP OID путањи.

Коментари:

  • Доступне су сличне опције форматирања вредности као у кораку SNMP вредност хода;
    – Можете да користите овај корак претходне обраде за SNMP OID откривање;
  • Ако означите поље за потврду Прилагођено при неуспеху, могуће је навести прилагођене опције за руковање грешкама: или да одбаците вредност, поставите одређену вредност или поставите одређену поруку о грешци. У случају неуспелог корака претходне обраде, ставка неће постати неподржана ако је изабрана опција за одбацивање вредности или постављање одређене вредности.
SNMP вредност за добијање

Примените опције форматирања на SNMP вредност за добијање:

  • UTF-8 из Hex-STRING - конвертује hex-стринг у UTF-8 стринг;
  • MAC из Hex-STRING - валидира hex-стринг као MAC адресу и враћа исправан стринг MAC адресе (где су ' ' замењени са ':');
  • Цео број из BITS - конвертује првих 8 бајтова битовског стринга израженог као низ хексадецималних знакова (нпр., "1A 2B 3C 4D") у 64-битни неозначени цео број. У битовским стринговима дужим од 8 бајтова, наредни бајтови ће бити игнорисани.

Ако означите поље за потврду Прилагођено при неуспеху, могуће је одредити прилагођене опције за руковање грешкама: или одбацити вредност, подесити одређену вредност или подесити одређену поруку о грешци. У случају неуспешног корака претходне обраде, ставка неће постати неподржана ако је изабрана опција за одбацивање вредности или постављање одређене вредности.

Прилагођени множилац

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

Коментари:

  • Користите ову опцију да бисте конвертовали вредности примљене у KB, MBps итд. у B, Bps. У супротном, Zabbix не може правилно да подеси префиксе (K, M, G, итд.).
  • Имајте на уму да ако је тип информација ставке Нумерички (непотписан), долазне вредности са разломљеним делом ће бити скраћене (тј. '0,9' ће постати '0') пре него што се примени прилагођени множилац;
  • Ако користите прилагођени множилац или сачувате вредност као Промена у секунди за ставке са типом информација подешеним на Нумерички (непотписан) и резултујућа израчуната вредност је заправо број са покретним зарезом, израчуната вредност се и даље прихвата као исправна скраћивањем децималног дела и чувањем вредности као целог броја;
  • Подржано: научна нотација, на пример, 1e+70; кориснички макрои и LLD макрои; стрингови који садрже макрое, на пример, {#MACRO}e+10, {$MACRO1}e+{$MACRO2}. Макрои морају бити цео број или број са покретним зарезом.
  • Ако означите поље за потврду Прилагођено при неуспеху, могуће је навести прилагођене опције за руковање грешкама: или одбацивање вредности, постављање одређене вредности или постављање одређене поруке о грешци. У случају неуспелог корака претходне обраде, ставка неће постати неподржана ако је изабрана опција за одбацивање вредности или постављање одређене вредности.
Једноставна промена

Израчунајте разлику између тренутне и претходне вредности.

Коментари:

  • Овај корак може бити користан за мерење вредности која стално расте;
  • Процењује се као value-prev_value, где је value - тренутна вредност; prev_value - претходно примљена вредност;
  • Дозвољена је само једна операција промене по ставци ("Једноставна промена" или "Промена у секунди");
  • Ако је тренутна вредност мања од претходне вредности, Zabbix одбацује ту разлику (ништа не складишти) и чека другу вредност;
  • Ако означите поље за потврду Прилагођено при неуспеху, могуће је навести прилагођене опције за руковање грешкама: или да одбаците вредност, поставите одређену вредност или поставите одређену поруку о грешци. У случају неуспелог корака претходне обраде, ставка неће постати неподржана ако је изабрана опција за одбацивање вредности или постављање одређене вредности.
Промена у секунди

Израчунајте брзину промене вредности (разлике између тренутне и претходне вредности) у секунди.

Коментари:

  • Овај корак је користан за израчунавање брзине у секунди стално растуће вредности;
  • Пошто овај прорачун може произвести бројеве са покретним зарезом, препоручује се да подесите 'Тип информација' на Нумеричко (float), чак и ако су долазне сирове вредности цели бројеви. Ово је посебно релевантно за мале бројеве где је децимални део важан. Ако су вредности са покретним зарезом велике и могу прећи дужину поља 'float', у ком случају се цела вредност може изгубити, заправо се препоручује да се користи Нумеричко (без знака) и тако се скрати само децимални део.
  • Израчунава се као (value-prev_value)/(time-prev_time), где је вредност - тренутна вредност; prev_value - претходно примљена вредност; време - тренутна временска ознака; prev_time - временска ознака претходне вредности;
  • Дозвољена је само једна операција промене по ставци ("Једноставна промена" или "Промена по секунди");
  • Ако је тренутна вредност мања од претходне вредности, Zabbix одбацује ту разлику (не чува ништа) и чека другу вредност. Ово помаже у исправном раду са, на пример, преклапањем (препуњавањем) 32-битних SNMP бројача.
  • Ако означите поље за потврду Прилагођено при неуспеху, могуће је одредити прилагођене опције за руковање грешкама: или одбацити вредност, подесити одређену вредност или подесити одређену поруку о грешци. У случају неуспелог корака претходне обраде, ставка неће постати неподржана ако је изабрана опција за одбацивање вредности или постављање одређене вредности.
Логички у децимални

Претворите вредност из логичког формата у децимални.

Коментари:

  • Текстуални приказ се преводи у 0 или 1. Дакле, 'TRUE' се чува као 1, а 'FALSE' се чува као 0. Све вредности се подударају на начин без обзира на велика и мала слова. Тренутно препознате вредности су, за TRUE - true, t, yes, y, on, up, running, enabled, available, ok, master; за FALSE - false, f, no, n, off, down, unused, disabled, unavailable, err, slave. Поред тога, свака нумеричка вредност различита од нуле сматра се TRUE, а нула се сматра FALSE.
  • Ако означите поље за потврду Прилагођено при неуспеху, могуће је навести прилагођене опције за руковање грешкама: или да одбаците вредност, поставите одређену вредност или поставите одређену поруку о грешци. У случају неуспелог корака претходне обраде, ставка неће постати неподржана ако је изабрана опција за одбацивање вредности или постављање одређене вредности.
октално до децимално

Претворите вредност из окталног формата у децимални.

Ако означите поље за потврду Прилагођено при неуспеху, могуће је навести прилагођене опције за руковање грешкама: или да одбаците вредност, поставите одређену вредност или поставите одређену поруку о грешци. У случају неуспелог корака претходне обраде, ставка неће постати неподржана ако је изабрана опција за одбацивање вредности или постављање одређене вредности.

Хексадецимално у децимално

Претворите вредност из хексадецималног формата у децимални.

Ако означите поље за потврду Прилагођено при неуспеху, могуће је навести прилагођене опције за руковање грешкама: или да одбаците вредност, поставите одређену вредност или поставите одређену поруку о грешци. У случају неуспелог корака претходне обраде, ставка неће постати неподржана ако је изабрана опција за одбацивање вредности или постављање одређене вредности.

JavaScript

Унесите JavaScript код у модални едитор који се отвара кликом на поље параметра или на икону оловке поред њега.

Коментари:

У опсегу

Дефинишите опсег у коме вредност треба да буде тако што ћете навести минималне/максималне вредности (укључиво).

Коментари:

– Нумеричке вредности су прихваћене (укључујући било који број цифара, опциони децимални део и опциони експоненцијални део, негативне вредности);
- Минимална вредност треба да буде мања од максималне;
- Мора постојати најмање једна вредност;
- Могу се користити кориснички макрои и макрои за откривање ниског нивоа;
- Ако означите поље за потврду Прилагођено при неуспеху, могуће је навести прилагођене опције за руковање грешкама: или да одбаците вредност, поставите одређену вредност или поставите одређену поруку о грешци. У случају неуспелог корака претходне обраде, ставка неће постати неподржана ако је изабрана опција за одбацивање вредности или постављање одређене вредности.

Одговара регуларном изразу

Наведите регуларни израз са којим вредност мора да одговара.

Ако означите поље за потврду Прилагођено при неуспеху, могуће је навести прилагођене опције за руковање грешкама: или да одбаците вредност, поставите одређену вредност или поставите одређену поруку о грешци. У случају неуспелог корака предобраде, ставка неће постати неподржана ако је изабрана опција за одбацивање вредности или постављање одређене вредности.

Не подудара се са регуларним изразом

Наведите регуларни израз са којим вредност не сме да се подудара.

Ако означите поље за потврду Прилагођено при неуспеху, могуће је навести прилагођене опције за руковање грешкама: или да одбаците вредност, поставите одређену вредност или поставите одређену поруку о грешци. У случају неуспелог корака претходне обраде, ставка неће постати неподржана ако је изабрана опција за одбацивање вредности или постављање одређене вредности.

Проверите да ли постоји грешка у JSON-у

Проверите да ли се порука о грешци на нивоу апликације налази на JSONPath-у. Зауставите обраду ако је успела и порука није празна; у супротном, наставите са обрадом са вредношћу која је била пре овог корака претходне обраде.

Коментари:

  • Ове грешке екстерне услуге се пријављују кориснику какве јесу, без додавања информација о кораку претходне обраде;
  • Неће бити пријављена грешка у случају неуспеха да се рашчлани неважећи JSON;
  • Ако означите поље за потврду Прилагођено при неуспеху, могуће је навести прилагођене опције за руковање грешкама: или да одбаците вредност, поставите одређену вредност или поставите одређену поруку о грешци. У случају неуспелог корака претходне обраде, ставка неће постати неподржана ако је изабрана опција за одбацивање вредности или постављање одређене вредности.
Проверите да ли постоји грешка у XML-у

Проверите да ли се порука о грешци на нивоу апликације налази на XPath-у. Зауставите обраду ако је успела и порука није празна; у супротном, наставите са обрадом са вредношћу која је била пре овог корака претходне обраде.

Коментари:

  • Ове грешке екстерне услуге се пријављују кориснику какве јесу, без додавања информација о кораку претходне обраде;
  • Неће бити пријављена грешка у случају неуспеха у рашчлањивању неважећег XML-а;
  • Ако означите поље за потврду Прилагођено при неуспеху, могуће је навести прилагођене опције за руковање грешкама: или да одбаците вредност, поставите одређену вредност или поставите одређену поруку о грешци. У случају неуспелог корака претходне обраде, ставка неће постати неподржана ако је изабрана опција за одбацивање вредности или постављање одређене вредности.
Проверите да ли постоји грешка користећи регуларни израз

Проверите да ли постоји порука о грешци на нивоу апликације користећи регуларни израз. Зауставите обраду ако је успела и порука није празна; у супротном, наставите са обрадом са вредношћу која је била пре овог корака предобрадe.

Параметри:

  • pattern - регуларни израз;
  • output - шаблон за форматирање излаза. \N (где је N=1…9) излазна секвенца је замењена Н-том подударном групом. \0 излазна секвенца је замењена одговарајућим текстом.

Коментари:

  • Ове грешке екстерне услуге се пријављују кориснику какве јесу, без додавања информација о кораку претходне обраде;
  • Ако означите поље за потврду Прилагођено при неуспеху, могуће је навести прилагођене опције за руковање грешкама: или да одбаците вредност, поставите одређену вредност или поставите одређену поруку о грешци. У случају неуспелог корака претходне обраде, ставка неће постати неподржана ако је изабрана опција за одбацивање вредности или постављање одређене вредности.
Check for not supported value

Check if no item value could be retrieved. Specify how the failure should be processed, based on inspecting the returned error message.

Parameters:

  • scope - select the error processing scope:
    any error - any error;
    error matches - only the error that matches the regular expression specified in pattern;
    error does not match - only the error that does not match the regular expression specified in pattern
  • pattern - the regular expression to match the error to. If any error is selected in the scope parameter, this field is not displayed. If displayed, this field is mandatory.

Comments:

  • Normally the absence/failure to retrieve a value would lead to the item becoming unsupported. In this preprocessing step it is possible to modify this behavior by marking the Custom on fail option. The following custom error-handling options are available: Discard value, Set value to (the value can be used in triggers), or Set error to.
  • The item will remain supported if Discard value or Set value to is selected;
  • Capturing regular expression groups is supported in the Set value to or Set error to fields. An \N (where N=1…9) escape sequence is replaced with the Nth matched group. A \0 escape sequence is replaced with the matched text.
  • For this preprocessing step, the Custom on fail checkbox is grayed out and always marked;
  • These steps are always executed as the first preprocessing steps and are placed above all others after saving changes to the item.
  • Multiple Check for not supported value steps are supported, in the specified order. A step for any error will be automatically placed as the last step in this group.
Одбаци непромењено

Одбаците вредност ако се није променила.

Коментари:

  • Ако је вредност одбачена, она се не чува у бази података и Zabbix сервер нема сазнања да је ова вредност примљена. Изрази окидача неће бити процењени, као резултат тога, неће бити креирани/решени никакви проблеми за повезане окидаче. Функције ће радити само на основу података који су стварно сачувани у бази података. Пошто се трендови граде на основу података у бази података, ако нема сачуване вредности за сат времена, неће бити ни података о трендовима за тај сат.
  • Само једна опција пригушивања може бити наведена по ставци.
Одбаци непромењено са откуцајима срца

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

Коментари:

– Подржане су позитивне целобројне вредности за одређивање секунди (минимално – 1 секунда);
– Могу се користити временски суфикси (нпр. 30s, 1m, 2h, 1d);
- Могу се користити кориснички макрои и макрои за откривање ниског нивоа;
- Ако је вредност одбачена, она се не чува у бази података и Zabbix сервер нема сазнања да је ова вредност примљена. Изрази окидача неће бити процењени, као резултат тога, неће бити креирани/решени никакви проблеми за повезане окидаче. Функције ће радити само на основу података који су стварно сачувани у бази података. Пошто се трендови граде на основу података у бази података, ако нема сачуване вредности за сат времена, неће бити ни података о трендовима за тај сат.
- Само једна опција пригушења може бити наведена по ставци.

Прометејев образац

Користите следећи упит да бисте издвојили потребне податке из Prometheus метрике.

Погледајте Prometheus провере за више детаља.

Прометеј у JSON

Претворите потребне Prometheus метрике у JSON.

Погледајте Prometheus провере за више детаља.

Макро подршка

Кориснички макрои и кориснички макрои са контекст су подржани у:

  • параметри корака предобраде, укључујући JavaScript код;
  • прилагођени параметри за руковање грешкама (Постави вредност на и Постави грешку на поља).

Контекст макроа се игнорише када се макро замени његовом вредношћу. Вредност макроа је уметнута у код каква јесте, није је могуће додати додатно избегавање пре постављања вредности у JavaScript код. Имајте на уму да то у неким случајевима може изазвати грешке у JavaScript-у.

Тестирање

Погледајте тестирање претпроцесирања.