Buildroot: Zabbix-server ilə çarpaz platforma proqram təminatının yaradılması

Buildroot: Zabbix-server ilə çarpaz platforma proqram təminatının yaradılması

Problem tarixi

Kiçik şirkətlər, bir tərəfdən, öz infrastrukturlarının yüksək keyfiyyətli monitorinqinə ehtiyac duyurlar (xüsusilə də geniş yayılmış virtuallaşdırma fonunda), digər tərəfdən, yeni avadanlıq almaq onlar üçün maliyyə baxımından çətindir. Server/avadanlıq problemləri də tez-tez rast gəlinir: tez-tez istifadəçi iş stansiyalarının yanında və ya kiçik bir niş/şkafda 1-3 qüllə serveri olur.

Sadəcə microSD karta yükləməli və ümumi bir lövhəli kompüterə (beaglebone, moruq pi və narıncı pi ailələri, asus tinker board) daxil etməli olduğunuz hazır montajdan (paylamadan) istifadə etmək daha asandır. Bundan əlavə, bu cür avadanlıq ucuzdur və istənilən yerdə quraşdırıla bilər.

Problem problemi

Layihə bir çox cəhətdən nəticələrin tətbiqi imkanı ilə bir növ laboratoriya işi olaraq inkişaf etdirildi.

Zabbix monitorinq sistemi kimi seçilmişdir, çünki o, güclü, pulsuz və yaxşı sənədləşdirilmiş sistemdir.

Aparat platforması ilə bağlı problem kəskinləşib.Ayrıca maşının monitorinq altına alınması da çox yaxşı həll yolu deyil - ya yeni avadanlıq almaq baha başa gəlir, ya da köhnə avadanlıq axtarmaq + kiçik şirkətlərdə serverlə tez-tez problemlər yaranır/ aparat.

Buildroot qurma sistemindən istifadə Linux əməliyyat sistemləri haqqında minimal biliyə malik olan personal tərəfindən idarə oluna bilən xüsusi həllər yaratmağa imkan verir. Bu sistem yeni başlayanlar üçün dostdur, lakin eyni zamanda təcrübəli tərtibatçının əlində geniş fərdiləşdirmə imkanları təqdim edir. Bu, İT infrastrukturunun ucuz, lakin tam funksional monitorinqi problemini həll etmək üçün mükəmməldir, onu idarə edən kadrların hazırlanmasına minimal tələblər qoyulur.

Həll addımları

Əvvəlcə x86_64 üçün qemu-da işləmək üçün proqram təminatı yaratmaq qərara alındı, çünki bu, sazlama üçün rahat və sürətli bir həlldir. Sonra onu tək lövhəli kompüterə köçürün (asus tinker board xoşuma gəldi).

Quraşdırma sistemi olaraq buildroot seçilmişdir. İlkin olaraq, zabbix paketi yoxdur, ona görə də onu daşımaq lazım idi.Rus dili ilə bağlı problemlər var idi, müvafiq yamaqların tətbiqi ilə həll edildi (qeyd: buildrootun daha yeni versiyalarında bu yamalar artıq lazım deyil).

Zabbix paketinin daşınması ayrı bir məqalədə təsvir ediləcəkdir.

Hər şey proqram təminatı kimi işləməli olduğundan (dəyişməz sistem şəkli + bərpa edilə bilən konfiqurasiya/verilənlər bazası faylları), öz sistem hədəflərinizi, xidmətlərinizi və taymerlərinizi (hədəf, xidmət, taymer) yazmaq lazım idi.

Medianı 2 hissəyə bölmək qərara alındı ​​- sistem faylları olan bölmə və dəyişdirilə bilən konfiqurasiya və zabbix verilənlər bazası faylları olan bölmə.

Verilənlər bazası ilə bağlı problemlərin həlli bir az daha çətin oldu. Mən bunu birbaşa mediaya yerləşdirmək istəməzdim. Eyni zamanda, verilənlər bazasının ölçüsü mümkün ramdisk ölçüsünü aşan bir ölçüyə çata bilər. Buna görə kompromis həll yolu seçildi: verilənlər bazası SD kartın ikinci hissəsində yerləşir (müasir SLC kartlarında 30-ə qədər yazma dövrü var), lakin xarici mediadan istifadə etməyə imkan verən bir parametr var (məsələn, usb- hdd).

Temperaturun monitorinqi RODOS-5 cihazı vasitəsilə həyata keçirilib. Əlbəttə, siz Dallas 1820-dən birbaşa istifadə edə bilərsiniz, lakin USB-yə qoşulmaq daha sürətli və asan idi.

grub86 x64_2 üçün yükləyici kimi seçildi. Onu işə salmaq üçün minimal konfiqurasiya yazmaq lazım idi.

Qemu-da sazlandıqdan sonra o, asus tinker lövhəsinə köçürüldü. Mənim üst-üstə düşməmin strukturu əvvəlcə çarpaz platforma olmaq üçün nəzərdə tutulmuşdu - hər bir lövhəyə xas olan konfiqurasiyaların ayrılması (board defconfig, bootloader, sistem bölməsi ilə şəkil yaratmaq) və fayl sisteminin fərdiləşdirilməsində/məlumatlarla təsvirin yaradılmasında maksimum vahidlik. Belə hazırlıq sayəsində daşınma sürətlə getdi.

Giriş məqalələrini oxumaq çox tövsiyə olunur:
https://habr.com/ru/post/448638/
https://habr.com/ru/post/449348/

Necə yığılır

Layihə github-da saxlanılır
Repozitoriyanın klonlanmasından sonra aşağıdakı fayl strukturu əldə edilir:

[alexey@comp monitor]$ ls -1
buildroot-2019.05.tar.gz
overlay
README.md
run_me.sh

buildroot-2019.05.tar.gz - təmiz buildroot arxivi
üst-üstə düşmə mənim xarici ağaclı kataloqumdur. Buildroot istifadə edərək proqram təminatı qurmaq üçün lazım olan hər şey burada saxlanılır.
README.md - layihənin təsviri və ingilis dilində təlimat.
run_me.sh qurma sistemini hazırlayan skriptdir. Arxivdən Buildroot-u genişləndirir, ona bir örtük əlavə edir (xarici ağac mexanizmi vasitəsilə) və montaj üçün hədəf lövhəsini seçməyə imkan verir.

[0] my_asus_tinker_defconfig
[1] my_beaglebone_defconfig
[2] x86_64_defconfig
Select defconfig, press A for abort. Default [0]

Bundan sonra buildroot-2019.05 qovluğuna keçin və make əmrini yerinə yetirin.
Quraşdırma tamamlandıqdan sonra bütün qurma nəticələri çıxış/şəkillər kataloqunda olacaq:

[alexey@comp buildroot-2019.05]$ ls -1 output/images/
boot.img
boot.vfat
bzImage
data
data.img
external.img
external.qcow2
grub-eltorito.img
grub.img
intel-ucode
monitor-0.9-beta.tar.gz
qemu.qcow2
rootfs.cpio
sdcard.img
sys
update

Tələb olunan fayllar:

  • sdcard.img - SD kartda qeyd etmək üçün media şəkli (dd və ya rufus vasitəsilə wibdows altında).
  • qemu.qcow2 - qemu-da işləmək üçün media şəkli.
  • external.qcow2 - verilənlər bazası üçün xarici media şəkli
  • monitor-0.9-beta.tar.gz - veb interfeysi vasitəsilə yeniləmə üçün arxiv

Bələdçilərin yaradılması

Eyni təlimatları bir neçə dəfə yazmağa dəyməz. Ən məntiqlisi onu bir dəfə markdown-da yazmaq və sonra yükləmək üçün PDF-ə və veb interfeysi üçün html-ə çevirməkdir. Bu, pandoc paketi sayəsində mümkündür.

Eyni zamanda, bütün bu fayllar sistem şəkli yığılmazdan əvvəl yaradılmalıdır; bu post-build skriptləri artıq yararsızdır. Buna görə nəsil təlimatlar paketi şəklində aparılır. Bindirmə/paket/dərsliklərə baxa bilərsiniz.

manuals.mk faylı (bütün işləri görür)

################################################################################
#
# manuals
#
################################################################################

MANUALS_VERSION:= 1.0.0
MANUALS_SITE:= ${BR2_EXTERNAL_monitorOverlay_PATH}/package/manuals
MANUALS_SITE_METHOD:=local

define MANUALS_BUILD_CMDS
    pandoc -s -o ${TARGET_DIR}/var/www/manual_en.pdf ${BR2_EXTERNAL_monitorOverlay_PATH}/../README.md
    pandoc -f markdown -t html -o ${TARGET_DIR}/var/www/manual_en.html ${BR2_EXTERNAL_monitorOverlay_PATH}/../README.md
endef

$(eval $(generic-package))

systemd

Linux dünyası aktiv şəkildə systemd-ə keçir və mən də bunu etməli oldum.
Xoş yeniliklərdən biri taymerlərin olmasıdır. Ümumiyyətlə, onlar haqqında ayrı bir məqalə yazılır (və təkcə onlar haqqında deyil), amma sizə qısaca danışacağam.

Vaxtaşırı yerinə yetirilməli olan hərəkətlər var. Lighttpd və php-fpm qeydlərini təmizləmək üçün logrotate-i işə salmalı oldum. Adi şey əmrləri cron-da yazmaq olardı, amma sistemli monoton taymerdən istifadə etmək qərarına gəldim. Beləliklə, logrotate ciddi vaxt intervalında işləyir.

Əlbəttə ki, müəyyən tarixlərdə yanan taymerlər yaratmaq olar, amma buna ehtiyacım yox idi.
Taymer nümunəsi:

  • Taymer faylı
    
    [Unit]
    Description=RODOS temp daemon timer

[Taymer] OnBootSec=1dəq
OnUnitActiveSec=1dəq

[Quraşdırın] WantedBy=timers.target

- Файл сервиса, вызываемого таймером:
```bash
[Unit]
Description=RODOS temp daemon

[Service]
ExecStart=/usr/bin/rodos.sh

Dəstəklənən lövhələr

Asus tinker board hər şeyin işləməli olduğu əsas lövhədir. Ucuz və çox güclü kimi seçilmişdir.

Beaglebone black, əməliyyatın sınaqdan keçirildiyi ilk lövhədir (daha güclü lövhənin seçilməsi zamanı).

Qemu x86_64 - ayıklama inkişafı üçün istifadə olunur.

Nasıl çalışır

Başlanğıcda parametrlərin iki mərhələli bərpası baş verir:

  • settings_restore skriptini işə salın (xidmət vasitəsilə). Əsas sistem parametrlərini bərpa edir - saat qurşağı, yerli, şəbəkə parametrləri və s.
  • hazırlamaq skriptini işə salmaq (xidmət vasitəsilə) - burada zabbix və verilənlər bazası hazırlanır, İP konsola çıxarılır.

Onu ilk dəfə işə saldığınız zaman SD kartın ikinci hissəsinin ölçüsü müəyyən edilir. Hələ də bölüşdürülməmiş yer varsa, media yenidən bölünür və məlumat bölməsi bütün boş yerləri tutur. Bu, quraşdırma şəklinin (sdcard.img) ölçüsünü azaltmaq üçün edilir. Bundan əlavə, bu nöqtədə postgresql işçi kataloqu yaradılır. Buna görə də yeni daşıyıcı ilə ilk buraxılış sonrakılardan daha uzun olacaq.

Xarici sürücüyə qoşulduqda, işə salınma anında pulsuz disk axtarır və onu xarici etiketlə ext4 formatına çevirir.

Diqqət! Xarici sürücünü birləşdirərkən (həmçinin onu ayırarkən və ya dəyişdirərkən) ehtiyat nüsxəsini çıxarmalı və parametrləri bərpa etməlisiniz!

RODOS 5 cihazı temperaturun monitorinqi üçün istifadə olunur.İstehsalçı cihazla işləmək üçün öz yardım proqramının mənbə kodunu təqdim edir. Sistem işə salındıqda, bu yardım proqramı dəqiqədə bir dəfə işləyən rodos taymeri başlayır. Cari temperatur /tmp/rodos_current_temp faylına yazılır, bundan sonra zabbix bu faylı sensor kimi izləyə bilər.

Konfiqurasiya saxlama mediası /data kataloqunda quraşdırılmışdır.

Sistemi işə saldıqda və işə hazırlayarkən konsolda aşağıdakı mesaj görünür:

System starting, please wait

Hazırlıq işlərini tamamladıqdan sonra IP ünvanını göstərməyə dəyişəcək:

current ip 192.168.1.32
Ready to work

Temperatur monitorinqi üçün zabbix qurulması

Temperaturu izləmək üçün sadəcə 2 addımı yerinə yetirin:

  • RODOS cihazını USB portuna qoşun
  • zabbix-də məlumat elementi yaradın

Zabbix veb interfeysini açın:

  • Konfiqurasiya → Hostlar bölməsini açın
  • Zabbix serverimizin sətirində Elementlər üzərinə klikləyin
  • Element yarat üzərinə klikləyin

Buildroot: Zabbix-server ilə çarpaz platforma proqram təminatının yaradılması

Aşağıdakı məlumatları daxil edin:

  • ad - öz mülahizənizlə (məsələn, serverRoomTemp )
  • Növ - zabbix agenti
  • Açar - Rodos
  • Növ-rəqəm
  • Vahidlər - C
  • Tarixçənin saxlanma müddəti — tarixçənin saxlanma müddəti. 10 gün qalıb
  • Trend saxlama müddəti - dəyişikliklərin dinamikası üçün saxlama müddəti. 30 gün qaldı
  • Yeni proqram - server Room Temp

Və ADD düyməsini basın.
Buildroot: Zabbix-server ilə çarpaz platforma proqram təminatının yaradılması

Veb interfeysi vasitəsilə parametrləri idarə edin

Veb interfeysi PHP-də yazılmışdır. Əsas funksiyalar var:

  • cihazın vəziyyətinə baxın
  • şəbəkə parametrlərinin dəyişdirilməsi
    Buildroot: Zabbix-server ilə çarpaz platforma proqram təminatının yaradılması
  • istifadəçi parolunun dəyişdirilməsi
  • saat qurşağı seçimi
  • ehtiyat nüsxə / bərpa / zavod parametrlərinə sıfırlama
  • xarici sürücüyə qoşulmaq imkanı
  • Sistem yeniləməsi
    Buildroot: Zabbix-server ilə çarpaz platforma proqram təminatının yaradılması

Veb interfeysinə daxil olmaq parolla qorunur. Başlanğıc səhifəsi - təlimat.

Zabbix interfeys ünvanı: ${ip/dns}/zabbix
İdarəetmə interfeysinin ünvanı: ${ip/dns}/manage
Buildroot: Zabbix-server ilə çarpaz platforma proqram təminatının yaradılması

Qemuda qaçış

qemu-system-x86_64 -smp 4 -m 4026M -enable-kvm -machine q35,accel=kvm -cihaz intel-iommu -cpu host -net nic -net bridge,br=bridge0 -cihaz virtio-scsi-pci,id= scsi0 -drive file=output/images/qemu.qcow2,format=qcow2,aio=threads -cihaz virtio-scsi-pci,id=scsi0 -drive file=output/images/external.qcow2,format=qcow2,aio=threads

Bu əmr 4 nüvəli, 2048 RAM, KVM aktiv, bridge0-də şəbəkə kartı və iki disk olan bir sistemi işə salacaq: biri sistem üçün, biri postgresql üçün xarici.

Şəkillər çevrilə və Virtualbox-da işlədilə bilər:

qemu-img convert -f qcow2  qemu.qcow2 -O vdi qcow2.vdi
qemu-img convert -f qcow2  external.qcow2 -O vdi external.vdi

Sonra onları virtual qutuya idxal edin və sata vasitəsilə qoşulun.

Nəticə

Bu prosesdə mən istifadəyə hazır məhsul hazırlamaqda maraqlı oldum - o qədər də gözəl olmayan interfeyslə (onları yazmağı sevmirəm), lakin işləyən və konfiqurasiyası asan olan.

KVM-də zabbix-appliance quraşdırmaq üçün son cəhd bu addımın düzgün olduğunu göstərdi (quraşdırma tamamlandıqdan sonra sistem işə düşmür). Bəlkə nəyisə səhv edirəm 😉

Materiallar

https://buildroot.org/

Mənbə: www.habr.com

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