Brikolajea: nola automatizatzen dugun biltegiaren jarraipena

X5-ek 43 banaketa-zentro eta bere kamioietako 4 funtzionatzen ditu, 029 dendaren etenik gabeko produktuen hornidura bermatuz. Artikulu honetan nire esperientzia partekatuko dut biltegiko gertaerak hutsetik kontrolatzeko sistema interaktibo bat sortzeko. Informazioa produktu sorta zabala kudeatzen duten dozenaka banaketa-zentro dituzten merkataritza-enpresetako logistikoentzat erabilgarria izango da.

Brikolajea: nola automatizatzen dugun biltegiaren jarraipena

Oro har, monitorizazio- eta negozio-prozesuen kudeaketa-sistemen eraikuntza mezuak eta gorabeherak prozesatzen hasten da. Aldi berean, negozio-gertaerak gertatzea bera automatizatzeko eta gertakariak erregistratzeko aukerarekin lotutako puntu teknologiko garrantzitsu bat galdu egiten da. Negozio-sistema gehienek, hala nola WMS, TMS, etab., beren prozesuak kontrolatzeko tresnak barneratuta dituzte. Baina, fabrikatzaile desberdinetako sistemak badira edo monitorizazio funtzionaltasuna behar bezain garatua ez badago, aldaketa garestiak eskatu behar dituzu edo ezarpen gehigarrietarako aholkulari espezializatuak erakarri behar dituzu.

Demagun planteamendu bat, zeinetan iturriak (taulak) identifikatzearekin lotutako kontsultaren zati txiki bat besterik ez dugu behar sistematik adierazleak lortzeko.

Gure biltegien berezitasuna da biltegien kudeaketa sistemak (WMS Exceed) konplexu logistiko batean funtzionatzen dutela. Biltegiak salgaien biltegiratze kategorien arabera banatzen dira (lehorra, alkohola, izoztua, etab.) ez bakarrik logikoki. Logistika-konplexu baten barruan hainbat biltegi-eraikin bereizten dira, eta horietako bakoitza bere WMSak kudeatzen du.

Brikolajea: nola automatizatzen dugun biltegiaren jarraipena

Biltegian gertatzen diren prozesuen irudi orokorra osatzeko, arduradunek WMS bakoitzaren txostenak egunean hainbat aldiz aztertzen dituzte, biltegiko operadoreen mezuak prozesatzen dituzte (jasotzaileak, biltzaileak, pilatzaileak) eta informazio-taulan hausnartzeko benetako adierazle operatiboak laburbiltzen dituzte.

Kudeatzaileei denbora aurrezteko, biltegiko gertaeren kontrol operatiborako sistema merke bat garatzea erabaki genuen. Sistema berriak, biltegiko prozesuen funtzionamendu-errendimenduaren adierazle "beroak" bistaratzeaz gain, kudeatzaileei intzidentziak erregistratzen eta zereginen ezarpena kontrolatzen lagundu behar die, emandako adierazleei eragiten dieten kausak ezabatzeko. Enpresaren arkitektura informatikoaren auditoretza orokorra egin ondoren, konturatu ginen beharrezko sistemaren zati indibidualak jada existitzen direla gure paisaian modu batean edo bestean eta haientzat ezarpenen eta beharrezko laguntza-zerbitzuen azterketa bat dagoela. Kontzeptu osoa soluzio arkitektoniko bakarrera ekartzea eta garapen-esparrua estimatzea besterik ez da geratzen.

Sistema berri bat eraikitzeko egin beharreko lan kopurua ebaluatu ondoren, proiektua hainbat fasetan banatzea erabaki zen:

  1. Biltegiko prozesuetarako adierazleen bilketa, adierazleen eta desbideraketen bistaratzea eta kontrola
  2. Prozesu-estandarrak automatizatzea eta desbiderapenetarako enpresen zerbitzuen zerbitzuan aplikazioak erregistratzea
  3. Jarraipen proaktiboa kargaren aurreikuspenarekin eta kudeatzaileentzako gomendioak sortuz.

Lehenengo fasean, sistemak prestatutako datu operatiboen zatiak bildu behar ditu konplexuko WMS guztietatik. Irakurketa ia denbora errealean gertatzen da (5 minutu baino gutxiagoko tarteak). Trikimailua da datuak dozena bat biltegietako DBMStik lortu behar direla sistema sare osora zabaltzean. Jasotako datu operatiboak sistemaren nukleoaren logikak prozesatzen ditu aurreikusitako adierazleetatik desbideratzeak kalkulatzeko eta estatistikak kalkulatzeko. Horrela tratatutako datuak kudeatzailearen tabletan edo biltegiko informazio-taulan bistaratu behar dira grafiko eta diagrama ulergarrien moduan.

Brikolajea: nola automatizatzen dugun biltegiaren jarraipena

Lehen etapako inplementazio piloturako sistema egokia aukeratzerakoan, Zabbix aukeratu dugu. Sistema hau biltegiko sistemen informatikako errendimendua kontrolatzeko erabiltzen da dagoeneko. Biltegiaren funtzionamenduaren negozio-neurriak biltzeko instalazio bereizia gehituta, biltegiaren osasunaren irudi orokorra lor dezakezu.

Sistemaren arkitektura orokorra irudian bezala atera zen.

Brikolajea: nola automatizatzen dugun biltegiaren jarraipena

WMS instantzia bakoitza monitorizazio sistemarako ostalari gisa definitzen da. Datu zentroen sareko zerbitzari zentral batek biltzen ditu neurketak, prestatutako SQL kontsulta batekin script bat exekutatuz. Datu-baserako sarbide zuzena gomendatzen ez duen sistema bat kontrolatu behar baduzu (adibidez, SAP EWM), script-deiak erabil ditzakezu dokumentatutako API funtzioetarako adierazleak lortzeko edo programa sinple bat python/vbascript-en idazteko.

Zabbix proxy instantzia bat biltegi sarean zabaltzen da zerbitzari nagusitik karga banatzeko. Proxy-ren bidez, tokiko WMS instantzia guztiekin lan egitea bermatzen da. Zabbix zerbitzariak parametroak eskatzen dituen hurrengo aldian, script bat exekutatzen da ostalari Zabbix proxy-arekin WMS datu-baseko metrikak eskatzeko.

Zabbix zerbitzari zentralean grafikoak eta biltegiko adierazleak bistaratzeko, Grafana inplementatzen dugu. Biltegiko eragiketen infografiekin prestatutako aginte-panelak bistaratzeaz gain, Grafana erabiliko da adierazleen desbideraketak kontrolatzeko eta biltegiko zerbitzu-sistemara alerta automatikoak bidaltzeko, negozioaren gorabeherak lantzeko.

Adibide gisa, kontuan har dezagun biltegian jasotzeko eremuan karga-kontrolaren ezarpena. Honako hauek aukeratu ziren biltegiko eremu honetan prozesuen errendimenduaren adierazle nagusi gisa:

  • Harrera eremuko ibilgailu kopurua, egoerak kontuan hartuta (aurreikusitakoa, iritsitakoa, agiriak, deskargatzea, irteera;
  • jartze- eta berritze-eremuen lan-karga (biltegiratzeko baldintzen arabera).

Ezarpenak

Sistemaren osagai nagusien instalazioa eta konfigurazioa (SQLcl, Zabbix, Grafana) hainbat iturritan deskribatzen da eta ez da hemen errepikatuko. SQLcl erabiltzea SQLplus-en ordez SQLcl-k (Oracle DBMS-ren komando lerroko interfazea, javaz idatzia) ez duelako Oracle Bezeroaren instalazio gehigarririk behar eta kaxatik kanpo funtzionatzen duelako da.

Zabbix biltegiko negozio-prozesuen adierazleak monitorizatzeko Zabbix erabiltzean arreta jarri behar diren puntu nagusiak deskribatuko ditut, eta horiek ezartzeko modu posibleetako bat. Gainera, hau ez da segurtasunari buruzko argitalpena. Konexioen segurtasunak eta aurkeztutako metodoen erabilerak azterketa osagarria eskatzen du soluzio pilotua eragiketa produktiboan transferitzeko prozesuan.

Gauza nagusia da sistema hori ezartzean, programaziorik gabe egin daitekeela sistemak emandako ezarpenak erabiliz.

Zabbix monitorizazio sistemak hainbat aukera eskaintzen ditu monitorizatutako sistematik neurketak biltzeko. Hau egin daiteke kontrolatutako ostalariei zuzenean galdezka, edo ostalariaren zabbix_sender bidez zerbitzariari datuak bidaltzeko metodo aurreratuago baten bidez, maila baxuko aurkikuntza-parametroak konfiguratzeko metodoak barne. Gure arazoa konpontzeko, zerbitzari zentral batek ostalarien zuzeneko galdeketa metodoa nahiko egokia da, zeren horri esker, metrika eskuratze-sekuentziaren kontrol osoa lortzen duzu eta ezarpen/script multzo bat erabiltzen duzula bermatzen du kontrolatutako ostalari bakoitzari banatu beharrik gabe.

Sistema arazketa eta konfiguratzeko "proba-gai" gisa, WMS lan-orria erabiltzen dugu onarpena kudeatzeko:

  1. Ibilgailuak harreran, iritsi diren guztiak: "- 72 ordu uneko ordutik" aldirako egoera duten ibilgailu guztiak - SQL kontsultaren identifikatzailea: getCars.
  2. Ibilgailuen egoera guztien historia: 72 orduko epean iristen diren ibilgailu guztien egoerak - SQL kontsultaren identifikatzailea: autoakHistoria.
  3. Onartzeko programatutako ibilgailuak: "Programatua" egoeran iristen diren ibilgailu guztien egoerak, uneko ordutik "- 24 ordu" eta "+24 ordu" denbora tartea - SQL kontsultaren identifikatzailea: autoakIn.

Beraz, biltegiaren errendimendu-neurri multzo bat erabaki ondoren, WMS datu-baserako SQL kontsultak prestatuko ditugu. Kontsultak exekutatzeko, datu-base nagusia ez erabiltzea komeni da, bere kopia "beroa" baizik - egonean.

Egonean Oracle DBMSra konektatzen gara datuak jasotzeko. Proba datu-basera konektatzeko IP helbidea 192.168.1.106. Konexio-parametroak Zabbix zerbitzarian gordetzen ditugu SQLcl lan karpetako TNSNames.ORA-n:

# 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)
    )
  )

Honek ostalari bakoitzari SQL kontsultak exekutatzeko aukera emango digu EZconnect bidez, saioa hasteko/pasahitza eta datu-basearen izena soilik zehaztuz:

# sql znew/Zabmon1@WH1_1

Prestatutako SQL kontsultak Zabbix zerbitzariko laneko karpetan gordetzen ditugu:

/etc/zabbix/sql

eta baimendu gure zerbitzariaren zabbix erabiltzaileari sarbidea:

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

Eskaerak dituzten fitxategiek identifikatzaile-izen esklusibo bat jasotzen dute Zabbix zerbitzaritik sartzeko. SQLcl bidez datu-basearen kontsulta bakoitzak hainbat parametro itzultzen dizkigu. Zabbix-en berezitasunak kontuan hartuta, eskari bakoitzeko metrika bakarra prozesatu dezakeena, script gehigarriak erabiliko ditugu kontsultaren emaitzak neurri indibidualetan analizatzeko.

Presta dezagun script nagusia, deitu wh_Metrics.sh, datu-basera SQL kontsulta bat deitzeko, emaitzak gorde eta datuen berreskurapenaren arrakastaren adierazle dituen metrika tekniko bat itzultzeko:

#!/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

Amaitutako fitxategia scriptarekin kanpoko scriptak gordetzeko karpetan jartzen dugu Zabbix-proxy konfigurazio-ezarpenen arabera (lehenespenez - /usr/local/share/zabbix/externalscripts).

Scriptak emaitzak jasoko dituen datu-basearen identifikazioa script-parametro gisa pasatuko da. Datu-basearen IDak TNSNames.ORA fitxategiko ezarpen-lerroarekin bat etorri behar du.

SQL kontsulta-deiaren emaitza bezalako fitxategi batean gordetzen da mon_base_id_main.log non base_id = Script-parametro gisa jasotako datu-basearen identifikatzailea. Emaitza-fitxategia datu-baseen identifikatzaileen arabera banatzea zerbitzaritik hainbat datu-basetara aldi berean eskaerak egiten badira. Kontsultak bi dimentsioko balioen matrize ordenatua ematen du.

Hurrengo script-a, deitu dezagun getMetrica.sh, eskaera baten emaitza duen fitxategi batetik metrika zehaztu bat lortzeko beharrezkoa da:

#!/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

Orain prest gaude Zabbix konfiguratzeko eta biltegiaren onarpen prozesuen adierazleak monitorizatzen hasteko.

Zabbix agente bat instalatu eta konfiguratzen da datu-basearen nodo bakoitzean.

Zerbitzari nagusian zerbitzari guztiak definitzen ditugu Zabbix proxyarekin. Ezarpenak egiteko, joan bide honetara:

Administrazioa → Proxy → Sortu proxy

Brikolajea: nola automatizatzen dugun biltegiaren jarraipena

Ostalari kontrolatuak definitzen ditugu:

Ezarpenak → Ostalariak → Sortu ostalari

Brikolajea: nola automatizatzen dugun biltegiaren jarraipena

Ostalari-izenak agentearen konfigurazio-fitxategian zehaztutako ostalari-izenarekin bat etorri behar du.

Nodoaren taldea zehazten dugu, baita datu-basearekin nodoaren IP helbidea edo DNS izena ere.

Metrikoak sortzen ditugu eta haien propietateak zehazten ditugu:

Ezarpenak → Nodoak → 'nodoaren izena' → Datu-elementuak>Sortu datu-elementua

1) Sortu metrika nagusi bat datu-baseko parametro guztiak kontsultatzeko

Brikolajea: nola automatizatzen dugun biltegiaren jarraipena

Datu-elementuaren izena ezarri dugu, "Kanpoko egiaztapena" mota adierazi. “Gakoa” eremuan, script bat definitzen dugu, zeinari parametro gisa pasatzen dizkiogun Oracle datu-basearen izena, sql kontsultaren izena, datu-basera konektatzeko saioa eta pasahitza. Ezarri kontsultak eguneratzeko tartea 5 minututan (300 segundo).

2) Sortu ibilgailuaren egoera bakoitzaren gainerako neurketak. Neurri hauen balioak metrika nagusia egiaztatzearen emaitzan oinarrituta sortuko dira.

Brikolajea: nola automatizatzen dugun biltegiaren jarraipena

Datu-elementuaren izena ezarri dugu, "Kanpoko egiaztapena" mota adierazi. "Gakoa" eremuan, script bat definitzen dugu, parametro gisa Oracle datu-basearen izena eta zeinen balioaren jarraipena egin nahi dugun egoera-kodea pasatzen diogun. Kontsulten eguneratze tartea metrika nagusia baino 10 segundo luzeagoa (310 segundo) ezarri dugu, emaitzak fitxategian idazteko denbora izan dezan.

Neurri zuzenak lortzeko, garrantzitsua da egiaztapenak aktibatzen diren ordena. Datuak jasotzean gatazkak saihesteko, lehenik eta behin GetCarsByStatus metrika nagusia aktibatzen dugu script-era deituz - wh_Metrics.sh.

Ezarpenak → Nodoak → 'nodoaren izena' → Datu-elementuak → "Kanpoko egiaztapenak" azpiiragazkia. Markatu beharrezko egiaztapena eta egin klik "Aktibatu".

Brikolajea: nola automatizatzen dugun biltegiaren jarraipena

Ondoren, gainerako neurketak eragiketa batean aktibatzen ditugu, guztiak batera hautatuz:

Brikolajea: nola automatizatzen dugun biltegiaren jarraipena

Orain Zabbix biltegiko negozio-neurriak biltzen hasi da.

Ondorengo artikuluetan, Grafana konektatu eta erabiltzaile-kategoria ezberdinentzako biltegiko eragiketen informazio-panelak sortzeari begiratuko diogu. Grafana ere erabiltzen da biltegiko eragiketetan desbideraketak kontrolatzeko eta, desbideratzeen mugen eta maiztasunaren arabera, biltegiaren kudeaketa zerbitzu-zentroko sisteman gorabeherak erregistratzeko API bidez edo, besterik gabe, kudeatzaileari posta elektroniko bidez jakinarazpenak bidaltzeko.

Brikolajea: nola automatizatzen dugun biltegiaren jarraipena

Iturria: www.habr.com

Gehitu iruzkin berria