(已弃用)使用 Log Analytics 监视 Kubernetes 群集

小提示

有关本教程使用 Azure Kubernetes 服务的更新版本,请参阅 用于容器的 Azure Monitor(预览版)概述

警告

Azure 容器服务 (ACS) 正在被弃用。 不会向 ACS 添加新特性或功能。 所有 API、门户体验、CLI 命令和文档都标记为已弃用。

2017 年,我们引入了 Azure Kubernetes 服务(AKS),用于简化 Kubernetes 管理、部署和作。 如果使用 Kubernetes 业务流程协调程序,请在 2020 年 1 月 31 日前迁移到 AKS。 若要开始,请参阅 迁移到 Azure Kubernetes 服务

有关详细信息,请参阅 Azure.com 上的 Azure 容器服务弃用声明

监视 Kubernetes 群集和容器至关重要,尤其是在使用多个应用大规模管理生产群集时。

您可以利用来自 Microsoft 或其他提供程序的多个 Kubernetes 监控解决方案。 在本教程中,你将使用 Log Analytics 中的容器解决方案(Microsoft基于云的 IT 管理解决方案)监视 Kubernetes 群集。 (容器解决方案为预览版)。

本教程第七部分(共七部分)介绍了以下任务:

  • 获取 Log Analytics 工作区设置
  • 在 Kubernetes 节点上设置 Log Analytics 代理
  • 在 Log Analytics 门户或 Azure 门户中访问监视信息

开始之前

在前面的教程中,应用程序已打包到容器映像中,这些映像上传到 Azure 容器注册表,并创建了 Kubernetes 群集。

如果尚未执行这些步骤,并且想要继续学习,请返回教程1:创建容器镜像

获取工作区设置

访问 Log Analytics 门户时,请转到 “设置>连接的源>Linux 服务器”。 在那里,可以找到 工作区 ID 和主工作区或辅助 工作区密钥。 请注意这些值,它们是您在群集上设置 Log Analytics 代理时需要的。

创建 Kubernetes Secret 对象

使用 [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,在每个群集节点上运行一个相同的 Pod。

将以下文本保存到名为 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 门户中使用 容器解决方案 查看和分析容器监视数据。

若要使用 Log Analytics 门户安装容器解决方案,请转到 解决方案库。 然后添加 容器解决方案。 或者,从 Azure 市场添加容器解决方案。

在 Log Analytics 门户的仪表板上查找 容器 概要图块。 单击磁贴了解详细信息,包括:容器事件、错误、状态、映像清单以及 CPU 和内存使用情况。 有关更加详细的信息,请单击任何图块上的行,或执行 日志搜索

Azure 门户中的容器仪表板

同样,在 Azure 门户中,转到 Log Analytics 并选择工作区名称。 若要查看 “容器 摘要”磁贴,请单击“ 解决方案>容器”。 若要查看详细信息,请单击磁贴。

有关查询和分析监视数据的详细指南,请参阅 Azure Log Analytics 文档

后续步骤

在本教程中,你使用 Log Analytics 监视了 Kubernetes 群集。 涵盖的任务包括:

  • 获取 Log Analytics 工作区设置
  • 在 Kubernetes 节点上设置 Log Analytics 代理
  • 在 Log Analytics 门户或 Azure 门户中访问监视信息

按照此链接查看容器服务的预生成脚本示例。