百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

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

bigegpt 2024-10-26 08:18 25 浏览

使用前准备

  • 开通阿里云日志服务并创建了Project(具体步骤参见上一节《ilogtail使用入门-主机环境日志采集到SLS》)
  • 准备一个具备公网访问权限的K8S集群,服务器架构为X86-64。

创建日志配置

  1. 跳转到日志服务控制台(sls.console.aliyun.com),点击上一节中已经创建的project。
  1. 进入Project查询页面后,点击左侧边栏的“放大镜”图标,展开logstore管理界面,点击“+”,弹出“创建Logstore”右侧边栏。按照提示进行配置,输入logstore名称后,点击“确认”。


  1. logstore创建成功后,取消数据接入向导。点击左侧边栏中的“立方体”按钮,在弹出的“资源”浮层中选择“机器组”。在展开的“机器组”左边栏中,点击右上角的“四方格”图标,在弹出的浮层中选择“创建机器组”。
  1. 在“创建机器组”有侧边栏中按提示配置,“机器组标识”选择“用户自定义标识”,“名称”、“机器组Topic”、“用户自定义标识”建议保持一致。“用户自定义标识”是其中最为重要的一个配置,本教程中使用“my-k8s-group”,后续在安装ilogtail时会再次用到。“点击”确认保存机器组。


  1. 再次点击左侧边栏的“放大镜”图标,展开logstore管理界面,点击第2步中创建的logstore的“向下展开”图标,弹出“配置Logstore”菜单。点击“logtail配置”的“+”按钮。
  1. 在弹出的“快速接入数据”对话框中搜索“kube”,并选择“Kubernertes-文件”。在弹出的“提示”框中单机“继续”。
  1. 在“Kubernertes文件”配置界面,直接选择“使用现有机器组”。
  1. 跳转到“机器组配置”界面,选择第4步中创建的机器组,点击“>”按钮将其加入到“应用机器组”中,然后点击“下一步”。
  1. 在ilogtail配置中仅修改“配置名称”和“日志路径”两个必填项,点击“下一步”确认。
  1. 完成索引配置。这一步不对任何选项进行修改,直接点击下一步完成配置。

此时,整个日志配置已经完成。请保持页面打开。

安装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"
  1. 计算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: /
  1. 应用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
  1. 等待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
  1. 回到Web控制台,点击配置完成界面的“查询日志”跳转到日志查询界面。点击页面左侧的“放大镜”图标,选中logstore,点击“眼睛”图标,在左侧出现的“消费预览”侧边栏中尝试调整Shard和时间范围,点击预览查看上报的日志。

原文链接:http://click.aliyun.com/m/1000317326/

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

相关推荐

Docker篇(二):Docker实战,命令解析

大家好,我是杰哥上周我们通过几个问题,让大家对于Docker有了一个全局的认识。然而,说跟练往往是两个概念。从学习的角度来说,理论知识的学习,往往只是第一步,只有经过实战,才能真正掌握一门技术所以,本...

docker学习笔记——安装和基本操作

今天学习了docker的基本知识,记录一下docker的安装步骤和基本命令(以CentOS7.x为例)一、安装docker的步骤:1.yuminstall-yyum-utils2.yum-con...

不可错过的Docker完整笔记(dockerhib)

简介一、Docker简介Docker是一个开源的应用容器引擎,基于Go语言并遵从Apache2.0协议开源。Docker可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,...

扔掉运营商的 IPTV 机顶盒,全屋全设备畅看 IPTV!

其实现在看电视节目的需求确实大大降低了,折腾也只是为了单纯的让它实现,享受这个过程带来的快乐而已,哈哈!预期构想家里所有设备直接接入网络随时接收并播放IPTV直播(电信点播的节目不是太多,但好在非常稳...

第五节 Docker 入门实践:从 Hello World 到容器操作

一、Docker容器基础运行(一)单次命令执行通过dockerrun命令可以直接在容器中执行指定命令,这是体验Docker最快捷的方式:#在ubuntu:15.10容器中执行ech...

替代Docker build的Buildah简单介绍

Buildah是用于通过较低级别的coreutils接口构建OCI兼容镜像的工具。与Podman相似,Buildah不依赖于Docker或CRI-O之类的守护程序,并且不需要root特权。Builda...

Docker 命令大全(docker命令大全记录表)

容器生命周期管理run-创建并启动一个新的容器。start/stop/restart-这些命令主要用于启动、停止和重启容器。kill-立即终止一个或多个正在运行的容器rm-于删除一个或...

docker常用指令及安装rabbitMQ(docker安装rabbitmq配置环境)

一、docker常用指令启动docker:systemctlstartdocker停止docker:systemctlstopdocker重启docker:systemctlrestart...

使用Docker快速部署Storm环境(docker部署confluence)

Storm的部署虽然不是特别麻烦,但是在生产环境中,为了提高部署效率,方便管理维护,使用Docker来统一管理部署是一个不错的选择。下面是我开源的一个新的项目,一个配置好了storm与mono环境的D...

Docker Desktop安装使用指南:零基础教程

在之前的文章中,我多次提到使用Docker来安装各类软件,尤其是开源软件应用。鉴于不少读者对此有需求,我决定专门制作一期关于Docker安装与使用的详细教程。我主要以Macbook(Mac平台)为例进...

Linux如何成功地离线安装docker(linux离线安装httpd)

系统环境:Redhat7.2和Centos7.4实测成功近期因项目需要用docker,所以记录一些相关知识,由于生产环境是不能直接连接互联网,尝试在linux中离线安装docker。步骤1.下载...

Docker 类面试题(常见问题)(docker面试题目)

Docker常见问题汇总镜像相关1、如何批量清理临时镜像文件?可以使用sudodockerrmi$(sudodockerimages-q-fdanging=true)命令2、如何查看...

面试官:你知道Dubbo怎么优雅上下线的吗?你:优雅上下线是啥?

最近无论是校招还是社招,都进行的如火如荼,我也承担了很多的面试工作,在一次面试过程中,和候选人聊了一些关于Dubbo的知识。Dubbo是一个比较著名的RPC框架,很多人对于他的一些网络通信、通信协议、...

【Docker 新手入门指南】第五章:Hello Word

适合人群:完全零基础新手|学习目标:30分钟掌握Docker核心操作一、准备工作:先确认是否安装成功打开终端(Windows用户用PowerShell或GitBash),输入:docker--...

松勤软件测试:详解Docker,如何用portainer管理Docker容器

镜像管理搜索镜像dockersearch镜像名称拉取镜像dockerpullname[:tag]列出镜像dockerimages删除镜像dockerrmiimage名称或id删除...