DIY: kamoo re iketsetsang tlhokomelo ea polokelo ea thepa

Под управлением Х5 находится 43 распределительных центра и 4 029 собственных грузовых автомобиля, они обеспечивают бесперебойную поставку продуктов в 15 752 магазина. В статье поделюсь опытом создания с нуля интерактивной системы мониторинга событий склада. Информация будет полезна логистам торговых компаний с несколькими десятками распределительных центров, управляющих широким товарным ассортиментом.

DIY: kamoo re iketsetsang tlhokomelo ea polokelo ea thepa

Как правило, построение систем мониторинга и управления бизнес-процессами начинают с обработки сообщений и инцидентов. При этом упускается важный технологический момент, связанный с возможностью автоматизации самого факта возникновения бизнес-событий и регистрации инцидентов. Большинство бизнес-систем класса WMS, TMS и др., имеют встроенные средства мониторинга собственных процессов. Но, если это системы разных производителей или функционал мониторинга недостаточно развит, приходится заказывать дорогостоящие доработки или привлекать специализированных консультантов для дополнительных настроек.

Рассмотрим подход, при котором нам потребуется только небольшая часть консалтинга, связанная с определением источников (таблиц) для получения показателей из системы.

Taba e ikhethang ea matlo a rona a polokelo ke hore litsamaiso tse 'maloa tsa taolo ea polokelo (WMS Exceed) li sebetsa setsing se le seng sa thepa. Libaka tsa polokelo li arotsoe ho ea ka lihlopha tsa polokelo ea thepa (e omileng, joala, e leqhoa, joalo-joalo) eseng feela ka mokhoa o utloahalang. Ka har'a moaho o le mong oa thepa ho na le meaho e mengata e arohaneng ea polokelo, e 'ngoe le e' ngoe e laoloa ke WMS ea eona.

DIY: kamoo re iketsetsang tlhokomelo ea polokelo ea thepa

Ho theha setšoantšo se akaretsang sa lits'ebetso tse etsahalang setsing sa polokelo, batsamaisi ba sekaseka tlaleho ea WMS ka 'ngoe makhetlo a' maloa ka letsatsi, ba sebetsana le melaetsa e tsoang ho basebetsi ba polokelo (li-receivers, pickers, stackers) le ho akaretsa matšoao a ts'ebetso bakeng sa ho thuisa letlapeng la tlhahisoleseling.

Ho boloka nako ea batsamaisi, re nkile qeto ea ho theha sistimi e theko e tlase bakeng sa taolo ea ts'ebetso ea liketsahalo tsa polokelo. Sistimi e ncha, ntle le ho bonts'a matšoao a "chesang" a ts'ebetso ea ts'ebetso ea lits'ebetso tsa polokelo, e boetse e lokela ho thusa batsamaisi ho rekota liketsahalo le ho beha leihlo ts'ebetsong ea mesebetsi ho felisa lisosa tse amang matšoao a fanoeng. Ka mor'a ho etsa tlhahlobo e akaretsang ea mohaho oa IT oa k'hamphani, re ile ra hlokomela hore likarolo tsa motho ka mong tsa tsamaiso e hlokahalang li se li ntse li le teng ka tsela e 'ngoe kapa e' ngoe sebakeng sa rona sa naha 'me ho bona ho na le tlhahlobo ea litlhophiso le litšebeletso tse hlokahalang tsa tšehetso. Se setseng ke ho tlisa mohopolo oohle tharollong e le 'ngoe ea meralo le ho lekanya boholo ba nts'etsopele.

Kamora ho lekola boholo ba mosebetsi o lokelang ho etsoa ho aha sistimi e ncha, ho ile ha etsoa qeto ea ho arola morero ona ka mekhahlelo e mengata:

  1. Pokello ea matšoao bakeng sa lits'ebetso tsa polokelo, pono le taolo ea matšoao le ho kheloha
  2. Boiketsetso ba maemo a ts'ebetso le ho ngolisoa ha likopo ts'ebeletso ea lits'ebeletso tsa khoebo bakeng sa ho kheloha
  3. Проактивный мониторинг с прогнозированием нагрузки и создание рекомендаций менеджерам.

Mothating oa pele, sistimi e tlameha ho bokella lilae tse lokisitsoeng tsa data ea ts'ebetso ho tsoa ho WMS eohle ea komporo. Ho bala ho etsahala hoo e ka bang ka nako ea sebele (nako e ka tlaase ho metsotso e 5). Thetso ke hore data e tlameha ho fumanoa ho DBMS ea libaka tse 'maloa tsa polokelo ha ho tsamaisoa tsamaiso ho marang-rang kaofela. Lintlha tse amohetsoeng tsa ts'ebetso li sebetsoa ke mohopolo oa mantlha oa sistimi ho bala likhaello ho tsoa ho litsupa tse reriloeng le ho bala lipalo-palo. Lintlha tse sebetsitsoeng ka tsela ena li tlameha ho bontšoa letlapeng la mookameli kapa botong ea boitsebiso ba polokelo ka mokhoa oa li-graph le litšoantšo tse utloisisoang.

DIY: kamoo re iketsetsang tlhokomelo ea polokelo ea thepa

Ha re khetha tsamaiso e loketseng bakeng sa ts'ebetsong ea lifofane ea mohato oa pele, re khethile Zabbix. Sistimi ena e se e sebelisoa ho lekola ts'ebetso ea IT ea litsamaiso tsa polokelo. Ka ho kenyelletsa setsi se arohaneng bakeng sa ho bokella metrics ea khoebo ea ts'ebetso ea polokelo, o ka fumana setšoantšo se akaretsang sa bophelo bo botle ba ntlo ea polokelo.

Mehaho e akaretsang ea sistimi e ile ea hlaha joalo ka setšoantšong.

DIY: kamoo re iketsetsang tlhokomelo ea polokelo ea thepa

Каждая инстанция WMS определена как хост для системы мониторинга. Сбор метрик выполняется центральным сервером в сети ЦОД через запуск скрипта с подготовленным SQL запросом. В случае необходимости мониторинга системы, которая не рекомендует прямой доступ к БД (например, SAP EWM) для получения показателей можно использовать вызовы скриптом документированных API функций или написать несложную программу на python/vbascript.

Mohlala oa moemeli oa Zabbix o kentsoe marang-rang a polokelo ho aba mojaro ho tsoa ho seva se seholo. Ka Proxy, ho sebetsa le maemo ohle a lehae a WMS ho netefatsoa. Nakong e tlang ha seva sa Zabbix e kopa litlhophiso, ho tla ngoloa mongolo ho moamoheli ka proxy ea Zabbix ho kopa metrics ho database ea WMS.

Ho hlahisa li-graph le matšoao a polokelo ho seva sa bohareng sa Zabbix, re tsamaisa Grafana. Ntle le ho bonts'a li-dashboards tse lokiselitsoeng tse nang le infographics ea ts'ebetso ea polokelo, Grafana e tla sebelisoa ho beha leihlo ho kheloha ho matšoao le ho romela litemoso tsa othomathike ho sistimi ea litšebeletso tsa polokelo bakeng sa ho sebetsana le liketsahalo tsa khoebo.

E le mohlala, ha re nahaneng ka ts'ebetsong ea taolo ea mojaro sebakeng sa ho amohela thepa ea polokelo. Tse latelang li khethiloe e le matšoao a mantlha a ts'ebetso ea ts'ebetso sebakeng sena sa polokelo:

  • palo ea likoloi sebakeng sa kamohelo, ho nahanela maemo (a reriloeng, a fihlile, litokomane, ho laolla, ho tloha;
  • mojaro oa mosebetsi oa libaka tsa ho bea le ho tlatsa (ho ea ka maemo a polokelo).

Lisebelisoa

Ho kenya le ho hlophisoa ha likarolo tse kholo tsa tsamaiso (SQLcl, Zabbix, Grafana) ho hlalosoa mehloling e fapaneng 'me e ke ke ea phetoa mona. Tšebeliso ea SQLcl sebakeng sa SQLplus e bakoa ke taba ea hore SQLcl (mohala oa taelo ea Oracle DBMS, e ngotsoeng ka java) ha e hloke ho kenngoa ho eketsehileng ha Oracle Client mme e sebetsa ka ntle ho lebokose.

Опишу основные моменты, которым стоит уделить внимание при использовании Zabbix для мониторинга показателей бизнес-процессов склада, и один из возможных способов их реализации. Также это пост не про безопасность. Безопасность подключений и использования представленных методов нуждается в дополнительной проработке в процессе перевода пилотного решения в продуктивную эксплуатацию.

Ntho e ka sehloohong ke hore ha u kenya ts'ebetsong tsamaiso e joalo, hoa khoneha ho etsa ntle le lenaneo, ho sebelisa litlhophiso tse fanoeng ke tsamaiso.

Sistimi ea ho beha leihlo ea Zabbix e fana ka likhetho tse 'maloa bakeng sa ho bokella metrics ho sistimi e behiloeng leihlo. Sena se ka etsoa ka ho khetha baamoheli ba behiloeng leihlo ka kotloloho, kapa ka mokhoa o tsoetseng pele oa ho romella data ho seva ka zabbix_sender ea moamoheli, ho kenyeletsoa le mekhoa ea ho lokisa maemo a tlase a ho sibolla. Ho rarolla bothata ba rona, mokhoa oa ho khetha ka ho toba oa mabotho ka seva e bohareng o loketse haholo, hobane sena se o lumella ho fumana taolo e felletseng holim'a tatelano ea ho fumana metrics le ho netefatsa hore o sebelisa sete e le 'ngoe ea litlhophiso/lingoloa ntle le tlhoko ea ho li abela moamoheli e mong le e mong ea shebiloeng.

Joalo ka "lithuto tsa liteko" bakeng sa ho lokisa liphoso le ho theha sistimi, re sebelisa leqephe la WMS bakeng sa taolo ea kamohelo:

  1. ТС на приёмке, все, которые прибыли: Все ТС со статусами за период «- 72 часа от текущего времени» — идентификатор SQL запроса: getCars.
  2. Nalane ea maemo ohle a likoloi: Maemo a likoloi tsohle tse fihlang nakong ea lihora tse 72 - SQL query identifier: carsHistory.
  3. Запланированные ТС на приемку: Статусы всех ТС с приходом в статусе «Запланирована», интервал времени «- 24 часа» и «+24 часа» от текущего времени — идентификатор SQL запроса: likoloiKa.

Kahoo, ka mor'a hore re nke qeto ka sete ea metrics ea ts'ebetso ea polokelo, re tla lokisa lipotso tsa SQL bakeng sa database ea WMS. Ho etsa lipotso, ho bohlokoa hore u se ke ua sebelisa database ea mantlha, empa kopi ea eona e "chesang" - standby.

Re hokela ho standby Oracle DBMS ho amohela data. Aterese ea IP bakeng sa ho hokela polokelong ea liteko 192.168.1.106. Re boloka liparamente tsa khokahano ho seva sa Zabbix ho TNSNames.ORA ea foldara e sebetsang ea 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)
    )
  )

Sena se tla re lumella ho tsamaisa lipotso tsa SQL ho moamoheli e mong le e mong ka EZconnect, re hlakisa feela lebitso la ho kena/password le database:

# sql znew/Zabmon1@WH1_1

Re boloka lipotso tse lokiselitsoeng tsa SQL foldareng e sebetsang ho seva sa Zabbix:

/etc/zabbix/sql

'me u lumelle ho fihlella mosebelisi oa zabbix oa seva sa rona:

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

Файлы с запросами получают уникальный идентификатор-название для обращения со стороны сервера Zabbix. Каждый запрос к базе данных через SQLcl возвращает нам несколько параметров. С учётом специфики Zabbix, который умеет обрабатывать только одну метрику в запросе, будем использовать дополнительные скрипты для разбора результатов запроса на отдельные метрики.

Ha re lokiseng mongolo oa mantlha, ha re o bitse wh_Metrics.sh, ho letsetsa potso ea SQL ho database, boloka liphetho le ho khutlisa metric ea tekheniki e nang le matšoao a katleho ea ho khutlisa 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

Готовый файл со скриптом размещаем в папке для размещения внешних скриптов в соответствии с установками конфигурации Zabbix-proxy (по умолчанию — /usr/local/share/zabbix/externalscripts).

Идентификация БД, из которой скрипт будет получать результаты, будет передаваться параметром скрипта. Идентификатор БД должен соответствовать строке настроек в файле TNSNames.ORA.

Sephetho sa pitso ea potso ea SQL se bolokiloe faeleng e kang mon_base_id_main.log moo base_id = Setsebi sa polokelongtshedimosetso se fumanwe e le paramethara ya script. Karohano ea faele ea sephetho ka li-database identifiers e fanoa haeba ho ka ba le likopo ho tsoa ho seva ho ea ho database tse 'maloa ka nako e le ngoe. Potso e khutlisa palo e hlophisitsoeng ea mahlakore a mabeli a boleng.

Sengoloa se latelang, ha re se bitse getMetrica.sh, sea hlokahala ho fumana metric e boletsoeng faeleng ka sephetho sa kopo:

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

Hona joale re se re itokiselitse ho lokisa Zabbix le ho qala ho shebella matšoao a mekhoa ea ho amohela thepa ea polokelo.

Moemeli oa Zabbix o kentsoe le ho hlophisoa sebakeng se seng le se seng sa database.

Ho seva se seholo re hlalosa li-server tsohle tse nang le moemeli oa Zabbix. Ho li-setting, e ea tseleng e latelang:

Tsamaiso → Moemeli → Etsa moemeli

DIY: kamoo re iketsetsang tlhokomelo ea polokelo ea thepa

Определяем контролируемые хосты:

Litlhophiso → Baamoheli → Etsa moamoheli

DIY: kamoo re iketsetsang tlhokomelo ea polokelo ea thepa

Lebitso la moamoheli le tlameha ho ts'oana le lebitso la moamoheli le boletsoeng faeleng ea litlhophiso ea moemeli.

Re hlakisa sehlopha sa node, hammoho le aterese ea IP kapa lebitso la DNS la node e nang le database.

Создаём метрики и указываем их свойства:

Litlhophiso → Nodes → 'node name' → Lintlha tsa Lintlha> Theha Lintlha

1) Theha metric ea mantlha ho botsa liparamente tsohle ho tsoa ho database

DIY: kamoo re iketsetsang tlhokomelo ea polokelo ea thepa

Re beha lebitso la karolo ea data, re bonts'a mofuta oa "Netefatso ea kantle". Sebakeng sa "Key", re hlalosa script eo re e fetisang e le li-parameter lebitso la database ea Oracle, lebitso la potso ea sql, ho kena le password bakeng sa ho hokahanya le database. Beha nako ea ntlafatso ea potso ho metsotso e 5 (metsotsoana e 300).

2) Создаём остальные метрики для каждого статуса ТС. Значения этих метрик будут формироваться на основании результата проверки основной метрики.

DIY: kamoo re iketsetsang tlhokomelo ea polokelo ea thepa

Re beha lebitso la karolo ea data, re bonts'a mofuta oa "Netefatso ea kantle". Sebakeng sa "Key", re hlalosa script eo re e fetisang e le li-parameter lebitso la database ea Oracle le khoutu ea boemo eo re batlang ho e latela. Re beha nako ea ntlafatso ea lipotso ho metsotsoana e 10 ho feta metric e kholo (metsotsoana e 310) e le hore liphetho li be le nako ea ho ngolloa faeleng.

Ho fumana metrics ka nepo, tatellano eo licheke li kengoang tšebetsong e bohlokoa. E le ho qoba likhohlano ha re fumana data, pele ho tsohle re kenya ts'ebetso ea mantlha ea metric GetCarsByStatus ka ho letsetsa script - wh_Metrics.sh.

Настройки → Узлы → ’имя узла’ → Элементы данных → Подфильтр “Внешние проверки”. Отмечаем нужную проверку и нажимаем “Активировать”.

DIY: kamoo re iketsetsang tlhokomelo ea polokelo ea thepa

Далее активируем остальные метрики одной операцией, выделив их все вместе:

DIY: kamoo re iketsetsang tlhokomelo ea polokelo ea thepa

Теперь Zabbix начал собирать бизнес-метрики складов.

Lingoliloeng tse latelang, re tla shebisisa ho hokahanya Grafana le ho theha li-dashboard tsa tlhahisoleseling tsa ts'ebetso ea polokelo bakeng sa mekhahlelo e fapaneng ea basebelisi. Grafana e boetse e sebelisetsoa ho beha leihlo ho kheloha ts'ebetsong ea polokelo ea thepa, 'me, ho itšetlehile ka meeli le makhetlo a kheloha, ho ngolisa liketsahalo tsamaisong ea setsi sa litšebeletso tsa tsamaiso ea polokelo ka API kapa ho romela litsebiso ho mookameli ka imeile.

DIY: kamoo re iketsetsang tlhokomelo ea polokelo ea thepa

Source: www.habr.com

Eketsa ka tlhaloso