×

监控和审计 OpenShift Container Platform 集群的能力是保护集群及其用户免受不当使用的重要组成部分。

为此目的,有两个主要的集群级信息来源:事件和日志记录。

观察集群事件

鼓励集群管理员熟悉 `Event` 资源类型并查看系统事件列表,以确定哪些事件是感兴趣的。事件与命名空间关联,要么是与其相关的资源的命名空间,要么是集群事件的 `default` 命名空间。默认命名空间包含与监控或审计集群相关的相关事件,例如节点事件和与基础设施组件相关的资源事件。

主 API 和 `oc` 命令不提供参数来将事件列表的范围限定为仅与节点相关的事件。一种简单的方法是使用 `grep`

$ oc get event -n default | grep Node
示例输出
1h         20h         3         origin-node-1.example.local   Node      Normal    NodeHasDiskPressure   ...

一种更灵活的方法是以其他工具可以处理的形式输出事件。例如,以下示例使用 `jq` 工具处理 JSON 输出,以仅提取 `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 存储。事件不会作为永久记录存储,需要频繁轮询才能捕获一段时间内的统计数据。

日志记录

使用 `oc log` 命令,您可以实时查看容器日志、构建配置和部署。不同的用户可以访问不同的日志。

  • 默认情况下,有权访问项目的用户能够查看该项目的日志。

  • 具有管理员角色的用户可以访问所有容器日志。

为了保存日志以便日后审计和分析,您可以启用cluster-logging附加功能来收集、管理和查看系统、容器和审计日志。您可以通过OpenShift Elasticsearch Operator和Red Hat OpenShift Logging Operator部署、管理和升级OpenShift Logging。

审计日志

使用审计日志,您可以跟踪与用户、管理员或其他OpenShift Container Platform组件行为相关的活动序列。API审计日志记录在每台服务器上进行。

更多资源