一、拓扑可视化监控--Weave Scope
1.1 引入背景
目前Prometheus+Grafana监控方案中缺少集群拓扑展示,缺少对集群中各容器、以及各服务之间的调用关系的详细说明。
在实际生产环境中 kubernetes 集群应用部署众多,需要一款可视化工具方便日常获知集群的实时状态,并为故障排查提供及时和准确的数据支持。Weaveworks 的项目 Weave Scope 是一款 Docker 和 Kubernetes 维度的可视化监控工具。
Weave Scope 提供了至上而下的集群基础设施和应用的完整视图,用户可以轻松对分布式的容器化应用进行实时监控和问题诊断,以确保容器应用程序的稳定性和性能,通过查看容器上下文的度量/标记,以及原数据,在容器内部的进程之间可以轻松的确定运行服务消耗最多CPU/内存资源的容器。
1.2 架构组成
Weave Scope整体由Agent探针和App两部分组成:
- Agent探针负责收集容器和宿主的信息,并发送给 App
- App负责处理这些信息,并生成相应的报告,并以交互界面的形式展示
其中核心组件组成:
- weave-scope-agent,集群每个节点上都会运行的 scope agent 程序,负责收集数据,其部署为DaemonSet模式。
- weave-scope-app,scope 应用,从 agent 获取数据,通过 Web UI 展示并与用户交互,其部署为Deployment模式。
- weave-scope-app,默认是 ClusterIP 类型,为了方便已通过kubectl edit修改为NodePort对外提供服务。
整体工作流程:
二、Weave Scope特点
Weave Scope会读取集群配置,自动生成各容器、网络、以及app之间的映射关系,能够更加直观地展示、监视和控制基于容器化微服务的应用程序。
Weave Scope可以监控kubernetes集群中的一系列资源的状态、资源使用情况、应用拓扑,还可以直接通过Web端进入容器内部进行调试。
其提供的主要功能包括:
-
交互式拓扑界面
-
图形模式和表格模式
-
多维度资源划分
-
过滤&搜索功能
-
实时了解集群中的容器状态
-
可以查看容器的上下文指标,标签和元数据。可以比较轻松的在容器内部的进程之间导航,以托管运行在可扩展、可排序表中的容器。对于给定的主机或服务,使用最多CPU或内存的容器即可轻松找到该容器。
-
与容器进行直接交互和管理、启动命令行。
-
通过插件扩展和自定义
三、Weave Scope接入
3.1 二进制版本安装
sudo curl -L git.io/scope -o /usr/local/bin/scope
sudo chmod a+x /usr/local/bin/scope
scope launch 10.194.170.24 10.194.170.25 10.194.170.26 -app.basicAuth -app.basicAuth.password 123456 -app.basicAuth.username user -probe.basicAuth -probe.basicAuth.password 123456 -probe.basicAuth.username user
//ip为三台master的ip地址
//app和probe探针用户都设置为user,密码都设置为123456
三台master节点都需要进行scope的部署:(以下为82其中一台节点的启动,其他同理)
这时访问http://{{localhost:4040}},即可看到Web端。
3.2 Kubernetes版本安装(优选)
kubectl apply -f "https://cloud.weave.works/k8s/scope.yaml?k8s-version=$(kubectl version | base64 | tr -d '\n')"
kubectl port-forward -n weave "$(kubectl get -n weave pod --selector=weave-scope-component=app -o jsonpath='{.items..metadata.name}')" 4040 //暴露服务访问4040端口
执行yaml文件后会创建Weave Scope的一些资源:
至此,Weave Scope的部署在cust51-test环境完成,Weave Scope会默认为82、83、84这三个节点为一个“群集”,无论访问哪台服务器的4040端口,都可以看到一样的集群信息:
访问http://10.194.170.25:4040/,即为Web端。
四、Weave Scope视图
4.1 资源详细信息拓扑
- 拓扑化
进程名下面都会标记主机名,直接表明是存活于哪个主机上的进程
- 表格化
4.2 资源实时消耗
可以在Web端查看资源的CPU和内存使用情况,并且支持Node、Container和Process三种维度:
4.3 容器操作
可以对容器进行attach、exec shell、restart、pause以及stop操作:
4.4 展示条件筛选
界面左下角可按条件展示拓扑,涵盖容器类型(系统或者应用)、容器状态(stopped或running状态)、命名空间等等:
4.5 全局搜索
搜索栏同样可以按条件搜索相应的资源对象,如以命名空间、对象名称、image及版本、资源使用率等:
4.6 资源元数据信息
包括Labels、Image、Info、Status等元数据的展示,简单来说相当于从Web端直接可以看到kubectl describe的详细结果: