Please enable Javascript to view the contents

Prometheus、Grafana 搭建 Kubernetes 监控

 ·  ☕ 2 分钟

Prometheus 社区更新太快,之前写的一些文档有些过时。最近又开始关注可观测性,补齐运维方面的一些知识点。

1. 名词解释

  • Grafana

一个可视化工具,提供各种可视化面板,支持各种数据源,包括 Prometheus、OpenTSDB、MySQL 等。

  • Prometheus

一个时间序列数据库,主要用于收集、存储、对外提供查询数据。

  • Exporter

一个用来暴露服务监控指标的程序,提供 API 接口给 Prometheus 拉取监控数据。

  • PromQL

Prometheus 内置的数据查询语言,其提供对时间序列数据丰富的查询,聚合以及逻辑运算能力的支持。

2. 安装 Prometheus

  • 添加 Helm 源
1
2
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo update
  • 安装 Prometheus
1
helm install prometheus -n monitor prometheus-community/prometheus --create-namespace

如果 prometheus-node-exporter 一直起不来,可能是默认端口 9100 被占用。可以使用下面的命令,编辑 DaemonSet 修改默认端口:

1
kubectl -n monitor edit ds prometheus-node-exporter
  • 卸载
1
helm uninstall prometheus -n monitor

3. 安装 Grafana

  • 添加 Helm 源
1
2
helm repo add grafana https://grafana.github.io/helm-charts
helm repo update
1
helm -n monitor install grafana grafana/grafana

值得注意的是,这种安装方法,Grafana 的数据存储在 Pod 的 /var/lib/grafana 路径下,如果重启 Grafana ,相关的配置会丢失。如果是生产环境,需要挂载存储卷。如果有 StorageClass 可用,可以使用如下参数进行持久化存储:

1
helm -n monitor install grafana grafana/grafana  --set persistence.storageClassName="YOUR_STORAGECLASS_NAME" --set persistence.enabled="true"
  • 获取 admin 账户的登录密码
1
2
3
kubectl -n monitor get secret grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo

JIsmMsWaN8rF5ryS7rVohHyFWKzyahR7u0OJsiJL
  • 修改 Grafana 服务的访问方式为 NodePort
1
kubectl -n monitor patch svc grafana -p '{"spec": {"type": "NodePort"}}'
1
2
3
4
kubectl -n monitor get svc grafana

NAME                 TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
grafana   NodePort   10.233.6.118   <none>        80:31892/TCP   117s

这用,通过主机 IP + 31892 即可访问 Grafana。

  • 卸载
1
helm -n monitor uninstall grafana

4. 配置使用

4.1 添加数据源

在左侧导航栏,找到 [Data Sources]

填入 Prometheus 的访问地址 http://prometheus-server.monitor.svc 即可。

4.2 添加模板

在左侧导航栏 [+]中找到 Import 按钮,我选择的是 id 为 10856 的面板导入。也可以去 Grafana 官网,选择合适的面板导入,https://grafana.com/grafana/dashboards。

如下图,这里需要选择上面添加的数据源。

4.3 查看看板

4.4 grafana.ini 配置

Grafana 有些配置需要通过修改 grafana.ini 实现,下面仅列举我用到的几个:

  1. 编辑配置文件
1
kubectl -n monitor edit cm grafana
  1. 添加配置
  • 允许匿名访问
1
2
3
  grafana.ini: |
    [auth.anonymous]
    enabled = true
  • 允许 Iframe 嵌入
1
2
3
  grafana.ini: |
    [security]
    allow_embedding = true
  1. 重启 Grafana 生效
1
kubectl -n monitor rollout restart deployment grafana

5. 参考


微信公众号
作者
微信公众号