跳到主要内容

监视Podman事件

概述

podman events [选项]

podman system events [选项]

描述

监视并打印在Podman中发生的事件。每个事件都包含时间戳、类型、状态、名称(如果适用)和镜像(如果适用)。默认的日志记录机制是journald。这可以在containers.conf中通过更改events_logger的值来更改为file。只接受filejournald。还有一个none记录器可用,但这种日志记录机制会完全禁用事件;podman events不会报告任何内容。

默认情况下,使用流式模式,当新事件发生时打印它们。可以使用--since--until列出之前的事件。

container事件类型报告以下状态:

  • attach - 附加到容器
  • checkpoint - 创建容器的检查点
  • cleanup - 清理容器资源
  • commit - 提交容器的更改
  • connect - 连接到容器(如网络)
  • create - 创建容器
  • died - 容器退出(非零状态码)
  • disconnect - 从容器断开连接(如网络)
  • exec - 在容器中执行命令
  • exec_died - 容器中的命令退出
  • exited - 容器正常退出
  • export - 导出容器为归档文件
  • import - 从归档文件导入容器
  • init - 初始化容器
  • kill - 发送信号以停止容器
  • mount - 挂载容器的文件系统
  • pause - 暂停容器
  • prune - 修剪未使用的容器资源
  • remove - 删除容器
  • rename - 重命名容器
  • restart - 重启容器
  • restore - 从检查点恢复容器
  • start - 启动容器
  • stop - 停止容器
  • sync - 同步容器文件系统(如卷)
  • unmount - 卸载容器的文件系统
  • unpause - 取消暂停容器

选项

--since string

显示指定时间戳或事件ID之后的事件。

--until string

显示指定时间戳或事件ID之前的事件。

--format

更改输出格式。这可以是预定义的格式(如json),或者是一个Go模板字符串,用于格式化事件的输出。

--filter

过滤事件。这允许你根据事件的类型、状态、名称或镜像来过滤输出。

示例

显示所有实时发生的事件:

$ podman events

以JSON格式显示所有实时发生的事件:

$ podman events --format json

显示特定容器的事件:

$ podman events --filter container=mycontainer

列出过去一小时内发生的事件:

$ podman events --since "1 hour ago"

历史

Podman事件功能随着Podman项目的发展而逐步增加和完善。具体历史记录可查阅Podman的发布说明或更改日志。

podman events - 监视Podman事件

概述

podman events 命令允许用户监视Podman中发生的事件。事件可以包括容器的创建、启动、停止等,镜像的拉取、推送等,以及系统或卷的更改。

事件类型与状态

容器(container)事件类型

容器事件报告以下状态:

  • create - 创建容器
  • kill - 发送信号以停止容器
  • pause - 暂停容器
  • remove - 删除容器
  • start - 启动容器
  • stop - 停止容器
  • unpause - 取消暂停容器

镜像(image)事件类型

镜像事件报告以下状态:

  • loadFromArchive - 从归档文件加载镜像
  • mount - 挂载镜像文件系统
  • pull - 拉取镜像
  • pull-error - 拉取镜像时出错
  • push - 推送镜像
  • remove - 删除镜像
  • save - 保存镜像为归档文件
  • tag - 为镜像打标签
  • unmount - 卸载镜像文件系统
  • untag - 移除镜像的标签

系统(system)事件类型

系统事件报告以下状态:

  • refresh - 刷新系统资源或配置
  • renumber - 重新编号(可能是针对某些内部资源)

卷(volume)事件类型

卷事件报告以下状态:

  • create - 创建卷
  • prune - 修剪未使用的卷
  • remove - 删除卷

详细的创建事件

containers.conf文件中设置events_container_create_inspect_data=true可以指示Podman在创建容器时生成更详细的创建事件。这些事件将包含一个JSON负载,其中包含有关容器的详细信息。这个JSON负载与podman-container-inspect命令的输出相同。在journald中,相关字段名为PODMAN_CONTAINER_INSPECT_DATA

选项

--filter, -f=filter

过滤显示的事件。它们必须以“filter=value”的格式提供。以下过滤器受支持:

过滤器描述
container容器的名称或ID
event事件状态(如上所述)
image镜像的名称或ID
label标签(key=value格式)
podPod的名称或ID
volume卷的名称或ID
type事件类型(如上所述)

在使用ID的情况下,ID可以是完整形式或缩写形式。此外,“die”事件被映射为“died”,以便与Docker兼容。

示例

显示所有实时发生的事件:

$ podman events

仅显示与特定容器相关的事件:

$ podman events --filter container=mycontainer

仅显示容器创建事件:

$ podman events --filter event=create

历史

Podman事件功能随着项目的发展而不断完善,以提供更丰富和灵活的监视功能。具体的历史记录可查阅Podman的发行说明或Git存储库中的更改日志。

--format

使用指定的Go模板或JSON Lines格式化输出。

以下是一些可用的占位符及其描述:

占位符描述
.Attributes ...包括created_at, _by, labels等属性(map[])
.ContainerExitCode容器退出码(int)
.ContainerInspectData容器的inspect负载数据
.Error在事件状态为错误(例如pull-error)时显示的错误信息
.HealthStatus健康状态(字符串)
.ID容器ID(完整的64位SHA)
.Image正在运行的镜像名称(字符串)
.Name容器名称(字符串)
.Network使用的网络名称(字符串)
.PodID与容器关联的Pod的ID(如果有)
.Status事件状态(例如,create,start,died,...)
.Time事件时间戳(字符串)
.TimeNano带有纳秒精度的事件时间戳(int64)
.Type事件类型(例如,image,container,pod,...)

--help

打印使用说明。

--no-trunc

不截断输出(默认是true)。

--since=timestamp

显示自给定时间戳以来创建的所有事件。

--stream

流式传输事件,并在读取最后一个已知事件后不退出(默认是true)。

这些选项为podman events命令提供了更多的灵活性和定制性,允许用户根据需要进行筛选、格式化输出,以及控制事件流的行为。

--until=timestamp

显示直到给定时间戳为止创建的所有事件。

sinceuntil 的值可以是 RFC3339Nano 时间戳或 Go 持续时间字符串,如 10m(10分钟)、5h(5小时)。如果没有提供 sinceuntil 值,则只显示新事件。

JOURNALD IDENTIFIERS

Podman 的 journald events-backend 使用以下 journald 标识符。您可以使用这些标识符通过 journalctl 直接过滤 Podman 事件。

标识符描述
SYSLOG_IDENTIFIER始终设置为 "podman"
PODMAN_EVENT如上所述的事件状态
PODMAN_TYPE如上所述的事件类型
PODMAN_TIME事件被写入时的时间戳
PODMAN_NAME事件对象的名称(例如,容器、镜像)
PODMAN_ID事件对象的 ID(例如,容器、镜像)
PODMAN_EXIT_CODE容器的退出码
PODMAN_POD_ID容器的 Pod ID
PODMAN_LABELS容器的标签
PODMAN_HEALTH_STATUS容器的健康状态
PODMAN_CONTAINER_INSPECT_DATA如上所述的 podman-inspect 的 JSON 负载数据
PODMAN_NETWORK_NAME网络的名称

使用这些 journald 标识符,用户可以通过 journalctl 轻松地过滤和查询 Podman 事件,从而更深入地了解 Podman 容器和镜像的生命周期活动。

EXAMPLES

显示 Podman 事件:

$ podman events
2019-03-02 10:33:42.312377447 -0600 CST container create 34503c192940 (image=docker.io/library/alpine:latest, name=friendly_allen)
2019-03-02 10:33:46.958768077 -0600 CST container init 34503c192940 (image=docker.io/library/alpine:latest, name=friendly_allen)
2019-03-02 10:33:46.973661968 -0600 CST container start 34503c192940 (image=docker.io/library/alpine:latest, name=friendly_allen)
2019-03-02 10:33:50.833761479 -0600 CST container stop 34503c192940 (image=docker.io/library/alpine:latest, name=friendly_allen)
2019-03-02 10:33:51.047104966 -0600 CST container cleanup 34503c192940 (image=docker.io/library/alpine:latest, name=friendly_allen)

仅显示 Podman 容器创建事件:

$ podman events -f event=create
2019-03-02 10:36:01.375685062 -0600 CST container create 20dc581f6fbf (image=docker.io/library/alpine:latest, name=sharp_morse)
2019-03-02 10:36:08.561188337 -0600 CST container create 58e7e002344c (image=registry.k8s.io/pause:3.1, name=3e701f270d54-infra)
# ... 可能还有其他容器创建事件 ...

仅显示 Podman Pod 创建事件:

$ podman events --filter event=create --filter type=pod
2019-03-02 10:44:29.601746633 -0600 CST pod create 1df5ebca7b44 (image=, name=confident_hawking)
2019-03-02 10:44:42.374637304 -0600 CST pod create ca731231718e (image=, name=webapp)
# ... 可能还有其他 Pod 创建事件 ...

仅显示过去五分钟内创建的 Podman 事件:

$ podman events --since 5m
# ... 显示过去五分钟内创建的所有 Podman 事件 ...

在这个例子中,--since 5m 表示只显示过去五分钟内的事件。你可以根据需要调整时间范围,例如使用 10m 表示十分钟,1h 表示一小时等。如果省略 --since--until 参数,则 podman events 默认只显示新发生的事件。

使用 podman events 可以帮助用户监控 Podman 容器和 Pod 的生命周期活动,从而更好地了解系统的状态和行为。通过结合过滤选项,用户可以精确地获取所需的事件信息,以便进行进一步的分析和故障排除。

# EXAMPLES

显示过去五分钟内创建的 Podman 事件:

$ sudo podman events --since 5m
2019-03-02 10:44:29.598835409 -0600 CST container create b629d10d3831 (image=registry.k8s.io/pause:3.1, name=1df5ebca7b44-infra)
2019-03-02 10:44:29.601746633 -0600 CST pod create 1df5ebca7b44 (image=, name=confident_hawking)
2019-03-02 10:44:42.371100253 -0600 CST container create 170a0f457d00 (image=registry.k8s.io/pause:3.1, name=ca731231718e-infra)
2019-03-02 10:44:42.374637304 -0600 CST pod create ca731231718e (image=, name=webapp)
# ... 可能还有其他在过去五分钟内创建的事件 ...

这个命令会显示在过去五分钟内发生的所有 Podman 事件,包括容器的创建、启动、停止等,以及 Pod 的创建和删除等。

以 JSON Lines 格式显示 Podman 事件:

$ podman events --format json
{"ID":"683b0909d556a9c02fa8cd2b61c3531a965db42158627622d1a67b391964d519","Type":"container","Time":"2019-04-27T22:47:00.849932843-04:00","Name":"agitated_diffie","Image":"localhost/myshdemo:latest","Status":"cleanup"}
{"ID":"a0f8ab051bfd43f9c5141a8a2502139707e4b38d98ac0872e57c5315381e88ad","Type":"container","Time":"2019-04-28T13:43:38.063017276-04:00","Name":"friendly_tereshkova","Image":"docker.io/library/alpine:latest","Status":"unmount"}
# ... 更多的 JSON 格式事件 ...

这个命令会以 JSON Lines 格式输出 Podman 事件,每一条事件都是一条 JSON 格式的记录。这对于脚本处理和进一步的数据分析非常有用。

另请参阅

podman(1), containers.conf(5), podman-container-inspect(1) - Podman的相关命令和配置文件文档。

历史

March 2019, 最初由Brent Baude整理编写。

注意:上述的 podman(1)containers.conf(5) 链接是假设的,实际文档可能会有所不同。为了获取最新和正确的文档,请参考 Podman 的官方文档或手册页。同时,HISTORY 部分也仅是为了展示一个典型的 man page 格式,实际的 Podman 历史可能有所不同。