Kibana で Elasticsearch のログを可視化しており、ログを Elasticsearch から Simple Log Service (SLS) に移行したい場合は、SLS の Elasticsearch 互換 API を使用することで、ビジネスコードを変更する必要がなくなります。
Alibaba Cloud は、この Topic の情報に関する専有権を所有しています。この Topic では、Alibaba Cloud がサードパーティのサービスと連携する機能について説明します。サードパーティの企業名やサービス名が参照される場合があります。
前提条件
プロジェクトと標準 Logstore が作成され、ログが収集されていること。詳細については、プロジェクトの管理、基本的な Logstore の作成、およびデータ収集の概要をご参照ください。
ログをクエリする前にインデックスが作成されていること。詳細については、インデックスの作成をご参照ください。
RAM ユーザーの AccessKey ペアが作成され、Logstore 内のログをクエリするために必要な権限が RAM ユーザーに付与されていること。詳細については、RAM ユーザーへの権限付与をご参照ください。
背景情報
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 の使用
次のコマンドを実行して、サーバー上に
sls-kibanaという名前のディレクトリと、sls-kibanaディレクトリ内にdataという名前のサブディレクトリを作成します。次に、Elasticsearch コンテナーがサブディレクトリに対する読み取り、書き込み、および実行権限を持つように、dataサブディレクトリの権限を変更します。mkdir sls-kibana cd sls-kibana mkdir data chmod 777 datasls-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
任意。インデックスパターンが作成されるスペース。スペースが存在しない場合は、自動的に作成されます。
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 プロジェクトを指定できます。次のコマンドを実行してサービスを開始します:
docker compose up -d次のコマンドを実行してサービスのステータスをクエリします:
docker compose ps設定後、ブラウザで
http://${Kibana の IP アドレス}:5601と入力して Kibana のログインページに移動します。次に、Elasticsearch クラスターに指定したユーザー名とパスワードを入力します。重要サーバーのセキュリティグループルールにポート 5601 を追加する必要があります。詳細については、セキュリティグループルールの追加をご参照ください。
http://${Kibana の IP アドレス}:5601
Helm の使用
前提条件
Container Service for Kubernetes (ACK) クラスターに次のコンポーネントがインストールされている必要があります。詳細については、コンポーネントの管理をご参照ください。
次のいずれかの Ingress コントローラー:
手順
名前空間の作成:
# 名前空間を作成します。 kubectl create namespace sls-kibanavalues.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*"。次のコマンドを実行して、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設定後、ブラウザで
http://${Ingress アドレス}/kibana/と入力して Kibana のログインページに移動します。次に、ステップ 2 で Elasticsearch クラスターに指定したユーザー名とパスワードを入力します。http://${Ingress アドレス}/kibana/
Docker の使用
ステップ 1:Elasticsearch クラスターのデプロイ
Docker を使用して Elasticsearch クラスターをデプロイする前に、Docker をインストールして起動する必要があります。詳細については、Docker と Docker Compose のインストールと使用をご参照ください。
次のコマンドを実行して、サーバーに 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_USERNAMEElasticsearch クラスターへのアクセスに使用するユーザー名。値を elastic に設定します。
ELASTIC_PASSWORDElasticsearch クラスターへのアクセスに使用するパスワード。このパラメーターの値は文字列である必要があります。
/data物理マシン上の Elasticsearch クラスターに格納されているデータの場所。必要に応じてデータストレージの場所を変更してください。
設定後、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
次の表にパラメーターを示します。
パラメーター | 説明 |
| Elasticsearch クラスターへのアクセスに使用するアドレス。フォーマット: |
| データへのアクセスに使用する URL。フォーマット: 重要 HTTPS プロトコルを使用する必要があります。 |
| SLS プロジェクトの名前。詳細については、プロジェクトの管理をご参照ください。 |
| Alibaba Cloud アカウントの AccessKey ID と AccessKey Secret。 Logstore 内のログをクエリする権限を持つ RAM ユーザーの AccessKey ペア を使用することを推奨します。権限アシスタント機能を使用して、RAM ユーザーにクエリ権限を付与できます。 |
|
設定後、次のコマンドを実行してプロキシがデプロイされているかどうかを確認します。パブリック 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パラメーター | 説明 |
| プロキシへのアクセスに使用する URL。フォーマット: |
| Kibana コンソールへのログインに使用するユーザー名。 値は、Elasticsearch クラスターをデプロイする際に指定した Elasticsearch のユーザー名に設定する必要があります。 |
| Kibana コンソールへのログインに使用するパスワード。 値は、Elasticsearch クラスターをデプロイする際に指定した Elasticsearch のパスワードに設定する必要があります。 |
設定後、ブラウザで http://${Kibana の IP アドレス}:5601 と入力して Kibana のログインページに移動します。次に、Elasticsearch クラスターに指定したユーザー名とパスワードを入力します。
サーバーのセキュリティグループルールにポート 5601 を追加する必要があります。詳細については、セキュリティグループルールの追加をご参照ください。
http://${Kibana の IP アドレス}:5601
ステップ 2:Kibana へのアクセス
データのクエリと分析
左側のナビゲーションウィンドウで、[分析] > [Discover] を選択します。
重要Elasticsearch 互換 API を使用して Kibana で SLS データを分析する場合、Discover および Dashboard モジュールのみを使用します。

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

インデックスパターンの手動作成 (任意)
デフォルトでは、Docker Compose または Helm を使用してデプロイする場合、インデックスパターンを手動で作成する必要はありません。Docker を使用してデプロイする場合は、インデックスパターンを手動で作成する必要があります。
左側のナビゲーションウィンドウで、[管理] > [スタック管理] を選択します。
左側のナビゲーションウィンドウで、[Kibana] > [インデックスパターン] を選択します。
初めてインデックスパターンを作成する場合、ダイアログボックスで [非表示またはシステムインデックスに対してインデックスパターンを作成] をクリックします。
説明[インデックスパターン] ページのパターンリストにはデータが表示されません。パターンリストにデータを表示するには、Simple Log Service の Logstore と Kibana のインデックスパターンをマッピングします。
[インデックスパターンを作成] パネルで、パラメーターを設定します。次の表にパラメーターを示します。

パラメーター
説明
名前インデックスパターンの名前。フォーマット:
${Simple Log Service プロジェクト}.${Logstore 名}。重要完全一致のみがサポートされます。ワイルドカード文字はサポートされていません。完全な名前を入力する必要があります。
たとえば、プロジェクト名が etl-guangzhou で Logstore 名が es_test22 の場合、インデックスパターン名を
etl-guangzhou.es_test22に設定する必要があります。タイムスタンプフィールドタイムスタンプフィールド。値を
@timestampに設定します。[インデックスパターンを作成] をクリックします。
クエリ文字列の例
クエリでフィールドを指定する方が、指定しないよりも効率的です。
content: "Hello World"フィールドを指定しない次のクエリは非効率です。SQL フィールドに変換されてから連結されてマッチングされる可能性があり、クエリ効率が低くなります。
"Hello World"完全一致を使用する方が、ワイルドカード
*クエリを使用するよりも効率的です。content : "Hello World"次のクエリでワイルドカード
*を使用すると非効率です。フルテキストスキャンがトリガーされ、データ量が多い場合にレスポンス時間が増加します。content : "Hello*"
よくある質問
Docker Compose を使用してデプロイした後、Kibana にアクセスできないのはなぜですか?
sls-kibanaディレクトリで、docker compose psコマンドを実行して、次のコンテナーのステータスを確認します。すべてのコンテナーが UP 状態であることを確認してください。
すべてのコンテナーが UP 状態である場合は、各コンテナーのエラーログを表示します。
docker logs sls-kibana_es_1 # Elasticsearch クラスターの起動ログを表示します。 docker logs sls-kibana_kproxy_1 # KProxy の起動ログを表示します。 docker logs sls-kibana_kibana_1 # Kibana の起動ログを表示します。
Helm を使用してデプロイした後、Kibana にアクセスできないのはなぜですか?
ACK コンソールにログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターの名前をクリックします。表示されたページの左側のナビゲーションウィンドウで、 を選択します。
表示されたページの上部で、名前空間として
sls-kibanaを選択します。Elasticsearch クラスター、Kibana、および Kproxy が起動しているかどうかを確認します。ステートフルワークロードのステータスを表示および変更し、アプリケーションをバッチで再デプロイする方法の詳細については、StatefulSet を使用してステートフルアプリケーションを作成するをご参照ください。
Helm をアンインストールするにはどうすればよいですか?
helm uninstall sls-kibana --namespace sls-kibanaKibana で高精度タイムスタンプを表示するにはどうすればよいですか?
高精度の時間値を持つログが SLS に収集されるようにするには、ナノ秒単位で正確なタイムスタンプを設定する必要があります。詳細については、ナノ秒単位で正確なタイムスタンプを持つログを収集するをご参照ください。
データ型が
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インデックスパターンを一括削除するにはどうすればよいですか?
削除するインデックスパターンをリストアップします。
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_test50ptn_delete.py を使用してインデックスパターンを削除します。
説明削除後、インデックスパターンにリンクされているダッシュボードは機能しなくなります。削除する前に、インデックスパターンが不要であることを確認してください。
# /tmp/ptnlist.txt の内容を確認し、すべてのインデックスパターンが削除対象であることを確認します。 ➜ cat /tmp/ptnlist.txt # 削除を実行します。 ➜ python ptn_delete.py kibana_config.json /tmp/ptnlist.txt