实战k8s监控--Grafana

Grafana是一个通用的可视化工具。不仅仅适用于展示Prometheus下的监控数据,也同样适用于一些其他的数据可视化需求。

Grafana基本概念

  • 数据源(Data Source)
    Prometheus这类为其提供数据的对象均称为数据源(Data Source)。目前,Grafana官方提供了对:Graphite, InfluxDB, OpenTSDB, Prometheus, Elasticsearch, CloudWatch的支持。只需要将这些对象以数据源的形式添加到Grafana中,Grafana便可以轻松的实现对这些数据的可视化工作。
  • 仪表盘(Dashboard)
    通过数据源定义好可视化的数据来源之后,对于用户而言最重要的事情就是实现数据的可视化。在Grafana中,我们通过Dashboard来组织和管理我们的数据可视化图表
  • Panel(面板)
    Dashboard中一个最基本的可视化单元为一个Panel(面板),每一个Panel是一个完全独立的部分,通过Panel的Query Editor(查询编辑器)我们可以为每一个Panel自己查询的数据源以及数据查询方式,

部署Grafana

获取镜像

[root@node7-200 ~]# docker pull grafana/grafana:5.4.2
[root@node7-200 ~]# docker images|grep grafana

grafana/grafana                            5.4.2                           6f18ddf9e552   2 years ago     243MB

[root@node7-200 ~]# docker tag 6f18ddf9e552 harbor.od.com/infra/grafana:v5.4.2
[root@node7-200 ~]# docker push harbor.od.com/infra/grafana:v5.4.2

准备资源配置清单

[root@node7-200 ~]# mkdir /data/k8s-yaml/grafana/ /data/nfs-volume/grafana
[root@node7-200 ~]# cd /data/k8s-yaml/grafana/
[root@node7-200 grafana]# vi rbac.yaml

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  labels:
    addonmanager.kubernetes.io/mode: Reconcile
    kubernetes.io/cluster-service: "true"
  name: grafana
rules:
- apiGroups:
  - "*"
  resources:
  - namespaces
  - deployments
  - pods
  verbs:
  - get
  - list
  - watch
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  labels:
    addonmanager.kubernetes.io/mode: Reconcile
    kubernetes.io/cluster-service: "true"
  name: grafana
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: grafana
subjects:
- kind: User
  name: k8s-node

[root@node7-200 grafana]# vi dp.yaml

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  labels:
    app: grafana
    name: grafana
  name: grafana
  namespace: infra
spec:
  progressDeadlineSeconds: 600
  replicas: 1
  revisionHistoryLimit: 7
  selector:
    matchLabels:
      name: grafana
  strategy:
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 1
    type: RollingUpdate
  template:
    metadata:
      labels:
        app: grafana
        name: grafana
    spec:
      containers:
      - name: grafana
        image: harbor.od.com/infra/grafana:v5.4.2
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 3000
          protocol: TCP
        volumeMounts:
        - mountPath: /var/lib/grafana
          name: data
      imagePullSecrets:
      - name: harbor
      securityContext:
        runAsUser: 0
      volumes:
      - nfs:
          server: hdss7-200
          path: /data/nfs-volume/grafana
        name: data

[root@node7-200 grafana]# vi svc.yaml

apiVersion: v1
kind: Service
metadata:
  name: grafana
  namespace: infra
spec:
  ports:
  - port: 3000
    protocol: TCP
    targetPort: 3000
  selector:
    app: grafana

[root@node7-200 grafana]# vi ingress.yaml

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: grafana
  namespace: infra
spec:
  rules:
  - host: grafana.od.com
    http:
      paths:
      - path: /
        backend:
          serviceName: grafana
          servicePort: 3000

应用配置清单

kubectl apply -f http://k8s-yaml.od.com/grafana/rbac.yaml
kubectl apply -f http://k8s-yaml.od.com/grafana/dp.yaml
kubectl apply -f http://k8s-yaml.od.com/grafana/svc.yaml
kubectl apply -f http://k8s-yaml.od.com/grafana/ingress.yaml

浏览器访问

实战k8s监控--Grafana_第1张图片

配置Grafana

安装插件

[root@node7-21 ~]# kubectl get pods -n infra |grep grafana
grafana-ffd76bb9b-7j5dj 1/1 Running 0 6m46s
[root@node7-21 ~]# kubectl exec -it grafana-ffd76bb9b-7j5dj -n infra sh

# grafana-cli plugins install grafana-kubernetes-app
# grafana-cli plugins install grafana-clock-panel     
# grafana-cli plugins install grafana-piechart-panel
# grafana-cli plugins install briangann-gauge-panel
# grafana-cli plugins install natel-discrete-panel

重启后,可以看到安装的5个插件

添加数据源


配置plugins里面的kubernetes
实战k8s监控--Grafana_第2张图片
实战k8s监控--Grafana_第3张图片

查看炫酷的可视化图表

可视化是监控的核心目标之一

作为开源软件,Grafana社区鼓励用户分享Dashboard通过https://grafana.com/dashboards网站,可以找到大量可直接使用的Dashboard;Grafana中所有的Dashboard通过JSON进行共享,下载并且导入这些JSON文件,就可以直接使用这些已经定义好的Dashboard
实战k8s监控--Grafana_第4张图片
实战k8s监控--Grafana_第5张图片
实战k8s监控--Grafana_第6张图片
实战k8s监控--Grafana_第7张图片

你可能感兴趣的:(K8s,k8s,grafana,prometheus)