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

Simple Log Service:Simple Log Service を Kibana に接続する

最終更新日:Dec 15, 2025

Kibana で Elasticsearch のログを可視化しており、ログを Elasticsearch から Simple Log Service (SLS) に移行したい場合は、SLS の Elasticsearch 互換 API を使用することで、ビジネスコードを変更する必要がなくなります。

重要

Alibaba Cloud は、この Topic の情報に関する専有権を所有しています。この Topic では、Alibaba Cloud がサードパーティのサービスと連携する機能について説明します。サードパーティの企業名やサービス名が参照される場合があります。

前提条件

背景情報

Kibana は、Elasticsearch ベースのデータ可視化および探索ツールです。Kibana を使用して、Elasticsearch のデータをクエリ、分析、可視化できます。Kibana を使用してログをクエリし、可視化されたレポートを設定しており、データを SLS に移行したい場合は、SLS の Elasticsearch 互換 API を使用します。これにより、Kibana で SLS のデータをクエリおよび分析できます。

仕組み

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

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

  • Elasticsearch は、Kibana のメタデータを格納するために使用されます。メタデータには Kibana の構成が含まれます。メタデータの量は非常に少ないです。

    Kibana のメタデータは頻繁に更新する必要があります。SLS は更新をサポートしていません。Kibana のメタデータを格納するために Elasticsearch クラスターをデプロイする必要があります。

  • プロキシは、メタデータのリクエストと Elasticsearch 互換 API のリクエストを区別するために使用されます。Kibana の API リクエストをルーティングするためにプロキシをデプロイする必要があります。

ステップ 1:Elasticsearch クラスター、Kibana、およびプロキシのデプロイ

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

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

Docker Compose の使用

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

    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="" # ECS RAM ロールを使用してアクセスする場合は、ロール名を入力します。
    #SLS_PROJECT_ALIAS=etl-dev # 任意。SLS_PROJECT パラメーターで指定された SLS プロジェクトの名前が長すぎる場合は、このパラメーターを設定してプロジェクトのエイリアスを指定できます。
    #SLS_LOGSTORE_FILTERS="access*" # 任意。インデックスパターンを自動的に作成するために使用される Logstore。複数のインデックスパターンはカンマ (,) で区切り、インデックスパターンは二重引用符 ("") で囲みます。例: "access*,error*"。
    #KIBANA_SPACE=default # 任意。インデックスパターンが作成されるスペース。スペースが存在しない場合は、自動的に作成されます。
    
    # 複数の SLS プロジェクトを指定できます。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_PROJECT2 パラメーターで指定された SLS プロジェクトの名前が長すぎる場合は、このパラメーターを設定してプロジェクトのエイリアスを指定できます。
    #SLS_LOGSTORE_FILTERS2="test*log" # 任意。インデックスパターンを自動的に作成するために使用される Logstore。複数のインデックスパターンはカンマ (,) で区切り、インデックスパターンは二重引用符 ("") で囲みます。例: "access*,error*"。
    #KIBANA_SPACE2=default # 任意。インデックスパターンが作成されるスペース。スペースが存在しない場合は、自動的に作成されます。

    パラメーター

    説明

    ES_PASSWORD

    Elasticsearch クラスターのパスワード。Kibana コンソールにログインするために使用します。

    ECS_ROLE_NAME

    ECS インスタンスの RAM ロール。RAM ロールに必要な権限については、RAM ユーザーへの権限付与をご参照ください。

    SLS_ENDPOINT

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

    SLS_PROJECT

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

    SLS_ACCESS_KEY_ID

    RAM ユーザー用に作成された AccessKey ID。RAM ユーザーは、Logstore 内のログをクエリするために必要な権限を持っている必要があります。詳細については、RAM ユーザーへの権限付与をご参照ください。

    SLS_ACCESS_KEY_SECRET

    RAM ユーザー用に作成された AccessKey Secret。RAM ユーザーは、Logstore 内のログをクエリするために必要な権限を持っている必要があります。詳細については、RAM ユーザーへの権限付与をご参照ください。

    SLS_PROJECT_ALIAS

    任意。SLS_PROJECT パラメーターで指定された SLS プロジェクトの名前が長すぎる場合は、このパラメーターを設定してプロジェクトのエイリアスを指定します。

    SLS_LOGSTORE_FILTERS

    任意。インデックスパターンを自動的に作成するために使用される Logstore。複数のインデックスパターンはカンマ (,) で区切り、インデックスパターンは二重引用符 ("") で囲みます。例:"access*,error*"

    KIBANA_SPACE

    任意。インデックスパターンが作成されるスペース。スペースが存在しない場合は、自動的に作成されます。

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

    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:
          # mkdir data && chmod 777 data コマンドを実行して data という名前のサブディレクトリを作成し、すべてのユーザーにそのサブディレクトリに対する読み取り、書き込み、実行権限を付与してください。
          - ./data:/usr/share/elasticsearch/data
      kproxy:
        image: sls-registry.cn-hangzhou.cr.aliyuncs.com/kproxy/kproxy:2.1.8
        #image: sls-registry.cn-hangzhou.cr.aliyuncs.com/kproxy/kproxy:2.1.8-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 の SLS プロジェクトを指定できます。
      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.8
        #image: sls-registry.cn-hangzhou.cr.aliyuncs.com/kproxy/kproxy:2.1.8-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 の SLS プロジェクトを指定できます。
  4. 次のコマンドを実行してサービスを開始します:

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

    docker compose ps
  6. 設定後、ブラウザで http://${Kibana の IP アドレス}:5601 と入力して Kibana のログインページに移動します。次に、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/ # 必須。Kibana へのアクセスに使用されるサブパス。
      # ingressDomain パラメーターを設定する場合、ingressPath パラメーターを / に設定できます。
      #i18nLocale: en # Kibana の言語。デフォルト値:en。中国語を使用する場合は、値を zh-CN に設定します。
    
    elasticsearch:
      password: aStrongPass # 必要に応じて Elasticsearch クラスターのパスワードを変更してください。このパスワードを使用して Kibana コンソールにログインします。Elasticsearch クラスターへのアクセスに使用するユーザー名は elastic です。
      #diskZoneId: cn-hongkong-c # Elasticsearch クラスターが使用するディスクが存在するゾーン。このパラメーターを空のままにすると、システムが自動的にゾーンを選択します。
    
    repository:
      region: cn-hangzhou
      # イメージが存在するリージョン。イメージが中国本土のリージョンにある場合は、値を cn-hangzhou に設定します。イメージが中国本土以外のリージョンにある場合は、値を ap-southeast-1 に設定します。イメージはインターネット経由でプルされます。
    
    #kproxy:
    #  ecsRoleName:  # ECS RAM ロールを使用してアクセスする場合は、ロール名を入力します。
    
    #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 Secret。
      # alias: etl-logs # 任意。Kibana で project パラメーターで指定された SLS プロジェクトの名前が長すぎる場合は、このパラメーターを設定してプロジェクトのエイリアスを指定します。
      #  kibanaSpace: default  # 任意。インデックスパターンが作成されるスペース。スペースが存在しない場合は、自動的に作成されます。
      #  logstoreFilters: "*" # 任意。インデックスパターンを自動的に作成するために使用される Logstore。複数のインデックスパターンはカンマ (,) で区切り、インデックスパターンは二重引用符 ("") で囲みます。例: "access*,error*"。
    
      # 別の SLS プロジェクトを指定する場合は、上記の手順に従ってください。
      #- project: etl-dev2 # SLS プロジェクト。
      #  endpoint: cn-huhehaote.log.aliyuncs.com # SLS プロジェクトのエンドポイント。
      #  accessKeyId: SLS へのアクセスに使用する AccessKey ID。
      #  accessKeySecret: SLS へのアクセスに使用する AccessKey Secret。
      #  alias: etl-logs2 # 任意。Kibana で project パラメーターで指定された SLS プロジェクトの名前が長すぎる場合は、このパラメーターを設定してプロジェクトのエイリアスを指定します。
      #  kibanaSpace: default  # 任意。インデックスパターンが作成されるスペース。スペースが存在しない場合は、自動的に作成されます。
      #  logstoreFilters: "*" # 任意。インデックスパターンを自動的に作成するために使用される Logstore。複数のインデックスパターンはカンマ (,) で区切り、インデックスパターンは二重引用符 ("") で囲みます。例: "access*,error*"。
    

    パラメーター

    説明

    kibana.ingressClass

    Ingress コントローラーのクラス。インストールされている Ingress コントローラーに基づいて値を指定します。詳細については、コンポーネントの管理をご参照ください。有効な値:

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

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

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

    kibana.ingressDomain

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

    repository.region

    イメージが存在するリージョン。イメージが中国本土のリージョンにある場合は、値を cn-hangzhou に設定します。イメージが中国本土以外のリージョンにある場合は、値を ap-southeast-1 に設定します。イメージはインターネット経由でプルされます。

    kibana.ingressPath

    Kibana へのアクセスに使用されるサブパス。ingressDomain パラメーターを設定する場合、ingressPath パラメーターを / に設定します。

    elasticsearch.password

    Elasticsearch クラスターのパスワード。必要に応じてパスワードを変更してください。このパラメーターを使用して Kibana コンソールにログインします。Elasticsearch クラスターへのアクセスに使用するユーザー名は elastic です。

    kproxy.ecsRoleName

    ECS インスタンスの RAM ロール。RAM ロールに必要な権限については、RAM ユーザーへの権限付与をご参照ください。

    sls.project

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

    sls.endpoint

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

    sls.accessKeyId

    RAM ユーザー用に作成された AccessKey ID。RAM ユーザーは、Logstore 内のログをクエリするために必要な権限を持っている必要があります。詳細については、RAM ユーザーへの権限付与をご参照ください。

    sls.accessKeySecret

    RAM ユーザー用に作成された AccessKey Secret。RAM ユーザーは、Logstore 内のログをクエリするために必要な権限を持っている必要があります。詳細については、RAM ユーザーへの権限付与をご参照ください。

    sls.alias

    任意。Kibana で sls.project パラメーターで指定された SLS プロジェクトの名前が長すぎる場合は、このパラメーターを設定してプロジェクトのエイリアスを指定できます。

    sls.kibanaSpace

    任意。インデックスパターンが作成されるスペース。スペースが存在しない場合は、自動的に作成されます。

    sls.logstoreFilters

    任意。インデックスパターンを自動的に作成するために使用される Logstore。複数のインデックスパターンはカンマ (,) で区切り、インデックスパターンは二重引用符 ("") で囲みます。例:"access*,error*"

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

    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 アドレス}/kibana/ と入力して Kibana のログインページに移動します。次に、ステップ 2 で Elasticsearch クラスターに指定したユーザー名とパスワードを入力します。

    http://${Ingress アドレス}/kibana/

    image

Docker の使用

ステップ 1:Elasticsearch クラスターのデプロイ

重要

Docker を使用して Elasticsearch クラスターをデプロイする前に、Docker をインストールして起動する必要があります。詳細については、Docker と Docker Compose のインストールと使用をご参照ください。

  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. 設定後、Elasticsearch クラスターがデプロイされているかどうかを確認します。パブリック IP アドレスを使用する場合は、サーバーのセキュリティグループルールにポート 9200 を追加します。詳細については、セキュリティグループルールの追加をご参照ください。

    curl http://${Elasticsearch クラスターがデプロイされているサーバーの IP アドレス}:9200

    出力に JSON 形式のフィールド security_exception が含まれている場合、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 を使用して SLS にアクセスする場合、1 つ以上のプロジェクトがサポートされます。プロキシをデプロイする際にプロジェクト情報を追加する必要があります。サンプルコード:

単一プロジェクト

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

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.8

複数プロジェクト

    重要
    • 最大 32 のプロジェクトを指定できます。

    • 次の変数は最初のプロジェクトに関連しています:SLS_PROJECT、SLS_ENDPOINT、SLS_ACCESS_KEY_ID、および SLS_ACCESS_KEY_SECRET。他のプロジェクトに関連する変数は、数字のサフィックスを付ける必要があります。例:SLS_PROJECT2 および SLS_ENDPOINT2。

    • プロジェクトのエンドポイントと AccessKey ペアの設定が最初のプロジェクトの設定と同じである場合、そのプロジェクトのエンドポイントまたは AccessKey ペアを指定する必要はありません。

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

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} \ # 指定したい AccessKey ID が SLS_ACCESS_KEY_ID 変数で指定された AccessKey ID と同じである場合、SLS_ACCESS_KEY_ID2 変数に AccessKey ID を指定する必要はありません。
            -e SLS_ACCESS_KEY_SECRET2=${aliyunAccessKey} \ # 指定したい AccessKey Secret が SLS_ACCESS_KEY_SECRET 変数で指定された AccessKey Secret と同じである場合、SLS_ACCESS_KEY_SECRET2 変数に AccessKey Secret を指定する必要はありません。
            -p 9201:9201 \
            -ti sls-registry.cn-hangzhou.cr.aliyuncs.com/kproxy/kproxy:2.1.8
  • 例 1

    同じ AccessKey ペア設定を持つ prjA と prjB という名前の 2 つのプロジェクトを使用します。

    sudo docker pull sls-registry.cn-hangzhou.cr.aliyuncs.com/kproxy/kproxy:2.1.8
    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.8
  • 例 2

    prjA、prjB、prjC という 3 つのプロジェクトを使用します。 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.8

次の表にパラメーターを示します。

パラメーター

説明

ES_ENDPOINT

Elasticsearch クラスターへのアクセスに使用するアドレス。フォーマット:${Elasticsearch クラスターがデプロイされているサーバーの IP アドレス}:9200

SLS_ENDPOINT

データへのアクセスに使用する URL。フォーマット:https://${project}.${sls-endpoint}/es/${project} はプロジェクトの名前を指定します。${sls-endpoint} はプロジェクトのエンドポイントを指定します。詳細については、エンドポイントをご参照ください。例:https://etl-guangzhou.cn-guangzhou.log.aliyuncs.com/es/

重要

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

SLS_PROJECT

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

SLS_ACCESS_KEY_ID

Alibaba Cloud アカウントの AccessKey ID と AccessKey Secret。

Logstore 内のログをクエリする権限を持つ RAM ユーザーの AccessKey ペア を使用することを推奨します。権限アシスタント機能を使用して、RAM ユーザーにクエリ権限を付与できます。

SLS_ACCESS_KEY_SECRET

設定後、次のコマンドを実行してプロキシがデプロイされているかどうかを確認します。パブリック IP アドレスを使用する場合は、サーバーのセキュリティグループルールにポート 9201 を追加します。詳細については、セキュリティグループルールの追加をご参照ください。

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

出力に JSON 形式のフィールド security_exception が含まれている場合、プロキシはデプロイされています。

{"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

プロキシへのアクセスに使用する URL。フォーマット:http://${プロキシがデプロイされているサーバーの IP アドレス}:9201

ELASTICSEARCH_USERNAME

Kibana コンソールへのログインに使用するユーザー名。

値は、Elasticsearch クラスターをデプロイする際に指定した Elasticsearch のユーザー名に設定する必要があります。

ELASTICSEARCH_PASSWORD

Kibana コンソールへのログインに使用するパスワード。

値は、Elasticsearch クラスターをデプロイする際に指定した Elasticsearch のパスワードに設定する必要があります。

設定後、ブラウザで http://${Kibana の IP アドレス}:5601 と入力して Kibana のログインページに移動します。次に、Elasticsearch クラスターに指定したユーザー名とパスワードを入力します。

重要

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

http://${Kibana の IP アドレス}:5601

image

ステップ 2:Kibana へのアクセス

データのクエリと分析

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

    重要

    Elasticsearch 互換 API を使用して Kibana で SLS データを分析する場合、Discover および Dashboard モジュールのみを使用します。

    image

  2. 表示されたページの左上隅で、管理するインデックスを選択します。表示されたページの右上隅で、ログをクエリする時間範囲を選択します。

    image.png

インデックスパターンの手動作成 (任意)

重要

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

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

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

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

    説明

    [インデックスパターン] ページのパターンリストにはデータが表示されません。パターンリストにデータを表示するには、Simple Log Service の Logstore と Kibana のインデックスパターンをマッピングします。

  4. [インデックスパターンを作成] パネルで、パラメーターを設定します。次の表にパラメーターを示します。

    image.png

    パラメーター

    説明

    名前

    インデックスパターンの名前。フォーマット:${Simple Log Service プロジェクト}.${Logstore 名}

    重要

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

    たとえば、プロジェクト名が etl-guangzhou で Logstore 名が es_test22 の場合、インデックスパターン名を etl-guangzhou.es_test22 に設定する必要があります。

    タイムスタンプフィールド

    タイムスタンプフィールド。値を @timestamp に設定します。

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

クエリ文字列の例

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

    content: "Hello World"

    フィールドを指定しない次のクエリは非効率です。SQL フィールドに変換されてから連結されてマッチングされる可能性があり、クエリ効率が低くなります。

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

    content : "Hello World"

    次のクエリでワイルドカード * を使用すると非効率です。フルテキストスキャンがトリガーされ、データ量が多い場合にレスポンス時間が増加します。

    content : "Hello*"

よくある質問

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

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

    image.png

  2. すべてのコンテナーが 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. ACK コンソールにログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。

  2. [クラスター] ページで、管理するクラスターの名前をクリックします。表示されたページの左側のナビゲーションウィンドウで、[ワークロード] > [ステートフル] を選択します。

  3. 表示されたページの上部で、名前空間として sls-kibana を選択します。Elasticsearch クラスター、Kibana、および Kproxy が起動しているかどうかを確認します。ステートフルワークロードのステータスを表示および変更し、アプリケーションをバッチで再デプロイする方法の詳細については、StatefulSet を使用してステートフルアプリケーションを作成するをご参照ください。

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

helm uninstall sls-kibana --namespace sls-kibana

Kibana で高精度タイムスタンプを表示するにはどうすればよいですか?

  1. 高精度の時間値を持つログが SLS に収集されるようにするには、ナノ秒単位で正確なタイムスタンプを設定する必要があります。詳細については、ナノ秒単位で正確なタイムスタンプを持つログを収集するをご参照ください。

  2. データ型が long である __time_ns_part__ フィールドのインデックスをフィールドインデックスに追加します。特定の Kibana クエリ文は、実行のために SQL 文に変換される場合があります。この場合、SQL 結果に高精度の時間値を含める必要があります。

Helm チャートを更新するにはどうすればよいですか?

Helm チャートを更新するプロセスは、Helm チャートをインストールするプロセスと似ています。helm install コマンドを helm upgrade コマンドに変更するだけです。更新プロセスでは、Helm チャートのインストールに使用した 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