Elastic APM
基于 Elastic Stack 的应用性能监控(APM):APM Server 采集 Agent 数据,写入 Elasticsearch,并在 Kibana 中展示。
环境
| 项目 | 说明 |
|---|---|
| 操作系统 | CentOS Linux release 7.8.2003 (Core) |
| Elasticsearch | 7.9.3 |
| APM Server | apm-server-7.9.3-x86_64 |
| Java Agent | elastic-apm-agent-1.30.0.jar |
参考文档:
相关概念
| 概念 | 一句话 |
|---|---|
| APM Agent | 植入应用(如 Java -javaagent),采集链路、指标、错误。 |
| APM Server | 接收 Agent 上报,校验/转换后写入 Elasticsearch。 |
| service_name | 在 APM UI 中展示的服务名。 |
| application_packages | Java 业务包前缀,便于区分应用栈与框架栈。 |
| 服务地图 | 服务依赖拓扑;部分能力需企业版 License(见文末结论)。 |
Elastic APM 架构
Java / 其他应用
│ elastic-apm-agent(-javaagent)
▼
APM Server (:8200)
│ bulk 写入
▼
Elasticsearch 集群
│
▼
Kibana APM 应用(展示链路 / 指标 / 错误等)
数据流:Agent → APM Server → ES → Kibana。
1. 安装与配置 APM Server
1.1 安装
curl -L -O https://artifacts.elastic.co/downloads/apm-server/apm-server-7.9.3-x86_64.rpm
rpm -vi apm-server-7.9.3-x86_64.rpm
1.2 配置
备份原配置后写入(IP 按环境修改):
cp /etc/apm-server/apm-server.yml{,.$(date +%Y%m%d)}
tee /etc/apm-server/apm-server.yml <<'EOF'
apm-server:
host: "192.168.81.29:8200"
output.elasticsearch:
hosts:
- "http://192.168.81.34:29200"
- "http://192.168.81.35:29200"
- "http://192.168.81.36:29200"
EOF
| 项 | 含义 |
|---|---|
apm-server.host |
Agent 上报地址(本机网卡 IP:8200) |
output.elasticsearch.hosts |
ES 集群地址(示例端口 29200) |
若 ES 开启安全认证,需在 yml 中补充
username/password或 API Key(以 7.9 文档为准)。
1.3 启动
systemctl start apm-server
systemctl enable apm-server
1.4 验证
curl http://192.168.81.29:8200
预期类似:
{
"build_date": "2020-10-16T08:05:05Z",
"build_sha": "af7b123f289d79c34c9da11471803f457eafa5c0",
"version": "7.9.3"
}
2. 配置 Java Agent(elastic-apm-agent)
2.1 下载
将 jar 放到应用机,例如:/data/elastic-apm-agent-1.30.0.jar。
2.2 JVM 启动参数
-javaagent:/data/elastic-apm-agent-1.30.0.jar
-Delastic.apm.service_name=eg-was
-Delastic.apm.server_urls=http://192.168.81.29:8200
-Delastic.apm.application_packages=org.example
写入应用启动脚本 / JAVA_OPTS 后重启应用。
| 参数 | 说明 |
|---|---|
-javaagent |
挂载 APM Agent |
service_name |
服务显示名(示例:eg-was) |
server_urls |
APM Server 地址 |
application_packages |
业务包名(示例需改成真实包前缀) |
更多选项见 Java Agent 文档。
3. 效果与结论
效果图例: 效果图例 01(在 Kibana APM 中查看服务、事务、链路等)。
结论:
| 项 | 说明 |
|---|---|
| 展示与完整度 | 较好 |
| 使用 / 搭建 | 相对 Pinpoint 更简单 |
| 服务地图 | 需 企业白金(Platinum)License 才可使用(以当时 Elastic 授权策略为准) |
流程速览
装 apm-server → 配 host + ES hosts → systemctl 启动
→ 应用加 -javaagent 与 server_urls
→ curl :8200 / Kibana APM 验证数据
注意
- Agent、APM Server、ES/Kibana 大版本尽量对齐(本例均为 7.9.x 系)。
- 防火墙需放行 Agent →
8200,以及 APM Server → ES 端口。 - 生产建议为 APM 单独用户与最小权限,并限制
host监听范围。 - License 功能集随订阅变化,服务地图等以 Elastic 官方说明为准。