オープンソース

一覧へ

3. ログデータを入力する

本章では、OpenObserveにログデータを入力する方法について説明します。

3.1. ログデータ入力の概要

OpenObserveでは、ログ送信元のサーバやアプリケーションからログデータを送信し、OpenObserve上のStreamに保存します。保存されたログデータは、ログ検索画面から確認できます。
ログデータの入力方法には、OpenTelemetry Collectorなどのエージェントを利用する方法、fluentdやfluent-bitなどのログ収集ツールを利用する方法があります。利用する環境や収集したいログの種類に応じて、入力方式を選択します。

3.2. Streamについて

OpenObserveでは、ログデータをStreamという単位で管理します。Streamは、OpenObserveに取り込んだログやメトリクスを分類して保存する単位です。ログ送信元からOpenObserveへデータを送信すると、指定したOrganization内のStreamにログが保存されます。
Streamごとにログを分けて管理できるため、ログの種類や送信元に応じてStreamを分けることで、検索や管理を行いやすくなります。
Streamの例は以下の通りです。
Streamの作成例
Stream名 用途の例
messages Linuxの /var/log/messages を保存する
maillog メール関連ログを保存する
secure 認証関連ログを保存する
application アプリケーションログを保存する
一般的なログ管理ツールでは、ログを受け取るための受信設定を事前に作成する必要がある場合があります。一方OpenObserveでは、OpenTelemetry Collectorなどのエージェントや、fluentd、fluent-bitなどのログ収集ツールから指定したStreamへログを送信できます。
この時、送信先に指定したStreamが存在しない場合でも、ログ投入時に自動でStreamが作成されます。そのため、事前に受信先を作成しなくても、ログ送信側でOrganization名とStream名を指定することでOpenObserveへログを取り込むことができます。

3.3. OpenTelemetry Collectorを利用してログを入力する

OpenObserveでは、サーバ上のログファイルやメトリクスを収集し、OpenObserveへ送信するためのエージェントとしてOpenTelemetry Collectorを利用できます。
OpenObserveの データソース の画面に、OpenTelemetry Collectorを導入するためのコマンドが表示されています。表示されたコマンドをログ送信元サーバで実行すると、OpenTelemetry Collectorがインストールされ、OpenObserveへデータを送信するための設定が作成されます。
この時、特にOpenObserve側での事前設定は必要ありません。
_images/loginput1-1.png
送信元サーバで上記コマンドを実行すると、 otel-collector.service 、及び当サービスを動作させるための各種設定ファイルがインストールされます。
OpenTelemetry Collectorの収集対象や送信先は、 /etc/otel-config.yaml で設定します。
また、収集対象のログファイルは、 receivers の filelog に指定します。例えば、 /var/log/messages と /var/log/maillog を収集する場合は、以下のように設定します。
  • /etc/otel-config.yaml
receivers:
filelog/std:
include:
- /var/log/messages
- /var/log/maillog

複数のログファイルを指定する場合は、上記のように1つのincludeの中に複数のパスを記載します。

なお、OpenTelemetry Collectorでログファイルを収集する場合、 otel-collector.service を実行する openobserve-agent というユーザに、対象ログファイルおよび対象ディレクトリの読み取り権限が必要です。
また、エージェント導入コマンドで作成される /etc/otel-config.yaml には、systemd journalの収集先として /var/log/journal が指定されるため、当ディレクトリを作成していないサーバでは otel-collector.service の初回起動に失敗します。
そのため、 /etc/otel-config.yaml の該当箇所を以下のように変更します。
  • /etc/otel-config.yaml
receivers:
journald:
directory: /run/log/journal

上記設定を行い、 otel-collector.service を再起動すると、以下のようにOpenObserveにログを取り込むことができるようになります。

_images/loginput1-2.png

3.4. fluent-bit/fluentdを利用してログを入力する

OpenObserveでは、fluent-bitやfluentdを利用してログデータを入力することもできます。
fluent-bitやfluentdは、サーバ上のログファイルを収集し、外部のログ管理システムへ転送するためのログ収集ツールです。
fluent-bitやfluentdを利用する場合は、入力元となるログファイル、送信先となるOpenObserveのドメイン(またはIPアドレス)、Organization名、Stream名、認証情報などを設定します。
例えば、fluent-bitを利用して /var/log/messages に出力されるログをOpenObserveへ送信する際は、以下のように設定します。
  • /etc/fluent-bit/fluent-bit.conf
[INPUT]
name tail
path /var/log/messages
tag messages
read_from_head false

[FILTER]
name grep
match messages
regex log <検索文字列>

[OUTPUT]
name http
match messages
host <OpenObserveサーバIPアドレス>
port 5080
uri /api/<Organization名>/<Stream名>/_json
format json
http_user <OpenObserveのユーザ>
http_passwd <OpenObserveのパスワード>
設定例で使用している主な設定値は、以下の通りです。
fluent-bit.confの主な設定値
セクション 設定値 説明
INPUT name 入力プラグインを指定します。ログファイルを読み取る場合は tail を指定します。
INPUT path 収集対象のログファイルのパスを指定します。例では /var/log/messages を指定しています。
INPUT tag fluent-bit内部でログを識別するための名前を指定します。 OUTPUT や FILTER の match で、このTagを指定します。
INPUT read_from_head fluent-bit起動時に、ログファイルの先頭から読み込むかどうかを指定します。 false の場合、基本的には起動後に追記されたログが送信対象になります。
FILTER name フィルタプラグインを指定します。ログ内容で絞り込む場合は grep を指定します。
FILTER match フィルタ対象とするTagを指定します。例では messages Tagのログを対象にしています。
FILTER regex 指定したフィールドに対して、正規表現で一致条件を指定します。 regex log openobserve-test の場合、ログ本文に openobserve-test を含むログだけを残します。
OUTPUT name 出力プラグインを指定します。HTTPでOpenObserveへ送信する場合は http を指定します。
OUTPUT match 送信対象とするTagを指定します。例では messages TagのログをOpenObserveへ送信します。
OUTPUT host OpenObserveサーバのホスト名またはIPアドレスを指定します。
OUTPUT port OpenObserveの待ち受けポートを指定します。標準では 5080 を指定します。
OUTPUT uri OpenObserveのログ投入APIのURIを指定します。 /api/default/messages/_json の場合、 default Organizationの messages Streamへ送信します。
OUTPUT format 送信するデータ形式を指定します。OpenObserveへJSON形式で送信する場合は json を指定します。
OUTPUT http_user OpenObserveへ送信する際に使用するユーザを指定します。
OUTPUT http_passwd OpenObserveへ送信する際に使用するパスワードを指定します。
match は、ログ本文に含まれる文字列ではなく、fluent-bit内部で付与された tag に対する条件です。ログ本文に含まれる文字列で絞り込みたい場合は、FILTERセクションの regex を使用します。
上記設定の場合、fluent-bitサービス起動後、ログ送信元サーバ内の /var/log/messages に regex log <検索文字列> で指定した検索文字列を含むログをOpenObserveに送信することができます。
_images/loginput2-1.png

3.5. その他の入力方式

OpenObserveでは、OpenTelemetry Collector、fluent-bit、fluentd以外にも、環境に応じた入力方式を利用できます。例えば、Kubernetes環境のコンテナログや、メトリクス、トレースなどのデータをOpenObserveへ送信することもできます。
ただし、すべてのログ送信方式をOpenObserveが直接受け取れるわけではありません。
例えばSyslogについては、OpenObserve本体で直接受信する方式は非推奨となっています。そのため、Syslog形式のログを取り込む場合は、Syslogを受信できるログ収集ツールを経由し、OpenObserveへ送信する構成を検討する必要があります。
また、SNMP Trap、Windows Event Logの転送、GELF、RELPなど、ログ送信元で利用される形式やプロトコルによっては、OpenObserveが直接受信する方式として利用できない場合があります。このようなログをOpenObserveへ取り込む場合は、OpenTelemetry Collector、fluent-bit、fluentdなどのログ収集ツールで受信・変換し、OpenObserveが対応する形式で送信します。
サーバ上のログファイルを継続的に収集してOpenObserveへ送信する場合は、OpenTelemetry Collector、fluent-bit、fluentdなどのエージェントやログ収集ツールを利用する方法が基本的です。
これらを利用することで、ログファイルの監視、追記されたログの収集、OpenObserveへの送信を継続的に行うことができます。
一覧へ