8.2. Shield監視ログ収集スクリプトついて

このスクリプトはShieldの動作状態を定期的にログに出力することで、正常性確認や障害発生時に後追いでログから調査を可能とするためスクリプトとなります。

注意

本スクリプトはRel-23.13.6295-51バージョンにて作成および動作確認を行っています。

Rel-21.04.758以前のバージョンでは動作確認を行っていないため、正しく動作しない可能性があります。他バージョンにて正しく動作していない場合(ログが正しく出力されていない等)には、サポートセンターにお問い合わせください。

8.2.1. スクリプトの設置/設定方法について

1. Shield監視ログ収集用スクリプトを設置

監視ログ収集用スクリプトは全Shieldサーバに設置することを推奨します。

以下の通り、設置対象の各サーバにSSH接続を行いホームディレクトリ(~)に設置および設定を行ってください。

$ cd ~
$ curl -O https://ericom-tec.ashisuto.co.jp/shield/kka_monitoring_log.sh
$ chmod 755 ./kka_monitoring_log.sh

注意

Rancherサーバ(shield-setup.shを実行したサーバ)の場合には、必ず「~/ericomshield/」ディレクトリが存在するユーザのホームディレクトリ(~)に設置してください。

2. 設置したShield監視ログ収集用スクリプトのテスト実行

スクリプトをテスト実行して動作確認を行います。

$ ./kka_monitoring_log.sh
以下の点について動作確認を行ってください。
  • ~/kka_monitoring_logフォルダが生成されていることを確認。
  • ~/kka_monitoring_log/YYYYMMDDフォルダが生成されていることを確認。
  • ~/kka_monitoring_log/YYYYMMDDフォルダ配下にログが出力されていることを確認。

3. Cronで定期実行(5分間隔)の設定を行う

Cronのステータスを確認してサービスが起動していることを確認してください。

$ sudo service cron status

Cron実行時に実行ユーザがsudo不要でスクリプトを実行する必要があります。

以下、確認コマンドを実行してsudo不要ユーザ対象にスクリプト実行ユーザが登録されていない場合には、登録コマンドでvisudoにスクリプト実行ユーザを追加します。

確認コマンド

$ sudo cat /etc/sudoers | grep $(whoami)

・実行例(登録されている場合):

kkauser@sh11:~$ sudo cat /etc/sudoers | grep $(whoami)
kkauser ALL=(ALL:ALL) NOPASSWD: ALL

登録コマンド

$ echo "$(whoami) ALL=(ALL:ALL) NOPASSWD: ALL" | sudo EDITOR='tee -a' visudo

4. kka_monitoring_log用のCron設定ファイルを追加

以下のコマンドを実行してCron設定ファイルを追加します。

$ echo -e "SHELL=/bin/sh\nPATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin\n*/5 * * * *   $(whoami) /bin/bash /home/$(whoami)/kka_monitoring_log.sh" | sudo tee -a /etc/cron.d/kka_monitoring_log

以下のコマンドを実行してCron設定ファイルが追加されていることを確認します。

$ sudo cat /etc/cron.d/kka_monitoring_log
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
*/1 * * * *   kkauser /bin/bash /home/kkauser/kka_monitoring_log.sh

Cronを再起動して設定を反映します。

$ sudo service cron restart

5. 5分間隔で実行されてログが出力されていることを確認

以下のコマンドを実行してCronにて5分間隔で各ログファイルの更新日時が更新されて、topログファイルに追記書き込みされていることを確認してください。

$ ls -lh ~/kka_monitoring_log/`date +%Y%m%d`/
$ cat ~/kka_monitoring_log/`date +%Y%m%d`/top`date +%Y%m%d`.txt

8.2.2. スクリプトの停止/削除方法について

1. Cronで定期実行(5分間隔)の設定を削除

kka_Resource_log用のCron設定ファイルを削除します。

$ sudo rm /etc/cron.d/kka_monitoring_log

Cronを再起動して設定を反映します。

$ sudo service cron restart

2. Shield監視ログ収集用スクリプトを削除

$ rm /home/$(whoami)/kka_monitoring_log.sh

※ スクリプト実行のためにvisudoにスクリプト実行ユーザを追加しています。必要に応じて削除をお願いします。

8.2.3. Shield監視ログ収集用スクリプトの動作仕様

  • Cronにて5分間隔でスプリクトが実行されることで処理内に記載されたコマンド結果がログファイルとして出力されます。
  • ログは~/kka_monitoring_log/YYYYMMDDフォルダ配下に出力されます。
  • 翌日になると前日分YYYYMMDDフォルダはtar.gzに圧縮されて前日分YYYYMMDDフォルダは削除されます。
  • 圧縮されたtar.gzファイルはデフォルト設定で30日分保管されます。
    • 保管期限を超えた圧縮tar.gzファイルは削除されます。
    • 保管期限はスプリクト内の「keep_logs_days=30」設定を修正することで変更可能です。

8.2.4. スクリプトにより出力される各種ログの説明

ログは~/kka_monitoring_log/YYYYMMDDフォルダ配下に以下のファイル別に出力されます。

  • topYYYYMMDD.txt

    以下のコマンドを実行した結果が出力されます。

    • top -b -n 1 -o %MEM | head -n +17
  • vmstatYYYYMMDD.txt

    以下のコマンドを実行した結果が出力されます。

    vmstat --unit M -w -t

  • dockerstats_sort_MemUsageYYYYMMDD.txt

    以下のコマンドを実行した結果が出力されます。

    sudo docker stats --no-stream --format "table {{.Name}}\t{{.Container}}\t{{.CPUPerc}}\t{{.MemUsage}}" | sort -k 4 -h

  • kube_topnodesYYYYMMDD.txt(Rancherサーバの場合にのみ出力)

    以下のコマンドを実行した結果が出力されます。

    kubectl top nodes

  • kube_toppodYYYYMMDD.txt(Rancherサーバの場合にのみ出力)

    以下のコマンドを実行した結果が出力されます。

    kubectl top pod -A | sort -k 4 -h

  • kube_getnodesYYYYMMDD.txt (Rancherサーバの場合にのみ出力)

    以下のコマンドを実行した結果が出力されます。

    kubectl get node -o wide

  • kube_getpodsYYYYMMDD.txt(Rancherサーバの場合にのみ出力)

    以下のコマンドを実行した結果が出力されます。

    kubectl get pods -A -o wide

  • rancher_ps__YYYYMMDD.txt(Rancherサーバの場合にのみ出力)

    以下のコマンドを実行した結果が出力されます。

    rancher ps

  • free_smem_YYYYMMDD.txt

    以下のコマンドを実行した結果が出力されます。

    free -mh
    sudo smem -t -a -w –k
    sudo smem -s pss -r -a -k | head -n +20
    sudo cat /proc/meminfo
    sudo slabtop –once –sort=c | head -n +20

  • curl_temp.log

    本ログは「http://shield-stats/」にShieldプロキシ(3128ポート)経由でブラウザでアクセスして表示されるshield-stats結果ソースをTEMPファイルとして出力されます。

    この結果を元に以下の3つのログが出力されます。

    • Shield_Stats_InfoYYYYMMDD.txt(Rancherサーバの場合にのみ出力)

      • ライセンス使用数(user licenses in use)
      • セッションライセンス使用数(session licenses in use)
      • セッション使用数(sessions in use)
      • 待機ブラウザ数(available sessions)
      • Maxブラウザ数(maxBrowsersCapacity)

      これらの情報が出力されます。

    参考

    当日分のログからセッション使用数だけを一覧で抽出して推移を確認するコマンド

    $ cat ~/kka_monitoring_log/`date +%Y%m%d`/Shield_Stats_Info`date +%Y%m%d`.txt | grep -e "sessions in use" -e "JST 20" -e "UTC 20"
    
    • Shield_Stats_BrowserUrl_ListYYYYMMDD.txt(Rancherサーバの場合にのみ出力)

      利用されているShieldBrowserセッションのアクセス先URL情報が出力されます。

    • Shield_Stats_AlertListYYYYMMDD.txt(Rancherサーバの場合にのみ出力)

      通知(アラート)の情報が出力されます。