本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com

用Go编写的Prometheus导出器,用于监控systemd单元。
各导出器的侧重点不同。例如,node_exporter 侧重于节点级的广泛监控,process-exporter 专注于特定进程的深度分析。systemd-exporter则介于两者之间,利用systemd内置的进程和线程分组功能,提供应用级指标。
| 导出器 | 指标目标 | 示例 |
|---|---|---|
| node-exporter | 整机监控和使用摘要 | 节点(如127.0.0.1)的CPU使用率 |
| systemd-exporter | systemd单元监控和资源使用 | 各服务的状态(如mongodb.service) |
| process-exporter | 单个进程的详细监控 | 特定进程ID(如1127)的CPU使用率 |
| cAdvisor | 每个cgroup的指标(systemd使用cgroups) | 每个cgroup(如system.slice/mongodb.service)的CPU使用率 |
systemd将进程、线程和其他资源(PID、内存等)分组到称为“单元”的逻辑容器中。systemd-exporter会读取11种不同类型的systemd单元(如服务、切片等),提供每个单元的健康状态和资源消耗指标。这允许以应用为中心查看系统,独立于系统上其他进程,确定mysql.service等应用的资源使用情况。
这提供了比整机级指标更细粒度的监控,但不导出特定进程或线程的指标。也就是说,systemd-exporter的粒度受限于systemd单元的范围。如果在mysql.service中包含400个线程和20个进程,导出器仅提供该服务单元的systemd指标,而非单个任务的指标。如需此类细粒度指标,应使用process-exporter。
这些导出器之间存在重叠,若同时使用,请务必阅读相关文档。例如,使用systemd-exporter时,不应在node-exporter中启用以下标志(因为systemd-exporter默认已暴露相同指标):--systemd.collector.enable-task-metrics --systemd.collector.enable-restarts-metrics --systemd.collector.enable-start-time-metrics。process-exporter通过进程名对进程进行逻辑分组(自底向上),而systemd是自上而下(先命名分组,再在其中启动进程)。systemd方式能更强保证分组中无进程/线程“遗漏”,但要求使用systemd作为init系统;自底向上方式则适用于所有系统。
不同systemd版本对指标的支持程度不同。为避免对使用旧版本systemd的用户造成影响,新版本systemd引入的标志默认禁用。可尝试启用不同标志,查看系统支持情况。
可选标志:
| 名称 | 描述 |
|---|---|
| --systemd.collector.enable-restart-count | 启用服务重启计数指标。此功能仅支持systemd 235及以上版本。 |
| --systemd.collector.enable-file-descriptor-size | 启用文件描述符大小指标。systemd Exporter需要访问/proc/X/fd文件。 |
| --systemd.collector.enable-ip-accounting | 启用服务IP计费指标。此功能仅支持systemd 235及以上版本。 |
注意,对以下单元类型无特殊支持:.snapshot(在systemd v228中移除)、.busname(仅在使用kdbus的系统上存在)、generated(通过生成器创建)、transient(通过systemd-run创建)。
安装此导出器的方式:
go build。examples目录获取Kubernetes的daemonset清单。用户需要访问systemd dbus,通常导出器需要能够访问节点的/proc目录才能正常工作。
所有指标均包含name标签,其值为systemd单元名称(如name="bluetooth.service"或name="systemd-coredump.socket")。对所有单元都存在的指标(如名称以unit_*开头的指标)还包含type标签(如type="socket"或type="service"),以便在PromQL分组查询中使用(如count(systemd_unit_state) by (type))。
默认情况下会过滤部分单元类型。
| 指标名称 | 指标类型 | 状态 | 基数 |
|---|---|---|---|
| systemd_exporter_build_info | Gauge | UNSTABLE | 每个systemd-exporter 1个 |
| systemd_unit_info | Gauge | UNSTABLE | 每个服务1个 + 每个挂载1个 |
| systemd_unit_state | Gauge | UNSTABLE | 每个单元5个 {state="activating/active/deactivating/failed/inactive} |
| systemd_unit_tasks_current | Gauge | UNSTABLE | 每个服务1个 |
| systemd_unit_tasks_max | Gauge | UNSTABLE | 每个服务1个 |
| systemd_unit_start_time_seconds | Gauge | UNSTABLE | 每个服务1个 |
| systemd_service_restart_total | Gauge | UNSTABLE | 每个服务1个 |
| systemd_service_ip_ingress_bytes | Counter | UNSTABLE | 每个服务1个 |
| systemd_service_ip_egress_bytes | Counter | UNSTABLE | 每个服务1个 |
| systemd_service_ip_ingress_packets_total | Counter | UNSTABLE | 每个服务1个 |
| systemd_service_ip_egress_packets_total | Counter | UNSTABLE | 每个服务1个 |
| systemd_socket_accepted_connections_total | Counter | UNSTABLE | 每个套接字1个 |
| systemd_socket_current_connections | Gauge | UNSTABLE | 每个套接字1个 |
| systemd_socket_refused_connections_total | Gauge | UNSTABLE | 每个套接字1个 |
| systemd_timer_last_trigger_seconds | Gauge | UNSTABLE | 每个定时器1个 |
| systemd_watchdog_enabled | Gauge | UNSTABLE | 1(仅可配置1个看门狗) |
| systemd_watchdog_last_ping_monotonic_seconds | Gauge | UNSTABLE | 1 |
| systemd_watchdog_last_ping_time_seconds | Gauge | UNSTABLE | 1 |
| systemd_watchdog_runtime_seconds | Gauge | UNSTABLE | 1 |
systemd_exporter允许包含/排除部分systemd单元。可使用--systemd.collector.unit-include和--systemd.collector.unit-exclude选择所需单元,两者均采用RE2语法。例如:
args: - --systemd.collector.unit-include=.*ceph.*\.service|ceph.*\.timer|kubelet.service|docker.service - --systemd.collector.unit-exclude=ceph-volume.*\.service
systemd Exporter支持TLS和基本认证。
如需使用TLS和/或基本认证,需通过--web.config.file参数传递配置文件。文件格式详见exporter-toolkit仓库文档。
docker run -d \ --name systemd-exporter \ --volume /proc:/proc:ro \ --volume /sys/fs/cgroup:/sys/fs/cgroup:ro \ --volume /run/dbus/system_bus_socket:/run/dbus/system_bus_socket \ --net=host \ prometheuscommunity/systemd-exporter:latest
说明:
--volume /proc:/proc:ro:挂载proc文件系统(只读),用于获取进程信息。--volume /sys/fs/cgroup:/sys/fs/cgroup:ro:挂载cgroup文件系统(只读),用于获取资源使用数据。--volume /run/dbus/system_bus_socket:/run/dbus/system_bus_socket:挂载systemd dbus socket,用于与systemd通信。--net=host:使用主机网络,确保能访问主机的systemd服务。--systemd.collector.unit-include或--web.config.file。免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录方式配置轩辕镜像加速服务,包含7个详细步骤
在 Linux 系统上配置轩辕镜像源,支持主流发行版
在 Docker Desktop 中配置轩辕镜像加速,适用于桌面系统
在 Docker Compose 中使用轩辕镜像加速,支持容器编排
在 k8s 中配置 containerd 使用轩辕镜像加速
在宝塔面板中配置轩辕镜像加速,提升服务器管理效率
在 Synology 群晖NAS系统中配置轩辕镜像加速
在飞牛fnOS系统中配置轩辕镜像加速
在极空间NAS中配置轩辕镜像加速
在爱快ikuai系统中配置轩辕镜像加速
在绿联NAS系统中配置轩辕镜像加速
在威联通NAS系统中配置轩辕镜像加速
在 Podman 中配置轩辕镜像加速,支持多系统
配置轩辕镜像加速9大主流镜像仓库,包含详细配置步骤
无需登录即可使用轩辕镜像加速服务,更加便捷高效
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429