サービスログ
「サービスログ」パネルでは、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 列目が名前空間です。
運用プラットフォームの 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 を追加でデプロイします。以下を参照してください |
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 つのパネルの詳細は、ログ検索を参照してください。