基于kubernetes的日志监控系统安装 -欧洲杯足彩官网

`
wiselyman
  • 浏览: 2076984 次
  • 性别:
  • 来自: 合肥
博主相关
  • 博客
  • 微博
  • 相册
  • 收藏
  • 博客专栏
    点睛spring4.1
    浏览量:80745
    点睛spring mvc4...
    浏览量:129940
    社区版块
    • ( 11)
    • ( 19)
    • ( 0)
    存档分类
    最新评论

    基于kubernetes的日志监控系统安装

    1.场景

    我们在生产环境中需要对系统的各种日志进行采集、查询和分析。本例演示使用fluentd进行日志采集,elasticsearch进行日志存储,kibana进行日志查询分析。

    2.安装

    2.1 创建dashboard用户

    sa.yml:

    apiversion: v1
    kind: serviceaccount
    metadata:
      name: dashboard
      namespace: kube-system
    ---
    apiversion: rbac.authorization.k8s.io/v1beta1
    kind: clusterrolebinding
    metadata:
      name: dashboard
    roleref:
      kind: clusterrole
      name: view
      apigroup: rbac.authorization.k8s.io
    subjects:
      - kind: serviceaccount
        name: dashboard
        namespace: kube-system
    

    2.2 创建persistentvolume

    创建persistentvolume用作elasticsearch存储所用的磁盘:

    pv.yml:

    apiversion: v1
    kind: persistentvolume
    metadata:
      name: elk-log-pv
    spec:
      capacity:
        storage: 5gi
      accessmodes:
        - readwritemany
       nfs:
         path: /opt/data/kafka0
         server: 192.168.1.140
         readonly: false
    

    2.3 fluentd的配置(configmap)

    若无此步的话,fluentd-es镜像会有下面的错误:

    2018-03-07 08:35:18  0000 [info]: adding filter pattern="kubernetes.**" type="kubernetes_metadata"
    2018-03-07 08:35:19  0000 [error]: config error file="/etc/td-agent/td-agent.conf" error="invalid kubernetes api v1 endpoint https://172.21.0.1:443/api: ssl_connect returned=1 errno=0 state=error: certificate verify failed"
    2018-03-07 08:35:19  0000 [info]: process finished code=256
    

    所以需要配置configmap:

    cm.yml:

    apiversion: v1
    kind: configmap
    metadata:
      name: fluentd-conf
      namespace: kube-system
    data:
      td-agent.conf: |
        
          type null
        
        # example:
        # {"log":"[info:2016-02-16t16:04:05.930-08:00] some log text here\n","stream":"stdout","time":"2016-02-17t00:04:05.931087621z"}
        
          type tail
          path /var/log/containers/*.log
          pos_file /var/log/es-containers.log.pos
          time_format %y-%m-%dt%h:%m:%s.%nz
          tag kubernetes.*
          format json
          read_from_head true
        
        
          type kubernetes_metadata
          verify_ssl false
        
        
          type tail
          format syslog
          path /var/log/messages
          pos_file /var/log/messages.pos
          tag system
        
        
           type elasticsearch
           user "#{env['fluent_elasticsearch_user']}"
           password "#{env['fluent_elasticsearch_password']}"
           log_level info
           include_tag_key true
           host elasticsearch-logging
           port 9200
           logstash_format true
           # set the chunk limit the same as for fluentd-gcp.
           buffer_chunk_limit 2m
           # cap buffer memory usage to 2mib/chunk * 32 chunks = 64 mib
           buffer_queue_limit 32
           flush_interval 5s
           # never wait longer than 5 minutes between retries.
           max_retry_wait 30
           # disable the limit on the number of retries (retry forever).
           disable_retry_limit
           # use multiple threads for processing.
           num_threads 8
        
    

    2.4 整体配置

    logging.yml:

    apiversion: v1
    kind: replicationcontroller
    metadata:
      name: elasticsearch-logging-v1
      namespace: kube-system
      labels:
        k8s-app: elasticsearch-logging
        version: v1
        kubernetes.io/cluster-service: "true"
    spec:
      replicas: 2
      selector:
        k8s-app: elasticsearch-logging
        version: v1
      template:
        metadata:
          labels:
            k8s-app: elasticsearch-logging
            version: v1
            kubernetes.io/cluster-service: "true"
        spec:
          serviceaccount: dashboard
          containers:
          - image: registry.cn-hangzhou.aliyuncs.com/google-containers/elasticsearch:v2.4.1-1
            name: elasticsearch-logging
            resources:
              # need more cpu upon initialization, therefore burstable class
              limits:
                cpu: 1000m
              requests:
                cpu: 100m
            ports:
            - containerport: 9200
              name: db
              protocol: tcp
            - containerport: 9300
              name: transport
              protocol: tcp
            volumemounts:
            - name: es-persistent-storage
              mountpath: /data
            env:
            - name: "namespace"
              valuefrom:
                fieldref:
                  fieldpath: metadata.namespace
          volumes:
          - name: es-persistent-storage
            persistentvolumeclaim:
              claimname: elk-log
    ---
    kind: persistentvolumeclaim
    apiversion: v1
    metadata:
      name: elk-log
      namespace: kube-system
    spec:
      accessmodes:
        - readwritemany
      resources:
        requests:
          storage: 5gi
      #selector:
      #  matchlabels:
      #    release: "stable"
      #  matchexpressions:
      #    - {key: environment, operator: in, values: [dev]}
    ---
    apiversion: v1
    kind: service
    metadata:
      name: elasticsearch-logging
      namespace: kube-system
      labels:
        k8s-app: elasticsearch-logging
        kubernetes.io/cluster-service: "true"
        kubernetes.io/name: "elasticsearch"
    spec:
      ports:
      - port: 9200
        protocol: tcp
        targetport: db
      selector:
        k8s-app: elasticsearch-logging
    ---
    apiversion: extensions/v1beta1
    kind: daemonset
    metadata:
      name: fluentd-es-v1.22
      namespace: kube-system
      labels:
        k8s-app: fluentd-es
        kubernetes.io/cluster-service: "true"
        version: v1.22
    spec:
      template:
        metadata:
          labels:
            k8s-app: fluentd-es
            kubernetes.io/cluster-service: "true"
            version: v1.22
          # this annotation ensures that fluentd does not get evicted if the node
          # supports critical pod annotation based priority scheme.
          # note that this does not guarantee admission on the nodes (#40573).
          annotations:
            scheduler.alpha.kubernetes.io/critical-pod: ''
            scheduler.alpha.kubernetes.io/tolerations: '[{"key": "node.alpha.kubernetes.io/ismaster", "effect": "noschedule"}]'
        spec:
          serviceaccount: dashboard
          containers:
          - name: fluentd-es
            image: registry.cn-hangzhou.aliyuncs.com/google-containers/fluentd-elasticsearch:1.22
            command:
              - '/bin/sh'
              - '-c'
              - '/usr/sbin/td-agent 2>&1 >> /var/log/fluentd.log'
            resources:
              limits:
                memory: 200mi
              requests:
                cpu: 100m
                memory: 200mi
            volumemounts:
            - name: varlog
              mountpath: /var/log
            - name: varlibdockercontainers
              mountpath: /var/lib/docker/containers
            - name: config-volume
              mountpath: /etc/td-agent/
              readonly: true
          #nodeselector:
          #  alpha.kubernetes.io/fluentd-ds-ready: "true"
          terminationgraceperiodseconds: 30
          volumes:
          - name: varlog
            hostpath:
              path: /var/log
          - name: varlibdockercontainers
            hostpath:
              path: /var/lib/docker/containers
          - name: config-volume
            configmap:
              name: fluentd-conf
    ---
    apiversion: extensions/v1beta1
    kind: deployment
    metadata:
      name: kibana-logging
      namespace: kube-system
      labels:
        k8s-app: kibana-logging
        kubernetes.io/cluster-service: "true"
    spec:
      replicas: 1
      selector:
        matchlabels:
          k8s-app: kibana-logging
      template:
        metadata:
          labels:
            k8s-app: kibana-logging
        spec:
          containers:
          - name: kibana-logging
            image: registry.cn-hangzhou.aliyuncs.com/google-containers/kibana:v4.6.1-1
            resources:
              # keep request = limit to keep this container in guaranteed class
              limits:
                cpu: 100m
              requests:
                cpu: 100m
            env:
              - name: "elasticsearch_url"
                value: "http://elasticsearch-logging:9200"
              - name: "kibana_base_url"
                value: "/api/v1/proxy/namespaces/kube-system/services/kibana-logging"
            ports:
            - containerport: 5601
              name: ui
              protocol: tcp
    ---
    apiversion: v1
    kind: service
    metadata:
      name: kibana-logging
      namespace: kube-system
      labels:
        k8s-app: kibana-logging
        kubernetes.io/cluster-service: "true"
        kubernetes.io/name: "kibana"
    spec:
      ports:
      - port: 5601
        protocol: tcp
        targetport: ui
      selector:
        k8s-app: kibana-logging
      type: clusterip
    

    2.5 安装

    kubectl apply -f sa.yml
    kubectl apply -f cm.yml
    kubectl apply -f pv.yml
    kubectl apply -f logging.yml
    

    2.6 验证

    • 上步完成后要等待相当长的时间,请耐心等待。

    • 查看kibanaelasticsearch访问地址:kubectl cluster-info

      kubernetes master is running at https://master-ip:6443
      elasticsearch is running at https://master-ip:6443/api/v1/namespaces/kube-system/services/elasticsearch-logging/proxy
      heapster is running at https://master-ip:6443/api/v1/namespaces/kube-system/services/heapster/proxy
      kibana is running at https://master-ip:6443/api/v1/namespaces/kube-system/services/kibana-logging/proxy
      kubedns is running at https://master-ip:6443/api/v1/namespaces/kube-system/services/kube-dns/proxy
      monitoring-influxdb is running at https://master-ip:6443/api/v1/namespaces/kube-system/services/monitoring-influxdb/proxy
      
    • 启动客户端代理kubectl proxy,访问:http://localhost:8001/api/v1/namespaces/kube-system/services/kibana-logging/proxy


    3 源码地址

    0
    0
    分享到:
    评论

    相关推荐

      kubernetes监控与日志.pdf kubernetes容器云平台实践-李志伟v1.0.pdf kubernetes生态系统现状报告.pdf kubernetes下api网关的微服务实践 长虹集团-李玮演讲ppt.pdf kubernetes与ecos的碰撞结合 成都精灵云-张行才...

      基于springcloud oauth2 mybatis elasticsearch docker kubernetes的商城系统项目源码 数据 核心功能: 平台管理端:商品管理、订单管理、会员管理、促销管理、店铺管理、运营管理、统计分析、系统设置、日志系统。 ...

      1.kubernetes 初探 简要介绍k8s平台、主要功能和社区开发情况,并通过分析企业云平台需求...本讲在前九讲的基础上总结了目前企业应用kubernetes所存在的各种问题,介绍了ibm基于kubernetes搭建的下一代私有云平台icp

      开发者可以基于kubernetes来构建自己的云原生应用与平台,kubernetes成为了构建平台的平台。云服务集成阿里云容器服务kubernetes目前已经和四款监控云服务进行了打通,分别是sls(日志服务)、arms(应用性能监控)...

      cluster.dev-在几分钟内基于kubernetes的开发环境 cluster.dev是一个开源系统,以github action或docker image的形式提供,用于通过gitops方法创建和管理具有简单清单的kubernetes集群。 专为不想浪费时间来配置...

      kubiquity 是一个实时的 kubernetes 错误监控工具。 kubiquity 作为 electron 应用程序在本地运行,并结合了 prometheus 指标查询,了解集群的 cpu 和节点内存使用情况。 预习 目录 预习 目录 安装 使用要求 计划...

      监控与日志:为了确保系统的稳定运行,该系统可能集成了监控和日志服务,如prometheus和elk stack,帮助开发者及时发现并解决问题。总之,这个资源为旅行社提供了一个全面的欧洲杯足彩官网的解决方案,从预订到支付,再到客户服务,...

      进行监控和日志记录。 动态配置。 在 gke 上使用 kubernetes 和/或 kubernetes 的优势。 ###鸟瞰图 ###environment isolation 目前,staging 环境与生产环境完全隔离,使用 kubernetes 命名空间进行 pod 级隔离 ...

      本科毕设_基于spring-boot java实现的一个云笔记系统源码 项目说明.7z ...grafana、prometheus、loki 作为集群指标与日志收集的监控平台 使用 github actions 与 github packages 实现持续集成与持续部署

      基于kubernetes的在离线弹性计算优化 基于容器构建一栈式微服务系统 架构师所需的硬实力和软技能 计算引擎云原生架构实践 京东零售云赋能企业数字化转型 京东云分布式存储zbs架构演进 快手大规模在离线混部平台的...

      基于kubernetes的互联网ingress实践 基础运维平台实践 机器学习在大规模服务器治理复杂场景的实践 国际环境下的sre体系实践 构建微服务下的性能监控 服务器的第一道防线——堡垒机的前世今生 风控系统在容器化时代的...

      新思路打造移动端个案综合日志分析系统 网站性能优化 数据库运维发展与实践 容器化交付实践 全链路监控系统(鹰眼)的技术实践 平台自动化运维实践 监控报警平台的设计和演化 基于k8s开发高可靠数据库服务的实践 ...

      基于k8s自动化编排技术系统设计与实现 针对于当前市场中企业对应用软件搭建部署的需求,针对需求进行设计开发的多个用户可以使用...安装完成后需要可以访问监控查看日志的功能。提高企业对应用的部署发布,提高了效率。

      skywalking :一个apm(应用程序性能监视器)系统,专门为微服务,云原生和基于容器(docker,kubernetes,mesos)的体系结构而设计。 抽象 skywalking是一个开源apm系统,包括对cloud native体系结构中的分布式...

      []技术框架: sprint boot码头工人kubernetes 动物园管理员redis 达博svnkit 杰施mysql的ui安装教程创建数据库,mysql 5.6执行数据库建表脚本与初始化数据脚本,脚本在dbscript /目录下使用maven打包项目,打包好后...

      基于角色的访问控制rbac(基于角色的访问控制) ldap完全管理 配置文件加密(密码,ak),数据库敏感分区加密 代码即文档,全接口api 前一级分离,支持跨域部署 核心功能(自动化配置) 多云主机管理精英,ec2,cvm...

      部署glusterfs分布式文件系统提高深度学习模型、数据与日志文件的读取速率。同时利用prometheus框架丰富容器云集群的监控指标,保证深度学习模型的训练效果。系统设计完成后,通过手势识别项目验证了平台的有效性。...

      * 分布式日志系统:elk(elasticsearch logstash kibana)(后期考虑加入) * 反向代理负载均衡:nginx * cdn服务器:基于nginx搭建 前端主要技术栈 * 前端框架:bootstrap jquery * 前端模板:adminlte ...

      覆盖应用开发、应用交付、上线运维等环节,包括代码的管理、持续集成、自动化测试、交付物管理、应用托管、中间件服务、自动化运维、监控报警、日志处理等,本次分享主要介绍基于容器技术构建paas平台所采用的相关...

    global site tag (gtag.js) - google analytics
    网站地图