すべてのプロダクト
Search
ドキュメントセンター

Simple Log Service:Kibana に接続する

最終更新日:Jul 29, 2025

Elasticsearch ログを可視化するために Kibana を使用していて、それらを Simple Log Service に移行する場合、ビジネスコードを変更することなく、Simple Log Service から Elasticsearch 互換 API を使用できます。

重要

Alibaba Cloud は、このトピックの情報に対する所有権を有しています。このトピックでは、Alibaba Cloud サービスがサードパーティサービスとどのように対話するかについて説明しています。サードパーティの会社名およびサービス名が参照される場合があります。

前提条件

背景情報

Kibana は、Elasticsearch 用のデータ可視化および探索ツールです。これにより、データをクエリ、分析、および可視化できます。 Kibana を使用してログをクエリし、ビジュアルレポートを構成する場合、Elasticsearch 互換 API を使用してデータを Simple Log Service に移行できます。これにより、Kibana で Simple Log Service データを直接クエリおよび分析できます。

仕組み

クライアント環境に Kibana、プロキシ、および Elasticsearch をデプロイする必要があります。

  • Kibana:データのクエリ、分析、および可視化に使用されます。

  • Elasticsearch:Kibana メタデータを保存するために使用されます。メタデータには主に構成情報が含まれており、データ量は最小限です。

    Kibana メタデータは頻繁に更新され、Simple Log Service は更新操作をサポートしていないため、Kibana メタデータを保存するために Elasticsearch インスタンスをデプロイする必要があります。

  • プロキシ:Kibana からの API リクエストをルーティングします。プロキシは、Kibana メタデータの API リクエストと、Simple Log Service の Elasticsearch 互換 API の API リクエストを区別します。

image

ステップ 1:Elasticsearch、Kibana、およびプロキシをデプロイする

重要
  • 少なくとも 8 GB のメモリを搭載したサーバーを使用します。

  • Docker のバージョンは 1.18 以降である必要があります。

Docker Compose を使用してデプロイする

  1. サーバー上で、次のコマンドを実行して sls-kibana という名前の新しいディレクトリと、sls-kibana ディレクトリ内に data という名前のサブディレクトリを作成します。次に、data ディレクトリの権限を変更して、Elasticsearch コンテナーに読み取り、書き込み、および実行の権限を付与します。

    mkdir sls-kibana
    
    cd sls-kibana
    
    mkdir data
    chmod 777 data 
  2. sls-kibana ディレクトリに .env という名前のファイルを作成します。次のサンプルコードは、ファイルの内容を示しています。実際の要件に基づいてパラメーターを変更します。

    ES_PASSWORD=aStrongPassword  # 実際の要件に基づいて値を変更します。
    
    SLS_ENDPOINT=cn-huhehaote.log.aliyuncs.com
    SLS_PROJECT=etl-dev-7494ab****
    SLS_ACCESS_KEY_ID=xxx
    SLS_ACCESS_KEY_SECRET=xxx
    # ECS_ROLE_NAME="" # Simple Log Service にアクセスするために ECS インスタンス RAM ロールを使用する場合は、ECS インスタンス RAM ロールの名前を指定します。
    #SLS_PROJECT_ALIAS=etl-dev # オプション。 SLS_PROJECT の名前が長すぎる場合は、エイリアスを設定できます。
    #SLS_LOGSTORE_FILTERS="access*" # オプション。インデックスパターンを自動的に作成するログストアをフィルタリングします。複数のインデックスパターンを指定するには、カンマ(,)で区切ります。たとえば、"access*,error*" のように指定します。値は二重引用符("")で囲む必要があることに注意してください。
    #KIBANA_SPACE=default # オプション。インデックスパターンを作成するスペースを指定します。スペースが存在しない場合は、自動的に作成されます。
    
    # さらにプロジェクトを追加するには、追加を続けます。 6 つ以上のプロジェクトを追加する場合は、docker-compose.yml ファイルにも参照を追加する必要があることに注意してください。
    #SLS_ENDPOINT2=cn-huhehaote.log.aliyuncs.com
    #SLS_PROJECT2=etl-dev2
    #SLS_ACCESS_KEY_ID2=xxx
    #SLS_ACCESS_KEY_SECRET2=xxx
    #SLS_PROJECT_ALIAS2=etl-dev2 # オプション。 SLS_PROJECT の名前が長すぎる場合は、エイリアスを設定できます。
    #SLS_LOGSTORE_FILTERS2="test*log" # オプション。インデックスパターンを自動的に作成するログストアをフィルタリングします。複数のパターンを指定するには、カンマ(,)で区切ります。たとえば、"access*,error*" のように指定します。値は二重引用符("")で囲む必要があることに注意してください。
    #KIBANA_SPACE2=default # オプション。インデックスパターンを作成するスペースを指定します。スペースが存在しない場合は、自動的に作成されます。

    パラメーター

    説明

    ES_PASSWORD

    Elasticsearch のパスワード。これは Kibana のパスワードでもあります。

    ECS_ROLE_NAME

    インスタンス RAM ロール。 RAM ロールに必要な権限については、「RAM 認証」をご参照ください。

    SLS_ENDPOINT

    プロジェクトのエンドポイント。詳細については、「プロジェクトの管理」をご参照ください。

    SLS_PROJECT

    Simple Log Service プロジェクトの名前。詳細については、「プロジェクトの管理」をご参照ください。

    SLS_ACCESS_KEY_ID

    「前提条件」セクションで作成した RAM ユーザーの AccessKey ID。 RAM ユーザーには、ログストア内のデータをクエリする権限が必要です。詳細については、「RAM 認証」をご参照ください。

    SLS_ACCESS_KEY_SECRET

    「前提条件」セクションで作成した RAM ユーザーの AccessKey シークレット。 RAM ユーザーには、ログストア内のデータをクエリする権限が必要です。詳細については、「RAM 認証」をご参照ください。

    SLS_PROJECT_ALIAS

    オプション。 SLS_PROJECT の名前が長すぎる場合は、エイリアスを設定できます。

    SLS_LOGSTORE_FILTERS

    オプション。インデックスパターンを自動的に作成するログストアをフィルタリングします。複数のインデックスパターンを指定するには、カンマ(,)で区切ります。たとえば、"access*,error*" のように指定します。値は二重引用符("")で囲む必要があることに注意してください。

    KIBANA_SPACE

    オプション。インデックスパターンを作成するスペースを指定します。スペースが存在しない場合は、自動的に作成されます。

  3. sls-kibana ディレクトリに docker-compose.yaml という名前のファイルを作成します。次のサンプルコードは、ファイルの内容を示しています。

    services:
      es:
        image: sls-registry.cn-hangzhou.cr.aliyuncs.com/kproxy/elasticsearch:7.17.26
        #image: sls-registry.cn-hangzhou.cr.aliyuncs.com/kproxy/elasticsearch:7.17.26-arm64
        environment:
          - "discovery.type=single-node"
          - "ES_JAVA_OPTS=-Xms2G -Xmx2G"
          - ELASTIC_USERNAME=elastic
          - ELASTIC_PASSWORD=${ES_PASSWORD}
          - xpack.security.enabled=true
        volumes:
          # TODO: ./data ディレクトリは事前に作成する必要があります。 mkdir data && chmod 777 data コマンドを実行したことを確認してください。
          - ./data:/usr/share/elasticsearch/data
      kproxy:
        image: sls-registry.cn-hangzhou.cr.aliyuncs.com/kproxy/kproxy:2.1.5
        #image: sls-registry.cn-hangzhou.cr.aliyuncs.com/kproxy/kproxy:2.1.5-arm64
        depends_on:
          - es
        environment:
          - ES_ENDPOINT=es:9200
    
          - ECS_ROLE_NAME=${ECS_ROLE_NAME}
          # 最初の SLS プロジェクト
          - SLS_ENDPOINT=${SLS_ENDPOINT}
          - SLS_PROJECT=${SLS_PROJECT}
          - SLS_LOGSTORE_FILTERS=${SLS_LOGSTORE_FILTERS}
          - KIBANA_SPACE=${KIBANA_SPACE}
          - SLS_PROJECT_ALIAS=${SLS_PROJECT_ALIAS}
          - SLS_ACCESS_KEY_ID=${SLS_ACCESS_KEY_ID}
          - SLS_ACCESS_KEY_SECRET=${SLS_ACCESS_KEY_SECRET}
    
          # 2 番目の SLS プロジェクト
          - SLS_ENDPOINT2=${SLS_ENDPOINT2}
          - SLS_PROJECT2=${SLS_PROJECT2}
          - SLS_LOGSTORE_FILTERS2=${SLS_LOGSTORE_FILTERS2}
          - KIBANA_SPACE2=${KIBANA_SPACE2}
          - SLS_PROJECT_ALIAS2=${SLS_PROJECT_ALIAS2}
          - SLS_ACCESS_KEY_ID2=${SLS_ACCESS_KEY_ID2}
          - SLS_ACCESS_KEY_SECRET2=${SLS_ACCESS_KEY_SECRET2}
    
          - SLS_ENDPOINT3=${SLS_ENDPOINT3}
          - SLS_PROJECT3=${SLS_PROJECT3}
          - SLS_LOGSTORE_FILTERS3=${SLS_LOGSTORE_FILTERS3}
          - KIBANA_SPACE3=${KIBANA_SPACE3}
          - SLS_PROJECT_ALIAS3=${SLS_PROJECT_ALIAS3}
          - SLS_ACCESS_KEY_ID3=${SLS_ACCESS_KEY_ID3}
          - SLS_ACCESS_KEY_SECRET3=${SLS_ACCESS_KEY_SECRET3}
    
          - SLS_ENDPOINT4=${SLS_ENDPOINT4}
          - SLS_PROJECT4=${SLS_PROJECT4}
          - SLS_LOGSTORE_FILTERS4=${SLS_LOGSTORE_FILTERS4}
          - KIBANA_SPACE4=${KIBANA_SPACE4}
          - SLS_PROJECT_ALIAS4=${SLS_PROJECT_ALIAS4}
          - SLS_ACCESS_KEY_ID4=${SLS_ACCESS_KEY_ID4}
          - SLS_ACCESS_KEY_SECRET4=${SLS_ACCESS_KEY_SECRET4}
    
          - SLS_ENDPOINT5=${SLS_ENDPOINT5}
          - SLS_PROJECT5=${SLS_PROJECT5}
          - SLS_LOGSTORE_FILTERS5=${SLS_LOGSTORE_FILTERS5}
          - KIBANA_SPACE5=${KIBANA_SPACE5}
          - SLS_PROJECT_ALIAS5=${SLS_PROJECT_ALIAS5}
          - SLS_ACCESS_KEY_ID5=${SLS_ACCESS_KEY_ID5}
          - SLS_ACCESS_KEY_SECRET5=${SLS_ACCESS_KEY_SECRET5}
    
          - SLS_ENDPOINT6=${SLS_ENDPOINT6}
          - SLS_PROJECT6=${SLS_PROJECT6}
          - SLS_LOGSTORE_FILTERS6=${SLS_LOGSTORE_FILTERS6}
          - KIBANA_SPACE6=${KIBANA_SPACE6}
          - SLS_PROJECT_ALIAS6=${SLS_PROJECT_ALIAS6}
          - SLS_ACCESS_KEY_ID6=${SLS_ACCESS_KEY_ID6}
          - SLS_ACCESS_KEY_SECRET6=${SLS_ACCESS_KEY_SECRET6}
          # さらにプロジェクトを追加するには、追加を続けます。最大 255 個のプロジェクトを追加できます。
      kibana:
        image: sls-registry.cn-hangzhou.cr.aliyuncs.com/kproxy/kibana:7.17.26
        #image: sls-registry.cn-hangzhou.cr.aliyuncs.com/kproxy/kibana:7.17.26-arm64
        depends_on:
          - kproxy
        environment:
          - ELASTICSEARCH_HOSTS=http://kproxy:9201
          - ELASTICSEARCH_USERNAME=elastic
          - ELASTICSEARCH_PASSWORD=${ES_PASSWORD}
          - XPACK_MONITORING_UI_CONTAINER_ELASTICSEARCH_ENABLED=true
        ports:
          - "5601:5601"
    
      # このサービスコンポーネントはオプションです。 Kibana インデックスパターンを自動的に作成するために使用されます。
      index-patterner:
        image: sls-registry.cn-hangzhou.cr.aliyuncs.com/kproxy/kproxy:2.1.5
        #image: sls-registry.cn-hangzhou.cr.aliyuncs.com/kproxy/kproxy:2.1.5-arm64
        command: /usr/bin/python3 -u /workspace/create_index_pattern.py
        depends_on:
          - kibana
        environment:
          - KPROXY_ENDPOINT=http://kproxy:9201
          - KIBANA_ENDPOINT=http://kibana:5601
          - KIBANA_USER=elastic
          - KIBANA_PASSWORD=${ES_PASSWORD}
    
          - ECS_ROLE_NAME=${ECS_ROLE_NAME}
    
          - SLS_PROJECT_ALIAS=${SLS_PROJECT_ALIAS}
          - SLS_ACCESS_KEY_ID=${SLS_ACCESS_KEY_ID}
          - SLS_ACCESS_KEY_SECRET=${SLS_ACCESS_KEY_SECRET}
    
          - SLS_PROJECT_ALIAS2=${SLS_PROJECT_ALIAS2}
          - SLS_ACCESS_KEY_ID2=${SLS_ACCESS_KEY_ID2}
          - SLS_ACCESS_KEY_SECRET2=${SLS_ACCESS_KEY_SECRET2}
    
          - SLS_PROJECT_ALIAS3=${SLS_PROJECT_ALIAS3}
          - SLS_ACCESS_KEY_ID3=${SLS_ACCESS_KEY_ID3}
          - SLS_ACCESS_KEY_SECRET3=${SLS_ACCESS_KEY_SECRET3}
    
          - SLS_PROJECT_ALIAS4=${SLS_PROJECT_ALIAS4}
          - SLS_ACCESS_KEY_ID4=${SLS_ACCESS_KEY_ID4}
          - SLS_ACCESS_KEY_SECRET4=${SLS_ACCESS_KEY_SECRET4}
    
          - SLS_PROJECT_ALIAS5=${SLS_PROJECT_ALIAS5}
          - SLS_ACCESS_KEY_ID5=${SLS_ACCESS_KEY_ID5}
          - SLS_ACCESS_KEY_SECRET5=${SLS_ACCESS_KEY_SECRET5}
    
          - SLS_PROJECT_ALIAS6=${SLS_PROJECT_ALIAS6}
          - SLS_ACCESS_KEY_ID6=${SLS_ACCESS_KEY_ID6}
          - SLS_ACCESS_KEY_SECRET6=${SLS_ACCESS_KEY_SECRET6}
    
          # さらにプロジェクトを追加するには、追加を続けます。最大 255 個のプロジェクトを追加できます。
  4. 次のコマンドを実行して、サービスを開始します。

    docker compose up -d
  5. 次のコマンドを実行して、サービスのステータスをクエリします。

    docker compose ps
  6. デプロイメントが完了したら、ブラウザに http://${Kibana がデプロイされているサーバーの IP アドレス}:5601 と入力して、Kibana ログインページを開きます。次に、ステップ 2 で Elasticsearch に指定したユーザー名とパスワードを入力します。

    重要

    ポート 5601 でのトラフィックを許可するには、サーバーのセキュリティグループにルールを追加する必要があります。詳細については、「セキュリティグループルールの追加」をご参照ください。

    http://${Kibana がデプロイされているサーバーの IP アドレス}:5601

    image

Helm を使用してデプロイする

前提条件

Container Service for Kubernetes (ACK) クラスタに次のコンポーネントがインストールされていることを確認します。インストールされているコンポーネントを表示する方法の詳細については、「コンポーネントを管理する」をご参照ください。

手順

  1. 名前空間を作成します。

    # 名前空間を作成します。
    kubectl create namespace sls-kibana
  2. values.yaml ファイルを作成して編集します。次のサンプルコードは、ファイルの内容を示しています。実際の要件に基づいてパラメーターを変更します。

    kibana:
      ingressClass: nginx # インストールされている Ingress コントローラーに基づいて値を変更します。
      # ACK クラスタのアドオンページで、Ingress を検索してインストールされている Ingress コントローラーを表示し、値を決定します。
      # ALB Ingress Controller の場合は、値を alb に設定します。
      # MSE Ingress Controller の場合は、値を mse に設定します。
      # Nginx Ingress Controller の場合は、値を nginx に設定します。
      ingressDomain: # このパラメーターは空のままにすることができます。ドメイン名を使用して Kibana にアクセスする場合は、このパラメーターを設定します。
      ingressPath: /kibana/ # 必須。アクセスのサブパス。
      # ingressDomain が空でない場合は、ingressPath を / に設定できます。
      #i18nLocale: en # Kibana の言語を設定します。デフォルト値は en です。中国語を使用する場合は、値を zh-CN に設定します。
    
    elasticsearch:
      password: aStrongPass  # 実際の要件に基づいて Elasticsearch のパスワードを変更します。これは Kibana のアクセスパスワードでもあります。対応するアカウントは elastic です。
      #diskZoneId: cn-hongkong-c # Elasticsearch で使用されるディスクが配置されているアベイラビリティーゾーン (AZ) を指定します。このパラメーターを設定しない場合、システムは自動的に AZ を選択します。
    
    repository:
      region: cn-hangzhou
      # イメージが配置されているリージョン。中国のリージョンの場合、値は cn-hangzhou に固定されています。中国以外のリージョンの場合、値は ap-southeast-1 に固定されています。イメージはインターネット経由でプルされます。
    
    #kproxy:
    #  ecsRoleName:  # アクセスに ECS ロールを使用する場合は、値を指定します。
    
    #arch: amd64 # amd64 または arm64。デフォルト値は amd64 です。
    
    sls:
      - project: k8s-log-c5****** # SLS プロジェクト。
        endpoint: cn-huhehaote.log.aliyuncs.com # SLS プロジェクトに対応するエンドポイント。
        accessKeyId: SLS にアクセスするための権限を持つ AccessKey ID。
        accessKeySecret: SLS にアクセスするための権限を持つ AccessKey シークレット。
      #  alias: etl-logs # オプション。プロジェクト名が長すぎて Kibana に表示できない場合は、エイリアスを設定できます。
      #  kibanaSpace: default  # オプション。インデックスパターンを作成するスペースを指定します。スペースが存在しない場合は、自動的に作成されます。
      #  logstoreFilters: "*" # オプション。インデックスパターンを自動的に作成する Logstore をフィルタリングします。複数のパターンを指定するには、カンマ (,) で区切ります。たとえば、"access*,error*" のように指定します。値は二重引用符 ("") で囲む必要があります。
    
      # 2 番目のプロジェクトがある場合は、同じ形式で追加します。
      #- project: etl-dev2 # SLS プロジェクト。
      #  endpoint: cn-huhehaote.log.aliyuncs.com # SLS プロジェクトに対応するエンドポイント。
      #  accessKeyId: SLS にアクセスするための権限を持つ AccessKey ID。
      #  accessKeySecret: SLS にアクセスするための権限を持つ AccessKey シークレット。
      #  alias: etl-logs2 # オプション。プロジェクト名が長すぎて Kibana に表示できない場合は、エイリアスを設定できます。
      #  kibanaSpace: default  # オプション。インデックスパターンを作成するスペースを指定します。スペースが存在しない場合は、自動的に作成されます。
      #  logstoreFilters: "*" # オプション。インデックスパターンを自動的に作成する Logstore をフィルタリングします。複数のパターンを指定するには、カンマ (,) で区切ります。たとえば、"access*,error*" のように指定します。値は二重引用符 ("") で囲む必要があります。

    パラメーター

    説明

    kibana.ingressClass

    インストールされている Ingress コントローラーに基づいて値を変更します。コンポーネントを表示する方法の詳細については、「コンポーネントの管理」をご参照ください。

    • ALB Ingress Controller:値を alb に設定します。

    • MSE Ingress Controller:値を mse に設定します。

    • Nginx Ingress Controller:値を nginx に設定します。

    kibana.ingressDomain

    このパラメーターは空のままにすることができます。ドメイン名を使用して Kibana にアクセスする場合は、このパラメーターを設定する必要があります。

    repository.region

    イメージが配置されているリージョン。中国のリージョンの場合、値は cn-hangzhou に固定されています。中国以外のリージョンの場合、値は ap-southeast-1 に固定されています。イメージはインターネット経由でプルされます。

    kibana.ingressPath

    アクセスのサブパス。ingressDomain が空でない場合は、ingressPath を / に設定できます。

    elasticsearch.password

    実際の要件に基づいて Elasticsearch のパスワードを変更します。これは Kibana のアクセスパスワードでもあります。Elasticsearch アカウントは elastic です。

    kproxy.ecsRoleName

    アクセスに インスタンス RAM ロール を使用します。RAM ロールに必要な権限については、「RAM 権限付与」をご参照ください。

    sls.project

    Simple Log Service プロジェクトの名前。詳細については、「プロジェクトの管理」をご参照ください。

    sls.endpoint

    プロジェクトのエンドポイント。詳細については、「プロジェクトの管理」をご参照ください。

    sls.accessKeyId

    「前提条件」セクションで作成した RAM ユーザーの AccessKey ID。RAM ユーザーには、Logstore 内のデータの照会権限が必要です。詳細については、「RAM 権限付与」をご参照ください。

    sls.accessKeySecret

    「前提条件」セクションで作成した RAM ユーザーの AccessKey シークレット。RAM ユーザーには、Logstore 内のデータの照会権限が必要です。詳細については、「RAM 権限付与」をご参照ください。

    sls.alias

    オプション。プロジェクト名が長すぎて Kibana に表示できない場合は、エイリアスを設定できます。

    sls.kibanaSpace

    オプション。インデックスパターンを作成するスペースを指定します。スペースが存在しない場合は、自動的に作成されます。

    sls.logstoreFilters

    オプション。インデックスパターンを自動的に作成する Logstore をフィルタリングします。複数のインデックスパターンを指定するには、カンマ (,) で区切ります。たとえば、"access*,error*" のように指定します。値は二重引用符 ("") で囲む必要があります。

  3. 次のコマンドを実行して、Helm を使用してデプロイします。

    helm install sls-kibana https://sls-kproxy.oss-cn-hangzhou.aliyuncs.com/sls-kibana-1.5.7.tgz -f values.yaml --namespace sls-kibana
  4. デプロイメントが完了したら、ブラウザに http://${Ingress address}/kibana/ と入力して Kibana ログインページを開きます。次に、手順 2 で Elasticsearch に指定したユーザー名とパスワードを入力します。

    http://${Ingress address}/kibana/ 

    image

Docker を使用したデプロイ

手順 1: Elasticsearch のデプロイ

重要

Docker を使用してデプロイするには、最初に Docker をインストールして起動する必要があります。 詳細については、「Docker のインストール」をご参照ください。

  1. サーバー上で、次のコマンドを実行して Elasticsearch をデプロイします。

    sudo docker pull sls-registry.cn-hangzhou.cr.aliyuncs.com/kproxy/elasticsearch:7.17.26
    
    sudo mkdir /data  // Elasticsearch データの保存ディレクトリ。 実際の要件に基づいて変更します。
    sudo chmod 777 /data // 権限を設定します。
    
    sudo docker run -d --name es -p 9200:9200 \
               -e "discovery.type=single-node" \
               -e "ES_JAVA_OPTS=-Xms2G -Xmx2G" \
               -e ELASTIC_USERNAME=elastic \
               -e ELASTIC_PASSWORD=passwd \
               -e xpack.security.enabled=true \
               -v /data:/usr/share/elasticsearch/data \
               sls-registry.cn-hangzhou.cr.aliyuncs.com/kproxy/elasticsearch:7.17.26

    パラメーター

    説明

    ELASTIC_USERNAME

    Elasticsearch にログインするためのユーザー名。 値は elastic に固定されています。

    ELASTIC_PASSWORD

    Elasticsearch にログインするためのパスワード。 パスワードは文字列である必要があります。

    /data

    物理マシン上の Elasticsearch データの保存場所。 実際の要件に基づいて変更します。

  2. デプロイメントが完了したら、次のコマンドを実行してデプロイメントを確認します。 パブリック IP アドレスを使用する場合は、ポート 9200 でのトラフィックを許可するルールをサーバーのセキュリティグループに追加する必要があります。 詳細については、「セキュリティグループルールの追加」をご参照ください。

    curl http://${Elasticsearch がデプロイされているマシンの IP アドレス}:9200

    返された結果が security_exception を含む JSON 形式のデータである場合、Elasticsearch は正常にデプロイされています。

    {"error":{"root_cause":[{"type":"security_exception","reason":"missing authentication credentials for REST request [/]","header":{"WWW-Authenticate":"Basic realm=\"security\" charset=\"UTF-8\""}}],"type":"security_exception","reason":"missing authentication credentials for REST request [/]","header":{"WWW-Authenticate":"Basic realm=\"security\" charset=\"UTF-8\""}},"status":401}

手順 2: プロキシのデプロイ

Kibana を Simple Log Service に接続する場合、1 つ以上のプロジェクトに接続できます。 プロキシをデプロイするときに、プロジェクトに関する情報を追加する必要があります。 次の例は、プロキシをデプロイする方法を示しています。

単一プロジェクト

sudo docker pull sls-registry.cn-hangzhou.cr.aliyuncs.com/kproxy/kproxy:2.1.5

sudo docker run  -d --name proxy \
            -e ES_ENDPOINT=${Elasticsearch がデプロイされているマシンの IP アドレス}:9200 \
            -e SLS_ENDPOINT=https://prjA.cn-guangzhou.log.aliyuncs.com/es/ \
            -e SLS_PROJECT=prjA \
            -e SLS_ACCESS_KEY_ID=${aliyunAccessId} \
            -e SLS_ACCESS_KEY_SECRET=${aliyunAccessKey} \
            -p 9201:9201 \
            -ti sls-registry.cn-hangzhou.cr.aliyuncs.com/kproxy/kproxy:2.1.5

複数プロジェクト

    重要
    • 最大 32 個のプロジェクトを追加できます。

    • SLS_PROJECT、SLS_ENDPOINT、SLS_ACCESS_KEY_ID、および SLS_ACCESS_KEY_SECRET は、最初のプロジェクトの変数名です。 後続のプロジェクトの場合、変数名には SLS_PROJECT2 や SLS_ENDPOINT2 などの数値サフィックスが必要です。

    • 後続のプロジェクトが最初のプロジェクトと同じ値を使用する場合、そのプロジェクトのエンドポイントと AccessKey ペア変数を省略できます。

sudo docker pull sls-registry.cn-hangzhou.cr.aliyuncs.com/kproxy/kproxy:2.1.5

sudo docker run  -d --name proxy \
            -e ES_ENDPOINT=${Elasticsearch がデプロイされているマシンの IP アドレス}:9200 \
            -e SLS_ENDPOINT=https://prjA.cn-guangzhou.log.aliyuncs.com/es/ \
            -e SLS_ENDPOINT2=https://prjB.cn-guangzhou.log.aliyuncs.com/es/ \ 
            -e SLS_PROJECT=prjA \
            -e SLS_PROJECT2=prjB \
            -e SLS_ACCESS_KEY_ID=${aliyunAccessId} \ 
            -e SLS_ACCESS_KEY_SECRET=${aliyunAccessKey} \ 
            -e SLS_ACCESS_KEY_ID2=${aliyunAccessId} \ // 値が SLS_ACCESS_KEY_ID と同じ場合は、このパラメーターを設定する必要はありません。
            -e SLS_ACCESS_KEY_SECRET2=${aliyunAccessKey} \ // 値が SLS_ACCESS_KEY_SECRET と同じ場合は、このパラメーターを設定する必要はありません。
            -p 9201:9201 \
            -ti sls-registry.cn-hangzhou.cr.aliyuncs.com/kproxy/kproxy:2.1.5
  • 例 1

    同じ AccessKey ペアを使用する 2 つのプロジェクト (prjA と prjB) に接続します。 次のコードは例を示しています。

    sudo docker pull sls-registry.cn-hangzhou.cr.aliyuncs.com/kproxy/kproxy:2.1.5
    sudo docker run  -d --name proxy \
                -e ES_ENDPOINT=${Elasticsearch がデプロイされているマシンの IP アドレス}:9200 \
                -e SLS_ENDPOINT=https://prjA.cn-guangzhou.log.aliyuncs.com/es/ \
                -e SLS_ENDPOINT2=https://prjB.cn-guangzhou.log.aliyuncs.com/es/ \
                -e SLS_PROJECT=prjA \
                -e SLS_PROJECT2=prjB \
                -e SLS_ACCESS_KEY_ID=${aliyunAccessId} \
                -e SLS_ACCESS_KEY_SECRET=${aliyunAccessKey} \
                -p 9201:9201 \
                -ti sls-registry.cn-hangzhou.cr.aliyuncs.com/kproxy/kproxy:2.1.5
  • 例 2

    3 つのプロジェクト (prjA、prjB、および prjC) に接続します。 prjA と prjC は同じ AccessKey ペアを使用します。 次のコードは例を示しています。

    sudo docker run  -d --name proxy \
                -e ES_ENDPOINT=${Elasticsearch がデプロイされているマシンの IP アドレス}:9200 \
                -e SLS_ENDPOINT=https://prjA.cn-guangzhou.log.aliyuncs.com/es/ \
                -e SLS_ENDPOINT2=https://prjB.cn-guangzhou.log.aliyuncs.com/es/ \
                -e SLS_ENDPOINT3=https://prjC.cn-guangzhou.log.aliyuncs.com/es/ \
                -e SLS_PROJECT=prjA \
                -e SLS_PROJECT2=prjB \
                -e SLS_PROJECT3=prjC \
                -e SLS_ACCESS_KEY_ID=${aliyunAccessId} \
                -e SLS_ACCESS_KEY_SECRET=${aliyunAccessKey} \
                -e SLS_ACCESS_KEY_ID2=${aliyunAccessId} \
                -e SLS_ACCESS_KEY_SECRET2=${aliyunAccessKey} \            
                -p 9201:9201 \
                -ti sls-registry.cn-hangzhou.cr.aliyuncs.com/kproxy/kproxy:2.1.5

次の表は、重要なパラメーターについて説明しています。

パラメーター

説明

ES_ENDPOINT

Elasticsearch のエンドポイント。 フォーマットは ${Elasticsearch がデプロイされているマシンの IP アドレス}:9200 です。

SLS_ENDPOINT

データエンドポイント。 フォーマットは https://${project}.${sls-endpoint}/es/ です。 ${project} はプロジェクトの名前、${sls-endpoint} は Simple Log Service プロジェクトのエンドポイントです。 詳細については、エンドポイント」をご参照ください。 例: https://etl-guangzhou.cn-guangzhou.log.aliyuncs.com/es/

重要

HTTPS プロトコルを使用する必要があります。

SLS_PROJECT

Simple Log Service プロジェクトの名前。 詳細については、「プロジェクトの管理」をご参照ください。

SLS_ACCESS_KEY_ID

Alibaba Cloud アカウントの AccessKey ID。

Logstore 内のデータの照会権限を持つ RAM ユーザーの AccessKey ペアを使用することをお勧めします。 権限アシスタントを使用して権限を設定できます。 詳細については、「権限アシスタントの設定」をご参照ください。 AccessKey ペアの取得方法については、AccessKey ペア」をご参照ください。

SLS_ACCESS_KEY_SECRET

Alibaba Cloud アカウントの AccessKey シークレット。

Logstore 内のデータの照会権限を持つ RAM ユーザーの AccessKey ペアを使用することをお勧めします。 権限アシスタントを使用して権限を設定できます。 詳細については、「権限アシスタントの設定」をご参照ください。 AccessKey ペアの取得方法については、AccessKey ペア」をご参照ください。

デプロイメントが完了したら、次のコマンドを実行してプロキシデプロイメントを確認できます。 パブリック IP アドレスを使用する場合は、ポート 9201 でのトラフィックを許可するルールをサーバーのセキュリティグループに追加する必要があります。 詳細については、「セキュリティグループルールの追加」をご参照ください。

curl http://${プロキシがデプロイされているマシンの IP アドレス}:9201

返された結果が security_exception を含む JSON 形式のデータである場合、プロキシは正常にデプロイされています。

{"error":{"root_cause":[{"type":"security_exception","reason":"missing authentication credentials for REST request [/]","header":{"WWW-Authenticate":"Basic realm=\"security\" charset=\"UTF-8\""}}],"type":"security_exception","reason":"missing authentication credentials for REST request [/]","header":{"WWW-Authenticate":"Basic realm=\"security\" charset=\"UTF-8\""}},"status":401}

手順 3: Kibana のデプロイ

次のコードは、Kibana をデプロイする方法の例を示しています。 この例では、Kibana 7.17.26 が使用されています。

sudo docker pull  sls-registry.cn-hangzhou.cr.aliyuncs.com/kproxy/kibana:7.17.26

sudo docker run -d --name kibana \
            -e ELASTICSEARCH_HOSTS=http://${プロキシがデプロイされているマシンの IP アドレス}:9201 \
            -e ELASTICSEARCH_USERNAME=elastic \
            -e ELASTICSEARCH_PASSWORD=passwd \
            -e XPACK_MONITORING_UI_CONTAINER_ELASTICSEARCH_ENABLED=true \
            -p 5601:5601 \
            sls-registry.cn-hangzhou.cr.aliyuncs.com/kproxy/kibana:7.17.26

パラメーター

説明

ELASTICSEARCH_HOSTS

プロキシのエンドポイント。 フォーマットは http://${プロキシがデプロイされているマシンの IP アドレス}:9201 です。

ELASTICSEARCH_USERNAME

Kibana にログインするためのユーザー名。

ユーザー名は、Elasticsearch をデプロイしたときに指定した Elasticsearch ユーザー名と同じである必要があります。

ELASTICSEARCH_PASSWORD

Kibana にログインするためのパスワード。

パスワードは、Elasticsearch をデプロイしたときに指定した Elasticsearch パスワードと同じである必要があります。

デプロイメントが完了したら、ブラウザに http://${Kibana がデプロイされているサーバーの IP アドレス}:5601 と入力して Kibana ログインページを開きます。 次に、手順 1 で Elasticsearch に指定したユーザー名とパスワードを入力します。

重要

ポート 5601 でのトラフィックを許可するルールをサーバーのセキュリティグループに追加する必要があります。 詳細については、「セキュリティグループルールの追加」をご参照ください。

http://${Kibana がデプロイされているサーバーの IP アドレス}:5601

image

ステップ 2: Kibana にアクセスする

データのクエリと分析

  1. 左側のナビゲーションウィンドウで、[分析] > [ディスカバー] を選択します。

    重要

    Elasticsearch 互換 API を使用して Kibana で Simple Log Service データを分析する場合、使用できるのはディスカバーモジュールとダッシュボードモジュールのみです。

    image

  2. ページの左上隅で、宛先インデックスを選択します。ページの右上隅で、ログデータをクエリする時間範囲を選択します。

    image.png

インデックスパターンの手動設定 (オプション)

重要

Docker Compose または Helm を使用してデプロイする場合、インデックスパターンを手動で作成する必要はありません。ただし、Docker を使用してデプロイする場合は、手動で作成する必要があります。

  1. 左側のナビゲーションウィンドウで、[管理] >[スタック管理] を選択します。image..png

  2. 左側のナビゲーションウィンドウで、[Kibana] > [インデックスパターン] を選択します。

  3. Kibana を初めて使用する場合は、表示されたダイアログボックスで [非表示またはシステムインデックスに対してインデックスパターンを作成する] をクリックします。image.png

    説明

    デフォルトでは、インデックスパターンリストにはデータは表示されません。Kibana で手動でインデックスパターンを作成し、Simple Log Service の Logstore にマップする必要があります。

  4. [インデックスパターンの作成] ウィンドウで、パラメータを設定します。

    image.png

    パラメータ名

    説明

    Name

    インデックスの名前。命名規則は ${Simple Log Service プロジェクト名}.${Logstore 名} です。

    重要

    インデックス名は完全一致のみをサポートしています。ワイルドカード文字はサポートされていません。完全なインデックス名を入力する必要があります。

    たとえば、プロジェクト名が etl-guangzhou で、Logstore 名が es_test22 の場合、インデックス名は etl-guangzhou.es_test22 です。

    Timestamp field

    タイムスタンプフィールド。値は @timestamp に固定されています。

  5. [インデックスパターンの作成] をクリックします。

QueryString の例

  • フィールドを指定するクエリは、指定しないクエリよりも効率的です。

    content: "Hello World"

    次のクエリはフィールドを指定しておらず、非効率的です。場合によっては、クエリが SQL フィールドに変換され、連結されてから照合されるため、クエリの効率が低下します。

    "Hello World"
  • 完全一致クエリは、ワイルドカード文字 (*) を使用するクエリよりも効率的です。

    content : "Hello World"

    次のクエリはワイルドカード文字 (*) を使用しており、全文スキャンがトリガーされるため非効率的です。データ ボリュームが大きい場合、応答時間が長くなります。

    content : "Hello*"

よくある質問

Docker Compose を使用して [Kibana] をデプロイした後、アクセスできないのはなぜですか?

  1. sls-kibana ディレクトリで、docker compose ps コマンドを実行して、コンテナの起動ステータス(STATUS)を確認します。すべてのコンテナが UP 状態であることを確認します。

    image.png

  2. 3 つのコンテナすべてが UP 状態の場合は、各コンテナのエラーログを表示します。

    docker logs sls-kibana_es_1 # Elasticsearch の起動ログを表示します。
    docker logs sls-kibana_kproxy_1 # kproxy の起動ログを表示します。
    docker logs sls-kibana_kibana_1 # Kibana の起動ログを表示します。

Helm を使用して [Kibana] をデプロイした後、アクセスできないのはなぜですか?

  1. Container Service for Kubernetes コンソール にログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。

  2. [クラスター] ページで、デスティネーションクラスターの名前をクリックします。左側のナビゲーションウィンドウで、[ワークロード] > [ステートフルセット] を選択します。

  3. ページの上部にある [名前空間] ドロップダウンリストから sls-kibana を選択します。Elasticsearch、Kibana、および kproxy が実行されていることを確認します。ステートフルセットのステータスの表示と編集、またはアプリケーションの一括再デプロイ方法の詳細については、「ステートフルセットを作成する」をご参照ください。

Helm をアンインストールするにはどうすればよいですか?

helm uninstall sls-kibana --namespace sls-kibana

Kibana で高精度時刻を表示するにはどうすればよいですか?

  1. Simple Log Service でデータ収集またはレポートに高精度時刻が使用されていることを確認します。 ナノ秒精度のタイムスタンプ を構成して、ナノ秒単位のタイムスタンプをサポートできます。

  2. データ収集に高精度時刻が使用されていることを確認したら、__time_ns_part__ フィールドに long 型のインデックスを追加する必要があります。このフィールドは、タイムスタンプのナノ秒部分を表します。Kibana の一部のクエリは、実行のために SQL 文に変換される場合があります。そのため、SQL の結果に高精度時刻フィールドを含める必要があります。

Helm chart をアップグレードするにはどうすればよいですか?

Helm chart のアップグレードは、インストールと似ています。「install」コマンドを「upgrade」コマンドに置き換えるだけです。インストールの `values.yaml` ファイルを再利用できます。

helm upgrade sls-kibana https://sls-kproxy.oss-cn-hangzhou.aliyuncs.com/sls-kibana-1.5.5.tgz -f values.yaml --namespace sls-kibana

インデックスパターンを一括削除するにはどうすればよいですか?

  1. 削除するインデックスパターンを一覧表示します。

    kibana_config.json ファイルを準備します。

    {
        "url" : "http://xxx:5601",
        "user" : "elastic",
        "password" : "",
        "space" :  "default"
    }

    ptn_list.py を使用して、既存のインデックスパターンを一覧表示し、結果を /tmp/ptnlist.txt ファイルに出力します。

    ➜  python ptn_list.py kibana_config.json > /tmp/ptnlist.txt

    /tmp/ptnlist.txt ファイルを編集し、削除するインデックスパターンのみを保持します。

    54c0d6c0-****-****-****-15adf26175c7	etl-dev.batch_test52
    54266b80-****-****-****-15adf26175c7	etl-dev.batch_test51
    52f369c0-****-****-****-15adf26175c7	etl-dev.batch_test49
    538ceaa0-****-****-****-15adf26175c7	etl-dev.batch_test50
  2. ptn_delete.py を使用して、インデックスパターンを削除します。

    説明

    インデックスパターンを削除すると、対応するダッシュボードは使用できなくなります。削除するインデックスパターンが使用されていないことを確認してください。

    # /tmp/ptnlist.txt ファイルを表示して、リストされているすべてのインデックスパターンが削除されることを確認します。
    ➜  cat /tmp/ptnlist.txt
    
    # 削除を実行します。
    ➜  python ptn_delete.py kibana_config.json /tmp/ptnlist.txt