【问题标题】:How to install Stackdriver monitoring agent in Google Container VM images?如何在 Google Container VM 映像中安装 Stackdriver 监控代理?
【发布时间】:2016-10-05 01:46:52
【问题描述】:

我遵循了这个指示 https://cloud.google.com/monitoring/agent/install-agent#linux-install

$ curl -O "https://repo.stackdriver.com/stack-install.sh"
$ sudo bash stack-install.sh --write-gcm
Unidentifiable or unsupported platform.

/etc/os-release 的内容。

$ cat /etc/os-release
BUILD_ID=8820.0.0
NAME="Container-VM Image"
GOOGLE_CRASH_ID=Lakitu
VERSION_ID=55
BUG_REPORT_URL=https://crbug.com/new
PRETTY_NAME="Google Container-VM Image"
VERSION=55
GOOGLE_METRICS_PRODUCT_ID=26
HOME_URL="https://cloud.google.com/compute/docs/containers/vm-image/"
ID=gci

https://cloud.google.com/compute/docs/containers/vm-image/faq#what_is_the_software_package_manager_for_container-vm_image

为了更新特定的包,需要更新整个操作系统映像

所以,看来我们必须等到更新安装了堆栈驱动程序代理的映像版本或放弃它。

这个 vm 图像也不是我的选择。新创建的 GKE 节点默认使用 Container-VM 映像。所以现在我将尝试通过gcloud container node-pools create --image-type创建节点

【问题讨论】:

  • 在 GCE 默认镜像上,节点已经安装了 stackdriver。或者至少他们有流利的记录器,可以将事情转发到 google/stackdriver
  • 真的吗?由于堆栈驱动程序仍处于测试阶段,他们没有预装代理。我曾在云服务支持处询问过。如果未安装代理,我们将无法监控内存使用情况。
  • 我明白了,也许不是内存。但我在堆栈驱动程序日志中看到来自 kubernetes 应用程序的日志,而无需执行任何操作。你在使用 GKE 吗?
  • 对于 GKE,监控可以开箱即用,不需要 stackdriver 代理。如果您转到 Stackdriver UI,您可以将 GKE 集群视为一流的实体。由于新的 Container-VM 映像针对安全性和容器进行了优化,我们正在努力将 stackdriver 代理容器化。给您带来的不便深表歉意!
  • @VishnuKannan:正如 hiroshi 上面指出的,监控仅包括不包括内存的 外部 指标。我们在 GKE 中经常遇到 OOM 问题,因此跟踪节点上的内存使用情况很重要(因为节点事件仅持续一个小时)。 GKE UI 选项“添加云监控”意味着将安装代理但未安装(并且不能在 GCI 上)。真的很期待解决这个问题。

标签: google-kubernetes-engine stackdriver google-container-os


【解决方案1】:

您可以在容器操作系统虚拟机实例上启用 Stackdriver Monitoring Agent,只需运行此命令(并重新启动它)即可启用监控代理:

gcloud compute instances add-metadata instance-name --metadata=google-monitoring-enabled=true

【讨论】:

  • 感谢您的回答,但我找不到有关启用 google-monitoring 的元数据的文档。你怎么知道的?
  • 我与 Google 支持人员进行了讨论,他们分享了这一点并且有效。
  • 元数据google-monitoring-enabled=true 将安装“节点问题检测器”,它不是 Stackdriver Monitoring Agent。它无法监控 Stackdriver 可以做的指标,例如“内存利用率”和“磁盘使用率”等。github.com/kubernetes/node-problem-detectorcloud.google.com/container-optimized-os/docs/how-to/…
【解决方案2】:

你可以的

sudo systemctl start stackdriver-logging
sudo systemctl start stackdriver-monitoring

它会在代理运行的情况下启动一些容器。几分钟后,数据将显示在您的 stackdriver 仪表板中。

我没有在任何地方找到它的文档,所以我无法确定它到底在哪些图像中可用。但我在Container-Optimized OS 77-12371.114.0 stable进行了测试

【讨论】:

  • 感谢您的回答。下次我使用 Google Container VM 映像创建节点时,我会尝试一下。
  • 很好的答案,这真的应该添加到容器优化操作系统的官方文档中。我已向 GCP 发送反馈以包含此内容。
【解决方案3】:

据我所知(Google 已向我确认),新的 Chromium 操作系统映像目前不支持 Stackdriver 代理。作为一种解决方法,我使用以下命令将节点池升级回“container-vm”(具有 Debian 映像):

$ gcloud container clusters upgrade YOUR_CLUSTER_NAME --image-type=container_vm --node-pool=YOUR_NODE_POOL

替换集群名称并将节点池名称设置为之前升级到 gci 的名称(在我的情况下为“默认池”)。节点版本将升级到最新版本。但是,您可以添加一个选项来部署另一个版本。

您现在应该可以像以前一样安装 Stackdriver 代理并设置所需的自定义指标了。

【讨论】:

    【解决方案4】:

    我能够解决代理与新 Chromium 映像不兼容的问题的方法是将代理部署为在 kubernetes DaemonSet 中以特权模式运行的容器(方便地已经构建:https://github.com/wikiwi/stackdriver-agent),以便它运行在每个主机上。 这是我最终使用的 YAML(空格很重要):

    apiVersion: extensions/v1beta1
    kind: DaemonSet
    metadata:
      name: stackdriver-agent
    spec:
      template:
        metadata:
          labels:
            app: stackdriver-agent
        spec:
          containers:
          - name: stackdriver-agent
            image: wikiwi/stackdriver-agent
            securityContext:
              privileged: true
            volumeMounts:
            - mountPath: /mnt/proc
              name: procmnt
            env:
              - name: MONITOR_HOST
                value: "true"
          volumes:
          - name: procmnt
            hostPath:
              path: /proc
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-12-12
      • 1970-01-01
      • 2020-09-11
      • 2017-11-15
      • 1970-01-01
      • 2021-10-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多