我曾尝试在 pod 中使用 Stackdriver 容器来收集有关同一 pod 中 Nginx/Uwsgi 的统计信息。我有一些发现可能不是那么有用。仅供参考。
要创建 stackdriver 映像,您可以参考 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']
在我的测试中,我发现
- 它将基于 [node_name] 而不是 [container_name] 报告统计信息。
- 它将收集许多对节点有意义的系统统计信息,但由于它位于 pod 中,因此毫无意义。
好吧,我希望找到一些方法来收集我需要的 pod 和节点的统计信息,但是我没有找到一个简单的方法来做到这一点。我所做的是通过 Google Python API 库来做这件事,但这需要太多时间。