Proxmoxでサーバ構築

イメージ
これまでテスト用にi5第8世代の廃棄PCを使用してきた。 とはいえ今の所何も問題は起きていないが、入れ替えも視野に入れ予備サーバを用意することに。 - メモリ:16GB - SSD:500GB - DDNS+Let's Encrypt - Ubuntu24.04 この環境なので、すぐに構築し直すことは可能だが、とりあえずこのまま置いておいて別のサーバを立てることにする。 最初はRaspberryPiで構築しようと思ったけれど、本体電源+外付けHDD電源+ディスプレイ電源と考えると、邪魔なので廃案。 そこで廃棄しようと思っていた「Lavie NS300/N」が手元にあったので、これを利用することに。 一応バッテリーは正常に動作するので、UPS代わりにそのまま。 - Core™ i3-8145U(やや非力) - メモリ:8GB(少ないが…) - HDD:1TB なので、これまで使用しているものより、若干スペックダウン。 ただ用途は、非常勤で教えに行っている専門学校生用の練習マシンとする予定なので、まぁ問題なさそう。 Proxmox導入 直接、Linuxを導入してもよいのだけれど、今回は Proxmox を導入し、その上でUbuntu Serverを動作させる計画。 USBにProxmoxのイメージを焼いて、インストールすれば問題なく完了。 ただ、現在のバージョンはdebian - trixieがベースになっているので、若干参考になるサイトが少なめ。とはいえ旧版のは参考になるので調べつつ… HDDなだけあって、最初の起動は少し遅いものの、立ち上がってしまえば問題ない。 さぁ、VMにするかCTにするか…。 GUI使うのであれば、VMかなぁ。サーバだしCTでいいかぁ。 という程度の選定で、CT(コンテナ)で進めることに。 - メモリ:4GB - CPU:2 - HDD:20GB(root disk) - HDD:400GB(home用) - Ubuntu24.04 という構成で進めることにした。 テンプレートを用意して、初期設定を行い起動。 まぁすんなりと入った。 液晶を閉じたら、Suspendになってしまったので、若干設定変更。 $ sudo nano /etc/systemd/logind.conf HandleLidSwitch=ignore $ sudo sy...

PHPでsnmpを叩く

snmpを実際に使ってみる

前回、「WindowsでSNMPを試す」ということで、Linuxマシン上のsnmpwalkを使用して情報を取得できることは確認した。

今回は、PHPで無理やり情報を取得してみる。

本来はPHP上のsnmp用関数を利用するのが良いのだろうが、前回snmpwalkが動作するのを確認しているので、子プロセスで動かして情報を拾ってみる。

今後、Web上に出力するとかファイルん書き込むとか、Nativeの関数もあるといううことでPHPを選択してみた。

さっくりとテストコードを書いてみる。

ターゲットは、BuffaloのNAS、「TeraStation」にしてみる。
こいつは、設定でSNMPをONにすることで、ちゃんと返してくれるらしい。

<?php

$cmd = "/usr/bin/snmpwalk";
$version = "-v2c";
$comunity = "TeraStation";
$ips = ["192.168.11.86"];
$oids = [
    "1.3.6.1.4.1.5227.27.1.3.1.3.1"=>"GB",
    "1.3.6.1.4.1.5227.27.1.3.1.4.1"=>"%"
];

foreach($ips as $ip){
    foreach($oids as $oid=>$dummy){
        $temp = exec("{$cmd} {$version} -c {$comunity} {$ip} {$oid}");
        $values[$oid] = substr($temp,strrpos($temp," ")+1);
    }
}

echo date("Y-m-d H:i:s ");
foreach($values as $key=>$value){
    echo "{$value} {$oids[$key]} ";
}
echo "\n";


コミュニティは「TeraStation」を指定する。
今後、対象が増えても良いように、IPとOIDは配列にしておく。

マニュアルを探しながら、Buffaloのサイトを検索すると、MIB(SNMPのOIDに関する情報)がダウンロードできることがわかった。

で、ディスクのサイズと、使用量のみを拾うことにした。

上記のコードを、snmp.phpとして保存し、端末で実行する。

$ php snmp.php

これで、無事に情報を拾って、画面上に出力できることがわかった。

一応、最後で 実行時の日時と、容量、使用割合を出力して終了する。

$ php snmp.php >> result.txt

とすれば、結果をresult.txtに追記する。
あとは、cronで1時間に1回とか動かしてやれば、まあ問題ないでしょう。

すべてをPHPで作らなくても、既存のコマンドとOSの機能を使えば、簡単に情報が取得できそう…。



コメント

このブログの人気の投稿

Ubuntu24.04 でGUIが死んだ

VirtualBoxが異常

MEGAにも弱点があった?