前言
之前一直在寻找一个 k8s 监控的工具,因为一直使用的是本地的 lens 的客户端,虽然使用上已经非常方便了,但是其实对于资源消耗的监控少了一点,有些资源消耗并不是能容易看到,并且服务间依赖是没有办法表现出来的,后来发现了 Weave Scope 满足了我的需求。
链接
https://github.com/weaveworks/scope
特点
- 资源监控:能实时反映整个集群中的资源状况 cpu 内存 使用情况 并且支持各种角度
- 服务间依赖:能通过图形展现出服务之间访问的依赖关系
- 容器交互:实时查看日志和描述信息
- 支持插件:可以通过插件扩展
- 部署方便:一个命令即可部署完成
监控页面
资源监控
可以清楚的看到每个 node 的资源使用情况
服务间依赖
因为内部服务与服务之间通过 rpc 进行交互,从这里可以很容易看出,某个服务被别的五个服务所依赖调用
容器交互
可以看到占用的 cpu 和内存的情况,然后占用的端口等,还有日志信息
部署
支持直接部署在 k8s 集群中,不需要额外的任何配置
https://www.weave.works/docs/scope/latest/installing/#k8s
# 下面一个命令就能部署完成了
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
访问本地: http://localhost:4040
插件
https://github.com/weaveworks-plugins/
比如有一个 http 流量统计的插件:https://github.com/weaveworks-plugins/scope-http-statistics
不过现在还并不是很多,但是基本功能其实已经足够了
鉴权
https://www.weave.works/docs/scope/latest/faq/
支持最简单的一个 http 鉴权,如果有需要可以设置对应参数
总结
如果你需要一个资源监控的工具,并且觉得上面的信息就是你需要的,可以尝试使用下,目前是我比较推荐的一个集群监控。
当然它也有个我认为的小不足:其实服务复杂的时候,服务间的依赖也会非常复杂,而且页面不支持拖动,就有的时候有点“难看”,如果拓扑中的节点支持拖动其实就蛮不错的,个人想法。