ページビューの合計

2019年3月25日月曜日

ノーツでサーバーの #サービス監視

This time, I applied the logon management app that was created the other day, and tried to finish it as a service monitoring app for the server.

みなさま、こんにちは!!

curl にはまった筆者です。

今回は先日の「ログオン管理」を応用して、サーバーのサービス死活監視を開始致しましたので、その方法を紹介致します。

実は弊社で使用しているとあるサーバーなのですが、かなり負荷が大きいようで、時折サービスが落ちてしまうというものがあるのです。
仮想サーバーですので、リソースが潤沢にあればそちらを割り当ててやればいいのですが、導入から4年半を経過したオンプレのサーバーですので、そうもいかず・・・
ということで、根本解決には至らないのですが、サービスの死活監視を行うというものを作ってみたというのが背景になります。

取り急ぎ監視するサーバーのCドライブにcurlをインストールします。
手順はお手数ですが、先の「ログオン管理」をご確認ください。

次に監視するバッチファイルです。
対象サーバーに以下の記述を行ったバッチファイルを作成します。

その前に対象となるサービスの名前を確認しなければなりません。
対象サーバーのコマンドプロンプトで以下を実行し、名前を確認します。


 sc getkeyname **名前**


例えば"DHCP Client"ならば、


 sc getkeyname "DHCP Client"


と実行します。
すると以下のような画面が表示され、名前が"Dhcp"であることがわかります。


その名前を利用し、以下内容のバッチファイルを作成します。
申し訳ありません、コマンド内容についてはここでは触れませんので、ご了承ください。


 @ECHO OFF
 set dt=""
FOR /F "USEBACKQ" %%i IN (`sc query ^| findstr /i "名前"`) DO @SET DT=%%i
 IF %DT%=="" GOTO error
 GOTO end
 :error
 cd c:\curl\bin
 curl -i -H "Content-type: application/json" -X POST -d  "{\"creator\":\"名前\",\"stamp\":\"サーバー名\",\"time\":\"%date% %time%\"}" -u "ノーツユーザー名":ノーツパスワード
http://サーバー名/ノーツファイル名.nsf/api/data/documents?form=log
 :end


curl部分は、前回作成したバッチファイルをそのまま転用しています。
ノーツアプリケーションもコピーして少し修正して済まそうという魂胆です。
タスクスケジューラーに「名前」のタスクが実行してなければ、error処理が発生し、curl以降が実行されるというものです。

ちなみにノーツアプリケーションのフィールドには、以下内容がセットされることになります。

 creator : サービスの名前
 stamp : サーバーの名前
 time : 日時

あとはタスクスケジューラーに毎日実行するタスクとしてこのバッチファイルを登録しておきます。

続いてノーツアプリケーションです。
先の通り、「ログオン管理」をコピーして使用します。
とは言っても、先のバッチファイル側で制御していますので、コピーするだけで既にerror処理が発生すれば、文書が追加されてきますので、テストしてみてください。

あとはビューやフォームを少しさわるだけで完成しました!!

まずはビューから


すいません、サーバー名とサービス名をぼかしたので、わかりにくいですね(汗

続いてフォームです。


結構、いい感じに仕上がっているかと思います。

それでは文書が新規作成された際に、メールを飛ばすエージェントを追加します。
新規エージェント作成にて、シンプルアクションを使用します。


シンプルアクションでは、「メールメッセージの送信」を選択し、宛先・件名・文面を記述します。
また「メッセージに文書リンクを含む」にチェックしておきます。



最後にトリガーですが、シンプルアクションではイベントでの検知ができない(?)・・・詳しい方、フォローお願いします。
また今回は1日1回9時にバッチファイルを実行するイベントとして設定したため、「一日一回以上」のスケジュールとして、登録しました。


エージェントの実行間隔を23時間とし、有効時間帯を9:30~9:50としましたので、おそらくは、

 9:00 タスク実行・・・サービスが起動していない場合、ノーツデータベースに文書が追加される
 9:30 エージェント実行・・・文書が追加されていた場合、文書リンクのついたメールが送信される⇒次回起動予定は翌8:30ですが、有効時間帯の9:30を待ってエージェントが実行される

というイメージになります。

今回届いたメールは以下のような感じになります。



以上で組み込みは完了となります。

テストは9時前に意図的にタスクを落としてノーツに文書が追加され、メールが発信されるかどうかを2日続けて実施する必要があります。

なお実際の運用では、サービスダウンを検知した際に、該当のサービスを起動する記述をバッチファイルに組み込めば、検知後にサーバーにログインしてサービスを起動するという必要もなくなります。
ただ自動で再起動してしまうと、落ちていたことを知る機会がログを見なければなりませんので、このようなノーツアプリケーションへの連携は効果があると考えます。

また今回は1日1回としましたが、さらに細かく監視したいという場合もあるかと思います。
その場合はタスクスケジューラーに必要間隔で登録し、エージェントの間隔も考慮すれば、ある程度は細かく対応できるようになります。

以上、あまりにも簡単なのですが、まだまだ使い方は増えそうですよね。
また何か思いついたら紹介させて頂きます。


2019年3月11日月曜日

#LIVENESS #AccessView データ活用

I would like to develop the data acquired by LIVENESS AccessView introduced in the previous article in BI and evaluate the degree of utilization.

みなさま、こんにちは!!

先週末にLIVENESS AccessView の製品概略とインストール手順を記載致しましたが、せっかくですので今回は得られたデータをBIに展開してみようと思います。

早速ですが、2月27日よりログ取得開始した弊社の「取得済ログの参照」画面です。


設定では2Mごとにファイルを作成するようにしておりましたが、現在は3つ目のログファイルが作成され、書き込まれ続けている状態のようです。

監視しているアプリケーションは途中で増やしながら、現在6個です。


なお出来上がったログファイルを直接エクスプローラーで確認したものが下記になります。


今回はノーツアプリケーションを使わず、BIサーバーへログファイルをコピーして使ってみます。

弊社で使用しているBIツールはQlikSenseになりますが、こちらを紹介する記事ではございませんので、詳細は割愛させて頂きます。

まずは一覧です。
以下のように設定したフィールド、アプリケーションタイトルのほか、ユーザー名やレベル(Create、Open、Update、Delete)、UNIDも取得されていました。


アプリケーションごとに[Field_1][Field_2]・・・に設定したものが異なりますので、ちょっとこのままではわかりにくい状態かと思います。

【掲示板(業務)】だけに絞ってみました。


見やすくなりましたね。
これならいろいろと使えそうです。

続いていくつかチャートにしてみました。


左の棒グラフはアプリケーション別のアクセス推移です。
さすがに日報がダントツに多いことがわかりますね。

右上の円グラフはユーザー別アクセス数(トップ10のみの表示)
右下がユーザー別アプリケーション別の分布図になります。

続いて日報に限定した担当者/レベルのピボットテーブルです。


この画面では全員が[Open]を行っていますが、半数ほどが[Create]していない・・・つまり日報を書いていないということが判明します。
もっとも全社員が対象になっているため、内勤者が半数いるとするとそれなりに活用されていると判断できるかと思います。

たとえばフィールドにカテゴリなどを設定すると、さらにおもしろいチャートが得られそうです。

実際に使用してみて感じたことです。

  • アプリケーションを指定できる点は大きなメリットと感じました
  • フィールドが指定できる点もメリットではありますが、できればログファイルがアプリケーションごとに分割されているとエクセルでも簡単に分析できていいかもしれません。
  • サーバーの負荷も気になりますが、この程度の量でしたらまったく影響ありませんでした。但しアプリケーション数を増やすことにより、どうなるのかは検証してみる必要があるかと思います。
  • 弊社では全ユーザーが削除権限を与えられていないため、今回検証はできませんでしたが、こちらも有効な機能かと思います。
  • アクセス数だけでなく、作成数、編集数でユーザーのレベル監視もできそうです。(閲覧のみのユーザーにも、作成等作業を促す)
  • 日報についても他人の日報を見ないユーザーが特定できたため、活用方法などを教えるヒントになりました。
  • 10個のフィールドの選択をしっかり選定することで、質のいいログが得られます。

以上、使い始めて1週間程度ではありますが、当初考えた以上の効果が得られたと感じています。
単なるログですと、なかなか活用までには至らないのですが、本製品はログファイルの活用を前提とした設定を行うことができ、今まで見えなかった考察を得ることができるツールです。

先にも書きましたが、ご興味ございましたら、株式会社ライブネス様へお問い合わせください。
本製品以外にも魅力的な製品がありますので、きっとノーツの価値を上げて頂けるはずです。

2019年3月8日金曜日

#LIVENESS #AccessView 試用レポート

This time I am reporting from Liviness, famous for the portal, I could try out the new product called "LIVENESS AccessView", so I will report it.

みなさま、こんにちは!
本来ですとそろそろ三寒四温と、季節の移り変わりを楽しむような時期になのですが、神戸はしばらく暖かい日が続いております。
花粉症の皆様にはたいへんお辛い時期ですね。早くピークが過ぎますように。

さてこの度はポータルで有名な株式会社ライブネス様より、新製品【LIVENESS AccessView】という製品を試用させて頂くことができましたので、レポート致します。

まず製品の概要ですが、

「LIVENESS AccessView」は、Notesアプリケーションの操作ログを文書単位に取得することができる

というものになります。
但し、"Names.nsf"、"Mail.box"、"log.nsf" 等のシステム提供のファイルはサポート対象ではありません。

製品には以下のファイルが含まれております。

①ls_accessview.ntf・・・設定アプリケーションのテンプレート
②setup-AccessView-64bit-release-1.1.2.exe・・・フックドライバなるツールだそうです。
③LIVENESS AccessView_V102_ユーザーズガイド.pdf

早速ですが、インストール手順です。

①LIVENESS AccessView設定アプリケーションの準備
1. "ls_accessview.ntf"をサーバーのDominoのDataディレクトリへコピーします。
    (管理者のクライアントでも可)
2. "ls_accessview.ntf"を管理者IDで署名
3. テンプレートから設定アプリケーションを新規作成(ファイル名は任意)
4. アクセス制御リスト(ACL)を以下のように設定
  -Default-:なし
  Anonymous:なし
  管理者ユーザー(グループ):管理者(文書の削除にもチェック)
5. 以下ふたつのエージェントを有効化
  13.Logファイル添付(私はスケジュールを1時間間隔としました)
  21.アクセス集中アラート(私はスケジュールを28分間隔としました)
  ※エージェントの実行場所を自社サーバーに変更する必要があります。
※13.Logファイル添付については、アプリケーションにログ添付をしない場合、有効化は不要

以上で設定アプリケーションの作成が完了しました。
続いてフックドライバをノーツサーバーにインストールします。

②setup-AccessView-64bit-release-1.1.2.exeをノーツサーバーにインストールします
※32bit OSの場合は別のモジュールになります。
1. Domino Serverを停止・・・※1
2. インストーラーを実行
3. Dominoのプログラムディレクトリを指定
4. 設定アプリケーションのファイル名を指定
5. インストール ⇒ 数秒でインストールが完了します。・・・※2
6. Domino Serverの起動

とスムーズにいけば何の問題もないのですが、私はふたつひっかかりました。

※1 Domino Serverの停止なのですが、コンソールでQ+Enterで停止してからインストーラーを動かしたのですが、エラーになりました。
タスクマネージャーで確認すると、複数のDomino関連タスクが存在していましたので、こちらですべて停止し、インストールすることで解決しました。

※2 必要なdllがありませんでした。
以下のように、api-ms-win-crt-stdio-l1-1-0.dllがないというエラーが発生しました。


ということで調べたところ、以下サイトでダウンロードできることが判明しました。

http://www.microsoft.com/ja-JP/download/details.aspx?id=48145


こちらをインストールした上で、再実行することで無事インストールが完了しました。

正しくインストールが完了した場合、Dominoサーバーのnotes.iniに以下の2行が追加されることで確認できます。


 NSF_HOOKS=avhdrv
 LIVENESS_AccessView_LogSettingsDbPath=設定ファイル名.nsf


7. Dominoサーバーのセキュリティ設定
  「LIVENESS AccessView」アプリケーションを署名するユーザーが、Dominoサーバー文書の「制限付きLotusScript/Javaエージェントの実行」欄に指定されている必要があります。


③アプリケーションの設定
 ①で作成しました「LIVENESS AccessView設定アプリケーション」に設定を行います。
1. メニュー > アプリケーションの設定を選択し、[作成]をクリック
2. ログの保存先、ログファイル名、ログファイルの拡張子、ログの最大サイズを指定します。
 私は、
 ログの保存先:D:\LOG
 ログファイル名:AccessViewLog(デフォルト値)
 ログファイルの拡張子:csv
 ログの最大サイズ:2048 KB
 としました。



3. アラートメールの設定
 こちらについては送信先として管理者である私を選択しました。
 その他の項目については今回省略させて頂きます。

④監視対象アプリケーションの登録
1. メニュー > 監視アプリケーションを選択し、[作成]をクリック
2. 対象とするアプリケーションを選択し、条件式でフォームを指定するとフィールドが選択できるようになります。
3. ログ出力したいフィールドを最大10個まで選択します。
4. 監視イベント[読込][変更][作成][削除]をチェックして[保存・終了]をクリックします。



※削除イベントは必ず削除の前に[読込]のログが出力されます。
※データベースプロパティで、「一時的削除を許可」しておく必要があります。


正しく設定されますと、監視対象アプリケーションに、選択したアクションが生じるごとに指定したフォルダにログが追加されていきます。


また先の"13.Logファイル添付"エージェントを有効にしていると、アプリケーションの
メニュー > 取得済ログの参照 を選択すると、ログファイルが添付ファイルとなっている文書が蓄積されはじめます。



実際に出力されたファイルをエクセルで開くと、以下のようになっています。


小さくで見にくいのですが、
[Server][Database Path][Database Title][Data/Time][Username][Note ID][Universal Note ID][Level][Form][Field_1][Field_2]・・・
という項目が収集されています。
フィールドは指定された内容が記録されるため、編集履歴としても利用できそうです。

以上、今回は LIVENESS AccessView のご紹介とインストールまでを書かせて頂きました。
せっかくですので、収集されたログファイルの活用について、次回記載させて頂こうと予定しています。

なお製品に関するお問い合わせや、デモのご依頼などについては、直接株式会社ライブネス様へお問い合わせください。