k8s-elk

作者: 小李飞刀_lql | 来源:发表于2021-11-28 10:10 被阅读0次

    日志按体现方式分类

    • 标准输出:输出到控制台,使用kubectl logs可以看到
    • 日志文件:写到容器的文件系统的文件
    

    Kubernetes应用日志收集

    针对标准输出

    以DaemonSet方式在每个Node上部署一个日志收集程序,采集/var/lib/docker/containers/目录下所有容器日志
    
    1638059644621.png

    针对容器中日志文件

    在Pod中增加一个容器运行日志采集器,使用emtyDir共享日志目录让日志采集器读取到日志文件
    
    1638059704210.png

    ELK Stack日志系统

    ELK 是三个开源软件的缩写,提供一套完整的企业级日志平台解决方案。
    分别是:
    • Elasticsearch:搜索、分析和存储数据
    • Logstash :采集日志、格式化、过滤,最后将数据推送到Elasticsearch存储
    • Kibana:数据可视化
    • Beats :集合了多种单一用途数据采集器,用于实现从边缘机器向 Logstash 和 Elasticsearch 发送数
    据。里面应用最多的是Filebeat,是一个轻量级日志采集器
    
    1638059915081.png

    搭建日志系统

    • elasticsearch.yaml # ES数据库
    • kibana.yaml # 可视化展示
    
    [root@k8smaster elk]# kubectl get pod,svc -n ops
    NAME                                 READY   STATUS    RESTARTS   AGE
    pod/elasticsearch-549b496f94-qhsqq   1/1     Running   0          29m
    pod/filebeat-2r88l                   1/1     Running   0          47s
    pod/kibana-55c8979979-slqnx          1/1     Running   0          22m
    
    NAME                    TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)          AGE
    service/elasticsearch   ClusterIP   10.104.147.144   <none>        9200/TCP         29m
    service/kibana          NodePort    10.106.165.161   <none>        5601:30601/TCP   22m
    
    http://192.168.153.21:30601/
    
    1638062273219.png

    日志收集

    • filebeat-kubernetes.yaml # 采集所有容器标准输出
    • app-log-stdout.yaml # 标准输出测试应用
    • app-log-logfile.yaml # 日志文件测试应用
    

    监控标准输出

    部署

    [root@k8smaster ~]# kubectl get pod,svc
    NAME                                          READY   STATUS    RESTARTS   AGE
    pod/app-log-stdout-584c76c5d-gn976            1/1     Running   0          12m
    pod/app-log-stdout-584c76c5d-q4qrg            1/1     Running   0          12m
    pod/app-log-stdout-584c76c5d-w9mdd            1/1     Running   0          12m
    pod/nfs-client-provisioner-5f98b5cdfb-snnf4   1/1     Running   0          11m
    
    NAME                     TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)   AGE
    service/app-log-stdout   ClusterIP   10.98.136.234   <none>        80/TCP    12m
    service/kubernetes       ClusterIP   10.96.0.1       <none>        443/TCP   28d
    
    

    访问

    [root@k8smaster ~]# curl 10.98.136.234
    [root@k8smaster ~]# curl 10.98.136.234
    
    #查询条件
    kubernetes.namespace : "default" and message : curl
    
    1638064274272.png

    监控容器输出

    索引前缀

        output.elasticsearch:
          hosts: ['elasticsearch.ops:9200']
          index: "nginx-access-%{+yyyy.MM.dd}"
    

    部署

    [root@k8smaster elk]# kubectl get pod,svc
    NAME                                          READY   STATUS    RESTARTS   AGE
    pod/app-log-logfile-75b98c44bd-c4wrr          2/2     Running   0          2m45s
    pod/app-log-logfile-75b98c44bd-kdrr5          2/2     Running   0          2m45s
    pod/app-log-logfile-75b98c44bd-q47wj          2/2     Running   0          2m45s
    pod/nfs-client-provisioner-5f98b5cdfb-snnf4   1/1     Running   0          24m
    
    NAME                      TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)   AGE
    service/app-log-logfile   ClusterIP   10.97.194.178   <none>        80/TCP    2m45s
    service/kubernetes        ClusterIP   10.96.0.1       <none>        443/TCP   28d
    

    访问

    [root@k8smaster elk]# curl 10.97.194.178/status.html
    ok
    [root@k8smaster elk]# curl 10.97.194.178/status.html
    ok
    
    
    1638064735262.png
    1638064914692.png

    相关文章

      网友评论

          本文标题:k8s-elk

          本文链接:https://www.haomeiwen.com/subject/ezpcxrtx.html