https://www.cnblogs.com/coolops/p/13185780.html
    log-Pilot是一个智能容器日志采集工具,它不仅能够高效便捷地将容器日志采集输出到多种存储日志后端,同时还能够动态地发现和采集容器内部的日志文件,更多咨询可以移步这里
    log-Pilot目前支持两种工具对日志进行收集,Fluentd PluginFilebeat Plugin。Log-Pilot支持容器事件管理,它能够动态地监听容器的事件变化,然后依据容器的标签来进行解析,生成日志采集配置文件,然后交由采集插件来进行日志采集。在Kubernetes下,Log-Pilot可以依据环境变量aliyunlogs$name = $path动态地生成日志采集配置文件,其中包含两个变量:

    • $name是我们自定义的一个字符串,它在不同的场景下指代不同的含义,在本场景中,将日志采集到ElasticSearch的时候,这个$name表示的是Index。
    • 另一个是$path,支持两种输入形式,stdout和容器内部日志文件的路径,对应日志标准输出和容器内的日志文件。
      • 第一种约定关键字stdout表示的是采集容器的标准输出日志,如本例中我们要采集tomcat容器日志,那么我们通过配置标签aliyun.logs.catalina=stdout来采集tomcat标准输出日志。
      • 第二种是容器内部日志文件的路径,也支持通配符的方式,通过配置环境变量aliyun_logs_access=/usr/local/tomcat/logs/*.log来采集tomcat容器内部的日志。当然如果你不想使用aliyun这个关键字,Log-Pilot也提供了环境变量PILOT_LOG_PREFIX可以指定自己的声明式日志配置前缀,比如PILOT_LOG_PREFIX: “aliyun,custom”。

    部署实例:
    复制apiVersion: apps/v1
    kind: DaemonSet
    metadata:
    name: log-pilot
    labels:
    app: log-pilot
    namespace: kube-ops
    spec:
    selector:
    matchLabels:
    app: log-pilot
    updateStrategy:
    type: RollingUpdate
    template:
    metadata:
    labels:
    app: log-pilot
    annotations:
    scheduler.alpha.kubernetes.io/critical-pod: ‘’
    spec:
    tolerations:
    - key: node-role.kubernetes.io/master
    effect: NoSchedule
    containers:
    - name: log-pilot
    image: registry.cn-hangzhou.aliyuncs.com/acs/log-pilot:0.9.7-filebeat
    resources:
    limits:
    memory: 500Mi
    requests:
    cpu: 200m
    memory: 200Mi
    env:
    - name: “NODE_NAME”
    valueFrom:
    fieldRef:
    fieldPath: spec.nodeName
    # 日志收集前缀
    - name: PILOT_LOG_PREFIX
    value: aliyun
    - name: “LOGGING_OUTPUT”
    value: “elasticsearch”
    # 请确保集群到ES网络可达
    - name: “ELASTICSEARCH_HOSTS”
    value: “elasticsearch:9200”
    # 配置ES访问权限
    #- name: “ELASTICSEARCH_USER”
    # value: “{es_username}”
    #- name: “ELASTICSEARCH_PASSWORD”
    # value: “{es_password}”
    volumeMounts:
    - name: sock
    mountPath: /var/run/docker.sock
    - name: root
    mountPath: /host
    readOnly: true
    - name: varlib
    mountPath: /var/lib/filebeat
    - name: varlog
    mountPath: /var/log/filebeat
    - name: localtime
    mountPath: /etc/localtime
    readOnly: true
    livenessProbe:
    failureThreshold: 3
    exec:
    command:
    - /pilot/healthz
    initialDelaySeconds: 10
    periodSeconds: 10
    successThreshold: 1
    timeoutSeconds: 2
    securityContext:
    capabilities:
    add:
    - SYS_ADMIN
    terminationGracePeriodSeconds: 30
    volumes:
    - name: sock
    hostPath:
    path: /var/run/docker.sock
    - name: root
    hostPath:
    path: /
    - name: varlib
    hostPath:
    path: /var/lib/filebeat
    type: DirectoryOrCreate
    - name: varlog
    hostPath:
    path: /var/log/filebeat
    type: DirectoryOrCreate
    - name: localtime
    hostPath:
    path: /etc/localtim

    创建pod测试
    复制apiVersion: v1
    kind: Pod
    metadata:
    name: tomcat
    spec:
    containers:
    - name: tomcat
    image: “tomcat:8.0”
    env:
    # 1、stdout为约定关键字,表示采集标准输出日志
    # 2、配置标准输出日志采集到ES的catalina索引下
    - name: aliyun_logs_catalina
    value: “stdout”
    # 1、配置采集容器内文件日志,支持通配符
    # 2、配置该日志采集到ES的access索引下
    - name: aliyun_logs_access
    value: “/usr/local/tomcat/logs/catalina.*.log”
    # 容器内文件日志路径需要配置emptyDir
    volumeMounts:
    - name: tomcat-log
    mountPath: /usr/local/tomcat/logs
    volumes:
    - name: tomcat-log
    emptyDir: {}

    然后我们查看索引会看到access-和catalina-的索引
    复制# curl -XGET ‘localhost:9200/_cat/indices?v&pretty’
    health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
    green open access-2020.06.23 0LS6STfpQ4yHt7makuSI1g 5 1 40 0 205.5kb 102.5kb
    green open logstash-2020.06.23 HR62innTQi6HjObIzf6DHw 5 1 99 0 296kb 148kb
    green open catalina-2020.06.23 dSFGcZlPS6-wieFKrOWV-g 5 1 40 0 227.1kb 133.3kb
    green open .kibana H-TAto8QTxmi-jI_4mIUrg 1 1 2 0 20.4kb 10.2kb
    green open logstash-2020.06.22 8-IFAOj_SqiipqOXN6Soxw 5 1 43784 0 30.6mb 15.3mb

    然后到页面添加索引即可。当然日志的输出除了直接输出到es外还可以输出到其他地方,如果是使用filebeat则可以点击这里进行查看。如果是fluentd,则点击这里