资讯详情

iLogtail使用入门-K8S环境日志采集到SLS

iLogtail阿里云中的简单日志服务又称SLS采集部分。 目前已正式开源收集遥测数据,如日志、跟踪和指标(https://github.com/alibaba/ilogtail)。介绍本文ilogtail如何在K8S环境进行安装、配置、使用的最简流程,帮助用户使用预编译版本快速上手ilogtail日志采集。

使用前准备

  • 阿里云日志服务的开通和创建Project(具体步骤见上一节《ilogtail使用介绍-收集主机环境日志SLS》)
  • 准备一个具有公网访问权限的人K8S服务器架构为集群X86-64。

创建日志配置

1.跳转到日志服务控制台(sls.console.aliyun.com),点击上一节创建的内容project。

2.进入Project查询页面后,点击左侧边栏的放大镜图标展开logstore点击管理界面 弹出创造Logstore右边的边栏。按提示配置,输入logstore点击名称后的确认。

3.logstore成功创建后,取消数据访问导向。单击左侧栏中的立方体按钮,在弹出的资源浮动层中选择机器组。展开的机组左栏中,单击右上角的四方格图标,在弹出浮动层中选择创建机组。

4.在创建机组的侧栏中按提示配置,机组标识选择用户自定义标识Topic用户自定义标志建议保持一致。用户自定义标志是本教程中最重要的配置之一my-k8s-group后续安装ilogtail它将再次使用。点击确认存机组。

5.再次点击左侧边栏的放大镜图标展开logstore点击第二步创建的管理界面logstore向下展开图标弹出配置Logstore菜单。logtail配置”的“ ”按钮。

6.在弹出的快速接入数据对话框中搜索kube并选择Kubernertes-文件。单机在弹出的提示框中继续。

7.在“Kubernertes直接选择使用现有机组的文件配置界面。

8.跳转到机组配置界面,选择第四步创建的机组,点击>将按钮添加到应用机组中,然后单击下一步。

9.在ilogtail配置中仅修改“配置名称”和“日志路径”两个必填项,点击“下一步”确认。

10.完成索引配置。此步骤不修改任何选项,直接单击下一步完成配置。

安装ilogtail

1.登陆可以控制K8S集群中控机ilogtail的ConfigMap YAML。

$ vim alicloud-log-config.yaml

在Vim将以下内容粘贴并保存(注意,修改注释中提示的字段,7-11行)。

apiVersion: v1 kind: ConfigMap metadata:   name: alibaba-log-configuration   namespace: kube-system data:     log-project: "my-project" #修改为现实project名称     log-endpoint: "cn-wulanchabu.log.aliyuncs.com" #修改为现实endpoint     log-machine-group: "my-k8s-group" #组名称可以自定义     log-config-path: "/etc/ilogtail/conf/cn-wulanchabu_internet/ilogtail_config.json" #修改cn-wulanchabu为实际project地域     log-ali-uid: "*********" #修改为阿里云UID     access-key-id: "" #本教程无法使用     access-key-secret: "" #本教程无法使用     cpu-core-limit: "2"     mem-limit: "1024"     max-bytes-per-sec: "20971520"     send-requests-concurrency: "20"

2.计算alicloud-log-config.yaml的sha256 hash,并编辑ilogtail的DaemonSet YAML。

$ sha256sum alicloud-log-config.yaml f370df37916797aa0b82d709ae6bfc5f46f709660e1fd28bb49c22da91da1214  alicloud-log-config.yaml $ vim logtail-daemonset.yaml

在Vim将以下内容粘贴并保存(注意,修改注释中提示的字段,21、25行)。

apiVersion: apps/v1 kind: DaemonSet metadata:   name: logtail-ds   namespace: kube-system   labels:     k8s-app: logtail-ds spec:   selector:     matchLabels:       k8s-app: logtail-ds   updateStrategy:     type: RollingUpdate   template:     metadata:       labels:         k8s-app: logtail-ds         kubernetes.io/cluster-service: "true"         version: v1.0       annotations:         checksum/config: f370df37916797aa0b82d709ae6bfc5f46f709660e1fd28bb49c22da91da1214 #必须修改alicloud-log-config.yaml的hash     spec:       containers:       - name: logtail         image: registry.cn-wulanchabu.aliyuncs.com/log-service/logtail:latest #可修改为距离k8s集群最近的地区         resources:           limits:             cpu: 2             memory: 1024Mi           requests:             cpu: 100m             memory: 256Mi         livenessProbe:           httpGet:             path: /liveness             port: 7953             scheme: HTTP           initialDelaySeconds: 30           periodSeconds: 60         securityContext:           privileged: true         env:           - name: HTTP_PROBE_PORT             value: "7953"           - name: "ALIYUN_LOGTAIL_CONFIG"             valueFrom:               configMapKeyRef:                 name: alibaba-log-configuration                 key: log-config-path           - name: "ALIYUN_LOGTAIL_USER_ID"             valueFrom:               configMapKeyRef:                 name: alibaba-log-configuration                 key: log-ali-uid           - name: "ALIYUN_LOGTAIL_USER_DEFINED_ID"             valueFrom:               configMapKeyRef:                 name: alibaba-log-configuration                 key: log-machine-group           - name: "ALICLOUD_LOG_ACCESS_KEY_ID"             valueFrom:               configMapKeyRef:                name: alibaba-log-configuration
                key: access-key-id
          - name: "ALICLOUD_LOG_ACCESS_KEY_SECRET"
            valueFrom:
              configMapKeyRef:
                name: alibaba-log-configuration
                key: access-key-secret
          - name: "ALICLOUD_LOG_DOCKER_ENV_CONFIG"
            value: "true"
          - name: "ALICLOUD_LOG_ECS_FLAG"
            value: "false"
          - name: "ALICLOUD_LOG_DEFAULT_PROJECT"
            valueFrom:
              configMapKeyRef:
                name: alibaba-log-configuration
                key: log-project
          - name: "ALICLOUD_LOG_ENDPOINT"
            valueFrom:
              configMapKeyRef:
                name: alibaba-log-configuration
                key: log-endpoint
          - name: "ALICLOUD_LOG_DEFAULT_MACHINE_GROUP"
            valueFrom:
              configMapKeyRef:
                name: alibaba-log-configuration
                key: log-machine-group
          - name: "ALIYUN_LOG_ENV_TAGS"
            value: "_node_name_|_node_ip_"
          - name: "_node_name_"
            valueFrom:
              fieldRef:
                fieldPath: spec.nodeName
          - name: "_node_ip_"
            valueFrom:
              fieldRef:
                fieldPath: status.hostIP
          # resource limit for logtail self process
          - name: "cpu_usage_limit"
            valueFrom:
              configMapKeyRef:
                name: alibaba-log-configuration
                key: cpu-core-limit
          - name: "mem_usage_limit"
            valueFrom:
              configMapKeyRef:
                name: alibaba-log-configuration
                key: mem-limit
          - name: "max_bytes_per_sec"
            valueFrom:
              configMapKeyRef:
                name: alibaba-log-configuration
                key: max-bytes-per-sec
          - name: "send_request_concurrency"
            valueFrom:
              configMapKeyRef:
                name: alibaba-log-configuration
                key: send-requests-concurrency
        volumeMounts:
        - name: sock
          mountPath: /var/run/
        - name: root
          mountPath: /logtail_host
          readOnly: true
          mountPropagation: HostToContainer
      terminationGracePeriodSeconds: 30
      tolerations:
      - operator: "Exists"
      hostNetwork: true
      dnsPolicy: "Default"
      volumes:
      - name: sock
        hostPath:
          path: /var/run/
      - name: root
        hostPath:
          path: /

3.应用YAML配置,创建ConfigMap和DaemonSet。

$ kubectl apply -f alicloud-log-config.yaml
configmap/alibaba-log-configuration created
$ kubectl apply -f logtail-daemonset.yaml
daemonset.apps/logtail-ds created

4.等待1分钟,检查DeamonSet是否正常运行

$ kubectl get -f logtail-daemonset.yaml

这个时候控制台应该打印出类似以下的消息,代表安装成功

NAME         DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
logtail-ds   3         3         3       3            3           <none>          2m1s

上报日志并查看

1.创建一个用于持续生成日志的Pod。

$ vim demo-pod.yaml

在Vim中粘贴如下内容并保存(注意,可能需要修改注释中提示的字段,8-9行)。

apiVersion: v1
kind: Pod
metadata:
  labels:
    name: demo-pod
  name: demo-pod
spec:
#  imagePullSecrets:          # Comment out to enable specific image pull secret
#    - name: myregistrykey    # repleace it to specific registry key containers
containers:
    - image: busybox
      imagePullPolicy: IfNotPresent
      name: demo-pod
      command: ["/bin/sh"]
      args: ["-c", "while true; do echo $(date) >>/tmp/demo.log; sleep 10; done"]
      resources: {}
      securityContext:
        capabilities: {}
        privileged: false
      terminationMessagePath: /dev/termination-log
  dnsPolicy: ClusterFirst
  restartPolicy: Always

应用YAML配置,创建Pod

$ kubectl apply -f demo-pod.yaml
pod/demo-pod created

2.回到Web控制台,点击配置完成界面的“查询日志”跳转到日志查询界面。点击页面左侧的“放大镜”图标,选中logstore,点击“眼睛”图标,在左侧出现的“消费预览”侧边栏中尝试调整Shard和时间范围,点击预览查看上报的日志。

What's Next

你可以进入下一节学习《ilogtail使用入门-iLogtail本地部署方案》

了解容器采集原理《通过DaemonSet-控制台方式采集容器标准输出》

也可以学习ilogtail采集的更多用法:

  • 通过DaemonSet-控制台方式采集容器文本日志
  • 采集容器日志
  • 如何获取容器的Label和环境变量

原文链接

本文为阿里云原创内容,未经允许不得转载。 

标签: sls103无线温湿度变送器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

 锐单商城 - 一站式电子元器件采购平台  

 深圳锐单电子有限公司