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

Coder程式設計發表於2020-07-08

Elastic APM 是基於 Elastic Stack 構建的應用效能監控系統。通過 Elastic APM 可以監控應用程式,收集有關請求的響應時間、資料庫查詢、快取記憶體呼叫、外部 HTTP 請求等的詳細效能資訊,這樣可以更快地查明並修復效能問題。

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

Elastic APM
Elastic APM

kibana

Kibana 是開源的分析和視覺化平臺,旨在與 Elasticsearch 協同工作,可以通過 Kibana 搜尋、檢視 Elasticsearch 中儲存的資料,此處用於視覺化 Elasticsearch 中儲存的 APM 資料

目錄

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.yml

[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 中。

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~

微信公眾號
微信公眾號

本文使用 mdnice 排版

相關文章