LogServiceからClickHouse連携

作成日:2021-07-21

LogServiceからApsaraDB for ClickHouseへデータ連携する方法

本記事では、LogServiceからApsaraDB for ClickHouseへデータ連携する方法をご紹介します。
LogServiceは、AlibabaCloudが提供する低コストでリアルタイムログ収集から各種ログの一元管理を行うプラットフォームです。

img

ClickHouseとは

ClickHouseは非集計データを含む大量のデータを安定的かつ継続しながら集計といったリアルタイム分析を支える列指向の分散型データベースサービスです。 トラフィック分析、広告およびマーケティング分析、行動分析、リアルタイム監視などのビジネスシナリオで幅広く 使用されています。

https://clickhouse.tech/docs/en/introduction/adopters/

少し前になりますが、LogServiceについての資料をSlideShareへアップロードしていますので、こちらも参考になればと思います。

https://www.slideshare.net/sbcloud/alibaba-cloud-log-service

LogService - ApsaraDB for ClickHouse データ連携について

LogService - ClickHouseのデータ連携方法を記載します。LogServiceのログ配信機能を使用して、LogServiceからClickHouseにデータをインポートします。構成図は次の通りです。

img

前提条件

  • Alibaba Cloudのアカウントを持っている
  • 同一リージョンにある LogService とApsaraDB for ClickHouse を有効化している
  • ApsaraDB for ClickHouse でテーブルが作成できる状態になってる

1.ClickHouseを準備する

1-1.ClickHouseインスタンスを準備する

この手法は過去の記事でも記載していますが、再掲として記載します。

https://pangsen.github.io/help/usecase-ClickHouse/ACH_002_clickhouse-quick-start

1)まずはApsaraDB for ClickHouseインスタンスを作成します。
①VPCを作成

img

img

②ClickHouseインスタンスを作成
著者は以下のインスタンススペックでインスタンスを作成しています。

ClickHouse version:20.8.7.15 Edition:Single-replica Edition

img

img

img

2)ClickHouseの登録アカウントを作成
インスタンスをクリックし、左側にアカウント管理画面で、アカウントを作成します

img

3)ClickHouseクラスターにDMSで接続
①ClickHouseのインスタンスをクリックし、トップメニューの「Log On to Database」をクリックします

img

② DBアカウントとパスワードを入力し、ClickHouseへログイン

img

③DMS画面でClickHouseのインスタンスが表示されます

img

2.LogServiceでデータ蓄積ら準備をします

2-1.LogServiceのプロジェクト作成

1)AlibabaCloudサイトをログインし、コンソール画面にLogServiceをクリックします。
img

2)プロジェクトを作成
①LogServiceコンソール上から「プロジェクト作成」をクリックします。
img

②Clickhouseと同じリージョンを設定します。
img

③プロジェクトを作成完了します
ここで、project名は logclickhouse にしています。
img

3)Logstoreを作成
Logstore名は ch-logstore にしています。

①「OK」をクリックすると、Logstore設定画面が表示されます
img

②Web Trackingを「ON」にすることで、Logstoreが作成されます
img

4)DataImportを設定します

①Web TrackingImportを選択します
img

②データソースを確認します
img

③Queryと分析を確認します
img

img

④ DataImportを作成完了します
img

⑤LogStoreを確認します
img

2-2.ログをLogstoreにアップロードする場合について

1)HTTPGetを使ってログデータをLogStoreにアップロードする場合

①HTTPGetのフォーマットは次の通りになります

curl --request GET 'http://${project}.${host}/logstores/${logstore}/track?APIVersion=0.6.0&key1=val1&key2=val2'

・hostはプロジェクトの概要画面に確認することができます
img

①ECSをログインし、下記curl.shスクリプトを作成します

for i in {1..20}
do
curl --request GET "http://logclickhouse.ap-northeast-1.log.aliyuncs.com/logstores/ch-logstore/track?APIVersion=0.6.0&__topic__=testforclickhouse&key1=centos&key2=$i"
done

img

②下記curl.shを実行し、ログデータを生成します

# sh curl.sh

img

③ログデータを確認する
img

3.LogServiceのデータをClickHouseへインポート

3-1.ClickHouseでターゲットテーブルを作成します

1)DMSでClickhouseへ接続します
img

img

img

img

2)データベースを作成します

create database if not exists log_clickhouse_demo ON CLUSTER default;

img

3)ローカルテーブルを作成します

CREATE TABLE log_clickhouse_demo.log_single_local on cluster default(
`time` Nullable(DATETIME),
`__source__` IPv4,
`__tag__:__client_ip__` IPv4,
`__receive_time__` Nullable(String),
`__topic__` String,
`key1` String,
`key2` String
)
ENGINE = MergeTree()
ORDER BY __source__ SETTINGS index_granularity = 8192;

img

4)分散テーブルを作成します

CREATE TABLE log_single_distribute
ON CLUSTER default as log_clickhouse_demo.log_single_local
ENGINE = Distributed(default,log_clickhouse_demo,log_single_local,rand());

img

3-1.ClickHouseでLog Deliveryタスクを作成します

Log Deliveryは、LogServiceからClickHouseへログを配信する機能です。

https://www.alibabacloud.com/help/doc-detail/170130.htm

1)Log Deliveryタスクを作成します
①Clickhouseインスタンスをクリックし、Log Deliveryというメニューをクリックします
img

②「CreateLogDeliveryTask」メニューをクリックします
img

③LogDeliveryTaskを設定します
img

img

img

img

img

2)Step 2-2を繰り返し、ログをLogstoreに再度アップロードします

①下記curl.shを実行し、ログデータを生成します

# sh curl.sh

img

②ログデータを確認します
img

3-2.ClickHouseでログデリバリーを確認します

①ログデータを確認します

SELECT
*
FROM `log_single_distribute`
LIMIT 20;

img

SELECT
*
FROM `log_single_local`
LIMIT 20;

img


最後に

ここまで、LogService - ClickHouseのデータ連携方法を紹介しました。
ApsaraDB for ClickHouseはAlibaba Cloudの様々なプロダクトサービスとシームレスに連携することが出来るので、LogServiceでデータを収集し、ClickHouseで圧縮しながら可視化するのも有効だと思います。(その方が、LogService側でデータを保持するよりずっと安く抑えられます)

Close

Alibaba Cloudを始めてみましょう

ソフトバンクは、Alibaba Cloudのアカウント開設から、サービス展開までをお手伝いします。
Hatena