摘要: 基于集团内数年来的Agent运维经验总结,我们设计了一种灵活性更高、使用更加便捷、耦合度更低的配置&机器管理方式:自定义标识机器分组。此种方式对于动态环境非常适用,尤其适用于弹性伸缩服务和swarm、pouch(阿里docker)、Kubernetes等容器环境。

什么是机器分组

上一篇中我们对机器分组进行了简单的介绍,从更通俗的角度讲:机器分组就是一批产生相同日志的机器,一般情况下是一组应用,比如Nginx、MongoDB、HDFS等集群。通常一个机器分组下会产生多种日志,会分别采集到多个logstore。而同时一个机器也可以扮演多种角色(比如同时担当前端和后端的角色,既部署了Nginx也部署了应用worker),因此一个机器也会属于多个机器分组中。所以我们有了以下的机器分组模型:

clipboard.png

机器分组类型

目前我们支持了两种不同的机器分组,分别是IP标识和自定义标识分组。

IP标识机器组
IP标识的机器组通俗易懂,非常易于上手,只需简单的将IP输入到分组里即可完成配置,同时也支持一个分组里面输入多个IP。

clipboard.png

IP标识的机器组虽然配置简单,但存在非常大的缺陷:不支持动态缩扩容。在实际使用中机器组中机器经常会发生变化(例如机器替换、服务扩容/缩容),尤其在使用弹性伸缩服务、Kubernetes容器服务更为明显,如果没有及时同步更新或忘记配置,新增加的机器便无法采集到日志。

自定义标识机器组
基于集团内数年来的Agent运维经验总结,我们设计了一种灵活性更高、使用更加便捷、耦合度更低的配置&机器管理方式:自定义标识机器分组。

自定义标识机器分组操作非常简单:机器上设置一个或多个标识,并把机器组配置为自定义标识类型(userdefined-id),输入相应的标识,机器组即会自动匹配。

此种方式对于动态环境非常适用,尤其适用于弹性伸缩服务和swarm、pouch(阿里docker)、Kubernetes等容器环境。只需在虚拟机镜像、DockerFile或Kubernetes的yaml模板等提前配置好标识,后续扩容的机器一上线就会立即加入到对应的机器分组中,并根据对应机器分组上的采集配置开始工作。

使用方式

详细使用方式参见自定义标识机器组。

步骤一 本地配置

  • Linux Logtail

通过文件 /etc/ilogtail/user_defined_id 来设置userdefined-id。

例如,设置自定义机器标识如下:

cat /etc/ilogtail/user_defined_id
k8s-demo
  • Windows Logtail

通过文件 C:LogtailDatauser_defined_id 来设置userdefined-id。

例如,设置自定义机器标识如下:

C:\LogtailData>more user_defined_id
k8s-demo

注意: 若目录 /etc/ilogtail/、C:LogtailData或文件 /etc/ilogtail/user_defined_id、C:LogtailDatauser_defined_id不存在,请手动创建。

  • Docker 应用

如果您在容器中安装Logtail,可以在DockerFile中使用以下方式在发布时配置标识:

RUN mkdir /etc/ilogtail/
RUN echo ${您的机器组自定义标识} > /etc/ilogtail/user_defined_id
  • Kubernetes 集群

K8S使用可以参见Kubernetes日志采集。

步骤二 创建自定义标识机器组

  1. 在机器组列表页面单击右上角的创建机器组。
  2. 填写机器组配置。

机器组名称。填写自定义的机器组名称。
机器组标识。选择用户自定义标识。
用户自定义标识。填写步骤一中配置的userdefined-id,例如k8s-demo。

  1. 单击确认结束配置。后续扩容无需修改机器组。

clipboard.png

步骤三 查看机器组心跳
在机器组列表页面,单击目标机器组右侧的查看状态,可以查看使用相同自定义标识的机器列表及其心跳状态。

clipboard.png

详情请阅读原文


数据库知识分享者
27.8k 声望35.7k 粉丝

数据库知识分享