DIY: biz qanday qilib ombor monitoringini avtomatlashtiramiz

X5 43 ta distribyutor markazlari va 4 029 ta o'zining yuk avtomobillarini boshqarib, 15 752 do'konni mahsulot bilan uzluksiz yetkazib berishni ta'minlaydi. Ushbu maqolada men ombor voqealarini noldan kuzatish uchun interaktiv tizim yaratish tajribam bilan o'rtoqlashaman. Ma'lumotlar keng assortimentdagi mahsulotlarni boshqaradigan bir necha o'nlab tarqatish markazlari bo'lgan savdo kompaniyalari logistiklari uchun foydali bo'ladi.

DIY: biz qanday qilib ombor monitoringini avtomatlashtiramiz

Qoida tariqasida, monitoring va biznes-jarayonlarni boshqarish tizimlarini qurish xabarlar va hodisalarni qayta ishlashdan boshlanadi. Shu bilan birga, biznes hodisalari sodir bo'lish faktini avtomatlashtirish va hodisalarni qayd etish imkoniyati bilan bog'liq muhim texnologik nuqta o'tkazib yuborilgan. WMS, TMS va boshqalar kabi ko'pgina biznes tizimlarida o'z jarayonlarini kuzatish uchun o'rnatilgan vositalar mavjud. Ammo, agar bu turli ishlab chiqaruvchilarning tizimlari bo'lsa yoki monitoring funktsiyasi etarli darajada ishlab chiqilmagan bo'lsa, siz qimmat modifikatsiyalarga buyurtma berishingiz yoki qo'shimcha sozlamalar uchun maxsus maslahatchilarni jalb qilishingiz kerak.

Keling, tizimdan ko'rsatkichlarni olish uchun manbalarni (jadvallarni) aniqlash bilan bog'liq konsaltingning kichik bir qismiga muhtoj bo'lgan yondashuvni ko'rib chiqaylik.

Bizning omborlarimizning o'ziga xosligi shundaki, bitta logistika majmuasida bir nechta omborlarni boshqarish tizimlari (WMS Exceed) ishlaydi. Omborlar faqat mantiqiy emas, balki tovarlarni saqlash toifalariga (quruq, spirtli ichimliklar, muzlatilgan va boshqalar) bo'linadi. Bitta logistika majmuasida bir nechta alohida ombor binolari mavjud bo'lib, ularning har biri o'z WMS tomonidan boshqariladi.

DIY: biz qanday qilib ombor monitoringini avtomatlashtiramiz

Omborda sodir bo'layotgan jarayonlarning umumiy rasmini shakllantirish uchun menejerlar har bir WMS hisobotini kuniga bir necha marta tahlil qiladilar, ombor operatorlari (qabul qiluvchilar, yig'uvchilar, yig'uvchilar) xabarlarini qayta ishlaydilar va ma'lumot taxtasida aks ettirish uchun haqiqiy operatsion ko'rsatkichlarni umumlashtiradilar.

Menejerlarning vaqtini tejash uchun biz ombor hodisalarini operativ nazorat qilishning arzon tizimini ishlab chiqishga qaror qildik. Yangi tizim ombor jarayonlarining tezkor ko'rsatkichlarini ko'rsatishdan tashqari, menejerlarga hodisalarni qayd etishda va berilgan ko'rsatkichlarga ta'sir qiluvchi sabablarni bartaraf etish bo'yicha vazifalarning bajarilishini nazorat qilishda yordam berishi kerak. Kompaniyaning IT arxitekturasining umumiy auditini o'tkazganimizdan so'ng, biz kerakli tizimning alohida qismlari bizning landshaftimizda u yoki bu tarzda allaqachon mavjudligini va ular uchun sozlamalarni tekshirish va kerakli qo'llab-quvvatlash xizmatlari mavjudligini angladik. Faqat butun kontseptsiyani yagona me'moriy yechimga keltirish va rivojlanish ko'lamini taxmin qilish qoladi.

Yangi tizimni qurish uchun bajarilishi kerak bo'lgan ish hajmini baholagandan so'ng, loyihani bir necha bosqichlarga bo'lish to'g'risida qaror qabul qilindi:

  1. Ombor jarayonlari uchun ko'rsatkichlarni yig'ish, ko'rsatkichlar va og'ishlarni vizuallashtirish va nazorat qilish
  2. Jarayon standartlarini avtomatlashtirish va chetga chiqishlar bo'yicha biznes xizmatlari xizmatida arizalarni ro'yxatga olish
  3. Yuklarni prognozlash va menejerlar uchun tavsiyalar yaratish bilan faol monitoring.

Birinchi bosqichda tizim kompleksning barcha WMSlaridan tayyorlangan operatsion ma'lumotlar bo'laklarini to'plashi kerak. O'qish deyarli real vaqtda sodir bo'ladi (5 daqiqadan kam vaqt oralig'ida). Ayyorlik shundaki, tizimni butun tarmoqqa joylashtirishda ma'lumotlarni bir necha o'nlab omborlarning ma'lumotlar bazasidan olish kerak. Qabul qilingan operatsion ma'lumotlar rejalashtirilgan ko'rsatkichlardan og'ishlarni hisoblash va statistikani hisoblash uchun tizim yadrosi mantig'i bilan qayta ishlanadi. Shu tarzda qayta ishlangan ma'lumotlar menejerning planshetida yoki ombor ma'lumotlar taxtasida tushunarli grafik va diagrammalar ko'rinishida ko'rsatilishi kerak.

DIY: biz qanday qilib ombor monitoringini avtomatlashtiramiz

Birinchi bosqichni sinovdan o'tkazish uchun mos tizimni tanlashda biz Zabbixni tanladik. Ushbu tizim allaqachon ombor tizimlarining IT ishlashini kuzatish uchun ishlatiladi. Ombor faoliyatining biznes ko'rsatkichlarini yig'ish uchun alohida o'rnatishni qo'shish orqali siz omborning sog'lig'i haqida umumiy tasavvurga ega bo'lishingiz mumkin.

Tizimning umumiy arxitekturasi rasmdagi kabi chiqdi.

DIY: biz qanday qilib ombor monitoringini avtomatlashtiramiz

Har bir WMS namunasi monitoring tizimi uchun xost sifatida aniqlanadi. Ko'rsatkichlar ma'lumotlar markazi tarmog'idagi markaziy server tomonidan tayyorlangan SQL so'rovi bilan skriptni ishga tushirish orqali yig'iladi. Agar siz ma'lumotlar bazasiga to'g'ridan-to'g'ri kirishni tavsiya etmaydigan tizimni kuzatishingiz kerak bo'lsa (masalan, SAP EWM), ko'rsatkichlarni olish yoki python/vbascript-da oddiy dastur yozish uchun hujjatlashtirilgan API funktsiyalariga skript chaqiruvlaridan foydalanishingiz mumkin.

Zabbix proksi nusxasi asosiy serverdan yukni taqsimlash uchun ombor tarmog'ida joylashtirilgan. Proksi orqali barcha mahalliy WMS nusxalari bilan ishlash ta'minlanadi. Keyingi safar Zabbix serveri parametrlarni so'raganda, WMS ma'lumotlar bazasidan ko'rsatkichlarni so'rash uchun Zabbix proksi-server bilan xostda skript bajariladi.

Markaziy Zabbix serverida grafiklar va ombor ko'rsatkichlarini ko'rsatish uchun biz Grafana-ni o'rnatamiz. Ombor operatsiyalari infografikasi bilan tayyorlangan asboblar panelini ko'rsatishdan tashqari, Grafana indikatorlardagi og'ishlarni kuzatish va biznes hodisalari bilan ishlash uchun omborga xizmat ko'rsatish tizimiga avtomatik ogohlantirishlarni yuborish uchun ishlatiladi.

Misol tariqasida, omborni qabul qilish zonasida yukni nazorat qilishni amalga oshirishni ko'rib chiqaylik. Omborning ushbu sohasidagi jarayonning asosiy ko'rsatkichlari sifatida quyidagilar tanlandi:

  • holatlar (rejalashtirilgan, kelgan, hujjatlar, tushirish, jo'nab ketish) hisobga olingan holda qabulxonadagi transport vositalari soni;
  • joylashtirish va to'ldirish joylarining ish yuki (saqlash shartlariga muvofiq).

Sozlamalar

Tizimning asosiy komponentlarini (SQLcl, Zabbix, Grafana) o'rnatish va sozlash turli manbalarda tasvirlangan va bu erda takrorlanmaydi. SQLplus o'rniga SQLcl dan foydalanish SQLcl (java tilida yozilgan Oracle DBMS ning buyruq qatori interfeysi) Oracle Clientni qo'shimcha o'rnatishni talab qilmasligi va qutidan tashqarida ishlashi bilan bog'liq.

Men Zabbix-dan ombor biznes jarayoni ko'rsatkichlarini kuzatish uchun foydalanishda e'tibor berish kerak bo'lgan asosiy fikrlarni va ularni amalga oshirishning mumkin bo'lgan usullaridan birini tasvirlab beraman. Bundan tashqari, bu xavfsizlik haqida post emas. Ulanishlarning xavfsizligi va taqdim etilgan usullardan foydalanish uchuvchi yechimni samarali ishga o'tkazish jarayonida qo'shimcha o'rganishni talab qiladi.

Asosiysi, bunday tizimni amalga oshirishda tizim tomonidan taqdim etilgan sozlamalardan foydalanib, dasturlashsiz amalga oshirish mumkin.

Zabbix monitoring tizimi nazorat qilinadigan tizimdan o'lchovlarni yig'ish uchun bir nechta variantni taqdim etadi. Buni to'g'ridan-to'g'ri nazorat qilinadigan xostlarni so'rash orqali yoki xostning zabbix_sender orqali serverga ma'lumotlarni yuborishning yanada ilg'or usuli, jumladan, past darajadagi kashfiyot parametrlarini sozlash usullari orqali amalga oshirish mumkin. Bizning muammomizni hal qilish uchun markaziy server tomonidan xostlarni to'g'ridan-to'g'ri so'rov qilish usuli juda mos keladi, chunki bu sizga o'lchovlarni olish ketma-ketligi ustidan to'liq nazoratni qo'lga kiritish imkonini beradi va har bir nazorat qilinadigan xostga tarqatmaslik kerak bo'lgan sozlamalar/skriptlar to'plamidan foydalanishni ta'minlaydi.

Tizimni disk raskadrovka va sozlash uchun "sinov sub'ektlari" sifatida biz qabulni boshqarish uchun WMS ish varag'idan foydalanamiz:

  1. Qabulxonadagi avtomashinalar, barcha kelganlar: “- Joriy vaqtdan boshlab 72 soat” davri uchun maqomga ega bo‘lgan barcha transport vositalari - SQL so‘rovi identifikatori: getCars.
  2. Barcha transport vositalarining holati tarixi: 72 soat ichida kelgan barcha transport vositalarining holati - SQL so'rov identifikatori: avtomobillar tarixi.
  3. Qabul qilish uchun rejalashtirilgan transport vositalari: "Rejalashtirilgan" holatiga kelgan barcha transport vositalarining holati, vaqt oralig'i "- 24 soat" va joriy vaqtdan boshlab "+24 soat" - SQL so'rovi identifikatori: avtomobillar.

Shunday qilib, biz omborning ishlash ko'rsatkichlari to'plamiga qaror qilganimizdan so'ng, biz WMS ma'lumotlar bazasi uchun SQL so'rovlarini tayyorlaymiz. So'rovlarni bajarish uchun asosiy ma'lumotlar bazasidan emas, balki uning "issiq" nusxasi - kutish rejimidan foydalanish tavsiya etiladi.

Ma'lumotlarni qabul qilish uchun kutish rejimidagi Oracle DBMS ga ulanamiz. Test ma'lumotlar bazasiga ulanish uchun IP-manzil 192.168.1.106. Biz ulanish parametrlarini Zabbix serverida SQLcl ishchi papkasining TNSNames.ORA da saqlaymiz:

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

Bu bizga EZconnect orqali har bir xostga faqat login/parol va maʼlumotlar bazasi nomini koʻrsatgan holda SQL soʻrovlarini bajarish imkonini beradi:

# sql znew/Zabmon1@WH1_1

Tayyorlangan SQL so'rovlarini Zabbix serveridagi ishchi papkaga saqlaymiz:

/etc/zabbix/sql

va serverimizning zabbix foydalanuvchisiga kirishga ruxsat bering:

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

So'rovlari bo'lgan fayllar Zabbix serveridan kirish uchun noyob identifikator nomini oladi. SQLcl orqali har bir ma'lumotlar bazasi so'rovi bizga bir nechta parametrlarni qaytaradi. Har bir so'rov uchun faqat bitta ko'rsatkichni qayta ishlay oladigan Zabbixning o'ziga xos xususiyatlarini hisobga olgan holda, so'rov natijalarini individual ko'rsatkichlarga ajratish uchun qo'shimcha skriptlardan foydalanamiz.

Keling, asosiy skriptni tayyorlaymiz, keling, uni wh_Metrics.sh deb nomlaymiz, ma'lumotlar bazasiga SQL so'rovini chaqiramiz, natijalarni saqlaymiz va ma'lumotlarni qidirish muvaffaqiyati ko'rsatkichlari bilan texnik ko'rsatkichni qaytaramiz:

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

Biz tayyor faylni skript bilan Zabbix-proksi konfiguratsiya sozlamalariga muvofiq tashqi skriptlarni saqlash uchun papkaga joylashtiramiz (sukut bo'yicha - /usr/local/share/zabbix/externalscripts).

Skript natijalarini oladigan ma'lumotlar bazasi identifikatsiyasi skript parametri sifatida uzatiladi. Ma'lumotlar bazasi identifikatori TNSNames.ORA faylidagi sozlamalar qatoriga mos kelishi kerak.

SQL so'rovi chaqiruvining natijasi kabi faylda saqlanadi mon_base_id_main.log bu yerda base_id = Ma'lumotlar bazasi identifikatori skript parametri sifatida qabul qilindi. Natija faylining ma'lumotlar bazasi identifikatorlari bo'yicha bo'linishi serverdan bir vaqtning o'zida bir nechta ma'lumotlar bazalariga so'rovlar bo'lgan taqdirda ta'minlanadi. So'rov tartiblangan ikki o'lchovli qiymatlar qatorini qaytaradi.

Quyidagi skript, keling, uni getMetrica.sh deb ataymiz, so'rov natijasi bo'lgan fayldan belgilangan ko'rsatkichni olish uchun kerak bo'ladi:

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

Endi biz Zabbix-ni sozlashga va omborni qabul qilish jarayonlarining ko'rsatkichlarini kuzatishni boshlashga tayyormiz.

Har bir ma'lumotlar bazasi tugunida Zabbix agenti o'rnatilgan va sozlangan.

Asosiy serverda biz Zabbix proksi-serverlari bilan barcha serverlarni aniqlaymiz. Sozlamalar uchun quyidagi yo'lga o'ting:

Ma'muriyat → Proksi → Proksi-server yaratish

DIY: biz qanday qilib ombor monitoringini avtomatlashtiramiz

Biz boshqariladigan xostlarni aniqlaymiz:

Parametrlar → Xostlar → Xost yaratish

DIY: biz qanday qilib ombor monitoringini avtomatlashtiramiz

Xost nomi agent konfiguratsiya faylida ko'rsatilgan xost nomiga mos kelishi kerak.

Biz tugun uchun guruhni, shuningdek, ma'lumotlar bazasi bilan tugunning IP manzilini yoki DNS nomini belgilaymiz.

Biz ko'rsatkichlarni yaratamiz va ularning xususiyatlarini aniqlaymiz:

Parametrlar → Tugunlar → "tugun nomi" → Maʼlumotlar elementi>Maʼlumotlar elementini yaratish

1) Ma'lumotlar bazasidan barcha parametrlarni so'rash uchun asosiy ko'rsatkichni yarating

DIY: biz qanday qilib ombor monitoringini avtomatlashtiramiz

Biz ma'lumotlar elementining nomini o'rnatamiz, "Tashqi tekshirish" turini ko'rsatamiz. "Kalit" maydonida biz Oracle ma'lumotlar bazasi nomini, sql so'rovining nomini, ma'lumotlar bazasiga ulanish uchun login va parolni parametr sifatida o'tkazadigan skriptni aniqlaymiz. So'rovlarni yangilash oralig'ini 5 daqiqaga (300 soniya) o'rnating.

2) Har bir avtomobil holati uchun qolgan ko'rsatkichlarni yarating. Ushbu ko'rsatkichlarning qiymatlari asosiy ko'rsatkichni tekshirish natijalari asosida yaratiladi.

DIY: biz qanday qilib ombor monitoringini avtomatlashtiramiz

Biz ma'lumotlar elementining nomini o'rnatamiz, "Tashqi tekshirish" turini ko'rsatamiz. "Kalit" maydonida biz parametr sifatida Oracle ma'lumotlar bazasi nomini va qiymatini kuzatmoqchi bo'lgan holat kodini o'tkazadigan skriptni aniqlaymiz. Natijalarni faylga yozish uchun vaqt bo'lishi uchun so'rovlarni yangilash oralig'ini asosiy ko'rsatkichdan (10 soniya) 310 soniya uzunroq qilib qo'ydik.

Ko'rsatkichlarni to'g'ri olish uchun tekshirishlarni faollashtirish tartibi muhim ahamiyatga ega. Ma'lumotlarni qabul qilishda nizolarni oldini olish uchun, birinchi navbatda, skriptni chaqirish orqali GetCarsByStatus asosiy ko'rsatkichini faollashtiramiz - wh_Metrics.sh.

Sozlamalar → Tugunlar → “tugun nomi” → Maʼlumotlar elementlari → “Tashqi tekshiruvlar” subfiltri. Kerakli belgini belgilang va "Faollashtirish" tugmasini bosing.

DIY: biz qanday qilib ombor monitoringini avtomatlashtiramiz

Keyinchalik, qolgan ko'rsatkichlarni bitta operatsiyada faollashtiramiz, ularning barchasini birgalikda tanlaymiz:

DIY: biz qanday qilib ombor monitoringini avtomatlashtiramiz

Endi Zabbix ombor biznesi ko'rsatkichlarini yig'ishni boshladi.

Keyingi maqolalarda biz Grafana-ni ulash va turli toifadagi foydalanuvchilar uchun ombor operatsiyalari ma'lumotlar panelini yaratishni batafsil ko'rib chiqamiz. Grafana shuningdek, ombor operatsiyalaridagi og'ishlarni kuzatish va og'ishlarning chegaralari va chastotasiga qarab, API orqali omborlarni boshqarish servis markazi tizimida hodisalarni ro'yxatdan o'tkazish yoki shunchaki menejerga elektron pochta orqali bildirishnomalarni yuborish uchun ishlatiladi.

DIY: biz qanday qilib ombor monitoringini avtomatlashtiramiz

Manba: www.habr.com

a Izoh qo'shish