(非推奨) Log Analytics を使用した Kubernetes クラスターの監視

ヒント

Azure Kubernetes Service を使用したこのチュートリアルの更新版については、「コンテナーに対する Azure Monitor (プレビュー) の概要」を参照してください。

警告

Azure Container Service (ACS) は非推奨となっています。 ACS に新しい機能が追加されることはありません。 API、ポータルのエクスペリエンス、CLI コマンド、ドキュメントはすべて非推奨としてマークされます。

Azure Kubernetes Service (AKS) は、Kubernetes の管理、デプロイ、および運用を簡素化するために 2017 年に導入されました。 Kubernetes オーケストレーターを使用する場合は、2020 年 1 月 31 日までに AKS に移行してください。 まずは、Azure Kubernetes Service への移行に関するページを参照してください。

詳細については、Azure.com で Azure Container Service の非推奨化に関するお知らせを参照してください。

Kubernetes クラスターとコンテナーの監視は重要なことであり、複数のアプリを含む大規模な運用クラスターを管理するときは特に重要です。

Microsoft または他のプロバイダーから提供されている複数の Kubernetes 監視ソリューションを利用できます。 このチュートリアルでは、Microsoft のクラウドベースの IT 管理ソリューションである Log Analytics のコンテナー ソリューションを使って、Kubernetes クラスターを監視します (このコンテナー ソリューションはプレビューです)。

この 7 部構成の 7 番目のチュートリアルでは、次のタスクについて説明します。

  • Log Analytics ワークスペースの設定を取得する
  • Kubernetes ノード上に Log Analytics エージェントを設定する
  • Log Analytics ポータルまたは Azure Portal で監視情報にアクセスする

開始する前に

前のチュートリアルでは、アプリケーションをコンテナー イメージにパッケージ化し、イメージを Azure Container Registry にアップロードして、Kubernetes クラスターを作成しました。

これらの手順を完了しておらず、手順を実行する場合は、「チュートリアル 1 - コンテナー イメージを作成する」に戻ってください。

ワークスペースの設定を取得する

Log Analytics ポータルにアクセスできる場合は、[設定]>[接続されたソース]>[Linux サーバー] に移動します。 そこでは、"ワークスペース ID" とプライマリまたはセカンダリの "ワークスペース キー" がわかります。 クラスターに Log Analytics エージェントを設定するときに必要になるので、これらの値を書き留めます。

Kubernetes シークレットを作成する

[kubectl create secret][kubectl-create-secret] コマンドを使用して、Log Analytics ワークスペースの設定を omsagent-secret という名前の Kubernetes シークレットに格納します。 WORKSPACE_ID を Log Analytics ワークスペース ID で更新し、WORKSPACE_KEY をワークスペース キーで更新します。

kubectl create secret generic omsagent-secret --from-literal=WSID=WORKSPACE_ID --from-literal=KEY=WORKSPACE_KEY

Log Analytics エージェントを設定する

次の Kubernetes マニフェスト ファイルを使用して、Kubernetes クラスター上にコンテナー監視エージェントを構成できます。 このファイルでは、各クラスター ノードで単一の同じポッドを実行する Kubernetes DaemonSet が作成されます。

次のテキストを oms-daemonset.yaml という名前のファイルに保存します。

apiVersion: extensions/v1beta1
kind: DaemonSet
metadata:
 name: omsagent
spec:
 template:
  metadata:
   labels:
    app: omsagent
    agentVersion: 1.4.3-174
    dockerProviderVersion: 1.0.0-30
  spec:
   containers:
     - name: omsagent
       image: "microsoft/oms"
       imagePullPolicy: Always
       securityContext:
         privileged: true
       ports:
       - containerPort: 25225
         protocol: TCP
       - containerPort: 25224
         protocol: UDP
       volumeMounts:
        - mountPath: /var/run/docker.sock
          name: docker-sock
        - mountPath: /var/log
          name: host-log
        - mountPath: /etc/omsagent-secret
          name: omsagent-secret
          readOnly: true
        - mountPath: /var/lib/docker/containers
          name: containerlog-path
       livenessProbe:
        exec:
         command:
         - /bin/bash
         - -c
         - ps -ef | grep omsagent | grep -v "grep"
        initialDelaySeconds: 60
        periodSeconds: 60
   nodeSelector:
    beta.kubernetes.io/os: linux
   # Tolerate a NoSchedule taint on master that ACS Engine sets.
   tolerations:
    - key: "node-role.kubernetes.io/master"
      operator: "Equal"
      value: "true"
      effect: "NoSchedule"
   volumes:
    - name: docker-sock
      hostPath:
       path: /var/run/docker.sock
    - name: host-log
      hostPath:
       path: /var/log
    - name: omsagent-secret
      secret:
       secretName: omsagent-secret
    - name: containerlog-path
      hostPath:
       path: /var/lib/docker/containers

次のコマンドを使って DaemonSet を作成します。

kubectl create -f oms-daemonset.yaml

DaemonSet が作成されたことを確認するには、次のコマンドを実行します。

kubectl get daemonset

次のような出力になります。

NAME       DESIRED   CURRENT   READY     UP-TO-DATE   AVAILABLE   NODE-SELECTOR   AGE
omsagent   3         3         3         0            3           <none>          5m

エージェントが実行状態になった後、Log Analytics がデータを取り込んで処理するまでには数分かかります。

監視データにアクセスする

Log Analytics ポータルまたは Azure Portal でコンテナー ソリューションを使ってコンテナー監視データを表示および分析します。

Log Analytics ポータルを使ってコンテナー ソリューションをインストールするには、[ソリューション ギャラリー] に移動します。 そこで、コンテナー ソリューションを追加します。 または、Azure Marketplace からコンテナー ソリューションを追加します。

Log Analytics ポータルのダッシュボードで、[コンテナー] 概要タイルを探します。 タイルをクリックすると、コンテナー イベント、エラー、状態、イメージ インベントリ、CPU とメモリの使用量などの詳細が表示されます。 さらに詳しい情報を見るには、いずれかのタイルで行をクリックするか、ログ検索を実行します。

Azure portal のコンテナー ダッシュボード

同様に、Azure Portal では、[Log Analytics] に移動してワークスペースを選択します。 [コンテナー] 概要タイルを表示するには、[ソリューション]>[コンテナー] の順にクリックします。 詳細を表示するには、タイルをクリックします。

監視データの照会と分析の詳しいガイダンスについては、Azure Log Analytics のドキュメントをご覧ください。

次のステップ

このチュートリアルでは、Log Analytics を使用して Kubernetes クラスターを監視しました。 次のタスクを行いました。

  • Log Analytics ワークスペースの設定を取得する
  • Kubernetes ノード上に Log Analytics エージェントを設定する
  • Log Analytics ポータルまたは Azure Portal で監視情報にアクセスする

Container Service のビルド済みスクリプト サンプルを見るには、次のリンクをクリックしてください。