2.13. 监控集群事件和日志
监控和审核 OpenShift Container Platform 集群的功能是防止集群及其用户遭到不当使用的重要措施。
有两个主要的集群级别信息来源可用来实现这一目的:事件和日志记录。
2.13.1. 监视集群事件
建议集群管理员熟悉 Event
资源类型,并查看系统事件列表以确定值得关注的事件。事件与命名空间关联,可以是与它们相关的资源的命名空间,对于集群事件,也可以是 default
命名空间。default 命名空间包含与监控或审核集群相关的事件,如节点事件和与基础架构组件相关的资源事件。
Master API 和 oc
命令不通过提供参数来将事件列表的范围限定为与节点相关的事件。一个简单的方法是使用 grep
:
$ oc get event -n default | grep Node
输出示例
1h 20h 3 origin-node-1.example.local Node Normal NodeHasDiskPressure ...
更灵活的方法是以其他工具可以处理的形式输出事件。例如,以下示例针对 JSON 输出使用 jq
工具以仅提取 NodeHasDiskPressure
事件:
$ oc get events -n default -o json \ | jq '.items[] | select(.involvedObject.kind == "Node" and .reason == "NodeHasDiskPressure")'
输出示例
{ "apiVersion": "v1", "count": 3, "involvedObject": { "kind": "Node", "name": "origin-node-1.example.local", "uid": "origin-node-1.example.local" }, "kind": "Event", "reason": "NodeHasDiskPressure", ... }
与资源创建、修改或删除相关的事件也很适合用来检测到集群误用情况。例如,以下查询可以用来查找过度拉取镜像:
$ oc get events --all-namespaces -o json \ | jq '[.items[] | select(.involvedObject.kind == "Pod" and .reason == "Pulling")] | length'
输出示例
4
删除命名空间时,也会被删除其事件。也可以让事件过期并将其删除以防止占用 etcd 存储。事件不作为持久记录存储,且需要持续进行频繁的轮询来捕获统计数据。
2.13.2. 日志记录
使用 oc log
命令,您可以实时查看容器日志、构建配置和部署。不同的用户可对日志具有不同的访问权限:
- 有权访问项目的用户默认可以查看该项目的日志。
- 具有 admin 角色的用户可以访问所有容器日志。
要保存日志以供进一步审核和分析,您可以启用 cluster-logging
附加功能来收集、管理和查看系统、容器和审计日志。您可以通过 OpenShift Elasticsearch Operator 和 Red Hat OpenShift Logging Operator 部署、管理和升级 OpenShift Logging。
2.13.3. 审计日志
使用审计日志,您可以跟踪与用户、管理员或其他 OpenShift Container Platform 组件的行为方式相关的一系列活动。API 审计日志记录在每个服务器上完成。