igozhang

——

    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 下载

    https://search.maven.org/remotecontent?filepath=co/elastic/apm/elastic-apm-agent/1.30.0/elastic-apm-agent-1.30.0.jar

    将 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 验证数据
    

    注意

    1. Agent、APM Server、ES/Kibana 大版本尽量对齐(本例均为 7.9.x 系)。
    2. 防火墙需放行 Agent → 8200,以及 APM Server → ES 端口。
    3. 生产建议为 APM 单独用户与最小权限,并限制 host 监听范围。
    4. License 功能集随订阅变化,服务地图等以 Elastic 官方说明为准。

    MP3