• Grafana-(1).yaml安装


    安装Grafana

    Grafana介绍

    grafana 是一个可视化面包,有着非常漂亮的图片和布局展示,功能齐全的度量仪表盘和图形化编辑器,支持Graphite、Zabbix、InfluxDB、Prometheus、OpenTSDB、Elasticasearch等作为数据源,比Prometheus自带的图标展示功能强大很多,更加灵活,有丰富的插件

    我们这里使用deployment持久化安装grafana

    cat >>grafana_deployment.yaml <<EOF
    apiVersion: extensions/v1beta1
    kind: Deployment
    metadata:
      name: grafana
      namespace: kube-system
      labels:
        app: grafana
    spec:
      revisionHistoryLimit: 10
      template:
        metadata:
          labels:
            app: grafana
        spec:
          containers:
          - name: grafana
            image: grafana/grafana:5.3.4
            imagePullPolicy: IfNotPresent
            ports:
            - containerPort: 3000
              name: grafana
            env:
            - name: GF_SECURITY_ADMIN_USER
              value: admin
            - name: GF_SECURITY_ADMIN_PASSWORD
              value: abcdocker
            readinessProbe:
              failureThreshold: 10
              httpGet:
                path: /api/health
                port: 3000
                scheme: HTTP
              initialDelaySeconds: 60
              periodSeconds: 10
              successThreshold: 1
              timeoutSeconds: 30
            livenessProbe:
              failureThreshold: 3
              httpGet:
                path: /api/health
                port: 3000
                scheme: HTTP
              periodSeconds: 10
              successThreshold: 1
              timeoutSeconds: 1
            resources:
              limits:
                cpu: 300m
                memory: 1024Mi
              requests:
                cpu: 300m
                memory: 1024Mi
            volumeMounts:
            - mountPath: /var/lib/grafana
              subPath: grafana
              name: storage
          securityContext:
            fsGroup: 472
            runAsUser: 472
          volumes:
          - name: storage
            persistentVolumeClaim:
              claimName: grafana
    EOF
    

    这里使用了grafana 5.3.4的镜像,添加了监控检查、资源声明,比较重要的变量是GF_SECURITY_ADMIN_USER和GF_SECURITY_ADMIN_PASSWORD为grafana的账号和密码。

    由于grafana将dashboard、插件这些数据保留在/var/lib/grafana目录下,所以我们这里需要做持久化,同时要针对这个目录做挂载声明,由于5.3.4版本用户的userid和groupid都有所变化,所以这里添加了一个securityContext设置用户ID

    image_1ddnv749l17k7ucdel1m4v17jjea.png-56.5kB

    现在我们添加一个pv和pvc用于绑定grafana

    cat >>grafana_volume.yaml <<EOF
    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: grafana
    spec:
      capacity:
        storage: 10Gi
      accessModes:
      - ReadWriteOnce
      persistentVolumeReclaimPolicy: Recycle
      nfs:
        server: 192.168.2.7
        path: /data/k8s
    ---
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: grafana
      namespace: kube-system
    spec:
      accessModes:
      - ReadWriteOnce
      resources:
        requests:
          storage: 10Gi
    EOF
    

    这里配置依旧使用NFS进行挂载使用

    现在我们还需要创建一个service,使用NodePort

    cat >>grafana_svc.yaml<<EOF
    apiVersion: v1
    kind: Service
    metadata:
      name: grafana
      namespace: kube-system
      labels:
        app: grafana
    spec:
      type: NodePort
      ports:
        - port: 3000
      selector:
        app: grafana
    EOF
    

    由于5.1(可以选择5.1之前的docker镜像,可以避免此类错误)版本后groupid更改,同时我们将/var/lib/grafana挂载到pvc后,目录拥有者可能不是grafana用户,所以我们还需要添加一个Job用于授权目录

    cat >>grafana_job.yaml <<EOF
    apiVersion: batch/v1
    kind: Job
    metadata:
      name: grafana-chown
      namespace: kube-system
    spec:
      template:
        spec:
          restartPolicy: Never
          containers:
          - name: grafana-chown
            command: ["chown", "-R", "472:472", "/var/lib/grafana"]
            image: busybox
            imagePullPolicy: IfNotPresent
            volumeMounts:
            - name: storage
              subPath: grafana
              mountPath: /var/lib/grafana
          volumes:
          - name: storage
            persistentVolumeClaim:
              claimName: grafana
    EOF
    

    配置grafana

    1.第一次创建grafana需要添加数据源

    2.数据源添加完毕后,接下来添加New dashboard

    这里面的模板都是公共的,可以免费使用

    导入模板,会自动跳转到配置页面

    3.保存模板

    这里无法显示是由于模板定义的标签,我们prometheus并没有这个数据元,所以说我们要对模板进行修改!

    在修改之前我们先设置一下时区,grafana默认走的是浏览器时区,但是prometheus使用的是UTC时区

    grafana模板修改

    前面的步骤必须和我相同,否则这里可能会无法出现值

    1.集群内存使用率

    首先我们进行编辑 Cluster memory usage

    • 计算方式就是(整个集群的内存-(整个集群剩余的内存以及Buffer和Cached))/整
    (sum(node_memory_MemTotal_bytes) - sum(node_memory_MemFree_bytes + node_memory_Buffers_bytes+node_memory_Cached_bytes)) / sum(node_memory_MemTotal_bytes) * 100
    

    这里要说明一点,这里填写的是PromSQL,也就是说是可以在prometheus查询到的。 如果查询不到grafana也是会获取不到数据的

    这里在prometheus是可以获取到的

    2.集群cpu使用率

    Cluster memory usage 配置如下

    sum(sum by (container_name)( rate(container_cpu_usage_seconds_total{image!=""}[1m] ) )) / count(node_cpu_seconds_total{mode="system"}) * 100
    

    3.集群文件系统使用率

    Cluster filesystem usage

    (sum(node_filesystem_size_bytes{device="tmpfs"}) - sum(node_filesystem_free_bytes{device="tmpfs"}) ) / sum(node_filesystem_size_bytes{device="tmpfs"}) * 100
    

    4.集群Pod cpu使用率

    sum by (pod_name)(rate(container_cpu_usage_seconds_total{image!="", pod_name!=""}[1m]))
    

    图列格式:{{ pod_name }}

    5.集群pod 内存使用率

    sort_desc(sum (container_memory_usage_bytes{image!="", pod_name!=""}) by(pod_name))
    

    图列格式:{{ pod_name }}

    6.集群Pod 网络监控

    1.入口流量
    sort_desc(sum by (pod_name) (rate (container_network_receive_bytes_total{name!=""}[1m]) ))

    2.出口流量
    sort_desc(sum by (pod_name) (rate (container_network_transmit_bytes_total{name!=""}[1m]) ))

    监控时间为1分钟

  • 相关阅读:
    atitit.组件化事件化的编程模型--服务端控件(1)---------服务端控件与标签的关系
    atitit. 浏览器插件 控件 applet 的部署,签名总结 浏览器 插件 控件 的签名安全机制o9o
    Atitit. 解压缩zip文件 的实现最佳实践 java c# .net php
    atitit. applet 浏览器插件 控件 的环境,开发,提示总结o9o
    Atitit..文件上传组件选型and最佳实践总结(3)----断点续传控件的实现
    Atitit..文件上传组件选型and最佳实践总结(2)----断点续传
    Atitit.guice3 ioc 最佳实践 o9o
    Atitit. C# java 的api 目录封装结构映射总结
    atitit. 统计功能框架的最佳实践(1)---- on hibernate criteria
    Atitit.Hibernate中Criteria 使用总结and 关联查询 and 按照子对象查询 o9o
  • 原文地址:https://www.cnblogs.com/orange-lsc/p/12191771.html
Copyright © 2020-2023  润新知