Buildroot: platvormideülese püsivara loomine zabbix-serveriga

Buildroot: platvormideülese püsivara loomine zabbix-serveriga

Probleemi ajalugu

Väikesed ettevõtted vajavad ühelt poolt kvaliteetset oma taristu monitooringut (eriti laialt levinud virtualiseerimise valguses), teisalt on neil rahaliselt raske uusi seadmeid soetada. Levinud on ka serveri/riistvaraprobleemid: sageli on kasutajate tööjaamade kõrval või väikeses nišis/kapis 1-3 tornserverit.

Lihtsam on kasutada valmiskoostu (jaotust), mis tuleb lihtsalt microSD-kaardile laadida ja ühisesse üheplaadiga arvutisse sisestada (beaglebone, raspberry pi ja orange pi perekonnad, asus tinker board). Lisaks on sellised seadmed odavad ja neid saab paigaldada kõikjale.

Probleemi avaldus

Projekt kujunes paljuski välja omamoodi laboritööna koos tulemuste rakendamise võimalusega.

Seiresüsteemiks valiti Zabbix, kuna see on võimas, tasuta ja hästi dokumenteeritud süsteem.

Riistvaraplatvormiga on probleem teravaks muutunud.Eraldi masina seire alla panemine ei ole ka väga hea lahendus - kas on kulukas uute seadmete soetamine, või vanade seadmete otsimine + väikeettevõtetes on sageli probleeme serveriga/ riistvara.

Buildroot ehitussüsteemi kasutamine võimaldab teil luua spetsiaalseid lahendusi, mida saavad kasutada töötajad, kellel on minimaalsed teadmised Linuxi operatsioonisüsteemidest. See süsteem on sõbralik algajatele, kuid samal ajal pakub kogenud arendaja kätes rohkelt kohandamisvõimalusi. See sobib suurepäraselt IT-taristu odava, kuid täielikult toimiva jälgimise probleemi lahendamiseks, minimaalsete nõudmistega seda opereeriva personali koolitusele.

Lahenduse sammud

Algselt otsustati luua püsivara x86_64 jaoks, et see töötaks qemu-s, kuna see on mugav ja kiire lahendus silumiseks. Seejärel ühendage see ühe lauaarvutiga (mulle meeldis asus tinker board).

ehitussüsteemiks valiti buildroot. Algselt puudub sellel pakett zabbix, mistõttu tuli see portida.Vene lokaadiga tekkisid probleemid, mis lahendati vastavate paikade peale panemisega (märkus: buildrooti uuemates versioonides pole neid plaastreid enam vaja).

Zabbixi paketi enda portimist kirjeldatakse eraldi artiklis.

Kuna kõik peaks töötama püsivarana (muutmatu süsteemipilt + taastatavad konfiguratsiooni-/andmebaasifailid), oli vaja kirjutada oma süsteemsed sihtmärgid, teenused ja taimerid (sihtmärk, teenus, taimer).

Meedia otsustati jagada kaheks osaks - süsteemifailidega sektsioon ja muudetavate konfiguratsioonide ja zabbixi andmebaasifailidega sektsioon.

Veidi keerulisemaks osutus andmebaasiga seotud probleemide lahendamine. Ma ei tahtnud seda otse meediasse paigutada. Samal ajal võib andmebaasi suurus ulatuda suuruseni, mis ületab võimaliku ramdiski suuruse. Seetõttu valiti kompromisslahendus: andmebaas asub SD-kaardi teisel sektsioonil (kaasaegsetel SLC-kaartidel on kuni 30 000 kirjutustsüklit), kuid seal on seadistus, mis võimaldab kasutada välist andmekandjat (näiteks usb- hdd).

Temperatuuri jälgimine viidi läbi seadme RODOS-5 kaudu. Muidugi saate Dallas 1820 otse kasutada, kuid USB-liidese ühendamine oli kiirem ja lihtsam.

x86_64 alglaaduriks valiti grub2. Selle käivitamiseks oli vaja kirjutada minimaalne konfiguratsioon.

Pärast qemu silumist teisaldati see asuse tinkerplaadile. Minu ülekatte struktuur oli algselt mõeldud platvormideüleseks – igale plaadile omaste konfiguratsioonide eraldamine (plaadi defconfig, alglaadur, süsteemipartitsiooniga pildi genereerimine) ja maksimaalne ühtsus failisüsteemi kohandamisel/andmetega pildi loomisel. Tänu sellisele ettevalmistusele läks portimine kiiresti.

Soovitatav on lugeda sissejuhatavaid artikleid:
https://habr.com/ru/post/448638/
https://habr.com/ru/post/449348/

Kuidas kokku panna

Projekt on salvestatud githubi
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 – puhas buildroot arhiiv
ülekate on minu kataloog välise puuga. See on koht, kus on salvestatud kõik, mida vajate püsivara loomiseks buildrooti abil.
README.md - projekti kirjeldus ja juhend inglise keeles.
run_me.sh on skript, mis valmistab ette ehitussüsteemi. Laiendab arhiivist buildrooti, ​​lisab sellele ülekatte (välise puu mehhanismi kaudu) ja võimaldab valida kokkupanemiseks sihtplaadi

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

Pärast seda minge lihtsalt kataloogi buildroot-2019.05 ja käivitage käsk make.
Kui ehitamine on lõppenud, on kõik ehitustulemused väljundi/piltide kataloogis:

[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

Nõutavad failid:

  • sdcard.img - meediumipilt SD-kaardile salvestamiseks (dd või rufuse kaudu wibdowide all).
  • qemu.qcow2 – meediumipilt qemus käitamiseks.
  • external.qcow2 – andmebaasi väline meediumipilt
  • monitor-0.9-beta.tar.gz - arhiiv veebiliidese kaudu värskendamiseks

Giidide põlvkond

Ei tasu samu juhiseid mitu korda kirjutada. Ja kõige loogilisem on kirjutada see üks kord allahindlusse ja seejärel teisendada allalaadimiseks PDF-iks ja veebiliidese jaoks html-iks. See on võimalik tänu pandoci paketile.

Samal ajal tuleb kõik need failid genereerida enne süsteemipildi kokkupanemist; need ehitusjärgsed skriptid on juba kasutud. Seetõttu toimub genereerimine käsiraamatute paketi kujul. Saate vaadata ülekatet/paketti/juhendeid.

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

################################################################################
#
# 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-ile ja ka mina pidin seda tegema.
Üheks meeldivaks uuenduseks on taimerite olemasolu. Üldiselt kirjutatakse nende kohta (ja mitte ainult nende kohta) eraldi artikkel, kuid ma ütlen teile lühidalt.

On toiminguid, mida tuleb perioodiliselt läbi viia. Lighttpd ja php-fpm logide kustutamiseks pidin käivitama logrotate. Tavaline asi oleks käskude kirjutamine cronis, kuid otsustasin kasutada systemd monotoonset taimerit. Nii et logrotate töötab range ajaintervalliga.

Muidugi on võimalik luua taimereid, mis käivituvad teatud kuupäevadel, kuid mul polnud seda vaja.
Taimeri näide:

  • Taimeri fail
    
    [Unit]
    Description=RODOS temp daemon timer

[Taimer] OnBootSec=1 min
OnUnitActiveSec=1 min

[Install] WantedBy=timers.target

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

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

Toetatud lauad

Asuse tinkerboard on põhiplaat, millel kõik peaks töötama. Valitud kui odav ja väga võimas.

Beaglebone black on esimene plaat, millel toimimist testiti (võimsama plaadi valiku käigus).

Qemu x86_64 - kasutatakse silumise arendamiseks.

Kuidas see toimib?

Käivitamisel toimub sätete kaheetapiline taastamine:

  • skripti settings_restore käivitamine (teenuse kaudu). See taastab süsteemi põhiseaded – ajavööndi, lokaadi, võrguseaded jne.
  • ettevalmistamisskripti käivitamine (teenuse kaudu) - siin valmistatakse ette zabbix ja andmebaas, IP väljastatakse konsooli.

Selle esmakordsel käivitamisel määratakse SD-kaardi teise partitsiooni suurus. Kui jaotamata ruumi on endiselt, jagatakse meedium ümber ja andmejaotis võtab kogu vaba ruumi. Seda tehakse installipildi (sdcard.img) suuruse vähendamiseks. Lisaks luuakse siinkohal postgresqli töökataloog. Seetõttu on esimene käivitamine uue kandjaga pikem kui järgnevad.

Välise draivi ühendamisel otsib see käivitamise hetkel vaba draivi ja vormindab selle välise sildiga ext4-sse.

Tähelepanu! Välise draivi ühendamisel (nagu ka lahtiühendamisel või asendamisel) tuleb teha varukoopia ja taastada sätted!

Temperatuuri jälgimiseks kasutatakse seadet RODOS 5. Seadmega töötamiseks annab tootja oma utiliidi lähtekoodi. Kui süsteem on sisse lülitatud, käivitub rodos taimer, mis käivitab selle utiliidi kord minutis. Praegune temperatuur kirjutatakse faili /tmp/rodos_current_temp, mille järel saab zabbix seda faili sensorina jälgida.

Konfiguratsiooni salvestusmeedium on paigaldatud kataloogi /data.

Süsteemi käivitamisel ja tööks ettevalmistamisel ilmub konsoolile järgmine teade:

System starting, please wait

Pärast ettevalmistustöö lõpetamist muutub see IP-aadressi kuvamiseks:

current ip 192.168.1.32
Ready to work

Zabbixi seadistamine temperatuuri jälgimiseks

Temperatuuri jälgimiseks tehke lihtsalt 2 sammu:

  • ühendage RODOS-seade USB-porti
  • looge andmeüksus zabbixis

Avage zabbixi veebiliides:

  • Avage jaotis Konfiguratsioon → Hostid
  • Klõpsake meie zabbixi serveri real valikul Üksused
  • Klõpsake nuppu Loo üksus

Buildroot: platvormideülese püsivara loomine zabbix-serveriga

Sisestage järgmised andmed:

  • nimi - teie äranägemisel (näiteks serverRoomTemp )
  • Tüüp - zabbix agent
  • Võti - Rodos
  • Tüüp-numbriline
  • Ühikud – C
  • Ajaloo säilitamise periood — ajaloo säilitamise periood. jäänud 10 päeva
  • Trendi salvestamise periood – muutuste dünaamika säilitamise periood. 30 päeva jäänud
  • Uus rakendus - server Ruumi temp

Ja vajutage nuppu LISA.
Buildroot: platvormideülese püsivara loomine zabbix-serveriga

Hallake seadeid veebiliidese kaudu

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

  • vaadata seadme olekut
  • võrguseadete muutmine
    Buildroot: platvormideülese püsivara loomine zabbix-serveriga
  • kasutaja parooli muutmine
  • ajavööndi valik
  • varundamine / taastamine / tehaseseadetele lähtestamine
  • võimalus ühendada välist draivi
  • Süsteemi uuendus
    Buildroot: platvormideülese püsivara loomine zabbix-serveriga

Veebiliidese sisselogimine on parooliga kaitstud. Avaleht – kasutusjuhend.

Zabbixi liidese aadress: ${ip/dns}/zabbix
Haldusliidese aadress: ${ip/dns}/manage
Buildroot: platvormideülese püsivara loomine zabbix-serveriga

Jooks qemus

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=lõimed -seade virtio-scsi-pci,id=scsi0 -draivi fail=väljund/images/external.qcow2,format=qcow2,aio=lõimed

See käsk käivitab süsteemi, millel on 4 südamikku, 2048 RAM-i, lubatud KVM, võrgukaart bridge0-l ja kaks kettad: üks süsteemi jaoks ja teine ​​väline postgresql-i jaoks.

Pilte saab teisendada 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

Seejärel importige need virtuaalkasti ja ühendage sata kaudu.

Järeldus

Selle käigus tekkis minus huvi kasutusvalmis toote valmistamise vastu - mitte eriti ilusa liidesega (mulle ei meeldi neid kirjutada), kuid sellisega, mis töötab ja mida on lihtne konfigureerida.

Viimane katse installida zabbix-seade KVM-i näitas, et see samm oli õige (pärast installimise lõpetamist süsteem ei käivitu). Võib-olla teen ma midagi valesti 😉

Materjalid

https://buildroot.org/

Allikas: www.habr.com

Lisa kommentaar