著者: ジン・レイ
シーン
SLS の ES 互換性により、Kibana を使用して SLS データのクエリと視覚化を簡単に行うことができるようになりました。 ES から SLS に移行するユーザーは、元の Kibana の使用習慣を引き続き維持できます。以下は、Kibana を介して SLS にアクセスする方法を示しています。
説明書
導入アーキテクチャ
ここの青い部分は、クライアントの展開が必要なコンポーネントです。
- 可視化にはKibanaを使用
- プロキシは、Kibana リクエストを区別し、SLS 関連のリクエストを SLS の ES 互換インターフェイスに転送するために使用されます。
- Elasticsearch は Kibana のメタを保存するために使用されます
ちょっと待って、なぜここで ES が必要なのでしょうか?
その理由は、SLS の Logstore が更新をサポートしておらず、多くのメタクラス データが SLS に適していないためです。
Kibana には、Kibana のチャート構成、インデックス パターン構成など、保存するメタデータが多数あります。
したがって、ES インスタンスをデプロイする必要があります。この ES インスタンスには Kibana のメタデータのみが保存されるため、リソースの使用量は非常に少なくなります。
導入プロセス
docker-compose を使用してデプロイする
関連する準備
docker と docker compose をインストールした後、次の手順は podman compose にも適用できます。
関連するディレクトリを作成する
mkdir sls-kibaba # 创建一个新的目录
cd sls-kibaba # 进入
mkdir es_data # 创建一个目录用于放es的数据
構成
sls-kibana ディレクトリに docker-compose.yml ファイルを作成します。
内容は以下の通りです(以下のマークは修正箇所です。実際の状況に応じて修正してください)
version: '3'
services:
es:
image: elasticsearch:7.17.3
environment:
- "discovery.type=single-node"
- "ES_JAVA_OPTS=-Xms2G -Xmx2G"
- ELASTIC_USERNAME=elastic
- ELASTIC_PASSWORD=ES密码 # 此处请修改
- xpack.security.enabled=true
volumes:
- ./data:/usr/share/elasticsearch/data
networks:
- es717net
kproxy:
image: sls-registry.cn-hangzhou.cr.aliyuncs.com/kproxy/kproxy:1.9d
depends_on:
- es
environment:
- ES_ENDPOINT=es:9200
- SLS_ENDPOINT=https://etl-dev.cn-huhehaote.log.aliyuncs.com/es/ # 此处请修改,规则为 https://${project名}.${slsEnpoint名}/es/
- SLS_PROJECT=etl-dev # 此处请修改
- SLS_ACCESS_KEY_ID=ALIYUN_ACCESS_KEY_ID # 此处请修改, 确保有读logstore的权限
- SLS_ACCESS_KEY_SECRET=ALIYUN_ACCESS_KEY_SECRET # 此处请修改为真实accessKeySecret
networks:
- es717net
kibana:
image: kibana:7.17.3
depends_on:
- kproxy
environment:
- ELASTICSEARCH_HOSTS=http://kproxy:9201
- ELASTICSEARCH_USERNAME=elastic
- ELASTICSEARCH_PASSWORD=ES密码 # 此处请修改(跟前面设置的ES密码相同)
- XPACK_MONITORING_UI_CONTAINER_ELASTICSEARCH_ENABLED=true
ports:
- "5601:5601"
networks:
- es717net
networks:
es717net:
ipam:
driver: default
ローカルの Kibana サービスを開始します。
docker compose up -d
docker compose の起動ステータスを確認します。
docker compose ps
キバナを訪問
ブラウザでhttp://$ (デプロイKibaba IP アドレス):5601 にアクセスし、アカウントとパスワードを入力して Kibana にログインします。
インデックスパターンの構成
スタック管理を選択します。
[インデックス パターン] タブをクリックします。インデックス パターン リストにデータが表示されないのは通常です。ログ サービスのログストアは Kibana のインデックス パターンにマッピングされているため、手動で作成する必要があります。プロンプト ボックスで、非表示インデックスまたはシステム インデックスに対するインデックス パターンを作成をクリックします。
[インデックス パターンの作成] ページでは、名前の形式は ${project}.${logstore} です。比率は完全に入力する必要があり、* 一致はサポートされていないことに注意してください。
[インデックス パターンの作成] をクリックしてパターンの作成を完了し、Discover と入力してデータをクエリします。
ログストアのクエリ
Kibana のクエリ ボックスでは KQL と Lucene を選択でき、両方の SLS の ES 互換インターフェイスがサポートされています。
単純なホストクエリ:
一部の複雑なクエリとフィルターを照会できます。
ビジュアルチャート
では、クエリに加えて、Kibana を視覚化にも使用できますか?もちろん! 「ダッシュボード」を選択します。
入力後、「ダッシュボードの作成」をクリックしてグラフを作成します。
横軸・縦軸のフィールドや統計手法を設定することで、簡単に目的のグラフを作成できます。
たとえば、最も単純なヒストグラムは、横軸に時間を、縦軸にレコード数をとって、リクエストされた訪問数をカウントするヒストグラムです。
次に、各列のステータスを確認したいので、ステータスとして [内訳] フィールドを選択します。
よくある質問
1) Kibana の SLS でログストアが表示されないのはなぜですか?
SLS 上のログストアは、Kibana のインデックス パターンを通じてクエリされます。SLS 上のログストアは、インデックス パターンを手動で作成して作成する必要があります。
2) Kibana でインデックス パターンを作成するとき、入力が行われていないときにプロンプトが表示されないのはなぜですか?
これは正常です。左側に正しい ${project}.${logstore} を入力すると (${project} と ${logstore} は実際の値に置き換える必要があります)、次のように表示されます。
3) Kibana はインデックスパターンを作成するときに * ワイルドカードをサポートしますか?
ワイルドカードはサポートされていないため、${project}.${logstore} は完全に入力する必要があります (etl-dev.accesslog など)。
4) Kibana で Logstore のインデックス パターンを作成するときに右側にプロンプトが表示されないのはなぜですか?
いくつかの可能性があります:
- SLS の ES 互換アドレスが間違っています。kproxy で設定されている場合、ルールは https://${プロジェクト名}.${slsEnpoint 名}/es/ になります。サフィックス /es/に注意してください。 2. 対応する accessKeyId および accessKeySelect には、SLS Logstore へのアクセス権限 (読み取り権限) がありません。
- 5) Kibana 上にアクセスしたい複数の SLS プロジェクトがあります。これは可能ですか?
はい、鍵は kproxy の設定にあります。 SLS_PROJECT、SLS_ENDPOINT、SLS_ACCESS_KEY_ID、SLS_ACCESS_KEY_SECRET は、最初のプロジェクトに関連する変数名です。 2 番目のプロジェクトからは、SLS_PROJECT2、SLS_ENDPOINT2、SLS_ACCESS_KEY_ID2、SLS_ACCESS_KEY_SECRET2 など、関連する変数名に数値の接尾辞を追加する必要があります。後続のプロジェクトの AccessKey が最初のプロジェクトと同じである場合、プロジェクトに対応する AccessKey の設定は省略できます。
たとえば、別のプロジェクトが Kibaba によってチェックされると仮定すると、2 番目の kproxy として次のようになります。
- SLS_ENDPOINT2=https://etl-dev2.cn-huhehaote.log.aliyuncs.com/es/
- SLS_PROJECT2=etl-dev2
- SLS_ACCESS_KEY_ID2=etl-dev2对应的accessKeyId #如果和SLS_ACCESS_KEY_ID2一样可以不加
- SLS_ACCESS_KEY_SECRET2=etl-dev2对应的accessKeyKey #如果和SLS_ACCESS_KEY_ID2一样可以不加
まとめ
この記事では、Kibana を使用してクエリと分析のために SLS ES 互換インターフェイスに接続し、Kibana のクエリ機能と視覚化機能を通常どおりに接続して使用する方法を説明します。次の 2 つの状況に適しています。
- 以前の使用習慣が Kibana で、ログが Alibaba Cloud SLS にすでに存在している場合は、このソリューションを使用して接続できます。
- 現在標準の ELK ソリューションを使用しているが、ES を使用する際のメンテナンス作業やチューニングにうんざりしている場合は、Alibaba Cloud SLS ソリューション (C++ 最下層、サーバーレス、低コスト、ES 互換) を試してみることをお勧めします。
ご利用をお待ちしております。
参考ドキュメント:
-
SLS対応ESのご紹介
-
Kibana を使用して ES 互換インターフェイスに接続するhttps://help.aliyun.com/zh/sls/user-guide/use-kibana-to-access-the-elasticsearch-compatibility-api-of-log-service?spm =a2c4g.11186623.0.0.27bc54e3bgGvsa#cdb8c7a157t0v