安装Logtail组件(阿里云Kubernetes集群)

本文介绍如何在阿里云Kubernetes集群上安装及升级Logtail组件。

背景信息

采集阿里云Kubernetes集群中的容器日志时,需先安装Logtail组件。 在安装过程中,日志服务自动完成以下操作:

  1. 创建alibaba-log-configuration ConfigMap,该ConfigMap中包含日志服务配置信息,例如Project等。

  2. (可选)创建ClusterAliyunPipelineConfig、AliyunLogConfig CRD资源。

  3. (可选)部署alibaba-log-controller Deployment以及配套的Webhook,用于监听和校验ClusterAliyunPipelineConfig、AliyunLogConfig CRD资源的变更、创建Logtail采集配置。

  4. 部署logtail-ds DaemonSet,用于采集节点的日志。

安装Logtail组件

为已有的ACK集群安装Logtail组件

重要
  • 此操作仅适用于专有版Kubernetes和托管版Kubernetes。

    如果您要采集ACK Serverless集群中的容器文本日志和标准输出,请参见通过Pod环境变量采集应用日志

  • 当您的阿里云Kubernetes集群与日志服务属于不同的阿里云账号时,安装Logtail组件后,您还需要用户标识。具体操作,请参见设置阿里云账号为用户标识

  1. 登录容器服务管理控制台

  2. 在左侧导航栏中,单击集群

  3. 集群列表页面中,单击目标集群最右侧的更多 > 运维管理 > 组件管理

  4. 日志与监控页签中,找到logtail-ds,然后单击安装

    安装完成后,日志服务会自动生成名k8s-log-${your_k8s_cluster_id}的Project,并在该Project下生成名为k8s-group-${your_k8s_cluster_id}的机器组和名为config-operation-log的Logstore。

    重要

    请勿删除名为config-operation-log的Logstore。

新建ACK集群时安装Logtail组件

  1. 登录容器服务管理控制台

  2. 在左侧导航栏中,单击集群

  3. 集群列表页面中,单击创建集群

  4. 组件配置配置项页中,选中使用日志服务

    说明

    本操作仅介绍开启日志服务的关键步骤。关于创建集群的具体操作,请参见创建ACK托管集群

    当选中使用日志服务后,会出现创建项目(Project)的提示。关于日志服务管理日志的组织结构,请参见项目(Project)。有以下两种创建Project方式。

    • 使用已有Project

      您可以选择一个已有的Project来管理采集到的容器日志。

      安装logtail组件

    • 创建新Project

      日志服务自动创建一个名为的Project来管理采集到的容器日志。其中ClusterID为您新建的Kubernetes集群的唯一标识。

      安装logtail组件

安装完成后,在该Project下自动创建名为k8s-group-${your_k8s_cluster_id}的机器组和名为config-operation-log的Logstore。

重要

请勿删除名为config-operation-log的Logstore。

查看Logtail状态、版本及IP地址

查看Logtail状态

运行如下命令,查看Logtail状态等信息。

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

查看Logtail版本及IP地址

运行如下命令,查看Logtail的版本号、IP地址等信息。

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" : "192.0.2.0",
   "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" : "2021-02-05 06:09:01"
}

升级Logtail

文件备份

重要

升级期间(数秒内),因Logtail容器重启,可能出现少量数据被重复或丢失采集的情况。

在升级前,您需要对Logtail组件相关描述文件进行备份。

kubectl get ds -n kube-system logtail-ds -o yaml > logtail-ds.yaml
kubectl get deployment -n kube-system alibaba-log-controller -o yaml > alibaba-log-controller.yaml
kubectl get crd aliyunlogconfigs.log.alibabacloud.com -o yaml > aliyunlogconfigs-crd.yaml
kubectl get cm -n kube-system alibaba-log-configuration -o yaml > alibaba-log-configuration.yaml
kubectl get aliyunlogconfigs --all-namespaces -o yaml > aliyunlogconfigs-cr.yaml

组件升级

一般情况下,推荐您使用自动升级方式。如果您在logtail-ds的DaemonSet中或者在alibaba-log-controller的Deployment中修改过参数(例如环境变量),那么为了使您的修改不被重置,建议使用手动升级方式。

自动升级

重要

自动升级会重置您在logtail-ds和alibaba-log-controller中手动修改的配置。

  1. 登录容器服务管理控制台

  2. 在左侧导航栏中,单击集群

  3. 集群列表页面中,单击目标集群最右侧的更多 > 运维管理 > 组件管理

  4. 日志与监控页签中,找到logtail-ds,然后单击升级

  5. 升级组件对话框中,单击确定

    重要

    如果无法升级到最新版本的Logtail,说明您的Kubernetes集群版本太旧。请先升级Kubernetes集群或者使用手动升级方式。

    执行升级操作后,您可以在容器服务管理控制台上查看logtail-ds pod状态。如果logtail-ds pod状态都为running,表示升级成功。

手动升级

重要

手动升级不会根据最新版本的Logtail组件更新您的配置,部分特性优化可能不可用。

手动升级包括升级logtail-ds和alibaba-log-controller。一般情况下,您只需要升级logtail-ds即可获取新版本Logtail提供的采集能力。当您需要获取新版Logtail CRD方式的采集能力时,需要升级alibaba-log-controller。以下步骤以logtail-ds为例。

  1. 登录容器服务管理控制台

  2. 在左侧导航栏中,单击集群

  3. 集群列表页面中,单击目标集群最右侧的更多 > 运维管理 > 组件管理

  4. 选择工作负载 > 守护进程集

    说明

    当您要升级alibaba-log-controller时,请选择工作负载 > 无状态,然后在kube-system命名空间下,找到alibaba-log-controller,完成升级。

  5. 选择命名空间kube-system,然后单击logtail-ds对应的编辑

  6. 检查如下环境变量是否存在。

    如果不存在ALIYUN_LOGTAIL_CONFIG、ALIYUN_LOGTAIL_USER_ID、ALIYUN_LOGTAIL_USER_DEFINED_ID这三个环境变量,可能是因为您的Logtail版本太旧,您可以提交工单咨询升级方法。

  7. 单击镜像Tag对应的选择镜像Tag

  8. 镜像Tag对话框中,单击最新版本,然后单击确定

  9. 在页面右侧,单击更新

    执行升级操作后,您可以在容器服务管理控制台上查看logtail-ds pod状态。如果logtail-ds pod状态都为running,表示升级成功。

升级Logtail latest版本

由于Logtail latest版本对应的YAML文件太旧,当您使用该版本时,升级和体验新功能都可能遇到问题,推荐您升级到最新版本。操作步骤如下:

  1. 存储已有的AliyunLogConfig CRD。

    请根据实际情况替换log-crds.yaml。

    kubectl get AliyunLogConfig -A -o yaml > log-crds.yaml
  2. 卸载logtail-ds组件。

    在阿里云容器服务管理控制台的日志与监控页签中,找到logtail-ds,然后单击卸载。具体操作入口,请参见卸载Logtail

  3. 安装logtail-ds组件。

    在阿里云容器服务管理控制台的日志与监控页签中,找到logtail-ds,然后单击安装。具体操作入口,请参见安装Logtail组件

  4. 部署您已存储的AliyunLogConfig CRD。

    请根据实际情况替换log-crds.yaml。

    kubectl apply -f  log-crds.yaml

升级回滚

如果您要回滚到某个版本,可参考如下步骤。

说明

升级前备份的YAML文件中包含不少冗余信息,需要您手动删除后,才能用于恢复Logtail配置。您可以使用kubectl-neat工具完成此操作。需要删除的字段为metadata.creationTimestamp、metadata.generation、metadata.resourceVersion、metadata.uid和status。

  1. 根据业务需求判断升级之后的新Logtail配置是否需要保留。

    如果不需要保留,则可以删除升级之后的新Logtail配置。

  2. 删除备份文件中的冗余信息。

    cat logtail-ds.yaml | kubectl-neat > neat-logtail-ds.yaml
    cat alibaba-log-controller.yaml | kubectl-neat > neat-alibaba-log-controller.yaml
    cat aliyunlogconfigs-crd.yaml | kubectl-neat > neat-aliyunlogconfigs-crd.yaml
    cat alibaba-log-configuration.yaml | kubectl-neat > neat-alibaba-log-configuration.yaml
    cat aliyunlogconfigs-cr.yaml | kubectl-neat > neat-aliyunlogconfigs-cr.yaml
  3. 应用精简后的备份文件,恢复Logtail配置。

    kubectl apply -f neat-logtail-ds.yaml
    kubectl apply -f neat-alibaba-log-controller.yaml
    kubectl apply -f neat-aliyunlogconfigs-crd.yaml
    kubectl apply -f neat-alibaba-log-configuration.yaml
    kubectl apply -f neat-aliyunlogconfigs-cr.yaml

卸载Logtail

  1. 登录容器服务管理控制台

  2. 在左侧导航栏中,单击集群

  3. 集群列表页面中,单击目标集群最右侧的更多 > 运维管理 > 组件管理

  4. 日志与监控页签中,找到logtail-ds,然后单击卸载

  5. 根据界面提示单击确定,完成卸载。

后续步骤

常见问题

如何查看镜像版本?

您可以通过镜像仓库查看。

多个Kubernetes集群如何共用一个日志服务Project?

说明

此方式不支持跨地域的Kubernetes多集群共享。

如果您希望将多个阿里云Kubernetes集群中的容器日志采集到同一个日志服务Project中,您可以在创建Kubernetes集群时选择相同的Project。

如何查看Logtail日志?

Logtail日志存储在Logtail容器中的/usr/local/ilogtail/目录中,文件名为ilogtail.LOGlogtail_plugin.LOG

Logtail容器中的标准输出并不具备参考意义,请忽略以下标准输出内容。

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集群中日志服务相关组件的状态?

执行如下命令进行查看。

kubectl get deploy alibaba-log-controller -n kube-system
kubectl get ds logtail-ds -n kube-system

alibaba-log-controller启动失败,该怎么处理?

请确认您是否按照以下方式进行安装。

  • 在Kubernetes集群的Master节点中执行安装命令。

  • 安装命令参数中输入的是您的集群ID。

如果由于以上问题安装失败,请使用kubectl delete -f deploy命令删除已生成的安装模板并重新执行安装命令。

如何查看Kubernetes集群中Logtail-ds DaemonSet状态?

执行kubectl get ds -n kube-system命令查看Logtail-ds DaemonSet状态。

说明

Logtail容器所在的命名空间,默认为kube-system。

如何查看Logtail的运行日志?

Logtail运行日志保存在/usr/local/ilogtail/目录下,文件名为ilogtail.LOG,轮转文件会压缩存储为ilogtail.LOG.x.gz。例如执行如下命令查看日志。

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?

  1. 停止Logtail。

  2. 其中logtail-ds-gb92k -n表示容器名,kube-system表示命名空间,请根据实际情况替换。

  3. kubectl exec logtail-ds-gb92k -n kube-system /etc/init.d/ilogtaild stop

    返回如下结果表示停止成功。

    kill process Name: ilogtail pid: 7
    kill process Name: ilogtail pid: 9
    stop success
  4. 启动Logtail。

  5. 其中logtail-ds-gb92k -n表示容器名,kube-system表示命名空间,请根据实际情况替换。

  6. kubectl exec logtail-ds-gb92k -n kube-system /etc/init.d/ilogtaild start

    返回如下结果表示启动成功。

    ilogtail is running 

相关文档