本文部分内容转载自:https://blog.csdn.net/UbuntuTouch/article/details/102844900

官方文档:https://www.elastic.co/guide/en/apm/index.html

APM 到底是什么

APM就是监视和管理软件应用程序的性能和可用性。Elastic APM是基于Elastic Stack构建的应用程序性能监视系统。 它使您可以实时监视软件服务和应用程序-收集有关传入请求,数据库查询,对缓存的调用,外部HTTP请求等的响应时间的详细性能信息。 这样可以轻松快速地找出并解决性能问题。

Elastic APM还会自动收集未处理的错误和异常。 错误主要根据堆栈跟踪进行分组,因此您可以在新错误出现时识别它们,并密切注意特定错误发生的次数。

指标是调试生产系统时的另一个重要信息来源。 Elastic APM代理会自动选择基本主机级别指标和特定于代理的指标,例如Java代理中的JVM指标和Go代理中的Go运行时指标。

Elastic APM方案是世界上第一个开源的APM 解决方案:

APM记录数据库查询,外部HTTP请求以及对应用程序的请求期间发生的其他缓慢操作的跟踪

- 很容易让程序员看到应用在运行时各个部分所花的时间

它收集未处理的错误和异常

- 很容让程序员调试错误

在客户面对性能瓶颈和错误之前先定位到问题所在

提高开发团队的生产力

Elastic Observability (可观测性)

Elastic 通过整合日志,指标及APM,统一整个生态系统可见性,打造一个完整的可观测性。将您的日志,指标和APM跟踪大规模整合到一个堆栈中,以便您可以监视环境中发生的事件并对事件做出反应。按照文章“Metrics, tracing, and logging”的描述,打造全面的可观测性,需要如下的三个要素:

在Elastic Stack中,我们都有相应的模块处理:

日志 (logging):程序运行产生的事件,可以详细解释其运行状态。

指标(metrics):一组聚合数值,主要用于监控基础设施(机器、容器、网络等),但也有应用会用于监控业务层面,比如开源搜索系统Elasticsearch就有关于查询或写入量、耗时、拒绝率等应用层面的指标。

应用性能监控(APM):深入到代码层面的追踪(或监控),包括程序内部执行过程、服务之间链路调用等情况,能轻易的找到程序“慢”的原因。APM最常见被用于对web服务器中一次请求处理过程的追踪,包括内部执行逻辑、外部服务的调用及它们相应的耗时。

Elastic Stack可为所有运营数据提供快速,可靠和相关的搜索,因此无论数据类型如何,您都可以提出自己想要的问题-并获得所需的答案。

APM应用于Elastic Stack的位置



如上图所示,我们看到一个最典型的APM架构图:

我们需要架设一台专门的APM服务器,虽然也可以和Elastic Stack的其它服务器处于同一台服务器中

AMP agent专门收集数据并发送数据到APM服务器中。这里的APM agents包含:



APM服务器把数据发送到Elasticsearch中,并进行数据分析

Kibana可以帮我们把数据进行展示并显示在Dashboard之中

总体来说,APM数据仅仅是另外Elasticsearch索引。在Kibana中已经有一个现成的APM应用可以被我们所使用。我们也可以根据需求自己定制自己的Dashboard。APM可以完美地结合机器学习和告警。

APM术语

  • Service: 在apm agent配置中进行设置,以将特定的apm agent组标识为单个服务,这是一种逻辑上标识一组事务的方法
  • Transaction: 组成一个服务的请求和响应,例如登录api调用,每个调用由单独的span组成。
  • Span: 事务中的单个事件,例如方法调用,数据库查询或缓存插入或检索,即需要花费时间才能完成的任何事件。
  • Erorrs:具有匹配的异常或日志消息的异常组

它们之间的关系可以用如下的图来表示:

分布式tracing:

动手实践

使用python的flask框架进行演示

前提条件:

1.按照elasticsearch和kibana,版本均为7.5.0

es地址:http://192.168.75.21:9200

kibana地址:http://192.168.75.21:5601

2.使用pycharm构建一个简单的flask框架

第一步,安装配置apm-server服务端

下载地址:https://www.elastic.co/cn/downloads/

下载跟es版本相匹配的apm-server版本,上传到服务器中,解压缩,进入目录中,找到apm-server.yml文件并进行相应的修改:

apm-server:
host: "192.168.75.21:8200" idle_timeout: 100s
read_timeout: 100s
write_timeout: 100s
shutdown_timeout: 100s rum:
enabled: true queue:
mem:
events: 4096 kibana:
enabled: true
host: "192.168.75.21:5601" output.elasticsearch:
hosts: ["192.168.75.21:9200"]

保存后运行:./apm-server

此时查看kibana界面,会有如下信息:

在主页-添加数据-APM中检测APM Server 状态,查看如下:

第二步:安装配置apm-agent

1.安装 APM 代理:pip install elastic-apm[flask],将 Python 的 APM 代理安装为依赖项

2.配置代理,代理是在您的应用程序进程内运行的库。APM 服务是基于 SERVICE_NAME 以编程方式创建的。

#!/usr/bin/env python
# -*- coding: utf-8 -*- # 使用环境变量初始化
from elasticapm.contrib.flask import ElasticAPM
from flask import Flask app = Flask(__name__)
apm = ElasticAPM(app) # 或进行配置以在您的应用程序设置中使用 ELASTIC_APM
from elasticapm.contrib.flask import ElasticAPM app.config['ELASTIC_APM'] = {
# 设置所需的服务名称。允许使用的字符:
# a-z、A-Z、0-9、-、_ 以及空格
'SERVICE_NAME': 'sample_apm', # APM Server 需要令牌时使用
'SECRET_TOKEN': '', # 设置定制 APM Server URL(默认值:http://localhost:8200)
'SERVER_URL': 'http://192.168.75.21:8200',
} apm = ElasticAPM(app) @app.route("/")
def index():
return "111" if __name__ == '__main__':
app.run(debug=True)

运行该flask程序,检测apm-agent状态:

第三步:查看







附java项目的apm-agent:

http://search.maven.org/#search|ga|1|a%3Aelastic-apm-agent

Solutions:应用程序性能监控/管理(APM)实践---python/flask的更多相关文章

  1. Elastic:应用程序性能监控/管理(APM)实践

    在今天的文章里,我们将介绍Elastic的一个重要的应用:应用程序性能管理(Application Performance Monitoring/Management),简称APM.那么到底什么是AP ...

  2. NanoProfiler - 适合生产环境的性能监控类库 之 实践ELK篇

    上期回顾 上一期:NanoProfiler - 适合生产环境的性能监控类库 之 大数据篇 上次介绍了NanoProfiler的大数据分析理念,一晃已经时隔一年多了,真是罪过! 有朋友问到何时开源的问题 ...

  3. JVM-Java程序性能监控-初级篇

    前篇 - 小伙们都知道,java程序的性能监控主要是针对jvm中heap的监控~ 那么在做压力测试时如何对heap.线程等一系列的指标进行的监控的呢? 首先-你若不懂命令,那么就需要了解一套Java程 ...

  4. Elastic AMP监控.NET程序性能

    什么是Elastic AMP Elastic APM 是一个应用程序性能监控系统.它可以请求的响应时间.数据库查询.对缓存的调用.外部 HTTP 请求等的详细性能信息,可以实时监控软件服务和应用程序. ...

  5. Android 性能监控系列一(原理篇)

    欢迎关注微信公众号:BaronTalk,获取更多精彩好文! 一. 前言 性能问题是导致 App 用户流失的罪魁祸首之一,如果用户在使用我们 App 的时候遇到诸如页面卡顿.响应速度慢.发热严重.流量电 ...

  6. python flask框架学习(二)——第一个flask程序

    第一个flask程序 学习自:知了课堂Python Flask框架——全栈开发 1.用pycharm新建一个flask项目 2.运行程序 from flask import Flask # 创建一个F ...

  7. javaMelody监控javaWeb程序性能

    JavaMelody应用监控使用指南 原文:<JavaMelody应用监控使用指南> 前言 本文参考JavaMelody的UserGuide编写,部分文字均来自文档,添加有个人理解.并进行 ...

  8. RPM管理,计划任务与性能监控

    =========== RPM 软件包管理: 相关命令: rpm -ivh 软件包名称 rpm -e 软件包名称     rpm -U 软件名称 软件包信息查询: 相关命令: rpm -q 查询指定软 ...

  9. 多语言应用性能监控系统:Elastic APM

    ▶ 概述 Elastic APM 是基于 Elastic Stack 构建的应用性能监控系统.通过 Elastic APM 可以监控应用程序,收集有关请求的响应时间.数据库查询.高速缓存调用.外部 H ...

随机推荐

  1. 【docker专栏2】CentOS操作系统安装DockerCE

    目录 一.前置要求 二.更新软件源信息 三.安装 Docker-CE 四.卸载Docker CE 为大家介绍在CentOS操作系统中安装docker的过程,linux其他发行版本安装docker方法可 ...

  2. 关于又拍云免费cdn全网加速服务的长期评测(各种踩坑)

    原文转载自「刘悦的技术博客」 ( https://v3u.cn/a_id_128 ) 妇孺皆知,前端优化中最重要的优化手段之一就是cdn加速,所谓cdn加速就是采用更多的缓存服务器(CDN边缘节点), ...

  3. 海纳百川无所不容,Win10环境下使用Docker容器式部署前后端分离项目Django+Vue.js

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_179 随着现代化产品研发的不断推进,我们会发现,几乎每个产品线都会包含功能各异的服务,而且服务与服务之间存在也会存在着错综复杂的依 ...

  4. java-前端之js

    js: js的三种形式: <!-- 事件:就是用户的操作或者动作,就是js被调用的时机:如:单机事件,双击事件 --> <!-- 1.事件定义式:在定义事件时直接写js --> ...

  5. 在微信小程序中,如何获取 for 循环的 index

    微信小程序中,for 循环的 index(索引值)可以用wx:for-index="index"来获取. <view class="item" wx:fo ...

  6. 【Java】学习路径55-练习:制作一个聊天室(多线程、UDP、双向传输数据)

    创建四个类,实现双向聊天的功能. 接收线程: import java.io.IOException; import java.net.*; public class ReceiveThread imp ...

  7. Java数据类型扩展及面试题讲解

    这是关于数据类型的面试题,还是比较重要的. 1.整数拓展: 我们肯定都或多或少知道一个问题,叫进制问题.咱们常见的电脑里的二进制,然后咱们平时生活中用的是十进制,然后咱们工作的时候还有一个十六进制跟八 ...

  8. Java开发学习(三十一)----Maven属性与版本管理

    一.属性 1.1 问题分析 如下图所示 你会发现,如果现在想更新Spring的版本,你会发现依然需要更新多个jar包的版本,这样的话还是有可能出现漏改导致程序出问题,而且改起来也是比较麻烦. 问题清楚 ...

  9. Flink SQL 子图复用逻辑分析

    子图复用优化是为了找到SQL执行计划中重复的节点,将其复用,避免这部分重复计算的逻辑.先回顾SQL执行的主要流程 parser -> validate -> logical optimiz ...

  10. flutter系列之:flutter中常用的GridView layout详解

    目录 简介 GridView详解 GridView的构造函数 GridView的使用 总结 简介 GridView是一个网格化的布局,如果在填充的过程中子组件超出了展示的范围的时候,那么GridVie ...