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

Мониторинг температуры был реализован через устройство RODOS-5. Конечно, можно использовать dallas 1820 напрямую, но быстрее и проще было воткнуть USB.

В качестве загрузчика для x86_64 был выбран grub2. Потребовалось написать минимальный конфиг для запуска.

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 — мой каталог с external-tree. Именно в нем хранится всё нужное, что бы собрать прошивку с помощью buildroot
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-карту (через dd или rufus под wibdows).
  • qemu.qcow2 - qemuda ishlash uchun media tasviri.
  • external.qcow2 — образ external-носителя для базы данных
  • monitor-0.9-beta.tar.gz — архив для обновления через web-интерфейс

Генерация руководств

Писать несколько раз одну и ту же инструкцию не стоит. И логичнее всего написать один раз в markdown, после чего конвертировать в PDF для скачивания и html для веб-интерфейса. Это возможно благодаря пакету pandoc.

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 активно переходит на systemd, пришлось это сделать и мне.
Из приятных новшеств — наличие таймеров. Вообще о них (и не только о них) пишется отдельная статья, но коротко расскажу.

Есть действия, которые надо выполнять периодически. Мне потребовалось запускать logrotate для очистки журналов lighttpd и php-fpm. Привычнее всего было бы написать команды в cron, но я решил использовать монотонный таймер systemd. Таким образом, logrotate запускается через строгий временной интервал.

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

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

[Timer] OnBootSec=1min
OnUnitActiveSec=1daq

[Install] 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 — первая плата, на которой проверялась работа(в период подбора более мощной платы).

Qemu x86_64 - disk raskadrovka ishlab chiqish uchun ishlatiladi.

Qanday ishlaydi

При старте происходит двухэтапное восстановление настроек:

  • 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.

При первом запуске происходит определение размера второго раздела sd-карты. В случае, если ещё есть не размеченное место — носитель переразбивается, раздел под данные занимает всё свободное место. Это сделано в целях уменьшения размера установочного образа(sdcard.img). Кроме того, в этот момент создается рабочий каталог postgresql. Именно поэтому первый запуск с новым носителем будет дольше последующих.

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

Настройка zabbix для мониторинга температуры

Для мониторинга температуры достаточно сделать 2 шага:

  • подключить устройство RODOS к usb-порту
  • zabbix-da ma'lumotlar elementini yarating

Zabbix veb-interfeysini oching:

  • Открываем раздел Configuration → Hosts
  • Zabbix serverimiz qatoridagi Elementlar-ni bosing
  • Element yaratish-ni bosing

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

Quyidagi ma'lumotlarni kiriting:

  • name — на ваше усмотрение (например, serverRoomTemp )
  • Turi - zabbix agenti
  • Kalit - Rodos
  • Type- numeric
  • Birliklar - C
  • Tarixni saqlash muddati - tarixni saqlash muddati. 10 kun qoldi
  • Trendni saqlash muddati - o'zgarishlar dinamikasi uchun saqlash muddati. 30 kun qoldi
  • New application — server Room Temp

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:

  • просмотр состояния устройства
  • tarmoq sozlamalarini o'zgartirish
    Buildroot: zabbix-server yordamida o'zaro platformalar mikrodasturini yaratish
  • foydalanuvchi parolini o'zgartirish
  • выбор часового пояса
  • zaxiralash/tiklash/zavod sozlamalarini tiklash
  • возможность подключения внешнего диска
  • 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

Эта команда запустит систему с 4 ядрами, 2048 RAM, активированным KVM, сетевой картой на мосту bridge0 и двумя дисками: для системы и external для postgresql.

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