åé¡å±¥æŽ
äžå°äŒæ¥ã¯ãã€ã³ãã©ã¹ãã©ã¯ãã£ã®é«å質ãªç£èŠãå¿ èŠãšããŠããŸã (ç¹ã«ä»®æ³åã®æ®åãèæ ®ããŠ) ããäžæ¹ã§ã¯æ°ããæ©åšãè³Œå ¥ããã®ãçµæžçã«å°é£ã§ãã ãµãŒããŒ/ããŒããŠã§ã¢ã®åé¡ããããããŸããå€ãã®å ŽåããŠãŒã¶ãŒã®ã¯ãŒã¯ã¹ããŒã·ã§ã³ã®é£ãŸãã¯å°ããªéé/ã¯ããŒãŒããã« 1 ïœ 3 å°ã®ã¿ã¯ãŒ ãµãŒããŒãèšçœ®ãããŠããŸãã
æ¢è£œã®ã¢ã»ã³ã㪠(ãã£ã¹ããªãã¥ãŒã·ã§ã³) ã䜿çšããæ¹ãç°¡åã§ããããã microSD ã«ãŒãã«ã¢ããããŒãããŠãäžè¬çãªã·ã³ã°ã«ããŒã ã³ã³ãã¥ãŒã¿ãŒ (beagleboneãraspberry piãorange pi ãã¡ããªãasus tinker board) ã«æ¿å ¥ããã ãã§ãã ããã«ããã®ãããªè£ 眮ã¯å®äŸ¡ã§ãããã©ãã«ã§ãèšçœ®ã§ããŸãã
åé¡ã®å®åŒå
å€ãã®ç¹ã§ããã®ãããžã§ã¯ãã¯ãçµæãå¿çšããå¯èœæ§ã䌎ãäžçš®ã®å®éšç 究ãšããŠçºå±ããŸããã
Zabbix ãç£èŠã·ã¹ãã ãšããŠéžæãããã®ã¯ãZabbix ã匷åã§ãç¡æã§ãååã«ææžåãããã·ã¹ãã ã§ããããã§ãã
ããŒããŠã§ã¢ ãã©ãããã©ãŒã ã®åé¡ã¯æ·±å»ã«ãªã£ãŠãããå¥ã®ãã·ã³ãç£èŠäžã«çœ®ãããšããããŸãè¯ã解決çã§ã¯ãããŸãã - æ°ããæ©åšãè³Œå ¥ããããå€ãæ©åšãæ¢ãã®ã«è²»çšãããããŸã + äžå°äŒæ¥ã§ã¯ããµãŒããŒ/ãµãŒããŒã«é¢ããåé¡ãé »ç¹ã«çºçããŸããããŒããŠã§ã¢ã
buildroot ãã«ã ã·ã¹ãã ã䜿çšãããšãLinux ãªãã¬ãŒãã£ã³ã° ã·ã¹ãã ã«é¢ããæå°éã®ç¥èãæã€æ åœè ãæäœã§ããç¹æ®ãªãœãªã¥ãŒã·ã§ã³ãäœæã§ããŸãã ãã®ã·ã¹ãã ã¯åå¿è ã«åªããã§ãããåæã«çµéšè±å¯ãªéçºè ã®æã«ããååãªã«ã¹ã¿ãã€ãºã®æ©äŒãæäŸããŸãã ããã¯ãIT ã€ã³ãã©ã¹ãã©ã¯ãã£ãéçšããæ åœè ã®ãã¬ãŒãã³ã°èŠä»¶ãæå°éã«æããå®äŸ¡ã§ãããªããå®å šã«æ©èœãã IT ã€ã³ãã©ã¹ãã©ã¯ãã£ã®ç£èŠãšããåé¡ã解決ããã®ã«æé©ã§ãã
解決çã®ã¹ããã
ããã¯ãããã°ã«äŸ¿å©ã§é«éãªãœãªã¥ãŒã·ã§ã³ã§ãããããæå㯠qemu ã§å®è¡ãã x86_64 çšã®ãã¡ãŒã ãŠã§ã¢ãäœæããããšã«ããŸããã 次ã«ãããã arm ã·ã³ã°ã«ããŒã ã³ã³ãã¥ãŒã¿ãŒ (ç§ã¯ asus tinker ããŒããæ°ã«å ¥ããŸãã) ã«ç§»æ€ããŸãã
buildroot ããã«ã ã·ã¹ãã ãšããŠéžæãããŸããã åœå㯠zabbix ããã±ãŒãžããªãã£ãããã移æ€ããå¿ èŠããããŸãããããã·ã¢èªãã±ãŒã«ã«åé¡ããããŸããããé©åãªããããé©çšããããšã§è§£æ±ºãããŸãã (泚: buildroot ã®æ°ããããŒãžã§ã³ã§ã¯ããããã®ãããã¯å¿ èŠãããŸãã)ã
zabbix ããã±ãŒãžèªäœã®ç§»æ€ã«ã€ããŠã¯å¥ã®èšäºã§èª¬æããŸãã
ãã¹ãŠããã¡ãŒã ãŠã§ã¢ (å€æŽäžå¯èœãªã·ã¹ãã ã€ã¡ãŒãž + å埩å¯èœãªæ§æ/ããŒã¿ããŒã¹ ãã¡ã€ã«) ãšããŠæ©èœããå¿ èŠããããããç¬èªã® systemd ã¿ãŒã²ããããµãŒãã¹ãã¿ã€ã㌠(ã¿ãŒã²ããããµãŒãã¹ãã¿ã€ããŒ) ãäœæããå¿ èŠããããŸããã
ã¡ãã£ã¢ã 2 ã€ã®ã»ã¯ã·ã§ã³ã«åå²ããããšã決å®ãããŸãããã·ã¹ãã ãã¡ã€ã«ãå«ãã»ã¯ã·ã§ã³ãšãå€æŽå¯èœãªèšå®ãš zabbix ããŒã¿ããŒã¹ ãã¡ã€ã«ãå«ãã»ã¯ã·ã§ã³ã§ãã
ããŒã¿ããŒã¹ã«é¢é£ããåé¡ã解決ããã®ã¯å°ãé£ããããšãå€æããŸããã ãããçŽæ¥ã¡ãã£ã¢ã«èŒããããªãã£ãã®ã§ãã åæã«ãããŒã¿ããŒã¹ã®ãµã€ãºãã䜿çšå¯èœãª RAM ãã£ã¹ã¯ã®ãµã€ãºãè¶ ããå¯èœæ§ããããŸãã ãããã£ãŠã劥åçãªè§£æ±ºçãéžæãããŸãããããŒã¿ããŒã¹ã¯ SD ã«ãŒãã® 30 çªç®ã®ããŒãã£ã·ã§ã³ã«ãããŸã (ææ°ã® SLC ã«ãŒãã®æžã蟌ã¿ãµã€ã¯ã«ã¯æ倧 000 åã§ã)ããã ããå€éšã¡ãã£ã¢ (USB ãªã©) ã®äœ¿çšãèš±å¯ããèšå®ããããŸãã HDDïŒã
枩床ç£èŠã¯ RODOS-5 ããã€ã¹ãéããŠå®è£ ãããŸããã ãã¡ãããDallas 1820 ãçŽæ¥äœ¿çšããããšãã§ããŸãããUSB ãæ¥ç¶ããæ¹ãéããŠç°¡åã§ããã
x86_64 ã®ããŒãããŒããŒãšã㊠grub2 ãéžæãããŸããã èµ·åããã«ã¯æå°éã®èšå®ãèšè¿°ããå¿ èŠããããŸããã
qemuã§ãããã°ããåŸãasus tinker boardã«ç§»æ€ããŸããã ç§ã®ãªãŒããŒã¬ã€ã®æ§é ã¯åœåãã¯ãã¹ãã©ãããã©ãŒã ã§ããããšãç®çãšããŠãããåããŒãã«åºæã®æ§æ (ããŒã defconfigãããŒãããŒããŒãã·ã¹ãã ããŒãã£ã·ã§ã³ãå«ãã€ã¡ãŒãžã®çæ) ãå²ãåœãŠããã¡ã€ã« ã·ã¹ãã ã®ã«ã¹ã¿ãã€ãº/ããŒã¿ãå«ãã€ã¡ãŒãžã®äœæãæ倧éã«åäžã«ããããšãç®çãšããŠããŸããã ãã®ãããªæºåããã£ãããã移æ€ã¯ããã«é²ã¿ãŸããã
玹ä»èšäºãèªãããšã匷ããå§ãããŸãã
çµã¿ç«ãŠæ¹
ãªããžããªã®ã¯ããŒã³ãäœæãããšã次ã®ãã¡ã€ã«æ§é ãåŸãããŸãã
[alexey@comp monitor]$ ls -1
buildroot-2019.05.tar.gz
overlay
README.md
run_me.sh
buildroot-2019.05.tar.gz - ã¯ãªãŒã³ãª buildroot ã¢ãŒã«ã€ã
overlay ã¯ãexternal-tree ã®ããç§ã®ãã£ã¬ã¯ããªã§ãã ããã«ã¯ã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 ã³ãã³ããå®è¡ããã ãã§ãã
ãã«ããå®äºãããšããã¹ãŠã®ãã«ãçµæã Output/images ãã£ã¬ã¯ããªã«ä¿åãããŸãã
[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 ã«ãŒãã«èšé²ããããã®ã¡ãã£ã¢ ã€ã¡ãŒãž (wibdows ã® dd ãŸã㯠rufus çµç±)ã
- qemu.qcow2 - qemu ã§å®è¡ããã¡ãã£ã¢ ã€ã¡ãŒãžã
- external.qcow2 - ããŒã¿ããŒã¹ã®å€éšã¡ãã£ã¢ã€ã¡ãŒãž
- Monitor-0.9-beta.tar.gz - Web ã€ã³ã¿ãŒãã§ãŒã¹çµç±ã§æŽæ°ããããã®ã¢ãŒã«ã€ã
ã¬ã€ãã®çæ
åãåœä»€ãäœåºŠãæžã䟡å€ã¯ãããŸããã ãããŠæãè«ççãªã®ã¯ãããŒã¯ããŠã³ã§äžåºŠæžããŠãããããŠã³ããŒãçšã« PDF ã«å€æããWeb ã€ã³ã¿ãŒãã§ã€ã¹çšã« 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 ãžã®ç§»è¡ã掻çºã«è¡ãããŠãããç§ãããããå¿
èŠããããŸããã
å¬ããé©æ°ã® XNUMX ã€ã¯ã¿ã€ããŒã®ååšã§ãã äžè¬çã«ããããã«ã€ããŠã¯å¥ã®èšäºãæžãããŠããŸããïŒãããã«ã€ããŠã ãã§ã¯ãããŸããïŒãç°¡åã«èª¬æããŸãã
å®æçã«å®è¡ããå¿ èŠãããã¢ã¯ã·ã§ã³ããããŸãã logrotate ãå®è¡ããŠãlighttpd ãš php-fpm ã®ãã°ãã¯ãªã¢ããå¿ èŠããããŸããã é垞㯠cron ã§ã³ãã³ããæžãã®ã§ãããsystemd ã®ã¢ããããã¯ã¿ã€ããŒã䜿ãããšã«ããŸããã ãããã£ãŠãlogrotate ã¯å³å¯ãªæéééã§å®è¡ãããŸãã
ãã¡ãããç¹å®ã®æ¥ä»ã«èµ·åããã¿ã€ããŒãäœæããããšãå¯èœã§ãããç§ã¯ãããå¿
èŠãšããŸããã§ããã
ã¿ã€ããŒã®äŸ:
- ã¿ã€ããŒãã¡ã€ã«
[Unit] Description=RODOS temp daemon timer
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 - éçºã®ãããã°ã«äœ¿çšãããŸãã
ãã®ä»çµã¿
èµ·åæã«ãèšå®ã® XNUMX 段éã®åŸ©å ãè¡ãããŸãã
- settings_restore ã¹ã¯ãªããã (ãµãŒãã¹çµç±ã§) å®è¡ããŸãã åºæ¬çãªã·ã¹ãã èšå®ïŒã¿ã€ã ãŸãŒã³ããã±ãŒã«ããããã¯ãŒã¯èšå®ãªã©ïŒã埩å ããŸãã
- (ãµãŒãã¹çµç±ã§) æºåã¹ã¯ãªãããå®è¡ããŸãããã㧠zabbix ãšããŒã¿ããŒã¹ãæºåãããIP ãã³ã³ãœãŒã«ã«åºåãããŸãã
åããŠèµ·åãããšãSD ã«ãŒãã® XNUMX çªç®ã®ããŒãã£ã·ã§ã³ã®ãµã€ãºã決å®ãããŸãã æªå²ãåœãŠã®é åããŸã ããå Žåã¯ãã¡ãã£ã¢ã®ããŒãã£ã·ã§ã³ãååå²ãããããŒã¿ ã»ã¯ã·ã§ã³ããã¹ãŠã®ç©ºãé åãå æããŸãã ããã¯ãã€ã³ã¹ããŒã« ã€ã¡ãŒãž (sdcard.img) ã®ãµã€ãºãåæžããããã«è¡ãããŸãã ããã«ããã®æç¹ã§ postgresql äœæ¥ãã£ã¬ã¯ããªãäœæãããŸãã ãã®ãããæ°ããéä¿¡äºæ¥è ã«ããæåã®æã¡äžãã¯ããã®åŸã®æã¡äžããããæéãããããŸãã
å€éšãã©ã€ããæ¥ç¶ãããšãèµ·åæã«ç©ºããã©ã€ããæ€çŽ¢ãããå€éšã©ãã«ã§ ext4 ã«ãã©ãŒããããããŸãã
泚æïŒ å€ä»ããã©ã€ããæ¥ç¶ãããšã㯠(åãå€ãã亀æãåæ§ã«)ãããã¯ã¢ãããäœæããŠèšå®ã埩å ããå¿ èŠããããŸãã
RODOS 5 ããã€ã¹ã¯æž©åºŠç£èŠã«äœ¿çšããã補é å ã¯ããã€ã¹ãæäœããããã®ãŠãŒãã£ãªãã£ã®ãœãŒã¹ ã³ãŒããæäŸããŠããŸãã ã·ã¹ãã ã®é»æºããªã³ã«ãªããšãrodos ã¿ã€ããŒãéå§ããããã®ãŠãŒãã£ãªãã£ã XNUMX åããšã«å®è¡ãããŸãã çŸåšã®æž©åºŠã¯ãã¡ã€ã« /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 Web ã€ã³ã¿ãŒãã§ã€ã¹ãéããŸãã
- ãæ§æãâããã¹ããã»ã¯ã·ã§ã³ãéããŸã
- zabbix ãµãŒããŒã®è¡ã«ãããé ç®ããã¯ãªãã¯ããŸãã
- ãé ç®ã®äœæããã¯ãªãã¯ããŸã
次ã®ããŒã¿ãå ¥åããŸãã
- åå - ããªãã®è£é㧠(ããšãã°ãserverRoomTemp )
- ã¿ã€ã - zabbix ãšãŒãžã§ã³ã
- ã㌠- ããã¹
- æ°å€å
- åäœ - C
- å±¥æŽä¿åæé â å±¥æŽä¿åæéã æ®ã10æ¥
- ãã¬ã³ãä¿åæé - å€åã®ãã€ããã¯ã¹ã®ä¿åæéã æ®ã30æ¥
- æ°ããã¢ããªã±ãŒã·ã§ã³ - ãµãŒããŒå®€æž©
ãããŠãè¿œå ããã¿ã³ãæŒããŸãã
Webã€ã³ã¿ãŒãã§ãŒã¹çµç±ã§èšå®ã管ç
Web ã€ã³ã¿ãŒãã§ã€ã¹ã¯ PHP ã§æžãããŠããŸãã äž»ãªæ©èœã¯æ¬¡ã®ãšããã§ãã
- ããã€ã¹ã®ã¹ããŒã¿ã¹ã衚瀺ãã
- ãããã¯ãŒã¯èšå®ãå€æŽãã
- ãŠãŒã¶ãŒãã¹ã¯ãŒãã®å€æŽ
- ã¿ã€ã ãŸãŒã³ã®éžæ
- ããã¯ã¢ãã/埩å /åºè·æèšå®ãžã®ãªã»ãã
- å€éšãã©ã€ããæ¥ç¶ããæ©èœ
- ã·ã¹ãã ã¢ããããŒã
Web ã€ã³ã¿ãŒãã§ãŒã¹ãžã®ãã°ã€ã³ã¯ãã¹ã¯ãŒãã§ä¿è·ãããŠããŸãã ã¹ã¿ãŒãããŒãž - ããã¥ã¢ã«ã
Zabbix ã€ã³ã¿ãŒãã§ãŒã¹ ã¢ãã¬ã¹: ${ip/dns}/zabbix
管çã€ã³ã¿ãŒãã§ãŒã¹ã®ã¢ãã¬ã¹: ${ip/dns}/manage
qemuã§å®è¡äž
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 äžã®ãããã¯ãŒã¯ ã«ãŒããããã³ XNUMX ã€ã®ãã£ã¹ã¯ (ã·ã¹ãã çšã« XNUMX ã€ãš postgresql çšã«å€éšã« XNUMX ã€) ãåããã·ã¹ãã ãèµ·åããŸãã
ã€ã¡ãŒãžã¯ Virtualbox ã§å€æããŠå®è¡ã§ããŸãã
qemu-img convert -f qcow2 qemu.qcow2 -O vdi qcow2.vdi
qemu-img convert -f qcow2 external.qcow2 -O vdi external.vdi
次ã«ãããããvirtualboxã«ã€ã³ããŒãããSATAçµç±ã§æ¥ç¶ããŸãã
ãŸãšã
ãã®éçšã§ãç§ã¯ããã«äœ¿ãã補åãäœãããšã«èå³ãæã€ããã«ãªããŸãããã€ã³ã¿ãŒãã§ã€ã¹ã¯ããŸãçŸãããããŸããã (ã€ã³ã¿ãŒãã§ã€ã¹ãæžãã®ã¯å¥œãã§ã¯ãããŸãã)ãæ©èœããèšå®ãç°¡åãªè£œåã§ãã
KVM ã« zabbix-appliance ãã€ã³ã¹ããŒã«ããæåŸã®è©Šè¡ã§ã¯ããã®æé ãæ£ããããšã瀺ãããŸãã (ã€ã³ã¹ããŒã«å®äºåŸãã·ã¹ãã ã¯èµ·åããŸãã)ã ãã¶ãç§ã¯äœãééã£ãããšãããŠããŸãð
åºæïŒ habr.com