似乎应该在 Kubernetes 集群的每个 Node (即每个计算实例,即每台计算机)上安装Google Monitoring Agent (powered by Stackdriver)。
但是新的插件,如Nginx,Redis,ElasticSearch ...,需要这些代理知道这些服务的IP。这意味着kube-proxy
正在运行并设置,这意味着在Pod上运行 Google Monitoring Agent 。
这两个冲突:一方面,代理监控整台机器,另一方面监控一台或多台机器上运行的服务。
这些Stackdriver插件可以在 Google容器引擎(GKE)/ Kubernetes群集上运行吗?
答案 0 :(得分:3)
要监控每台计算机(内存,CPU,磁盘......),可以在每个节点上(即在GKE集群的每个计算实例上)安装代理。请注意,在重新创建的节点不能安装代理的意义上,它不能用于自动缩放。
要监控服务(请求数量,客户端连接......),可以在另一个容器中安装代理插件,以便例如Nginx Pod运行两个容器:
注意:尚未完全测试。
答案 1 :(得分:2)
您可以在Dockerfile中安装StackDriver Agent。
我已经能够将这个工作用于couchdb容器,如下所示:
FROM klaemo/couchdb
RUN apt-get update
RUN apt-get install curl lsb-release -y
RUN curl -O https://repo.stackdriver.com/stack-install.sh
RUN apt-get install libyajl2 -y
COPY couchdb.conf /opt/stackdriver/collectd/etc/collectd.d/couchdb.conf
CMD bash stack-install.sh --write-gcm && service stackdriver-agent restart && couchdb
答案 2 :(得分:1)
我曾试图在pod中使用Stackdriver容器来收集同一pod中有关Nginx / Uwsgi的统计信息。 我有一些可能不太有帮助的发现。仅供参考。
要创建堆栈驱动程序映像,您可以引用由Keto创建的docker文件。 https://hub.docker.com/r/keto/stackdriver/~/dockerfile/
FROM centos:centos7
MAINTAINER Mikael Keto
# add stackdriver repository
RUN curl -o /etc/yum.repos.d/stackdriver.repo https://repo.stackdriver.com/stackdriver-el7.repo
# install stackdriver
RUN yum -y install initscripts stackdriver-agent && yum clean all
RUN mkdir -p /var/lock/subsys; exit 0
ADD run.sh /run.sh
RUN chmod 755 /run.sh
CMD ["/run.sh"]
run.sh如下所示,
#!/usr/bin/env bash
/opt/stackdriver/stack-config --write-gcm --no-start
/etc/init.d/stackdriver-agent start
while true; do
sleep 60
agent_pid=$(cat /var/run/stackdriver-agent.pid 2>/dev/null)
ps -p $agent_pid > /dev/null 2>&1
if [ $? != 0 ]; then
echo "Stackdriver agent pid not found!"
break;
fi
done
在GKE / K8S部署yaml文件中,
apiVersion: extensions/v1beta1
kind: Deployment
...
- name: stackdriver-agent
image: gcr.io/<project_id>/stackdriver-agent:<your_version>
command: ['/run.sh']
在我的测试中,我找到了
好吧,我希望找到一些方法来收集我需要的pod和节点的统计数据,但我找不到一种简单的方法。我所做的是通过Google Python API库实现,但这需要花费太多时间。
答案 3 :(得分:0)
还有另一种使用Dockerfile的方法。 创建docker镜像时,请为stackdriver-agent安装预安装必要的库。
FROM mongo
RUN apt-get update && apt-get install -y curl lsb-release
# COPY credential
COPY gcloud-credential.json /etc/google/auth/application_default_credentials.json
ENV GOOGLE_APPLICATION_CREDENTIALS "/etc/google/auth/application_default_credentials.json"
# download Stackdriver Agent installer
RUN curl -O https://repo.stackdriver.com/stack-install.sh
RUN chmod +x /stack-install.sh
# COPY stackdriver mongodb plugin
COPY mongodb.conf /opt/stackdriver/collectd/etc/collectd.d/mongodb.conf
然后使用POD生命周期安装代理。
spec:
containers:
- image: your_mongo_image
name: my-mongo
ports:
- containerPort: 27017
lifecycle:
postStart:
exec:
command: ["/stack-install.sh", "--write-gcm"]