Buildroot: Paghimo sa cross-platform firmware nga adunay zabbix-server

Buildroot: Paghimo sa cross-platform firmware nga adunay zabbix-server

Kasaysayan sa problema

Ang gagmay nga mga kompanya, sa usa ka bahin, nanginahanglan taas nga kalidad nga pag-monitor sa ilang mga imprastraktura (labi na sa hayag sa kaylap nga virtualization), sa laing bahin, lisud alang kanila ang pagpalit sa mga bag-ong kagamitan. Ang mga problema sa server/hardware komon usab: kasagaran adunay 1-3 tower server sunod sa mga workstation sa user o sa gamay nga niche/closet.

Mas sayon ​​​​ang paggamit sa usa ka andam nga asembliya (pag-apod-apod), nga kinahanglan nimo nga i-upload sa usa ka microSD card ug isulod sa usa ka komon nga single-board nga kompyuter (beaglebone, raspberry pi ug orange pi nga mga pamilya, asus tinker board). Dugang pa, ang maong mga ekipo dili mahal ug mahimong i-install bisan asa.

Pagbuot sa problema

Sa daghang mga paagi, ang proyekto naugmad ingon usa ka klase nga trabaho sa laboratoryo nga adunay posibilidad nga magamit ang mga resulta.

Ang Zabbix gipili isip sistema sa pagmonitor tungod kay kini usa ka gamhanan, libre ug maayo nga dokumentado nga sistema.

Ang isyu sa plataporma sa hardware nahimong mahait. Ang pagbutang sa usa ka bulag nga makina ubos sa pag-monitor dili usab maayo nga solusyon - mahal ang pagpalit sa bag-ong kagamitan, o ang pagpangita sa daan nga kagamitan + sa gagmay nga mga kompanya adunay kanunay nga mga problema sa server/ hardware.

Ang paggamit sa buildroot build system nagtugot kanimo sa paghimo og mga espesyal nga solusyon nga mahimong maoperahan sa mga personahe nga adunay gamay nga kahibalo sa Linux operating system. Kini nga sistema mahigalaon sa mga nagsugod, apan sa samang higayon naghatag og igo nga mga oportunidad sa pag-customize sa mga kamot sa usa ka eksperyensiyadong developer. Kini perpekto alang sa pagsulbad sa problema sa dili mahal, apan hingpit nga pag-monitor sa imprastraktura sa IT, nga adunay gamay nga kinahanglanon alang sa pagbansay sa mga kawani nga nag-operate niini.

Mga lakang sa solusyon

Nadesisyonan nga una nga maghimo og firmware para sa x86_64 nga modagan sa qemu, tungod kay kini usa ka kombenyente ug paspas nga solusyon alang sa pag-debug. Dayon i-port kini sa usa ka arm single-board computer (gusto nako ang asus tinker board).

Ang buildroot gipili ingon nga sistema sa pagtukod. Sa sinugdan, kini kulang sa zabbix nga pakete, mao nga kini kinahanglan nga i-port.Adunay mga problema sa Russian nga lokal, nga nasulbad pinaagi sa pag-apply sa angay nga mga patch (timan-i: sa mas bag-ong mga bersyon sa buildroot, kini nga mga patch dili na kinahanglan).

Ang pag-port sa zabbix package mismo ihulagway sa usa ka bulag nga artikulo.

Tungod kay ang tanan kinahanglan nga molihok ingon firmware (dili mabag-o nga imahe sa sistema + mabawi nga pag-configure / mga file sa database), kinahanglan nga isulat ang imong kaugalingon nga mga target sa systemd, serbisyo ug mga timer (target, serbisyo, timer).

Nadesisyonan nga bahinon ang media sa 2 nga mga seksyon - usa ka seksyon nga adunay mga file sa sistema ug usa ka seksyon nga adunay mga mabag-o nga mga config ug mga file sa database sa zabbix.

Ang pagsulbad sa mga problema nga may kalabutan sa database nahimong mas lisud. Dili ko gusto nga ibutang kini direkta sa media. Sa samang higayon, ang gidak-on sa database mahimong moabot sa gidak-on nga molapas sa gidak-on sa posibleng ramdisk. Busa, gipili ang usa ka kompromiso nga solusyon: ang database nahimutang sa ikaduhang partition sa SD card (modernong SLC card adunay hangtod sa 30 ka mga siklo sa pagsulat), apan adunay usa ka setting nga nagtugot sa paggamit sa eksternal nga media (pananglitan, usb- hdd).

Ang pagmonitor sa temperatura gipatuman pinaagi sa RODOS-5 device. Siyempre, mahimo nimong gamiton ang Dallas 1820 direkta, apan mas paspas ug mas sayon ​​ang pag-plug sa USB.

Ang grub86 gipili isip bootloader alang sa x64_2. Kinahanglan nga magsulat usa ka gamay nga config aron malansad kini.

Pagkahuman sa pag-debug sa qemu, gi-port kini sa asus tinker board. Ang istruktura sa akong overlay sa sinugdan gituyo aron mahimong cross-platform - paggahin sa mga config nga espesipiko sa matag board (board defconfig, bootloader, pagmugna og imahe nga adunay partition sa sistema) ug labing kataas nga pagkaparehas sa pag-customize sa file system / paghimo og imahe nga adunay data. Tungod sa ingon nga pag-andam, dali nga nagdagan ang porting.

Girekomenda nga basahon ang pasiuna nga mga artikulo:
https://habr.com/ru/post/448638/
https://habr.com/ru/post/449348/

Kon unsaon pagpundok

Ang proyekto gitipigan sa github
Pagkahuman sa pag-clone sa repository, nakuha ang mosunud nga istruktura sa file:

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

buildroot-2019.05.tar.gz - limpyo nga archive sa buildroot
Ang overlay mao ang akong direktoryo nga adunay external-tree. Dinhi diin ang tanan nga imong kinahanglan sa pagtukod sa firmware gamit ang buildroot gitipigan.
README.md - paghulagway sa proyekto ug manwal sa English.
Ang run_me.sh usa ka script nga nag-andam sa sistema sa pagtukod. Gipalapad ang buildroot gikan sa archive, gilakip ang usa ka overlay niini (pinaagi sa mekanismo sa gawas nga kahoy) ug gitugotan ka nga mapili ang target board alang sa asembliya

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

Pagkahuman niini, adto lang sa direktoryo sa buildroot-2019.05 ug padagana ang make command.
Kung nahuman na ang pagtukod, ang tanan nga mga resulta sa pagtukod naa sa direktoryo sa output / imahe:

[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

Gikinahanglan nga mga file:

  • sdcard.img - media image para sa pagrekord sa SD card (pinaagi sa dd o rufus ubos sa wibdows).
  • qemu.qcow2 - media image nga modagan sa qemu.
  • external.qcow2 - external media image para sa database
  • monitor-0.9-beta.tar.gz - archive para sa pag-update pinaagi sa web interface

Kaliwatan sa mga Giya

Dili angay nga isulat ang parehas nga mga panudlo sa daghang beses. Ug ang labing lohikal nga butang mao ang pagsulat niini kausa sa markdown, ug dayon i-convert kini sa PDF alang sa pag-download ug html alang sa web interface. Posible kini salamat sa pandoc package.

Sa parehas nga oras, ang tanan nga kini nga mga file kinahanglan nga mabuhat sa wala pa ma-assemble ang imahe sa sistema; kadtong mga post-build nga mga script wala’y kapuslanan. Busa, ang henerasyon gihimo sa porma sa usa ka manwal nga pakete. Mahimo nimong tan-awon ang overlay/package/manual.

Ang manuals.mk file (nga naghimo sa tanan nga trabaho)

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

Ang kalibutan sa Linux aktibo nga naglihok sa systemd, ug kinahanglan nako nga buhaton usab kini.
Usa sa makapahimuot nga mga inobasyon mao ang presensya sa mga timer. Sa kinatibuk-an, usa ka lahi nga artikulo ang gisulat bahin kanila (ug dili lamang bahin kanila), apan sultihan ko ikaw sa makadiyot.

Adunay mga aksyon nga kinahanglan buhaton matag karon ug unya. Kinahanglan kong magpadagan sa logrotate aron malimpyohan ang lighttpd ug php-fpm logs. Ang kasagaran nga butang mao ang pagsulat sa mga sugo sa cron, apan nakahukom ko nga gamiton ang systemd monotonic timer. Busa ang logrotate modagan sa higpit nga agwat sa panahon.

Siyempre, posible nga makahimo og mga timer nga nagdilaab sa pipila ka mga petsa, apan wala nako kini kinahanglana.
Pananglitan sa Timer:

  • Timer nga file
    
    [Unit]
    Description=RODOS temp daemon timer

[Timer] OnBootSec=1min
OnUnitActiveSec=1min

[Install] WantedBy=timers.target

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

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

Gisuportahan nga mga tabla

Ang Asus tinker board mao ang main board diin ang tanan kinahanglan molihok. Gipili nga dili mahal ug gamhanan kaayo.

Ang itom nga Beaglebone mao ang una nga board diin gisulayan ang operasyon (sa panahon sa pagpili sa usa ka labi ka kusgan nga board).

Qemu x86_64 - gigamit alang sa pag-debug sa pag-uswag.

Giunsa kini pagtrabaho

Sa pagsugod, usa ka duha ka yugto nga pagpahiuli sa mga setting mahitabo:

  • pagpadagan sa settings_restore script (pinaagi sa serbisyo). Gipahiuli niini ang sukaranan nga mga setting sa sistema - time zone, lokal, setting sa network, ug uban pa.
  • pagpadagan sa script sa pag-andam (pinaagi sa serbisyo) - dinhi ang zabbix ug ang database giandam, ang IP mao ang output sa console.

Sa una nimo nga pagsugod niini, ang gidak-on sa ikaduhang partisyon sa SD card matino. Kung aduna pa'y wala gigahin nga luna, ang media i-repartitioned, ug ang seksyon sa datos mokuha sa tanang libre nga luna. Gihimo kini aron makunhuran ang gidak-on sa imahe sa pag-install (sdcard.img). Dugang pa, ang postgresql working directory gihimo niining puntoha. Mao nga ang una nga paglansad sa usa ka bag-ong carrier mas taas kaysa sa mga sunod.

Kung nagkonektar sa usa ka eksternal nga drive, sa panahon sa pagsugod nangita kini usa ka libre nga drive ug gi-format kini sa ext4 nga adunay eksternal nga label.

Atensyon! Kung nagkonektar sa usa ka eksternal nga drive (ingon man usab sa pagdiskonekta o pag-ilis niini), kinahanglan nimo nga maghimo usa ka backup ug ibalik ang mga setting!

Ang RODOS 5 device gigamit alang sa pagmonitor sa temperatura. Ang tiggama naghatag sa source code sa iyang utility alang sa pagtrabaho uban sa device. Kung ang sistema gi-on, ang rodos timer magsugod, nga nagpadagan niini nga utility kausa sa usa ka minuto. Ang kasamtangan nga temperatura gisulat sa file /tmp/rodos_current_temp, human niini ang zabbix makamonitor niini nga file isip sensor.

Ang configuration storage media gi-mount sa /data directory.

Sa pagsugod sa sistema ug pag-andam niini alang sa operasyon, ang mosunod nga mensahe makita sa console:

System starting, please wait

Human makompleto ang buluhaton sa pagpangandam, mausab kini sa pagpakita sa IP address:

current ip 192.168.1.32
Ready to work

Pag-set up sa zabbix alang sa pag-monitor sa temperatura

Aron mamonitor ang temperatura, paghimo lang og 2 ka lakang:

  • ikonektar ang RODOS device ngadto sa USB port
  • paghimo data item sa zabbix

Ablihi ang zabbix web interface:

  • Ablihi ang seksyon Configuration → Hosts
  • Pag-klik sa Mga butang sa linya sa among zabbix server
  • I-klik ang Paghimo butang

Buildroot: Paghimo sa cross-platform firmware nga adunay zabbix-server

Pagsulod sa mosunod nga datos:

  • ngalan - sa imong pagkabuotan (pananglitan, serverRoomTemp )
  • Type - ahente sa zabbix
  • Yawe - Rodos
  • Type-numeric
  • Mga Yunit - C
  • Panahon sa pagtipig sa kasaysayan — panahon sa pagtipig sa kasaysayan. nahabilin 10 ka adlaw
  • Panahon sa pagtipig sa uso-panahon sa pagtipig alang sa dinamika sa mga pagbag-o. Mibiya sa 30 ka adlaw
  • Bag-ong aplikasyon - server Room Temp

Ug pindota ang ADD button.
Buildroot: Paghimo sa cross-platform firmware nga adunay zabbix-server

Pagdumala sa mga setting pinaagi sa web interface

Ang web interface gisulat sa PHP. Adunay mga nag-unang gimbuhaton:

  • tan-awa ang kahimtang sa device
  • pagbag-o sa mga setting sa network
    Buildroot: Paghimo sa cross-platform firmware nga adunay zabbix-server
  • pagbag-o sa password sa user
  • pagpili sa time zone
  • backup/restore/factory reset
  • abilidad sa pagkonektar sa usa ka eksternal nga drive
  • Pagbag-o sa sistema
    Buildroot: Paghimo sa cross-platform firmware nga adunay zabbix-server

Ang pag-login sa web interface giprotektahan sa password. Panid sa pagsugod - manwal.

Zabbix interface address: ${ip/dns}/zabbix
Adres sa interface sa pagdumala: ${ip/dns}/manage
Buildroot: Paghimo sa cross-platform firmware nga adunay zabbix-server

Nagdagan sa 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

Kini nga sugo magsugod sa usa ka sistema nga adunay 4 ka mga cores, 2048 RAM, KVM enabled, usa ka network card sa bridge0 ug duha ka mga disk: usa alang sa sistema ug usa sa gawas alang sa postgresql.

Ang mga imahe mahimong mabag-o ug modagan sa Virtualbox:

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

Dayon i-import kini sa virtualbox ug magkonektar pinaagi sa sata.

konklusyon

Sa proseso, nahimong interesado ako sa paghimo sa usa ka andam nga gamiton nga produkto - nga adunay dili kaayo nindot nga interface (dili ko ganahan nga isulat kini), apan usa nga nagtrabaho ug dali nga ma-configure.

Ang katapusang pagsulay sa pag-instalar sa zabbix-appliance sa KVM nagpakita nga kini nga lakang husto (pagkahuman sa pag-instalar, ang sistema dili magsugod). Basin naa koy nabuhat nga sayop 😉

Mga Materyal

https://buildroot.org/

Source: www.habr.com

Idugang sa usa ka comment