C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[5]: ネットワーク上の端末のメモリ監視


(過去ログ 51 を表示中)

[トピック内 9 記事 (1 - 9 表示)]  << 0 >>

■28038 / inTopicNo.1)  ネットワーク上の端末のメモリ監視
  
□投稿者/ ひろこ (11回)-(2008/11/19(Wed) 09:36:00)

分類:[.NET 全般] 

C#にて下記の処理を行いたいと考えております。
何か参考になる資料・ホームページ等ありましたら教えて頂けないでしょうか。
 ・ネットワーク上にある端末の特定のプロセスが使用しているメモリを監視
 ・ネットワーク上にある端末の特定のサービスの再起動

なお、動作環境はWindows限定で構いません。
よろしくお願い致します。

引用返信 編集キー/
■28042 / inTopicNo.2)  Re[1]: ネットワーク上の端末のメモリ監視
□投稿者/ .SHO (92回)-(2008/11/19(Wed) 10:30:23)
No28038 (ひろこ さん) に返信

質問が大雑把過ぎると思います。
もし、まだ初心者なのでこういう聞き方しか出来ませんという事でしたら
敷居が高過ぎると思います。
引用返信 編集キー/
■28043 / inTopicNo.3)  Re[1]: ネットワーク上の端末のメモリ監視
□投稿者/ はつね (877回)-(2008/11/19(Wed) 10:37:13)
はつね さんの Web サイト
No28038 (ひろこ さん) に返信
> 何か参考になる資料・ホームページ等ありましたら教えて頂けないでしょうか。
>  ・ネットワーク上にある端末の特定のプロセスが使用しているメモリを監視
>  ・ネットワーク上にある端末の特定のサービスの再起動

Windowsに付属のパフォーマンスモニタでネットワーク上にある別端末のプロセスごとの
メモリ監視が可能です。
どのような監視が出来るのか調べてみてはいかがでしょうか。そこに乗っているもので
あれば、その項目の名前をつかって、Webを検索すれば新しい情報を得られるでしょう。

別端末のサービスの再起動についても同様で、そのような機能を有しているソフトを調
べてその構成や方法を調べ、その過程で得られた用語で検索すれば新しい情報が得られ
ると思います。

この件はかなり多岐に渡る知識(プログラムつくれば完成という意味ではない)が必要
なものだと思います。そのため、回答するためには、もう少し具体的に、例えば上記で
書いたような用語レベルでの内容が必要になってくると思います。


引用返信 編集キー/
■28045 / inTopicNo.4)  Re[1]: ネットワーク上の端末のメモリ監視
□投稿者/ まんごーぷりん (32回)-(2008/11/19(Wed) 10:41:57)
まんごーぷりん さんの Web サイト
No28038 (ひろこ さん) に返信
> C#にて下記の処理を行いたいと考えております。
> 何か参考になる資料・ホームページ等ありましたら教えて頂けないでしょうか。

これらについては、わからないのですが「僕が作るとしたら?」という前提の話です。

>  ・ネットワーク上にある端末の特定のプロセスが使用しているメモリを監視
>  ・ネットワーク上にある端末の特定のサービスの再起動

ネットワーク上にある端末の情報や、挙動を、別の端末から容易に操作させることはセキュリティ上の問題が生じるため、ターゲットとなる端末に、外からの要求に応答する処理をするソフトウェアを常駐させておきます。

プロセスの監視や、サービスの再起動は、そのホストアプリケーションが実行します。
リモート側からは、そのホストアプリケーションに対して、要求を投げることで、メモリを監視した結果の情報をもらったり、サービスの再起動を実行を行うように作ります。

ホストとリモートとなるソフトウェアは、WCF を使うかな。
引用返信 編集キー/
■28050 / inTopicNo.5)  Re[2]: ネットワーク上の端末のメモリ監視
□投稿者/ なちゃ (205回)-(2008/11/19(Wed) 10:48:12)
詳しくないのですが、WMIとかその辺りの、ともかく組み込みの仕組みである程度のことは出来るんでないかと。
仕組みを自作することは、かえってセキュリティレベルを下げることになる場合もあるので、
第一の手段としてはあまりおすすめ出来ないんじゃないかと思います。
引用返信 編集キー/
■28051 / inTopicNo.6)  Re[1]: ネットワーク上の端末のメモリ監視
□投稿者/ 魔界の仮面弁士 (894回)-(2008/11/19(Wed) 11:02:31)
No28038 (ひろこ さん) に返信
>  ・ネットワーク上にある端末の特定のサービスの再起動

サーバー名="hoge"、サービス名="W32Time" だとした場合、
「PowerShell でよければ」下記の 3 行で再起動できました。

------
(Get-WmiObject -computer hoge Win32_Service -Filter "Name='W32Time'").StopService()
Start-Sleep -m 10000    # 10000ミリ秒待機
(Get-WmiObject -computer hoge Win32_Service -Filter "Name='W32Time'").StartService()
------

Restart-Service というコマンドレットもあるのですが、
リモートに接続できないようなので、WMI を利用しています。


上記の PowerShell コマンドと同様のことを C# で処理するとなると、たとえばこんな感じ。

using System;
using System.Management;

class Class1
{
    static void Main()
    {
        string serverName = "hoge";
        string serviceName = "W32Time";

        string wql = string.Format(
            "SELECT * FROM Win32_Service WHERE Name = '{0}'",
            serviceName.Replace(@"\", @"\\"));

        ManagementObjectSearcher searcher = new ManagementObjectSearcher(
            @"\\" + serverName + @"\root\cimv2", wql);
        foreach (ManagementObject o in searcher.Get())
        {
            // http://msdn.microsoft.com/en-us/library/aa393673.aspx
            uint resultStop = (uint)o.InvokeMethod("StopService", new object[] { });
            Console.WriteLine("StopService:{0}", resultStop);
        }
        Console.WriteLine("10秒待機");
        System.Threading.Thread.Sleep(10000);
        foreach (ManagementObject o in searcher.Get())
        {
            // http://msdn.microsoft.com/en-us/library/aa393660.aspx
            uint resultStart = (uint)o.InvokeMethod("StartService", new object[] { });
            Console.WriteLine("StartService:{0}", resultStart);
        }
    }
}


>  ・ネットワーク上にある端末の特定のプロセスが使用しているメモリを監視
こちらは WMI のイベント監視にて、Win32_Process クラスの WorkingSetSize プロパティを
参照するようにすれば良いかも。


# ってもたもたと書いているうちに、いろいろと回答が付いてる…。

引用返信 編集キー/
■28052 / inTopicNo.7)  Re[3]: ネットワーク上の端末のメモリ監視
□投稿者/ まんごーぷりん (33回)-(2008/11/19(Wed) 11:08:19)
まんごーぷりん さんの Web サイト
ネットワークに公開されているサービスの再起動で、メモリの監視ってサイズのことですか。
そうですか orz

引用返信 編集キー/
■28056 / inTopicNo.8)  Re[4]: ネットワーク上の端末のメモリ監視
□投稿者/ ひろこ (12回)-(2008/11/19(Wed) 11:55:32)
皆様、ご返信いただきましてありがとうございます。

現在、某メーカーが作成したWindowsサービスとして動作しているモジュールが時々メモリリークを起こします。
メーカー側ではパッチ等の対策をしておらず困っております。
そこで、ネットワーク経由で端末を監視し、特定のプロセスのメモリ使用量が一定レベルを超えた場合に
サービスを再起動するプログラムを作成しようかと考えております。
監視対象が複数台あるため、できればリモートで実現したいのです。
魔界の仮面弁士様のサンプルを元にWMIを利用して実現してみようかと思います。

引用返信 編集キー/
■28105 / inTopicNo.9)  Re[5]: ネットワーク上の端末のメモリ監視
□投稿者/ ちゃっぴ (158回)-(2008/11/19(Wed) 20:25:20)
ちゃっぴ さんの Web サイト
Startup script で実装したほうがいいと思いますねぇ。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -