DIY: jinsi tunavyoendesha ufuatiliaji wa ghala

X5 inaendesha vituo 43 vya usambazaji na malori yake 4, na kuhakikisha usambazaji usiokatizwa wa bidhaa kwa maduka 029. Katika makala hii nitashiriki uzoefu wangu wa kuunda mfumo wa maingiliano wa ufuatiliaji wa matukio ya ghala kutoka mwanzo. Taarifa hiyo itakuwa ya manufaa kwa wafanyabiashara wa makampuni ya biashara yenye vituo kadhaa vya usambazaji vinavyosimamia bidhaa mbalimbali.

DIY: jinsi tunavyoendesha ufuatiliaji wa ghala

Kama sheria, ujenzi wa mifumo ya ufuatiliaji na usimamizi wa mchakato wa biashara huanza na usindikaji wa ujumbe na matukio. Wakati huo huo, hatua muhimu ya kiteknolojia inayohusiana na uwezekano wa automatiska ukweli wa tukio la matukio ya biashara na matukio ya kurekodi hukosa. Mifumo mingi ya biashara kama vile WMS, TMS, n.k., ina zana zilizojumuishwa za kufuatilia michakato yao wenyewe. Lakini, ikiwa hizi ni mifumo kutoka kwa wazalishaji tofauti au utendaji wa ufuatiliaji haujatengenezwa vya kutosha, unapaswa kuagiza marekebisho ya gharama kubwa au kuvutia washauri maalumu kwa mipangilio ya ziada.

Hebu fikiria mbinu ambayo tunahitaji tu sehemu ndogo ya ushauri unaohusishwa na kutambua vyanzo (meza) ili kupata viashiria kutoka kwa mfumo.

Umaalumu wa maghala yetu ni kwamba mifumo kadhaa ya usimamizi wa ghala (WMS Exceed) hufanya kazi katika tata moja ya vifaa. Maghala yanagawanywa kulingana na makundi ya uhifadhi wa bidhaa (kavu, pombe, waliohifadhiwa, nk) si tu kimantiki. Ndani ya tata moja ya vifaa kuna majengo kadhaa tofauti ya ghala, ambayo kila moja inasimamiwa na WMS yake mwenyewe.

DIY: jinsi tunavyoendesha ufuatiliaji wa ghala

Ili kuunda picha ya jumla ya michakato inayotokea ghala, wasimamizi huchambua kuripoti kwa kila WMS mara kadhaa kwa siku, kuchakata ujumbe kutoka kwa waendeshaji ghala (wapokeaji, wachukuaji, washikaji) na kutoa muhtasari wa viashiria halisi vya utendakazi kwa kutafakari kwenye ubao wa habari.

Ili kuokoa muda wa wasimamizi, tuliamua kuunda mfumo wa bei nafuu wa udhibiti wa uendeshaji wa matukio ya ghala. Mfumo mpya, pamoja na kuonyesha viashiria vya "moto" vya utendaji wa uendeshaji wa michakato ya ghala, inapaswa pia kusaidia wasimamizi katika kurekodi matukio na ufuatiliaji wa utekelezaji wa kazi ili kuondokana na sababu zinazoathiri viashiria vilivyotolewa. Baada ya kufanya ukaguzi wa jumla wa usanifu wa IT wa kampuni, tuligundua kuwa sehemu za kibinafsi za mfumo unaohitajika tayari zipo kwa njia moja au nyingine katika mazingira yetu na kwao kuna uchunguzi wa mipangilio na huduma muhimu za usaidizi. Kilichobaki ni kuleta dhana nzima katika suluhisho moja la usanifu na kukadiria wigo wa maendeleo.

Baada ya kutathmini kiasi cha kazi inayohitajika kufanywa ili kuunda mfumo mpya, iliamuliwa kugawa mradi katika hatua kadhaa:

  1. Mkusanyiko wa viashiria vya michakato ya ghala, taswira na udhibiti wa viashiria na kupotoka
  2. Uendeshaji wa viwango vya mchakato na usajili wa maombi katika huduma ya huduma za biashara kwa kupotoka
  3. Ufuatiliaji makini na utabiri wa mzigo na uundaji wa mapendekezo kwa wasimamizi.

Katika hatua ya kwanza, mfumo lazima ukusanye vipande vilivyotayarishwa vya data ya uendeshaji kutoka kwa WMS zote za tata. Kusoma hutokea karibu katika muda halisi (vipindi vya chini ya dakika 5). Ujanja ni kwamba data lazima ipatikane kutoka kwa DBMS ya ghala kadhaa wakati wa kupeleka mfumo kwenye mtandao mzima. Data ya uendeshaji iliyopokelewa inachakatwa na mantiki ya msingi wa mfumo ili kuhesabu kupotoka kutoka kwa viashiria vilivyopangwa na kuhesabu takwimu. Data iliyosindika kwa njia hii lazima ionyeshwe kwenye kompyuta kibao ya meneja au kwenye ubao wa habari wa ghala kwa namna ya grafu na michoro inayoeleweka.

DIY: jinsi tunavyoendesha ufuatiliaji wa ghala

Wakati wa kuchagua mfumo unaofaa kwa utekelezaji wa majaribio ya hatua ya kwanza, tulichagua Zabbix. Mfumo huu tayari unatumika kufuatilia utendaji wa IT wa mifumo ya ghala. Kwa kuongeza ufungaji tofauti kwa ajili ya kukusanya metrics ya biashara ya uendeshaji wa ghala, unaweza kupata picha ya jumla ya afya ya ghala.

Usanifu wa jumla wa mfumo uligeuka kama kwenye takwimu.

DIY: jinsi tunavyoendesha ufuatiliaji wa ghala

Kila mfano wa WMS hufafanuliwa kama mwenyeji wa mfumo wa ufuatiliaji. Vipimo hukusanywa na seva kuu katika mtandao wa kituo cha data kwa kuendesha hati iliyo na hoja iliyoandaliwa ya SQL. Ikiwa unahitaji kufuatilia mfumo ambao haupendekezi upatikanaji wa moja kwa moja kwenye hifadhidata (kwa mfano, SAP EWM), unaweza kutumia simu za maandishi kwa vitendaji vya API vilivyoandikwa ili kupata viashiria au kuandika programu rahisi katika python/vbascript.

Mfano wa proksi ya Zabbix huwekwa kwenye mtandao wa ghala ili kusambaza mzigo kutoka kwa seva kuu. Kupitia Proksi, kazi na matukio yote ya ndani ya WMS inahakikishwa. Wakati mwingine seva ya Zabbix inapoomba vigezo, hati inatekelezwa kwa seva pangishi kwa kutumia seva mbadala ya Zabbix ili kuomba vipimo kutoka kwa hifadhidata ya WMS.

Ili kuonyesha grafu na viashiria vya ghala kwenye seva ya kati ya Zabbix, tunapeleka Grafana. Mbali na kuonyesha dashibodi zilizoandaliwa na infographics ya shughuli za ghala, Grafana itatumika kufuatilia kupotoka kwa viashiria na kutuma arifa za moja kwa moja kwa mfumo wa huduma ya ghala kwa kufanya kazi na matukio ya biashara.

Kwa mfano, hebu fikiria utekelezaji wa udhibiti wa mzigo katika eneo la kupokea ghala. Zifuatazo zilichaguliwa kama viashiria kuu vya utendaji wa mchakato katika eneo hili la ghala:

  • idadi ya magari katika eneo la mapokezi, kwa kuzingatia hali (iliyopangwa, iliyofika, nyaraka, kupakua, kuondoka;
  • mzigo wa kazi wa maeneo ya kuwekwa na kujaza (kulingana na hali ya kuhifadhi).

Mipangilio

Ufungaji na usanidi wa vipengele vikuu vya mfumo (SQLcl, Zabbix, Grafana) imeelezwa katika vyanzo mbalimbali na haitarudiwa hapa. Matumizi ya SQLcl badala ya SQLplus ni kutokana na ukweli kwamba SQLcl (kiolesura cha mstari wa amri cha Oracle DBMS, kilichoandikwa katika java) haihitaji usakinishaji wa ziada wa Oracle Client na hufanya kazi nje ya boksi.

Nitaelezea mambo makuu ambayo yanapaswa kuzingatiwa wakati wa kutumia Zabbix kufuatilia viashiria vya mchakato wa biashara ya ghala, na mojawapo ya njia zinazowezekana za kutekeleza. Pia, hii sio chapisho kuhusu usalama. Usalama wa viunganisho na matumizi ya mbinu zilizowasilishwa zinahitaji utafiti wa ziada katika mchakato wa kuhamisha suluhisho la majaribio katika uendeshaji wa uzalishaji.

Jambo kuu ni kwamba wakati wa kutekeleza mfumo huo, inawezekana kufanya bila programu, kwa kutumia mipangilio iliyotolewa na mfumo.

Mfumo wa ufuatiliaji wa Zabbix hutoa chaguo kadhaa za kukusanya vipimo kutoka kwa mfumo unaofuatiliwa. Hili linaweza kufanywa kwa upigaji kura wa wapangishi wanaofuatiliwa moja kwa moja, au kwa mbinu ya juu zaidi ya kutuma data kwa seva kupitia zabbix_sender ya mwenyeji, ikijumuisha mbinu za kusanidi vigezo vya ugunduzi wa kiwango cha chini. Ili kutatua tatizo letu, njia ya kupiga kura ya moja kwa moja ya majeshi na seva ya kati inafaa kabisa, kwa sababu hii hukuruhusu kupata udhibiti kamili juu ya mlolongo wa upataji wa vipimo na kuhakikisha kuwa unatumia seti moja ya mipangilio/hati bila hitaji la kuzisambaza kwa kila seva pangishi inayofuatiliwa.

Kama "masomo ya majaribio" kwa utatuzi na kusanidi mfumo, tunatumia lahakazi ya WMS kwa usimamizi wa kukubalika:

  1. Magari katika mapokezi, yote ambayo yamefika: Magari yote yenye hadhi kwa kipindi "- saa 72 kutoka wakati wa sasa" - Kitambulishi cha hoja ya SQL: getCars.
  2. Historia ya hali zote za magari: Hali za magari yote yanayowasili ndani ya saa 72 - Kitambulishi cha hoja ya SQL: carsHistory.
  3. Magari yaliyoratibiwa kukubalika: Hali za magari yote yenye kuwasili katika hali ya "Iliyoratibiwa", muda wa "- saa 24" na "saa +24" kutoka wakati wa sasa - kitambulisho cha hoja ya SQL: magariKatika.

Kwa hivyo, baada ya kuamua seti ya vipimo vya utendaji wa ghala, tutatayarisha maswali ya SQL kwa hifadhidata ya WMS. Ili kutekeleza maswali, inashauriwa kutumia sio hifadhidata kuu, lakini nakala yake "moto" - ya kusubiri.

Tunaunganisha kwenye Oracle DBMS ya kusubiri ili kupokea data. Anwani ya IP ya kuunganisha kwenye hifadhidata ya majaribio 192.168.1.106. Tunahifadhi vigezo vya uunganisho kwenye seva ya Zabbix katika TNSNames.ORA ya folda inayofanya kazi ya SQLcl:

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

Hii itaturuhusu kuendesha maswali ya SQL kwa kila mwenyeji kupitia EZconnect, tukibainisha jina la kuingia/nenosiri na hifadhidata pekee:

# sql znew/Zabmon1@WH1_1

Tunahifadhi maswali yaliyotayarishwa ya SQL kwenye folda inayofanya kazi kwenye seva ya Zabbix:

/etc/zabbix/sql

na ruhusu ufikiaji kwa mtumiaji wa zabbix wa seva yetu:

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

Faili zilizo na maombi hupokea kitambulisho-jina la kipekee kwa ufikiaji kutoka kwa seva ya Zabbix. Kila swali la hifadhidata kupitia SQLcl huturudishia vigezo kadhaa. Kwa kuzingatia maelezo mahususi ya Zabbix, ambayo inaweza kuchakata metriki moja pekee kwa kila ombi, tutatumia hati za ziada kuchanganua matokeo ya hoja katika vipimo mahususi.

Wacha tuandae hati kuu, wacha tuiite wh_Metrics.sh, ili kupiga swali la SQL kwenye hifadhidata, kuokoa matokeo na kurudisha metriki ya kiufundi na viashiria vya kufaulu kwa urejeshaji data:

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

Tunaweka faili iliyokamilishwa na hati kwenye folda ya kuhifadhi hati za nje kulingana na mipangilio ya usanidi wa wakala wa Zabbix (kwa msingi - /usr/local/share/zabbix/externalscripts).

Utambulisho wa hifadhidata ambayo hati itapokea matokeo itapitishwa kama kigezo cha hati. Kitambulisho cha hifadhidata lazima kilingane na mstari wa mipangilio katika faili ya TNSNames.ORA.

Matokeo ya simu ya swala ya SQL huhifadhiwa kwenye faili kama mon_base_id_main.log ambapo base_id = Kitambulisho cha hifadhidata kilipokelewa kama kigezo cha hati. Mgawanyiko wa faili ya matokeo na vitambulisho vya hifadhidata hutolewa katika kesi ya maombi kutoka kwa seva hadi hifadhidata kadhaa kwa wakati mmoja. Hoja hurejesha safu ya thamani iliyopangwa ya pande mbili.

Hati ifuatayo, wacha tuiite getMetrica.sh, inahitajika ili kupata metriki maalum kutoka kwa faili iliyo na matokeo ya ombi:

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

Sasa tuko tayari kusanidi Zabbix na kuanza viashiria vya ufuatiliaji wa michakato ya kukubalika ya ghala.

Wakala wa Zabbix amesakinishwa na kusanidiwa kwenye kila nodi ya hifadhidata.

Kwenye seva kuu tunafafanua seva zote zilizo na proksi ya Zabbix. Kwa mipangilio, nenda kwa njia ifuatayo:

Utawala → Wakala → Unda proksi

DIY: jinsi tunavyoendesha ufuatiliaji wa ghala

Tunafafanua wapangishi wanaodhibitiwa:

Mipangilio → Wapangishi → Unda seva pangishi

DIY: jinsi tunavyoendesha ufuatiliaji wa ghala

Jina la mpangishaji lazima lilingane na jina la mpangishaji ambalo limebainishwa katika faili ya usanidi ya wakala.

Tunataja kikundi kwa node, pamoja na anwani ya IP au jina la DNS la node yenye hifadhidata.

Tunaunda vipimo na kubainisha sifa zao:

Mipangilio → Nodi → 'jina la nodi' → Vipengee vya Data>Unda Kipengee cha Data

1) Unda kipimo kikuu ili kuuliza vigezo vyote kutoka kwa hifadhidata

DIY: jinsi tunavyoendesha ufuatiliaji wa ghala

Tunaweka jina la kipengele cha data, onyesha aina "Uthibitishaji wa Nje". Katika sehemu ya "Ufunguo", tunafafanua hati ambayo tunapitisha kama vigezo jina la hifadhidata ya Oracle, jina la swali la sql, kuingia na nenosiri la kuunganisha kwenye hifadhidata. Weka muda wa kusasisha hoja hadi dakika 5 (sekunde 300).

2) Unda vipimo vilivyosalia kwa kila hali ya gari. Thamani za vipimo hivi zitatolewa kulingana na matokeo ya kukagua kipimo kikuu.

DIY: jinsi tunavyoendesha ufuatiliaji wa ghala

Tunaweka jina la kipengele cha data, onyesha aina "Uthibitishaji wa Nje". Katika sehemu ya "Ufunguo", tunafafanua hati ambayo tunapitisha kama vigezo jina la hifadhidata ya Oracle na msimbo wa hali ambao tunataka kufuatilia thamani yake. Tunaweka muda wa kusasisha hoja hadi sekunde 10 zaidi ya kipimo kikuu (sekunde 310) ili matokeo yawe na muda wa kuandikwa kwenye faili.

Ili kupata vipimo kwa usahihi, mpangilio ambao ukaguzi umeamilishwa ni muhimu. Ili kuzuia migongano wakati wa kupokea data, kwanza kabisa tunawasha kipimo kikuu cha GetCarsByStatus kwa kupiga hati - wh_Metrics.sh.

Mipangilio → Nodi → 'jina la nodi' → Vipengee vya data → Kichujio kidogo "Alama za nje". Weka alama kwenye hundi inayohitajika na ubofye "Wezesha".

DIY: jinsi tunavyoendesha ufuatiliaji wa ghala

Ifuatayo, tunawasha vipimo vilivyobaki katika operesheni moja, tukichagua zote pamoja:

DIY: jinsi tunavyoendesha ufuatiliaji wa ghala

Sasa Zabbix imeanza kukusanya vipimo vya biashara ya ghala.

Katika makala zifuatazo, tutaangalia kwa karibu kuunganisha Grafana na kuunda dashibodi za habari za shughuli za ghala kwa makundi mbalimbali ya watumiaji. Grafana pia hutumiwa kufuatilia upotovu katika utendakazi wa ghala na, kulingana na mipaka na marudio ya kupotoka, kusajili matukio katika mfumo wa kituo cha huduma ya usimamizi wa ghala kupitia API au kutuma tu arifa kwa meneja kwa barua pepe.

DIY: jinsi tunavyoendesha ufuatiliaji wa ghala

Chanzo: mapenzi.com

Kuongeza maoni