Prometheus 社区更新太快,之前写的一些文档有些过时。最近又开始关注可观测性,补齐运维方面的一些知识点。
1. 名词解释
一个可视化工具,提供各种可视化面板,支持各种数据源,包括 Prometheus、OpenTSDB、MySQL 等。
一个时间序列数据库,主要用于收集、存储、对外提供查询数据。
一个用来暴露服务监控指标的程序,提供 API 接口给 Prometheus 拉取监控数据。
Prometheus 内置的数据查询语言,其提供对时间序列数据丰富的查询,聚合以及逻辑运算能力的支持。
2. 安装 Prometheus
1
2
|
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo update
|
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
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"
|
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
|
kubectl -n monitor edit cm grafana
|
添加配置
1
2
3
|
grafana.ini: |
[auth.anonymous]
enabled = true
|
1
2
3
|
grafana.ini: |
[security]
allow_embedding = true
|
重启 Grafana 生效
1
|
kubectl -n monitor rollout restart deployment grafana
|
5. 参考
- https://artifacthub.io/packages/helm/prometheus-community/kube-prometheus-stack