DIY: anbar monitorinqini necə avtomatlaşdırırıq

X5 43 distribüter mərkəzi və 4 yük maşını ilə işləyir və 029 15 mağazanın məhsullarının fasiləsiz təchizatını təmin edir. Bu yazıda anbar hadisələrini sıfırdan izləmək üçün interaktiv sistem yaratmaq təcrübəmi bölüşəcəyəm. Məlumat geniş çeşiddə məhsulları idarə edən bir neçə onlarla distribyutor mərkəzi olan ticarət şirkətlərinin logistləri üçün faydalı olacaqdır.

DIY: anbar monitorinqini necə avtomatlaşdırırıq

Bir qayda olaraq, monitorinq və biznes proseslərinin idarə edilməsi sistemlərinin qurulması mesajların və insidentlərin işlənməsi ilə başlayır. Eyni zamanda, biznes hadisələrinin baş vermə faktının avtomatlaşdırılması və insidentlərin qeydə alınması imkanı ilə bağlı mühüm texnoloji məqam qaçırılır. WMS, TMS və s. kimi əksər biznes sistemlərində öz proseslərini izləmək üçün daxili alətlər var. Ancaq bunlar müxtəlif istehsalçıların sistemləridirsə və ya monitorinq funksiyası kifayət qədər inkişaf etdirilməyibsə, bahalı dəyişikliklər sifariş etməli və ya əlavə parametrlər üçün ixtisaslaşmış məsləhətçiləri cəlb etməlisiniz.

Sistemdən göstəriciləri əldə etmək üçün mənbələrin (cədvəllərin) müəyyən edilməsi ilə bağlı məsləhətləşmənin yalnız kiçik bir hissəsinə ehtiyac duyduğumuz yanaşmanı nəzərdən keçirək.

Bizim anbarlarımızın özəlliyi ondan ibarətdir ki, bir logistika kompleksində bir neçə anbar idarəetmə sistemi (WMS Exceed) fəaliyyət göstərir. Anbarlar malların saxlanma kateqoriyalarına görə (quru, spirt, dondurulmuş və s.) təkcə məntiqi olaraq deyil, bölünür. Bir logistika kompleksində hər biri öz WMS tərəfindən idarə olunan bir neçə ayrı anbar binası var.

DIY: anbar monitorinqini necə avtomatlaşdırırıq

Anbarda baş verən proseslərin ümumi mənzərəsini formalaşdırmaq üçün menecerlər hər bir WMS-in hesabatını gündə bir neçə dəfə təhlil edir, anbar operatorlarından (qəbuledicilər, toplayıcılar, yığmaçılar) mesajları emal edir və məlumat lövhəsində əks etdirmək üçün faktiki əməliyyat göstəricilərini ümumiləşdirir.

Menecerlərin vaxtına qənaət etmək üçün biz anbar hadisələrinin operativ nəzarəti üçün ucuz sistem hazırlamaq qərarına gəldik. Yeni sistem anbar proseslərinin operativ fəaliyyətinin “qaynar” göstəricilərini göstərməklə yanaşı, həm də rəhbərlərə insidentlərin qeydə alınmasında və verilmiş göstəricilərə təsir edən səbəblərin aradan qaldırılması üçün tapşırıqların icrasına nəzarətdə kömək etməlidir. Şirkətin İT arxitekturasının ümumi auditini apardıqdan sonra biz başa düşdük ki, tələb olunan sistemin ayrı-ayrı hissələri bu və ya digər şəkildə bizim landşaftımızda artıq mövcuddur və onlar üçün həm parametrlərin yoxlanılması, həm də lazımi dəstək xidmətləri mövcuddur. Bütün konsepsiyanı vahid memarlıq həllinə gətirmək və inkişaf miqyasını qiymətləndirmək qalır.

Yeni sistemin qurulması üçün görülməli olan işlərin həcmini qiymətləndirdikdən sonra layihəni bir neçə mərhələyə bölmək qərara alındı:

  1. Anbar prosesləri üçün göstəricilərin toplanması, göstəricilərin və kənarlaşmaların vizuallaşdırılması və nəzarəti
  2. Proses standartlarının avtomatlaşdırılması və kənarlaşmalar üçün biznes xidmətləri xidmətində müraciətlərin qeydiyyatı
  3. Yükün proqnozlaşdırılması və menecerlər üçün tövsiyələrin yaradılması ilə proaktiv monitorinq.

Birinci mərhələdə sistem kompleksin bütün WMS-lərindən hazırlanmış əməliyyat məlumatlarının dilimlərini toplamalıdır. Oxuma demək olar ki, real vaxt rejimində baş verir (5 dəqiqədən az fasilələrlə). Hiylə ondan ibarətdir ki, sistemi bütün şəbəkəyə yerləşdirərkən bir neçə onlarla anbarın DBMS-dən məlumat əldə edilməlidir. Planlaşdırılmış göstəricilərdən kənarlaşmaları hesablamaq və statistik məlumatları hesablamaq üçün alınan əməliyyat məlumatları sistem nüvəsinin məntiqi ilə işlənir. Bu şəkildə işlənmiş məlumatlar menecerin planşetində və ya anbar məlumat lövhəsində başa düşülən qrafiklər və diaqramlar şəklində göstərilməlidir.

DIY: anbar monitorinqini necə avtomatlaşdırırıq

Birinci mərhələnin pilot tətbiqi üçün uyğun sistemi seçərkən biz Zabbix-i seçdik. Bu sistem artıq anbar sistemlərinin İT performansına nəzarət etmək üçün istifadə olunur. Anbar fəaliyyətinin biznes ölçülərini toplamaq üçün ayrıca quraşdırma əlavə etməklə, anbarın sağlamlığının ümumi mənzərəsini əldə edə bilərsiniz.

Sistemin ümumi arxitekturası şəkildəki kimi çıxdı.

DIY: anbar monitorinqini necə avtomatlaşdırırıq

Hər bir WMS nümunəsi monitorinq sistemi üçün host kimi müəyyən edilir. Metriklər hazırlanmış SQL sorğusu ilə skript işlətməklə məlumat mərkəzi şəbəkəsindəki mərkəzi server tərəfindən toplanır. Əgər verilənlər bazasına birbaşa çıxışı tövsiyə etməyən sistemə nəzarət etmək lazımdırsa (məsələn, SAP EWM), göstəriciləri əldə etmək və ya python/vbascript-də sadə proqram yazmaq üçün sənədləşdirilmiş API funksiyalarına skript çağırışlarından istifadə edə bilərsiniz.

Yükü əsas serverdən paylamaq üçün anbar şəbəkəsində Zabbix proksi nümunəsi yerləşdirilir. Proxy vasitəsilə bütün yerli WMS instansiyaları ilə işləmək təmin edilir. Növbəti dəfə Zabbix serveri parametrlər tələb etdikdə, WMS verilənlər bazasından ölçüləri tələb etmək üçün Zabbix proxy ilə hostda skript icra olunur.

Mərkəzi Zabbix serverində qrafikləri və anbar göstəricilərini göstərmək üçün biz Grafana tətbiq edirik. Anbar əməliyyatlarının infoqrafikası ilə hazırlanmış tablosunu nümayiş etdirməklə yanaşı, Grafana göstəricilərdəki sapmalara nəzarət etmək və biznes insidentləri ilə işləmək üçün anbar xidmət sisteminə avtomatik xəbərdarlıqlar göndərmək üçün istifadə olunacaq.

Nümunə olaraq anbarın qəbul zonasında yükə nəzarətin həyata keçirilməsini nəzərdən keçirək. Anbarın bu sahəsindəki prosesin əsas göstəriciləri olaraq aşağıdakılar seçilmişdir:

  • statuslar nəzərə alınmaqla qəbul zonasındakı nəqliyyat vasitələrinin sayı (planlı, gəliş, sənədlər, boşalma, yola düşmə);
  • yerləşdirmə və doldurma sahələrinin iş yükü (saxlama şəraitinə uyğun olaraq).

Parametrlər

Sistemin əsas komponentlərinin (SQLcl, Zabbix, Grafana) quraşdırılması və konfiqurasiyası müxtəlif mənbələrdə təsvir edilmişdir və burada təkrarlanmayacaq. SQLplus əvəzinə SQLcl-in istifadəsi SQLcl-in (java dilində yazılmış Oracle DBMS-nin komanda xətti interfeysi) Oracle Client-in əlavə quraşdırılmasını tələb etməməsi və qutudan kənar işləməsi ilə əlaqədardır.

Anbar iş prosesinin göstəricilərini izləmək üçün Zabbix-dən istifadə edərkən diqqət edilməli olan əsas məqamları və onların həyata keçirilməsinin mümkün yollarından birini təsvir edəcəyəm. Həm də bu, təhlükəsizliklə bağlı yazı deyil. Bağlantıların təhlükəsizliyi və təqdim olunan metodların istifadəsi pilot həllin məhsuldar işə köçürülməsi prosesində əlavə araşdırma tələb edir.

Əsas odur ki, belə bir sistemi həyata keçirərkən, sistemin təqdim etdiyi parametrlərdən istifadə edərək, proqramlaşdırmadan da etmək mümkündür.

Zabbix monitorinq sistemi monitorinq edilən sistemdən ölçüləri toplamaq üçün bir neçə variant təqdim edir. Bu, ya monitorinq edilən hostları birbaşa sorğulamaqla, ya da aşağı səviyyəli kəşf parametrlərini konfiqurasiya etmək üsulları da daxil olmaqla, hostun zabbix_sender vasitəsilə serverə məlumat göndərilməsinin daha təkmil üsulu ilə edilə bilər. Problemimizi həll etmək üçün mərkəzi server tərəfindən hostların birbaşa sorğusu üsulu olduqca uyğundur, çünki bu, sizə ölçülərin əldə edilməsi ardıcıllığına tam nəzarət etməyə imkan verir və hər monitorinq edilən hosta paylamağa ehtiyac olmadan bir sıra parametrlər/skriptlərdən istifadə etməyinizi təmin edir.

Sistemin sazlanması və qurulması üçün "sınaq subyektləri" olaraq, qəbulun idarə edilməsi üçün WMS iş vərəqindən istifadə edirik:

  1. Qəbulda olan avtomobillər, gələnlərin hamısı: “- cari vaxtdan 72 saat” müddətinə statuslu bütün nəqliyyat vasitələri - SQL sorğu identifikatoru: getCars.
  2. Bütün nəqliyyat vasitələrinin statuslarının tarixi: 72 saat ərzində gələn bütün nəqliyyat vasitələrinin statusları - SQL sorğu identifikatoru: avtomobillərin tarixi.
  3. Qəbul üçün planlaşdırılmış nəqliyyat vasitələri: “Planlı” statusunda gələn bütün nəqliyyat vasitələrinin statusları, vaxt intervalı “- 24 saat” və cari vaxtdan “+24 saat” - SQL sorğu identifikatoru: avtomobillər.

Beləliklə, bir sıra anbar performans göstəriciləri haqqında qərar verdikdən sonra WMS verilənlər bazası üçün SQL sorğuları hazırlayacağıq. Sorğuları yerinə yetirmək üçün əsas verilənlər bazasından deyil, onun "isti" nüsxəsindən - gözləmə rejimindən istifadə etmək məsləhətdir.

Məlumat qəbul etmək üçün gözləmə rejimində olan Oracle DBMS-ə qoşuluruq. Test verilənlər bazasına qoşulmaq üçün IP ünvanı 192.168.1.106. Bağlantı parametrlərini Zabbix serverində SQLcl iş qovluğunun TNSNames.ORA-da saxlayırıq:

# 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, bizə yalnız giriş/parol və verilənlər bazası adını göstərərək EZconnect vasitəsilə hər bir hosta SQL sorğularını icra etməyə imkan verəcək:

# sql znew/Zabmon1@WH1_1

Hazırlanmış SQL sorğularını Zabbix serverində iş qovluğunda saxlayırıq:

/etc/zabbix/sql

və serverimizin zabbix istifadəçisinə daxil olmağa icazə verin:

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

Sorğuları olan fayllar Zabbix serverindən giriş üçün unikal identifikator adı alır. SQLcl vasitəsilə hər bir verilənlər bazası sorğusu bizə bir neçə parametr qaytarır. Hər sorğu üçün yalnız bir metrikanı emal edə bilən Zabbix-in xüsusiyyətlərini nəzərə alaraq, sorğu nəticələrini fərdi metriklərə ayırmaq üçün əlavə skriptlərdən istifadə edəcəyik.

Əsas skripti hazırlayaq, onu wh_Metrics.sh adlandıraq, verilənlər bazasına SQL sorğusunu çağırmaq, nəticələri saxlamaq və məlumatların axtarışının uğurunun göstəriciləri ilə texniki metrikanı qaytarmaq:

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

Hazır faylı Zabbix-proxy konfiqurasiya parametrlərinə uyğun olaraq xarici skriptləri saxlamaq üçün qovluğa skriptlə yerləşdiririk (standart olaraq - /usr/local/share/zabbix/externalscripts).

Skriptin nəticələri alacağı verilənlər bazasının identifikasiyası skript parametri kimi ötürüləcək. Verilənlər bazası identifikatoru TNSNames.ORA faylındakı parametrlər xəttinə uyğun olmalıdır.

SQL sorğu çağırışının nəticəsi kimi faylda saxlanılır mon_base_id_main.log burada base_id = Verilənlər bazası identifikatoru skript parametri kimi qəbul edilir. Nəticə faylının verilənlər bazası identifikatorları üzrə bölünməsi serverdən eyni vaxtda bir neçə verilənlər bazasına müraciətlər olduqda təmin edilir. Sorğu sıralanmış iki ölçülü dəyərlər massivini qaytarır.

Aşağıdakı skript, gəlin onu getMetrica.sh adlandıraq, sorğunun nəticəsi olan fayldan müəyyən metrikanı əldə etmək üçün lazımdır:

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

İndi biz Zabbix-i konfiqurasiya etməyə və anbar qəbulu proseslərinin monitorinq göstəricilərinə başlamağa hazırıq.

Hər bir verilənlər bazası qovşağında Zabbix agenti quraşdırılıb və konfiqurasiya edilib.

Əsas serverdə biz Zabbix proxy ilə bütün serverləri təyin edirik. Parametrlər üçün aşağıdakı yola keçin:

İdarəetmə → Proksi → Proksi yaradın

DIY: anbar monitorinqini necə avtomatlaşdırırıq

Biz idarə olunan hostları müəyyən edirik:

Parametrlər → Hostlar → Host yarat

DIY: anbar monitorinqini necə avtomatlaşdırırıq

Host adı agent konfiqurasiya faylında göstərilən host adına uyğun olmalıdır.

Düyün üçün qrupu, həmçinin verilənlər bazası ilə qovşağın IP ünvanını və ya DNS adını müəyyənləşdiririk.

Metriklər yaradırıq və onların xüsusiyyətlərini müəyyənləşdiririk:

Parametrlər → Qovşaqlar → 'qovşağın adı' → Məlumat elementləri>Məlumat elementi yaradın

1) Verilənlər bazasından bütün parametrləri sorğulamaq üçün əsas metrik yaradın

DIY: anbar monitorinqini necə avtomatlaşdırırıq

Məlumat elementinin adını təyin etdik, "Xarici yoxlama" növünü göstərin. “Açar” sahəsində biz Oracle verilənlər bazasının adını, sql sorğusunun adını, verilənlər bazasına qoşulmaq üçün loqin və parolu parametr kimi ötürəcəyimiz skripti müəyyən edirik. Sorğunun yeniləmə intervalını 5 dəqiqəyə (300 saniyə) təyin edin.

2) Hər bir avtomobilin statusu üçün qalan ölçüləri yaradın. Bu göstəricilərin dəyərləri əsas metrikanın yoxlanılması nəticəsində yaradılacaq.

DIY: anbar monitorinqini necə avtomatlaşdırırıq

Məlumat elementinin adını təyin etdik, "Xarici yoxlama" növünü göstərin. “Açar” sahəsində biz Oracle verilənlər bazasının adını və dəyərini izləmək istədiyimiz status kodunu parametr kimi ötürəcəyimiz skripti müəyyən edirik. Sorğunun yenilənməsi intervalını əsas metrikdən (10 saniyə) 310 saniyə uzun təyin etdik ki, nəticələrin fayla yazılması üçün vaxt olsun.

Metrikləri düzgün əldə etmək üçün çeklərin aktivləşdirilmə sırası vacibdir. Məlumat qəbul edərkən qarşıdurmaların qarşısını almaq üçün ilk növbədə skriptə zəng edərək GetCarsByStatus əsas metrikasını aktivləşdiririk - wh_Metrics.sh.

Parametrlər → Qovşaqlar → 'qovşağın adı' → Məlumat elementləri → “Xarici yoxlamalar” alt filtri. Tələb olunan çeki qeyd edin və "Aktivləşdir" düyməsini basın.

DIY: anbar monitorinqini necə avtomatlaşdırırıq

Sonra, qalan ölçüləri hamısını birlikdə seçərək bir əməliyyatda aktivləşdiririk:

DIY: anbar monitorinqini necə avtomatlaşdırırıq

İndi Zabbix anbar biznesi göstəricilərini toplamağa başlayıb.

Növbəti məqalələrdə biz Grafana-nı birləşdirməyə və müxtəlif kateqoriyalı istifadəçilər üçün anbar əməliyyatlarının məlumat panellərinin yaradılmasına daha yaxından nəzər salacağıq. Həmçinin Grafana əsasında anbar əməliyyatlarında kənarlaşmaların monitorinqi həyata keçirilir və kənarlaşmaların hüdudlarından və təkrarlanmasından asılı olaraq API vasitəsilə anbar idarəetmə xidmət mərkəzi sistemində insidentlərin qeydə alınması və ya e-poçt vasitəsilə rəhbərə bildirişlərin sadə şəkildə göndərilməsi həyata keçirilir.

DIY: anbar monitorinqini necə avtomatlaşdırırıq

Mənbə: www.habr.com

Добавить комментарий