Buildroot: Afirandina firmware-platformê bi zabbix-server

Buildroot: Afirandina firmware-platformê bi zabbix-server

Dîroka pirsgirêkê

Pargîdaniyên piçûk, ji aliyekî ve, hewceyê çavdêriya bi kalîte ya binesaziya xwe (nemaze ji ber ronahiya virtualbûna berbelav), ji hêla din ve, ji hêla aborî ve ji wan re dijwar e ku alavên nû bikirin. Pirsgirêkên server / hardware jî gelemperî ne: pir caran 1-3 pêşkêşkerên bircê li tenişta qereqolên xebatê yên bikarhêner an di nav cîhek / dolaba piçûk de hene.

Bikaranîna meclîsek amadekirî (belavkirin) hêsantir e, ku hûn tenê hewce ne ku hûn li ser qerta microSD-ê dakêşin û têxin nav komputerek yek-board hevpar (malbatên beaglebone, raspberry pi û orange pi, panela tinker asus). Wekî din, alavên weha erzan in û dikarin li her deverê werin saz kirin.

Formulkirina pirsgirêkê

Bi gelek awayan, proje wekî celebek xebata laboratîfê bi îmkana sepandina encaman pêş ket.

Zabbix wekî pergala çavdêriyê hate hilbijartin ji ber ku ew pergalek hêzdar, azad û bi belgekirî ye.

Pirsgirêka platforma hardware tûj bûye Danîna makîneyek cihê di bin çavdêriyê de jî ne çareseriyek pir baş e - an kirîna alavên nû biha ye, an jî lêgerîna li alavên kevn + di pargîdaniyên piçûk de pir caran pirsgirêkên serverê hene/. hardware.

Bikaranîna pergala avakirina buildroot dihêle hûn çareseriyên pispor biafirînin ku dikarin ji hêla personelên xwedan zanîna hindiktirîn a pergalên xebitandinê yên Linux ve werin xebitandin. Ev pergal ji destpêkeran re heval e, lê di heman demê de di destê pêşdebirek bi ezmûn de fersendên xwerûkirinê yên pir peyda dike. Ew ji bo çareserkirina pirsgirêka çavdêriya erzan, lê bi tevahî fonksiyonel a binesaziya IT-ê, bi hewcedariyên hindiktirîn ên ji bo perwerdekirina personelên ku wê dixebitin, bêkêmasî ye.

gavên çareseriyê

Biryar hate girtin ku di destpêkê de ji bo x86_64 firmware were afirandin ku di qemu de bixebite, ji ber ku ev çareseriyek hêsan û bilez e ji bo xeletkirinê. Dûv re wê biguhezînin ser komputerek yek-piştgir a milê (min ji panela asus tinker hez kir).

buildroot wekî pergala avakirinê hate hilbijartin. Di destpêkê de, ew pakêta zabbix tune ye, ji ber vê yekê diviya bû ku ew were barkirin.

Veguheztina pakêta zabbix bixwe dê di gotarek cûda de were vegotin.

Ji ber ku divê her tişt wekî firmware bixebite (wêneya pergalê ya neguhêrbar + pelên veavakirina/danûstendeyê yên ku têne vegerandin), pêdivî bû ku hûn armancên pergalê, karûbar û demjimêrên xwe (hedef, karûbar, demjimêr) binivîsin.

Biryar hat dayîn ku medya li 2 beşan were dabeş kirin - beşek bi pelên pergalê û beşek bi vesazên guhezbar û pelên databasa zabbix.

Çareserkirina pirsgirêkên girêdayî databasê hinekî dijwartir derket holê. Min nexwest wê rasterast li ser medyayê bi cih bikim. Di heman demê de, mezinahiya databasê dikare bigihîje mezinahiyek ku ji mezinahiya ramdiskek gengaz derbas dibe. Ji ber vê yekê, çareseriyek lihevhatinê hate hilbijartin: databas li ser dabeşa duyemîn a qerta SD-ê ye (kartên SLC yên nûjen heya 30 çerxên nivîsandinê hene), lê mîhengek heye ku destûrê dide karanîna medyaya derveyî (mînak, usb- hdd).

Çavdêriya germahiyê bi rêya cîhaza RODOS-5 ve hate kirin. Bê guman, hûn dikarin Dallas 1820 rasterast bikar bînin, lê pêvekirina USB-ê zûtir û hêsantir bû.

grub86 wekî bootloader ji bo x64_2 hate hilbijartin. Ji bo destpêkirina wê pêdivî bû ku mîhengek hindik were nivîsandin.

Piştî debuggkirina li ser qemu, ew ji bo panela asus tinker hate şandin. Struktura serpêhatiya min di destpêkê de armanc bû ku bibe cross-platform - veqetandina mîhengên taybetî ji bo her panelê (defconfig, bootloader, afirandina wêneyek bi dabeşek pergalê) û yekrengiya herî zêde di xweşkirina pergala pelan de / afirandina wêneyek bi daneyê. Ji ber vê amadekariyê, barkirin zû çû.

Pir tê pêşniyar kirin ku hûn gotarên destpêkê bixwînin:
https://habr.com/ru/post/448638/
https://habr.com/ru/post/449348/

Meriv çawa kom dibe

Proje li ser github tê hilanîn
Piştî klonkirina depoyê, avahiya pelê ya jêrîn tê wergirtin:

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

buildroot-2019.05.tar.gz - archive buildroot paqij
overlay pelrêça min a bi dara derveyî ye. Li vir her tiştê ku hûn hewce ne ku hûn firmware bi karanîna buildroot ava bikin tê de têne hilanîn.
README.md - danasîna projeyê û manual bi Englishngilîzî.
run_me.sh skrîptek e ku pergala avakirinê amade dike. Avahiyê ji arşîvê berfireh dike, pêvekek pê ve girêdide (bi rêya mekanîzmaya dara derveyî) û dihêle hûn panela armancê ji bo kombûnê hilbijêrin.

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

Piştî vê yekê, tenê biçin pelrêça buildroot-2019.05 û fermana make-ê bimeşînin.
Piştî ku çêkirin qediya, hemî encamên çêkirinê dê di pelrêça encam / wêneyan de bin:

[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

Pelên pêwîst:

  • sdcard.img - wêneya medyayê ji bo tomarkirina li ser qerta SD (bi dd an rufus di bin wibdows de).
  • qemu.qcow2 - Wêneyê medyayê ku di qemu de tê xebitandin.
  • external.qcow2 - wêneya medyaya derve ya ji bo databasê
  • monitor-0.9-beta.tar.gz - arşîv ji bo nûvekirina bi navgîniya webê

Nifşê Rêbertî

Ne hêja ye ku heman talîmatan çend caran binivîsin. Û ya herî mentiqî ev e ku meriv wê carekê di nîşankirinê de binivîsîne, û dûv re wê ji bo dakêşandinê PDF-ê û ji bo navrûya tevneyê veguherîne html. Ev bi saya pakêta pandocê mimkun e.

Di heman demê de, pêdivî ye ku hemî van pelan bêne çêkirin berî ku wêneya pergalê were berhev kirin; Ji ber vê yekê, nifş di forma pakêtek destan de tê kirin. Hûn dikarin li ser pêve / pakêtê / manualan binêrin.

Pelê manuals.mk (ku hemî karan dike)

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

sîstem

Cîhana Linux bi awayekî çalak ber bi systemd ve diçe, û ez neçar bûm ku wiya jî bikim.
Yek ji nûbûnên xweş hebûna demjimêran e. Bi gelemperî, gotarek cûda li ser wan (û ne tenê li ser wan) tê nivîsandin, lê ez ê bi kurtasî ji we re vebêjim.

Çalakî hene ku divê dem bi dem bêne kirin. Min hewce kir ku logrotate bimeşîne da ku têketinên lighttpd û php-fpm paqij bikim. Tiştê asayî dê nivîsandina fermanan di cron de be, lê min biryar da ku demjimêra monotonîk a pergalê bikar bînim. Ji ber vê yekê logrotate di navberek demkî ya hişk de dimeşe.

Bê guman, gengaz e ku meriv demjimêran biafirîne ku di hin tarîxan de dişewite, lê hewcedariya min bi vê yekê tune.
Mînak demjimêrk:

  • Pelê Timer
    
    [Unit]
    Description=RODOS temp daemon timer

[Timer] OnBootSec=1min
OnUnitActiveSec=1min

[Saz bike] WantedBy=timers.target

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

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

Tabloyên piştgirî kirin

Asus tinker panel panela sereke ye ku divê her tişt li ser bixebite. Wekî erzan û pir bi hêz hate hilbijartin.

Beaglebone reş yekem panel e ku operasyon li ser hat ceribandin (di dema hilbijartina panelek bihêztir de).

Qemu x86_64 - ji bo pêşkeftina debuggkirinê tê bikar anîn.

Çawa kar dike

Di destpêkê de, vejandina mîhengan du-qonaxa pêk tê:

  • xebitandina skrîpta settings_restore (bi navgîniya karûbarê). Ew mîhengên pergalê yên bingehîn vedigere - qada demjimêr, herêmî, mîhengên torê, hwd.
  • xebitandina skrîpta amade (bi navgîniya karûbarê) - li vir zabbix û databas têne amade kirin, IP ji konsolê re tê derxistin.

Dema ku hûn yekem dest pê dikin, mezinahiya dabeşa duyemîn a qerta SD-ê tê destnîşankirin. Ger hîn cîhê ne veqetandî hebe, medya ji nû ve tê dabeş kirin, û beşa daneyê hemî cîhê belaş digire. Ev ji bo kêmkirina mezinahiya wêneya sazkirinê (sdcard.img) tê kirin. Wekî din, pelrêça xebatê ya postgresql di vê nuqteyê de tê afirandin. Ji ber vê yekê destpêkirina yekem bi hilgirê nû dê ji yên paşîn dirêjtir bigire.

Dema ku ajokerek derveyî ve girêdide, di dema destpêkirinê de ew li ajokerek belaş digere û bi etîketa derveyî wê di ext4 de format dike.

Baldarî! Dema ku ajokerek derveyî ve girêdide (herweha jêbirin an li şûna wê), hûn hewce ne ku paşvekêşek çêbikin û mîhengan sererast bikin!

Amûra RODOS 5 ji bo çavdêriya germahiyê tê bikar anîn. Dema ku pergal tê vemirandin, demjimêra rodos dest pê dike, ku vê amûreyê her deqeyekê carekê dimeşîne. Germahiya heyî li pelê /tmp/rodos_current_temp tê nivîsandin, piştî ku zabbix dikare vê pelê wekî senzorek bişopîne.

Medya hilanînê ya veavakirinê di pelrêça /datayê de tê siwarkirin.

Dema ku pergalê dest pê dike û wê ji bo xebatê amade dike, peyama jêrîn di konsolê de xuya dike:

System starting, please wait

Piştî ku xebata amadekariyê qediya, ew ê navnîşana IP-ê nîşan bide:

current ip 192.168.1.32
Ready to work

Sazkirina zabbix ji bo çavdêriya germahiyê

Ji bo çavdêriya germahiyê, tenê 2 gavan bavêjin:

  • cîhaza RODOS-ê bi porta USB-ê ve girêdin
  • di zabbix de hêmanek daneyê biafirîne

Têkiliya webê ya zabbix vekin:

  • Beşa Veavakirin → Mêvandar vekin
  • Li ser Tiştên di rêza servera meya zabbix de bikirtînin
  • Li ser Create babete bikirtînin

Buildroot: Afirandina firmware-platformê bi zabbix-server

Daneyên jêrîn binivîse:

  • nav - bi daxwaza we (mînak, serverRoomTemp)
  • Type - agent zabbix
  • Key - Rodos
  • Tîp-hejmar
  • Yekîneyên - C
  • Serdema hilanîna dîrokê - heyama hilanîna dîrokê. 10 roj hiştin
  • Serdema hilanînê ya trend-serdema hilanînê ji bo dînamîkên guhertinan. 30 roj ma
  • Serlêdana nû - server Temp Room

Û pêl bişkoka ADD bike.
Buildroot: Afirandina firmware-platformê bi zabbix-server

Mîhengan bi navgîniya webê birêve bibin

Navbera malperê bi PHP-ê tê nivîsandin. Fonksiyonên sereke hene:

  • rewşa cîhazê bibînin
  • guhertina mîhengên torê
    Buildroot: Afirandina firmware-platformê bi zabbix-server
  • guhertina şîfreya bikarhêner
  • hilbijartina herêma dem
  • hilanînê / restore / vesazkirina fabrîkayê
  • şiyana girêdana ajokerek derveyî
  • Nûvekirina pergalê
    Buildroot: Afirandina firmware-platformê bi zabbix-server

Têkeve nav navbera webê bi şîfre tê parastin. Rûpelê destpêkê - manual.

Navnîşana navbeynkariya Zabbix: ${ip/dns}/zabbix
Navnîşana navbeynkariya rêveberiyê: ${ip/dns}/manage
Buildroot: Afirandina firmware-platformê bi zabbix-server

Di qemu de diherike

qemu-system-x86_64 -smp 4 -m 4026M -çalak-kvm -makîne q35,accel=kvm -cîhaza intel-iommu -cpu host -net nic -net bridge,br=bridge0 -cîhaza virtio-scsi-pci,id= scsi0 -pelê ajotinê=derketin/images/qemu.qcow2,format=qcow2,aio=mijar -cîhaza virtio-scsi-pci,id=scsi0 -pelê ajotinê=derketin/images/external.qcow2,format=qcow2,aio=mijar

Ev ferman dê pergalek bi 4 core, 2048 RAM, KVM çalak, qerta torê ya li ser bridge0 û du dîskên dest pê bike: yek ji bo pergalê û yek ji derveyî ji bo postgresql.

Wêne dikarin di Virtualbox-ê de werin guheztin û xebitandin:

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

Dûv re wan di virtualboxê de derxînin û bi sata ve girêdin.

encamê

Di vê pêvajoyê de, ez eleqedar bûm ku hilberek amade-bikaranînê çêbikim - bi navgînek ne pir xweşik (ez ji nivîsandina wan hez nakim), lê ya ku dixebite û mîhengkirina wê hêsan e.

Hewldana paşîn a sazkirina zabbix-appliance di KVM de destnîşan kir ku ev gav rast bû (piştî sazkirinê qediya, pergal dest pê nake). Dibe ku ez tiştekî xelet dikim 😉

Materyal

https://buildroot.org/

Source: www.habr.com

Add a comment