Buildroot: Kuunda mfumo dhibiti wa jukwaa na zabbix-server

Buildroot: Kuunda mfumo dhibiti wa jukwaa na zabbix-server

Historia ya shida

Makampuni ya ukubwa mdogo, kwa upande mmoja, wanahitaji ufuatiliaji wa ubora wa miundombinu yao (hasa kwa kuzingatia virtualization iliyoenea), kwa upande mwingine, ni vigumu kifedha kwao kununua vifaa vipya. Matatizo ya seva / vifaa pia ni ya kawaida: mara nyingi kuna seva 1-3 za mnara karibu na vituo vya kazi vya mtumiaji au kwenye niche ndogo / chumbani.

Ni rahisi zaidi kutumia mkusanyiko uliofanywa tayari (usambazaji), ambao unahitaji tu kupakia kwenye kadi ya microSD na kuingiza kwenye kompyuta ya kawaida ya bodi moja (beaglebone, raspberry pi na familia za machungwa pi, bodi ya asus tinker). Kwa kuongeza, vifaa vile ni vya bei nafuu na vinaweza kuwekwa popote.

Taarifa ya tatizo

Kwa njia nyingi, mradi ulikua kama aina ya kazi ya maabara na uwezekano wa kutumia matokeo.

Zabbix ilichaguliwa kama mfumo wa ufuatiliaji kwa sababu ni mfumo wenye nguvu, huru na ulio na kumbukumbu vizuri.

Suala na jukwaa la vifaa limekuwa la papo hapo. Kuweka mashine tofauti chini ya ufuatiliaji pia sio suluhisho nzuri sana - ama ni ghali kununua vifaa vipya, au kutafuta vifaa vya zamani + katika makampuni madogo kuna matatizo ya mara kwa mara na seva/ vifaa.

Kutumia mfumo wa kujenga wa kujenga hukuwezesha kuunda ufumbuzi maalum ambao unaweza kuendeshwa na wafanyakazi wenye ujuzi mdogo wa mifumo ya uendeshaji ya Linux. Mfumo huu ni wa kirafiki kwa Kompyuta, lakini wakati huo huo hutoa fursa nyingi za ubinafsishaji mikononi mwa msanidi uzoefu. Ni kamili kwa ajili ya kutatua tatizo la ufuatiliaji wa gharama nafuu, lakini unaofanya kazi kikamilifu wa miundombinu ya IT, na mahitaji madogo ya mafunzo ya wafanyakazi wanaoiendesha.

Hatua za suluhisho

Iliamuliwa awali kuunda firmware kwa x86_64 ili kufanya kazi katika qemu, kwani hii ni suluhisho rahisi na la haraka la utatuzi. Kisha uhamishe kwa kompyuta yenye ubao mmoja (nilipenda bodi ya asus tinker).

buildroot ilichaguliwa kama mfumo wa kujenga. Hapo awali, haina kifurushi cha zabbix, kwa hivyo ilibidi iwekwe.Kulikuwa na shida na eneo la Kirusi, ambalo lilitatuliwa kwa kutumia viraka vilivyofaa (kumbuka: katika matoleo mapya zaidi ya ujenzi, patches hizi hazihitajiki tena).

Kuweka kifurushi cha zabbix yenyewe itaelezewa katika nakala tofauti.

Kwa kuwa kila kitu kinapaswa kufanya kazi kama firmware (picha ya mfumo isiyoweza kubadilika + faili za usanidi / hifadhidata zinazoweza kurejeshwa), ilikuwa muhimu kuandika malengo yako ya mfumo, huduma na vipima muda (lengo, huduma, kipima muda).

Iliamuliwa kugawanya vyombo vya habari katika sehemu 2 - sehemu yenye faili za mfumo na sehemu yenye usanidi unaoweza kubadilika na faili za hifadhidata za zabbix.

Kutatua shida zinazohusiana na hifadhidata iligeuka kuwa ngumu zaidi. Sikutaka kuiweka moja kwa moja kwenye vyombo vya habari. Wakati huo huo, saizi ya hifadhidata inaweza kufikia saizi inayozidi saizi ya ramdisk inayowezekana. Kwa hivyo, suluhisho la maelewano lilichaguliwa: hifadhidata iko kwenye kizigeu cha pili cha kadi ya SD (kadi za kisasa za SLC zina hadi mizunguko 30 ya uandishi), lakini kuna mpangilio unaoruhusu matumizi ya media ya nje (kwa mfano, usb- HD).

Ufuatiliaji wa joto ulitekelezwa kupitia kifaa cha RODOS-5. Bila shaka, unaweza kutumia Dallas 1820 moja kwa moja, lakini ilikuwa haraka na rahisi kuunganisha USB.

grub86 ilichaguliwa kama bootloader ya x64_2. Ilihitajika kuandika usanidi mdogo ili kuizindua.

Baada ya kurekebisha qemu, iliwekwa kwenye ubao wa kuchezea asus. Muundo wa ufunikaji wangu hapo awali ulikusudiwa kuwa jukwaa-mtambuka - kutenga usanidi maalum kwa kila bodi (defconfig ya bodi, bootloader, kutoa picha na kizigeu cha mfumo) na usawa wa juu katika kubinafsisha mfumo wa faili/kuunda picha iliyo na data. Kwa sababu ya maandalizi kama haya, usafirishaji ulikwenda haraka.

Inapendekezwa sana kusoma nakala za utangulizi:
https://habr.com/ru/post/448638/
https://habr.com/ru/post/449348/

Jinsi ya kukusanyika

Mradi umehifadhiwa kwenye github
Baada ya kuunda hazina, muundo wa faili ufuatao hupatikana:

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

buildroot-2019.05.tar.gz - kumbukumbu safi ya buildroot
overlay ni saraka yangu na nje-mti. Hapa ndipo kila kitu unachohitaji kuunda firmware kwa kutumia buildroot huhifadhiwa ndani.
README.md - maelezo ya mradi na mwongozo kwa Kiingereza.
run_me.sh ni hati inayotayarisha mfumo wa ujenzi. Hupanua mzizi kutoka kwenye kumbukumbu, huambatanisha weka juu yake (kupitia utaratibu wa mti wa nje) na hukuruhusu kuchagua ubao unaolengwa wa kusanyiko.

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

Baada ya hayo, nenda tu kwenye saraka ya buildroot-2019.05 na uendesha amri ya kufanya.
Mara tu ujenzi utakapokamilika, matokeo yote ya ujenzi yatakuwa kwenye saraka ya pato/picha:

[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

Faili zinazohitajika:

  • sdcard.img - picha ya vyombo vya habari kwa kurekodi kwenye kadi ya SD (kupitia dd au rufus chini ya wajane).
  • qemu.qcow2 - picha ya vyombo vya habari ya kukimbia katika qemu.
  • external.qcow2 - picha ya midia ya nje kwa hifadhidata
  • monitor-0.9-beta.tar.gz - hifadhi kwa ajili ya kusasishwa kupitia kiolesura cha wavuti

Kizazi cha Viongozi

Sio thamani ya kuandika maagizo sawa mara kadhaa. Na jambo la kimantiki zaidi ni kuiandika mara moja kwenye alama, na kisha kuibadilisha kuwa PDF kwa kupakua na html kwa kiolesura cha wavuti. Hii inawezekana shukrani kwa kifurushi cha pandoc.

Wakati huo huo, faili hizi zote zinahitaji kuzalishwa kabla ya picha ya mfumo kukusanywa; hati hizo za baada ya kujenga tayari hazina maana. Kwa hiyo, kizazi kinafanywa kwa namna ya mfuko wa mwongozo. Unaweza kuangalia uwekaji/kifurushi/miongozo.

Faili ya manuals.mk (ambayo hufanya kazi yote)

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

mfumo

Ulimwengu wa Linux unasonga kikamilifu kwa systemd, na ilibidi niifanye pia.
Moja ya ubunifu wa kupendeza ni uwepo wa vipima muda. Kwa ujumla, makala tofauti inaandikwa juu yao (na sio tu juu yao), lakini nitakuambia kwa ufupi.

Kuna vitendo ambavyo vinapaswa kufanywa mara kwa mara. Nilihitaji kuendesha logrotate ili kufuta magogo ya lighttpd na php-fpm. Jambo la kawaida litakuwa kuandika amri katika cron, lakini niliamua kutumia timed monotonic timer. Kwa hivyo logrotate inaendesha kwa muda madhubuti.

Kwa kweli, inawezekana kuunda vipima wakati ambavyo vinawaka moto kwa tarehe fulani, lakini sikuhitaji hii.
Mfano wa kipima muda:

  • Faili ya kipima muda
    
    [Unit]
    Description=RODOS temp daemon timer

[Timer] OnBootSec=1min
OnUnitActiveSec=1min

[Sakinisha] WantedBy=timers.target

- Π€Π°ΠΉΠ» сСрвиса, Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠ³ΠΎ Ρ‚Π°ΠΉΠΌΠ΅Ρ€ΠΎΠΌ:
```bash
[Unit]
Description=RODOS temp daemon

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

Bodi zinazoungwa mkono

Bodi ya Asus tinker ndio bodi kuu ambayo kila kitu kinapaswa kufanya kazi. Imechaguliwa kuwa ya bei nafuu na yenye nguvu sana.

Beaglebone nyeusi ni bodi ya kwanza ambayo operesheni ilijaribiwa (wakati wa uteuzi wa bodi yenye nguvu zaidi).

Qemu x86_64 - kutumika kwa ajili ya maendeleo ya utatuzi.

Jinsi kazi

Wakati wa kuanza, urejesho wa hatua mbili wa mipangilio hufanyika:

  • kuendesha script ya settings_restore (kupitia huduma). Inarejesha mipangilio ya msingi ya mfumo - eneo la wakati, eneo, mipangilio ya mtandao, nk.
  • kuendesha hati ya kuandaa (kupitia huduma) - hapa zabbix na hifadhidata zimeandaliwa, IP ni pato kwa koni.

Unapoianza kwanza, saizi ya kizigeu cha pili cha kadi ya SD imedhamiriwa. Ikiwa bado kuna nafasi isiyotengwa, vyombo vya habari vinagawanywa tena, na sehemu ya data inachukua nafasi yote ya bure. Hii inafanywa ili kupunguza saizi ya picha ya usakinishaji (sdcard.img). Kwa kuongeza, saraka ya kazi ya postgresql imeundwa katika hatua hii. Ndio maana uzinduzi wa kwanza na mtoa huduma mpya utakuwa mrefu kuliko ule unaofuata.

Wakati wa kuunganisha gari la nje, wakati wa kuanza hutafuta kiendeshi cha bure na kuibadilisha kuwa ext4 na lebo ya nje.

Makini! Wakati wa kuunganisha gari la nje (pamoja na kukatwa au kuibadilisha), unahitaji kufanya salama na kurejesha mipangilio!

Kifaa cha RODOS 5 kinatumika kwa ufuatiliaji wa hali ya joto. Mtengenezaji hutoa msimbo wa chanzo wa matumizi yake kwa kufanya kazi na kifaa. Wakati mfumo umewashwa, timer ya rodos huanza, ambayo huendesha shirika hili mara moja kwa dakika. Halijoto ya sasa imeandikwa kwa faili /tmp/rodos_current_temp, baada ya hapo zabbix inaweza kufuatilia faili hii kama kihisi.

Midia ya hifadhi ya usanidi imewekwa kwenye saraka /data.

Wakati wa kuanzisha mfumo na kuitayarisha kwa operesheni, ujumbe ufuatao unaonekana kwenye koni:

System starting, please wait

Baada ya kukamilisha kazi ya maandalizi, itabadilika na kuonyesha anwani ya IP:

current ip 192.168.1.32
Ready to work

Kuweka zabbix kwa ufuatiliaji wa hali ya joto

Ili kufuatilia hali ya joto, chukua hatua 2 tu:

  • unganisha kifaa cha RODOS kwenye bandari ya USB
  • unda kipengee cha data katika zabbix

Fungua kiolesura cha wavuti cha zabbix:

  • Fungua sehemu ya Usanidi β†’ Wapangishi
  • Bofya kwenye Vipengee kwenye mstari wa seva yetu ya zabbix
  • Bofya kwenye Unda kipengee

Buildroot: Kuunda mfumo dhibiti wa jukwaa na zabbix-server

Ingiza data ifuatayo:

  • jina - kwa hiari yako (kwa mfano, serverRoomTemp )
  • Aina - wakala wa zabbix
  • Muhimu - Rodos
  • Aina-nambari
  • Vitengo - C
  • Kipindi cha uhifadhi wa historia - kipindi cha uhifadhi wa historia. kushoto siku 10
  • Kipindi cha uhifadhi wa mtindo-kipindi cha kuhifadhi kwa mienendo ya mabadiliko. Zimesalia siku 30
  • Programu mpya - Joto la Chumba cha seva

Na bonyeza kitufe cha ADD.
Buildroot: Kuunda mfumo dhibiti wa jukwaa na zabbix-server

Dhibiti mipangilio kupitia kiolesura cha wavuti

Kiolesura cha wavuti kimeandikwa katika PHP. Kuna kazi kuu:

  • tazama hali ya kifaa
  • kubadilisha mipangilio ya mtandao
    Buildroot: Kuunda mfumo dhibiti wa jukwaa na zabbix-server
  • kubadilisha nenosiri la mtumiaji
  • uteuzi wa eneo la saa
  • chelezo/rejesha/weka upya kiwandani
  • uwezo wa kuunganisha gari la nje
  • Sasisho la mfumo
    Buildroot: Kuunda mfumo dhibiti wa jukwaa na zabbix-server

Kuingia kwenye kiolesura cha wavuti kulindwa kwa nenosiri. Ukurasa wa mwanzo - mwongozo.

Anwani ya kiolesura cha Zabbix: ${ip/dns}/zabbix
Anwani ya kiolesura cha usimamizi: ${ip/dns}/manage
Buildroot: Kuunda mfumo dhibiti wa jukwaa na zabbix-server

Kukimbia katika qemu

qemu-system-x86_64 -smp 4 -m 4026M -wezesha-kvm -mashine q35,accel=kvm -kifaa cha intel-iommu -cpu host -net nic -net bridge,br=bridge0 -device virtio-scsi-pci,id= scsi0 -drive file=output/picha/qemu.qcow2,format=qcow2,aio=threads -device virtio-scsi-pci,id=scsi0 -drive file=output/images/external.qcow2,format=qcow2,aio=nyuzi

Amri hii itaanza mfumo na cores 4, 2048 RAM, KVM imewezeshwa, kadi ya mtandao kwenye bridge0 na disks mbili: moja kwa mfumo na moja ya nje kwa postgresql.

Picha zinaweza kubadilishwa na kukimbia kwenye Virtualbox:

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

Kisha ziingize kwenye kisanduku halisi na uunganishe kupitia sata.

Hitimisho

Katika mchakato huo, nilivutiwa kutengeneza bidhaa iliyo tayari kutumia - na kiolesura kisicho kizuri sana (sipendi kuandika), lakini kinachofanya kazi na ni rahisi kusanidi.

Jaribio la mwisho la kufunga zabbix-appliance katika KVM ilionyesha kuwa hatua hii ilikuwa sahihi (baada ya ufungaji kukamilika, mfumo hauanza). Labda ninafanya kitu kibaya πŸ˜‰

Vifaa

https://buildroot.org/

Chanzo: mapenzi.com

Kuongeza maoni