DIY: бид агуулахын хяналтыг хэрхэн автоматжуулдаг

X5 нь 43 түгээлтийн төв, өөрийн 4 ачааны машин ажиллуулж, 029 дэлгүүрт бүтээгдэхүүнээ тасралтгүй нийлүүлдэг. Энэ нийтлэлд би агуулахын үйл явдлыг эхнээс нь хянах интерактив системийг бий болгох туршлагаа хуваалцах болно. Энэ мэдээлэл нь олон төрлийн бүтээгдэхүүнийг удирддаг хэдэн арван түгээлтийн төвтэй худалдааны компаниудын логистикчдод хэрэгтэй болно.

DIY: бид агуулахын хяналтыг хэрхэн автоматжуулдаг

Дүрмээр бол хяналт-шинжилгээ, бизнесийн үйл явцын удирдлагын системийг бий болгох нь мессеж, тохиолдлыг боловсруулахаас эхэлдэг. Үүний зэрэгцээ бизнесийн үйл явдал болсон баримтыг автоматжуулах, зөрчлийг бүртгэх боломжтой холбоотой технологийн чухал цэгийг орхигдуулсан байна. WMS, TMS гэх мэт ихэнх бизнесийн системүүд өөрсдийн үйл явцыг хянах хэрэгслүүдтэй байдаг. Гэхдээ хэрэв эдгээр нь өөр өөр үйлдвэрлэгчдийн систем эсвэл хяналтын функц хангалттай хөгжөөгүй бол та үнэтэй өөрчлөлтийг захиалах эсвэл нэмэлт тохиргоонд мэргэшсэн зөвлөхүүдийг татах хэрэгтэй.

Системээс шалгуур үзүүлэлтийг олж авахын тулд эх сурвалжийг (хүснэгт) тодорхойлохтой холбоотой зөвлөгөөний багахан хэсгийг л авах аргыг авч үзье.

Манай агуулахуудын онцлог нь нэг логистикийн цогцолборт хэд хэдэн агуулахын удирдлагын систем (WMS Exceed) ажилладаг. Агуулах нь зөвхөн логикийн хувьд төдийгүй барааны хадгалалтын ангилалд (хуурай, архи, хөлдөөсөн гэх мэт) хуваагддаг. Логистикийн нэг цогцолбор дотор хэд хэдэн тусдаа агуулахын барилга байдаг бөгөөд тус бүрийг өөрийн WMS удирддаг.

DIY: бид агуулахын хяналтыг хэрхэн автоматжуулдаг

Агуулахад болж буй үйл явцын ерөнхий дүр зургийг бүрдүүлэхийн тулд менежерүүд WMS бүрийн тайланд өдөрт хэд хэдэн удаа дүн шинжилгээ хийж, агуулахын операторуудын (хүлээн авагч, сонгогч, овоолгын) мессежийг боловсруулж, мэдээллийн самбар дээр тусгахын тулд үйл ажиллагааны бодит үзүүлэлтүүдийг нэгтгэн дүгнэдэг.

Менежерүүдийн цагийг хэмнэхийн тулд бид агуулахын үйл явдлыг шуурхай хянах хямд системийг боловсруулахаар шийдсэн. Шинэ систем нь агуулахын үйл ажиллагааны гүйцэтгэлийн "халуун" үзүүлэлтүүдийг харуулахаас гадна зөрчлийг бүртгэх, өгөгдсөн үзүүлэлтүүдэд нөлөөлж буй шалтгааныг арилгах даалгаврын хэрэгжилтэд хяналт тавихад менежерүүдэд туслах ёстой. Компанийн мэдээллийн технологийн архитектурын ерөнхий аудитыг хийсний дараа шаардлагатай системийн бие даасан хэсгүүд манай ландшафт дээр аль хэдийн аль хэдийн байдаг бөгөөд тэдгээрийн хувьд тохиргоо, шаардлагатай дэмжлэгийн үйлчилгээ байдаг гэдгийг ойлгосон. Үлдсэн зүйл бол бүхэл бүтэн үзэл баримтлалыг нэг архитектурын шийдэлд оруулж, хөгжлийн цар хүрээг тооцоолох явдал юм.

Шинэ системийг бий болгоход шаардагдах ажлын хэмжээг үнэлсний дараа төслийг хэд хэдэн үе шатанд хуваахаар шийдсэн.

  1. Агуулах үйл явцын үзүүлэлтүүдийг цуглуулах, үзүүлэлт, хазайлтыг дүрслэн харуулах, хянах
  2. Үйл явцын стандартыг автоматжуулах, хазайлтыг бизнесийн үйлчилгээний үйлчилгээнд бүртгэх
  3. Ачааллыг урьдчилан таамаглах, менежерүүдэд зориулсан зөвлөмж гаргах замаар идэвхтэй хяналт тавих.

Эхний шатанд систем нь цогцолборын бүх WMS-ээс үйл ажиллагааны мэдээллийн бэлтгэсэн зүсмэлүүдийг цуглуулах ёстой. Унших нь бараг бодит цаг хугацаанд (5 минутаас бага интервал) явагддаг. Энэ заль мэх нь системийг бүхэлд нь сүлжээнд байрлуулахдаа хэдэн арван агуулахын DBMS-ээс өгөгдлийг авах ёстой. Хүлээн авсан үйл ажиллагааны өгөгдлийг системийн үндсэн логикоор боловсруулж, төлөвлөсөн үзүүлэлтүүдээс хазайлтыг тооцож, статистикийг тооцдог. Энэ аргаар боловсруулсан өгөгдлийг менежерийн таблет эсвэл агуулахын мэдээллийн самбар дээр ойлгомжтой график, диаграм хэлбэрээр харуулах ёстой.

DIY: бид агуулахын хяналтыг хэрхэн автоматжуулдаг

Эхний шатны туршилтын хэрэгжилтэд тохирох системийг сонгохдоо бид Zabbix-ийг сонгосон. Энэ системийг агуулахын системийн мэдээллийн технологийн гүйцэтгэлийг хянахад аль хэдийн ашиглаж байна. Агуулахын үйл ажиллагааны бизнесийн хэмжигдэхүүнийг цуглуулах тусдаа суурилуулалтыг нэмснээр та агуулахын эрүүл мэндийн ерөнхий дүр зургийг авах боломжтой.

Системийн ерөнхий архитектур зураг дээрх шиг болсон.

DIY: бид агуулахын хяналтыг хэрхэн автоматжуулдаг

WMS instance бүр нь хяналтын системийн хост гэж тодорхойлогддог. Мэдээллийг өгөгдлийн төвийн сүлжээн дэх төв сервер бэлтгэсэн SQL асуулга бүхий скриптийг ажиллуулах замаар цуглуулдаг. Хэрэв та мэдээллийн санд шууд хандахыг зөвлөдөггүй системийг (жишээ нь, SAP EWM) хянах шаардлагатай бол үзүүлэлтүүдийг олж авах эсвэл python/vbascript дээр энгийн програм бичихийн тулд баримтжуулсан API функцүүдийн скрипт дуудлагыг ашиглаж болно.

Үндсэн серверээс ачааллыг хуваарилахын тулд агуулахын сүлжээнд Zabbix прокси инстанцыг байрлуулсан. Проксигоор дамжуулан бүх локал WMS инстанцуудтай ажиллах боломжтой. Дараагийн удаа Zabbix сервер параметр хүсэх үед WMS мэдээллийн сангаас хэмжигдэхүүн хүсэх скриптийг Zabbix прокси ашиглан хост дээр ажиллуулдаг.

Төв Zabbix сервер дээр график болон агуулахын үзүүлэлтүүдийг харуулахын тулд бид Grafana-г ашигладаг. Графана нь агуулахын үйл ажиллагааны инфографик бүхий бэлтгэсэн хяналтын самбарыг харуулахаас гадна үзүүлэлтүүдийн хазайлтыг хянах, бизнесийн осолтой ажиллах зорилгоор агуулахын үйлчилгээний системд автомат дохио илгээхэд ашиглагдана.

Жишээлбэл, агуулах хүлээн авах хэсэгт ачааллын хяналтын хэрэгжилтийг авч үзье. Агуулахын энэ хэсэгт үйл явцын гүйцэтгэлийн үндсэн үзүүлэлт болгон дараахь зүйлийг сонгосон.

  • статусыг (төлөвлөсөн, ирсэн, бичиг баримт, буулгах, явах) харгалзан хүлээн авах хэсэгт байгаа тээврийн хэрэгслийн тоо;
  • байрлуулах, дүүргэх талбайн ажлын ачаалал (хадгалалтын нөхцлийн дагуу).

Тохиргоо

Системийн үндсэн бүрэлдэхүүн хэсгүүдийн (SQLcl, Zabbix, Grafana) суурилуулалт, тохиргоог янз бүрийн эх сурвалжид тайлбарласан бөгөөд энд давтагдахгүй. SQLplus-ийн оронд SQLcl-ийг ашиглах нь SQLcl (Java хэл дээр бичигдсэн Oracle DBMS-ийн командын мөрийн интерфейс) нь Oracle Client-ийн нэмэлт суулгалтыг шаарддаггүй бөгөөд хайрцагнаас гадуур ажилладагтай холбоотой юм.

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

Хамгийн гол нь ийм системийг хэрэгжүүлэхдээ системээс өгсөн тохиргоог ашиглан програмчлалгүйгээр хийх боломжтой юм.

Zabbix хяналтын систем нь хяналттай системээс хэмжигдэхүүнийг цуглуулах хэд хэдэн сонголтыг өгдөг. Үүнийг хянадаг хостуудаас шууд санал авах, эсвэл доод түвшний илрүүлэлтийн параметрүүдийг тохируулах аргуудыг багтаасан хостын zabbix_sender-ээр дамжуулан сервер рүү өгөгдөл илгээх илүү дэвшилтэт аргаар хийж болно. Бидний асуудлыг шийдэхийн тулд төв серверээр хостуудыг шууд санал авах арга нь маш тохиромжтой, учир нь Энэ нь танд хэмжигдэхүүнийг олж авах дарааллыг бүрэн хянах боломжийг олгож, хянаж буй хост бүрт хуваарилах шаардлагагүйгээр нэг багц тохиргоо/скриптийг ашиглах боломжийг олгоно.

Системийг дибаг хийх, тохируулах "туршилтын субьект"-ийн хувьд бид WMS ажлын хуудсыг хүлээн авах менежментэд ашигладаг:

  1. Хүлээн авалт дээр ирсэн бүх тээврийн хэрэгсэл: "Одоогийн цагаас хойш 72 цагийн дотор" статустай бүх тээврийн хэрэгсэл - SQL асуулга танигч: машин авах.
  2. Бүх тээврийн хэрэгслийн статусын түүх: 72 цагийн дотор ирсэн бүх тээврийн хэрэгслийн статус - SQL асуулгын танигч: автомашины түүх.
  3. Хүлээн авах хуваарьт тээврийн хэрэгсэл: "Хуваарьт" төлөвт ирсэн бүх тээврийн хэрэгслийн төлөв байдал, одоогийн цаг хугацааны интервал "- 24 цаг" ба "+24 цаг" - SQL асуулгын тодорхойлогч: машинууд.

Тиймээс, бид агуулахын гүйцэтгэлийн хэмжүүрүүдийн багцыг шийдсэний дараа WMS мэдээллийн санд зориулсан SQL асуулга бэлтгэх болно. Асуултуудыг гүйцэтгэхийн тулд үндсэн мэдээллийн сан биш, харин түүний "халуун" хуулбар - зогсолтыг ашиглахыг зөвлөж байна.

Бид өгөгдөл хүлээн авахын тулд Oracle DBMS-д холбогдоно. Туршилтын мэдээллийн санд холбогдох IP хаяг 192.168.1.106. Бид холболтын параметрүүдийг SQLcl ажлын хавтасны TNSNames.ORA дахь Zabbix сервер дээр хадгалдаг.

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

Энэ нь бидэнд EZconnect-ээр дамжуулан хост бүрт SQL асуулга явуулах боломжийг олгож, зөвхөн нэвтрэх/нууц үг болон мэдээллийн сангийн нэрийг зааж өгөх болно:

# sql znew/Zabmon1@WH1_1

Бид бэлтгэсэн SQL асуулгыг Zabbix сервер дээрх ажлын хавтсанд хадгалдаг.

/etc/zabbix/sql

мөн манай серверийн zabbix хэрэглэгч рүү нэвтрэхийг зөвшөөрөх:

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

Хүсэлт бүхий файлууд нь Zabbix серверээс хандах өвөрмөц танигч нэрийг хүлээн авдаг. SQLcl-ээр дамжуулан өгөгдлийн сангийн асуулга бүр бидэнд хэд хэдэн параметрүүдийг буцаана. Хүсэлт бүрт зөвхөн нэг хэмжигдэхүүнийг боловсруулах боломжтой Zabbix-ийн онцлогийг харгалзан бид асуулгын үр дүнг бие даасан хэмжигдэхүүн болгон задлан шинжлэхэд нэмэлт скрипт ашиглах болно.

Үндсэн скриптийг бэлтгэж, үүнийг wh_Metrics.sh гэж нэрлэцгээе, мэдээллийн санд SQL хайлт дуудаж, үр дүнг хадгалж, өгөгдөл сэргээх амжилтын үзүүлэлт бүхий техникийн хэмжигдэхүүнийг буцаана:

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

Скриптийн үр дүнг хүлээн авах мэдээллийн баазыг скриптийн параметр болгон дамжуулах болно. Өгөгдлийн сангийн ID нь TNSNames.ORA файл дахь тохиргооны мөртэй тохирч байх ёстой.

SQL асуулгын дуудлагын үр дүн гэх мэт файлд хадгалагдана mon_base_id_main.log хаана base_id = Өгөгдлийн сангийн танигчийг скриптийн параметр болгон хүлээн авсан. Үр дүнгийн файлыг өгөгдлийн сангийн танигчаар хуваах нь серверээс хэд хэдэн мэдээллийн санд нэгэн зэрэг хүсэлт ирсэн тохиолдолд хийгддэг. Асуулга нь эрэмбэлэгдсэн хоёр хэмжээст утгын массивыг буцаана.

Дараах скрипт, үүнийг getMetrica.sh гэж нэрлэе, хүсэлтийн үр дүн бүхий файлаас тодорхой хэмжигдэхүүнийг олж авахад шаардлагатай:

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

Одоо бид Zabbix-ийг тохируулж, агуулахын хүлээн авах үйл явцын үзүүлэлтүүдийг хянахад бэлэн боллоо.

Өгөгдлийн сангийн зангилаа бүр дээр Zabbix агент суулгаж тохируулсан.

Үндсэн сервер дээр бид Zabbix прокси бүхий бүх серверүүдийг тодорхойлдог. Тохиргоог хийхийн тулд дараах зам руу очно уу.

Захиргаа → Прокси → Прокси үүсгэх

DIY: бид агуулахын хяналтыг хэрхэн автоматжуулдаг

Бид хяналттай хостуудыг тодорхойлдог:

Тохиргоо → Хостууд → Хост үүсгэх

DIY: бид агуулахын хяналтыг хэрхэн автоматжуулдаг

Хост нэр нь агентын тохиргооны файлд заасан хост нэртэй тохирч байх ёстой.

Бид зангилааны бүлэг, мөн мэдээллийн баазтай зангилааны IP хаяг эсвэл DNS нэрийг зааж өгдөг.

Бид хэмжигдэхүүнүүдийг үүсгэж, тэдгээрийн шинж чанарыг тодорхойлдог:

Тохиргоо → Зангилаа → "зангилааны нэр" → Өгөгдлийн зүйл>Өгөгдлийн зүйл үүсгэх

1) Өгөгдлийн сангаас бүх параметрүүдийг асуух үндсэн хэмжигдэхүүнийг үүсгэ

DIY: бид агуулахын хяналтыг хэрхэн автоматжуулдаг

Бид өгөгдлийн элементийн нэрийг тохируулж, "Гадаад баталгаажуулалт" төрлийг зааж өгнө. "Түлхүүр" талбарт бид Oracle мэдээллийн сангийн нэр, sql асуулгын нэр, мэдээллийн санд холбогдох нэвтрэх нэр, нууц үг зэргийг параметр болгон дамжуулах скриптийг тодорхойлно. Асуулга шинэчлэх интервалыг 5 минут (300 секунд) болгож тохируулна уу.

2) Тээврийн хэрэгслийн статус бүрийн үлдэгдэл хэмжигдэхүүнийг үүсгэ. Эдгээр хэмжигдэхүүнүүдийн утгыг үндсэн хэмжүүрийг шалгасны үр дүнд үндэслэн үүсгэнэ.

DIY: бид агуулахын хяналтыг хэрхэн автоматжуулдаг

Бид өгөгдлийн элементийн нэрийг тохируулж, "Гадаад баталгаажуулалт" төрлийг зааж өгнө. "Түлхүүр" талбарт бид Oracle мэдээллийн сангийн нэр болон утгыг нь хянахыг хүсч буй статусын кодыг параметр болгон дамжуулах скриптийг тодорхойлно. Бид асуулгын шинэчлэлтийн интервалыг үндсэн хэмжигдэхүүнээс (10 секунд) 310 секундээр урт болгож тохируулсан бөгөөд ингэснээр үр дүнг файлд бичих хугацаатай болно.

Хэмжилтийг зөв авахын тулд шалгалтыг идэвхжүүлэх дараалал чухал. Мэдээлэл хүлээн авахдаа зөрчилдөөн гарахаас зайлсхийхийн тулд юуны түрүүнд бид скриптийг дуудаж GetCarsByStatus үндсэн хэмжигдэхүүнийг идэвхжүүлдэг - wh_Metrics.sh.

Тохиргоо → Зангилаа → 'зангилааны нэр' → Өгөгдлийн элементүүд → "Гадаад шалгалт" дэд шүүлтүүр. Шаардлагатай чекийг тэмдэглээд "Идэвхжүүлэх" дээр дарна уу.

DIY: бид агуулахын хяналтыг хэрхэн автоматжуулдаг

Дараа нь бид үлдсэн хэмжигдэхүүнүүдийг нэг үйлдлээр идэвхжүүлж, бүгдийг нь хамтад нь сонгоно.

DIY: бид агуулахын хяналтыг хэрхэн автоматжуулдаг

Одоо Zabbix агуулахын бизнесийн хэмжүүрүүдийг цуглуулж эхэлсэн.

Дараах нийтлэлүүдэд бид Grafana-г холбох, янз бүрийн ангиллын хэрэглэгчдэд зориулсан агуулахын үйл ажиллагааны мэдээллийн самбарыг бий болгох талаар нарийвчлан авч үзэх болно. Мөн Grafana дээр үндэслэн агуулахын үйл ажиллагааны хазайлтын хяналтыг хэрэгжүүлдэг бөгөөд хазайлтын хил хязгаар, давтагдах байдлаас хамааран API-ээр дамжуулан агуулахын удирдлагын үйлчилгээний төвийн систем дэх зөрчлийг бүртгэх эсвэл менежерт имэйлээр мэдэгдэл илгээх боломжтой.

DIY: бид агуулахын хяналтыг хэрхэн автоматжуулдаг

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх