«

cAdvisor(容器)监控指南

如果你的节点运行着 kubelet,恭喜你,可以非常方便的集成cAdvisor(容器)监控。

cAdvisor 是 google 开源的分析容器资源使用和性能特性的工具。从 2015-03-10 这个提交(Run cAdvisor inside the Kubelet. Victor Marmol 2015/3/10 13:39)可以看到,cAdvisor很早就集成在了kubelet中 。

默认情况下,可以通过http://<host_ip>:4194 访问 cAdvisor 的管理界面。

本文将在《etcd 监控指南》的基础上,介绍如何搭建 cAdvisor(容器)监控,同样分三步。

一、确定接口

首先试试 cAdvisor 的 metrics 接口是否暴露,在 cAdvisor 所在的节点上,执行如下命令:

curl http://127.0.0.1:4194/metrics  

有一大段指标输出,说明暴露成功。

不过我们通常是在另一台执行机上收集各个节点的性能指标,所以还要试试看该端口是否绑定在了 节点IP 上:

curl http://{节点IP}:4194/metrics  

一般来说,输出如下:

curl: (7) Failed connect to 100.120.121.114:4194; 拒绝连接  

因为 4194 只绑定在了本地IP(127.0.0.1)。不过我们也有方法,通过 HAProxy 做个代理转发(感谢阿灿告诉的方法)。

通常在 PaaS 的Core1和Core2节点本身就会安装 HAProxy (没有的话可自行安装),找到 HAProxy 的配置文件,在 PaaS 节点上操作如下:

cd /var/paas/srv/haproxy  
# 先备份,好习惯
mv haproxy.cfg haproxy.cfg.bak

vim haproxy.cfg  
# 在 haproxy.cfg 最后添加如下内容:
listen cadvisor  
    bind :7900
    mode tcp
    maxconn 64000
    balance roundrobin
    server cad_127.0.0.1_4194 127.0.0.1:4194 check inter 2000 rise 3 fall 3

以上配置的作用,就是将 cAdvisor 在 127.0.0.1:4194 的请求转发到 7900 这个端口上,如果冒号前为空,就是绑定了所有IP,安全起见,最好只绑定你需要的节点IP,即:

listen cadvisor  
    bind {节点IP}:7900

接着需要重启 HAProxy,来重新加载配置,我的方法是重启 HAProxy 所在的容器即可:

docker ps | grep haproxy

docker restart {haproxy-container-id}  

之后在执行机上,再通过 7900 这个端口调用一遍接口看看:

curl http://{节点IP}:7900/metrics  

有指标输出,说明调用成功,开工大吉!

二、配置Prometheus

《etcd 监控指南》的基础上,已经告诉如何安装 Prometheus,这里只需配置 Prometheus 即可。

修改配置如下:

cat > /data/prometheus/prometheus-config.yaml <<EOF  
global:  
  scrape_interval: 10s
scrape_configs:  
  - job_name: test-etcd-server
    scheme: https
    tls_config:
      insecure_skip_verify: true
    static_configs:
    - targets: ['etcd-0-ip:etcd-0-port','etcd-1-ip:etcd-1-port','etcd-2-ip:etcd-2-port']
  - job_name: cadvisor
    static_configs:
    - targets: ['10.250.104.183:7900','10.250.105.180:7900']
EOF  

核心在最后3行,就是添加了 cadvisor 这个job,接下来重启 Prometheus:

ps -fe | grep prometheus  
# 找到 Prometheus的进程id,kill之
kill -9 {pid}  
# 再启动
nohup /data/prometheus/2.2.1/prometheus \  
    --config.file /data/prometheus/prometheus-config.yaml \
    --web.listen-address "0.0.0.0:9090" \
    --storage.tsdb.path "/data/prometheus/prometheus.data" >> /data/prometheus/prometheus.log  2>&1 &

查看日志,确保没有报错。接着在浏览器中访问targets:

http://${执行机IP}:9090/targets  

如果新加的 cadvisor 都是UP状态,表示配置成功,胜利在望!

三、配置Grafana

同样在《etcd 监控指南》中,介绍了如何安装 Grafana,如何添加数据源,这里再配置 Grafana 就非常简单。

可直接从官网查找对应模板,在import界面导入即可。

如果配置没问题,将看到监控图表界面。

恭喜你,cAdvisor(容器)监控搭建成功!

分享