Introduction to log streamingで公開されているLog Streamingについてのドキュメントを読んで、いくつかコメントとメモ書きを残す。
この記事は2023/12/23に読んだドキュメントについてのもの。また、現時点ではO11のみで利用可能な機能で、かつアドオンが必要(=たぶん追加費用?)。
読んでいる時点でのドキュメント構成
Table of Contents
全体的な感想
恐らく、(OutSystems Cloudの新機能であるLog Separationを使っていることから)OutSystems Cloud専用機能のようだ。
この機能は(現状では)OutSystems 11用だが、連携されるログはODCで言えば、LogsとTracesに出力されているもの(未実装のクライアントTraceも含めて)。よって、ODCでこの機能がリリースされるときも、LogsとTracesに出力されるのと同じ情報が連携されるのではないだろうか。ドキュメントを読んだ限り、Windowsのパフォーマンスカウンタでとるような情報は含まれていないように見えた。
OutSystems 11の場合、ログ関係Entityが公開されていることから、多くの環境でログレコードのコピーやバックアップはすでに実装済みと思われる。よってあえて、Log Streamingを利用しなければならないケースは、例えば
- 標準で使っているAPMツールがあり、そちらに集約したい
- ログの発生頻度やデータ量が多く、適当に作ったRDBに保存するのはしんどい
ようなケースだろうか。
Introduction to log streaming
Log Streamingはログデータをほぼリアルタイムで外部のツールに連携する仕組み。
Log StreamingにはOpenTelemetry Protocolの標準に従っている。
プロセスは以下の通り
- アプリケーションとプラットフォームがログデータを生成する
- ログがOpenTelemetry Protocolのフォーマットに変換される
- 変換されたデータをProtocol Bufferの形式でHTTP/gRPCで送信する。100msごとに複数レコードをまとめて送信する(圧縮はされない)。1つのメッセージのサイズは1100バイト-1700バイト。送信先が受け取れないとき最大48時間までリトライが行われる
APM (Application Performance Monitoring)ツールの中でサポートしていると明記されているのは
- Elastic Cloud
- New Relic
- Splunk
- Datadog
- Dynatrace
Streaming log data
使いたいAPMツールがOpen Telemetryのデータを受け取る事ができない場合、「OpenTelemetry Collector」をセットアップする。OpenTelemetry Collectorのダウンロード先はOpenTelemetryのgithubレポジトリなので、OutSystems専用のツールというわけではなさそう。
APMとの接続の設定はLifeTimeで行う。設定項目は、URL(APMサーバーのURLか、APMツールがOpen Telemetryに直接対応していないならOpenTelemetry CollectorのURL)と認証情報。
Logged data fields
ログデータのスキーマを、対応するログの種類ごとに列挙しているページ。
対応するログの種類は、以下の通りで、Log data referenceに挙げられたログ用のView全てからdeprecatedなものを除いたもの。
- General
- Error
- Request event
- Cyclic job
- Extension
- Integration
- Integration detail
- Mobile request
- Mobile request detail
- Screen
- Service Action
- Service API detail
Configuring the log streaming service in LifeTime
Elastic Cloudの場合を例に、設定手順をスクリーンショット付きで紹介している。
LifeTime > Environmentsの下の方(環境リストよりも下)に「LOG STREAMING」という項目が増えるようだ。
ログデータを送り出す環境(開発とか本番とかのこと)を選択できる。
各APMツールごとに前提条件や設定手順を示したサブページがあるが、以下の前提条件は共通だった。
OutSystems CloudのLog Separation
オンプレミスではすでに利用可能だった、ログDBをアプリDBから分離する機能をOutSystems Cloudにも提供するもの。Platform Server 11.23.1から。既存顧客がこの機能を有効化するにはサポートにチケットで依頼する。
データを格納する段階で、Open Telemetryに対応した形にするようだ。
また、格納先も通常とは異なる(Data Platform。具体的に何なのかは書いてないが)。
恐らく、そのために、ログテーブルへの直接アクセスができなくなり、PlatformLogs Extension (直近2週間分のログEntityへのアクセスを提供する)も使えなくなる(代わりにCentralizedPlatformLogs Extensionがあるが、提供されているのはEntityではなくActionに見える)。