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

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

nanshan 2024-11-14 16:46 28 浏览 0 评论

使用前准备

  • 开通阿里云日志服务并创建了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/

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

相关推荐

轻量级分析利器再升级:解读 DuckDB 1.3.0 新特性

DuckDB团队近日正式发布了最新版本——DuckDB1.3.0,代号“Ossivalis”。此次版本以金眼鸭的远古祖先BucephalaOssivalis命名,象征项目在演化和成长过...

C++跨平台编译的终极奥义:用Docker把环境差异按在地上摩擦

"代码在本地跑得飞起,一上服务器就coredump?"——每个C++程序员都经历过的《编译器的复仇》事件!大家好,我是Henry,废话少说,今天来简单谈一下跨平台编译的那些事儿,...

全网最全-Version Script以及__asm__((&quot;.symver xxx&quot;))使用总结

首先提醒一点,一切的前提建立在你的名字必须要mangling,不然无论你写的versionscript还是__asm__都不会起任何效果VersionScript简单用法:这是一个典型例子,这个例...

Ubuntu 25.04 Beta发布:Linux 6.14内核

IT之家3月28日消息,Canonical昨日(3月27日)放出了Beta版Ubuntu25.04系统镜像,代号“PluckyPuffin”,稳定版预估将于2025年...

不同平台CRT的区别?什么是UCRT?如何看libc源代码?

若文章对您有帮助,欢迎关注程序员小迷。助您在编程路上越走越好!CRT运行时库C标准规定例如输入输出函数、字符串函数、内存操作等接口,一般采用C运行时库实现。微软的CRT微软有两套CRT,早期的MS...

信创力量,中兴绽放——中兴新支点桌面操作系统安装与使用全攻略

原文链接:「链接」Hello,大家好啊,今天给大家带来一篇中兴新支点桌面操作系统安装使用的文章,欢迎大家分享点赞,点个在看和关注吧!中兴新支点桌面操作系统是一款基于Linux内核、面向政企和信创环...

Linux下安装常用软件都有哪些?做了一个汇总列表,你看还缺啥?

1.安装列表MySQL5.7.11Java1.8ApacheMaven3.6+tomcat8.5gitRedisNginxpythondocker2.安装mysql1.拷贝mysql安装文件到...

一篇文章解决Linux系统安全问题排查,另配实操环境

实操地址:https://www.skillup.host/1/linux/safe/command.md#Linux安全检查排查指南##1.系统账户安全检查###1.1检查异常账户``...

程序员必备的学习笔记《TCP/IP详解(一)》

为什么会有TCP/IP协议在世界上各地,各种各样的电脑运行着各自不同的操作系统为大家服务,这些电脑在表达同一种信息的时候所使用的方法是千差万别。就好像圣经中上帝打乱了各地人的口音,让他们无法合作一样...

《Linux常用命令》(linux的常用命令总结)

一、文件与目录操作1.目录导航pwd:显示当前工作目录路径示例:pwd关键词:当前路径、工作目录cd:切换目录示例:cd/home/user#切换到绝对路径cd..#...

Kubernetes 教程之跟着官方文档从零搭建 K8S

前言本文将带领读者一起,参照者Kubernetes官方文档,对其安装部署进行讲解.Kubernetes更新迭代很快,书上、网上等教程可能并不能适用于新版本,但官方文档能.阅读这篇文章你...

电脑网卡坏了怎么修复(电脑网卡坏了怎么修复win7系统)

当电脑网卡出现故障时,无论是有线网络还是无线网络,都可能无法正常连接。下面从软件、硬件等方面,分步骤为你介绍排查与修复的解决方案。一、初步排查:锁定问题源头检查网络环境将手机、平板等其他设备连接至同一...

如何查询电脑/手机的物理地址(如何找手机的物理地址)

一、要查询电脑的物理地址(也称为MAC地址),可以按照以下步骤进行操作:1.打开命令提示符(Windows)或终端(Mac):-在Windows上,点击“开始”按钮,搜索“命令提示符”,然后点击打...

IPv4 无网络访问权限全流程解决方案

当设备出现IPv4无网络访问权限问题时,多由网络配置错误、连接故障或服务异常导致。以下提供系统化的排查步骤与解决方案,帮助用户快速定位并修复问题。一、基础故障快速检查1.物理连接确认有线网络:检...

Python教程(十九):文件操作(python操作文件夹)

昨天,我们学习了列表推导式,掌握了Python中最优雅的数据处理方式。今天,我们将学习文件操作—Python中读写文件的基础技能。文件操作是编程中的核心技能,无论是读取配置文件、保存用户数据,还是...

取消回复欢迎 发表评论: