title: k8s之安装配置grafana #标题tags: grafana #标签
date: 2020-09-22
categories: 监控 # 分类

记录下k8s中安装配置grafana,并接入Prometheus为数据源。

安装grafana

  1. $ cat > grafana.yaml << EOF
  2. apiVersion: apps/v1
  3. kind: Deployment
  4. metadata:
  5. name: monitoring-grafana
  6. namespace: kube-system
  7. spec:
  8. replicas: 1
  9. selector:
  10. matchLabels:
  11. task: monitoring
  12. k8s-app: grafana
  13. template:
  14. metadata:
  15. labels:
  16. task: monitoring
  17. k8s-app: grafana
  18. spec:
  19. containers:
  20. - name: grafana
  21. image: grafana/grafana:latest
  22. ports:
  23. - containerPort: 3000
  24. protocol: TCP
  25. volumeMounts:
  26. - mountPath: /etc/ssl/certs
  27. name: ca-certificates
  28. readOnly: true
  29. # - mountPath: /var
  30. # name: grafana-storage
  31. env:
  32. - name: INFLUXDB_HOST
  33. value: monitoring-influxdb
  34. - name: GF_SERVER_HTTP_PORT
  35. value: "3000"
  36. # The following env variables are required to make Grafana accessible via
  37. # the kubernetes api-server proxy. On production clusters, we recommend
  38. # removing these env variables, setup auth for grafana, and expose the grafana
  39. # service using a LoadBalancer or a public IP.
  40. #- name: GF_AUTH_BASIC_ENABLED
  41. # value: "false"
  42. #- name: GF_AUTH_ANONYMOUS_ENABLED
  43. # value: "true"
  44. #- name: GF_AUTH_ANONYMOUS_ORG_ROLE
  45. # value: Admin
  46. - name: GF_SERVER_ROOT_URL
  47. # If you're only using the API Server proxy, set this value instead:
  48. # value: /api/v1/namespaces/kube-system/services/monitoring-grafana/proxy
  49. value: /
  50. volumes:
  51. - name: ca-certificates
  52. hostPath:
  53. path: /etc/ssl/certs
  54. #- name: grafana-storage
  55. # emptyDir: {}
  56. ---
  57. apiVersion: v1
  58. kind: Service
  59. metadata:
  60. labels:
  61. # For use as a Cluster add-on (https://github.com/kubernetes/kubernetes/tree/master/cluster/addons)
  62. # If you are NOT using this as an addon, you should comment out this line.
  63. kubernetes.io/cluster-service: 'true'
  64. kubernetes.io/name: monitoring-grafana
  65. name: monitoring-grafana
  66. namespace: kube-system
  67. spec:
  68. # In a production setup, we recommend accessing Grafana through an external Loadbalancer
  69. # or through a public IP.
  70. # type: LoadBalancer
  71. # You could also use NodePort to expose the service at a randomly-generated port
  72. # type: NodePort
  73. ports:
  74. - port: 80
  75. targetPort: 3000
  76. nodePort: 30567
  77. selector:
  78. k8s-app: grafana
  79. type: NodePort
  80. EOF
  81. $ kubectl apply -f grafana.yaml
  82. # 查看service
  83. $ kubectl get svc -n kube-system | grep grafana
  84. monitoring-grafana NodePort 10.96.190.62 <none> 80:30567/TCP 9s

访问grafana

访问宿主机IP:30567即可:

输入默认用户名/密码(admin/admin):

k8s之安装配置grafana - 图1

修改初始密码:
k8s之安装配置grafana - 图2

看到如下grafana首页,就表明grfana安装无误:
k8s之安装配置grafana - 图3

grafana导入dashboard

在导入dashboard之前,需要先添加数据源,添加数据源可参考:Prometheus+node_exporter+mysqld_exporter+grafana部署与配置,如下:

k8s之安装配置grafana - 图4

我不会去一步步的截图,写下怎么导入dashboard,我只是记录下,如何根据自己的需求去找到dashboard。

grafana官方提供了很多dashboard,我们可以自行去搜索,以node-export为例,如下:

k8s之安装配置grafana - 图5

点击进来以后,我们看右边的,如下:

k8s之安装配置grafana - 图6

我们可以copy其ID号(需保证grafana服务器可以访问公网),亦可以点击下载json文件(grafana无需访问外网)。

然后回到我们的grafana中,依次点击如下:

k8s之安装配置grafana - 图7

然后根据我们是copy的ID号,还是下载的json文件,进行不同的导入方式,如下(二选一即可):

k8s之安装配置grafana - 图8

等文件导入后,会让你选择数据源,如下:

k8s之安装配置grafana - 图9

导入成功后,自动跳转到导入的dashboard,如下:
k8s之安装配置grafana - 图10

根据上述的过程,我们可以照猫画虎般导入更多的dashboard,但需要注意的是,并不是所有dashboard都可以直接正常使用的,有些dashboard可能没更新,和你Prometheus采集到的数据不匹配,就需要进行微调,这个就不展开说了。

另外,我买的课程里提供了一些常用的dashboard,如果感兴趣,可以下载下来瞅瞅(提取码:22h4)。