Buildroot: plataforma anitzeko firmwarea sortzea zabbix-zerbitzariarekin

Buildroot: plataforma anitzeko firmwarea sortzea zabbix-zerbitzariarekin

Arazoen historia

Tamaina txikiko enpresek, alde batetik, beren azpiegituren kalitate handiko monitorizazioa behar dute (batez ere birtualizazio hedatua dela eta), bestetik, ekonomikoki zaila da ekipamendu berriak erostea. Zerbitzari/hardware arazoak ere ohikoak dira: sarritan 1-3 dorre zerbitzari daude erabiltzaileen lan-estazioen ondoan edo nitxo/armairu txiki batean.

Errazagoa da prest egindako muntaia (banaketa) erabiltzea, microSD txartel batera igo eta plaka bakarreko ordenagailu arrunt batean sartu besterik ez duzu egin behar (beaglebone, raspberry pi eta orange pi familiak, asus tinker board). Gainera, ekipamendu horiek merkeak dira eta edonon instalatu daitezke.

Arazoaren formulazioa

Modu askotan, proiektua laborategiko lan moduko bat bezala garatu da, emaitzak aplikatzeko aukerarekin.

Zabbix aukeratu zen monitorizazio sistema gisa, sistema indartsua, doakoa eta ondo dokumentatua delako.

Hardware plataformaren arazoa larritu egin da. Makina bereizi bat monitorizazioan jartzea ere ez da oso irtenbide ona - edo garestia da ekipo berria erostea, edo ekipamendu zaharrak bilatzea + enpresa txikietan maiz izaten dira arazoak zerbitzariarekin/ hardwarea.

buildroot eraikitzeko sistema erabiliz, Linux sistema eragileen ezagutza minimoa duten langileek operatu ditzaketen soluzio espezializatuak sortzeko aukera ematen du. Sistema hau hasiberrientzat atsegina da, baina aldi berean pertsonalizazio aukera zabalak eskaintzen ditu garatzaile esperientziadun baten eskutik. Ezin hobea da informatika-azpiegituren monitorizazio merke baina guztiz funtzionalaren arazoa konpontzeko, langileen prestakuntzarako gutxieneko eskakizunekin.

Konponbide-urratsak

Hasieran x86_64 qemu-n exekutatzeko firmwarea sortzea erabaki zen, arazketarako irtenbide erosoa eta azkarra baita. Gero eraman ezazu beso bakarreko ordenagailu batera (asus tinker board gustatu zait).

buildroot aukeratu zen eraikitzeko sistema gisa. Hasieran, zabbix paketea falta zaio, beraz, portatu egin behar izan zen.Errusiar lokalarekin arazoak egon ziren, eta adabaki egokiak aplikatuz konpondu ziren (oharra: buildroot-en bertsio berriagoetan, jada ez dira adabaki hauek behar).

Zabbix paketea bera portatzea aparteko artikulu batean deskribatuko da.

Guztiak firmware gisa funtzionatu behar zuenez (sistemaren irudi aldaezina + konfigurazio/datu-base fitxategi berreskuragarriak), beharrezkoa zen zure sistemaren helburuak, zerbitzuak eta tenporizadoreak idaztea (helburua, zerbitzua, tenporizadorea).

Multimedia 2 ataletan banatzea erabaki zen: sistema-fitxategiekin atal bat eta konfigurazio aldagarriekin eta zabbix datu-base-fitxategiekin.

Datu-basearekin lotutako arazoak konpontzea pixka bat zailagoa izan da. Ez nuen zuzenean hedabideetan jarri nahi. Aldi berean, datu-basearen tamaina ramdisk posible baten tamaina gainditzen duen tamainara irits daiteke. Horregatik, konpromezu irtenbide bat aukeratu zen: datu-basea SD txartelaren bigarren partizioan dago (SLC txartel modernoek 30 idazketa-ziklo dituzte gehienez), baina badago kanpoko euskarriak erabiltzeko aukera ematen duen ezarpen bat (adibidez, usb-). hdd).

Tenperaturaren monitorizazioa RODOS-5 gailuaren bidez ezarri zen. Noski, Dallas 1820 zuzenean erabil dezakezu, baina azkarragoa eta errazagoa zen USB bat konektatzea.

grub86 x64_2-rako abiarazle gisa hautatu zen. Gutxieneko konfigurazio bat idatzi behar zen abiarazteko.

qemu-n arazketa egin ondoren, asus tinker taulara eraman zen. Nire gainjartzearen egitura, hasiera batean, plataforma gurutzatua izan nahi zen - plaka bakoitzari espezifikoak diren konfigurazioak esleitzea (board defconfig, abiarazlea, sistemaren partizio batekin irudi bat sortzea) eta fitxategi-sistema pertsonalizatzeko / datuekin irudi bat sortzeko uniformetasun handiena. Prestaketa hori dela eta, porturatzea azkar joan zen.

Oso gomendagarria da sarrerako artikuluak irakurtzea:
https://habr.com/ru/post/448638/
https://habr.com/ru/post/449348/

Nola muntatu

Proiektua github-en gordetzen da
Biltegia klonatu ondoren, fitxategi-egitura hau lortzen da:

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

buildroot-2019.05.tar.gz - garbitu buildroot artxiboa
gainjartzea kanpoko zuhaitza duen nire direktorioa da. Bertan gordetzen da buildroot erabiliz firmwarea eraikitzeko behar duzun guztia.
README.md - proiektuaren deskribapena eta eskuliburua ingelesez.
run_me.sh eraikitze-sistema prestatzen duen script bat da. Buildroot artxibotik zabaltzen du, gainjarri bat eransten dio (kanpoko zuhaitz-mekanismoaren bidez) eta xede-taula hautatzeko aukera ematen du muntatzeko.

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

Horren ondoren, joan buildroot-2019.05 direktoriora eta exekutatu make komandoa.
Eraikuntza amaitutakoan, eraikuntzaren emaitza guztiak irteera/irudien direktorioan egongo dira:

[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

Beharrezko fitxategiak:

  • sdcard.img - SD txartelean grabatzeko multimedia irudia (dd edo rufus bidez wibdows azpian).
  • qemu.qcow2 - qemu-n exekutatzeko multimedia-irudia.
  • external.qcow2 - datu-baserako kanpoko multimedia-irudia
  • monitor-0.9-beta.tar.gz - web interfazearen bidez eguneratzeko artxiboa

Gidak sortzea

Ez du merezi argibide berdinak hainbat aldiz idaztea. Eta logikoena behin markdownean idaztea da, eta gero PDF bihurtzea deskargatzeko eta html web interfazerako. Hau posible da pandoc paketeari esker.

Aldi berean, fitxategi hauek guztiak sistemaren irudia muntatu aurretik sortu behar dira; eraiki osteko script horiek ez dute ezertarako balio. Beraz, sorkuntza eskuliburuen pakete moduan egiten da. Gainjarri/paketea/eskuliburuak ikus ditzakezu.

manuals.mk fitxategia (lan guztia egiten duena)

################################################################################
#
# 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 mundua aktiboki mugitzen ari da systemd-era, eta nik ere egin behar izan nuen.
Berrikuntza atseginetako bat tenporizadoreen presentzia da. Oro har, artikulu bereizi bat idazten ari da haiei buruz (eta ez haiei buruz bakarrik), baina laburki kontatuko dizuet.

Badira aldian-aldian egin beharreko ekintzak. logrotate exekutatu behar nuen lighttpd eta php-fpm erregistroak garbitzeko. Ohikoa dena komandoak cron-en idaztea izango zen, baina systemd tenporizadore monotonikoa erabiltzea erabaki nuen. Beraz, logrotate denbora-tarte zorrotz batean exekutatzen da.

Noski, posible da data jakin batzuetan pizten duten tenporizadoreak sortzea, baina ez nuen hau behar.
Tenporizadorearen adibidea:

  • Tenporizadorearen fitxategia
    
    [Unit]
    Description=RODOS temp daemon timer

[Tenporizadorea] OnBootSec=1 min
OnUnitActiveSec=1min

[Instalatu] WantedBy=timers.target

- Π€Π°ΠΉΠ» сСрвиса, Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠ³ΠΎ Ρ‚Π°ΠΉΠΌΠ΅Ρ€ΠΎΠΌ:
```bash
[Unit]
Description=RODOS temp daemon

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

Onartutako taulak

Asus tinker board dena funtzionatu behar duen plaka nagusia da. Merke eta oso indartsu gisa hautatua.

Beaglebone black funtzionamendua probatu zen lehen taula da (taula indartsuago bat aukeratzerakoan).

Qemu x86_64 - arazketa garapenerako erabiltzen da.

Funtzionamendua

Abiaraztean, ezarpenen bi faseko berrezarpena gertatzen da:

  • settings_restore scripta exekutatzen (zerbitzuaren bidez). Sistemaren oinarrizko ezarpenak leheneratzen ditu: ordu-eremua, lokalizazioa, sarearen ezarpenak, etab.
  • prestatu script-a exekutatzen (zerbitzuaren bidez) - hemen zabbix eta datu-basea prestatuta daude, IPa kontsolara ateratzen da.

Lehenengo abiaraztean, SD txartelaren bigarren partizioaren tamaina zehazten da. Oraindik esleitu gabeko tokia badago, euskarria birpartizionatu egiten da, eta datuen atalak espazio libre guztia hartzen du. Instalazioaren irudiaren (sdcard.img) tamaina murrizteko egiten da. Gainera, une honetan postgresql lan-direktorioa sortzen da. Horregatik, garraiolari berri batekin lehenengo abiarazpena ondorengoak baino luzeagoa izango da.

Kanpoko disko bat konektatzean, abiarazteko unean doako disko bat bilatzen du eta ext4 formateatzen du kanpoko etiketarekin.

Kontuz! Kanpoko disko bat konektatzean (baita deskonektatu edo ordezkatu ere), babeskopia bat egin eta ezarpenak berrezarri behar dituzu!

RODOS 5 gailua tenperatura kontrolatzeko erabiltzen da. Fabrikatzaileak bere erabilgarritasunaren iturburu-kodea ematen du gailuarekin lan egiteko. Sistema pizten denean, Rodos tenporizadorea abiarazten da, utilitate hau minutuan behin exekutatzen duena. Uneko tenperatura /tmp/rodos_current_temp fitxategian idazten da, eta ondoren zabbix-ek fitxategi hau sentsore gisa kontrolatu dezake.

Konfigurazioa biltegiratzeko euskarria /data direktorioan muntatuta dago.

Sistema abiarazi eta martxan jartzeko prestatzerakoan, honako mezu hau agertzen da kontsolan:

System starting, please wait

Prestaketa lanak amaitu ondoren, IP helbidea bistaratu egingo da:

current ip 192.168.1.32
Ready to work

Zabbix konfigurazioa tenperatura kontrolatzeko

Tenperatura kontrolatzeko, egin 2 urrats:

  • konektatu RODOS gailua USB atakara
  • sortu datu-elementua zabbix-en

Ireki zabbix web interfazea:

  • Ireki Konfigurazioa β†’ Ostalariak atala
  • Egin klik Elementuak gure zabbix zerbitzariaren lerroan
  • Egin klik Sortu elementuan

Buildroot: plataforma anitzeko firmwarea sortzea zabbix-zerbitzariarekin

Sartu datu hauek:

  • izena - zure diskrezioan (adibidez, serverRoomTemp )
  • Mota - zabbix agentea
  • Giltza - Rodos
  • Zenbakizko mota
  • Unitateak - C
  • Historiaren biltegiratze-periodo β€” historia gordetzeko aldia. 10 egun geratzen dira
  • Joera biltegiratze-aldia: aldaketen dinamika gordetzeko epea. 30 egun geratzen dira
  • Aplikazio berria - zerbitzaria Room Temp

Eta sakatu GEHITU botoia.
Buildroot: plataforma anitzeko firmwarea sortzea zabbix-zerbitzariarekin

Kudeatu ezarpenak web interfazearen bidez

Web interfazea PHPn idatzita dago. Funtzio nagusiak daude:

  • ikusi gailuaren egoera
  • sarearen ezarpenak aldatzea
    Buildroot: plataforma anitzeko firmwarea sortzea zabbix-zerbitzariarekin
  • erabiltzailearen pasahitza aldatzea
  • ordu-zona hautatzea
  • babeskopia/berreskuratu/fabrika berrezarri
  • kanpoko disko bat konektatzeko gaitasuna
  • Sistemaren eguneratzea
    Buildroot: plataforma anitzeko firmwarea sortzea zabbix-zerbitzariarekin

Web interfazean saioa hastea pasahitz babestuta dago. Hasiera orria - eskuliburua.

Zabbix interfazearen helbidea: ${ip/dns}/zabbix
Kudeaketa interfazearen helbidea: ${ip/dns}/manage
Buildroot: plataforma anitzeko firmwarea sortzea zabbix-zerbitzariarekin

Korrika qemu-n

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 fitxategia=irteera/irudiak/qemu.qcow2,format=qcow2,aio=hariak -device virtio-scsi-pci,id=scsi0 -drive fitxategia=irteera/irudiak/external.qcow2,format=qcow2,aio=hariak

Komando honek 4 nukleo, 2048 RAM, KVM gaituta, sare-txartel bat bridge0 eta bi disko dituen sistema bat abiaraziko du: bat sistemarako eta kanpoko bat postgresql-erako.

Irudiak bihurtu eta exekutatu daitezke Virtualbox-en:

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

Ondoren, inportatu itzazu virtualbox-era eta konektatu sata bidez.

Ondorioa

Prozesuan, erabiltzeko prest dagoen produktu bat egiteko interesa piztu zitzaidan, interfaze ez oso polita duena (ez zait gustatzen idaztea), baina funtzionatzen duena eta konfiguratzeko erraza dena.

Zabbix-appliance KVMn instalatzeko azken saiakerak pauso hau zuzena zela erakutsi zuen (instalazioa amaitu ondoren, sistema ez da abiarazten). Agian zerbait gaizki egiten ari naiz πŸ˜‰

Materialak

https://buildroot.org/

Iturria: www.habr.com

Gehitu iruzkin berria