Buildroot: Ühelt platvormilt teisele ĂŒlemineku tarkvara loomine zabbix-serveriga

Buildroot: Ühelt platvormilt teisele ĂŒlemineku tarkvara loomine zabbix-serveriga

Ülesande ajalugu

VĂ€ikeste ettevĂ”tete poolelt on ĂŒhelt poolt vajadus kvaliteetse infrastruktuuri jĂ€rele (eriti ĂŒldise virtualiseerimise valguses), teisest kĂŒljest on rahaliselt keeruline uut varustust soetada. Samuti esinevad sageli serveri / riistvara probleemid: sageli seisavad 1-3 torni-serverid kasutajate töökohtade lĂ€heduses vĂ”i vĂ€ikeses niĆĄis / keldris.

On lihtsam kasutada juba valmis kogumit (distributsi), mille lihtsalt laadida microSD-kaardile ja sisestada see laialdaselt kasutatavasse ĂŒhteplaadile arvutisse (beaglebone, raspberry pi ja orange pi perekond, asus tinker board). Lisaks sellele on selline varustus odav ning seda saab paigaldada igasse kohta.

Ülesande seadmine

Projekt arenes suuresti kui laboratoorne töö, mille tulemusi oli vÔimalik rakendada.

MonitooringusĂŒsteemiks valiti zabbix, kuna see on vĂ”imas, tasuta ja hĂ€sti dokumenteeritud sĂŒsteem.

Tekkis terav kĂŒsimus riistvara platvormi ĂŒle. Eraldi masin monitooringuks pole samuti vĂ€ga hea lahendus – kas on kallis osta uut varustust vĂ”i otsida vanemat ning vĂ€ikestes ettevĂ”tetes on sageli probleeme serveri / riistvara osas.

Buildrooti kogumissĂŒsteemi kasutamine vĂ”imaldab luua spetsialiseeritud lahendusi, mida saavad haldada töötajad, kellel on minimaalne Linuxi operatsioonisĂŒsteemi tundmine. See sĂŒsteem on algajatele sĂ”bralik, kuid samas annab laiad vĂ”imalused kohandamiseks kogenud arendaja kĂ€es. See on suurepĂ€rane lahendus IT-infrastruktuuri madala hinnaga, kuid tĂ€isfunktsionaalse monitooringu jaoks, mis ei nĂ”ua suuremaid ettevalmistusi selle haldajalihala.

Lahenduse sammud

Otsustati algselt luua x86_64 jaoks pĂŒsivara QEMU-s kĂ€ivitamiseks, kuna see on mugav ja kiire lahendus silumise jaoks. PĂ€rast seda portida ĂŒheplaadilisele arvutile arm (minule meeldis asus tinker board).

KogumissĂŒsteemiks valiti buildroot. Esialgselt ei sisaldanud see zabbix paketti, seega tuli see portida. Seal olid probleemid vene locale'iga, mis lahendati vastavate plaastrite pealekandmise abil (mĂ€rkus: uutes buildrooti versioonides ei ole need plaastrid enam vajalikud).

Zabbixi paketi portimine kirjeldatakse eraldi artiklis.

Kuna kĂ”ik peab toimima nagu pĂŒsiv tarkvara (muutumatud sĂŒsteemi pildid + taastatavad konfiguratsioonifailid / andmebaasid), tuli kirjutada oma systemd sihtmĂ€rgid, teenused ja taimerid (target, service, timer).

Otsustati jagada andmekandja kaheks osaks — sĂŒsteemifailide osa ja osa, kus asuvad muudetavad konfiguratsioonid ja zabbix'i andmefailid.

Andmebaasi probleemide lahendamine osutus pisut keerulisemaks. Ei olnud mugav hoida seda otse andmekandjal. Samas vĂ”ib andmebaasi suurus ulatuda ĂŒle ramdisk’i suuruse. SeetĂ”ttu valiti kompromisslahendus: andmebaas asub sd-kaardi teises osas (kaasaegsetel SLC-kaartidel on kuni 30 000 kirjutamisringi), kuid on seadistus, mis vĂ”imaldab kasutada vĂ€list andmekandjat (nt usb-hdd).

Temperatuuri jĂ€lgimine toimus RODOS-5 seadme kaudu. Loomulikult saab kasutada otse dallas 1820, kuid kiiremini ja lihtsam on see USB-porti ĂŒhendada.

x86_64 jaoks valiti buutlaaduriks grub2. Vaja oli kirjutada minimaalne konfiguratsioon, et kÀivitada.

PĂ€rast qemu-debugi lĂ”ppu viidi portimine lĂ€bi asus tinker boardile. Minu ĂŒlekatte struktuuris oli algselt ette nĂ€htud krossplatvormilisus — iga plaadi jaoks spetsiifiliste konfiguratsioonide esiletoomine (plaadi defconfig, buutlaadur, sĂŒsteemi ossa kuuluv pildi genereerimine) ja maksimaalne ĂŒhtsus failisĂŒsteemi tĂ€iendamisel / andmete pildi loomisel. Sellise ettevalmistuse tĂ”ttu lĂ€ks portimine kiiresti.

Soovitame tungivalt lugeda sissejuhatavaid artikleid:
https://habr.com/ru/post/448638/
https://habr.com/ru/post/449348/

Kuidas kokku panna

Projekt asub githubis
PÀrast hoidla kloonimist saadakse jÀrgmine failistruktuur:

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

buildroot-2019.05.tar.gz — puhta buildroot'i arhiiv
overlay — minu kataloog external-tree'ga. See sisaldab kĂ”ike vajalikku, et koostada pĂŒsiv tarkvara buildroot'i abil
README.md — projekti kirjeldus ja juhend inglise keeles.
run_me.sh — skript, mis valmistab ette ehitussĂŒsteemi. See avab buildroot'i arhiivist, lisab sellele overlay (external-tree mehhanismi kaudu) ja vĂ”imaldab valida sihtplaadi ehitamiseks

[0] my_asus_tinker_defconfig
[1] my_beaglebone_defconfig
[2] x86_64_defconfig
Valige defconfig, vajutage A, et tĂŒhistada. Vaikimisi [0]

PÀrast seda piisab, kui liikuda katalooge buildroot-2019.05 ja kÀivitada kÀsk make.
PÀrast kogumise lÔpetamist on kÔik kogumise tulemused kataloogis output/images:

[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

Vajalikud failid:

  • sdcard.img — pilt meediumist, mis tuleb kirjutada sd-kaardile (dd vĂ”i rufus kasutades Windowsis).
  • qemu.qcow2 — pilt meediumist QEMU kĂ€ivitamiseks.
  • external.qcow2 — external-meediumi pilt andmebaasi jaoks.
  • monitor-0.9-beta.tar.gz — arhiv uuendamiseks lĂ€bi veebiliidese.

Juhendite genereerimine

Ei ole mĂ”tet sama juhendit mitu korda kirjutada. Logilisem on kirjutada see ĂŒks kord markdownis, seejĂ€rel konverteerida PDF-ks allalaadimiseks ja HTML-iks veebiliidese jaoks. See on vĂ”imalik pandoci paketi abil.

KĂ”ik need failid tuleb genereerida enne sĂŒsteemipildi koostamist, post-build skriptid on sel puhul juba kasutud. SeetĂ”ttu on genereerimine tehtud paketina manuals. Seda saab vaadata overlay/package/manuals.

Fail manuals.mk (mis teeb kogu töö)

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

Linuxi maailm liigub aktiivselt systemd-le, pidin seda ka mina tegema.
Heade uuenduste seas on ka taimerite olemasolu. Üldiselt kirjutatakse neist (ja mitte ainult neist) eraldi artiklid, kuid rÀÀgin lĂŒhidalt.

On tegevusi, mida tuleb teostada regulaarselt. Mul oli vaja kÀivitada logrotate lighttpd ja php-fpm logide puhastamiseks. HarjumuspÀrasem oleks olnud kirjutada kÀsud cron'i, kuid otsustasin kasutada systemd monotoonset taimerit. Nii et logrotate kÀivitatakse kindla ajavahemiku jÀrel.

Muidugi on vÔimalik luua taime, mis töötab kindlatel kuupÀevadel, kuid mul seda ei olnud vaja.
Taimeri nÀide:

  • Taimeri fail
    
    [Unit]
    Description=RODOS ajutine daemon taimer

[Timer]
OnBootSec=1min
OnUnitActiveSec=1min

[Install]
WantedBy=timers.target

- Teenuse fail, mida kutsub ĂŒles taimer:
```bash
[Unit]
Description=RODOS ajutine daemon

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

Toetatud plaadid

Asus tinker board — peamine plaat, millel kĂ”ik peaks töötama. Valitud kui odav ja ĂŒsna vĂ”imas.

Beaglebone black — esimene plaat, millega kontrolliti tööd (rohkem vĂ”imsa plaadi otsimise perioodil).

Qemu x86_64 — kasutatakse arendamiseks ja tĂ”rkeotsinguks.

Kuidas see töötab

KĂ€ivitamisel toimub seadmestiku taastamine kahel etapil:

  • kĂ€ivitamine skripti settings_restore (teenuse kaudu). See taastab sĂŒsteemi pĂ”hiĂŒlesanded — ajavöönd, lokaal, vĂ”rgu seadistused jne.
  • kĂ€ivitamine skripti prepare (teenuse kaudu) — siin ettevalmistatakse zabbix, andmebaas, IP kuvamine konsoolis.

Esimese kĂ€ivitamise ajal mÀÀratakse teise partitsiooni suurus SD-kaardil. Kui on veel mĂ€rkimata ruumi, jagatakse seade ĂŒmber, et andmede partitsioon hĂ”ivaks kogu vaba ruumi. See on tehtud installatsioonipildi (sdcard.img) mahu vĂ€hendamiseks. Lisaks luuakse sel hetkel töökaust postgresql-i jaoks. SeetĂ”ttu on esimene kĂ€ivitamine uue seadmega pikem kui jĂ€rgmised.

VĂ€list ketast ĂŒhendades otsib sĂŒsteem kĂ€ivitamise hetkel vaba ketast ja vormindab selle ext4-failisĂŒsteemiga, kasutades nime external.

TĂ€helepanu! VĂ€list ketast ĂŒhendades (nagu ka seda eemaldades vĂ”i asendades) on vajalik teha varukoopia ja taastada seaded!

Temperatuuri jĂ€lgimiseks kasutatakse seadet RODOS 5. Tootja pakub oma utiliidi lĂ€htekoodi seadmega töötamiseks. SĂŒsteemi kĂ€ivitamisel algab rodos ajastus, mis kĂ€ivitab selle utiliidi kord minutis. Praegune temperatuur salvestatakse faili /tmp/rodos_current_temp, seejĂ€rel saab zabbix jĂ€lgida seda faili kui sensorit.

Konfiguratsiooni salvestamiseks mountitakse seade katalooge /data.

SĂŒsteemi kĂ€ivitamisel ja tööks ettevalmistamisel kuvatakse konsoolis sĂ”num:

SĂŒsteem kĂ€ivitub, palun oodake

PÀrast ettevalmistustööde lÔpetamist vahetub see IP-aadressi vÀljundiks:

praegune ip 192.168.1.32
Valmis tööks

Zabbixi seadistamine temperatuuri jÀlgimiseks

Temperatuuri jÀlgimiseks on piisav, kui teha 2 sammu:

  • ĂŒhendada seade RODOS usb-porti
  • luua zabbixis andmeelement

Avame zabbixi veebiliidese:

  • Avame jaotise Configuration → Hosts
  • KlĂ”psame meie zabbixi serveri reas Items
  • KlĂ”psame nuppu Create item

Buildroot: Ühelt platvormilt teisele ĂŒlemineku tarkvara loomine zabbix-serveriga

Sisestame jÀrgmised andmed:

  • name — teie enda valikul (nĂ€iteks serverRoomTemp)
  • Type — zabbix agent
  • Key — rodos
  • Type — numeriline
  • Units — C
  • History storage period — ajalugu sĂ€ilitamise periood. JĂ€tsin 10 pĂ€eva
  • Trend storage period — dĂŒnaamika sĂ€ilitamise periood. JĂ€tsin 30 pĂ€eva
  • New application — server Room Temp

Ja klÔpsame nuppu ADD.
Buildroot: Ühelt platvormilt teisele ĂŒlemineku tarkvara loomine zabbix-serveriga

Seadete haldamine veebiliidese kaudu

Veebiliides on kirjutatud php-s. Seal on peamised funktsioonid:

  • seadmise oleku vaatamine
  • vĂ”rgu seadete muutmine
    Buildroot: Ühelt platvormilt teisele ĂŒlemineku tarkvara loomine zabbix-serveriga
  • kasutaja parooli muutmine
  • ajavööndi valimine
  • varundamine/taastamine/tehaseseadete lĂ€htestamine
  • vĂ€list ketast ĂŒhendamise vĂ”imalus
  • SĂŒsteemi uuendamine
    Buildroot: Ühelt platvormilt teisele ĂŒlemineku tarkvara loomine zabbix-serveriga

Veebiliidesele sisenemine on parooliga kaitstud. Ava leht — juhend.

Zabbixi liidese aadress: ${ip/dns}/zabbix
Haldusliidese aadress: ${ip/dns}/manage
Buildroot: Ühelt platvormilt teisele ĂŒlemineku tarkvara loomine zabbix-serveriga

KĂ€ivitamine qemu-s

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=threads -device virtio-scsi-pci,id=scsi0 -drive file=output/images/external.qcow2,format=qcow2,aio=threads

See kĂ€sk kĂ€ivitab sĂŒsteemi 4 tuumaga, 2048 RAM-iga, KVM aktiveerituna, vĂ”rkaartidega sildadel bridge0 ning kahe kettaga: sĂŒsteemide jaoks ja external postgresql jaoks.

Pilte saab konverteerida ja kÀivitada Virtualboxis:

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

PĂ€rast seda tuleb need Virtualboxi importida ja ĂŒhendusele saata SATA kaudu.

KokkuvÔte

Protsessi kĂ€igus tekkis huvi luua töötav toode — mitte liiga ilus ĂŒliÀÀr (ma ei armasta nende kirjutamist), kuid töötav ja lihtne seadistada.

Viimane katse installida zabbix-appliance KVM-is nĂ€itas selle sammu Ă”igsust (pĂ€rast installatsiooni lĂ”ppu sĂŒsteem ei kĂ€ivitu). VĂ”ib-olla teen ma midagi valesti 😉

Materjalid

https://buildroot.org/

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster