はじめに
Instana をインフラ監視ツールとして使う場面もあり、OSやミドルウェアなどのログを収集し、ログメッセージから特定のイベントを検出したいといった要件も少なくありません。
こういった要件に対して、従来の Instana では Instana Agent に加えて、OpenTelemetry(以下、OTEL)Collector を導入することで、ログ収集・ログメッセージ監視を行ってきました。
Instana リリース 1.0.302 から、OTEL Collector 関連の機能が強化され、OTEL Collector の導入や管理も Instana 管理画面で行えるようになりました。今回は リリース 1.0.302 から提供された、新しい OTEL Collector の導入方法等をご紹介します。
2種類の OTEL データ送信方法
Instana のマニュアルにも記載がありますが、OTELデータを Instana Backend に送信する方法として、以下の2形態があります。
- Instana Agent 経由の構成
アプリ・ログなど ---> OTEL Collector ---> Instana Agent ---> Instana Backend - OTEL Collector から直接送信する構成
アプリ・ログなど ---> OTEL Collector ---> Instana Backend
いずれの形態でもログは収集できますが、以下の点に留意が必要かと思います。
- Instana Agent 経由の構成
対象サーバーに「Instana Agent」と「OTEL Collector」が導入されている必要がある。
対象サーバーと Instana Backend 間は、443ポートのみを使用する。 - OTEL Collector から直接送信する構成
対象サーバーに「OTEL Collector」が導入されていればよい。
対象サーバーと Instana Backend 間は、4317・4318ポートを使用する場合がある。
(SaaS版の場合、利用するリージョンにより使用ポートは変わるようです。)
「2. OTEL Collector から直接送信する構成」のケースは、まだ事例としては少ないように感じます。
- Instana をお使いの場合、管理対象のサーバーに Instana Agent は導入済み。
- SaaS 版 Instana を利用する場合、対象サーバーと Instana Backend 間のインターネット接続に、4317・4318といったポートを使うのは、ネットワーク的に考慮が必要。
今回は、「1. Instana Agent 経由の構成」方法を例にご紹介します。
OTEL Collector の導入
今回は AWS 上の EC2 インスタンス(OS は Ubuntu 24.04.3 LTS)に、導入・設定する方法をご紹介します。なお、Instana Agent は導入済みの状態からご紹介します。
従来 OTEL Collector は、OpenTelemetry の公式サイトからダウンロードする必要がありましたが、Instana の管理画面「データ・ソース」メニューから導入することが可能です。
現在 Instana が提供している OTEL Collector は Linux 版のみのようです。Windows など他のOSは、従来通り OpenTelemetry の公式サイトから入手してください。
導入対象サーバーで、ワン・ライナー と呼ばれる、1行のコマンドを実行します。(赤枠)
また、OTEL Collector の設定ファイルの内容も、表示してくれています。(青枠)
ここで注意点となりますが、赤枠部分の標準のワン・ライナーを実行して導入し、青枠部分の設定ファイルの内容を適用すると、「2. OTEL Collector から直接送信する構成」で導入・設定されます。
「1. Instana Agent 経由の構成」で導入する場合は、ワン・ライナーの最後に「-u false」オプションを追加して実行してください。
このオプションで Instana Supervisor Service を無効化します。ログ収集には不要です。
curl -Lo setup.sh https://github.com/instana/instana-otel-collector/releases/latest/download/instana-collector-installer-latest.sh && chmod +x setup.sh && ./setup.sh -a XXXXXXXXXXXXXXXXXXXXXX -e otlp-grpc-mizu-saas.instana.io:443 -H otlp-http-mizu-saas.instana.io:443 -u false
導入後に、OTEL Collector サービスは起動状態になります。
この後 Instana Agent 経由のデータ送信とログ管理の設定を行うため、一度 OTEL Collector サービスを停止します。サービスの起動・停止は以下のコマンドで実行します。
# service instana-collector stop
# service instana-collector start
# service instana-collector status
Instana Agent・OTEL Collector の設定
OTEL Collector 導入後の初期設定は、「2. OTEL Collector から直接送信する構成」となっています。「1. Instana Agent 経由の構成」の設定に変更する場合は、以下2ファイルを編集・設定します。
・「/opt/instana/agent/etc/instana/configuration.yaml」ファイル
・「/opt/instana/collector/config/config.yaml」ファイル
Instana Agent「configuration.yaml」の設定
以下の設定で、Instana Agent は OTEL Collector からのデータを受信し、Instana Backend へ転送します。
(前略)
# OpenTelemetry Collector
com.instana.plugin.opentelemetry:
# # Enabled by default
enabled: true
# grpc:
# # Enabled by default
# enabled: true
# http:
# # Enabled by default
# enabled: true
(後略)
OTEL Collector「config.yaml」の設定
以下の設定で、「/var/log」配下にある log 拡張子ファイルを対象にログを収集し、ログメッセージ内に「INFO」「WARN」「ERROR」「FATAL」という文字列が含まれる場合は、該当する Severity レベルを設定します。
また Instana Agent にデータを送信します。
receivers:
filelog:
include: [ "/var/log/*.log" ]
processors:
transform:
log_statements:
- context: log
statements:
- set(severity_text, "Info") where IsMatch(body.string, ".*INFO.*")
- set(severity_text, "Warn") where IsMatch(body.string, ".*WARN.*")
- set(severity_text, "Error") where IsMatch(body.string, ".*ERROR.*")
- set(severity_text, "Fatal") where IsMatch(body.string, ".*FATAL.*")
exporters:
otlp:
endpoint: "localhost:4317"
tls:
insecure: true
service:
pipelines:
logs:
receivers: [filelog]
processors: [transform]
exporters: [otlp]
なお、OTEL Collector の設定は、以下URLを参照にしてください。
ログが収集されると、Instana の管理画面「Logs」メニューから、ログの受信状況を確認できます。
Apache のログを収集する
HTTPサーバー「Apache」のログを収集する方法をご紹介します。
Instana Agent が導入されている環境では、定期的に Instaan Agent が Apache にアクセスするため、「access.log」に以下のログメッセージが1秒間隔で出力されます。
127.0.0.1 - - [12/Sep/2025:10:31:28 +0000] "GET /server-status?auto HTTP/1.1" 200 1076 "-" "Instana Agent"
このログメッセージは取得しないようにします。またHTTPステータスコード「200」は正常なアクセスなので「Info」レベル、「404」は Not Found のため「Warn」という設定にします。
「/opt/instana/collector/config/config.yaml」ファイルを、以下の内容に変更します。
※ Apache のログが「/var/log/apach2」配下に出力される場合の設定です。
receivers:
filelog:
include: [ "/var/log/*.log", "/var/log/apache2/*.log" ]
processors:
filter:
error_mode: ignore
logs:
log_record:
- 'IsMatch(body, ".*Instana Agent*")'
transform:
log_statements:
- context: log
statements:
- set(severity_text, "Info") where IsMatch(body.string, ".*INFO.*")
- set(severity_text, "Warn") where IsMatch(body.string, ".*WARN.*")
- set(severity_text, "Error") where IsMatch(body.string, ".*ERROR.*")
- set(severity_text, "Fatal") where IsMatch(body.string, ".*FATAL.*")
- set(severity_text, "Info") where IsMatch(body.string, "\\s200\\s")
- set(severity_text, "Warn") where IsMatch(body.string, "\\s404\\s")
-
exporters:
otlp:
endpoint: "localhost:4317"
tls:
insecure: true
service:
pipelines:
logs:
receivers: [filelog]
processors: [filter, transform]
exporters: [otlp]
Apache に正常な接続と、わざと存在しないページに接続した結果です。
正常な接続は「Info」レベル、存在しないページへの接続は「Warn」レベルで取得できました。Instana Agent から1秒間隔の接続は除外されています。
まとめ
OSやミドルウェアのログを収集する機能は、インフラ監視の重要な要件で利用者は多いと思います。OTEL Collector の導入が、Instana 管理画面から提供されたことにより、より使いやすくなったのではないかと思います。
Windows・macOS 等の対応は、「Coming soon...」となっているため、早期に提供されることを期待しましょう!