メインコンテンツへ移動

サービスログ

「サービスログ」パネルでは、HAP/HDP の各マイクロサービスから運用プラットフォームの Loki に送信された構造化ログを検索します。デフォルトでは送信されません。製品サービス側で書き込みを有効にしてください。

設定する変数に注意

設定が必要なのは、HAP/HDP サービス側の ENV_LOKI_URL です。運用プラットフォーム側にも同名の変数がありますが、用途が異なります。

設定場所用途変更の要否
HAP/HDP サービス側書き込みの有効化。デフォルトは空欄で、未設定の場合は Loki にサービスログを書き込みません✅ こちらを設定
運用プラットフォーム側(ops.yaml/ConfigMap)検索先のアドレス。デプロイ後はデフォルト値が設定されています❌ 標準構成では変更不要

運用プラットフォーム側の変数だけを変更しても、サービスログの書き込みは有効になりません。パネルは空のままで、通常はどちらの側にもエラーは表示されません。

手順 1:構成に応じてアドレスを設定する​

A. 製品サービスと運用プラットフォームが同じ Kubernetes クラスター内にある場合​

ENV_LOKI_URL=http://ops-loki.<運用プラットフォームの名前空間>.svc.cluster.local:3100

実際に運用プラットフォームを配置した名前空間を指定します(デフォルトのマニフェストでは hap-ops)。次のコマンドで確認できます。

kubectl get svc -A | grep ops-loki

出力の 1 列目が名前空間です。

ノードの IP を指定しないでください

運用プラットフォームの ops-loki は ClusterIP Service で、クラスター内でのみ名前解決できます。運用プラットフォームを配置したノードの IP を指定すると、503 が返るか接続に失敗します。対象が運用プラットフォームと同じノードでも、Service DNS を使用してください。

B. 同一ホスト上で、製品サービスと運用プラットフォームの両方を Docker Compose で稼働させる場合​

ENV_LOKI_URL=http://ops-loki:3100

両者が同じ Docker ネットワークに接続されていれば、サービス名を直接使用できます。

C. 運用プラットフォームが単一サーバー構成(Docker Compose)で、製品サービスが別ホストにある場合​

ENV_LOKI_URL=http://<運用プラットフォームのホストIP>:3100

ops-loki に 3100:3100 のポートマッピングを設定してください。1.5.3 以降の同梱 ops.yaml にはデフォルトで含まれています。それ以前のバージョンでは手動で追加します。

D. 運用プラットフォームが Kubernetes 構成で、製品サービスがクラスター外にある場合​

まず ops-loki に NodePort または Ingress を設定します。デフォルトの ClusterIP にはクラスター外からアクセスできません。その後、公開したアドレスを ENV_LOKI_URL に指定してください。

手順 2:製品サービスを再起動する​

変数は起動時に読み込まれるため、変更後は製品サービスを再起動してください。単一サーバー構成では docker-compose.yaml/.env、クラスター構成では対応する ConfigMap を変更します。プライベートデプロイのサービス設定は、通常 env-list に集約されています。

手順 3:接続を確認する​

① 製品サービスのいずれかのコンテナー内で、設定したアドレスへの接続を確認します。

curl -s -o /dev/null -w '%{http_code}\n' <設定したENV_LOKI_URL>/ready

200 が返れば接続できています。503 は通常、アドレス設定の誤りを示します。たとえば、構成 A でノードの IP を指定した場合に発生します。

② ログインや認証コード送信などの業務操作を行います。 マイクロサービスの処理が実行されて初めてログが書き込まれます。

③ 運用プラットフォームのログ検索を更新します。「サービスログ」パネルにログが表示されることを確認してください。

表示されない場合は、よくある質問を参照してください。

コンテナーログ​

「コンテナーコンソール」パネルは、各コンテナーの stdout/stderr を検索します。上記のサービスログとは独立しており、収集方法は構成によって異なります。

HAP/HDP の構成収集元設定の要否
単一サーバー(Docker Compose)ops-alloy が /var/run/docker.sock 経由で Docker コンテナーログを収集設定不要。デプロイ後に自動で有効になります
クラスター・PVC(k8s-cluster/)50-daemonsets.yaml の alloy-logs が Kubernetes API 経由で Pod ログを取得設定不要。マニフェストに含まれます
クラスター・hostPath(単一ファイルの ops.yaml)デフォルトでは収集しません⚠️ alloy-logs を追加でデプロイします。以下を参照してください
hostPath 構成では alloy-logs がないとコンテナーログを収集できません

ops.yaml には運用プラットフォーム本体のみが含まれ、Kubernetes の収集コンポーネントは含まれません。ops-alloy が収集するのは Docker コンテナーです。Kubernetes は containerd を使用するため、この収集処理では Pod ログを取得できません。起動ログにその旨が表示され、該当の収集処理はスキップされます。

この場合、「コンテナーコンソール」パネルにはデータが表示されず、通常はどちらの側にもエラーは表示されません。k8s-addons.tar.gz に含まれる 40-alloy-logs.yaml を適用してください。

kubectl apply -f k8s-addons/40-alloy-logs.yaml

⚠️ 適用する前に、ファイル内の ENV_LOKI_PUSH_URL を変更してください。

  • 運用プラットフォームが同じクラスター内にある場合:http://ops-loki.<運用プラットフォームの名前空間>.svc.cluster.local:3100/loki/api/v1/push を指定し、ENV_LOKI_PUSH_TOKEN は空欄にします。
  • 運用プラットフォームが別クラスターにある場合:ops-loki は ClusterIP のため、クラスター間で直接アクセスできません。ゲートウェイの http://<運用プラットフォームのアドレス>:30881/mdis/loki/api/v1/push を指定し、ENV_LOKI_PUSH_TOKEN に運用プラットフォームの ENV_OPS_TOKEN を設定します。この書き込みエンドポイントは Bearer 認証を使用し、トークンがない場合は 401 を返します。

この 2 項目が誤っていても、通常は明示的なエラーが表示されず、パネルにデータが表示されない状態になります。

2 つのパネルの詳細は、ログ検索を参照してください。