見出し画像

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の運営にも貢献できるのでよろしくお願います。