メインコンテンツまでスキップ
Sumo Logic Japanese

Amazon EKS - コントロール プレーン アプリケーションのログとメトリクスの収集

このページでは、Amazon EKS - コントロール プレーン用 Sumo アプリケーションでログとメトリクスを収集する手順を説明します。

収集プロセス  

Amazon EKS - コントロール プレーン アプリケーションのログとメトリクスの収集は、2 ステップのプロセスで設定します。

  • 収集のセットアップと Sumo Logic Kubernetes アプリケーションのインストール。
  • CloudWatch ログ収集の設定。

ステップ 1.Kubernetes アプリケーションをセットアップしてインストールする 

Sumo Logic Kubernetes アプリケーションは、Kubernetes ワーカー ノードの管理とモニタリングを行うサービスを提供します。EKS - コントロール プレーン アプリケーションの収集を設定する前に、Kubernetes アプリケーションの収集をセットアップしてアプリケーションをインストールする必要があります。このプロセスでは、ログとメトリクスの収集を設定します。

Kubernetes アプリケーションをセットアップしてインストールするにはこのドキュメントの手順に従ってください。

ステップ 2.CloudWatch ログ収集を設定する 

Amazon EKS は、次のログ タイプを使用します。

  • Kubernetes API サーバ コンポーネント ログ (api) – クラスタ API サーバは、Kubernetes API を提供するコントロール プレーン コンポーネントです。 
  • 監査 (audit) – Kubernetes 監査ログは、個別ユーザ、管理者、またはクラスタに影響を及ぼしたシステム コンポーネントの記録を提供します。 
  • 認証者 (authenticator) – 認証者ログは Amazon EKS に固有です。これらのログは、Amazon EKS が IAM 資格情報を使用した Kubernetes のロールベース アクセス制御 (RBAC) 認証で使用するコントロール プレーン コンポーネントを表します。
  • Controller Manager (controllerManager) – Controller Manager は、Kubernetes に含まれるコア コントロール ループを管理します。
  • Scheduler (scheduler) – Scheduler コンポーネントは、クラスタ内のどこでいつポッドを実行するかを管理します。

EKS ログの詳細については、Amazon ドキュメントを参照してください。

Amazon CloudWatch のログ収集を設定するには、次の手順を実行します。  

  1. 「CloudFormation テンプレートを使用したログの収集」の手順に従います。 
  2. Amazon 特有の詳細については、「Amazon EKS ログ」を参照してください。

ログ メッセージのサンプル 

API サーバ監査 
{
   "timestamp":1561532751495,
   "message":{
   "kind":"Event",
   "apiVersion":"audit.k8s.io/v1beta1",
   "metadata":{
      "creationTimestamp":"2019-06-26T07:05:51Z"
   },
   "level":"Metadata",
   "timestamp":"2019-06-26T07:05:51Z",
   "auditID":"8c7f04e6-19ae-4b02-a3a1-c1e03bea7f98",
   "stage":"ResponseComplete",
   "requestURI":"/api/v1/namespaces/kube-system/secrets/kube-proxy-token-w7wkr",
   "verb":"get",
   "user":{
      "username":"system:apiserver",
      "uid":"bf2d8ee6-319d-4735-94a1-2903bcef27cf",
      "groups":[
         "system:masters"
      ]
   },
   "sourceIPs":[
      "127.0.0.1"
   ],
   "objectRef":{
      "resource":"secrets",
      "namespace":"kube-system",
      "name":"kube-proxy-token-w7wkr",
      "apiVersion":"v1"
   },
   "responseStatus":{
      "metadata":{
      },
      "code":200
   },
   "requestReceivedTimestamp":"2019-06-26T07:05:51.447627Z",
   "stageTimestamp":"2019-06-26T07:05:51.450399Z",
   "annotations":{
      "authorization.k8s.io/decision":"allow",
      "authorization.k8s.io/reason":""
   }
   }
} 
 Google 認証システム
{
   "timestamp":1561533513014,
   "message":"time=\"2019-06-26T07:18:27Z\" level=info msg=\"access granted\"
   arn=\"arn:aws:iam::956882708938:role/arun-k8s-worker-nodes-NodeInstanceRole-1Q2W9LCWIMWT3\"
   client=\"127.0.0.1:58464\" groups=\"[system:bootstrappers system:nodes]\" method=POST
   path=/authenticate uid=\"heptio-authenticator-aws:956882708938:AROA55SVHNHFL55HJ3F5S\"
   username=\"system:node:ip-192-168-222-214.ec2.internal\""
}
API サーバ
{
   "timestamp":1561543835000,
   "message":"I0626 10:10:35.292107   1 get.go:245] Starting watch for /api/v1/persistentvolumes,
   rv=4220807 labels= fields= timeout=5m2s"
}
Controller Manager
{"timestamp":1561544407000,"message":"I0626 10:20:07.755497       1
cronjob_controller.go:173] Unable to update status for default/sumologic-k8s-api (rv = 6489402):
Operation cannot be fulfilled on cronjobs.batch \"sumologic-k8s-api\": the object has been modified;
please apply your changes to the latest version and try again"}
Scheduler
{"timestamp":1561106587000,"message":"I0621 08:43:07.395400       1
scheduler.go:197] Failed to schedule pod: hello-app/frontend-56f7975f44-8sgj7"}

クエリのサンプル

次のクエリ サンプルは、[EKS - API Server Audit Overview (EKS - API サーバ監査の概要)] ダッシュボードの [Top 10 URLS with Problem Status Codes (問題ステータス コードを返す上位 10 の URL)] パネルから引用されています。

_sourceCategory = "EKS_LOGS"
and _sourceName = kube-apiserver-audit*
| json field=_raw "message.responseStatus.code" as status_code
| json field=_raw "message.verb" as method
| json field=_raw "message.requestURI" as url
| json field=_raw "message.objectRef.resource" as k8_resource
| json field=_raw "message.sourceIPs" as ip
| where !(status_code matches "2*")
| count as urls_by_status by status_code, url
| sort by urls_by_status
| limit 10

 

  • この記事は役に立ちましたか?