正文
-
容器: 这是最小的粒度。
-
Pod: 一个 Pod 里面可以有多个容器。
-
应用: 一个应用里可能会有多个 Pod。
除了这些技术指标监控,360 容器平台的监控系统还支持自定义监控。有些业务可能需要在自己的程序里打点,比如要调第三方接口,查看延时和调用的次数等。大平台上不同业务对数据的需求不同,为了达到业务需求,支持自定义监控还是很必要的。新开发的业务可以在自己的程序里引入 Prometheus 相关的 SDK 进行打点,360 的容器平台就会将这些 metrics 收集上来。
另外,没有使用 Prometheus 的老系统在开发时没有在程序里打点的功能,这时业务可以针对自己的需求以 sidecar 的方式在程序的边缘写 exporter 来采集该进程所有的监控数据,exporter 以 metrics 的形式报告给 Prometheus,Prometheus 进行抓取。
360 容器平台监控系统的日志监控使用的是 ELK 技术栈,但是进行了二次开发。团队自己写了 Log controller 组件,该组件会实时地 watch Kubernetes API Server 的 Deployment 资源对象的状态变化。当业务在创建应用时,是以 Kubernetes deployment 的资源对象来创建的。Log controller 会感知到这个资源的创建,知道这个 deployment 下有多少 Pod 已经处于 Ready 状态。当 Log controller 感知到新创建的 Pod 已经处于 Ready 状态以后,会根据用户在创建 Pod 时指定的真实日志收集路径拼接成它在物理机上的绝对路径,然后将组装好的配置并推送到 360 自研的配置中心 QConf 中。
360 在 Kubernetes 集群的每个 Node 节点都会部署一个二次开发的 Logstash,该 Logstash 会定期(每隔十秒或者五秒,时间可配置)去配置中心 (Qconf) 拉取最新的配置。拉取完配置之后,Logstash 会根据最新的配置把相关的的日志收集到公司的 Qbus(对 Kafka 进行包装的产品)中,也就是数据已经进入到 Kafka 了。之后用户可以在 HULK 私有云平台 (内部的私有云平台) 开通 ES 服务,对日志进行检索分析或对其他日志指定数据进行监控。
360 容器平台监控系统的数据面板使用的是 Grafana,并对其增加了 LDAP 用户认证。可以显示内存,访问量,SIO, GPU 等监控数据指标。
应用级别基础监控指标: