🐳

セルフホストな OpenObserve を docker compose で構築する

2023/06/16に公開

お久しぶりです。

今回は、OpenObserve を docker compose で構築してみます。

OpenObserve とは

ログ、メトリクス、トレースなどの監視を 1 つのプラットフォームでできる、フルスタックのオープンソースの監視ツールです。
このツールを使うことで、フロントエンド、バックエンド、データベース、ネットワークなどを観察することができるそうです。
出典:OpenObserve

この OpenObserve は クラウドサービスとしても提供されており、無料で使うことができます。
しかし、今回は検証したい機能が有料プランに含まれているため、セルフホスティングします。

OpenObserve のセットアップ

公式のドキュメントには Windows, Mac, Linux, Docker, Kubernetes でのインストール方法が記載されています。

今回は Docker でのインストール方法を参考に、 docker compose で構築してみます。

まずはデータを保存するディレクトリと compose ファイルを作成します:

$ mkdir data
$ vim compose.yml
compose.yml
services:
  app:
    image: public.ecr.aws/zinclabs/openobserve:latest
    ports:
      - 5080:5080
    volumes:
      - ./data:/data
    environment:
      - ZO_DATA_DIR=/data
      - ZO_ROOT_USER_EMAIL=root@example.com
      - ZO_ROOT_USER_PASSWORD=Complexpass#123

root@example.com はログイン時に使用するメールアドレス、Complexpass#123 はパスワードに置き換えてください。

次に、コンテナを起動します:

$ docker-compose up -d

起動したら、ブラウザで http://localhost:5080 にアクセスします。
画像のようなログイン画面が表示されたら、先ほど設定したメールアドレスとパスワードでログインします。

ログインに成功すると次のような画面が表示されます。

あとは、ドキュメントを参考にしながら色々と試してみてください。

サンプルデータの登録

ドキュメントに従って、次はサンプルデータを登録してみます。

サンプルデータのダウンロードと解凍:

$ curl -L https://zinc-public-data.s3.us-west-2.amazonaws.com/zinc-enl/sample-k8s-logs/k8slog_json.json.zip -o k8slog_json.json.zip
$ unzip k8slog_json.json.zip

サンプルデータの JSON を API を使って登録します。
サンプルデータの登録:

$ curl http://localhost:5080/api/default/default/_json -i -u root@example.com:Complexpass#123  -d "@k8slog_json.json"
HTTP/1.1 100 Continue

HTTP/1.1 200 OK
Server: nginx
Date: Thu, 15 Jun 2023 17:13:30 GMT
Content-Type: application/json
Content-Length: 71
Connection: keep-alive
vary: Origin, Access-Control-Request-Method, Access-Control-Request-Headers

{"code":200,"status":[{"name":"default","successful":3846,"failed":0}]}

root@example.com:Complexpass#123 はログイン時に使用するメールアドレスとパスワードに置き換えてください。
成功すると、{"code":200,"status":[{"name":"default","successful":3846,"failed":0}]} のようなレスポンスが返ってきます。
先ほどの画面をリロードすると、次のように表示が変わっているはずです。

次に、サンプルデータを検索してみます。
ログページにアクセス、ドロップダウンから default を選択して、クエリボックスには match_all('error') を入力して、検索ボタンをクリックします。
すると、次のようにログが表示されます。

表示されない場合は、右上から検索対象の期間を変更してみてください。

まとめ

今回は、OpenObserve を docker compose で構築してみました。
全部入りコンテナなので、簡単に構築できて検証には便利です。
次回以降は、OpenObserve の機能を試してみたいと思います。

Discussion