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

- インストールコマンドを実行して、alibaba-log-controller Helm パッケージをインストールします。
- 収集設定を管理するために、必要に応じて CRD またはコンソールを選択します。
手順 1. インストール
Alibaba Cloud Container Service に Kubernetes をインストールする
インストール手順- Alibaba Cloud Container Service Kubernetes のマスターノードにログインします。 ログインの詳細については、「SSH による Kubernetes クラスターへのアクセス」をご参照ください。
${your_k8s_cluster_id}
を Kubernetes クラスタ ID に置き換え、次のコマンドを実行します。wget http://logtail-release.oss-cn-hangzhou.aliyuncs.com/linux64/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}
が自動的に作成されます。注 Underk8s-log-${your_k8s_cluster_id}
プロジェクトに、config-operation-log
というという名前の Logstore が自動的に作成されます。 Logstore を削除しないでください。
[root@iZbp******biaZ ~]# wget http://logtail-release.oss-cn-hangzhou.aliyuncs.com/linux64/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 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
名前年齢
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.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 {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。 Service endpointを表示できます。たとえば、 中国 (杭州)
のリージョン ID は、cn-hangzhou です。
{aliuid} ユーザー ID は、Alibaba Cloud マスターアカウントのユーザー IDで置き換えてください。 マスターアカウントのユーザー IDはString型で、ID の表示方法については、ユーザー ID 設定のセクション 2.1 をご参照ください。 {access-key-id} アカウントアクセスキー ID。 サブアカウントアクセスキーを使用し、 権限を与えることを推奨します。概要 {access-key-secret} アカウントのアクセスキーシークレット。 サブアカウントの AccessKey を使用し、 AliyunLogFullAccess 権限を与えることを推奨します。 詳細については、概要を参照してください。 k8s-group-${your_k8s_cluster_id}
です。注- Logstore
config-operation-log
は、k8s-log-${your_k8s_cluster_id} プロジェクトに自動的に作成されます。 この Logstore は削除しないでください。 - 自分で構築した kubernetes のインストールの後、Logtail は
privileged
権限を付与します。それは他のPOD を削除中にcontainer text file busy
にならないようにするためです。 詳細については、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 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 : 1654218*********, accessKeyId : LTAxxxxxxxxxxx
[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 つの設定の比較は次のとおりです。
- | CDRモード | コンソールモード |
---|---|---|
操作上の複雑さ | 低 | 中 |
機能 | コンソールモードを除く、高度な設定をサポート。 | 中 |
複雑さ | 中 | 低 |
ネットワーク接続 | Kubernetes クラスタに接続 | インターネットに接続 |
デプロイメントコンポーネントとの連携 | サポート | 未サポート |
認証方法 | Kubernetes 認証 | クラウドアカウント認証 |
Kubernetes のデプロイメント、および公開プロセスと連携されているため、収集設定管理に CRD メソッドを使用することを推奨します。
コンソール上でコレクションの設定を管理する
必要に応じてコンソールにLogtail収集設定を作成します。 設定手順については、以下をご参照ください。
- コンテナテキストログ(推奨)
-
デフォルトでは、ホストのルートディレクトリはLogtail容器の
/logtail_host
ディレクトリにマウントされています。 パスを設定する際、このプレフィックスを追加する必要があります。 たとえば、ホストの/home/logs/app_log/
ディレクトリからデータを収集するには、構成ページのログパスを/logtail_host/home/logs/app_log/
に設定します。 - logtailを用いたsyslogデータの収集
CRD 管理による取得設定
kubernetes マイクロサービス開発モデルでは、ログサービスも CRD を設定する方法を提供し、kubectl を直接使用して設定を管理できます。また、kubernetes デプロイメントと連携し、公開プロセスをより完全に行うことができます。
詳細については、CRD での Kubernetes ログ収集の設定を参照してください。
その他の操作
Glasonset デプロイメントの移行手順
- 新しいバージョンの形式でインストールすると、インストールコマンドには、以前のkubernetes クラスタで使用されていた Log Service プロジェクト名のパラメーターが最後に追加されます。
たとえば、プロジェクト名が
k8s-log-demo
で、クラスタ ID がc12ba2028cxxxxxxxxxx6939f0b
の場合、インストールコマンドは次のようになります。wget http://logtail-release.oss-cn-hangzhou.aliyuncs.com/linux64/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 に置き換える必要があります。
たとえば、 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
です。
Logtail のリソース制限を調整する方法
デフォルトでは、Logtail は最大 40% の CPU と 200M の RAM しか占有できません。 処理速度を上げる必要がある場合は、次の 2 つのセクションでパラメーターを調整する必要があります。
- YAMLテンプレートの
resources
のlimits
とrequests
。 - Logtail 起動設定ファイルのパスは、YAML テンプレートの
ALIYUN_LOGTAIL_CONFIG
環境変数です。 変更方法については、「Logtail 起動設定パラメーター」 をご参照ください。
Logtail DaemonSet の強制更新
logtail-daemonset.yaml
ファイルを修正後、次のコマンドを実行して、Logtail DaemonSet を強制的に更新します。
kubectl --namespace=kube-system delete ds logtail
kubectl apply -f ./logtail-daemonset.yaml
Logtail DaemonSet の設定情報を確認する
'kubectl describe ds logtail -n kube-system'
Logtail のバージョン番号、IP、開始時刻などを確認する
[root@iZbp1dsu6v77zfb40qfbiaZ ~]# kubectl get po -n kube-system -l k8s-app=logtail
NAME READY STATUS RESTARTS AGE
logtail-gb92k 1/1 Running 0 2h
logtail-wm7lw 1/1 Running 0 4d
[root@iZbp1dsu6v77zfb40qfbiaZ ~]# kubectl exec logtail-gb92k -n kube-system cat /usr/local/ilogtail/app_info.json
{
"UUID" : "",
"hostname" : "logtail-gb92k",
"instance_id" : "********************************",
"ip" : "*.*.*.*",
"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-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