Log Service は、 Logtail を使用して Kubernetes クラスタログを収集し、カスタムリソース定義 (CRD) を使用して、収集設定を管理します。 このページでは、Logtail のインストール方法、及びLogtail を使用して Kubernetes クラスタログを収集する方法について説明します。
設定プロセス

- インストールコマンドを実行して、alibaba-log-controller Helm パッケージをインストールします。
- 収集設定を管理するために、必要に応じて CRD またはコンソールを選択します。
ステップ 1.Logtail のインストール
マネージド Kubernetes クラスターの Container Service へのインストール
マネージド Kubernetes クラスターに Logtail をインストールする方法の詳細については、「Log Serviceを使用した Kubernetes クラスターログの収集」の「 Log Serviceコンポーネントの手動インストール」セクションをご参照ください。
Alibaba Cloud Container Service への Kubernetes のインストール
手順- Alibaba Cloud Container Service Kubernetes のマスターノードにログインします。 詳細については、「SSH による Kubernetes クラスターへのアクセス」をご参照ください。
${your_k8s_cluster_id}
を Kubernetes クラスタ ID に置き換え、次のコマンドを実行します。wget http://logtail-release-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/kubernetes/alicloud-log-k8s-install.sh -O alicloud-log-k8s-install.sh; chmod 744 ./alicloud-log-k8s-install.sh; sh ./alicloud-log-k8s-install.sh ${your_k8s_cluster_id}
インストール後、 Log ServiceはKubernetes クラスタの同じリージョンに Log Service プロジェクトを自動的に作成します。 作成されるプロジェクトの名前は
k8s-log-${your_k8s_cluster_id}
です。 プロジェクトに、マシングループk8s-group-${your_k8s_cluster_id}
が自動的に作成されます。注config-operation-log
という名前の Logstore がk8s-log-${your_k8s_cluster_id}
プロジェクトに自動的に作成されます。これは alibaba-log-controller の操作ログの格納に使用されます。 alibaba-log-controller のトラブルシューティングに必要な Logstore なので削除できません。- 収集したログを既存プロジェクトに格納するには、
sh ./alicloud-log-k8s-install.sh${your_k8s_cluster_id}${your_project_name}
インストールコマンドを実行して、プロジェクトがご使用の Kubernetes クラスターがデプロイされるリージョンに属していることを確認します。
[root@iZbp******biaZ ~]# wget http://logtail-release-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/kubernetes/alicloud-log-k8s-install.sh -O alicloud-log-k8s-install.sh; chmod 744 ./alicloud-log-k8s-install.sh; sh ./alicloud-log-k8s-install.sh c12ba20**************86939f0b
....
....
....
alibaba-cloud-log/Chart.yaml
alibaba-cloud-log/templates/
alibaba-cloud-log/templates/_helpers.tpl
alibaba-cloud-log/templates/alicloud-log-crd.yaml
alibaba-cloud-log/templates/logtail-daemonset.yaml
alibaba-cloud-log/templates/NOTES.txt
alibaba-cloud-log/values.yaml
NAME: alibaba-log-controller
LAST DEPLOYED: Wed May 16 18:43:06 2018
NAMESPACE: default
STATUS: DEPLOYED
RESOURCES:
==> v1beta1/ClusterRoleBinding
NAME AGE
alibaba-log-controller 0s
==> v1beta1/DaemonSet
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
logtail 2 2 0 2 0 <none> 0s
==> v1beta1/Deployment
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
alibaba-log-controller 1 1 1 0 0s
==> v1/Pod(related)
NAME READY STATUS RESTARTS AGE
logtail-ff6rf 0/1 ContainerCreating 0 0s
logtail-q5s87 0/1 ContainerCreating 0 0s
alibaba-log-controller-7cf6d7dbb5-qvn6w 0/1 ContainerCreating 0 0s
==> v1/ServiceAccount
NAME SECRETS AGE
alibaba-log-controller 1 0s
==> v1beta1/CustomResourceDefinition
NAME AGE
aliyunlogconfigs.log.alibabacloud.com 0s
==> v1beta1/ClusterRole
alibaba-log-controller 0s
[SUCCESS] install helm package : alibaba-log-controller success.
helm Status alibaba-log-controller
を実行して、Pod の現在のステータスを確認できます。 すべてのステータスが成功すると、インストールは成功です。
インストールが正常に完了したら、Log Service コンソールにログインします。 自動的に作成された Log Service プロジェクトが、コンソールに表示されます。
(プロジェクトがたくさんある場合は、キーワード k8s-log
で検索してください。)
自分で構築した Kubernetes のインストール
- Kubernetes クラスタは、バージョン 1.8 以降でなければなりません。
- Helm 2.6.4 以降がインストールされていなければなりません。
- Log Service コンソールで、プロジェクトを作成します。 プロジェクト名は、
k8s-log-custom-
で始める必要があります。 - 次のコマンドで、パラメーターをご自分のパラメーターに置き換え、コマンドを実行します。
wget http://logtail-release-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/kubernetes/alicloud-log-k8s-custom-install.sh; chmod 744 ./alicloud-log-k8s-custom-install.sh; sh ./alicloud-log-k8s-custom-install.sh {your-project-suffix} {region-id} {aliuid} {access-key-id} {access-key-secret}
パラメーターと説明は次のとおりです。
名前 説明 {your-project-suffix} 2 番目の手順で作成したプロジェクト名の k8s-log-custom-
の後の部分。 たとえば、k8s-log-custom-xxxx
というプロジェクトを作成した場合 、xxxx
を入力します。{regionId} プロジェクトが配置されているリージョンの ID。 サービスエンドポイント を表示できます。たとえば、 China East 1 (Hangzhou)
のリージョン ID はcn-hangzhou
です。{aliuid} ユーザー ID (AliUid) です。 パラメータを Alibaba Cloud アカウント ID AliUid に置き換える必要があります。 注 AliUid 文字のストリングです。 ご使用の AliUid の表示方法の詳細については、「Alibaba Cloud ECS インスタンス以外または他のアカウントの ECS インスタンスからログを収集する」のステップ 1 をご参照ください。{access-key-id} アカウントアクセスキー ID。 サブアカウントの AccessKey を使用し、AliyunLogFullAccess 権限を与えることを推奨します。 詳細については、「概要」をご参照ください。 {access-key-secret} アカウントのアクセスキーシークレット。 サブアカウントの AccessKey を使用し、AliyunLogFullAccess 権限を与えることを推奨します。 詳細については、「概要」をご参照ください. k8s-group-${your_k8s_cluster_id}
です。注- Logstore
config-operation-log
は、k8s-log-${your_k8s_cluster_id} プロジェクトに自動的に作成されます。 この Logstore は削除しないでください。 - 自分で構築した kubernetes のインストール後、他の POD を削除中に
container text file busy
エラーが発生しないようにするために、Logtail はprivileged
権限を付与します。 詳細については、『bug 1468249』、『bug 1441737』 、および『issue 34538』をご参照ください。
- Logstore
[root@iZbp1dsxxxxxqfbiaZ ~]# wget http://logtail-release.oss-cn-hangzhou.aliyuncs.com/linux64/alicloud-log-k8s-custom-install.sh -O alicloud-log-k8s-custom-install.sh; chmod 744 ./alicloud-log-k8s-custom-install.sh; sh ./alicloud-log-k8s-custom-install.sh xxxx cn-hangzhou 165xxxxxxxx050 LTAxxxxxxxxxxx AIxxxxxxxxxxxxxxxxxxxxxxxxxxxxxe
....
....
....
NAME: alibaba-log-controller
LAST DEPLOYED: Fri May 18 16:52:38 2018
NAMESPACE: default
STATUS: DEPLOYED
RESOURCES:
==> v1beta1/ClusterRoleBinding
NAME AGE
alibaba-log-controller 0s
==> v1beta1/DaemonSet
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
logtail-ds 2 2 0 2 0 <none> 0s
==> v1beta1/Deployment
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
alibaba-log-controller 1 1 1 0 0s
==> v1/Pod(related)
NAME READY STATUS RESTARTS AGE
logtail-ds-7xf2d 0/1 ContainerCreating 0 0s
logtail-ds-9j4bx 0/1 ContainerCreating 0 0s
alibaba-log-controller-796f8496b6-6jxb2 0/1 ContainerCreating 0 0s
==> v1/ServiceAccount
NAME SECRETS AGE
alibaba-log-controller 1 0s
==> v1beta1/CustomResourceDefinition
NAME AGE
aliyunlogconfigs.log.alibabacloud.com 0s
==> v1beta1/ClusterRole
alibaba-log-controller 0s
[INFO] your k8s is using project : k8s-log-custom-xxx, region : cn-hangzhou, aliuid : ***************, accessKeyId : LTA**********
[SUCCESS] install helm package : alibaba-log-controller success.
helm status alibaba-log-controller
を使用すると、現在の pod のステータスを表示できます。 すべてのステータスが成功すると、インストールは完了です。
インストール後、Log Service コンソールにログインします。 自動作成された Log Service プロジェクトが表示されます。 プロジェクトが多数ある場合は、キーワード
k8s-log
で検索します。
ステップ 2. 設定
ログ収集は、デフォルトでコンソール設定モードをサポートしています。 また、Kubernetes マイクロサービス開発の CRD 設定モードも提供されています。 kubectl を使用して設定を管理できます。 以下は 2 つのモードの比較です。
- | CRD モード | コンソールモード |
---|---|---|
操作の複雑さ | 低 | 中 |
関数 | コンソールモードを除く、高度な設定をサポート。 | 中 |
複雑さ | 中 | 低 |
ネットワーク接続 | Kubernetes クラスタに接続 | インターネットに接続 |
デプロイメントコンポーネントとの連携 | 対応 | サポート対象外 |
認証方法 | Kubernetes認証 | クラウドアカウント認証 |
Kubernetes のデプロイメント、および公開プロセスと連携されているため、収集構成管理に CRD メソッドを使用することを推奨します。
コンソール上でのコレクション構成の管理
必要に応じてコンソールに Logtai l収集構成を作成します。 設定手順については、以下をご参照ください。
- コンテナテキストログ(推奨)
-
デフォルトでは、ホストのルートディレクトリは Logtail コンテナの
/logtail_host
ディレクトリにマウントされています。 パスを設定する際、このプレフィックスを追加する必要があります。 たとえば、ホストの/home/logs/app_log/
ディレクトリからデータを収集するには、設定ページのログパスを/logtail_host/home/logs/app_log/
に設定します。 - syslog
CRD 管理による取得設定
Kubernetes マイクロサービス開発モデルでは、ログサービスも CRD を設定する方法を提供し、kubectl を直接使用して設定を管理できます。また、Kubernetes デプロイメントと連携し、リリースプロセスをより完全に行うことができます。
詳細は、「CRD での Kubernetes ログ収集の設定」をご参照ください。
その他の操作
DaemonSet デプロイの移行手順
- 新しいバージョンの形式でインストールすると、インストールコマンドには、以前のkubernetes クラスタで使用されていた Log Service プロジェクト名のパラメーターが最後に追加されます。
たとえば、プロジェクト名が
k8s-log-demo
で、クラスタ ID がc12ba2028cxxxxxxxxxx6939f0b
の場合、インストールコマンドは次のようになります。wget http://logtail-release-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/kubernetes/alicloud-log-k8s-install.sh -O alicloud-log-k8s-install.sh; chmod 744 ./alicloud-log-k8s-install.sh; sh ./alicloud-log-k8s-install.sh c12ba2028cxxxxxxxxxx6939f0b k8s-log-demo
- インストールが成功したら、Log Service コンソールで、履歴収集設定を新しいマシングループ
k8s-group-${your_k8s_cluster_id}
に適用します。 - 1 分後、履歴収集設定はマシングループの履歴にバインドされます。
- ログ収集が正常であれば、以前にインストールした Logtail DaemonSet を削除できます。
同じ Log Service プロジェクトで複数のクラスタを使用する
複数のクラスタを使用して、同じ Log Service プロジェクトにログを収集することができます。 他のクラスタ Log Service コンポーネントをインストールする際、インストールパラメーターの
${your_k8s_cluster_id}
を、最初にインストールしたクラスタ ID に置き換える必要があります。
<p class="p">たとえば、ID がabc001、abc002、および abc003の 3 つのクラスタがあるとします。 3 つのクラスタのインストールパラメーター
${your_k8s_cluster_id}
は、すべて abc001
にする必要があります。
Logtail コンテナログ
/usr/local/ilogtail/
ディレクトリに格納されており、ファイル名は、ilogtail.LOG
および ilogtail.plugin
です。コンテナの stdout に参照の意味はありません。そのため、次の stdout の出力を無視できます。
start umount useless mount points, /shm$|/merged$|/mqueue$
umount: /logtail_host/var/lib/docker/overlay2/3fd0043af174cb0273c3c7869500fbe2bdb95d13b1e110172ef57fe840c82155/merged: must be superuser to unmount
umount: /logtail_host/var/lib/docker/overlay2/d5b10aa19399992755de1f85d25009528daa749c1bf8c16edff44beab6e69718/merged: must be superuser to unmount
umount: /logtail_host/var/lib/docker/overlay2/5c3125daddacedec29df72ad0c52fac800cd56c6e880dc4e8a640b1e16c22dbe/merged: must be superuser to unmount
......
xargs: umount: exited with status 255; aborting
umount done
start logtail
ilogtail is running
logtail status:
ilogtail is running
Kubernetes クラスタ内のログ関連コンポーネントのステータスの表示方法
helm status alibaba-log-controller
alibaba-log-controller の起動に失敗した場合の対応
次のようにインストールを実行してください。
- インストールコマンドは、kubernetes クラスタのマスターノードで実行されます
- インストールコマンドパラメーターは、クラスタ ID に入力されます。
これらの問題によりインストールが失敗した場合は、 helm del --purge alibaba-log-controllerr
を使用して、インストールパッケージを削除し、再度インストールを実行してください。
インストールの失敗が続く場合は、チケットを起票し、サポートセンターへお問い合わせください。
Kubernetes クラスタの Logtail DaemonSet のステータスを確認する方法
kubectl get ds -n kube-system
コマンドを実行し、Logtail の実行状態を確認できます。
kube-system
です。
バージョン番号、IP、および Logtail の起動時間の確認
[root@iZbp1dsu6v77zfb40qfbiaZ ~]# kubectl get po -n kube-system | grep logtail
NAME READY STATUS RESTARTS AGE
logtail-ds-gb92k 1/1 Running 0 2h
logtail-ds-wm7lw 1/1 Running 0 4d
[root@iZbp1dsu6v77zfb40qfbiaZ ~]# kubectl exec logtail-ds-gb92k -n kube-system cat /usr/local/ilogtail/app_info.json
{
"UUID" : "",
"hostname" : "logtail-ds-gb92k",
"instance_id" : "0EBB2B0E-0A3B-11E8-B0CE-0A58AC140402_172.20.4.2_1517810940",
"ip" : "172.20.4.2",
"logtail_version" : "0.16.2",
"os" : "Linux; 3.10.0-693.2.2.el7.x86_64; #1 SMP Tue Sep 12 22:26:13 UTC 2017; x86_64",
"update_time" : "2018-02-05 06:09:01"
}
Logtailの操作ログの表示
Logtail 実行ログは、/usr/local/ilogtail/
ディレクトリに格納されます。 ファイル名は、ilogtail.LOG
です。 ファイルは圧縮され、ilogtail.LOG.x.gz
として保存されます。
[root@iZbp1dsu6v77zfb40qfbiaZ ~]# kubectl exec logtail-ds-gb92k -n kube-system tail /usr/local/ilogtail/ilogtail.LOG
[2018-02-05 06:09:02.168693] [INFO] [9] [build/release64/sls/ilogtail/LogtailPlugin.cpp:104] logtail plugin Resume:start
[2018-02-05 06:09:02.168807] [INFO] [9] [build/release64/sls/ilogtail/LogtailPlugin.cpp:106] logtail plugin Resume:success
[2018-02-05 06:09:02.168822] [INFO] [9] [build/release64/sls/ilogtail/EventDispatcher.cpp:369] start add existed check point events, size:0
[2018-02-05 06:09:02.168827] [INFO] [9] [build/release64/sls/ilogtail/EventDispatcher.cpp:511] add existed check point events, size:0 cache size:0 event size:0 success count:0
Pod の Logtail の再起動
[root@iZbp1dsu6v77zfb40qfbiaZ ~]# kubectl exec logtail-gb92k -n kube-system /etc/init.d/ilogtaild stop
kill process Name: ilogtail pid: 7
kill process Name: ilogtail pid: 9
stop success
[root@iZbp1dsu6v77zfb40qfbiaZ ~]# kubectl exec logtail-gb92k -n kube-system /etc/init.d/ilogtaild start
ilogtail is running