Buildroot: zabbix-сервер менен платформалар аралык микропрограмманы түзүү

Buildroot: zabbix-сервер менен платформалар аралык микропрограмманы түзүү

Көйгөйдүн тарыхы

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

Даяр монтажды (таратууну) колдонуу жеңилирээк, аны жөн гана microSD картасына жүктөп, жалпы бир такталуу компьютерге (beaglebone, малина пи жана апельсин пи үй-бүлөлөрү, asus Tinker board) киргизүү керек. Мындан тышкары, мындай жабдуулар арзан жана каалаган жерге орнотулат.

Тапшырманын коюлушу

Көп жагынан алганда, долбоор натыйжаларды колдонуу мүмкүнчүлүгү менен лабораториялык иштин бир түрү катары иштелип чыккан.

Zabbix мониторинг системасы катары тандалган, анткени ал күчтүү, эркин жана жакшы документтештирилген система.

Аппараттык платформа маселеси курч болуп калды.Мониторингге өзүнчө машина коюу да жакшы чечим эмес – же жаңы жабдууларды сатып алуу кымбатка турат, же эски жабдууларды издөө + майда компанияларда серверде// аппараттык.

Buildroot куруу системасын колдонуу Linux операциялык системаларын минималдуу билими бар кызматкерлер башкара ала турган адистештирилген чечимдерди түзүүгө мүмкүндүк берет. Бул система үйрөнчүктөр үчүн ыңгайлуу, бирок ошол эле учурда тажрыйбалуу иштеп чыгуучунун колунда кеңири ыңгайлаштыруу мүмкүнчүлүктөрүн берет. Бул IT-инфраструктуранын арзан, бирок толук функционалдык мониторинги, аны иштеткен персоналды окутууга минималдуу талаптарды чечүү үчүн идеалдуу.

Чечим кадамдары

Башында x86_64 үчүн qemuде иштөө үчүн микропрограмманы түзүү чечими кабыл алынды, анткени бул мүчүлүштүктөрдү оңдоо үчүн ыңгайлуу жана тез чечим. Андан кийин аны бир колдуу компьютерге өткөрүңүз (мага asus Tinker тактасы жакты).

buildroot куруу системасы катары тандалган. Башында, анда zabbix пакети жок болгондуктан, аны ташууга туура келген.Орус тилиндеги көйгөйлөр бар болчу, алар тиешелүү патчтарды колдонуу менен чечилген (эскертүү: buildrootтун жаңы версияларында бул патчтардын кереги жок).

Zabbix пакетин порттоо өзүнчө макалада сүрөттөлөт.

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

Медианы 2 бөлүккө бөлүү чечими кабыл алынды - системалык файлдары бар бөлүм жана өзгөрүлүүчү конфигурациялары жана zabbix маалымат базасы файлдары бар бөлүм.

Маалыматтар базасына байланыштуу маселелерди чечүү бир аз кыйыныраак болуп чыкты. Мен аны түздөн-түз массалык маалымат каражаттарына жайгаштыргым келген жок. Ошол эле учурда, маалымат базасынын көлөмү мүмкүн болгон ramdisk өлчөмүнөн ашкан өлчөмдө жетиши мүмкүн. Ошондуктан, компромисстик чечим тандалды: маалымат базасы SD картанын экинчи бөлүгүндө жайгашкан (заманбап SLC карталарында 30 000ге чейин жазуу циклдери бар), бирок тышкы медианы колдонууга мүмкүндүк берген жөндөө бар (мисалы, USB- hdd).

Температураны көзөмөлдөө RODOS-5 аппараты аркылуу ишке ашырылган. Албетте, сиз түздөн-түз Dallas 1820 колдоно аласыз, бирок ал тезирээк жана USB туташтыруу үчүн жеңил болгон.

grub86 x64_2 үчүн жүктөгүч катары тандалган. Аны ишке киргизүү үчүн минималдуу конфигурацияны жазуу керек болчу.

Qemu боюнча мүчүлүштүктөрдү оңдоодон кийин, ал asus Tinker тактасына өткөрүлдү. Менин үстүнкү катмарымдын түзүмү башында кайчылаш-платформа болушу керек болчу - ар бир тактага мүнөздүү конфигурацияларды бөлүштүрүү (board 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 каталогуна барып, жасоо буйругун иштетиңиз.
Куруу аяктагандан кийин, бардык куруу натыйжалары чыгаруу/сүрөттөр каталогунда болот:

[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 картага жазуу үчүн медиа сүрөтү (dd же rufus аркылуу wibdows астында).
  • 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))

systemd

Linux дүйнөсү жигердүү түрдө systemdге өтүп жатат, мен да аны жасоого туура келди.
Жагымдуу инновациялардын бири - таймерлердин болушу. Жалпысынан алганда, алар жөнүндө өзүнчө макала жазылып жатат (жана алар жөнүндө гана эмес), бирок мен сизге кыскача айтып берейин.

Мезгил-мезгили менен аткарыла турган иш-аракеттер бар. Lighttpd жана php-fpm журналдарын тазалоо үчүн логротатту иштетүү керек болчу. Кадимки нерсе 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 кадамды жасаңыз:

  • USB портуна RODOS аппаратты туташтыруу
  • zabbixте маалымат элементин түзүү

zabbix веб интерфейсин ачуу:

  • Конфигурация → Хосттар бөлүмүн ачыңыз
  • Биздин zabbix серверибиздин линиясындагы элементтерди басыңыз
  • Элемент түзүү дегенди басыңыз

Buildroot: zabbix-сервер менен платформалар аралык микропрограмманы түзүү

Төмөнкү маалыматтарды киргизиңиз:

  • аты - сиздин каалооңуз боюнча (мисалы, serverRoomTemp )
  • Түрү - zabbix агенти
  • Ачкыч - Родос
  • Түр-сан
  • Бирдиктер - C
  • Тарых сактоо мезгили — тарыхты сактоо мезгили. 10 кун калды
  • Тренди сактоо мөөнөтү — өзгөрүүлөрдүн динамикасын сактоо мөөнөтү. 30 күн калды
  • Жаңы колдонмо - Server Room Temp

Жана ADD баскычын басыңыз.
Buildroot: zabbix-сервер менен платформалар аралык микропрограмманы түзүү

Желе интерфейси аркылуу жөндөөлөрдү башкарыңыз

Веб интерфейси PHP тилинде жазылган. негизги функциялары бар:

  • аппараттын абалын көрүү
  • тармак жөндөөлөрүн өзгөртүү
    Buildroot: zabbix-сервер менен платформалар аралык микропрограмманы түзүү
  • колдонуучунун сырсөзүн өзгөртүү
  • убакыт алкагын тандоо
  • резервдик көчүрүү/калыбына келтирүү/заводдук абалга келтирүү
  • тышкы дискти туташтыруу мүмкүнчүлүгү
  • Тутумду жаңыртуу
    Buildroot: zabbix-сервер менен платформалар аралык микропрограмманы түзүү

Веб интерфейсине кирүү сырсөз менен корголгон. Башталгыч бет - колдонмо.

Zabbix интерфейсинин дареги: ${ip/dns}/zabbix
Башкаруу интерфейсинин дареги: ${ip/dns}/manage
Buildroot: zabbix-сервер менен платформалар аралык микропрограмманы түзүү

Qemuдо чуркоо

qemu-system-x86_64 -smp 4 -m 4026M -enable-kvm -machine q35,accel=kvm -түзмөк intel-iommu -cpu хост -net nic -net bridge,br=bridge0 -түзмөк 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 оперативдүү эс тутуму, 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

Андан кийин аларды виртуалдык кутуга импорттоо жана sata аркылуу туташуу.

жыйынтыктоо

Процесстин жүрүшүндө мен колдонууга даяр продуктту жасоого кызыгып калдым - интерфейси абдан кооз эмес (мен аларды жазганды жактырбайм), бирок иштеген жана конфигурациялоо оңой.

KVMде zabbix-аппаратты орнотууга акыркы аракет бул кадам туура болгонун көрсөттү (орнотуу аяктагандан кийин система иштебейт). Балким мен туура эмес кылып жаткандырмын 😉

Материалы

https://buildroot.org/

Source: www.habr.com

Комментарий кошуу