用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仓库文档。
bashdocker 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 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429