スカイウォーキングとは
Skywalking は、国内のオープンソース愛好家である Wu Sheng 氏が Apache インキュベーターに提出したオープンソース製品であり、Zipkin/Pinpoint/CAT の設計思想も吸収しています。特徴は、さまざまなプラグインのサポート、強力な UI 機能、非侵入的な埋め込みポイントのサポートです。現在ではほとんどのメーカーが使用しており、バージョンアップも早いです。
データ ストレージのサポート: Elasticsearch、MySQL、H2、TiDB。デフォルトは H2 で、メモリに保存されます。実際、通常はESに保存します。
ホームページ: http://skywalking.apache.org/
ダウンロード: https://skywalking.apache.org/downloads/
github: https://github.com/apache/skywalking
ドキュメント: https://github.com/ Apache /skywalking/tree/master/docs
設定: https://github.com/apache/skywalking/tree/master/docs/en/setup/backend
APM
emsp; APM (Application Performance Management の正式名) は、さまざまなプローブを通じてデータを収集し、主要な指標を収集し、それらのデータをまとめて提示して、アプリケーション パフォーマンス管理と障害管理に対する体系的なソリューションを実現することを目的としています。
Zabbix、Premetheus、open-falcon などの監視システムは主にサーバー ハードウェアのインジケーターとシステム サービスの実行ステータスに焦点を当てていますが、APM システムはプログラムの内部実行プロセスのインジケーターとサービス間のリンク呼び出しの監視により注意を払っています。詳細なコード リクエスト応答の「遅い」という根本的な問題を発見し、Zabbix などの監視システムを補完します。現在、市場に出回っているオープンソース APM システムには、主に CAT、Zipkin、Pinpoint、SkyWalking が含まれます。 Google の実装を参照してくださいDapper
。
リンクトレースツールの比較
リンク追跡ツールには通常、次の機能があります。
- ハートビート検出 (アプリケーションがまだ実行中かどうかを判断するため)
- リクエストの実行プロセスと実行時間を記録します。
- リソース監視(CPU、メモリ、帯域幅、ディスク)
- アラーム機能(実行時間、成功率などを監視し、メール、DingTalk、SMS、WeChatなどで通知)
- ビジュアライゼーションページ
一般的に使用されるツールには次のものがあります。
Zipkin
Twitter のオープンソース コール チェーン分析ツールは、springcloud sleuth をベースとして現在広く使用されており、軽量で使用とデプロイが簡単であることが特徴です。 バイトコードインジェクションに基づく韓国のオープンソースコールチェーン分析とアプリケーション監視分析ツールを
ピンポイントで提供します。
さまざまなプラグインをサポートし、強力な UI 機能を備え、アクセス側でコードの侵入がないことが特徴です。
SkyWalking は、
バイトコード インジェクションに基づくローカル オープン ソース コール チェーン分析、およびアプリケーションの監視および分析ツールです。さまざまなプラグインをサポートし、強力な UI 機能、アクセス側でのコード侵入がないことが特徴です。現在、Apache インキュベーターに参加しています。
CAT
Dianping のオープンソース監視プラットフォーム ツールには、コール チェーン分析、アプリケーション監視分析、ログ収集、コーディングと構成に基づく監視と警報が含まれます。
各種寸法の比較
比較品 | ジップキン | ピンポイント | スカイウォーキング | 猫 |
---|---|---|---|---|
実現方法 | リクエストをインターセプトし、(Http、MQ) データを Zipkin サービスに送信します | Java プローブ、バイトコード拡張 | Java プローブ、バイトコード拡張 | コード埋め込みポイント (インターセプター、アノテーション、フィルターなど) |
アクセス方法 | linkerd または sleuth メソッドに基づく | Javaエージェントのバイトコード | Javaエージェントのバイトコード | コード侵入 |
エージェントからコレクターへのプロトコル | http、MQ | 倹約 | gRPC | http/tcp |
オープントレーシング | サポート | サポートしません | サポート | サポートしません |
粒状性 | インターフェースレベル | メソッドレベル | メソッドレベル | コードレベル |
グローバルな通話統計 | サポートしません | サポート | サポート | サポート |
トレースIDクエリ | サポート | サポートしません | サポート | サポートしません |
警察を呼んで下さい | サポートしません | サポート | サポート | サポート |
JVM監視 | サポートしません | サポートしません | サポート | サポート |
UI機能 | サポート | サポート | サポート | サポート |
データストレージ | ES、MySQLなど | HBase | ES/H2/MySQL | MySQL/HDFS |
性能比較表
スカイウォーキングの特徴
- 言語プローブとサービスメッシュを通じて監視データを取得する、さまざまな監視方法
- Java、.NET Core、Node.js を含む複数の言語での自動プローブをサポート
- 軽量かつ効率的で、ビッグデータ プラットフォームや大量のサーバー リソースは必要ありません。
- モジュール化、UI、ストレージ、クラスター管理に使用できるメカニズムが複数あります。
- サポートアラーム、アラーム
- 優れた視覚化ソリューション
スカイウォーク構造
例証します:
- Skywalking エージェントはビジネス システムにバインドされており、さまざまな監視データの収集を担当します。
- Skywalking oapservice は、Skywalking エージェントから監視データを受信してデータベースに保存する、Skywalking Web アプリ フロントエンドからのリクエストを受け入れる、データベースからデータをクエリしてフロントエンドに返すなど、監視データの処理を担当します。 oapservice は通常、クラスター内に構築されます。
- データを視覚的に表示するために使用される Skywalking Web アプリ、UI サービス
- ユーザーが監視データを永続化するためのデータベースは、ElasticSearch、MySQL などを選択できます。
インストールと展開
公式ウェブサイト
http://skywalking.apache.org/
ダウンロード
http://skywalking.apache.org/downloads/
起動する
サービスアクセスプローブ
脚本
# 生产环境
#!/bin/sh
# SkyWalking Agent配置
export SW_AGENT_NAME=boot-micrometer #Agent名字,一般使用`spring.application.name`
export SW_AGENT_COLLECTOR_BACKEND_SERVICES=127.0.0.1:11800 #配置 Collector 地址。
export SW_AGENT_SPAN_LIMIT=2000 #配置链路的最大Span数量,默认为 300。
export JAVA_AGENT=-javaagent:/root/apache-skywalking-apm-bin/agent/skywalking-agent.jar
java $JAVA_AGENT -jar springcloudalibaba-0.0.1-SNAPSHOT.jar #jar启动
統合されたIDE
# java应用启动时
-Xmx512m
-javaagent:E:/environment/SpringCloudAlibaba/skywalking/skywalking-agent/skywalking-agent.jar
-Dskywalking.agent.service_name=provider
-Dskywalking.collector.backend_service=127.0.0.1:11800
スカイウォーキングは複数のマイクロサービスにわたるゲートウェイを追跡します (バグ)
SkyWalkingの3つのコンセプト
- サービス: リクエストに対して同じ動作を提供する一連のワークロードまたはグループを表します。エージェントを使用する場合は、サービスの名前を定義できます。
- サービス インスタンス: 上記の一連のワークロードの各ワークロードはインスタンスと呼ばれます。サービス インスタンスは、実際にはオペレーティング システム上の実際のプロセスです。
- エンドポイント: HTTP の URI パスや gRPC サービスのクラス名 + メソッド署名など、特定のサービスによって受信されたリクエスト パス。
モニターダッシュボード ダッシュボード
ダッシュボード:http://127.0.0.1:8080/
データ収集ポート:
-
HTTP デフォルトポート 12800
-
gRPC のデフォルト ポート 11800
カスタム SkyWalking リンク
デフォルトでは、Skywalking はビジネス メソッドを記録しません。ビジネス メソッドのリンク監視を追加する必要がある場合は、次の依存関係を追加する必要があります。
<dependency>
<groupId>org.apache.skywalking</groupId>
<artifactId>apm-toolkit-trace</artifactId>
<version>8.8.0</version>
</dependency>
次に、ビジネスメソッドに @Trace アノテーションを追加します。その後、メソッドが監視されます
このメソッドの詳細を確認してください。戻り情報やパラメーターがありません。
この問題は @Tags と @Tag を使用して解決できます。
@Trace //表示当前方法会被skywalking追踪
@Tags({
//显示指定的返回结果和参数
@Tag(key = "process",value = "returnedObj"),//key:方法名 value = returnedObj:是指定返回值
@Tag(key = "param",value = "arg[0]")//返回第一个参数
})
key:メソッド名 value=returnedObj:yes(指定) 戻り値
arg[0]:パラメータ
統合されたロギングフレームワーク
マイクロサービスのログ フレームワークを SkyWalking と統合し、現在の呼び出しリンクの ID がマイクロサービスのログに記録されることを期待します。その後、この ID に基づいて SkyWalking のフロントエンド インターフェイスを検索して、対応する呼び出しリンクを見つけることができます。記録。
springboot によって実装されるデフォルトのロギング フレームワークは logback であるため、ここでは例として logback を取り上げます。
マイクロサービスに Maven 座標をインポートする
<!-- skywalking 日志记录 -->
<dependency>
<groupId>org.apache.skywalking</groupId>
<artifactId>apm-toolkit-logback-1.x</artifactId>
<version>8.5.0</version>
</dependency>
プロジェクトディレクトリにファイルをresources
作成しますlogback-spring.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<!-- 日志的格式化 -->
<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
<layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout">
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level logger_name:%logger{36} - [%tid] - message:%msg%n</pattern>
</layout>
</encoder>
</appender>
<!-- 设置 Appender -->
<root level="INFO">
<appender-ref ref="console" />
</root>
</configuration>
Skywalking UIのログメニューにログ情報を表示(共通使用)
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- 控制台日志输出的格式中添加tid -->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<!-- 日志的格式化 -->
<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
<layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout">
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level logger_name:%logger{36} - [%tid] - message:%msg%n</pattern>
</layout>
</encoder>
</appender>
<!-- skywalking grpc 日志收集 8.4.0版本开始支持 -->
<!-- https://skywalking.apache.org/docs/skywalking-java/latest/en/setup/service-agent/java-agent/application-toolkit-logback-1.x/ -->
<!-- 通过grpc上报日志到skywalking oap-->
<appender name="grpc-log" class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.log.GRPCLogClientAppender">
<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
<layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.mdc.TraceIdMDCPatternLogbackLayout">
<Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%tid] [%thread] %-5level %logger{36} -%msg%n</Pattern>
</layout>
</encoder>
</appender>
<!-- 设置 Appender -->
<root level="INFO">
<appender-ref ref="console" />
<appender-ref ref="grpc-log" />
</root>
</configuration>
アラームサービス
アラームログ
グローバルなグローバル次元
サービス負荷: 1 分あたりのサービス リクエストの数
遅いサービス: 応答が遅いサービス、単位はミリ秒
Un-Health サービス (Apdex) : Apdex パフォーマンス インデックス、1 は完璧なスコアです。
- Apdex は、多くのネットワーク分析技術企業と計測業界で構成されるアライアンスであり、「アプリケーション パフォーマンス インデックス」(Application Performance Index) を共同開発しました。Apdex を一言で言えば、アプリケーションのパフォーマンスに対するユーザーの満足度を数値化したものです。
- http://www.apdex.org/
遅いエンドポイント: 遅い応答エンドポイント、単位はミリ秒
グローバル応答遅延: 応答遅延の割合、さまざまな割合の遅延時間、単位はミリ秒
グローバル ヒートマップ: サービス応答時間の熱分布マップ。一定期間内の異なる応答時間の数に応じて色の濃さを表示します。
サービスサービスの次元
Service Apdex (数値): 現在のサービスの評価
サービスの平均応答時間: 平均応答遅延、単位はミリ秒
成功率 (数値) : リクエストの成功率
サービス負荷 (数値) : 1 分あたりのリクエストの数
Service Apdex (折れ線グラフ) : さまざまな時点での Apdex スコア
サービス応答時間のパーセンタイル: 応答遅延の割合
成功率 (折れ線グラフ) : さまざまな時点でのリクエストの成功率
サービス負荷 (折れ線グラフ) : さまざまな時間における 1 分あたりのリクエストの数
サービス インスタンスの負荷: サービス インスタンスごとの 1 分あたりのリクエスト数
遅いサービス インスタンス: 各サービス インスタンスの最大遅延
Service Instance Successful Rate : 各サービス インスタンスのリクエスト成功率
実例
サービス インスタンスの負荷: 現在のインスタンスの 1 分あたりのリクエスト数
Service Instance Successful Rate : 現在のインスタンスのリクエスト成功率
Service Instance Latency : 現在のインスタンスの応答遅延
JVM CPU : jvm が占有する CPU の割合
JVM メモリ: JVM メモリ サイズ、単位 m
JVM GC Time : JVM ガベージ コレクション時間 (YGC と OGC を含む)
JVM GC Count : JVM ガベージ コレクション時間 (YGC と OGC を含む)
終点
現在のサービスのエンドポイント負荷: エンドポイントごとの 1 分あたりのリクエスト数
現在のサービスの遅いエンドポイント: 各エンドポイントの最も遅いリクエスト時間 (ミリ秒)
現在のサービスの成功率: 各エンドポイントのリクエスト成功率
Endpoint Load : 現在のエンドポイントの各期間のデータをリクエストします
エンドポイントの平均応答時間: 現在のエンドポイントの各期間のリクエスト ラインの応答時間
エンドポイント応答時間パーセンタイル: 現在のエンドポイントの各期間の応答時間の割合
エンドポイント成功率: 各期間における現在のエンドポイントのリクエスト成功率