Buildroot: zabbix серверімен кросс-платформалық микробағдарлама жасау

Buildroot: zabbix серверімен кросс-платформалық микробағдарлама жасау

Мәселе тарихы

Шағын компаниялар, бір жағынан, инфрақұрылымының жоғары сапалы мониторингін қажет етеді (әсіресе кең таралған виртуализация жағдайында), екінші жағынан, оларға жаңа жабдықты сатып алу қаржылық жағынан қиын. Сервер/аппараттық ақаулар да жиі кездеседі: жиі пайдаланушы жұмыс станцияларының жанында немесе шағын тауашада/шкафта 1-3 мұнара серверлері болады.

Дайын жинақты (таратуды) пайдалану оңайырақ, оны тек microSD картасына жүктеп салып, жалпы бір тақталы компьютерге (beaglebone, таңқурай пи және апельсин пи отбасылары, asus Tinker board) салу керек. Сонымен қатар, мұндай жабдық қымбат емес және оны кез келген жерде орнатуға болады.

Мәселенің тұжырымы

Көптеген жолдармен жоба нәтижелерді қолдану мүмкіндігімен зертханалық жұмыстың бір түрі ретінде әзірленді.

Мониторинг жүйесі ретінде Zabbix таңдалды, себебі ол қуатты, еркін және жақсы құжатталған жүйе.

Аппараттық платформаға қатысты мәселе өткір болды.Бөлек машинаны бақылауға қою да өте жақсы шешім емес – не жаңа жабдықты сатып алу қымбатқа түседі, не ескі жабдықты іздеу + шағын компанияларда серверде жиі ақаулар туындайды/ аппараттық құрал.

Buildroot құрастыру жүйесін пайдалану Linux операциялық жүйелерін аз білетін қызметкерлер басқара алатын арнайы шешімдерді жасауға мүмкіндік береді. Бұл жүйе жаңадан бастаушыларға ыңғайлы, бірақ сонымен бірге тәжірибелі әзірлеушінің қолында теңшеудің кең мүмкіндіктерін береді. Ол АТ-инфрақұрылымының арзан, бірақ толық жұмыс істейтін мониторингі мәселесін шешу үшін өте қолайлы, оны басқаратын персоналды оқытуға минималды талаптар қояды.

Шешу қадамдары

Бастапқыда x86_64 үшін qemu жүйесінде жұмыс істеу үшін микробағдарлама жасау туралы шешім қабылданды, өйткені бұл жөндеуге ыңғайлы және жылдам шешім. Содан кейін оны бір тақталы компьютерге қосыңыз (маған asus тақтасы ұнады).

құрастыру жүйесі ретінде 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 — құрастыру жүйесін дайындайтын сценарий. Мұрағаттан құрылыс түбірін кеңейтеді, оған қабаттасуды қосады (сыртқы ағаш механизмі арқылы) және құрастыру үшін мақсатты тақтаны таңдауға мүмкіндік береді.

[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 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

Қолдау көрсетілетін тақталар

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 бұл файлды сенсор ретінде бақылай алады.

Конфигурация сақтау медиасы /data каталогында орнатылған.

Жүйені іске қосу және оны жұмысқа дайындау кезінде консольде келесі хабарлама пайда болады:

System starting, please wait

Дайындық жұмыстарын аяқтағаннан кейін ол IP мекенжайын көрсетуге ауысады:

current ip 192.168.1.32
Ready to work

Температураны бақылау үшін zabbix орнату

Температураны бақылау үшін 2 қадамды орындаңыз:

  • RODOS құрылғысын USB портына қосыңыз
  • zabbix ішінде деректер элементін жасаңыз

zabbix веб-интерфейсін ашыңыз:

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

Buildroot: zabbix серверімен кросс-платформалық микробағдарлама жасау

Келесі деректерді енгізіңіз:

  • атау - сіздің қалауыңыз бойынша (мысалы, serverRoomTemp )
  • Түрі - zabbix агенті
  • Кілт - Родос
  • Түрі-сандық
  • Бірліктер - C
  • Тарихты сақтау кезеңі — тарихты сақтау кезеңі. 10 күн қалды
  • Трендті сақтау мерзімі — өзгерістер динамикасының сақтау мерзімі. 30 күн қалды
  • Жаңа қолданба – Room Temp сервері

Және ҚОСУ түймесін басыңыз.
Buildroot: zabbix серверімен кросс-платформалық микробағдарлама жасау

Параметрлерді веб-интерфейс арқылы басқарыңыз

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

  • құрылғы күйін көру
  • желі параметрлерін өзгерту
    Buildroot: zabbix серверімен кросс-платформалық микробағдарлама жасау
  • пайдаланушы құпия сөзін өзгерту
  • уақыт белдеуін таңдау
  • сақтық көшірме/қалпына келтіру/зауыттық параметрлерді қалпына келтіру
  • сыртқы дискіні қосу мүмкіндігі
  • Жүйені жаңарту
    Buildroot: zabbix серверімен кросс-платформалық микробағдарлама жасау

Веб-интерфейске кіру парольмен қорғалған. Бастапқы бет - нұсқаулық.

Zabbix интерфейсінің мекенжайы: ${ip/dns}/zabbix
Басқару интерфейсінің мекенжайы: ${ip/dns}/manage
Buildroot: zabbix серверімен кросс-платформалық микробағдарлама жасау

Кемуде жүгіру

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 -диск файлы=output/images/qemu.qcow2,format=qcow2,aio=ағындар -құрылғы virtio-scsi-pci,id=scsi0 -диск файлы=output/images/external.qcow2,format=qcow2,aio=ағындар

Бұл пәрмен 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/

Ақпарат көзі: www.habr.com

пікір қалдыру