メインコンテンツへ移動

アプリケーション動作ログ

mdservicedataデータベース(MongoDB)のストレージ増加圧力を軽減するために、アプリケーション動作ログをアーカイブし、新しいMongoDBインスタンスに保存することができます。アーカイブされた履歴ログはページ上で選択し、表示することも可能です。


アーカイブ構成手順​

  1. アーカイブデータ保管用MongoDBインスタンスを事前にデプロイします

  2. イメージをダウンロードします(オフラインパッケージダウンロード)

    docker pull nocoly/archivetools:1.0.7
  3. 下記の例を参考に、config.json構成ファイルを作成します:

    [
    {
    "id": "1",
    "text": "説明",
    "start": "2022-12-31 16:00:00",
    "end": "2023-12-31 16:00:00",
    "src": "mongodb://root:password@192.168.1.20:27017/mdservicedata?authSource=admin",
    "archive": "mongodb://root:password@192.168.1.30:27017/mdservicedata_archive_2023?authSource=admin",
    "table": "al_actionlog*",
    "delete": true,
    "batchSize": 500,
    "retentionDays": 0,
    "concurrencyLimit": 100
    }
    ]
    • 上記の構成ファイルフォーマットに従って、必要に応じて設定内容を調整または追加します。
    • 注意:構成ファイルで指定する時刻は協定世界時(UTC)です。
    • UTC: 2023-05-31 16:00:00
    • UTC+8(東八区)換算: 2023-06-01 00:00:00(2023-05-31 16:00:00 + 8時間)
    • UTC: 2023-06-30 16:00:00
    • UTC+8(東八区)換算: 2023-07-01 00:00:00(2023-06-30 16:00:00 + 8時間)

    パラメータ説明:

    "id": "タスク識別子ID",
    "text": "説明",
    "start": "アーカイブ対象データの開始日時(UTC、retentionDaysが0より大きい場合は自動的に無効)。この日時以降のデータが対象になります。",
    "end": "アーカイブ対象データの終了日時(UTC、retentionDaysが0より大きい場合は自動的に無効)。この日時より前のデータが対象になります。",
    "src": "ソースデータベースの接続アドレス",
    "archive": "ターゲットデータベースの接続アドレス(空の場合はアーカイブせず、設定ルールに従ってのみ削除)",
    "table": "データテーブル",
    "delete": "true固定。アーカイブタスク完了後、記録数が正しく検証されるとソースデータベース側のデータを削除します。",
    "batchSize": "1度にアーカイブ・削除する件数",
    "retentionDays": "デフォルトは0。0より大きい場合、X日前のデータを削除し、定期削除モードが有効(日付指定は無効)、24時間ごとに実行",
    "concurrencyLimit": "同時動作制限値、通常は100のまま推奨"
  4. config.jsonファイルを配置したディレクトリで下記を実行しアーカイブサービスを開始します。

    docker run -d -it -v $(pwd)/config.json:/usr/local/MDArchiveTools/config.json -v /usr/share/zoneinfo/Etc/GMT-8:/etc/localtime nocoly/archivetools:1.0.7

その他:

  • リソース消費: プログラムの動作中はソースおよびターゲット両データベース、本プログラム動作端末に一定のリソース負荷が発生します。業務のアイドル時間帯の実行を推奨します。

  • ログ確認方法:

    • バックグラウンド実行(標準)…docker ps -aでコンテナIDを確認後、docker logs <コンテナID>でログ出力を確認します。
    • フォアグラウンド実行…-dオプションを外して実行すると、リアルタイムでログがターミナルへ出力されます。
  • 構成ファイルconfig.json内では、ターゲットDB名は「ソースDB名_archive_日付」形式で命名します。毎回実行時にアーカイブ先DB名を変更してください。

  • アーカイブ後にターゲットテーブルのデータ件数を最初に集計し、件数が一致しない場合は削除処理は行われません。2回目以降、アーカイブDB名を変更しない場合、ターゲット側の件数が多くなり、ソースデータが削除できなくなる可能性があります。

  • ディスク領域の解放: アーカイブ完了後、ソースデータベースの該当データは削除されますが、ディスク領域は即時解放されず、同一テーブルで再利用されます。


Elasticsearchの履歴データ削除​

  1. マイクロサービスコンテナにログインします
    docker exec -it $(docker ps | grep -E 'hap-community|hap:' | awk '{print $1}') bash
  2. Elasticsearchの履歴データを削除します
    source /entrypoint.sh && deleteActionlog "2022-12-31 16:00:00" "2023-12-31 16:00:00"
    • 上記コマンドの時刻範囲が、該当するアーカイブタスクで指定したものと一致していることを確認してください。

アーカイブデータの可視化設定​

  1. application-www-ext.properties構成ファイルを作成します
    例: /data/hap/script/volume/actionlog/application-www-ext.properties

    spring.data.mongodb.archive.group[0].id=0
    spring.data.mongodb.archive.group[0].text=\u5e94\u7528\u884c\u4e3a\u65e5\u5fd7-2023
    spring.data.mongodb.archive.group[0].uri=mongodb://root:password@192.168.1.30:27017/dservicedata_archive_2023?authSource=admin
    spring.data.mongodb.archive.group[0].start=2023-01-01
    spring.data.mongodb.archive.group[0].end=2023-12-31

    パラメータ説明:

    • group[0]:0で始まり、複数のアーカイブデータがある場合はインクリメント
    • id:0で始まり、複数の場合はインクリメント
    • text:ページ上で表示する名称。中国語表記の場合はUnicodeエンコード必須
    • uri:アーカイブDBの接続アドレス
    • start:アーカイブデータの開始日
    • end:アーカイブデータの終了日
  2. 構成ファイルのマウント

マイクロサービスアプリケーションのdocker-compose.yamlのvolumesに、下記を追加します:

- ./volume/actionlog/application-www-ext.properties:/usr/local/MDPrivateDeployment/actionlog/application-www-ext.properties
  1. マイクロサービスを再起動します