监视Podman事件
概述
podman events [选项]
podman system events [选项]
描述
监视并打印在Podman中发生的事件。每个事件都包含时间戳、类型、状态、名称(如果适用)和镜像(如果适用)。默认的日志记录机制是journald。这可以在containers.conf中通过更改events_logger
的值来更改为file
。只接受file
和journald
。还有一个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格式) |
pod | Pod的名称或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
显示直到给定时间戳为止创建的所有事件。
since 和 until 的值可以是 RFC3339Nano 时间戳或 Go 持续时间字符串,如 10m(10分钟)、5h(5小时)。如果没有提供 since 或 until 值,则只显示新事件。
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 历史可能有所不同。