elk笔记25--快速体验APM

  • 1 介绍
  • 2 安装测试
    • 2.1 安装 APM server
    • 2.2 python测试用例
    • 2.3 kibana APM 展示信息
  • 3 注意事项
  • 4 说明

1 介绍

Elastic APM是建立在Elastic Stack上的应用程序性能监控系统。它允许用户通过收集关于传入请求、数据库查询、缓存调用、外部HTTP请求等响应时间的详细性能信息,从而实时监控软件服务和应用程序。这使用户定位和修复性能问题变得非常容易。
Elastic APM还会自动收集未处理的错误和异常,这些错误主要基于堆栈跟踪进行分组,因此用户可以在出现新错误时识别它们,并关注特定错误发生的次数。
在调试生产系统时,度量标准是另一个重要的信息来源。Elastic APM agent会自动获取基本的主机级指标和特定的代理相关的指标,比如Java代理中的JVM指标和Go代理中的Go运行时指标。

Elastic APM 包含4个主要部分: APM agents, Elastic APM integration, Elasticsearch, and Kibana , 它们的主要工程架构包括如下两种:
1) 边缘机器上的APM agents 将数据发送到集中托管的APM集成是

2)APM agents和APM集成运行在边缘机器上,并通过集中托管的Elastic agent 进行注册

以上为Elastic APM的主要功能和架构,在了解Elastic APM 主要功能后,本文将从基础开安装 APM server,并通过 python 案例加以展示。

2 安装测试

2.1 安装 APM server

docker pull docker.elastic.co/apm/apm-server:7.15.2curl -L -O https://raw.githubusercontent.com/elastic/apm-server/7.15/apm-server.docker.ymldocker run -d \-p 8200:8200 \--name=apm-server-7.15.2 \--user=apm-server \--volume="/home/xg/soft/elk/apm-7.15.2/apm-server.docker.yml:/usr/share/apm-server/apm-server.yml:ro" \docker.elastic.co/apm/apm-server:7.15.2 \--strict.perms=false -e \-E output.elasticsearch.hosts=["es_ip:9200"] -E output.elasticsearch.username="es_user" -E output.elasticsearch.password="es_pwd"

2.2 python测试用例

#!/usr/bin/python3"""
pip3 install elastic-apm[flask]
"""import time
from flask import Flask
import requests
import json
from elasticapm.contrib.flask import ElasticAPMapp = Flask(__name__)
app.config['ELASTIC_APM'] = {'SERVICE_NAME': 'xg-flask-01','SECRET_TOKEN': 'not-set','SERVER_URL': 'http://localhost:8200'
}
apm = ElasticAPM(app)@app.route("/")
def hello_world():ret_dict = {"main": "/ , Hello. World","test_error": "/api/test-error","test_wait": "/api/test-wait","test_get": "/api/test-get"}return json.dumps(ret_dict)@app.route("/api/test-error")
def test_error():try:print(10/0)except Exception as e:print(f"error: {e}")print(101 + "error")return json.dumps({'msg': "test-error"})def my_wait(ts=1):time.sleep(ts)@app.route("/api/test-wait")
def test_wait():ts = 5print("wait")my_wait(ts)return json.dumps({'msg': f"wait {ts}s"})@app.route("/api/test-get")
def test_get():r = requests.get(url='http://www.baidu.com')return json.dumps({'msg': f"get www.baidu.com, status_code={r.status_code}"})if __name__ == "__main__":app.run(host="0.0.0.0", port=8080)

2.3 kibana APM 展示信息

Services

Traces

Dependencies

Overview

Transactions

Dependencies

Errors

Metrics

3 注意事项

  1. 看APM官方文档,发现Elastic 的 apm-server 支持将数据写入到 kafka, 因此可以考虑使用其 apm-server 将数据写入 kafka, 然后再进一步将数据导入到 clickhouse或者其它db, 最上层封装自己的 APM 查询前端,那么就可以实现有个人特色的APM了.
    优点: 可以直接使用 elastic 的 apm-server 和 agent 接入规范,我们只需要关注用户查询即可
    缺点:需要自己实现 APM 的前端,可以参考 elastic 的 apm 功能
    Configure the Kafka output

4 说明

测试环境:
elk 7.15.2
apm-server 7.15.2
参考文档:
APM User Guide
Run APM Server on Docker
agent code example

elk笔记25--快速体验APM相关推荐

  1. go test 如何输出到控制台_GO笔记之GO命令快速体验

    上篇文章利用go run和go build命令分析介绍了GO的编译执行流程.GO提供给我们的命令当然远不止这两个.本文将在所能及的范围内,尽量地介绍GO提供的所有命令,从而实现对它们有个整体的认识. ...

  2. APPCAN学习笔记001---app快速开发AppCan.cn平台概述

    1.APPCAN学习笔记---app快速开发AppCan.cn平台概述 1. 平台概述 技术qq交流群:JavaDream:251572072 AppCan.cn开发平台是基于HTML5技术的跨平台移 ...

  3. Kubernetes CKA认证运维工程师笔记-Docker快速入门

    Kubernetes CKA认证运维工程师笔记-Docker快速入门 1. Docker 概念与安装 1.1 Docker 是什么 1.2 Docker 基本组成 1.3 版本与支持平台 1.4 Do ...

  4. k8s笔记14--初次体验 开源云原生软件交付平台zadig

    k8s笔记14--初次体验 开源云原生软件交付平台zadig 1 介绍 2 部署&测试 2.1 部署 2.2 测试 3 注意事项 4 说明 1 介绍 Zadig 是 KodeRover 公司基 ...

  5. [MATLAB学习笔记]采用快速傅里叶变换求时间序列的周期项

    [MATLAB学习笔记]采用快速傅里叶变换求时间序列的周期项 1. 背景 现有长度为11年的5个时间序列,为某拟研究对象的5个参数.现计划先通过快速傅里叶变换求每个系数序列的显著周期项,再分别按照傅里 ...

  6. 【rnnoise快速体验】rnnoise从编译到训练

    运行环境为Ubuntu18.04 C部分 下载源码 从github上下载源码,目前只有master分支,就拿master分支下来. 准备编译环境 干净的linux环境可能会没有安装gcc等编译工具 所 ...

  7. 基于android os 5.1,Android 5.1.1版氢OS快速体验

    本文约5304字,需9分钟阅读(全文浏览) [更新2015.07.15]作为一加氢OS的内测成员,小编在今天收到了氢OS最新的测试包.然而这个测试包有些不一样,它不再是基于Android 5.0.2系 ...

  8. 程序的加载和执行(五)——《x86汇编语言:从实模式到保护模式》读书笔记25

    程序的加载和执行(五)--<x86汇编语言:从实模式到保护模式>读书笔记25 前面几篇博文终于把代码分析完了.这篇就来说说代码的编译.运行和调试. 1.代码的编译及写入镜像文件 之前我们都 ...

  9. JAVA自学笔记25

    JAVA自学笔记25 1.GUI 1)图形用户接口,以图形的方式,来显示计算机操作的界面,更方便更直观 2)CLI 命令行用户接口,就是常见的Dos,操作不直观 3) 类Dimension 类内封装单 ...

  10. spring-security-学习笔记-03-spring-security快速上手

    spring-security-学习笔记-03-spring-security快速上手 文章目录 spring-security-学习笔记-03-spring-security快速上手 3-sprin ...

最新文章

  1. 与两位主席复盘IJCAI,今年得失几何?
  2. 搭配飞行员 dinic
  3. 可降阶的高阶微分方程
  4. android中设置菜单栏,android – 菜单项没有显示在操作栏
  5. 计算机入门 姚班,清华“姚班”:学霸中的尖子生,大佬毕业后都去哪了?
  6. 关于线程的停止、挂起、退出(修改)
  7. 生产过程代码分析(二)--估计
  8. 《阿里巴巴Java开发手册》版本演进历史
  9. nodejs--数据库与身份验证:初识数据库、安装并配置 MySQL、MySQL 的基本使用、SQL语法、在项目中操作 MySQL
  10. 基于Arduino的密码+指纹智能锁(LCD1602显示器)
  11. 毕业实习笔记——WRF模式入门(Cygwin版)
  12. 原理剖析(第 006 篇)Semaphore工作原理分析
  13. 通过Alertmanager实现Prometheus的告警告警配置(邮箱加钉钉)
  14. java equals方法重写_Java重写equals方法
  15. EasyRecovery15Mac全面好用的苹果电脑数据恢复app
  16. 我上岸了!深度剖析我的小红书 后台开发面经,以及我的 社招面试题目分享。
  17. QT编写磨砂玻璃效果函数
  18. 异构计算, GPU和框架选型指南
  19. sublime text c语言开发环境插件集合
  20. java 视频系统_java web电影网视频点播系统

热门文章

  1. matlab 信道容量的迭代算法,实验二一般信道容量迭代算法详解.ppt
  2. DyLight 649-LCA;DyLight 649标记小扁豆凝集素(LCA)
  3. 取消 “是否把IE8设置为默认浏览器提示 提示
  4. 【HD Tune变红/警告】硬盘 SMART 检测参数详解
  5. 灭霸级——如何选择最适合你的Linux发行版
  6. Android快捷开关实现 Wifi开关、蓝牙开关、GPS开关、同步开关、亮度设置开关
  7. 2023年天津仁爱学院专升本化学工程与工艺对口专业限制目录
  8. 2013,我的创业记忆片段
  9. python登录qq定时发消息_python自动发送qq消息
  10. PYTHON处理年月日的英文转换