Buildroot: Эҷоди нармафзори байниплатформавӣ бо zabbix-server

Buildroot: Эҷоди нармафзори байниплатформавӣ бо zabbix-server

Таърихи мушкилот

Ширкатҳои хурд, аз як тараф, ба мониторинги баландсифати инфрасохтори худ ниёз доранд (хусусан дар заминаи виртуализатсияи васеъ), аз ҷониби дигар, барои онҳо харидани таҷҳизоти нав аз ҷиҳати молиявӣ мушкил аст. Мушкилоти сервер/сахтафзор низ маъмуланд: аксар вақт дар паҳлӯи истгоҳҳои кории корбар ё дар чароғдон/ҷевони хурд 1-3 серверҳои манора мавҷуданд.

Истифодаи маҷмӯаи (тақсимоти) тайёр осонтар аст, ки ба шумо танҳо лозим аст, ки ба корти microSD бор кунед ва ба компютери оддии якбора гузоред (beaglebone, raspberry pi ва orange pi family, asus board tinker). Илова бар ин, чунин таҷҳизот арзон буда, дар ҳама ҷо насб кардан мумкин аст.

Тартиб додани масъала

Аз бисёр ҷиҳат, лоиҳа ҳамчун як намуди кори лабораторӣ бо имкони татбиқи натиҷаҳо таҳия шудааст.

Zabbix ҳамчун системаи мониторинг интихоб карда шуд, зеро он як системаи пурқувват, озод ва ҳуҷҷатгузории хуб аст.

Масъалаи платформаи сахтафзор хеле тезутунд гардид.. Дар зери назорат гузоштани мошини алоҳида низ роҳи ҳалли он қадар хуб нест - ё харидани таҷҳизоти нав гарон аст, ё ҷустуҷӯи таҷҳизоти кӯҳна + дар ширкатҳои хурд бо сервер/ сахтафзор.

Истифодаи системаи buildroot ба шумо имкон медиҳад, ки қарорҳои махсусеро эҷод кунед, ки онҳоро кормандони дорои дониши ҳадди ақали системаҳои оператсионии Linux идора карда метавонанд. Ин система барои шурӯъкунандагон дӯстона аст, аммо ҳамзамон дар дасти як таҳиягари ботаҷриба имкониятҳои зиёди мутобиқсозӣ фароҳам меорад. Он барои ҳалли проблемаи мониторинги арзон, вале пурра функсионалии инфрасохтори ТИ бо талаботи ҳадди ақал барои омӯзиши кадрҳое, ки онро идора мекунанд, комил аст.

Қадамҳои ҳалли

Қарор дода шуд, ки дар аввал нармафзор барои x86_64 эҷод карда шавад, то дар qemu кор кунад, зеро ин як ҳалли қулай ва зуд барои хатогиҳо мебошад. Сипас онро ба компютери як-бортаи бозу гузоред (ба ман тахтаи tinker asus маъқул буд).

buildroot ҳамчун системаи сохтмон интихоб карда шуд. Дар аввал, он бастаи zabbix надорад, аз ин рӯ он бояд интиқол дода шавад.Дар забони русӣ мушкилот вуҷуд доштанд, ки бо истифода аз часпакҳои мувофиқ ҳал карда шуданд (эътибор диҳед: дар версияҳои нави buildroot, ин часбҳо дигар лозим нестанд).

Худи интиқоли бастаи zabbix дар мақолаи алоҳида тавсиф карда мешавад.

Азбаски ҳама чиз бояд ҳамчун нармафзор кор кунад (тасвири тағирнашавандаи система + файлҳои конфигуратсия / пойгоҳи додаҳо барқароршаванда), шумо бояд ҳадафҳои системавӣ, хидматҳо ва таймерҳои худро (ҳадаф, хидмат, таймер) нависед.

Қарор дода шуд, ки ВАО ба 2 бахш тақсим карда шавад - бахш бо файлҳои системавӣ ва бахш бо конфигуратсияҳои тағирёбанда ва файлҳои пойгоҳи додаҳои zabbix.

Халли масъалахое, ки ба базаи маълумот вобастаанд, андаке душвортар шуданд. Ман намехостам, ки онро мустақиман дар ВАО ҷойгир кунам. Дар айни замон, андозаи базаи маълумот метавонад ба андозае расад, ки аз андозаи ramdisk имконпазир зиёд бошад. Аз ин рӯ, роҳи ҳалли созиш интихоб карда шуд: пойгоҳи додаҳо дар қисмати дуюми корти SD ҷойгир аст (кортҳои муосири SLC то 30 давраҳои навиштан доранд), аммо танзимот мавҷуд аст, ки ба истифодаи васоити беруна имкон медиҳад (масалан, usb- hdd).

Назорати харорат ба воситаи аппарати РОДОС-5 ба амал бароварда шуд. Албатта, шумо метавонед Dallas 1820-ро мустақиман истифода баред, аммо пайваст кардани USB тезтар ва осонтар буд.

grub86 ҳамчун пурборкунанда барои x64_2 интихоб шуд. Барои оғоз кардани он конфигуратсияи минималиро навиштан лозим буд.

Пас аз ислоҳи qemu, он ба тахтаи tinker asus интиқол дода шуд. Сохтори қабати ман дар аввал пешбинӣ шуда буд, ки байни платформа бошад - тақсимоти конфигуратсияҳои мушаххас ба ҳар як тахта (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 (тавассути dd ё rufus under 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 ба ман лозим омад, ки 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

Лавҳаҳои дастгирӣшаванда

Шӯрои tinker Asus тахтаи асосӣест, ки ҳама чиз бояд дар он кор кунад. Ҳамчун арзон ва хеле тавоно интихоб шудааст.

Beaglebone black аввалин тахтаест, ки дар он амалиёт санҷида шудааст (ҳангоми интихоби тахтаи пурқувваттар).

Qemu x86_64 - барои таҳияи хатогиҳо истифода мешавад.

Чӣ тавр кор мекунад

Ҳангоми оғозёбӣ, барқарорсозии ду марҳилаи танзимот сурат мегирад:

  • иҷро кардани скрипти settings_restore (тавассути хидмат). Он танзимоти асосии системаро барқарор мекунад - минтақаи вақт, маҳаллӣ, танзимоти шабака ва ғайра.
  • иҷро кардани скрипти тайёр (тавассути хидмат) - дар ин ҷо zabbix ва пойгоҳи додаҳо омода карда мешаванд, IP ба консол бароварда мешавад.

Вақте ки шумо онро бори аввал оғоз мекунед, андозаи қисми дуюми корти SD муайян карда мешавад. Агар то ҳол фазои ҷудонашуда мавҷуд бошад, васоити ахбори омма аз нав тақсим карда мешавад ва қисмати маълумот тамоми фазои холиро ишғол мекунад. Ин барои кам кардани андозаи тасвири насбкунӣ анҷом дода мешавад (sdcard.img). Илова бар ин, дар ин лаҳза феҳристи кории postgresql сохта мешавад. Аз ин рӯ, оғози аввалин бо интиқолдиҳандаи нав назар ба интиқоли минбаъда дарозтар хоҳад буд.

Ҳангоми пайваст кардани диски беруна, дар лаҳзаи оғозёбӣ он диски ройгонро ҷустуҷӯ мекунад ва онро ба ext4 бо нишони беруна формат мекунад.

Диққат! Ҳангоми пайваст кардани диски беруна (инчунин ҷудо кардан ё иваз кардани он), шумо бояд нусхабардорӣ кунед ва танзимотро барқарор кунед!

Дастгоҳи RODOS 5 барои назорати ҳарорат истифода мешавад Истеҳсолкунанда рамзи сарчашмаи утилитаи худро барои кор бо дастгоҳ пешниҳод мекунад. Вақте ки шумо системаро фаъол мекунед, таймери rodos оғоз мешавад, ки ин утилитро дар як дақиқа як маротиба иҷро мекунад. Ҳарорати ҷорӣ ба файли /tmp/rodos_current_temp навишта мешавад, пас аз он zabbix метавонад ин файлро ҳамчун сенсор назорат кунад.

Васоити нигаҳдории конфигуратсия дар феҳристи /data насб карда шудааст.

Ҳангоми оғоз кардани система ва ба кор омода кардани он, дар консол паёми зерин пайдо мешавад:

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 рӯз мондааст
  • Замимаи нав - сервер Room Temp

Ва тугмаи 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 -диски файл=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

Сипас онҳоро ба виртуалӣ ворид кунед ва тавассути sata пайваст шавед.

хулоса

Дар ин раванд, ман ба сохтани як маҳсулоти барои истифода омода шавқ пайдо кардам - ​​бо интерфейси на он қадар зебо (ман навиштани онҳоро дӯст намедорам), аммо он кор мекунад ва танзимаш осон аст.

Кӯшиши охирини насби zabbix-appliance дар KVM нишон дод, ки ин қадам дуруст буд (пас аз анҷоми насб, система оғоз намешавад). Шояд ман кори нодуруст карда истодаам

маводи

https://buildroot.org/

Манбаъ: will.com

Илова Эзоҳ