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

Kubernetes のログの収集

Kubernetes のログ収集をセットアップする方法。

ステップ 1.ホスト型コレクタと HTTP ソースの作成

このステップでは、Sumo サービスでログを受信するために HTTP エンドポイントを作成します。このプロセスでは、Sumo のホスト型コレクタで HTTP ソースを作成します。Sumo では、コレクタがソースを使用してデータを受信します。

ホスト型コレクタと HTTP ソースの作成手順

  1. まだ Sumo アカウントをお持ちでない場合、https://www.sumologic.com/[Free Trial (無料トライアル)] をクリックすればアカウントを作成できます。

  2. Sumo ヘルプの「ホスト型コレクタの設定」の指示に従って、ホスト型コレクタを作成します。(ホスト型コレクタがすでに作成されている場合は、この手順はスキップしてください。)

  3. 前のステップで作成したコレクタで HTTP ソースを作成します。手順については、Sumo ヘルプの「HTTP ログとメトリクス ソース」を参照してください。

  4. HTTP ソースの設定が完了したら、Sumo に HTTP エンドポイントの URL が表示されます。この URL を書き留めます。この URL は、データを Sumo に送信するために Kubernetes サービスを設定するときに使用します。

ステップ 2.Kubernetes シークレットの作成

HTTP ソース URL を使用して Kubernetes でシークレットを作成します。シークレット名を変更するには、それに合わせて Kubernetes マニフェストを変更する必要があります。

kubectl create secret generic sumologic --from-literal=collector-url=<HTTP_Soucre_URL>

<HTTP_Source_URL> は、「ステップ 1 ホスト型コレクタと HTTP ソースの作成」でHTTP ソースを作成したときに表示された URL です。

次の確認メッセージが表示されます。

secret "sumologic" created

ステップ 3.Sumo Kubernetes FluentD プラグインのインストール

このステップでは、kubectl を使用して FluendD プラグインをインストールします。

開始する前に、FluendD の Readme ファイルの 「環境変数」で、カスタマイズできる設定、注釈を使用して選択した環境変数を上書きし、Sumo への送信からデータを除外する方法について確認してください。環境変数により、カスタム メタデータ値を指定できます。

  1. GitHub リポジトリを複製します。

  2. リポジトリには、2 つのバージョンの fluentd.yaml が入っています。使用するファイルは、認証に RBAC を使用しているかどうかによって異なります。RBAC は Kubernetes 1.6 以上ではデフォルトで有効になっています。

    RBAC を使用していない場合 (Kubernetes 1.5 以下) は、このコマンドを実行します。

    kubectl create -f /daemonset/nonrbac/fluentd.yaml

    RBAC を使用している場合 (Kubernetes 1.6 以上) は、このコマンドを実行します。

    kubectl create -f /daemonset/rbac/fluentd.yaml

プラグインをインストールしてから数分以内に次のログが Sumo に取り込まれ始めます。

  • Kube API Server ログ
  • Kube Control Manager ログ
  • Kube Scheduler ログ
  • Kube-System Namespace ログ
  • コンテナ ログ

ステップ 4.Kubernetes API ログの収集

このステップでは、Kubernetes API ログの収集を設定します。  Kubernetes API から情報を抽出して Sumo に転送するための Dockerized python スクリプトが用意されています。

Kubernetes API ログを収集する手順

  1. 「ステップ 1 ホスト型コレクタと HTTP ソースの作成」で作成したホスト型コレクタ上で HTTP ソースを作成します。手順については、Sumo ヘルプの「HTTP ログとメトリクス ソース」を参照してください。ソースのソース カテゴリを k8s/api/ に設定します。

  2. HTTP ソースの設定が完了したら、Sumo に HTTP エンドポイントの URL が表示されます。この URL を書き留めます。

  3. Dockerized python スクリプトが含まれている sumologic-k8s-api リポジトリを複製します。

  4. Kubernetes クラスタで RBAC を使用している場合は sumologic-k8s-api-cronjob-rbac.yaml. を開きます。RBAC を使用していない場合は sumologic-k8s-api-cronjob.yaml を開きます。 

  5. YAML ファイルの env セクションに HTTP ソースの URL を挿入します。

  6. (省略可能) 必要に応じて CronJob スケジュールを更新します。デフォルトでは 5 分ごとに実行されます。

  7. RBAC を使用しているかどうかによって次のいずれかのコマンドを実行します。

    RBAC を使用している場合は、このコマンドを実行します。

    kubectl create -f sumologic-k8s-api-cronjob-rbac.yaml


    RBAC を使用していない場合は、このコマンドを実行します。

    kubectl create -f sumologic-k8s-api-cronjob.yaml

Heapster による Kubernetes のメトリクスの収集

Kubernetes クラスタからメトリクスを収集するためのお勧めの方法は、Heapster と Sumo コレクタおよび Graphite ソースを使用することです。Heapster は Kubenetes クラスタ全体のメトリクスを集計します。Heapster はクラスタ内のポッドとして実行され、クラスタのすべてのノードを検出して各ノードの kubelet (マシン上の Kubernetes エージェント) から使用率情報を照会します。Heapster は、クラスタ、ノード、およびポッド レベルのメトリクスを提供します。

この手順では、YAML 設定ファイルを使用して以下の Kubernetes リソースをインストールまたは設定します。

  • Heapster — heapster.yaml ファイルは、Heapster を Kubernetes クラスタにインストールし、Kubernetes クラスタでデプロイとして動作する Sumo コレクタに対して Graphite 形式で メトリクス データを送信するように Graphite シンクを設定します。

  • 設定マップ — configmap.yaml ファイルは、Sumo インストール済みコレクタを Kubernetes クラスタにデプロイするための deployment.yaml ファイル (下記参照) 設定を提供します。

  • Kubenetes サービス — Kubernetes ポッドは、Kubernetes サービスを使用して相互に通信します。service.yaml は、Heapster が デプロイとして動作している Sumo コレクタ ポッドと通信するために使用するサービスを作成します。

  • デプロイ — deployment.yaml は、いずれかの Kubernetes クラスタに Sumo インストール済みコレクタのレプリカを 2 つ作成します (それぞれの名前は「sumo-graphite」です)。  この Kubernetes デプロイは、sumo-sources 設定マップ (configmap.yaml ファイルで作成されます) を使用して Kubernetes クラスタで Sumo インストール済みコレクタを設定します。

kubernetes-metrics.png

YAML 設定の適用

YAML 設定は次のコマンドで適用します。

Kubectl apply -f heapster.yaml Kubectl apply -f configmap.yaml Kubectl apply -f service.yaml Kubectl apply -f deployment.yaml

メトリクス収集の検証

次のコマンドで動作を確認します。

kubectl get service

kubectl describe service sumo-graphite

kubectl get pods

kubectl get all

数分したら Sumo Web アプリケーションにログインし、[Collection (コレクション)] ページ ([Manage Data (データの管理)] > [Collection (コレクション)] > [Collection (コレクション)]) で、Sumo コレクタが Heapster からメトリクスを受信していることを確認します。

YAML 設定ファイル

このセクションでは、「Heapster 経由での Kubernetes 用のメトリクス収集」で説明した YAML ファイルを示します。

heapster.yaml

このセクションでは heapster.yaml の内容を示します。

Graphite シンクは、デフォルトの名前空間を使用して「sumo-graphite」にメトリクスを送信するように設定されます。

apiVersion: v1
kind: ServiceAccount
metadata:
  name: heapster
  namespace: kube-system
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: heapster
  namespace: kube-system
spec:
  replicas: 1
  template:
    metadata:
      labels:
        task: monitoring
        k8s-app: heapster
    spec:
      serviceAccountName: heapster
      containers:
      - name: heapster
        image: k8s.gcr.io/heapster-amd64:v1.4.2
        imagePullPolicy: IfNotPresent
        command:
        - /heapster
        - --source=kubernetes:https://kubernetes.default
        - --sink=graphite:tcp://sumo-graphite.default:2003?prefix=kubernetes.training

configmap.yaml

kind: ConfigMap
apiVersion: v1
metadata:
  name: "sumo-sources"
data:
  sources.json: |-
    {
      "api.version": "v1",
      "sources": [
        {
          "name": "Ankit Test",
          "category": "kubernetes/metrics",
          "automaticDateParsing": true,
          "contentType": "Graphite",
          "timeZone": "UTC",
          "encoding": "UTF-8",
          "protocol": "TCP",
          "port": 2003,
          "sourceType": "Graphite"
        }
      ]
    }

deployment.yaml

env:value タグのプレイスホルダには、Sumo Logic アクセス ID とキーを代入します。

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  labels:
    app: sumo-graphite
  name: sumo-graphite
spec:
  replicas: 2
  template:
    metadata:
      labels:
        app: sumo-graphite
    spec:
      volumes:
      - name: sumo-sources
        configMap:
          name: sumo-sources
          items:
          - key: sources.json
            path: sources.json
      containers:
      - name: sumo-graphite
        image: sumologic/collector:latest
        ports:
        - containerPort: 2003
        volumeMounts:
        - mountPath: /sumo
          name: sumo-sources
        env:
        - name: SUMO_ACCESS_ID
          value: <SUMO_ACCESS_ID> 
        - name: SUMO_ACCESS_KEY
          value: <SUMO_ACCESS_KEY>
        - name: SUMO_SOURCES_JSON
          value: /sumo/sources.json

service.yaml

以下に抜粋する service.yaml ファイルは、「sumo-graphite」というサービス (Heapster 設定の Graphite/Carbon シンクのホストです) を作成し、sumo-graphite というアプリケーション名 (service.yaml でセレクタ タグとして参照されます) でポッドとの通信を可能にします。

apiVersion: v1
kind: Service
metadata:
  name: sumo-graphite
spec:
  ports:
    - port: 2003
  selector:
    app: sumo-graphite

 

 

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