Opbeat已死,請用Elastic APM

clipboard.png

今天收到Opbeat即將關閉的郵件。APM服務衆多,Opbeat有什麼優點呢?node

  1. 簡單,UI簡潔
  2. 能夠和Git集成,方便看版本發佈後性能變化
  3. 相似sentry的錯誤收集功能

後來Opbeat被Elastic收購了,作成了Elastic APM,過了快一年終於迎來關服,下面看看Elastic APM表現如何。linux

Docker快速部署

clipboard.png

官方文檔的一張圖,架構上Elastic APM和ES、Kibana仍是相對獨立的,集成也不難。redis

下面用Docker部署一個用於本地開發的環境,能夠快速上手而不用糾結運維和性能優化,這裏用了帶X-Pack的版本,由於有APM UI,否則就只有Dashboard。docker

啓動Elasticsearch性能優化

docker run -d -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:6.2.4

啓動Kibana,注意須要經過ELASTICSEARCH_URL設置ES的URL,IP要用網卡的IP,不能用localhost、127.0.0.1,否則會被docker隔離:架構

docker run -d -e ELASTICSEARCH_URL=http://192.168.0.102:9200 -p 5601:5601 docker.elastic.co/kibana/kibana:6.2.4

最後安裝APM Server:併發

wget https://artifacts.elastic.co/downloads/apm-server/apm-server-6.2.4-linux-x86_64.tar.gz
tar xf apm-server-6.2.4-linux-x86_64.tar.gz
cd apm-server-6.2.4-linux-x86_64
./apm-server setup
./apm-server -e

配置文件在apm-server.yml,都用默認配置。app

完成以後,打開Kibana,就能看到APM增長的Dashboard和APM UI。運維

NodeJS集成

NodeJS集成使用elastic-apm-node包,集成代碼必須加在代碼的最前面:koa

var apm = require('elastic-apm-node').start({
    serviceName: 'Demo API',
    serverUrl: 'http://localhost:8200'
})

寫了一個簡單的Koa應用看一下效果:

require('elastic-apm-node').start({
    serviceName: 'Demo API',
    secretToken: '',
    serverUrl: 'http://localhost:8200'
})

import Koa from 'koa';
import KoaRouter from 'koa-router';
import Redis from 'redis';
import {promisify} from 'util'

let app = new Koa()
let router = new KoaRouter();
let redis = Redis.createClient();

router.get("/", async (ctx, next) => {
    ctx.body = "OK";
});

router.get("/incr", async (ctx, next) => {
    let incr = promisify(redis.incr).bind(redis)
    let count = await incr("count")
    ctx.body = count;
});

app.use(router.routes());
app.listen(3000);

而後直接用siege分別10併發壓測兩個接口.

APM UI裏能夠看到響應時間、每分鐘請求數

clipboard.png

錯誤信息也有記錄:

clipboard.png

下面是每一個路由請求的狀況:

clipboard.png

點擊路由能看請求的詳細信息:

clipboard.png

Redis、MySQL、外部服務請求的耗時也會被自動被記錄(這裏只有一個Redis incr命令)。

Elastic APM功能基本和Opbeat一致,只缺了Git集成。

總結

若是你是Opbeat的用戶,又沒找到替代品,Elastic APM仍是值得一試的,畢竟幾乎一致的用戶體驗,接口可沒變化。

若是你是ELK的用戶,可是沒作APM,Elastic APM也是值得一試的,集成很是方便。

相關文章
相關標籤/搜索