微服務異常太亂,我們如何分類?
Elastic APM 是基於 Elastic Stack 構建的應用效能監控系統。通過 Elastic APM 可以監控應用程式,收集有關請求的響應時間、資料庫查詢、快取記憶體呼叫、外部 HTTP 請求等的詳細效能資訊,這樣可以更快地查明並修復效能問題。
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
APM監控
搭建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&
監控大盤
SQL語句
錯誤列表
錯誤統計
dashboard
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 排版