純粋なMS SQLでのWindowsサーバーの監視と、それを密かに実装する方法

かつて、遠く、遠くの銀河で、長い間スタートアップから成長した会社がありましたが、それでも非常にコンパクトで効率的でした。 同社は(ハードウェア上で)何百ものWindowsサーバーをホストしており、これを何らかの方法で監視する必要がありました。 私がそれに来る前でさえ、NetIQがソリューションとして選ばれました。



NetIQをセットアップするように指示されましたが、NetIQをセットアップする前に、NetIQをセットアップした人は一言も言いませんでした。 印刷済み。 すぐにその理由に気付きました。 スティーブ・ジョブズは恐らく墓の中で回転していて、同様のインターフェースを見ています:



画像






1行で、「鳥」のロジックはポジティブです(イベントを発生させます)。 別のネガティブ(イベントを発生させない)。 「イベントを発生させるのはいつ」が異なるチェックボックスのセットでどのように機能するか私は一般に実験的にしか理解していませんでした(そしてすでに忘れていました)。



ただし、NetIQのはるかに悪い機能はその脆弱性でした。 各サーバーにインストールされたエージェントは、Windows自体よりも著しく脆弱でした。 メモリが足りませんか? エージェントが飛び出しました。 CPU 100%? エージェントが応答していません。 ディスクに0バイトが残っています-あなたはどう思いますか? メッセージを送信するには、エージェントは最初にディスク上にファイルの形式でメッセージを作成する必要があります。



それにもかかわらず、この会社が会社によってさらに買収されるまで、彼らはどうにかそれとともに生きました。 モンスターが小さな会社を食べると、その会社は海のしずくのように溶けます。 私たちの場合、ITの基準により、私たち自身は私たちを購入した人よりもわずかに少なく、合併プロセスが非常に難しいことはすぐに明らかでした。 非常に複雑なため、しばらくはまったく触れられず、内部的にはすべてのプロセスが同じままでした。 この状態は、全能の指輪が溶岩の上に落ちた瞬間に似ていましたが、まだ溶け始めていません:









それまでの間、問題が始まったときにNetIQをバージョン7から8にアップグレードしてから9にアップグレードしました。 NetIQは、サーバー自体、メモリ、CPU、ディスク、そして最も重要なサービスの可用性など、いくつかのことを監視していました。 自己記述型サービスが自動になっている場合は、機能するはずです。 これは次のようなものであってはなりません。









ほとんどの場合、これらのイベントは、NetIQの監視を停止しました。 1週間の実験と1週間のサポート作業の後、「これはバグではなく、これは機能です」、特定の終了コードでのみアラートが生成されることがわかりました。 そして、私たちのサービスは時々コードによって落ちました。



多くの時間が経過し、ロールバックするには遅すぎました。 ご理解のとおり、重要なインフラストラクチャが監視されていないことを発見したため、すぐに...ええと...何もしませんでした。 この頃には、当社の大部分の「解散」が活発な段階に入っており、次のように見えたからです。









遠い雷、悲鳴、稲妻の音が私に届き、世界の運命が決まっているように見えました。そして、ある種の軽微な技術的問題で登っていました。



助けを待つ場所がないことに気づいた私は、NetIQのように何かがなかった場合、すべてのサーバーをバイパスし、メールを送信するサービススキャナーをすばやく書くことにしました。 あなたはおそらくPowershellを使用したと思いますか? いや あなたが手にハンマーを持っているなら、すべてが釘であり、あなたがDBAを使用し、バージョン6.0からSQLを使用しているなら、...これが何であるかを理解できるようにコードからの短い抜粋:









数時間でやった。 次の数日間にわたって、メッセージ、パラメーター、およびその他の利点の監査が行われました。 WMICコマンドについて読んだ後、停止できませんでした。 その後、霧の中で数週間。 NetIQで使用したすべてのものが書き直され、バタンと動作したときに目が覚めました。



機能はコピーされただけではありませんでした-私はすべての空想、そのようなシステムから欲しいものすべてを実現しました。 LOWDISK-ディスクの空き領域が最近どのように動作したかのグラフも表示されます-この成長が正常であるか、何かがうまくいかなかったかどうか。 十分なメモリがありません-これはグラフであり、プロセスのリストとその処理量です。w3wp.exeの場合は、アプリケーションプール名、スマートリマインダーなどをさらに仕上げます。 ちなみに、システムは、VMwareから独自にサーバーのリストを取得できます。 電話でのアラートの件名を一目見れば、何が起こっているのかを理解するのに十分です。









現代のプログラマーは抽象的に考えることに慣れているため、ディスク、メモリ、CPU、サービスなどの各状態を独自の方法で監視しながら、「サーバーに対して抽象監視スクリプトを実行し、内部の内容を気にしない」以外の監視システムを書くことはできませんユニークです。 これを「抽象的に」理解すると、それぞれのケースで同じように悪い結果を出していることになります。これが起こることです(これはSCOMからの電子メールのスクリーンショットです。









新しいシステムの大きなプラスは、それぞれエージェントレスであり、エージェントのインストールに問題がなく、クラッシュすることでした-単にそこに落ちるものは何もありませんでした。 システムは、ハンマーのようにシンプルで信頼性がありました。



次の数ヶ月、私は午前中に仕事に来て、キャンバスの前のアーティストのように私の頭脳の前に立って、いくつかのストロークを適用し、それをさらに理想的にしました。 期限がなかったので、技術的な負債は最小限に抑えられました。 ある時点で、私はまだ自分自身をやめさせました。



NetIQは引き続き動作しますが、誰もが新しいタイプのアラートを好むようになり、古いシステムをオフにすることなく、だれもが新しいシステムからのアラートに徐々に移行しました。 それまでの間、「融合」のプロセスは最終段階に入っています。









さて、おとぎ話は終わるはずだった。 私自身は、大規模な官僚的企業でこんなに楽しいことができることに驚きました。 1か月の準備の後、彼らは1週間でNetIQを消滅させ、SCOMに切り替えたと私に言った。 私はNetIQをオフにし(私はそれを非常に嫌っていたのでとてもうれしく思いました)、SCOMを待ち始めました。 しかし、指定された時間に彼はそこにいませんでした。 1週間後でも、1か月後でもありません。



SCOMはわずか6か月後に登場しました。SCOMのサーバー数とSCOMに必要なライセンス数を誰かが忘れてしまいました。 6か月後、非常に多くのシステムが私のシステムに依存するようになり、それがインベントリ、メトリックスなどを維持し始めました。 監査員にとってはSCOMがあり、本当に便利なものはすべて2番目のシステムにあります。



時々、さまざまなレベルのマネージャーが疑問に思った-これらの自動メールはどこから来たのか? 最近、私はこの記事で述べたストーリーを彼らに詳細に説明し、彼らは楽しそうに笑った。 それはまだ私にとって非常に面白いこともありますが、大規模な官僚的な会社で、多くのことを「静かにglる」ことができます。 はい、古き良き時代のように、コードを書くだけでいいです。



All Articles