DIY: hvernig við gerum sjálfvirkan vöruhúsaeftirlit

X5 hefur umsjón með 43 dreifingarstöðvum og 4 eigin vörubílum, sem tryggir óslitið framboð á vörum til 029 verslana. Í greininni mun ég deila reynslu minni af því að búa til gagnvirkt vöruhúsatburðaeftirlitskerfi frá grunni. Upplýsingarnar munu nýtast flutningsmönnum viðskiptafyrirtækja með nokkra tugi dreifingarmiðstöðva sem halda utan um fjölbreytt vöruúrval.

DIY: hvernig við gerum sjálfvirkan vöruhúsaeftirlit

Uppbygging kerfa til að fylgjast með og stjórna viðskiptaferlum hefst að jafnaði með úrvinnslu skilaboða og atvika. Þetta missir af mikilvægu tæknilegu atriði sem tengist möguleikanum á því að gera sjálfvirka staðreyndina um atburði viðskiptaviðburða og skrá atvik. Flest viðskiptakerfi WMS, TMS o.s.frv. eru með innbyggð verkfæri til að fylgjast með eigin ferlum. En ef þetta eru kerfi frá mismunandi framleiðendum eða vöktunarvirknin er ekki nægilega þróuð, verður þú að panta dýrar endurbætur eða fá sérhæfða ráðgjafa til að fá frekari stillingar.

Við skulum íhuga nálgun þar sem við þurfum aðeins lítinn hluta af ráðgjöf sem tengist skilgreiningu á heimildum (töflum) til að fá vísbendingar úr kerfinu.

Sérstaða vöruhúsa okkar liggur í þeirri staðreynd að nokkur vöruhúsastjórnunarkerfi (WMS Exceed) starfa á einni flutningasamstæðu. Vöruhús eru skipt eftir flokkum geymslu á vörum (þurrt, áfengi, frystingu, osfrv.) ekki aðeins rökrétt. Innan einnar flutningasamstæðu eru nokkrar aðskildar vöruhúsabyggingar, aðgerðum á hverri þeirra er stjórnað af eigin WMS.

DIY: hvernig við gerum sjálfvirkan vöruhúsaeftirlit

Til að mynda almenna mynd af ferlunum sem eiga sér stað í vöruhúsinu, greina stjórnendur nokkrum sinnum á dag skýrslur hvers WMS, vinna úr skilaboðum rekstraraðila vöruhússins (móttakara, tínslumanna, staflara) og draga saman raunverulega rekstrarvísa til umhugsunar um upplýsingatöflu.

Til að spara tíma fyrir stjórnendur ákváðum við að þróa ódýrt kerfi fyrir rekstrarstýringu vöruhúsatburða. Nýja kerfið, auk þess að sýna „heita“ vísbendingar um rekstrarvinnu vöruhúsaferla, ætti einnig að hjálpa stjórnendum við að laga atvik og fylgjast með framkvæmd verkefna til að útrýma þeim orsökum sem hafa áhrif á tilgreinda vísbendingar. Eftir að hafa gert almenna úttekt á upplýsingatækniarkitektúr fyrirtækisins komumst við að því að ákveðnir hlutar tilskilins kerfis eru nú þegar til í landslaginu okkar á einn eða annan hátt og fyrir þá er bæði skoðun á stillingum og nauðsynleg stoðþjónusta. Það er aðeins eftir að koma heildarhugmyndinni í eina byggingarlausn og meta umfang þróunarinnar.

Eftir að hafa lagt mat á þá vinnu sem þarf til að byggja upp nýtt kerfi var ákveðið að skipta verkefninu í nokkra áfanga:

  1. Söfnun vísa fyrir vöruhúsaferli, sjónræn og eftirlit með vísum og frávikum
  2. Sjálfvirkni í ferlireglugerð og skráning beiðna í viðskiptaþjónustu vegna frávika
  3. Fyrirbyggjandi eftirlit með álagsspá og ráðleggingar til stjórnenda.

Á fyrsta stigi verður kerfið að safna tilbúnum sneiðum af rekstrargögnum frá öllum WMS samstæðunnar. Lestur fer fram nánast í rauntíma (minna millibili en 5 mínútur). Galdurinn er sá að gögn verða að fást úr DBMS nokkurra tuga vöruhúsa þegar kerfið er dreift á allt netið. Móttekin rekstrargögn eru unnin með rökfræði kerfiskjarna til að reikna frávik frá fyrirhuguðum vísbendingum og reikna út tölfræði. Gögnin sem unnin eru á þennan hátt verða að birtast á spjaldtölvu stjórnanda eða á upplýsingatöflu vöruhússins í formi skiljanlegra grafa og skýringarmynda.

DIY: hvernig við gerum sjálfvirkan vöruhúsaeftirlit

Þegar valið var afbrigði af hentugri kerfi fyrir tilraunaútfærslu fyrsta áfanga, settumst við á Zabbix. Þetta kerfi er nú þegar notað til að fylgjast með upplýsingatækniframmistöðu vöruhúsakerfa. Með því að bæta við sérstakri uppsetningu til að safna viðskiptamælingum vöruhúsa geturðu fengið heildarmynd af heilsu vöruhússins.

Almennur arkitektúr kerfisins reyndist eins og á myndinni.

DIY: hvernig við gerum sjálfvirkan vöruhúsaeftirlit

Hvert WMS tilvik er skilgreint sem gestgjafi fyrir eftirlitskerfið. Mælingum er safnað af miðlægum miðlara í netkerfi gagnavera með því að keyra skriftu með tilbúinni SQL fyrirspurn. Ef þú þarft að fylgjast með kerfi sem mælir ekki með beinum aðgangi að gagnagrunninum (til dæmis SAP EWM) geturðu notað skriftuköll í skjalfest API aðgerðir til að fá vísbendingar eða skrifað einfalt python/vbascript forrit.

Zabbix proxy-tilvik er sett á vöruhúsanetið til að dreifa álaginu frá aðalþjóninum. Proxy veitir vinnu með öllum staðbundnum tilfellum af WMS. Þegar Zabbix þjónninn biður næst um færibreytur er handrit keyrt á hýsilinn með Zabbix proxy til að biðja um mælikvarða úr WMS gagnagrunninum.

Til að birta línurit og vöruhúsavísa á miðlæga Zabbix netþjóninum skaltu nota Grafana. Auk þess að birta tilbúin mælaborð með upplýsingamyndum um vöruhúsrekstur, verður Grafana notað til að stjórna frávikum í vísum og flytja sjálfvirkar viðvaranir í vöruhúsaþjónustukerfið til að vinna með viðskiptaatvik.

Sem dæmi skulum við íhuga framkvæmd hleðslustjórnunar á móttökusvæði vöruhússins. Eftirfarandi var valið sem helstu vísbendingar um ferlana í þessum hluta vöruhússins:

  • fjöldi ökutækja á móttökusvæðinu, að teknu tilliti til stöðunnar (fyrirhugað, komið, skjöl, affermingu, brottför;
  • vinnuálag á gistingu og áfyllingarsvæðum (eftir geymsluaðstæðum).

Stillingar

Uppsetningu og stillingu á helstu íhlutum kerfisins (SQLcl, Zabbix, Grafana) er lýst í ýmsum heimildum og við munum ekki endurtaka það hér. Notkun SQLcl í stað SQLplus er vegna þess að SQLcl (Oracle DBMS skipanalínuviðmót skrifað í java) krefst ekki viðbótar Oracle Client uppsetningar og virkar út úr kassanum.

Ég mun lýsa helstu atriðum sem þú ættir að borga eftirtekt til þegar þú notar Zabbix til að fylgjast með vöruhúsaviðskiptaferlum og einni af mögulegum leiðum til að innleiða þá. Einnig snýst þessi færsla ekki um öryggi. Öryggi tenginga og notkun framkominna aðferða þarfnast frekari útfærslu í því ferli að flytja tilraunalausnina yfir í afkastamikinn rekstur.

Aðalatriðið er að við innleiðingu slíks kerfis er hægt að gera án forritunar með því að nota stillingarnar sem kerfið gefur upp.

Zabbix eftirlitskerfið býður upp á nokkra möguleika til að safna vöktuðum kerfismælingum. Þetta er hægt að gera annaðhvort með því að skoða beint stjórnaða gestgjafa, eða með fullkomnari aðferð til að senda gögn til netþjónsins í gegnum zabbix_sender hýsilsins, þar á meðal aðferðir til að stilla lágstigs uppgötvunarfæribreytur. Til að leysa vandamál okkar er aðferðin við beina skoðanakönnun á gestgjöfum af miðlara þjóninum alveg hentug, vegna þess að þetta gerir þér kleift að hafa fulla stjórn á röð mælinga og tryggir notkun á einum pakka af stillingum / forskriftum án þess að þurfa að dreifa þeim til hvers stjórnaðs gestgjafa.

Sem "naggvín" til að kemba og stilla kerfið notum við WMS vinnublöð til að stjórna samþykki:

  1. Ökutæki við móttöku, öll sem eru komin: Öll ökutæki með stöðu fyrir tímabilið "- 72 klukkustundir frá núverandi tíma" - auðkenni SQL fyrirspurnarinnar: fá bíla.
  2. Saga um allar stöður ökutækja: Staða allra ökutækja með komu innan 72 klukkustunda — SQL fyrirspurnarauðkenni: bíla Saga.
  3. Áætluð ökutæki til samþykkis: Staða allra ökutækja með komu í stöðunni „Áætlun“, tímabil „- 24 klst“ og „+24 klst“ frá núverandi tíma - SQL fyrirspurnarauðkenni: bílarÍ.

Svo, eftir að við höfum ákveðið sett af mæligildum fyrir vöruhúsarekstur, munum við undirbúa SQL fyrirspurnir fyrir WMS gagnagrunninn. Til að framkvæma fyrirspurnir er æskilegt að nota ekki aðalgagnagrunninn heldur „heitt“ afrit hans - biðstöðu.

Tengist við biðstöðu Oracle DBMS til að fá gögn. IP tölu til að tengjast prófunargagnagrunninum 192.168.1.106. Tengibreyturnar eru vistaðar á Zabbix þjóninum í TNSNames.ORA í SQLcl vinnumöppunni:

# cat  /opt/sqlcl/bin/TNSNames.ORA
WH1_1=
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.106)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME =  WH1_1)
    )
  )

Þetta gerir okkur kleift að keyra SQL fyrirspurnir á hvern gestgjafa í gegnum EZconnect, tilgreina aðeins innskráningu/lykilorð og nafn gagnagrunnsins:

# sql znew/Zabmon1@WH1_1

Undirbúnar SQL fyrirspurnir eru vistaðar í vinnumöppunni á Zabbix þjóninum:

/etc/zabbix/sql

og leyfa aðgang að zabbix notanda þjónsins okkar:

# chown zabbix:zabbix -R /etc/zabbix/sql

Beiðniskrár fá einstakt auðkennisnafn sem Zabbix þjónninn getur nálgast. Hver fyrirspurn í gagnagrunninn í gegnum SQLcl skilar okkur nokkrum breytum. Að teknu tilliti til sérstakra Zabbix, sem getur aðeins unnið úr einum mælikvarða í beiðni, munum við nota viðbótarforskriftir til að flokka fyrirspurnarniðurstöðurnar í aðskildar mæligildi.

Við erum að undirbúa aðalhandritið, við skulum kalla það wh_Metrics.sh, til að kalla SQL fyrirspurn í gagnagrunninn, vista niðurstöðurnar og skila tæknilegri mælingu með vísbendingum um árangur við að afla gagna:

#!/bin/sh 
## настройка окружения</i>
export ORACLE_HOME=/usr/lib/oracle/11.2/client64
export PATH=$PATH:$ORACLE_HOME/bin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib64:/usr/lib:$ORACLE_HOME/bin
export TNS_ADMIN=$ORACLE_HOME/network/admin
export JAVA_HOME=/
alias sql="opt/sqlcl/bin/sql"
## задаём путь к файлу с sql-запросом и параметризованное имя файла
scriptLocation=/etc/zabbix/sql
sqlFile=$scriptLocation/sqlScript_"$2".sql
## задаём путь к файлу для хранения результатов
resultFile=/etc/zabbix/sql/mon_"$1"_main.log
## настраиваем строку подключения к БД
username="$3"
password="$4"
tnsname="$1"
## запрашиваем результат из БД
var=$(sql -s $username/$password@$tnsname < $sqlFile)
## форматируем результат запроса и записываем в файл
echo $var | cut -f5-18 -d " " > $resultFile
## проверяем наличие ошибок
if grep -q ora "$resultFile"; then
    echo null > $resultFile
    echo 0
else
    echo 1
fi

Við setjum fullunna skrá með handritinu í möppuna til að setja ytri forskriftir í samræmi við Zabbix-proxy stillingar (sjálfgefið - /usr/local/share/zabbix/externalscripts).

Auðkenning gagnagrunnsins sem forskriftin mun fá niðurstöður úr verður send sem handritsbreytu. Gagnagrunnsauðkennið verður að passa við stillingarstrenginn í TNSNames.ORA skránni.

Niðurstaða SQL fyrirspurnarkallsins er geymd í útsýnisskránni mon_base_id_main.log þar sem base_id = gagnagrunnsauðkenni móttekið sem skriftubreytu. Aðskilnaður niðurstöðuskrárinnar með auðkenni gagnagrunns er veittur þegar um er að ræða beiðnir frá þjóninum samtímis í nokkra gagnagrunna. Fyrirspurnin skilar flokkuðu tvívíddar fylki gilda.

Eftirfarandi forskrift, við skulum kalla það getMetrica.sh, þarf til að fá tiltekið mæligildi úr skrá með fyrirspurnarniðurstöðu:

#!/bin/sh 
## определяем имя файла с результатом запроса
resultFile=/etc/zabbix/sql/mon_”$1”_main.log
## разбираем массив значений результата средствами скрипта:
## при работе со статусами, запрос возвращает нам двумерный массив (RSLT) в виде 
## {статус1 значение1 статус2 значение2…} разделённых пробелами (значение IFS)
## параметром запроса передаём код статуса и скрипт вернёт значение
IFS=’ ‘
str=$(cat $resultFile)
status_id=null
read –ra RSLT <<< “$str”
for i in “${RSLT[@]}”; do
if [[ “$status_id” == null ]]; then
status_id=”$I"
elif [[ “$status_id” == “$2” ]]; then
echo “$i”
break
else
status_id=null
fi
done

Nú erum við tilbúin að setja upp Zabbix og byrja að fylgjast með vísbendingum um móttökuferli vöruhússins.

Hver gagnagrunnshnút hefur Zabbix umboðsmann uppsettan og stilltan.

Á aðalþjóninum skilgreinum við alla netþjóna með Zabbix proxy. Fyrir stillingar, farðu á eftirfarandi slóð:

Stjórnun → Umboð → Búa til umboð

DIY: hvernig við gerum sjálfvirkan vöruhúsaeftirlit

Skilgreindu stjórnaða gestgjafa:

Uppsetning → Gestgjafar → Búa til gestgjafa

DIY: hvernig við gerum sjálfvirkan vöruhúsaeftirlit

Hýsilnafnið verður að passa við hýsilnafnið sem tilgreint er í stillingarskrá umboðsmannsins.

Tilgreindu hópinn fyrir hnútinn, svo og IP tölu eða DNS nafn hnútsins úr gagnagrunninum.

Búðu til mælikvarða og tilgreindu eiginleika þeirra:

Stillingar → Hnútar → 'hostname' → Hlutir>Búa til hlut

1) Búðu til aðalmælingu til að spyrjast fyrir um allar færibreytur úr gagnagrunninum

DIY: hvernig við gerum sjálfvirkan vöruhúsaeftirlit

Stilltu nafn gagnaeiningarinnar, tilgreindu tegundina „Ytri athugun“. Í reitnum „Lykill“ skilgreinum við handrit sem við sendum nafn Oracle gagnagrunnsins, nafn sql fyrirspurnarinnar, innskráningu og lykilorð til að tengjast gagnagrunninum sem færibreytur. Stilltu uppfærslutímabil fyrirspurnarinnar á 5 mínútur (300 sekúndur).

2) Búðu til aðra mælikvarða fyrir hverja stöðu ökutækis. Gildi þessara mælikvarða verða mynduð á grundvelli niðurstöðu þess að athuga aðalmælinguna.

DIY: hvernig við gerum sjálfvirkan vöruhúsaeftirlit

Stilltu nafn gagnaeiningarinnar, tilgreindu tegundina „Ytri athugun“. Í reitnum „Lykill“ skilgreinum við handrit sem við sendum nafn Oracle gagnagrunnsins og stöðukóðann, gildið sem við viljum fylgjast með, sem færibreytur. Við stillum uppfærslubil fyrirspurnarinnar á 10 sekúndur meira en aðalmælingin (310 sekúndur) svo að niðurstöðurnar hafi tíma til að skrifa í skrána.

Til að fá mælikvarðana rétt er mikilvægt í hvaða röð athuganir eru virkjaðar. Til að koma í veg fyrir árekstra við móttöku gagna virkjum við fyrst og fremst aðalmælinguna GetCarsByStatus með handritskalli - wh_Metrics.sh.

Stillingar → Hnútar → 'hnútsheiti' → Hlutir → Undirsía „Ytri athuganir“. Við merkjum nauðsynlega ávísun og smellum á „Virkja“.

DIY: hvernig við gerum sjálfvirkan vöruhúsaeftirlit

Næst virkjum við mæligildin sem eftir eru í einni aðgerð og veljum þær allar saman:

DIY: hvernig við gerum sjálfvirkan vöruhúsaeftirlit

Nú hefur Zabbix hafið söfnun vöruhúsaviðskiptamælinga.

Í eftirfarandi greinum verður farið nánar yfir tengingu Grafana og myndun upplýsingamælaborða vöruhúsavinnu fyrir ýmsa notendaflokka. Einnig á grundvelli Grafana er innleitt eftirlit með frávikum í starfi vöruhússins og, allt eftir mörkum og tíðni frávika, skráningu atvika í þjónustumiðstöðvarkerfi vöruhúsastýringar í gegnum API eða einfalda sendingu tilkynninga til yfirmanns. með tölvupósti.

DIY: hvernig við gerum sjálfvirkan vöruhúsaeftirlit

Heimild: www.habr.com

Bæta við athugasemd