微服務異常太亂,咱們如何分類?

Elastic APM 是基於 Elastic Stack 構建的應用性能監控系統。經過 Elastic APM 能夠監控應用程序,收集有關請求的響應時間、數據庫查詢、高速緩存調用、外部 HTTP 請求等的詳細性能信息,這樣能夠更快地查明並修復性能問題。java

Elastic APM 還會自動收集未處理的錯誤和異常,錯誤主要基於堆棧跟蹤進行分組,所以能夠識別出現的新錯誤,並密切關注特定錯誤發生的次數。linux

Elastic APM
Elastic APM

kibana

Kibana 是開源的分析和可視化平臺,旨在與 Elasticsearch 協同工做,能夠經過 Kibana 搜索、查看 Elasticsearch 中存儲的數據,此處用於可視化 Elasticsearch 中存儲的 APM 數據git

目錄

mkdir /app
cd /app

下載

wget https://artifacts.elastic.co/downloads/kibana/kibana-6.5.4-linux-x86_64.tar.gz

解壓

tar -zxvf kibana-6.5.4-linux-x86_64.tar.gz 
cd kibana-6.5.4-linux-x86_64/

配置

vi config/kibana.ymlgithub

[root@JD kibana-6.5.4-linux-x86_64]# vi config/kibana.yml 
server.port: 5601
server.host: "0.0.0.0"
elasticsearch.url: "http://47.99.88.28:9200"

啓動

nohup ./bin/kibana &

訪問Kibana

image
image

APM監控

image
image

搭建apm-server

APM Server 是用 Go 編寫的開源應用程序,一般運行在專用服務器上,默認監聽端口 8200 ,並經過 JSON HTTP API 從 agent 接收數據,而後根據該數據建立文檔並將其存儲在 Elasticsearch 中。web

wget https://artifacts.elastic.co/downloads/apm-server/apm-server-6.5.4-linux-x86_64.tar.gz

配置文件

[root@demo03 apm-server-6.5.4-linux-x86_64]# vi apm-server.yml 
apm-server:
  # Defines the host and port the server is listening on. use "unix:/path/to.sock" to listen on a unix domain socket.
  host: "0.0.0.0:8200"
  run:
    enabled: true
output.elasticsearch:
  # Array of hosts to connect to.
  # Scheme and port can be left out and will be set to the default (http and 9200)
  # In case you specify and additional path, the scheme is required: http://localhost:9200/path
  # IPv6 addresses should always be defined as: https://[2001:db8::1]:9200
  hosts: ["47.99.88.28:9200"]

  indices:
    - index: "apm-%{[beat.version]}-sourcemap"
      when.contains:
        processor.event: "sourcemap"

    - index: "apm-%{[beat.version]}-error-%{+yyyy.MM.dd}"
      when.contains:
        processor.event: "error"

    - index: "apm-%{[beat.version]}-transaction-%{+yyyy.MM.dd}"
      when.contains:
        processor.event: "transaction"

    - index: "apm-%{[beat.version]}-span-%{+yyyy.MM.dd}"
      when.contains:
        processor.event: "span"

    - index: "apm-%{[beat.version]}-metric-%{+yyyy.MM.dd}"
      when.contains:
        processor.event: "metric"

    - index: "apm-%{[beat.version]}-onboarding-%{+yyyy.MM.dd}"
      when.contains:
        processor.event: "onboarding"

啓動

nohup ./apm-server -e  >&/dev/null &

下載

cd app/agent
wget https://repo1.maven.org/maven2/co/elastic/apm/elastic-apm-agent/1.4.0/elastic-apm-agent-1.4.0.jar

應用埋點APM agent

APM agent 是使用與服務相同的語言編寫的開源庫,能夠像安裝其餘庫同樣將它們安裝到服務中,agent 將檢測服務的代碼並在運行時收集性能數據和錯誤,這些數據緩衝一小段時間併發送到 APM server。數據庫

#!/bin/bash
cs=`echo ../lib/*jar | sed 's/ /:/g'`
export JAVA_OPTS='-javaagent:/app/agent/elastic-apm-agent-1.4.0.jar -Delastic.apm.service_name=USER-CENTER -Delastic.apm.server_url=http://192.168.235.129:8200 -Delastic.apm.secret_token= -Delastic.apm.application_packages=com.open.capacity -XX:+UseG1GC -Xmx400M -Xms400M -XX:MaxMetaspaceSize=128M -XX:MetaspaceSize=128M -XX:MaxGCPauseMillis=100 -XX:InitiatingHeapOccupancyPercent=45 -XX:+ParallelRefProcEnabled -XX:MaxTenuringThreshold=3 -XX:+AlwaysPreTouch -XX:+UseStringDeduplication -XX:StringDeduplicationAgeThreshold=3 -XX:-OmitStackTraceInFastThrow -Djava.security.egd=file:/dev/./urandom -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCApplicationStoppedTime -XX:+PrintGCApplicationConcurrentTime -XX:+PrintTenuringDistribution -XX:+PrintClassHistogramBeforeFullGC -XX:+PrintClassHistogramAfterFullGC -Xloggc:/tmp/logs/gc_%p.log -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp/logs -XX:ErrorFile=/tmp/logs/hs_error_pid%p.log -Djava.rmi.server.hostname=127.0.0.1 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=2199 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false '

nohup java -server  $JAVA_OPTS  -cp  .:$cs  com.open.capacity.UserCenterApp   &>/dev/null  &   echo $! >pid&

#java -server $JAVA_OPTS -cp .:$cs com.open.capacity.UserCenterApp & echo $! >pid&

監控大盤

image
image

SQL語句

SQL語句界面
SQL語句界面

錯誤列表

錯誤列表界面
錯誤列表界面

錯誤統計

錯誤統計界面
錯誤統計界面

dashboard

dashboard界面
dashboard界面

service

service界面
service界面

來源OCP開源項目教程文檔:https://www.kancloud.cn/owenwangwen/open-capacity-platform/1801099緩存

文末

文章收錄至 Github: https://github.com/CoderMerlin/coder-programming Gitee: https://gitee.com/573059382/coder-programming 歡迎關注並star~bash

微信公衆號
微信公衆號

本文使用 mdnice 排版服務器

相關文章
相關標籤/搜索