Buildroot: zabbix-server yordamida o'zaro platformalar mikrodasturini yaratish

Buildroot: zabbix-server yordamida o'zaro platformalar mikrodasturini yaratish

Muammo tarixi

Kichik kompaniyalar, bir tomondan, o'z infratuzilmasini yuqori sifatli monitoringiga muhtoj (ayniqsa, keng tarqalgan virtualizatsiya nuqtai nazaridan), boshqa tomondan, ular uchun yangi uskunalar sotib olish moliyaviy jihatdan qiyin. Server/apparat muammolari ham keng tarqalgan: ko'pincha foydalanuvchi ish stantsiyalari yonida yoki kichik joy/shkafda 1-3 ta minora serverlari mavjud.

Tayyor yig'ilishdan (tarqatishdan) foydalanish osonroq, uni faqat microSD kartaga yuklashingiz va umumiy bitta taxtali kompyuterga (beaglebone, malina pi va apelsin pi oilalari, asus tinker board) kiritishingiz kerak. Bundan tashqari, bunday uskunalar arzon va har qanday joyda o'rnatilishi mumkin.

Muammoni shakllantirish

Loyiha ko'p jihatdan natijalarni qo'llash imkoniyati bilan laboratoriya ishining bir turi sifatida ishlab chiqilgan.

Zabbix monitoring tizimi sifatida tanlangan, chunki u kuchli, bepul va yaxshi hujjatlashtirilgan tizimdir.

Uskuna platformasi bilan bog'liq muammo keskinlashdi.Alohida mashinani monitoringga qo'yish ham unchalik yaxshi yechim emas - yoki yangi uskuna sotib olish qimmatga tushadi yoki eski jihozlarni qidirish + kichik kompaniyalarda server bilan tez-tez muammolar paydo bo'ladi/ apparat.

Buildroot Build tizimidan foydalanish Linux operatsion tizimlari haqida minimal ma'lumotga ega bo'lgan xodimlar tomonidan boshqarilishi mumkin bo'lgan maxsus echimlarni yaratishga imkon beradi. Ushbu tizim yangi boshlanuvchilar uchun do'stona, lekin ayni paytda tajribali ishlab chiquvchining qo'lida keng sozlash imkoniyatlarini taqdim etadi. Bu IT infratuzilmasini arzon, ammo to'liq ishlaydigan monitoring muammosini hal qilish uchun juda mos keladi, uni boshqaradigan xodimlarni o'qitish uchun minimal talablar mavjud.

Yechim bosqichlari

Dastlab x86_64 uchun qemu-da ishlashi uchun proshivka yaratishga qaror qilindi, chunki bu nosozliklarni tuzatish uchun qulay va tezkor yechim. Keyin uni bitta panelli kompyuterga o'tkazing (menga asus tinker platasi yoqdi).

Qurilish tizimi sifatida buildroot tanlangan. Dastlab, unda zabbix paketi yoʻq edi, shuning uchun uni koʻchirish kerak edi.Rus tili bilan bogʻliq muammolar bor edi, ular tegishli yamoqlarni qoʻllash orqali hal qilindi (eslatma: buildrootning yangi versiyalarida bu yamalar endi kerak emas).

Zabbix paketining o'zi alohida maqolada tasvirlanadi.

Har bir narsa proshivka sifatida ishlashi kerakligi sababli (o'zgarmas tizim tasviri + qayta tiklanadigan konfiguratsiya / ma'lumotlar bazasi fayllari), o'zingizning tizimli maqsadlar, xizmatlar va taymerlarni (maqsad, xizmat, taymer) yozishingiz kerak edi.

Ommaviy axborot vositalarini 2 qismga bo'lish to'g'risida qaror qabul qilindi - tizim fayllari va o'zgaruvchan konfiguratsiyalar va zabbix ma'lumotlar bazasi fayllari bo'lgan bo'lim.

Ma'lumotlar bazasi bilan bog'liq muammolarni hal qilish biroz qiyinroq bo'lib chiqdi. Men uni to'g'ridan-to'g'ri ommaviy axborot vositalariga joylashtirishni xohlamadim. Shu bilan birga, ma'lumotlar bazasi hajmi mumkin bo'lgan ramdisk hajmidan oshib ketadigan hajmga yetishi mumkin. Shuning uchun murosali yechim tanlandi: ma'lumotlar bazasi SD-kartaning ikkinchi qismida joylashgan (zamonaviy SLC kartalari 30 000 tagacha yozish tsikliga ega), ammo tashqi muhitdan foydalanishga imkon beruvchi sozlamalar mavjud (masalan, usb- hdd).

Harorat monitoringi RODOS-5 qurilmasi orqali amalga oshirildi. Albatta, siz Dallas 1820-dan to'g'ridan-to'g'ri foydalanishingiz mumkin, ammo USB-ni ulash tezroq va osonroq edi.

grub86 x64_2 uchun yuklovchi sifatida tanlangan. Uni ishga tushirish uchun minimal konfiguratsiya yozish kerak edi.

Qemu-da disk raskadrovkadan so'ng u asus tinker boardga o'tkazildi. Mening qoplamamning tuzilishi dastlab o'zaro platformalar bo'lishi uchun mo'ljallangan edi - har bir plataga xos konfiguratsiyalarni taqsimlash (board defconfig, bootloader, tizim bo'limi bilan rasm yaratish) va fayl tizimini sozlashda maksimal bir xillik / ma'lumotlar bilan rasm yaratish. Bunday tayyorgarlik tufayli portlash tez o'tdi.

Kirish maqolalarini o'qish tavsiya etiladi:
https://habr.com/ru/post/448638/
https://habr.com/ru/post/449348/

Qanday qilib yig'iladi?

Loyiha github-da saqlanadi
Repozitariyni klonlashdan so'ng quyidagi fayl tuzilishi olinadi:

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

buildroot-2019.05.tar.gz - toza buildroot arxivi
overlay - bu tashqi daraxt bilan mening katalogim. Bu yerda Buildroot yordamida proshivka yaratish uchun kerak bo'lgan hamma narsa saqlanadi.
README.md - ingliz tilidagi loyiha va qo'llanmaning tavsifi.
run_me.sh - bu qurish tizimini tayyorlaydigan skript. Arxivdan Buildroot-ni kengaytiradi, unga qoplamani biriktiradi (tashqi daraxt mexanizmi orqali) va yig'ish uchun maqsadli taxtani tanlashga imkon beradi.

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

Shundan so'ng, buildroot-2019.05 katalogiga o'ting va make buyrug'ini bajaring.
Qurilish tugallangandan so'ng, barcha qurish natijalari chiqish/tasvirlar katalogida bo'ladi:

[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

Kerakli fayllar:

  • sdcard.img - SD-kartaga yozish uchun media tasvir (dd yoki rufus orqali wibdows ostida).
  • qemu.qcow2 - qemuda ishlash uchun media tasviri.
  • external.qcow2 - ma'lumotlar bazasi uchun tashqi media tasviri
  • monitor-0.9-beta.tar.gz - veb-interfeys orqali yangilash uchun arxiv

Qo'llanmalarni yaratish

Xuddi shu ko'rsatmalarni bir necha marta yozishga arzigulik emas. Va eng mantiqiy narsa, uni markdown-da bir marta yozish va keyin uni yuklab olish uchun PDF-ga va veb-interfeys uchun html-ga aylantirishdir. Bu pandoc paketi tufayli mumkin.

Shu bilan birga, ushbu fayllarning barchasi tizim tasvirini yig'ishdan oldin yaratilishi kerak; bu post-qurilish skriptlari allaqachon foydasiz. Shuning uchun avlod qo'llanmalar to'plami shaklida amalga oshiriladi. Siz qoplama/paket/qo'llanmalarga qarashingiz mumkin.

manuals.mk fayli (barcha ishni bajaradi)

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

tizimd

Linux dunyosi faol ravishda systemd ga o'tmoqda va men ham buni qilishim kerak edi.
Yoqimli yangiliklardan biri - taymerlarning mavjudligi. Umuman olganda, ular haqida alohida maqola yozilmoqda (va nafaqat ular haqida), lekin men sizga qisqacha aytib beraman.

Vaqti-vaqti bilan bajarilishi kerak bo'lgan harakatlar mavjud. Lighttpd va php-fpm jurnallarini tozalash uchun logrotate-ni ishga tushirishim kerak edi. Odatdagidek, buyruqlarni cronda yozish kerak edi, lekin men tizimli monotonik taymerdan foydalanishga qaror qildim. Shunday qilib, logrotate qat'iy vaqt oralig'ida ishlaydi.

Albatta, ma'lum sanalarda yonadigan taymerlarni yaratish mumkin, lekin menga bu kerak emas edi.
Taymer misoli:

  • Taymer fayli
    
    [Unit]
    Description=RODOS temp daemon timer

[Taymer] OnBootSec=1min
OnUnitActiveSec=1daq

[O'rnatish] WantedBy=timers.target

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

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

Qo'llab-quvvatlanadigan taxtalar

Asus tinker board - bu hamma narsa ishlashi kerak bo'lgan asosiy plata. Arzon va juda kuchli sifatida tanlangan.

Beaglebone black - bu operatsiya sinovdan o'tgan birinchi taxta (kuchliroq taxtani tanlash paytida).

Qemu x86_64 - disk raskadrovka ishlab chiqish uchun ishlatiladi.

Qanday ishlaydi

Ishga tushganda sozlamalarni ikki bosqichli tiklash sodir bo'ladi:

  • settings_restore skriptini ishga tushirish (xizmat orqali). U asosiy tizim sozlamalarini tiklaydi - vaqt mintaqasi, mahalliy, tarmoq sozlamalari va boshqalar.
  • tayyorlash skriptini ishga tushirish (xizmat orqali) - bu erda zabbix va ma'lumotlar bazasi tayyorlanadi, IP konsolga chiqariladi.

Uni birinchi marta boshlaganingizda, SD-kartaning ikkinchi qismining o'lchami aniqlanadi. Agar hali ham ajratilmagan bo'sh joy bo'lsa, media qayta bo'linadi va ma'lumotlar bo'limi barcha bo'sh joyni egallaydi. Bu o'rnatish tasvirining hajmini kamaytirish uchun amalga oshiriladi (sdcard.img). Bundan tashqari, shu nuqtada postgresql ishchi katalogi yaratiladi. Shuning uchun yangi tashuvchi bilan birinchi ishga tushirish keyingilariga qaraganda ko'proq vaqt talab etadi.

Tashqi drayverni ulashda, ishga tushirish vaqtida u bepul diskni qidiradi va uni tashqi yorliq bilan ext4 formatida formatlaydi.

Diqqat! Tashqi drayverni ulashda (shuningdek, uni uzish yoki almashtirishda) siz zaxira nusxasini yaratishingiz va sozlamalarni tiklashingiz kerak!

RODOS 5 qurilmasi haroratni kuzatish uchun ishlatiladi.Ishlab chiqaruvchi qurilma bilan ishlash uchun o'z yordamchi dasturining manba kodini taqdim etadi. Tizim yoqilganda, rodos taymeri boshlanadi, bu yordam dasturini daqiqada bir marta ishlaydi. Joriy harorat /tmp/rodos_current_temp fayliga yoziladi, shundan so'ng zabbix ushbu faylni sensor sifatida kuzatishi mumkin.

Konfiguratsiyani saqlash vositasi /data katalogiga o'rnatilgan.

Tizimni ishga tushirish va uni ishlashga tayyorlashda konsolda quyidagi xabar paydo bo'ladi:

System starting, please wait

Tayyorgarlik ishlarini tugatgandan so'ng, u IP-manzilni ko'rsatishga o'zgaradi:

current ip 192.168.1.32
Ready to work

Haroratni kuzatish uchun zabbixni sozlash

Haroratni kuzatish uchun 2 qadamni bajaring:

  • RODOS qurilmasini USB portiga ulang
  • zabbix-da ma'lumotlar elementini yarating

Zabbix veb-interfeysini oching:

  • Konfiguratsiya → Xostlar bo'limini oching
  • Zabbix serverimiz qatoridagi Elementlar-ni bosing
  • Element yaratish-ni bosing

Buildroot: zabbix-server yordamida o'zaro platformalar mikrodasturini yaratish

Quyidagi ma'lumotlarni kiriting:

  • nom - sizning xohishingizga ko'ra (masalan, serverRoomTemp )
  • Turi - zabbix agenti
  • Kalit - Rodos
  • Turi-raqamli
  • Birliklar - C
  • Tarixni saqlash muddati - tarixni saqlash muddati. 10 kun qoldi
  • Trendni saqlash muddati - o'zgarishlar dinamikasi uchun saqlash muddati. 30 kun qoldi
  • Yangi dastur - Xona harorati serveri

Va ADD tugmasini bosing.
Buildroot: zabbix-server yordamida o'zaro platformalar mikrodasturini yaratish

Veb-interfeys orqali sozlamalarni boshqaring

Veb-interfeys PHP da yozilgan. Asosiy funktsiyalar mavjud:

  • qurilma holatini ko'rish
  • tarmoq sozlamalarini o'zgartirish
    Buildroot: zabbix-server yordamida o'zaro platformalar mikrodasturini yaratish
  • foydalanuvchi parolini o'zgartirish
  • vaqt zonasini tanlash
  • zaxiralash/tiklash/zavod sozlamalarini tiklash
  • tashqi drayverni ulash qobiliyati
  • Tizim yangilanishi
    Buildroot: zabbix-server yordamida o'zaro platformalar mikrodasturini yaratish

Veb-interfeysga kirish parol bilan himoyalangan. Boshlang'ich sahifa - qo'llanma.

Zabbix interfeys manzili: ${ip/dns}/zabbix
Boshqaruv interfeysi manzili: ${ip/dns}/manage
Buildroot: zabbix-server yordamida o'zaro platformalar mikrodasturini yaratish

Qemuda yugurish

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

Ushbu buyruq 4 yadroli, 2048 operativ xotira, KVM yoqilgan, bridge0-dagi tarmoq kartasi va ikkita diskli tizimni ishga tushiradi: biri tizim uchun, ikkinchisi postgresql uchun tashqi.

Rasmlar Virtualbox-da o'zgartirilishi va ishga tushirilishi mumkin:

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

Keyin ularni virtual qutiga import qiling va sata orqali ulang.

xulosa

Bu jarayonda men foydalanishga tayyor mahsulotni yaratishga qiziqib qoldim - unchalik chiroyli bo'lmagan interfeysga ega (men ularni yozishni yoqtirmayman), lekin ishlaydigan va sozlash oson.

Zabbix-appliance-ni KVM-ga o'rnatishning so'nggi urinishi bu qadam to'g'ri ekanligini ko'rsatdi (o'rnatish tugagandan so'ng tizim ishga tushmaydi). Balki men noto'g'ri ish qilyapman 😉

materiallari

https://buildroot.org/

Manba: www.habr.com

a Izoh qo'shish