Buildroot: Nggawe perangkat kukuh lintas-platform karo zabbix-server

Buildroot: Nggawe perangkat kukuh lintas-platform karo zabbix-server

Riwayat masalah

Perusahaan ukuran cilik, ing tangan siji, mbutuhake pemantauan kualitas infrastruktur (utamane amarga virtualisasi sing nyebar), ing sisih liya, angel banget kanggo tuku peralatan anyar. Masalah server / hardware uga umum: asring ana 1-3 server menara ing jejere workstation pangguna utawa ing ceruk / lemari cilik.

Iku luwih gampang kanggo nggunakake Déwan siap-digawe (distribusi), sing mung kudu ngunggah menyang kertu microSD lan masang menyang komputer siji-papan umum (beaglebone, raspberry pi lan orange pi kulawargané, asus papan tinker). Kajaba iku, peralatan kasebut murah lan bisa dipasang ing ngendi wae.

Formulasi masalah

Kanthi pirang-pirang cara, proyek kasebut dikembangake minangka jinis karya laboratorium kanthi kemungkinan ngetrapake asil.

Zabbix dipilih minangka sistem pemantauan amarga minangka sistem sing kuat, gratis lan didokumentasikake kanthi apik.

Masalah karo platform hardware dadi akut. Nempatake mesin sing kapisah ing pengawasan uga dudu solusi sing apik - larang kanggo tuku peralatan anyar, utawa golek peralatan lawas + ing perusahaan cilik asring ana masalah karo server / hardware.

Nggunakake sistem mbangun buildroot ngidini sampeyan nggawe solusi khusus sing bisa dioperasikake dening personel kanthi kawruh minimal babagan sistem operasi Linux. Sistem iki ramah kanggo pamula, nanging ing wektu sing padha nyedhiyakake kesempatan kustomisasi sing akeh ing tangan pangembang sing berpengalaman. Iku sampurna kanggo ngatasi masalah inexpensive, nanging ngawasi fungsi kebak infrastruktur IT, karo syarat minimal kanggo latihan saka personel operasi iku.

Langkah-langkah solusi

Diputusake wiwitan nggawe perangkat kukuh kanggo x86_64 kanggo mbukak ing qemu, amarga iki minangka solusi sing trep lan cepet kanggo debugging. Banjur port menyang komputer papan siji lengen (Aku seneng papan tinker asus).

buildroot dipilih minangka sistem mbangun. Kaping pisanan, ora ana paket zabbix, mula kudu ditransfer. Ana masalah karo lokal Rusia, sing ditanggulangi kanthi nggunakake patch sing cocog (cathetan: ing versi buildroot sing luwih anyar, patch kasebut ora dibutuhake maneh).

Porting paket zabbix dhewe bakal diterangake ing artikel kapisah.

Amarga kabeh kudu bisa digunakake minangka perangkat kukuh (gambar sistem sing ora bisa diowahi + file konfigurasi / database sing bisa dipulihake), mula kudu nulis target sistem, layanan lan timer (target, layanan, wektu) sampeyan dhewe.

Diputusake kanggo pamisah media dadi 2 bagean - bagean kanthi file sistem lan bagean kanthi konfigurasi sing bisa diganti lan file database zabbix.

Ngatasi masalah sing ana gandhengane karo database dadi rada angel. Aku ora pengin nyelehake langsung ing media. Ing wektu sing padha, ukuran database bisa tekan ukuran sing ngluwihi ukuran ramdisk bisa. Mulane, solusi kompromi dipilih: database dumunung ing bagean kapindho kertu SD (kertu SLC modern duwe nganti 30 siklus nulis), nanging ana setelan sing ngidini nggunakake media external (contone, usb- hdd).

Pemantauan suhu ditindakake liwat piranti RODOS-5. Mesthi, sampeyan bisa nggunakake Dallas 1820 langsung, nanging luwih cepet lan luwih gampang plug ing USB.

grub86 dipilih minangka bootloader kanggo x64_2. Sampeyan kudu nulis konfigurasi minimal kanggo miwiti.

Sawise debugging ing qemu, ditransfer menyang papan tinker asus. Struktur overlay saya wiwitane dimaksudake kanggo cross-platform - nyedhiyakake konfigurasi khusus kanggo saben papan (defconfig board, bootloader, ngasilake gambar kanthi partisi sistem) lan keseragaman maksimal kanggo ngatur sistem file / nggawe gambar kanthi data. Amarga persiapan kasebut, porting cepet.

Disaranake maca artikel pambuka:
https://habr.com/ru/post/448638/
https://habr.com/ru/post/449348/

Carane ngrakit

Proyek kasebut disimpen ing github
Sawise kloning repositori, struktur file ing ngisor iki dijupuk:

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

buildroot-2019.05.tar.gz - arsip buildroot sing resik
overlay minangka direktori karo external-tree. Iki ngendi kabeh sing perlu kanggo mbangun perangkat kukuh nggunakake buildroot disimpen ing.
README.md - deskripsi proyek lan manual ing basa Inggris.
run_me.sh minangka skrip sing nyiapake sistem mbangun. Ngembangake buildroot saka arsip, nempelake overlay kasebut (liwat mekanisme eksternal-wit) lan ngidini sampeyan milih papan target kanggo perakitan

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

Sawise iki, pindhah menyang direktori buildroot-2019.05 lan jalanake perintah make.
Sawise mbangun rampung, kabeh asil mbangun bakal ana ing direktori output/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 sing dibutuhake:

  • sdcard.img - gambar media kanggo ngrekam ing kertu SD (liwat dd utawa rufus ing wibdows).
  • qemu.qcow2 - gambar media kanggo mbukak ing qemu.
  • external.qcow2 - gambar media external kanggo database
  • monitor-0.9-beta.tar.gz - arsip kanggo nganyari liwat antarmuka web

Generasi Panuntun

Ora worth nulis instruksi sing padha kaping pirang-pirang. Lan sing paling logis yaiku nulis sapisan ing markdown, banjur diowahi dadi PDF kanggo didownload lan html kanggo antarmuka web. Iki bisa ditindakake amarga paket pandoc.

Ing wektu sing padha, kabeh file kasebut kudu digawe sadurunge gambar sistem dirakit; skrip pasca-bangunan kasebut wis ora ana gunane. Mula, generasi kasebut ditindakake kanthi bentuk paket manual. Sampeyan bisa ndeleng overlay / paket / manual.

File manuals.mk (sing nindakake kabeh karya)

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

sistem

Donya Linux aktif pindhah menyang systemd, lan aku uga kudu nindakake.
Salah sawijining inovasi sing nyenengake yaiku anané timer. Umumé, artikel sing kapisah ditulis babagan wong-wong mau (lan ora mung babagan wong-wong mau), nanging aku bakal ngandhani kanthi ringkes.

Ana tumindak sing kudu ditindakake kanthi periodik. Aku kudu mbukak logrotate kanggo mbusak log lighttpd lan php-fpm. Sing biasa yaiku nulis printah ing cron, nanging aku mutusake nggunakake timer monotonic systemd. Dadi logrotate mlaku kanthi interval wektu sing ketat.

Mesthi, sampeyan bisa nggawe timer sing murub ing tanggal tartamtu, nanging aku ora butuh iki.
Tuladha Timer:

  • File wektu
    
    [Unit]
    Description=RODOS temp daemon timer

[Timer] OnBootSec=1min
OnUnitActiveSec=1min

[Instal] WantedBy=timers.target

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

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

Papan sing didhukung

Papan tinker Asus minangka papan utama sing kabeh kudu bisa digunakake. Dipilih minangka inexpensive lan banget kuat.

Beaglebone ireng minangka papan pisanan sing dites operasi (sajrone pilihan papan sing luwih kuat).

Qemu x86_64 - digunakake kanggo pembangunan debugging.

Cara kerjane

Ing wiwitan, pemulihan setelan rong tahap ditindakake:

  • mlaku skrip settings_restore (liwat layanan). Iki mulihake setelan sistem dhasar - zona wektu, lokal, setelan jaringan, lsp.
  • mlaku script nyiapake (liwat layanan) - kene zabbix lan database disiapake, IP output kanggo console.

Nalika sampeyan miwiti pisanan, ukuran partisi kapindho kertu SD ditemtokake. Yen isih ana spasi unallocated, media repartitioned, lan bagean data njupuk kabeh papan kosong. Iki rampung kanggo nyuda ukuran gambar instalasi (sdcard.img). Kajaba iku, direktori kerja postgresql digawe ing titik iki. Mulane peluncuran pisanan karo operator anyar bakal luwih suwe tinimbang sing sabanjure.

Nalika nyambungake drive eksternal, ing wayahe wiwitan, nggoleki drive gratis lan format menyang ext4 kanthi label eksternal.

manungsa waé! Nalika nyambungake drive eksternal (uga medhot utawa ngganti), sampeyan kudu nggawe serep lan mulihake setelan!

Piranti RODOS 5 digunakake kanggo ngawasi suhu. Produsen nyedhiyakake kode sumber utilitas kanggo nggarap piranti kasebut. Nalika sampeyan ngaktifake sistem, wiwit rodos timer, kang nganggo sarana iki sapisan menit. Suhu saiki ditulis ing file /tmp/rodos_current_temp, sawise zabbix bisa ngawasi file iki minangka sensor.

Media panyimpenan konfigurasi dipasang ing direktori /data.

Nalika miwiti sistem lan nyiapake kanggo operasi, pesen ing ngisor iki katon ing console:

System starting, please wait

Sawise ngrampungake karya nyiapake, bakal ganti kanggo nampilake alamat IP:

current ip 192.168.1.32
Ready to work

Nyetel zabbix kanggo ngawasi suhu

Kanggo ngawasi suhu, mung njupuk 2 langkah:

  • nyambungake piranti RODOS menyang port USB
  • nggawe item data ing zabbix

Bukak antarmuka web zabbix:

  • Bukak bagean Konfigurasi → Hosts
  • Klik ing Item ing baris saka server zabbix kita
  • Klik ing Nggawe item

Buildroot: Nggawe perangkat kukuh lintas-platform karo zabbix-server

Ketik data ing ngisor iki:

  • jeneng - miturut kawicaksanan sampeyan (contone, serverRoomTemp )
  • Tipe - agen zabbix
  • Kunci - Rodos
  • Tipe-numerik
  • Unit - C
  • Periode panyimpenan riwayat - periode panyimpenan riwayat. ninggalake 10 dina
  • Periode panyimpenan tren - periode panyimpenan kanggo dinamika owah-owahan. Ninggalake 30 dina
  • Aplikasi anyar - server Room Temp

Lan pencet tombol ADD.
Buildroot: Nggawe perangkat kukuh lintas-platform karo zabbix-server

Ngatur setelan liwat antarmuka web

Antarmuka web ditulis nganggo PHP. Ana fungsi utama:

  • ndeleng status piranti
  • ngganti setelan jaringan
    Buildroot: Nggawe perangkat kukuh lintas-platform karo zabbix-server
  • ngganti tembung sandhi pangguna
  • pilihan zona wektu
  • serep / mulihake / reset pabrik
  • kemampuan kanggo nyambungake drive external
  • Nganyari sistem
    Buildroot: Nggawe perangkat kukuh lintas-platform karo zabbix-server

Mlebu menyang antarmuka web dilindhungi sandi. Kaca wiwitan - manual.

Alamat antarmuka Zabbix: ${ip/dns}/zabbix
Alamat antarmuka manajemen: ${ip/dns}/manage
Buildroot: Nggawe perangkat kukuh lintas-platform karo zabbix-server

Mlaku ing 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 -file drive=output/images/qemu.qcow2,format=qcow2,aio=threads -device virtio-scsi-pci,id=scsi0 -drive file=output/images/external.qcow2,format=qcow2,aio=threads

Printah iki bakal miwiti sistem karo 4 intine, 2048 RAM, KVM aktif, kertu jaringan ing bridge0 lan rong disk: siji kanggo sistem lan siji njaba kanggo postgresql.

Gambar bisa diowahi lan mbukak ing Virtualbox:

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

Banjur ngimpor menyang virtualbox lan nyambung liwat sata.

kesimpulan

Ing proses kasebut, aku dadi kasengsem nggawe produk sing siap digunakake - kanthi antarmuka sing ora apik banget (aku ora seneng nulis), nanging sing bisa digunakake lan gampang diatur.

Ing nyoba pungkasan kanggo nginstal zabbix-perkakas ing KVM nuduhake yen langkah iki bener (sawise instalasi rampung, sistem ora miwiti). Mbok menawa aku salah 😉

Bahan

https://buildroot.org/

Source: www.habr.com

Add a comment