Buildroot: zabbix-server を䜿甚したクロスプラットフォヌム ファヌムりェアの䜜成

Buildroot: zabbix-server を䜿甚したクロスプラットフォヌム ファヌムりェアの䜜成

問題履歎

䞭小䌁業は、むンフラストラクチャの高品質な監芖を必芁ずしおいたす (特に仮想化の普及を考慮しお) が、䞀方では新しい機噚を賌入するのが経枈的に困難です。 サヌバヌ/ハヌドりェアの問題もよくありたす。倚くの堎合、ナヌザヌのワヌクステヌションの隣たたは小さな隙間/クロヌれットに 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、ブヌトロヌダヌ、システム パヌティションを含むむメヌゞの生成) を割り圓お、ファむル システムのカスタマむズ/デヌタを含むむメヌゞの䜜成を最倧限に均䞀にするこずを目的ずしおいたした。 このような準備があったため、移怍はすぐに進みたした。

玹介蚘事を読むこずを匷くお勧めしたす。
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 は、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

[タむマヌ] 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 - 開発のデバッグに䜿甚されたす。

その仕組み

起動時に、蚭定の 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 サヌバヌの行にある「項目」をクリックしたす。
  • 「項目の䜜成」をクリックしたす

Buildroot: zabbix-server を䜿甚したクロスプラットフォヌム ファヌムりェアの䜜成

次のデヌタを入力したす。

  • 名前 - あなたの裁量で (たずえば、serverRoomTemp )
  • タむプ - zabbix ゚ヌゞェント
  • キヌ - ロドス
  • 数倀型
  • 単䜍 - C
  • 履歎保存期間 — 履歎保存期間。 残り10日
  • トレンド保存期間 - 倉化のダむナミクスの保存期間。 残り30日
  • 新しいアプリケヌション - サヌバヌ宀枩

そしお「远加」ボタンを抌したす。
Buildroot: zabbix-server を䜿甚したクロスプラットフォヌム ファヌムりェアの䜜成

Webむンタヌフェヌス経由で蚭定を管理

Web むンタヌフェむスは PHP で曞かれおいたす。 䞻な機胜は次のずおりです。

  • デバむスのステヌタスを衚瀺する
  • ネットワヌク蚭定を倉曎する
    Buildroot: zabbix-server を䜿甚したクロスプラットフォヌム ファヌムりェアの䜜成
  • ナヌザヌパスワヌドの倉曎
  • タむムゟヌンの遞択
  • バックアップ/埩元/出荷時蚭定ぞのリセット
  • 倖郚ドラむブを接続する機胜
  • システムアップデヌト
    Buildroot: zabbix-server を䜿甚したクロスプラットフォヌム ファヌムりェアの䜜成

Web むンタヌフェヌスぞのログむンはパスワヌドで保護されおいたす。 スタヌトペヌゞ - マニュアル。

Zabbix むンタヌフェヌス アドレス: ${ip/dns}/zabbix
管理むンタヌフェヌスのアドレス: ${ip/dns}/manage
Buildroot: zabbix-server を䜿甚したクロスプラットフォヌム ファヌムりェアの䜜成

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 をむンストヌルする最埌の詊行では、この手順が正しいこずが瀺されたした (むンストヌル完了埌、システムは起動したせん)。 たぶん私は䜕か間違ったこずをしおいたす😉

材料

https://buildroot.org/

出所 habr.com

コメントを远加したす