
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
用Go编写的Prometheus导出器,用于监控systemd单元。
各导出器的侧重点不同。例如,https://github.com/prometheus/node_exporter/ 侧重于节点级的广泛监控,https://github.com/ncabatoff/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选择所需单元,两者均采用https://github.com/google/re2/wiki/Syntax%E8%AF%AD%E6%B3%95%E3%80%82%E4%BE%8B%E5%A6%82%EF%BC%9A
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参数传递配置文件。文件格式详见https://github.com/prometheus/exporter-toolkit/blob/master/docs/web-configuration.md%E3%80%82
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 \ docker.xuanyuan.run/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。您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务