
Ălesande ajalugu
VĂ€ikestel ettevĂ”tetel on ĂŒhelt poolt vajadus kvaliteetse infrastruktuuri jĂ€lgimise jĂ€rele (eriti virtuaalsuse laialdase kasutuse kontekstis), kuid teiselt poolt on neil finantsiliselt keeruline uut varustust osta. Samuti esinevad sageli serveri/hardware probleeme: tihti asuvad 1-3 torniserverit otse kasutajate töökohtade kĂ”rval vĂ”i vĂ€ikestes niĆĄĆĄides.
Lihtsam on kasutada juba olemasolevat jaotust, mille saab lihtsalt laadida microSD-kaardile ja sisestada levinud ĂŒhetahulisse arvutisse (beaglebone, raspberry pi ja orange pi perekonnad, asus tinker board). Pealegi on selline varustus odav ja saab paigutada igasse kohta.
Ălesande seadmine
Projekt arenes ulatuslikult kui laboratoorne töö, kus tulemusi sai rakendada.
JĂ€lgimisse sĂŒsteemina valiti zabbix, kuna see on vĂ”imas, tasuta ja hĂ€sti dokumenteeritud sĂŒsteem.
Teknoloogia platvormiga seotud kĂŒsimus on teravalt esile kerkinud. Eraldi masina seadistamine jĂ€lgimise jaoks pole samuti hea lahendus â kas on liiga kallis uus varustus vĂ”i tuleb otsida vanad masinad; vĂ€ikestes firmades esinevad sageli serveri/hardware probleemid.
Buildroot ehitussĂŒsteemi kasutamine vĂ”imaldab luua spetsialiseeritud lahendusi, mida saavad kasutada töötajad, kellel on minimaalne teadmiste tase Linuxi operatsioonisĂŒsteemide pere kohta. See sĂŒsteem on algajatele sĂ”bralik, kuid samas pakub kogenud arendajatele laialdasi kohandamisvĂ”imalusi. See sobib suurepĂ€raselt ĂŒlesande tĂ€itmiseks, et luua odav, kuid tĂ€isfunktsionaalne IT-infrastruktuuri jĂ€lgimise lahendus, mis ei nĂ”ua sellele rakenduvatelt töötajatelt palju ettevalmistust.
Lahendamise sammud
Otsustati algselt luua x86_64 jaoks uus pĂŒsivara, et kĂ€ivitada qemu-s, kuna see on mugav ja kiire lahendus tĂ”rgete tĂ”rjumiseks. SeejĂ€rel portida see ĂŒhesilmaarvutile arm-platvormil (minu lemmik oli asus tinker board).
Kogumiseks valiti buildroot. Alguses ei olnud seal paketti zabbix, seega tuli see portida. Esines probleeme vene lokaliseerimisega, kuid need lahendati vastavate plaastrite rakendamisega (mÀrkus: uutes buildrooti versioonides ei ole neid plaastreid enam vaja).
Zabbixi paketi portimise ĂŒksikasjad on kirjeldatud eraldi artiklis.
Kuna kĂ”ik peaks töötama nagu pĂŒsiv tarkvara (muutmatu sĂŒsteemi pilt + taastatavad konfiguratsioonifailid / andmebaasid), tuli kirjutada oma systemd sihtmĂ€rgid, teenused ja ajastajad (target, service, timer).
Otsustati jagada kandja kaheks jaotuseks â sĂŒsteemifailide ja zabbixi muudetavate konfigureerimisfailide ja andmebaaside jaotuseks.
Andmebaasi ĂŒlesannete lahendamine osutus veidi keerulisemaks. Ei soovitud seda otse mĂ€luseadmest kĂ€itada. Samal ajal vĂ”ib andmebaasi suurus ulatuda mÔÔtmeteni, mis ĂŒletavad vĂ”imaliku ramdiskâi suuruse. SeetĂ”ttu valiti kompromisslahendus: andmebaas paigutatakse SD-kaardi teisele partitsioonile (kui rÀÀgime kaasaegsetest SLC-kaartidest, siis nende kirjutamis tsĂŒklite arv vĂ”ib ulatuda kuni 30 000). Kuid on olemas seade, mis vĂ”imaldab kasutada vĂ€list salvestusseadet (nt USB-HDD).
Temperatuuri jÀlgimine tehti lÀbi seadmestikuga RODOS-5. Loomulikult saab kasutada otse Dallas 1820, kuid kiirem ja lihtsam viis oli USB-sse pistmine.
X86_64 jaoks valiti kÀivituslaaduriks grub2. Vaja oli kirjutada minimaalne konfiguratsioon selle kÀivitamiseks.
PĂ€rast QEMU peal silumist viidi portimine lĂ€bi ASUS Tinker Boardile. Minu overlay struktuuris oli algselt sisse ehitatud platvormidevaheline tugi â iga plaadi jaoks spetsiifiliste konfiguratsioonide (defconfig, kĂ€ivituslaadur, sĂŒsteemi partitsiooniga pildi genereerimine) eraldamine ja failisĂŒsteemi/andmete pildi kohandamises maksimaalne ĂŒhtsus. TĂ€nu sellisele ettevalmistusele kulges portimine kiiresti.
Soovitame tungivalt lugeda sissejuhatavaid artikleid:
Kuidas koguda
PÀrast reposiitori kloonimist saadakse jÀrgmine failistruktuur:
[alexey@comp monitor]$ ls -1
buildroot-2019.05.tar.gz
overlay
README.md
run_me.shbuildroot-2019.05.tar.gz â puhta buildrooti arhiv
overlay â minu kataloog external-tree'iga. Just siin on kĂ”ik vajalik, et koguda firmware'i buildrooti abil
README.md â projekti kirjeldus ja juhised inglise keeles.
run_me.sh â skript, mis ette valmistab kogumissĂŒsteemi. See lahti pakib buildrooti arhiivist, ĂŒhendab selle overlay'ga (external-tree mehhanismi kaudu) ning vĂ”imaldab valida sihtplatvormi kogumiseks
[0] my_asus_tinker_defconfig
[1] my_beaglebone_defconfig
[2] x86_64_defconfig
Valige defconfig, vajutage A, et katkestada. Vaikimisi [0]PÀrast seda piisab, kui liikuda katalooge buildroot-2019.05 ja kÀivitada kÀsk make.
PÀrast kogumist 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
updateVajalike failide loetelu:
- sdcard.img â meedia pilt kirjutamiseks SD-kaardile (kasutage dd vĂ”i rufus Windowsis).
- qemu.qcow2 â meedia pilt QEMU kĂ€ivitamiseks.
- external.qcow2 â andmebaasi jaoks mĂ”eldud external-meedia pilt
- monitor-0.9-beta.tar.gz â vĂ€rskenduse arhiiv veebiliidese kaudu
KĂ€siraamatute genereerimine
Ăhe ja sama juhendi mitu korda kirjutamine ei ole mĂ”istlik. Loogilisem on kirjutada see kord markdownis, seejĂ€rel konverteerida PDF-iks allalaadimiseks ja HTML-iks veebiliidese jaoks. See on vĂ”imalik paketi pandoc abil.
KĂ”iki neid faile tuleb genereerida enne sĂŒsteemi pildi kokkupanemist, hilisemaid post-konstruktsiooniskripte enam ei kasutata. SeetĂ”ttu on genereerimine teostatud manuals pakendina. Vaadata saab failist 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 peale, mis tÀhendas, et pidin ka seda tegema.
Positiivsete uuenduste seas on olemas ajastajad. Nende (ja mitte ainult nende) kohta on kirjutatud eraldi artikkel, aga rÀÀgin lĂŒhidalt.
On tegevusi, mida tuleks regulaarselt teha. Mul oli vaja kĂ€ivitada logrotate lighttpd ja php-fpm logide puhastamiseks. Harjumuslikum oleks olnud kirjutada kĂ€sud croni, kuid otsustasin kasutada ĂŒhtset systemd ajastajat. Nii kĂ€ivitatakse logrotate rangete ajavahemike kaupa.
Muidugi on vÔimalik luua ajastajaid, mis kÀivituvad kindlatel kuupÀevadel, kuid seda ei olnud mul vaja.
NĂ€idikell:
- Kella fail
[Unit] Description=RODOS ajutine demonikella
[Timer]
OnBootSec=1min
OnUnitActiveSec=1min
[Install]
WantedBy=timers.target
- Teenuse fail, mida ajutine kell kutsub:
```bash
[Unit]
Description=RODOS ajutine demon
[Service]
ExecStart=/usr/bin/rodos.shToetatud plaadid
Asus tinker board â peamine plaat, millel kĂ”ik peab töötama. Valitud kui odav ja ĂŒsna vĂ”imas.
Beaglebone black â esimene plaat, millel tööd testiti (selleks, et leida vĂ”imsamat plaati).
Qemu x86_64 â kasutatakse arendamiseks ja silumiseks.
Kuidas see töötab
KĂ€ivitamisel toimub kahekordne seadistuste taastamine:
- kelle kĂ€ivitamine skripti settings_restore (teenuse kaudu). See taastab sĂŒsteemi pĂ”hiseaded â ajavööndi, lokaali, vĂ”rgu seaded jne.
- kelle kĂ€ivitamine skripti prepare (teenuse kaudu) â siin valmistatakse ette zabbix, andmebaas ja IP kuvatakse konsoolis.
Esimese kĂ€ivitamise ajal mÀÀratakse SD-kaardi teise jaotise suurus. Kui on veel mÀÀramata ruumi, siis seadmed vormindatakse ĂŒmber, ja andmete jaotis hĂ”lmab kogu vabade ruumide mahtu. See on tehtud installeerimise pildi (sdcard.img) suuruse vĂ€hendamiseks. Lisaks luuakse sel hetkel PostgreSQLi töökaust. Just seetĂ”ttu on esimene kĂ€ivitamine uue seadmega pikem kui jĂ€rgnev.
VĂ€list ketast ĂŒhendades otsib sĂŒsteem kĂ€ivitamise ajal vabade ketaste hulgast ja vormindab selle ext4 formaati, mille sildiks on 'external'.
TĂ€htis! VĂ€list ketast ĂŒhendades (nagu ka selle eemaldamisel vĂ”i vahetamisel) on vajalik teha seadete varukoopia ja taastamine!
Temperatuuri jĂ€lgimiseks kasutatakse seadet RODOS 5. Toote tootja annab oma tööriistade lĂ€htekoodid seadmega töötamiseks. SĂŒsteemi kĂ€ivitamisel kĂ€ivitub rodos ajastusteller, mis kĂ€ivitab seda tööriista kord minutis. Aga praegune temperatuur salvestatakse faili /tmp/rodos_current_temp, pĂ€rast mida Zabbix saab seda faili jĂ€lgida nagu sensorit.
Konfiguratsiooni salvestamiseks mÔeldud seadmed monteeritakse katalooge /data.
SĂŒsteemi kĂ€ivitamisel ja selle tööks ettevalmistamisel kuvatakse konsoolis sĂ”num:
SĂŒsteem kĂ€ivitub, palun ootaPĂ€rast ettevalmistustöid vahetub see IP-aadressi vĂ€ljundiks:
praegune ip 192.168.1.32
Valmis töötamaZabbixi seadistamine temperatuuri jÀlgimiseks
Temperatuuri jÀlgimiseks piisab kahest sammust:
- ĂŒhendage seade RODOS USB-porti
- looge Zabbixis andmeelement
Avame Zabbixi veebiliidese:
- Avame jaotise Konfiguratsioon â Hostid
- Kliiklik Items meie Zabbixi serveri real
- Kliiklik Create item

Sisestage jÀrgmised andmed:
- name â teie valikul (nĂ€iteks serverRoomTemp)
- TĂŒĂŒp â Zabbixi agent
- VĂ”ti â rodos
- TĂŒĂŒp â numbriline
- Ăhik â C
- Ajaloo sĂ€ilitamise periood â ajaloo sĂ€ilitamise kestus. jĂ€tsin 10 pĂ€eva
- Trendi sĂ€ilitamise periood â muutuste dĂŒnaamika sĂ€ilitamise kestus. JĂ€tsin 30 pĂ€eva
- Uus rakendus â serveri ruumi temperatuur
Ja klÔpsame nuppu ADD.

Seadistuste haldamine veebiliidese kaudu
Veebiliides on kirjutatud PHP-s. Peamised funktsioonid on:
- seadme oleku vaatamine
- vÔrguseadete muutmine

- kasutaja parooli muutmine
- ajavööndi valimine
- varundamine/taastamine/taastehaseseade
- vĂ”imalus ĂŒhendada vĂ€line ketas
- SĂŒsteemi uuendamine

Veebiliidese sisselogimine on parooliga kaitstud. Algeleht â kasutusjuhend.
Zabbixi liidese aadress: ${ip/dns}/zabbix
Halduse liidese aadress: ${ip/dns}/manage

KĂ€ivita 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=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 tuuma, 2048 RAM, aktiveeritud KVM, vĂ”rguadapteriga sillal bridge0 ja kahe kettaga: sĂŒsteem ja external postgresql-i 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.vdiSeejĂ€rel impordige need virtualboxi ja ĂŒhendage lĂ€bi sata.
KokkuvÔte
Protsessi kĂ€igus huvi valmistada töövalmis toode â mitte liiga ilusaga liidesega (ma ei armasta neid kirjutada), kuid toimiv ja lihtne seadistada.
Viimane katse installida zabbix-appliance KVM-is nĂ€itas selle sammu Ă”igsust (pĂ€rast installatsiooni lĂ”petamist sĂŒsteem ei kĂ€ivitu). VĂ”ib-olla teen midagi valesti đ
Allikas: habr.com


