Application Monitoring eBPF Edition は、拡張 Berkeley Packet Filter (eBPF) 技術に基づいて構築された Kubernetes クラスター向けの可観測性サービスです。コードに侵入することなくコンテナからレート、エラー、デュレーション (RED) のパフォーマンスデータを収集し、関連するサービスと、Deployment、StatefulSet、DaemonSet などのコントローラーワークロードを自動的に関連付けて、トラブルシューティングを迅速化します。
前提条件
開始する前に、以下をご確認ください:
ACK クラスター。詳細については、「ACK マネージドクラスターの作成」をご参照ください。
Application Real-Time Monitoring Service (ARMS) が有効化されていること。詳細については、「ARMS の有効化」をご参照ください。
Application Monitoring eBPF Edition の OS 要件を満たす環境。詳細については、「Application Monitoring eBPF Edition のオペレーティングシステムに関する要件と制限事項」をご参照ください。
仕組み
Application Monitoring eBPF Edition では、クラスターに 2 つのエージェントをインストールする必要があります:
| エージェント | コンポーネント ID | 目的 |
|---|---|---|
| Prometheus モニタリングエージェント | ack-arms-prometheus | Managed Service for Prometheus を介してクラスターメトリックを収集します |
| Application Monitoring eBPF Edition コンポーネント | ack-arms-cmonitor | コンテナから RED パフォーマンスデータを収集します |
Application Monitoring eBPF Edition のメトリックは Managed Service for Prometheus によって収集されるため、eBPF モニタリングのみを使用する場合でも ack-arms-prometheus が必要です。ACK クラスターの接続
ステップ 1:ARMS アドオントークンの確認
ack-arms-cmonitor をインストールする前に、クラスターに ARMS アドオントークン (addon.arms.token) があるかどうかを確認します。トークンが存在する場合、ARMS は自動的にパスワードなしの権限付与を実行します。存在しない場合は、必要な RAM ポリシーを手動でアタッチする必要があります。
ACK コンソールにログインします。左側のナビゲーションウィンドウで、ACK コンソール[クラスター] をクリックします。
クラスター名をクリックし、左側のナビゲーションウィンドウで [設定] > [シークレット] を選択します。
[名前空間] ドロップダウンリストから [kube-system] を選択し、[addon.arms.token] が存在するかどうかを確認します。
| トークンのステータス | 次のステップ |
|---|---|
| トークンが存在する | ステップ 2:ack-arms-cmonitor のインストール |
| トークンが存在しない | 先に進む前に ステップ 1b:RAM ポリシーのアタッチ を完了します |
ACK マネージドクラスター:特定の ACK マネージドクラスターでは、ARMS アドオントークンが存在しない場合があります。まず確認し、必要に応じて手動で権限付与を完了してください。
ACK 専用クラスター:デフォルトでは ARMS アドオントークンは存在しません。常に手動での権限付与が必要です。
ステップ 1b:RAM ポリシーのアタッチ (トークンが存在しない場合)
次のポリシーをワーカー Resource Access Management (RAM) ロールにアタッチします:
AliyunARMSFullAccess— ARMS に対する完全な権限AliyunTracingAnalysisFullAccess— トレーシング分析に対する完全な権限
ACK コンソールにログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。
クラスター名をクリックします。左側のナビゲーションウィンドウで、[クラスター情報] をクリックします。
[基本情報] タブで、[クラスターリソース] セクションを見つけ、[ワーカー RAM ロール] の横にあるリンクをクリックします。
RAM コンソールで、[権限] タブをクリックし、[権限の付与] をクリックします。
[権限の付与] パネルで、両方のポリシーを選択し、[権限を付与] をクリックします:
AliyunTracingAnalysisFullAccessAliyunARMSFullAccess
ステップ 2:ack-arms-cmonitor のインストール
ack-arms-cmonitor がすでにインストールされている場合は、まずバージョンを確認してください。ACK コンソールで、クラスターの左側のナビゲーションウィンドウから [操作] > [アドオン] を選択します。バージョンが 4.0.0 より前の場合は、先に進む前に [アップグレード] をクリックしてください。
ACK コンソールにログインします。左側のナビゲーションウィンドウで [クラスター] をクリックし、次にクラスター名をクリックします。
左側のナビゲーションウィンドウで、[操作] > [クラスタートポロジー] を選択します。
[クラスタートポロジー] ページで、[インストール] をクリックします。ACK コンソールがエージェントを自動的にインストールします。
デフォルトの名前空間は
arms-promです。(ACK 専用クラスターのみ) AccessKey ペアを更新します:
左側のナビゲーションウィンドウで、[アプリケーション] > [Helm] を選択します。
arms-cmonitor を見つけて、[更新] をクリックします。accessKey および accessKeySecret を、Alibaba Cloud アカウントの AccessKey ID と AccessKey シークレットに設定します。詳細については、「主アカウントの AccessKey ペアの取得」をご参照ください。> [重要]: Alibaba Cloud アカウントに、
AliyunARMSFullAccessポリシーおよびAliyunSTSAssumeRoleAccessポリシーがアタッチされていることを確認してください。[OK] をクリックします。
アプリケーションでの Application Monitoring eBPF Edition の有効化
ご利用のワークフローに合った統合方法を選択してください:
| 方法 | 最適なケース |
|---|---|
| ACK コンソールによる手動統合 | 既存のアプリケーション、または YAML でデプロイされた新しいアプリケーション |
| ARMS コンソールによる自動統合 | 複数のアプリケーションの一括オンボーディング |
手動統合
Deployment の YAML ファイルの spec.template.metadata.labels セクションに、次のラベルを追加します:
armseBPFAutoEnable: "on"
armseBPFCreateAppName: "<your-deployment-name>" # ご利用のアプリケーション名に置き換えてくださいApplication Monitoring eBPF Edition を有効にして Deployment を作成する完全な例:
apiVersion: v1
kind: Namespace
metadata:
name: arms-demo
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: arms-springboot-demo
namespace: arms-demo
labels:
app: arms-springboot-demo
spec:
replicas: 2
selector:
matchLabels:
app: arms-springboot-demo
template:
metadata:
labels:
app: arms-springboot-demo
armseBPFAutoEnable: "on"
armseBPFCreateAppName: "arms-k8s-demo"
spec:
containers:
- resources:
limits:
cpu: 0.5
image: registry.cn-hangzhou.aliyuncs.com/arms-docker-repo/arms-springboot-demo:v0.1
imagePullPolicy: Always
name: arms-springboot-demo
env:
- name: SELF_INVOKE_SWITCH
value: "true"
- name: COMPONENT_HOST
value: "arms-demo-component"
- name: COMPONENT_PORT
value: "6666"
- name: MYSQL_SERVICE_HOST
value: "arms-demo-mysql"
- name: MYSQL_SERVICE_PORT
value: "3306"
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: arms-springboot-demo-subcomponent
namespace: arms-demo
labels:
app: arms-springboot-demo-subcomponent
spec:
replicas: 2
selector:
matchLabels:
app: arms-springboot-demo-subcomponent
template:
metadata:
labels:
app: arms-springboot-demo-subcomponent
armseBPFAutoEnable: "on"
armseBPFCreateAppName: "arms-k8s-demo-subcomponent"
spec:
containers:
- resources:
limits:
cpu: 0.5
image: registry.cn-hangzhou.aliyuncs.com/arms-docker-repo/arms-springboot-demo:v0.1
imagePullPolicy: Always
name: arms-springboot-demo-subcomponent
env:
- name: SELF_INVOKE_SWITCH
value: "false"
- name: MYSQL_SERVICE_HOST
value: "arms-demo-mysql"
- name: MYSQL_SERVICE_PORT
value: "3306"
---
apiVersion: v1
kind: Service
metadata:
labels:
name: arms-demo-component
name: arms-demo-component
namespace: arms-demo
spec:
ports:
- name: arms-demo-component-svc
port: 6666
targetPort: 8888
selector:
app: arms-springboot-demo-subcomponent
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: arms-demo-mysql
namespace: arms-demo
labels:
app: mysql
spec:
replicas: 1
selector:
matchLabels:
app: mysql
template:
metadata:
labels:
app: mysql
spec:
containers:
- resources:
limits:
cpu: 0.5
image: registry.cn-hangzhou.aliyuncs.com/arms-docker-repo/arms-demo-mysql:v0.1
name: mysql
ports:
- containerPort: 3306
name: mysql
---
apiVersion: v1
kind: Service
metadata:
labels:
name: mysql
name: arms-demo-mysql
namespace: arms-demo
spec:
ports:
- name: arms-mysql-svc
port: 3306
targetPort: 3306
selector:
app: mysqlACK コンソール経由でデプロイするには:
ACK コンソールにログインします。[クラスター] ページで対象のクラスターを見つけ、[アクション] 列の [アプリケーション] をクリックします。
[デプロイメント] ページで、[YAML から作成] をクリックします。
[サンプルテンプレート] ドロップダウンリストからテンプレートを選択し、
spec.template.metadataセクションにラベルを追加して適用します。
自動統合
ARMS コンソールにログインします。
左側のナビゲーションウィンドウで [インテグレーションセンター] をクリックします。[サーバーアプリケーション] セクションで、[eBPF アプリケーションモニター] カードをクリックします。
表示されるパネルで、プロンプトに従ってパラメーターを設定し、統合を完了します。
統合の確認
統合後、アプリケーションとクラスターがモニタリングされていることを確認します:
ARMS コンソールで、左側のナビゲーションウィンドウの [統合管理] をクリックして、ARMS に統合されているすべてのアプリケーションとサービスを表示します。
[統合済み環境] タブで、ACK クラスター名をクリックして以下を表示します:
クラスターの基本情報
有効化されたコンポーネント
クラスターメトリック
このページから、必要に応じてメトリックを調査したり、ARMS エージェントを設定したりできます。
次のステップ
Application Monitoring eBPF Edition とは — 基盤となる技術とモニタリング機能について学びます