cAdvisor(Container Advisor)为容器用户提供了对其运行容器的资源使用和性能特征的理解。 它是一个运行守护程序,用于收集,聚合,处理和导出有关正在运行的容器的信息。 具体而言,对于每个容器,它保留资源隔离参数,历史资源使用和完整历史资源使用的直方图。 此数据按容器和机器范围导出。
参考:https://github.com/google/cadvisor
开源软件cadvisor 是用于监控容器运行状态的利器之一,它被用于多个与docker相关的开源项目中。
在kubernetes 系统中,cAdvisor已经默认集成到了kubelet组件内,当kubelet服务启动时,它会自动启动cAdvisor服务,然后cAdvisor会实时采集所在节点的性能指标及在节点上运行的容器的性能指标。kubelet 的启动参数 --cadvisor-port 定义了cAdvisor对外提供服务的端口号,默认为4194。
我们可以通过浏览器 访问cAdvisor 提供的web页面:http://ip:4194/containers。
FROM alpine:3.10
WORKDIR /tmp
COPY ./glibc-2.30-r0.apk /tmp
COPY ./glibc-bin-2.30-r0.apk /tmp
COPY ./glibc-i18n-2.30-r0.apk /tmp
ADD ./cadvisor /usr/bin/cadvisor
RUN echo -e "http://mirrors.aliyun.com/alpine/v3.10/main\nhttp://mirrors.aliyun.com/alpine/v3.10/community" > /etc/apk/repositories && \
apk update && apk upgrade && \
apk add --no-cache bash && \
apk --no-cache add ca-certificates && \
apk add --allow-untrusted /tmp/glibc-2.30-r0.apk && \
mv /usr/glibc-compat/lib/ld-linux-x86-64.so.2 /usr/glibc-compat/lib/ld-linux-x86-64.so && \
ln -s /usr/glibc-compat/lib/ld-linux-x86-64.so /usr/glibc-compat/lib/ld-linux-x86-64.so.2 && \
apk add --allow-untrusted /tmp/glibc-bin-2.30-r0.apk && \
apk add --allow-untrusted /tmp/glibc-i18n-2.30-r0.apk && \
/usr/glibc-compat/bin/localedef -i en_US -f UTF-8 en_US.UTF-8 && \
echo 'hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4' >> /etc/nsswitch.conf && \
chmod +x /usr/bin/cadvisor && \
rm -rf glibc-2.30-r0.apk glibc-bin-2.30-r0.apk glibc-i18n-2.30-r0.apk
EXPOSE 8080
ENTRYPOINT ["/usr/bin/cadvisor", "-logtostderr"]
docker run \
--volume=/:/rootfs:ro \
--volume=/var/run:/var/run:rw \
--volume=/sys:/sys:ro \
--volume=/var/lib/docker/:/var/lib/docker:ro \
--publish=8080:8080 \
--detach=true \
--name=cadvisor \
--net=host \
google/cadvisor:latest
prometheus是一个非常优秀的监控工具。准确的说,应该是监控方案。prometheus提供了监控数据搜集,存储,处理,可视化和告警一套完整的解决方案。
Exporter:负责收集目标对象(host,container)的性能数据,并通过HTTP接口供 prometheus server 获取。
prometheus server: 负责从 exporter 拉取和存储监控数据,并提供一套灵活的查询语言 (PromQL)供用户使用。
Grafana: 可视化组件, 能够与 prometheus 无缝集成,提供完美的数据 展示能力。
Alertmanager : 用户可以定义基于监控数据的告警规则,规则会触发告警。一旦alertmanager收到告警,会通过预定义的方式发出告警通知。