Buildroot: Zabbix-server ашиглан платформ хоорондын програм хангамж үүсгэх

Buildroot: Zabbix-server ашиглан платформ хоорондын програм хангамж үүсгэх

Асуудлын түүх

Жижиг компаниуд нэг талаас дэд бүтцээ өндөр чанартай хянах шаардлагатай (ялангуяа виртуалчлал өргөн тархсантай холбоотойгоор), нөгөө талаас шинэ тоног төхөөрөмж худалдан авахад санхүүгийн хувьд хүндрэлтэй байдаг. Сервер/техник хангамжийн асуудал бас нийтлэг байдаг: ихэвчлэн хэрэглэгчийн ажлын станцын хажууд эсвэл жижиг үүр/шүүгээнд 1-3 цамхаг сервер байдаг.

Бэлэн угсралтыг (түгээлтийн) ашиглах нь илүү хялбар бөгөөд та үүнийг microSD картанд байршуулж, энгийн нэг самбарт компьютерт (beaglebone, бөөрөлзгөнө пи, улбар шар пи гэр бүл, asus tinker board) оруулахад л болно. Үүнээс гадна ийм тоног төхөөрөмж нь хямд бөгөөд хаана ч суулгаж болно.

Асуудлын тодорхойлолт

Төслийг олон талаараа үр дүнг ашиглах боломжтой лабораторийн ажил болгон боловсруулсан.

Заббикс нь хүчирхэг, үнэ төлбөргүй, сайн баримтжуулсан систем учраас хяналтын системээр сонгосон.

Техник хангамжийн платформтой холбоотой асуудал хурцаар тавигдаж байна. Тусдаа машиныг хяналтанд оруулах нь тийм ч сайн шийдэл биш - шинэ тоног төхөөрөмж худалдаж авах эсвэл хуучин тоног төхөөрөмж хайх нь үнэтэй + жижиг компаниудад сервертэй холбоотой асуудал байнга гардаг/ техник хангамж.

Buildroot build системийг ашиглах нь Линукс үйлдлийн системийн хамгийн бага мэдлэгтэй боловсон хүчин ашиглаж болох тусгай шийдлүүдийг бий болгох боломжийг олгодог. Энэхүү систем нь эхлэгчдэд ээлтэй боловч туршлагатай хөгжүүлэгчийн гарт тохируулах өргөн боломжийг олгодог. Энэ нь мэдээллийн технологийн дэд бүтцийг хямд, гэхдээ бүрэн ажиллагаатай хянах асуудлыг шийдвэрлэхэд төгс төгөлдөр бөгөөд үүнийг ажиллуулж буй боловсон хүчнийг сургахад хамгийн бага шаардлага тавьдаг.

Шийдлийн алхамууд

Энэ нь дибаг хийхэд тохиромжтой бөгөөд хурдан шийдэл учраас x86_64-д зориулж qemu-д ажиллах программ хангамж үүсгэхээр шийдсэн. Дараа нь үүнийг нэг гарт компьютерт холбоно уу (Надад asus Tinker board таалагдсан).

buildroot-ийг бүтээх системээр сонгосон. Эхэндээ zabbix багц байхгүй байсан тул зөөвөрлөх шаардлагатай болсон.Орос хэл дээр асуудал гарч, тохирох нөхөөсийг хэрэглэснээр шийдэгдсэн (тэмдэглэл: buildroot-ийн шинэ хувилбаруудад эдгээр засварууд шаардлагагүй болсон).

Zabbix багцыг өөрөө шилжүүлэх талаар тусдаа өгүүллээр тайлбарлах болно.

Бүх зүйл програм хангамж хэлбэрээр ажиллах ёстой (солих боломжгүй системийн дүрс + сэргээх боломжтой тохиргоо/өгөгдлийн сангийн файлууд) тул өөрийн системийн зорилтууд, үйлчилгээнүүд болон таймеруудыг (зорилтот, үйлчилгээ, таймер) бичих шаардлагатай болсон.

Хэвлэл мэдээллийн хэрэгслийг 2 хэсэгт хуваахаар шийдсэн - системийн файлуудтай хэсэг, өөрчлөгддөг тохиргоо, zabbix мэдээллийн баазын файл бүхий хэсэг.

Мэдээллийн сантай холбоотой асуудлыг шийдэх нь арай илүү хэцүү болсон. Би үүнийг хэвлэл мэдээллийн хэрэгслээр шууд байрлуулахыг хүсээгүй. Үүний зэрэгцээ өгөгдлийн сангийн хэмжээ нь боломжит ramdisk-ийн хэмжээнээс давсан хэмжээнд хүрч болно. Тиймээс буулт хийх шийдлийг сонгосон: мэдээллийн сан нь SD картны хоёр дахь хэсэгт байрладаг (орчин үеийн SLC картууд нь 30 хүртэл бичих мөчлөгтэй байдаг), гэхдээ гадаад зөөвөрлөгчийг ашиглах боломжийг олгодог тохиргоо байдаг (жишээлбэл, USB- hdd).

Температурын хяналтыг RODOS-5 төхөөрөмжөөр дамжуулан хэрэгжүүлсэн. Мэдээжийн хэрэг, та Dallas 1820-г шууд ашиглаж болно, гэхдээ энэ нь USB холбоход илүү хурдан бөгөөд хялбар байсан.

grub86-г x64_2-ийн ачаалагчаар сонгосон. Үүнийг эхлүүлэхийн тулд хамгийн бага тохиргоог бичих шаардлагатай байсан.

Qemu дээр дибаг хийсний дараа үүнийг asus tinker самбар руу шилжүүлсэн. Миний давхарласан бүтэц нь эхлээд платформыг хооронд нь холбох зорилготой байсан - самбар тус бүрт тусгай тохиргоог хуваарилах (самбарын defconfig, ачаалагч, системийн хуваалттай зураг үүсгэх), файлын системийг тохируулах / өгөгдөлтэй зураг үүсгэх хамгийн дээд жигд байдал. Ийм бэлтгэлийн ачаар зөөвөрлөх ажил хурдан явагдсан.

Танилцуулга нийтлэлүүдийг уншихыг зөвлөж байна:
https://habr.com/ru/post/448638/
https://habr.com/ru/post/449348/

Хэрхэн угсрах вэ

Төсөл github дээр хадгалагддаг
Репозиторийг клончилсны дараа дараах файлын бүтцийг олж авна.

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

buildroot-2019.05.tar.gz - buildroot архивыг цэвэрлэ
overlay бол миний гадаад модтой лавлах юм. Buildroot ашиглан програм хангамжийг бүтээхэд шаардлагатай бүх зүйл энд хадгалагддаг.
README.md - төслийн тайлбар, англи хэл дээрх гарын авлага.
run_me.sh нь бүтээх системийг бэлтгэх скрипт юм. Архиваас Buildroot-г өргөжүүлж, түүнд давхаргыг хавсаргаж (гадаад модны механизмаар) ба угсралтын зорилтот самбарыг сонгох боломжийг танд олгоно.

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

Үүний дараа buildroot-2019.05 лавлах руу ороод make командыг ажиллуулна уу.
Бүтээж дууссаны дараа бүх бүтээх үр дүн гаралт/зургийн санд байх болно:

[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

Шаардлагатай файлууд:

  • sdcard.img - SD карт дээр бичлэг хийх медиа дүрс (wibdows дор dd эсвэл rufus-аар).
  • qemu.qcow2 - qemu-д ажиллуулах медиа дүрс.
  • external.qcow2 - мэдээллийн сангийн гадаад медиа дүрс
  • monitor-0.9-beta.tar.gz - вэб интерфэйсээр дамжуулан шинэчлэх архив

Хөтөч үүсгэх

Нэг зааврыг хэд хэдэн удаа бичих нь үнэ цэнэтэй зүйл биш юм. Хамгийн логик нь үүнийг markdown дээр нэг удаа бичиж, дараа нь татаж авах PDF болон вэб интерфэйсийг html болгон хөрвүүлэх явдал юм. Энэ нь pandoc багцын ачаар боломжтой юм.

Үүний зэрэгцээ, эдгээр бүх файлыг системийн дүрсийг угсрахаас өмнө үүсгэх шаардлагатай бөгөөд уг бүтээсний дараах скриптүүд аль хэдийн ашиггүй болсон. Тиймээс генераци нь гарын авлагын багц хэлбэрээр хийгддэг. Та давхардсан/багц/гарын авлагаас харж болно.

manuals.mk файл (бүх ажлыг гүйцэтгэдэг)

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

системд

Линуксийн ертөнц системд идэвхтэй шилжиж байгаа бөгөөд би ч гэсэн үүнийг хийх хэрэгтэй болсон.
Тааламжтай шинэлэг зүйлүүдийн нэг бол таймер байгаа явдал юм. Ерөнхийдөө тэдний тухай тусдаа нийтлэл бичиж байгаа (зөвхөн тэдний тухай биш), гэхдээ би танд товчхон хэлье.

Үе үе хийх ёстой үйлдлүүд байдаг. Би lighttpd болон php-fpm логуудыг цэвэрлэхийн тулд logrotate ажиллуулах шаардлагатай болсон. Ердийн зүйл бол командуудыг cron дээр бичих байсан ч би системийн монотон таймер ашиглахаар шийдсэн. Тиймээс logrotate нь тодорхой хугацааны интервалаар ажилладаг.

Мэдээжийн хэрэг, тодорхой огноогоор ажилладаг таймеруудыг үүсгэж болно, гэхдээ надад энэ хэрэггүй байсан.
Таймер жишээ:

  • Таймер файл
    
    [Unit]
    Description=RODOS temp daemon timer

[Таймер] OnBootSec=1мин
OnUnitActiveSec=1мин

[Суулгах] WantedBy=timers.target

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

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

Дэмжигдсэн самбарууд

Asus Tinker board бол бүх зүйл ажиллах ёстой үндсэн самбар юм. Хямдхан, маш хүчирхэг гэж сонгосон.

Beaglebone black бол ажиллагааг туршсан анхны самбар юм (илүү хүчирхэг самбар сонгох үед).

Qemu x86_64 - дибаг боловсруулахад ашигладаг.

Энэ нь хэрхэн ажилладаг вэ?

Эхлэх үед тохиргоог хоёр үе шаттайгаар сэргээнэ.

  • settings_restore скриптийг ажиллуулж (үйлчилгээгээр дамжуулан). Энэ нь системийн үндсэн тохиргоог сэргээдэг - цагийн бүс, локал, сүлжээний тохиргоо гэх мэт.
  • бэлтгэх скриптийг ажиллуулж байна (үйлчилгээгээр дамжуулан) - энд zabbix болон мэдээллийн сан бэлтгэгдэж, IP нь консол руу гарна.

Та үүнийг анх эхлүүлэхэд SD картны хоёр дахь хэсгийн хэмжээ тодорхойлогддог. Хэрэв хуваарилагдаагүй зай байгаа бол зөөвөрлөгчийг дахин хуваах бөгөөд өгөгдлийн хэсэг нь бүх сул зайг эзэлнэ. Энэ нь суулгацын зургийн хэмжээг багасгахын тулд хийгддэг (sdcard.img). Нэмж дурдахад postgresql ажлын лавлах энэ үед үүсдэг. Тийм ч учраас шинэ тээвэрлэгчтэй анхны хөөргөлт нь дараагийнхаас илүү урт байх болно.

Гадаад дискийг холбохдоо ачаалах үед үнэгүй диск хайж, гадаад шошготой ext4 болгон форматлана.

Анхаар! Гадаад дискийг холбохдоо (түүнчлэн салгах эсвэл солих) та нөөцлөлт хийж, тохиргоог сэргээх хэрэгтэй!

RODOS 5 төхөөрөмжийг температурын хяналтанд ашигладаг. Үйлдвэрлэгч нь төхөөрөмжтэй ажиллах програмынхаа эх кодыг өгдөг. Системийг асаахад энэ хэрэгслийг минут тутамд нэг удаа ажиллуулдаг rodos таймер эхэлдэг. Одоогийн температурыг /tmp/rodos_current_temp файлд бичсэн бөгөөд үүний дараа zabbix энэ файлыг мэдрэгч болгон хянах боломжтой.

Тохиргооны хадгалах хэрэгслийг /өгөгдлийн санд суурилуулсан.

Системийг эхлүүлж, ажиллуулахад бэлтгэх үед консол дээр дараах мессеж гарч ирнэ.

System starting, please wait

Бэлтгэл ажил дууссаны дараа энэ нь IP хаягийг харуулах болж өөрчлөгдөнө.

current ip 192.168.1.32
Ready to work

Температурыг хянах zabbix-ийг тохируулж байна

Температурыг хянахын тулд 2 алхам хийхэд хангалттай.

  • RODOS төхөөрөмжийг USB порт руу холбоно уу
  • zabbix дээр өгөгдлийн зүйл үүсгэх

zabbix вэб интерфэйсийг нээнэ үү:

  • Тохиргоо → Хостуудыг нээнэ үү
  • Манай zabbix серверийн мөрөнд байгаа зүйлс дээр дарна уу
  • Зүйл үүсгэх дээр дарна уу

Buildroot: Zabbix-server ашиглан платформ хоорондын програм хангамж үүсгэх

Дараах өгөгдлийг оруулна уу:

  • нэр - таны үзэмжээр (жишээлбэл, serverRoomTemp)
  • Төрөл - zabbix агент
  • Түлхүүр - Родос
  • Төрөл-тоон
  • Нэгж - C
  • Түүх хадгалах хугацаа — түүхийг хадгалах хугацаа. 10 хоног үлдлээ
  • Тренд хадгалах хугацаа - өөрчлөлтийн динамикийг хадгалах хугацаа. 30 хоног үлдлээ
  • Шинэ програм - серверийн өрөөний температур

Тэгээд ADD товчийг дарна уу.
Buildroot: Zabbix-server ашиглан платформ хоорондын програм хангамж үүсгэх

Вэб интерфэйсээр тохиргоог удирдах

Вэб интерфэйс нь PHP хэл дээр бичигдсэн. Үндсэн функцүүд байдаг:

  • төхөөрөмжийн статусыг харах
  • сүлжээний тохиргоог өөрчлөх
    Buildroot: Zabbix-server ашиглан платформ хоорондын програм хангамж үүсгэх
  • хэрэглэгчийн нууц үгийг өөрчлөх
  • цагийн бүсийн сонголт
  • нөөцлөх/сэргээх/үйлдвэрийн тохиргоонд оруулах
  • гадаад хөтөчийг холбох чадвар
  • Системийн шинэчлэлт
    Buildroot: Zabbix-server ашиглан платформ хоорондын програм хангамж үүсгэх

Вэб интерфэйс рүү нэвтрэх нь нууц үгээр хамгаалагдсан. Эхлэх хуудас - гарын авлага.

Zabbix интерфейсийн хаяг: ${ip/dns}/zabbix
Удирдлагын интерфейсийн хаяг: ${ip/dns}/manage
Buildroot: Zabbix-server ашиглан платформ хоорондын програм хангамж үүсгэх

Кему хотод гүйж байна

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

Энэ тушаал нь 4 цөм, 2048 RAM, KVM идэвхжсэн, bridge0 дээрх сүлжээний карт болон хоёр диск бүхий системийг эхлүүлэх болно: нэг нь системд, нөгөө нь postgresql-д зориулагдсан гадаад.

Зургийг Virtualbox-д хөрвүүлж, ажиллуулж болно:

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

Дараа нь тэдгээрийг virtualbox руу оруулж, sata-аар холбогдоно уу.

дүгнэлт

Энэ явцад би ашиглахад бэлэн бүтээгдэхүүн хийх сонирхолтой болсон - тийм ч үзэсгэлэнтэй биш интерфэйстэй (би тэдгээрийг бичих дургүй), гэхдээ ажиллахад хялбар, тохируулахад хялбар.

KVM-д zabbix-appliance суулгах сүүлчийн оролдлого нь энэ алхам зөв байсныг харуулсан (суулгаж дууссаны дараа систем эхлэхгүй). Магадгүй би ямар нэг буруу зүйл хийж байгаа байх

Материал

https://buildroot.org/

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх