New Relic中command name与process display name区别、来源及查看方法
New Relic ProcessSample 字段说明及查询方法
两个字段的区别与数据来源
commandName(COMMAND NAME)
是进程启动时执行的二进制可执行文件的基础名称,示例中返回的ruby就是对应进程的运行时二进制名。数据直接来源于Linux内核维护的进程描述符中的comm字段,默认长度限制为15字符,不会随进程的业务属性、配置信息变化,仅和执行的二进制文件本身相关。processDisplayName(PROCESS DISPLAY NAME)
是New Relic做语义聚合后输出的友好业务识别名,示例中返回的sample_app就是对应进程绑定的systemd服务名。数据来源优先级从高到低为:systemd服务单元名、Docker容器名、Java进程的主类名、进程启动命令行的业务标识、用户自定义的进程别名,目的是让用户可以直接将进程和对应业务关联,无需额外映射二进制名与业务服务。
Bash中查看process display name的方法
你示例中的场景是systemd管理的服务,可直接用以下命令查询:
- 已知PID时查询对应服务名(即你场景下的process display name)
替换systemctl status <PID>为实际进程ID后,输出结果的第一行会直接展示对应的systemd服务单元名。 - 批量查看进程的二进制名与对应systemd服务名
输出的ps -eo pid,comm,unitcomm列对应New Relic的commandName,unit列对应systemd服务场景下的processDisplayName。 - 非systemd管理的进程,可查看进程完整启动命令行匹配业务标识:
cat /proc/<PID>/cmdline | tr '\0' ' '
内容的提问来源于stack exchange,提问作者m26a
相关产品推荐
相关产品推荐

