Buildroot: Kreye firmwèr kwa-platfòm ak zabbix-sèvè

Buildroot: Kreye firmwèr kwa-platfòm ak zabbix-sèvè

Istwa pwoblèm

Ti-gwosè konpayi yo, sou yon bò, bezwen siveyans kalite siperyè nan enfrastrikti yo (espesyalman nan limyè virtualizasyon toupatou), nan lòt men an, li difisil finansyèman pou yo achte nouvo ekipman. Pwoblèm sèvè / pyès ki nan konpitè yo tou komen: souvan gen 1-3 serveurs gwo kay won akote estasyon travay itilizatè yo oswa nan yon ti nich / klozèt.

Li pi fasil yo sèvi ak yon asanble pare-fè (distribisyon), ki ou jis bezwen telechaje nan yon kat microSD epi mete nan yon òdinatè komen yon sèl-tablo (beaglebone, Franbwaz pi ak zoranj pi fanmi, Asus Tinker tablo). Anplis de sa, ekipman sa yo pa chè epi yo ka enstale nenpòt kote.

Deklarasyon sou pwoblèm nan

Nan plizyè fason, pwojè a devlope kòm yon kalite travay laboratwa ak posiblite pou aplike rezilta yo.

Zabbix te chwazi kòm sistèm siveyans la paske li se yon sistèm pwisan, gratis ak byen dokimante.

Pwoblèm nan ak platfòm pyès ki nan konpitè te vin grav Mete yon machin separe anba siveyans tou se pa yon solisyon trè bon - swa li se chè yo achte nouvo ekipman, oswa yo gade pou ansyen ekipman + nan ti konpayi gen pwoblèm souvan ak sèvè /. pyès ki nan konpitè.

Sèvi ak sistèm buildroot build la pèmèt ou kreye solisyon espesyalize ki ka opere pa pèsonèl ki gen konesans minim nan sistèm opere Linux. Sistèm sa a se zanmitay pou débutan, men an menm tan an bay opòtinite personnalisation ase nan men yo nan yon pwomotè ki gen eksperyans. Li se pafè pou rezoud pwoblèm nan nan siveyans chè, men konplètman fonksyonèl nan enfrastrikti IT, ak kondisyon minimòm pou fòmasyon nan pèsonèl la opere li.

Etap solisyon yo

Li te deside okòmansman kreye firmwèr pou x86_64 kouri nan qemu, depi sa a se yon solisyon pratik ak vit pou debogaj. Lè sa a, pote li nan yon òdinatè sèl-komisyon bra (mwen te renmen tablo a asus tinker).

buildroot te chwazi kòm sistèm nan bati. Okòmansman, li manke pake zabbix la, kidonk li te dwe pòte Te gen pwoblèm ak lokal Ris la, ki te rezoud pa aplike plak ki apwopriye yo (nòt: nan nouvo vèsyon buildroot, patch sa yo pa nesesè ankò).

Yo pral dekri pòsyon pakè zabbix la nan yon atik separe.

Depi tout bagay ta dwe travay kòm firmwèr (imaj sistèm ki pa ka chanje + fichye konfigirasyon / baz done ki ka refè), li te nesesè yo ekri pwòp sib systemd ou, sèvis ak revèy (sib, sèvis, revèy).

Li te deside divize medya yo an 2 seksyon - yon seksyon ki gen dosye sistèm ak yon seksyon ki gen konfigirasyon chanjan ak dosye baz done zabbix.

Rezoud pwoblèm ki gen rapò ak baz done a te tounen yon ti kras pi difisil. Mwen pa t 'vle mete li dirèkteman sou medya yo. An menm tan an, gwosè a nan baz done a ka rive nan yon gwosè ki depase gwosè a nan yon ramdisk posib. Se poutèt sa, yo te chwazi yon solisyon konpwomi: baz done a sitiye sou dezyèm patisyon kat SD la (kat SLC modèn gen jiska 30 sik ekri), men gen yon anviwònman ki pèmèt itilizasyon medya ekstèn (pa egzanp, usb-). hdd).

Yo te aplike siveyans tanperati atravè aparèy RODOS-5. Natirèlman, ou ka itilize Dallas 1820 dirèkteman, men li te pi vit ak pi fasil pou ploge yon USB.

grub86 te chwazi kòm bootloader pou x64_2. Li te nesesè yo ekri yon konfigirasyon minim yo lanse li.

Apre debogaj sou qemu, li te pote sou tablo asus tinker la. Okòmansman, estrikti nan kouvri mwen an te gen entansyon pou kwa-platfòm - allocation konfigirasyon espesifik nan chak tablo (defconfig tablo, bootloader, jenere yon imaj ak yon patisyon sistèm) ak inifòmite maksimòm nan pèrsonalizasyon sistèm nan dosye / kreye yon imaj ak done. Akòz preparasyon sa yo, pòsyon te ale byen vit.

Li trè rekòmande pou li atik entwodiksyon yo:
https://habr.com/ru/post/448638/
https://habr.com/ru/post/449348/

Ki jan yo rasanble

Pwojè a estoke sou github
Apre klonaj repozitwa a, yo jwenn estrikti dosye sa a:

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

buildroot-2019.05.tar.gz - pwòp achiv buildroot
kouvri se anyè mwen an ak ekstèn-pyebwa. Sa a se kote tout bagay ou bezwen pou konstwi firmwèr la lè l sèvi avèk buildroot yo estoke nan.
README.md - deskripsyon pwojè a ak manyèl nan lang angle.
run_me.sh se yon script ki prepare sistèm konstriksyon an. Elaji buildroot soti nan achiv la, tache yon kouvri sou li (via mekanis ekstèn-pyebwa) epi pèmèt ou chwazi tablo sib la pou asanble.

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

Apre sa, jis ale nan anyè buildroot-2019.05 epi kouri lòd make la.
Yon fwa konstriksyon an fini, tout rezilta bati yo pral nan anyè pwodiksyon / imaj:

[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

Fichye obligatwa:

  • sdcard.img - imaj medya pou anrejistreman sou yon kat SD (via dd oswa rufus anba wibdows).
  • qemu.qcow2 - imaj medya yo kouri nan qemu.
  • external.qcow2 - imaj medya ekstèn pou baz done a
  • monitor-0.9-beta.tar.gz - achiv pou mete ajou atravè koòdone entènèt la

Jenerasyon Gid

Li pa vo ekri menm enstriksyon yo plizyè fwa. Ak bagay ki pi lojik se ekri li yon fwa nan markdown, ak Lè sa a, konvèti li nan PDF pou telechaje ak html pou koòdone entènèt la. Sa a se posib gras a pake pandoc la.

An menm tan, tout fichye sa yo dwe pwodwi anvan imaj sistèm lan reyini scripts post-build sa yo deja initil. Se poutèt sa, jenerasyon an fè nan fòm lan nan yon pake manyèl. Ou ka gade nan kouvri/pake/manyèl yo.

Fichye manuals.mk la (ki fè tout travay la)

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

Mond Linux la ap deplase aktivman nan systemd, e mwen te oblije fè li tou.
Youn nan inovasyon yo bèl se prezans nan timers. An jeneral, yon atik separe ap ekri sou yo (e pa sèlman sou yo), men mwen pral di ou yon ti tan.

Gen aksyon ki dwe fèt detanzantan. Mwen te bezwen kouri logrotate pou netwaye mòso bwa lighttpd ak php-fpm yo. Bagay nòmal la ta dwe ekri kòmandman yo nan cron, men mwen deside sèvi ak revèy monotone systemd la. Se konsa, logrotate kouri nan yon entèval tan strik.

Natirèlman, li posib yo kreye revèy ki tire nan sèten dat, men mwen pa t 'bezwen sa a.
Egzanp revèy:

  • File revèy
    
    [Unit]
    Description=RODOS temp daemon timer

[Timer] OnBootSec=1min
OnUnitActiveSec=1min

[Enstale] WantedBy=timers.target

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

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

Sipòte ankadreman

Asus Tinker Board se tablo prensipal la sou ki tout bagay ta dwe travay. Chwazi kòm chè ak trè pwisan.

Beaglebone nwa se premye tablo sou ki operasyon yo te teste (pandan seleksyon an nan yon tablo ki pi pwisan).

Qemu x86_64 - itilize pou devlopman debogaj.

Ki jan li fonksyone

Nan demaraj, yon restorasyon de-etap nan anviwònman rive:

  • kouri script settings_restore (via sèvis la). Li retabli paramèt sistèm debaz yo - zòn lè, lokal, anviwònman rezo, elatriye.
  • kouri script la prepare (via sèvis la) - isit la zabbix ak baz done a yo prepare, IP a se pwodiksyon nan konsole a.

Lè ou fèk kòmanse li, yo detèmine gwosè dezyèm patisyon kat SD la. Si gen espas ki poko alokasyon toujou, medya yo repatisyone, epi seksyon done a pran tout espas gratis la. Sa a se fè yo nan lòd yo diminye gwosè a nan imaj enstalasyon an (sdcard.img). Anplis de sa, anyè k ap travay postgresql kreye nan pwen sa a. Se poutèt sa premye lansman ak yon nouvo konpayi asirans pral pran plis tan pase sa ki vin apre yo.

Lè w konekte yon kondwi ekstèn, nan moman demaraj li chèche yon kondwi gratis epi li fòme li an ext4 ak etikèt ekstèn lan.

Atansyon! Lè w konekte yon kondwi ekstèn (kòm byen ke dekonekte oswa ranplase li), ou bezwen fè yon backup ak restore anviwònman yo!

Yo itilize aparèy RODOS 5 pou kontwole tanperati a. Manifakti a bay kòd sous sèvis piblik li pou travay ak aparèy la. Lè sistèm nan vire sou, revèy rodos la kòmanse, ki kouri sèvis piblik sa a yon fwa pa minit. Tanperati aktyèl la ekri nan dosye /tmp/rodos_current_temp, apre sa zabbix ka kontwole dosye sa a kòm yon Capteur.

Medya depo konfigirasyon an monte nan anyè /data.

Lè w kòmanse sistèm lan ak prepare li pou operasyon an, mesaj sa a parèt nan konsole a:

System starting, please wait

Apre w fin ranpli travay preparasyon an, li pral chanje nan montre adrès IP la:

current ip 192.168.1.32
Ready to work

Mete kanpe zabbix pou siveyans tanperati

Pou kontwole tanperati a, jis pran 2 etap:

  • konekte aparèy RODOS la nan pò USB la
  • kreye atik done nan zabbix

Louvri koòdone entènèt zabbix la:

  • Louvri seksyon Konfigirasyon → Gen tout pouvwa a
  • Klike sou Atik nan liy sèvè zabbix nou an
  • Klike sou Kreye atik

Buildroot: Kreye firmwèr kwa-platfòm ak zabbix-sèvè

Antre done sa yo:

  • non - selon diskresyon ou (pa egzanp, serverRoomTemp)
  • Kalite - zabbix ajan
  • Kle - Rodos
  • Kalite-nimerik
  • Inite - C
  • History storage period — peryòd depo istwa. kite 10 jou
  • Tandans peryòd depo - peryòd depo pou dinamik chanjman yo. Kite 30 jou
  • Nouvo aplikasyon - sèvè Room Temp

Epi peze bouton ADD.
Buildroot: Kreye firmwèr kwa-platfòm ak zabbix-sèvè

Jere anviwònman atravè koòdone entènèt

Koòdone entènèt la ekri nan PHP. Gen fonksyon prensipal:

  • wè estati aparèy la
  • chanje paramèt rezo yo
    Buildroot: Kreye firmwèr kwa-platfòm ak zabbix-sèvè
  • chanje modpas itilizatè
  • seleksyon zòn lè
  • backup / restore / reset faktori
  • kapasite pou konekte yon kondwi ekstèn
  • Mizajou sistèm lan
    Buildroot: Kreye firmwèr kwa-platfòm ak zabbix-sèvè

Konekte nan koòdone entènèt la pwoteje modpas. Kòmanse paj - manyèl.

Adrès koòdone Zabbix: ${ip/dns}/zabbix
Adrès koòdone jesyon: ${ip/dns}/manage
Buildroot: Kreye firmwèr kwa-platfòm ak zabbix-sèvè

Kouri nan 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 fichye = pwodiksyon / imaj / qemu.qcow2, fòma = qcow2, aio = fil - aparèy virtio-scsi-pci, id = scsi0 - kondwi dosye = pwodiksyon / imaj / ekstèn.qcow2, fòma = qcow2, aio = fil

Kòmand sa a pral kòmanse yon sistèm ak 4 nwayo, 2048 RAM, KVM pèmèt, yon kat rezo sou bridge0 ak de disk: youn pou sistèm nan ak yon ekstèn pou postgresql.

Imaj yo ka konvèti epi kouri nan Virtualbox:

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

Lè sa a, enpòte yo nan virtualbox epi konekte via sata.

Konklizyon

Nan pwosesis la, mwen te vin enterese nan fè yon pwodwi ki pare pou itilize - ak yon koòdone pa trè bèl (mwen pa renmen ekri yo), men yon sèl ki travay epi ki fasil pou konfigirasyon.

Dènye tantativ pou enstale zabbix-aparèy nan KVM te montre ke etap sa a te kòrèk (apre enstalasyon an fini, sistèm nan pa kòmanse). Petèt mwen fè yon bagay mal 😉

Materyèl

https://buildroot.org/

Sous: www.habr.com

Add nouvo kòmantè