EVE-NGでTWSNMPのテスト5日目:Cisco Nexus 9000v(仮想スイッチ)から大量のMIBを取得してTWSNMPの問題を発見した
今朝は3時15分に、助手の猫さんが起こしてくれました。朝食の食パンが切れていたのでホームベーカリーで焼くために早く起こしてくれたのかもしれません。
昨日EVE-NGに追加したCisco Nexus 9000v(仮想スイッチ)のテストの続きです。NetFlowの設定をしようと思いましたが
# feature netflow
Netflow feature is not supported on the platform
のように最初の段階でエラーが表示されて設定できません。どうやら仮想版は対応していないようです。(もしかするとライセンスの問題かもしれません)なので、早々に諦めました。
SNMPのアクセスですが、Ciscoの拡張MIBを
から
を見つけてダウンロードしてインポートしてみました。
どのMIBに対応しているか調べて必要なMIBファイルだけインポートすればよいのですが面倒なので、extmibsフォルダーに全部コピーしました。
すると
のように大量のエラーがでました。
これは、じっくり調べようと思います。
対応しているMIBを調べるためにisoを指定して取得してみました。
6万件以上あります。
この状態で、この前作った結果MIBツリーボタンを押すと、ブラウザーが固まってしまいました。しばらくすると
が表示されました。
もう少し、処理を高速化できないか考えましたが、だめでそうです。
ページが応答しないという表示はカッコ悪いので、そこを何とかすることにしました。
最初
を参考に作ってみたのですが、うまくいきません。
なにげに
がうまくいきました。
async resultMIBTree() {
if (this.resultMibtree.length > 0) {
this.resultMibTreeDialog = true
return
}
this.resultMibTreeDialog = true
this.resultMibTreeWait = true
let i = 0
const nameMap = new Map()
for (const e of this.mibs) {
if (this.stopResultMibTree) {
break
}
if (i % 500 === 0) {
await new Promise((resolve) => {
setTimeout(resolve, 0)
})
this.resultMibTreeProgress = (100.0 * i) / this.mibs.length
}
ループの中に
await new Promise((resolve) => {
setTimeout(resolve, 0)
})
を混ぜる方法です。
進捗も表示されますし、中止もできました。
中止した時の表示がおかしいのを修正するのと、拡張MIBのエラーの原因を調べるのは、朝食の後にしようと思います。
そろそろ、朝仕込んだパンが焼けていると思います。
明日に続く
開発のための諸経費(機材、Appleの開発者、サーバー運用)に利用します。 ソフトウェアのマニュアルをnoteの記事で提供しています。 サポートによりnoteの運営にも貢献できるのでよろしくお願います。