SBクラウド株式会社logo

【Logservice連載】LogtailでCSVデータを収集するLogService

Hi, データエンジニアの大原です。
今回はAlibaba Cloudの国際サイトで提供している LogService のご紹介、およびLogtailでCSVデータをLogServiceへ収集する方法を記載します。
また、SBC Engineers' Blogの性格上、集中連載記事になります。

【Logservice連載】オフラインデータを含めた、様々なデータソースをシームレスに収集するLogServiceのご紹介
【Logservice連載】LogtailでCSVデータを収集するLogService ←本記事
【Logservice連載】SDKでExcelデータを収集するLogService
【Logservice連載】OSS、AWS S3からCSVデータを収集するLogService
【Logservice連載】SDKでTwitterデータを収集するLogService
【Logservice連載】Logstashでnetflowデータを収集するLogService
【Logservice連載】Google Apps Script(GAS)で株価データを収集し、LogServiceの機械学習で株価予測・異常検知・監視をする
【Logservice連載】NYC-Taxi on Logservice

f:id:sbc_ohara:20201118125247p:plain

前書き

LogServiceの可能性をこのblogにて記載しました。

LogService は、リアルタイムデータロギングサービスです。
ログの収集、消費、出荷、検索、および分析をサポートし、大量のログを処理および分析する能力を向上させます。

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

www2.slideshare.net

今回はLogtailを使ってAlibaba Cloud LogServiceへ収集、蓄積、可視化してみましょう。構成図で、こんな感じです。

f:id:sbc_ohara:20201215135145p:plain


プロジェクト作成(LogService全体で共通事項)

まずはプロジェクトを作成します。LogServiceコンソールから 「Create Project」を選択し、起動します。

f:id:sbc_ohara:20201124101928p:plain


Project Nameをここでは「techblog」にし、プロジェクトを作成します。 f:id:sbc_ohara:20201124102655p:plain

その直後に "Do you want to create a Logstore for log data storage immediately?"、「Log Storeを作成しますか?」とポップアップが出ます。 Log StoreはLog Serviceでデータを蓄積するものなので、「OK」を選定します。 f:id:sbc_ohara:20201124102805p:plain

LogStore Nameをここでは「logtail_logstore」と入力し、LogStoreを作成します。 f:id:sbc_ohara:20201124103013p:plain

その後、「LogStoreが作成されました。今すぐデータアクセスしますか?」とポップアップが出ますが、これは必要に応じて選定すると良いです。 ちなみに「Yes」を選択した場合、50を超える様々なデータアクセス手法のコンソールが表示されます。 f:id:sbc_ohara:20201124103134p:plain


データ格納について

(再掲)このシナリオでは 以下の図のように、logtailを使ってcsvファイルを登録します。
ポイントは logserviceはデータが登録された時点で、自動でtimestampが付与されますが、csvファイルなどにてtimestampがあった場合、それをベースに反映する方法です。

f:id:sbc_ohara:20201215135145p:plain


STEP1: Logtailの導入

helpドキュメント に沿ってECSインスタンスを作成・起動します。
※LogServiceと同じリージョンである必要があります。著者は今回日本(東京)リージョンを選定します。
※OSはなんでも良いですが、今回はLinux、CentOS 7.8を選択します。

www.alibabacloud.com

f:id:sbc_ohara:20201209205538p:plain

ECSインスタンス起動直後は以下コマンドを実施します。

[root@sts ~]# yum -y upgrade
[root@sts ~]# wget http://logtail-release-ap-northeast-1.oss-ap-northeast-1.aliyuncs.com/linux64/logtail.sh -O logtail.sh; chmod 755 logtail.sh; ./logtail.sh install ap-northeast-1-internet

〜略〜

logtail-linux64.tar.gz download success
install logtail files success
agent stub for telegraf has been installed
systemd 219
+PAM +AUDIT +SELINUX +IMA -APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 -SECCOMP +BLKID +ELFUTILS +KMOD +IDN
use systemd for startup
Created symlink from /etc/systemd/system/default.target.wants/ilogtaild.service to /etc/systemd/system/ilogtaild.service.
systemd startup done
ilogtail is running
install logtail success
start logtail success
{
   "UUID" : "B3CAFD71-CD5F-41EE-9AA0-F650B7328756",
   "hostname" : "sts",
   "instance_id" : "343FD796-2DFE-11EB-95D8-00163E005CFC_192.168.0.195_1606185538",
   "ip" : "192.168.0.195",
   "logtail_version" : "0.16.50",
   "os" : "Linux; 3.10.0-1127.19.1.el7.x86_64; #1 SMP Tue Aug 25 17:23:54 UTC 2020; x86_64",
   "update_time" : "2020-11-24 10:38:58"
}

これでlogtailが無事インストールされたと思います。
試しに2つのコマンドで確認しましょう。

[root@sts ~]# cat /usr/local/ilogtail/app_info.json
[root@sts ~]# cat /usr/local/ilogtail/ilogtail_config.json

app_info.jsonはlogtailのバージョンなどの情報、ilogtail_config.jsonはlogtailでデータを収集するパラメータです。

[root@sts ~]# cat /usr/local/ilogtail/app_info.json
{
   "UUID" : "B3CAFD71-CD5F-41EE-9AA0-F650B7328756",
   "hostname" : "sts",
   "instance_id" : "343FD796-2DFE-11EB-95D8-00163E005CFC_192.168.0.195_1606185538",
   "ip" : "192.168.0.195",
   "logtail_version" : "0.16.50",
   "os" : "Linux; 3.10.0-1127.19.1.el7.x86_64; #1 SMP Tue Aug 25 17:23:54 UTC 2020; x86_64",
   "update_time" : "2020-11-24 10:38:58"
}
[root@sts ~]# 
[root@sts ~]# cat /usr/local/ilogtail/ilogtail_config.json
{
    "config_server_address" : "http://logtail.ap-northeast-1.log.aliyuncs.com",
    "data_server_list" :
    [
        {
            "cluster" : "ap-northeast-1",
            "endpoint" : "ap-northeast-1.log.aliyuncs.com"
        }
    ],
    "cpu_usage_limit" : 0.4,
    "mem_usage_limit" : 384,
    "max_bytes_per_sec" : 20971520,
    "bytes_per_sec" : 1048576,
    "buffer_file_num" : 25,
    "buffer_file_size" : 20971520,
    "buffer_map_num" : 5,
    "streamlog_open" : false,
    "streamlog_pool_size_in_mb" : 50,
    "streamlog_rcv_size_each_call" : 1024,
    "streamlog_formats":[],
    "streamlog_tcp_port" : 11111
}
[root@sts ~]# 

ローカルからECSにcsvファイルをアップロードします

PS C:\Users\1200358> scp /Users/hironobu.ohara/Desktop/logservice-test-data.csv root@<ecs ip address>:/root/ 

ecsにファイルがあることを確認したら、logtail設定します。

[root@sts ~]# ll
合計 79020
-rw-r--r-- 1 root root 80886700 11月 24 14:12 logservice-test-data.csv
-rwxr-xr-x 1 root root    28176 10月 26 14:48 logtail.sh
[root@sts ~]# 

STEP2: インポート作業

今度はコンソールに戻り、データのインポートをします。

f:id:sbc_ohara:20201124154214p:plain

Delimiter Mode、区切り文字モードを選定します。 f:id:sbc_ohara:20201124164156p:plain

対象のインスタンスを選定します。 f:id:sbc_ohara:20201124164604p:plain

道なりに登録します

f:id:sbc_ohara:20201124164801p:plain

f:id:sbc_ohara:20201124164951p:plain

f:id:sbc_ohara:20201124165102p:plain

「Heartbeat Status of Machine Groups」でHeartbeatをOKにします。もし失敗した場合(NG、False)は「Automatic Retry」ボタンをクリックし再実行すると良いです。

f:id:sbc_ohara:20201209210544p:plain

f:id:sbc_ohara:20201209211341p:plain

ここで注意したいのが、[START_DT]フィールドを、Use System Timeとして登録するところです。
ちなみにcsvファイルの日付 - 時間のフォーマットをLog Serviceへ合わせる場合は、こちらを参考にしてフォーマットを指定する必要があります。

Time formats - Data Collection| Alibaba Cloud Documentation Center

f:id:sbc_ohara:20201209222853p:plain

これを設定すれば、あとはcsvファイルの日付通りにデータが登録されます。以上です。

f:id:sbc_ohara:20201229130418p:plain


完了

Logtailを使って、csvファイルをLogServiceへ格納、可視化する方法を簡単に説明しました。
LogServiceはシンプルかつスピーディに構築することができます。この構築も、可視化まで1時間もかからないです。5分あれば見れます。

LogServiceはフルマネージド環境でありながら、様々なデータを収集し蓄積・可視化する事が可能です。
加えて、データ量や使い方に応じた課金なので、使い方次第ではコスト削減や、運用負荷の改善に効果があるのでは無いでしょうか。

最後までお読みいただきありがとうございました。