Buildroot: starpplatformu programmaparatūras izveide, izmantojot zabbix-serveri

Buildroot: starpplatformu programmaparatūras izveide, izmantojot zabbix-serveri

Problēmu vēsture

Mazajiem uzņēmumiem, no vienas puses, ir nepiecieÅ”ama kvalitatÄ«va savas infrastruktÅ«ras uzraudzÄ«ba (Ä«paÅ”i, ņemot vērā plaÅ”o virtualizāciju), no otras puses, tiem ir finansiāli grÅ«ti iegādāties jaunas iekārtas. Bieži sastopamas arÄ« servera/aparatÅ«ras problēmas: bieži blakus lietotāju darbstacijām vai nelielā niŔā/skapÄ« atrodas 1-3 torņu serveri.

VienkārŔāk ir izmantot gatavu komplektu (izplatÄ«Å”anu), kas jums vienkārÅ”i jāaugÅ”upielādē microSD kartē un jāievieto kopējā viena borta datorā (bÄ«gloka, raspberry pi un orange pi saimes, asus tinker board). Turklāt Ŕāds aprÄ«kojums ir lēts un to var uzstādÄ«t jebkur.

Problēmas paziņojums

Daudzējādā ziņā projekts attīstījās kā sava veida laboratorijas darbs ar iespēju izmantot rezultātus.

Zabbix tika izvēlēta kā uzraudzības sistēma, jo tā ir jaudīga, bezmaksas un labi dokumentēta sistēma.

AkÅ«ta ir problēma ar aparatÅ«ras platformu.AtseviŔķas maŔīnas nolikÅ”ana uzraudzÄ«bā arÄ« nav pārāk labs risinājums - vai nu dārgi ir iegādāties jaunu tehniku, vai meklēt veco tehniku ā€‹ā€‹+ mazos uzņēmumos bieži ir problēmas ar serveri/ aparatÅ«ra.

Buildroot build sistēmas izmantoÅ”ana ļauj izveidot specializētus risinājumus, kurus var vadÄ«t personāls ar minimālām zināŔanām par Linux operētājsistēmām. Å Ä« sistēma ir draudzÄ«ga iesācējiem, taču tajā paŔā laikā sniedz plaÅ”as pielāgoÅ”anas iespējas pieredzējuÅ”a izstrādātāja rokās. Tas ir lieliski piemērots IT infrastruktÅ«ras lētas, bet pilnÄ«bā funkcionējoÅ”as uzraudzÄ«bas problēmas risināŔanai ar minimālām prasÄ«bām to apkalpojoŔā personāla apmācÄ«bai.

Risinājuma soļi

Tika nolemts sākotnēji izveidot programmaparatÅ«ru x86_64, lai tā darbotos qemu, jo tas ir ērts un ātrs risinājums atkļūdoÅ”anai. Pēc tam portējiet to uz rokas viena borta datoru (man patika asus tinker plate).

buildroot tika izvēlēta kā bÅ«vÄ“Å”anas sistēma. Sākotnēji tai trÅ«kst zabbix pakotnes, tāpēc bija jāportē.. Bija problēmas ar krievu lokalizāciju, kuras tika atrisinātas, uzliekot atbilstoÅ”us ielāpus (piezÄ«me: jaunākās buildroot versijās Å”ie ielāpi vairs nav vajadzÄ«gi).

Pati zabbix pakotnes pārneŔana tiks aprakstīta atseviŔķā rakstā.

Tā kā visam vajadzētu darboties kā programmaparatÅ«rai (nemaināms sistēmas attēls + atkopjami konfigurācijas/datu bāzes faili), bija nepiecieÅ”ams uzrakstÄ«t savus sistēmas mērÄ·us, pakalpojumus un taimerus (mērÄ·is, pakalpojums, taimeris).

Tika nolemts sadalīt mediju 2 sadaļās - sadaļā ar sistēmas failiem un sadaļā ar maināmām konfigurācijām un zabbix datu bāzes failiem.

Ar datubāzi saistÄ«to problēmu risināŔana izrādÄ«jās nedaudz grÅ«tāka. Es negribēju to ievietot tieÅ”i plaÅ”saziņas lÄ«dzekļos. Tajā paŔā laikā datu bāzes izmērs var sasniegt izmēru, kas pārsniedz iespējamā ramdiska izmēru. Tāpēc tika izvēlēts kompromisa risinājums: datu bāze atrodas SD kartes otrajā nodalÄ«jumā (mÅ«sdienu SLC kartēm ir lÄ«dz 30 000 rakstÄ«Å”anas ciklu), bet ir iestatÄ«jums, kas ļauj izmantot ārējos datu nesējus (piemēram, usb- hdd).

Temperatūras uzraudzība tika īstenota, izmantojot RODOS-5 ierīci. Protams, jūs varat izmantot Dallas 1820 tieŔi, taču tas bija ātrāk un vienkārŔāk pievienot USB.

grub86 tika atlasÄ«ts kā x64_2 sāknÄ“Å”anas ielādētājs. Lai to palaistu, bija jāuzraksta minimāla konfigurācija.

Pēc qemu atkļūdoÅ”anas tas tika pārnests uz asus tinker dēli. Mana pārklājuma struktÅ«ra sākotnēji bija paredzēta pārrobežu platformai - katrai platei specifisku konfigurāciju pieŔķirÅ”ana (plates defconfig, bootloader, attēla Ä£enerÄ“Å”ana ar sistēmas nodalÄ«jumu) un maksimāla vienveidÄ«ba failu sistēmas pielāgoÅ”anā/attēla izveidoÅ”anā ar datiem. Pateicoties Ŕādai sagatavoÅ”anai, pārneÅ”ana pagāja ātri.

Ļoti ieteicams izlasīt ievadrakstus:
https://habr.com/ru/post/448638/
https://habr.com/ru/post/449348/

Kā salikt

Projekts tiek glabāts vietnē github
Pēc repozitorija klonÄ“Å”anas tiek iegÅ«ta Ŕāda faila struktÅ«ra:

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

buildroot-2019.05.tar.gz ā€” tÄ«rs buildroot arhÄ«vs
pārklājums ir mans direktorijs ar ārējo koku. Å eit tiek glabāts viss, kas nepiecieÅ”ams, lai izveidotu programmaparatÅ«ru, izmantojot buildroot.
README.md - projekta apraksts un rokasgrāmata angļu valodā.
run_me.sh ir skripts, kas sagatavo bÅ«vÄ“Å”anas sistēmu. PaplaÅ”ina Buildroot no arhÄ«va, pievieno tam pārklājumu (izmantojot ārējā koka mehānismu) un ļauj izvēlēties montāžai paredzēto plati

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

Pēc tam vienkārÅ”i dodieties uz direktoriju buildroot-2019.05 un palaidiet komandu make.
Kad bÅ«vÄ“Å”ana bÅ«s pabeigta, visi bÅ«vÄ“Å”anas rezultāti bÅ«s izvades/attēlu direktorijā:

[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

NepiecieŔamie faili:

  • sdcard.img - multivides attēls ierakstÄ«Å”anai SD kartē (izmantojot dd vai rufus zem wibdows).
  • qemu.qcow2 ā€” multivides attēls, ko palaist programmā qemu.
  • external.qcow2 - datu bāzes ārējā multivides attēls
  • monitor-0.9-beta.tar.gz - arhÄ«vs atjaunināŔanai, izmantojot tÄ«mekļa saskarni

Ceļvežu paaudze

Nav vērts vairākas reizes rakstÄ«t vienu un to paÅ”u norādÄ«jumu. Un visloÄ£iskākais ir to vienreiz ierakstÄ«t atzÄ«mes sadaļā un pēc tam konvertēt PDF formātā lejupielādei un html formātā tÄ«mekļa saskarnei. Tas ir iespējams, pateicoties pandoc paketei.

Tajā paŔā laikā visi Å”ie faili ir jāģenerē pirms sistēmas attēla salikÅ”anas; Å”ie pēcbÅ«ves skripti jau ir bezjēdzÄ«gi. Tāpēc Ä£enerÄ“Å”ana tiek veikta rokasgrāmatu paketes veidā. Varat apskatÄ«t pārklājumu / iepakojumu / rokasgrāmatas.

Fails manuals.mk (kas veic visu darbu)

################################################################################
#
# 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 pasaule aktīvi pāriet uz systemd, un arī man tas bija jādara.
Viens no patÄ«kamajiem jauninājumiem ir taimeru klātbÅ«tne. Kopumā par viņiem (un ne tikai par viņiem) tiek rakstÄ«ts atseviŔķs raksts, bet es jums pastāstÄ«Å”u Ä«si.

Ir darbības, kas periodiski jāveic. Man vajadzēja palaist logrotate, lai notīrītu lighttpd un php-fpm žurnālus. Parastā lieta būtu rakstīt komandas cron, bet es nolēmu izmantot systemd monotonisko taimeri. Tātad logrotate darbojas stingri noteiktā laika intervālā.

Protams, ir iespējams izveidot taimerus, kas aktivizējas noteiktos datumos, bet man tas nebija vajadzīgs.
Taimera piemērs:

  • Taimera fails
    
    [Unit]
    Description=RODOS temp daemon timer

[Taimeris] OnBootSec=1 min
OnUnitActiveSec=1 min

[Instalēt] WantedBy=timers.target

- Š¤Š°Š¹Š» сŠµŃ€Š²ŠøсŠ°, Š²Ń‹Š·Ń‹Š²Š°ŠµŠ¼Š¾Š³Š¾ тŠ°Š¹Š¼ŠµŃ€Š¾Š¼:
```bash
[Unit]
Description=RODOS temp daemon

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

Atbalstītie dēļi

Asus tinker board ir galvenais panelis, uz kura visam vajadzētu darboties. Izvēlēts kā lēts un ļoti spēcīgs.

Beaglebone black ir pirmais dēlis, uz kura tika pārbaudīta darbība (jaudīgāka dēļa izvēles laikā).

Qemu x86_64 - izmanto atkļūdoŔanas izstrādei.

Kā tas darbojas

StartÄ“Å”anas laikā notiek divpakāpju iestatÄ«jumu atjaunoÅ”ana:

  • palaižot skriptu settings_restore (izmantojot pakalpojumu). Tas atjauno pamata sistēmas iestatÄ«jumus - laika joslu, lokalizāciju, tÄ«kla iestatÄ«jumus utt.
  • palaižot sagatavoÅ”anas skriptu (izmantojot pakalpojumu) - Å”eit tiek sagatavots zabbix un datu bāze, IP tiek izvadÄ«ts uz konsoli.

Pirmoreiz startējot, tiek noteikts SD kartes otrā nodalÄ«juma izmērs. Ja joprojām ir nepieŔķirta vieta, datu nesējs tiek atkārtoti sadalÄ«ts, un datu sadaļa aizņem visu brÄ«vo vietu. Tas tiek darÄ«ts, lai samazinātu instalācijas attēla (sdcard.img) izmēru. Turklāt Å”ajā brÄ«dÄ« tiek izveidots postgresql darba direktorijs. Tāpēc pirmā palaiÅ”ana ar jaunu pārvadātāju bÅ«s ilgāka nekā nākamie.

Pieslēdzot ārējo disku, startÄ“Å”anas brÄ«dÄ« tas meklē brÄ«vu disku un formatē to ext4 formātā ar ārējo etiÄ·eti.

Uzmanību! Pieslēdzot ārējo disku (kā arī to atvienojot vai nomainot), ir jāveido dublējums un jāatjauno iestatījumi!

TemperatÅ«ras uzraudzÄ«bai tiek izmantota ierÄ«ce RODOS 5. Darbam ar ierÄ«ci ražotājs nodroÅ”ina tās lietderÄ«bas pirmkodu. Kad sistēma ir ieslēgta, tiek palaists rodos taimeris, kas palaiž Å”o utilÄ«tu reizi minÅ«tē. PaÅ”reizējā temperatÅ«ra tiek ierakstÄ«ta failā /tmp/rodos_current_temp, pēc kura zabbix var uzraudzÄ«t Å”o failu kā sensoru.

Konfigurācijas datu nesējs ir uzstādīts /data direktorijā.

Startējot sistēmu un sagatavojot to darbÄ«bai, konsolē parādās Ŕāds ziņojums:

System starting, please wait

Pēc sagatavoÅ”anas darba pabeigÅ”anas tas mainÄ«sies uz IP adreses rādÄ«Å”anu:

current ip 192.168.1.32
Ready to work

Zabbix iestatīŔana temperatūras uzraudzībai

Lai uzraudzītu temperatūru, veiciet tikai 2 darbības:

  • pievienojiet RODOS ierÄ«ci USB portam
  • izveidot datu vienumu programmā zabbix

Atveriet zabbix tīmekļa saskarni:

  • Atveriet sadaļu Konfigurācija ā†’ Saimnieki
  • MÅ«su zabbix servera rindā noklikŔķiniet uz Vienumi
  • NoklikŔķiniet uz Izveidot vienumu

Buildroot: starpplatformu programmaparatūras izveide, izmantojot zabbix-serveri

Ievadiet Ŕādus datus:

  • nosaukums - pēc jÅ«su ieskatiem (piemēram, serverRoomTemp )
  • Tips - zabbix aÄ£ents
  • Atslēga - Rodos
  • Tips-ciparu
  • VienÄ«bas ā€” C
  • Vēstures glabāŔanas periods ā€” vēstures glabāŔanas periods. atlikuÅ”as 10 dienas
  • Tendenču glabāŔanas periods ā€” izmaiņu dinamikas glabāŔanas periods. AtlikuÅ”as 30 dienas
  • Jauna aplikācija - serveris Telpas temp

Un nospiediet pogu PIEVIENOT.
Buildroot: starpplatformu programmaparatūras izveide, izmantojot zabbix-serveri

Pārvaldiet iestatījumus, izmantojot tīmekļa saskarni

Tīmekļa saskarne ir rakstīta PHP. Ir galvenās funkcijas:

  • apskatÄ«t ierÄ«ces statusu
  • mainÄ«t tÄ«kla iestatÄ«jumus
    Buildroot: starpplatformu programmaparatūras izveide, izmantojot zabbix-serveri
  • mainot lietotāja paroli
  • laika joslas izvēle
  • dublÄ“Å”ana / atjaunoÅ”ana / rÅ«pnÄ«cas atiestatÄ«Å”ana
  • iespēja pievienot ārējo disku
  • Sistēmas atjaunināŔana
    Buildroot: starpplatformu programmaparatūras izveide, izmantojot zabbix-serveri

PieteikÅ”anās tÄ«mekļa saskarnē ir aizsargāta ar paroli. Sākumlapa - rokasgrāmata.

Zabbix saskarnes adrese: ${ip/dns}/zabbix
Pārvaldības saskarnes adrese: ${ip/dns}/manage
Buildroot: starpplatformu programmaparatūras izveide, izmantojot zabbix-serveri

SkrieŔana qemu

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

Šī komanda startēs sistēmu ar 4 kodoliem, 2048 RAM, iespējotu KVM, tīkla karti uz bridge0 un diviem diskiem: vienu sistēmai un vienu ārējo postgresql.

Attēlus var konvertēt un palaist Virtualbox:

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

Pēc tam importējiet tos virtuālajā kastē un izveidojiet savienojumu, izmantojot sata.

Secinājums

Å ajā procesā man radās interese par lietoÅ”anai gatavu produktu izgatavoÅ”anu - ar ne pārāk skaistu interfeisu (man nepatÄ«k tos rakstÄ«t), bet tādu, kas darbojas un ir viegli konfigurējams.

Pēdējais mēģinājums instalēt zabbix-ierÄ«ci KVM parādÄ«ja, ka Å”is solis bija pareizs (pēc instalÄ“Å”anas pabeigÅ”anas sistēma netiek startēta). VarbÅ«t es daru kaut ko nepareizi šŸ˜‰

Materiāli

https://buildroot.org/

Avots: www.habr.com

Pievieno komentāru