Buildroot: Nyieun firmware cross-platform kalawan zabbix-server

Buildroot: Nyieun firmware cross-platform kalawan zabbix-server

Riwayat masalah

Pausahaan leutik, di hiji sisi, peryogi ngawaskeun kualitas luhur infrastruktur maranéhanana (utamana dina lampu virtualization nyebar), di sisi séjén, éta hésé finansial pikeun aranjeunna mésér parabot anyar. Masalah server / hardware oge umum: mindeng aya 1-3 munara server gigireun workstations pamaké atawa dina niva leutik / pacilingan.

Ieu gampang ngagunakeun assembly siap-dijieun (distribusi), nu ngan perlu unggah ka kartu microSD terus selapkeun kana komputer single-board umum (beaglebone, buah prambus pi jeung kulawarga pi jeruk, asus dewan tinker). Salaku tambahan, alat sapertos kitu murah sareng tiasa dipasang dimana waé.

Ngarumuskeun masalah

Ku sababaraha cara, proyék éta dikembangkeun salaku jinis karya laboratorium kalayan kamungkinan nerapkeun hasilna.

Zabbix dipilih salaku sistem ngawaskeun kusabab éta sistem anu kuat, gratis sareng didokumentasikeun.

Masalah sareng platform hardware parantos janten akut. Nempatkeun mesin anu misah dina ngawaskeun ogé sanés solusi anu saé - boh mahal mésér alat énggal, atanapi milarian alat-alat lami + di perusahaan-perusahaan alit sering aya masalah sareng server / hardware.

Ngagunakeun sistem buildroot ngawangun ngidinan Anjeun pikeun nyieun solusi husus nu bisa dioperasikeun ku tanaga jeung pangaweruh minimal tina sistem operasi Linux Ubuntu. Sistim ieu ramah ka beginners, tapi dina waktos anu sareng nyadiakeun kasempetan kustomisasi ample di leungeun hiji pamekar ngalaman. Éta sampurna pikeun ngarengsekeun masalah anu murah, tapi ngawaskeun pinuh fungsi infrastruktur IT, kalayan syarat minimal pikeun pelatihan para personel anu ngajalankeunana.

Léngkah-léngkah solusi

Ieu ieu mutuskeun mimitina nyieun firmware pikeun x86_64 ngajalankeun di qemu, saprak ieu téh leyuran merenah tur gancang pikeun debugging. Teras port kana komputer papan tunggal panangan (Kuring resep papan tinker asus).

buildroot dipilih salaku sistem ngawangun. Dina awalna, eta lacks pakét zabbix, jadi kudu porting. Aya masalah jeung lokal Rusia, nu direngsekeun ku nerapkeun patch luyu (catetan: dina versi anyar tina buildroot, patch ieu teu diperlukeun deui).

Porting paket zabbix sorangan bakal dijelaskeun dina artikel misah.

Kusabab sadayana kedah dianggo salaku firmware (gambar sistem anu teu tiasa dirobih + file konfigurasi / database anu tiasa pulih), éta kedah nyerat target sistem anjeun, jasa sareng timer (target, jasa, timer).

Diputuskeun pikeun ngabagi média kana 2 bagian - bagian sareng file sistem sareng bagian kalayan konfigurasi anu tiasa dirobih sareng file database zabbix.

Ngarengsekeun masalah nu patali jeung database tétéla jadi saeutik leuwih hese. Abdi henteu hoyong nempatkeun éta langsung dina média. Dina waktos anu sami, ukuran databés tiasa ngahontal ukuran anu ngaleuwihan ukuran ramdisk anu mungkin. Ku alatan éta, solusi kompromi ieu dipilih: database lokasina dina partisi kadua kartu SD (kartu SLC modern boga nepi ka 30 siklus nulis), tapi aya setelan anu ngamungkinkeun pamakéan média éksternal (Contona, USB-). hdd).

Ngawaskeun suhu dilaksanakeun ngaliwatan alat RODOS-5. Tangtu, anjeun tiasa nganggo Dallas 1820 langsung, tapi éta gancang sarta gampang colokan USB a.

grub86 dipilih salaku bootloader pikeun x64_2. Ieu diperlukeun pikeun nulis config minimal pikeun ngajalankeun eta.

Saatos debugging on qemu, ieu porting ka dewan tinker asus. Struktur overlay kuring mimitina dimaksudkeun pikeun cross-platform - allocating configs husus pikeun tiap dewan (dewan defconfig, bootloader, generating hiji gambar kalawan partisi sistem) sarta uniformity maksimum dina ngaropéa sistem file / nyieun hiji gambar kalawan data. Kusabab persiapan sapertos kitu, porting gancang.

Disarankeun pisan maca tulisan bubuka:
https://habr.com/ru/post/448638/
https://habr.com/ru/post/449348/

Kumaha ngumpul

Proyék disimpen dina github
Saatos kloning gudang, struktur file di handap ieu dicandak:

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

buildroot-2019.05.tar.gz - arsip buildroot bersih
overlay nyaeta diréktori kuring jeung external-tangkal. Ieu dimana sadayana anu anjeun peryogikeun pikeun ngawangun firmware nganggo buildroot disimpen.
README.md - pedaran ngeunaan proyék jeung manual dina basa Inggris.
run_me.sh mangrupikeun naskah anu nyiapkeun sistem ngawangun. Ngalegaan buildroot tina arsip, nempelkeun overlay ka dinya (ngaliwatan mékanisme tangkal éksternal) sareng ngamungkinkeun anjeun milih papan target pikeun assembly

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

Saatos ieu, angkat ka diréktori buildroot-2019.05 sareng jalankeun paréntah make.
Sakali ngawangun parantos réngsé, sadaya hasil ngawangun bakal aya dina diréktori kaluaran/gambar:

[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

File anu diperyogikeun:

  • sdcard.img - gambar média pikeun ngarékam dina kartu SD (via dd atanapi rufus handapeun wibdows).
  • qemu.qcow2 - gambar média pikeun ngajalankeun di qemu.
  • external.qcow2 - gambar média éksternal pikeun database
  • monitor-0.9-beta.tar.gz - arsip pikeun ngamutahirkeun via panganteur web

Generasi Panungtun

Teu patut nulis parentah nu sami sababaraha kali. Sareng anu paling logis nyaéta nyerat sakali dina markdown, teras ngarobih kana PDF pikeun diunduh sareng html pikeun antarmuka wéb. Ieu mungkin berkat pakét pandoc.

Dina waktos anu sami, sadaya file ieu kedah dibangkitkeun sateuacan gambar sistem dirakit; skrip post-build éta parantos aya gunana. Ku alatan éta, generasi dipigawé dina bentuk pakét manual. Anjeun tiasa ningali overlay / bungkusan / manual.

The manuals.mk file (anu ngalakukeun sagala pagawean)

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

Dunya Linux aktip pindah ka systemd, sareng kuring ogé kedah ngalakukeunana.
Salah sahiji inovasi anu pikaresepeun nyaéta ayana timer. Sacara umum, artikel misah keur ditulis ngeunaan aranjeunna (teu ngan ngeunaan aranjeunna), tapi kuring gé ngabejaan Anjeun sakeudeung.

Aya tindakan anu kedah dilakukeun sacara périodik. Kuring kedah ngajalankeun logrotate pikeun ngabersihan log lighttpd sareng php-fpm. Hal anu biasa nyaéta nyerat paréntah dina cron, tapi kuring mutuskeun pikeun nganggo timer monotonic systemd. Jadi logrotate dijalankeun dina interval waktu anu ketat.

Tangtu, kasebut nyaéta dimungkinkeun pikeun nyieun timers nu seuneu dina tanggal nu tangtu, tapi kuring teu butuh ieu.
conto timer:

  • Berkas Timer
    
    [Unit]
    Description=RODOS temp daemon timer

[Timer] OnBootSec=1min
OnUnitActiveSec=1min

[Pasang] WantedBy=timers.target

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

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

papan dirojong

Asus tinker board mangrupikeun papan utama dimana sadayana kedah jalan. Dipilih salaku murah sareng kuat pisan.

Beaglebone hideung teh dewan munggaran nu operasi ieu diuji (salila seleksi dewan leuwih kuat).

Qemu x86_64 - dipaké pikeun ngembangkeun debugging.

Kumaha gawéna

Dina ngamimitian, restorasi dua-tahap setélan lumangsung:

  • ngajalankeun skrip settings_restore (via jasa). Éta mulangkeun setélan sistem dasar - zona waktos, lokal, setélan jaringan, jsb.
  • ngajalankeun Aksara Nyiapkeun (via jasa) - dieu zabbix na database disiapkeun, IP kaluaran pikeun konsol nu.

Nalika anjeun mimiti ngamimitian, ukuran partisi kadua kartu SD ditangtukeun. Lamun masih aya spasi unallocated, média repartitioned, sarta bagian data nyokot sakabeh spasi bébas. Hal ieu dilakukeun dina raraga ngurangan ukuran gambar instalasi (sdcard.img). Salaku tambahan, diréktori kerja postgresql didamel dina waktos ieu. Éta sababna peluncuran anu munggaran sareng pamawa énggal bakal langkung lami tibatan anu salajengna.

Nalika nyambungkeun drive éksternal, dina waktos ngamimitian éta milarian drive gratis sareng pormat kana ext4 kalayan labél éksternal.

Perhatosan! Nalika nyambungkeun drive éksternal (sareng pegatkeun atanapi ngagentosana), anjeun kedah ngadamel cadangan sareng malikkeun setélan!

Alat RODOS 5 dianggo pikeun ngawaskeun suhu. Produsén nyayogikeun kode sumber utilitasna pikeun damel sareng alat. Nalika sistem dihurungkeun, mimiti rodos timer, nu ngajalankeun utiliti ieu sakali menit a. Suhu ayeuna ditulis kana file /tmp/rodos_current_temp, nu satutasna zabbix tiasa ngawas file ieu salaku sensor.

Média panyimpenan konfigurasi dipasang dina diréktori /data.

Nalika ngamimitian sistem sareng nyiapkeun pikeun operasi, pesen di handap ieu muncul dina konsol:

System starting, please wait

Saatos ngabéréskeun pagawéan persiapan, éta bakal robih kana nunjukkeun alamat IP:

current ip 192.168.1.32
Ready to work

Nyetél zabbix pikeun pangimeutan suhu

Pikeun ngawas suhu, ngan ukur 2 léngkah:

  • nyambungkeun alat RODOS ka port USB
  • jieun item data dina zabbix

Buka panganteur wéb zabbix:

  • Buka bagian Konfigurasi → Hosts
  • Klik Item dina garis server zabbix kami
  • Klik Jieun item

Buildroot: Nyieun firmware cross-platform kalawan zabbix-server

Lebetkeun data ieu:

  • nami - dina kawijaksanaan anjeun (contona, serverRoomTemp )
  • Jenis - agén zabbix
  • Konci - Rodos
  • Tipe-numérik
  • Unit - C
  • Periode panyimpen sajarah - jaman panyimpen sajarah. ditinggalkeun 10 poé
  • Periode panyimpen tren - jaman panyimpen pikeun dinamika parobahan. Ninggalkeun 30 dinten
  • Aplikasi anyar - server Room Temp

Sareng pencét tombol ADD.
Buildroot: Nyieun firmware cross-platform kalawan zabbix-server

Atur setélan via panganteur wéb

Antarbeungeut wéb ditulis dina PHP. Aya fungsi utama:

  • nempo status alat
  • ngarobah setelan jaringan
    Buildroot: Nyieun firmware cross-platform kalawan zabbix-server
  • ngarobah sandi pamaké
  • pilihan zone waktos
  • cadangan / balikkeun / reset pabrik
  • kamampuhan pikeun nyambungkeun hiji drive éksternal
  • Pembaruan sistem
    Buildroot: Nyieun firmware cross-platform kalawan zabbix-server

Login ka panganteur wéb ditangtayungan sandi. Mimitian kaca - manual.

Alamat panganteur Zabbix: ${ip/dns}/zabbix
Alamat panganteur manajemén: ${ip/dns}/manage
Buildroot: Nyieun firmware cross-platform kalawan zabbix-server

Ngajalankeun dina 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

Paréntah ieu bakal ngamimitian sistem sareng inti 4, 2048 RAM, KVM diaktipkeun, kartu jaringan dina bridge0 sareng dua disk: hiji pikeun sistem sareng hiji éksternal pikeun postgresql.

Gambar tiasa dirobih sareng dijalankeun dina Virtualbox:

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

Teras impor kana kotak virtual sareng sambungkeun via sata.

kacindekan

Dina prosésna, kuring janten resep ngadamel produk anu siap dianggo - kalayan antarmuka anu henteu saé pisan (Kuring henteu resep nyeratna), tapi anu tiasa dianggo sareng gampang dikonpigurasikeun.

Usaha terakhir pikeun masang alat-alat zabbix di KVM nunjukkeun yén léngkah ieu leres (sanggeus pamasangan réngsé, sistem henteu ngamimitian). Sugan aya nu salah 😉

bahan

https://buildroot.org/

sumber: www.habr.com

Tambahkeun komentar