Grafana是一个开源的度量分析与可视化套件。经常被用作基础设施的时间序列数据和应用程序分析的可视化,它在其他领域也被广泛的使用包括工业传感器、家庭自动化、天气和过程控制等。

安装部署

Deployment

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
kind: Deployment
metadata:
  name: grafana
  namespace: monitoring
spec:
  replicas: 1
  template:
    metadata:
      labels:
        task: monitoring
        k8s-app: grafana
    spec:
      containers:
      - name: grafana
        image: grafana/grafana:7.0.5
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 3000
          protocol: TCP
        env:
        - name: GF_SECURITY_ADMIN_USER
          value: admin
        - name: GF_SECURITY_ADMIN_PASSWORD
          value: admin321
        volumeMounts:
        - mountPath: /var/lib/grafana
          subPath: grafana
          name: storage
      securityContext:
        fsGroup: 472
        runAsUser: 472
      volumes:
      - name: storage
        emptyDir: {}

这里设置了环境变量 GF_SECURITY_ADMIN_USERGF_SECURITY_ADMIN_PASSWORD,用来配置 grafana 的管理员用户和密码的。由于 grafana 将 dashboard、插件这些数据保存在 /var/lib/grafana这个目录下面的,所以我们这里如果需要做数据持久化的话,就需要针对这个目录进行 volume 挂载声明。

Service

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
apiVersion: v1
kind: Service
metadata:
  name: grafana
  namespace: monitoring
spec:
  ports:
  - name: grafana
    port: 80
    targetPort: 3000
  selector:
    k8s-app: grafana

Ingress

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: grafana
  namespace: monitoring
  annotations:
    kubernetes.io/ingress.class: traefik
spec:
  rules:
  - host: grafana.houmin
    http:
      paths:
      - path: /
        backend:
          serviceName: grafana
          servicePort: grafana

创建 DeploymentService 之后,即可在浏览器访问 Grafana 对应的服务。

数据源

Grafana默认支持的数据源:Graphite,InfluxDB,OpenTSDB,Prometheus,Elasticsearch,CloudWatch。Grafana支持同时绑定多套数据源,根据自己需求管理即可,下面以 Prometheus 数据源为基准作为示例。

这里需要配置的主要参数如下:

配置项 配置解释
Name 数据源名称,建议以数据源类型+用途命名
Type 数据源类型,选择对应的InfluxDB、Prometheus等即可
URL 填写Prometheus对应的API地址即可,如果Grafana跟Prometheus在同一个Namespace,可以直接ServiceName:http://prometheus:9090
Access API访问方式,一共有 Server 和 Browser 两个选项,建议选择 Server
Access-Browser 浏览器直连数据源API,然后由Grafana解析返回的数据
Access-Server Grafana后端通过API访问数据源,然后返回给浏览器展示

数据源添加/更新成功后会有如下提示:

Dashboard

仪表盘(Dashboard),顾名思义,就是管理各种图表的地方,主要由行(Row)+图表面板(Panel)组成。你可以根据自己的需求手动新建一个Dashboard,也可以从 Grafana 的官方网站导入。

导入 Dashboard

这里从选择倒入Node Exporter for Prometheus Dashboard CN

导入之后,显示统计数据如下所示:

添加 Dashboard

我们也可以完全手动创建 Dashboard,添加面板(Panel)

Panel主要支持:Graph,Singlestat,Dashlist,Table和Text。这里我们以曲线图(Graph)为例

Reference