Buildroot: Tsim cross-platform firmware nrog zabbix-server

Buildroot: Tsim cross-platform firmware nrog zabbix-server

Teeb meem keeb kwm

Cov tuam txhab me me, ntawm ib sab, xav tau kev saib xyuas zoo ntawm lawv cov kev tsim kho vaj tse (tshwj xeeb tshaj yog nyob rau hauv lub teeb ntawm kev nthuav dav virtualization), ntawm qhov tod tes, nws nyuaj rau nyiaj txiag rau lawv los yuav cov cuab yeej tshiab. Cov teeb meem neeg rau zaub mov / kho vajtse kuj tseem muaj: feem ntau muaj 1-3 ntauwd servers nyob ib sab ntawm cov neeg siv chaw ua haujlwm lossis hauv lub niche / txee me me.

Nws yooj yim dua los siv lub rooj sib txoos ua ke (kev faib tawm), uas koj tsuas yog yuav tsum tau xa mus rau daim npav microSD thiab ntxig rau hauv ib lub khoos phis tawj ib leeg (beaglebone, raspberry pi thiab txiv kab ntxwv pi tsev neeg, asus tinker board). Tsis tas li ntawd, cov cuab yeej zoo li no pheej yig thiab tuaj yeem ntsia tau rau txhua qhov chaw.

Nqe lus ntawm qhov teeb meem

Muaj ntau txoj hauv kev, qhov project tsim los ua ib hom kev sim ua haujlwm nrog qhov ua tau ntawm kev siv cov txiaj ntsig.

Zabbix tau raug xaiv los ua tus saib xyuas vim tias nws yog qhov muaj zog, pub dawb thiab cov ntaub ntawv zoo.

Qhov teeb meem nrog lub hardware platform tau dhau los ua mob hnyav, muab lub tshuab cais hauv kev saib xyuas kuj tsis yog ib qho kev daws teeb meem zoo heev - txawm tias nws kim heev los yuav cov cuab yeej tshiab, lossis nrhiav cov cuab yeej qub + hauv cov tuam txhab me muaj teeb meem tsis tu ncua nrog server / kho vajtse.

Siv cov buildroot tsim system tso cai rau koj los tsim cov kev daws teeb meem tshwj xeeb uas tuaj yeem ua haujlwm los ntawm cov neeg ua haujlwm nrog kev paub tsawg kawg ntawm Linux operating systems. Cov txheej txheem no yog tus phooj ywg zoo rau cov neeg pib tshiab, tab sis tib lub sijhawm muab kev hloov kho kom haum rau hauv tes ntawm tus neeg tsim khoom paub txog. Nws yog qhov zoo tshaj plaws rau kev daws qhov teeb meem pheej yig, tab sis kev ua haujlwm zoo saib xyuas ntawm IT infrastructure, nrog tsawg kawg yuav tsum tau rau kev cob qhia cov neeg ua haujlwm ua haujlwm.

Cov kauj ruam daws teeb meem

Nws tau txiav txim siab pib tsim firmware rau x86_64 kom khiav hauv qemu, vim qhov no yog ib qho yooj yim thiab ceev kev daws teeb meem rau kev debugging. Tom qab ntawd muab nws tso rau hauv ib lub khoos phis tawj ib leeg (Kuv nyiam lub asus tinker board).

buildroot raug xaiv raws li qhov tsim system. Thaum xub thawj, nws tsis muaj lub pob zabbix, yog li nws yuav tsum tau muab tso rau, muaj teeb meem nrog thaj chaw Lavxias, uas tau daws los ntawm kev siv cov thaj ua rau tsim nyog (ceeb toom: hauv cov versions tshiab ntawm buildroot, cov thaj ua rau thaj no tsis xav tau ntxiv lawm).

Porting lub pob zabbix nws tus kheej yuav raug piav qhia nyob rau hauv ib tsab xov xwm cais.

Txij li txhua yam yuav tsum ua haujlwm raws li firmware (tsis hloov pauv lub cev duab + rov qab tau teeb tsa / cov ntaub ntawv database), nws yog qhov tsim nyog los sau koj tus kheej lub hom phiaj, cov kev pabcuam thiab sijhawm (lub hom phiaj, kev pabcuam, timer).

Nws tau txiav txim siab faib cov xov xwm rau hauv 2 ntu - ntu nrog cov ntaub ntawv kaw lus thiab ib ntu nrog hloov pauv hloov tau thiab zabbix cov ntaub ntawv database.

Kev daws teeb meem cuam tshuam nrog rau cov ntaub ntawv tau dhau los ua qhov nyuaj me ntsis. Kuv tsis xav tso nws ncaj qha rau hauv xov xwm. Nyob rau tib lub sijhawm, qhov loj ntawm cov ntaub ntawv tuaj yeem ncav cuag qhov loj tshaj qhov loj ntawm qhov ua tau ramdisk. Yog li ntawd, ib qho kev daws teeb meem raug xaiv: cov ntaub ntawv nyob rau ntawm qhov kev faib thib ob ntawm daim npav SD (hnub no SLC phaib muaj txog li 30 sau lub voj voog), tab sis muaj qhov chaw uas tso cai rau siv cov xov xwm sab nraud (piv txwv li, usb- hdd).

Kev ntsuas kub tau siv los ntawm RODOS-5 ntaus ntawv. Tau kawg, koj tuaj yeem siv Dallas 1820 ncaj qha, tab sis nws tau nrawm dua thiab yooj yim dua rau ntsaws rau hauv USB.

grub86 raug xaiv los ua tus bootloader rau x64_2. Nws yog tsim nyog los sau ib tug tsawg config mus tso nws.

Tom qab debugging ntawm qemu, nws tau ported rau asus tinker board. Cov qauv ntawm kuv lub overlay yog pib los ua tus ntoo khaub lig-platform - faib cov configs tshwj xeeb rau txhua lub rooj tsavxwm (board defconfig, bootloader, tsim cov duab nrog lub kaw lus muab faib) thiab qhov siab tshaj plaws hauv kev kho cov ntaub ntawv kaw lus / tsim cov duab nrog cov ntaub ntawv. Vim li no kev npaj, porting mus sai heev.

Nws raug nquahu kom nyeem cov lus taw qhia:
https://habr.com/ru/post/448638/
https://habr.com/ru/post/449348/

Yuav sib sau ua ke li cas

Qhov project yog khaws cia rau hauv github
Tom qab cloning lub repository, cov qauv ntaub ntawv hauv qab no tau txais:

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

buildroot-2019.05.tar.gz - huv buildroot archive
overlay yog kuv phau ntawv nrog lwm-ntoo. Qhov no yog qhov uas txhua yam koj xav tau los tsim cov firmware siv buildroot khaws cia rau hauv.
README.md - qhov project piav qhia thiab phau ntawv ua lus Askiv.
run_me.sh yog ib tsab ntawv uas npaj cov txheej txheem tsim. Nthuav buildroot los ntawm lub archive, txuas ib qho overlay rau nws (ntawm sab nraud-ntoo mechanism) thiab tso cai rau koj xaiv lub hom phiaj board rau kev sib dhos

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

Tom qab no, cia li mus rau buildroot-2019.05 directory thiab khiav cov lus txib ua.
Thaum tsim tiav, tag nrho cov txiaj ntsig tsim yuav nyob rau hauv cov zis / duab directory:

[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

Cov ntaub ntawv xav tau:

  • sdcard.img - media duab rau sau rau ntawm SD card (ntawm dd lossis rufus hauv qab wibdows).
  • qemu.qcow2 - media image to run in qemu.
  • external.qcow2 - sab nraud xov xwm duab rau lub database
  • saib-0.9-beta.tar.gz - archive rau kev hloov kho ntawm lub vev xaib interface

Tiam ntawm Phau Ntawv Qhia

Nws tsis tsim nyog sau tib cov lus qhia ob peb zaug. Thiab qhov laj thawj tshaj plaws yog sau nws ib zaug hauv markdown, thiab tom qab ntawd hloov nws mus rau PDF rau rub tawm thiab html rau lub vev xaib interface. Qhov no ua tau ua tsaug rau pandoc pob.

Nyob rau tib lub sijhawm, tag nrho cov ntaub ntawv no yuav tsum tau tsim ua ntej lub kaw lus duab tau sib sau ua ke; cov ntawv sau tom qab tsim tau tsis muaj txiaj ntsig. Yog li ntawd, tiam yog ua nyob rau hauv daim ntawv ntawm ib tug phau ntawv pob. Koj tuaj yeem saib ntawm overlay / pob / phau ntawv.

Cov ntaub ntawv manuals.mk (uas ua txhua yam haujlwm)

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

Lub ntiaj teb Linux tau nquag txav mus rau systemd, thiab kuv yuav tsum ua nws ib yam nkaus.
Ib qho kev zoo siab tshiab yog qhov muaj cov timers. Feem ntau, ib tsab xov xwm cais tau sau txog lawv (thiab tsis yog hais txog lawv), tab sis kuv yuav qhia koj luv luv.

Muaj tej yam uas yuav tsum tau ua raws sij hawm. Kuv yuav tsum tau khiav logrotate kom tshem tawm cov lighttpd thiab php-fpm cav. Qhov ib txwm ua yuav yog sau cov lus txib hauv cron, tab sis kuv txiav txim siab siv lub systemd monotonic timer. Yog li logrotate khiav ntawm lub sijhawm nruj.

Ntawm chav kawm, nws muaj peev xwm tsim timers uas tua hluav taws rau tej hnub, tab sis kuv tsis xav tau qhov no.
Timer piv txwv:

  • Timer ntaub ntawv
    
    [Unit]
    Description=RODOS temp daemon timer

[Timer] OnBootSec = 1 min
OnUnitActiveSec = 1 min

[Nruab] WantedBy=timers.target

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

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

Pab pawg thawj coj saib

Asus tinker board yog lub rooj tsav xwm tseem ceeb uas txhua yam yuav tsum ua haujlwm. Xaiv raws li pheej yig thiab muaj zog heev.

Beaglebone dub yog thawj lub rooj tsavxwm uas tau sim ua haujlwm (thaum xaiv lub rooj tsavxwm muaj zog dua).

Qemu x86_64 - siv rau kev txhim kho debugging.

Nws ua haujlwm li cas

Thaum pib, kev kho dua tshiab ntawm ob theem tshwm sim:

  • khiav settings_restore tsab ntawv (ntawm qhov kev pabcuam). Nws rov kho cov txheej txheem yooj yim - thaj tsam lub sijhawm, thaj chaw, chaw teeb tsa network, thiab lwm yam.
  • khiav cov ntawv npaj (ntawm qhov kev pabcuam) - ntawm no zabbix thiab cov ntaub ntawv tau npaj, tus IP yog tso tawm rau lub console.

Thaum koj xub pib nws, qhov loj ntawm qhov thib ob muab faib ntawm SD card yog txiav txim. Yog tias tseem muaj qhov chaw tsis tau faib, cov xov xwm tau muab faib ua ke, thiab cov ntaub ntawv seem yuav siv tag nrho qhov chaw dawb. Qhov no yog ua tiav txhawm rau txo qhov loj ntawm cov duab teeb tsa (sdcard.img). Tsis tas li ntawd, cov ntawv teev npe ua haujlwm postgresql yog tsim los ntawm qhov no. Tias yog vim li cas thawj zaug tso tawm nrog cov cab kuj tshiab yuav ntev dua li cov tom ntej.

Thaum txuas tus tsav sab nraud, thaum lub sijhawm pib nws tshawb nrhiav lub tsav dawb thiab tsim nws rau hauv ext4 nrog rau daim ntawv lo sab nraud.

Nco ntsoov! Thaum txuas tus tsav sab nraud (nrog rau kev txiav lossis hloov nws), koj yuav tsum ua kom thaub qab thiab kho cov chaw!

RODOS 5 ntaus ntawv yog siv los ntsuas qhov kub thiab txias. Thaum lub kaw lus qhib, lub rodos timer pib, uas khiav cov nqi hluav taws xob no ib zaug ib feeb. Qhov ntsuas kub tam sim no tau sau rau hauv cov ntaub ntawv /tmp/rodos_current_temp, tom qab ntawd zabbix tuaj yeem saib xyuas cov ntaub ntawv no ua lub sensor.

Cov kev teeb tsa khaws cia cov xov xwm yog mounted nyob rau hauv / cov ntaub ntawv directory.

Thaum pib lub kaw lus thiab npaj nws rau kev ua haujlwm, cov lus hauv qab no tshwm sim hauv console:

System starting, please wait

Tom qab ua tiav qhov kev npaj ua haujlwm, nws yuav hloov mus rau qhov chaw nyob IP:

current ip 192.168.1.32
Ready to work

Teeb tsa zabbix rau kev ntsuas kub

Txhawm rau saib xyuas qhov kub thiab txias, tsuas yog ua 2 kauj ruam:

  • txuas lub RODOS ntaus ntawv mus rau USB chaw nres nkoj
  • tsim cov ntaub ntawv hauv zabbix

Qhib zabbix web interface:

  • Qhib seem Configuration β†’ Hosts
  • Nyem rau ntawm cov khoom hauv kab ntawm peb tus neeg rau zaub mov zabbix
  • Nyem rau Tsim cov khoom

Buildroot: Tsim cross-platform firmware nrog zabbix-server

Sau cov ntaub ntawv hauv qab no:

  • npe - ntawm koj qhov kev txiav txim siab (piv txwv li, serverRoomTemp)
  • Hom - tus neeg sawv cev zabbix
  • Ntsiab - Rodos
  • Hom-tus lej
  • Chav tsev - C
  • Lub sijhawm khaws keeb kwm - keeb kwm khaws cia lub sijhawm. sab laug 10 hnub
  • Trend cia lub sij hawm - lub sij hawm cia rau lub dynamics ntawm kev hloov. Sab laug 30 hnub
  • Daim ntawv thov tshiab - server Room Temp

Thiab nias lub pob ADD.
Buildroot: Tsim cross-platform firmware nrog zabbix-server

Tswj kev teeb tsa ntawm lub vev xaib interface

Lub web interface yog sau hauv PHP. Muaj cov haujlwm tseem ceeb:

  • saib cov xwm txheej ntaus ntawv
  • hloov chaw network
    Buildroot: Tsim cross-platform firmware nrog zabbix-server
  • hloov tus neeg siv tus password
  • lub sijhawm xaiv
  • backup/restore/factory reset
  • muaj peev xwm mus txuas rau sab nraud tsav
  • Txheej txheem hloov tshiab
    Buildroot: Tsim cross-platform firmware nrog zabbix-server

Nkag mus rau lub vev xaib interface yog tus password tiv thaiv. Pib nplooj ntawv - phau ntawv.

Zabbix interface chaw nyob: ${ip/dns}/zabbix
Management interface chaw nyob: ${ip/dns}/manage
Buildroot: Tsim cross-platform firmware nrog zabbix-server

Khiav hauv qemu

qemu-system-x86_64 -smp 4 -m 4026M -enable-kvm -machine q35,accel=kvm -device intel-iommu -cpu party -net nic -net choj,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

Cov lus txib no yuav pib lub kaw lus nrog 4 cores, 2048 RAM, KVM enabled, ib daim npav network ntawm bridge0 thiab ob lub disks: ib qho rau lub kaw lus thiab ib qho sab nraud rau postgresql.

Cov duab tuaj yeem hloov pauv thiab khiav hauv Virtualbox:

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

Tom qab ntawd import lawv rau hauv virtualbox thiab txuas ntawm sata.

xaus

Hauv cov txheej txheem, kuv tau nyiam ua cov khoom npaj siv - nrog qhov tsis zoo nkauj heev (Kuv tsis nyiam sau lawv), tab sis ib qho uas ua haujlwm thiab yooj yim rau kev teeb tsa.

Qhov kawg sim rau nruab zabbix-khoom siv hauv KVM pom tias cov kauj ruam no yog lawm (tom qab kev teeb tsa tiav, lub kaw lus tsis pib). Tej zaum kuv ua ib yam dab tsi tsis ncaj ncees lawm πŸ˜‰

Cov ntaub ntawv

https://buildroot.org/

Tau qhov twg los: www.hab.com

Ntxiv ib saib