grafana官方使用文档_grafana&prometheus生产级容器化监控-1:生产级容器化

本文是grafana/prometheus生产级容器化实践系列文章的第一篇。

目录:

(1).grafana/prometheus简单回顾

(2).grafana/prometheus生产级实践

1.容器化多个prometheus实例

2.exporter组件

3.业务服务

4.grafana

(3).grafana/prometheus生产级容器化配置

1.注意事项

2.容器化步骤

3.关键配置

(4).相关文章

(1).grafana/prometheus简单回顾

prometheus是时序数据库,相比传统数据库更适合存储监控类数据;是一套开源的系统监控报警框架。它启发于 Google 的 borgmon 监控系统;同时也是云原生时代监控的事实标准。

Grafana是一个跨平台的开源的度量分析和可视化工具,可以通过将采集的数据查询然后可视化的展示,并及时通知,支持多种数据源:Graphite,InfluxDB,OpenTSDB,Prometheus,Elasticsearch,CloudWatch和KairosDB。一般都使用prometheus作为其数据源。

每一个prometheus实例都有一个prometheus.xml配置,里边定义了抓取规则,从满足哪些条件的服务获取metircs数据,默认60秒抓一次;然后在grafana上制作dashboard,在dashboard中定义查询语句将监控数据展示为监控图表。

(2).grafana/prometheus生产级实践

b44a85db7a75e3ab42caf1023fc99f16.png

原始图片位于:

https://github.com/hepyu/k8s-app-config/blob/master/product/standard/grafana-prometheus-pro/images/grafana-prometheus%E7%94%9F%E4%BA%A7%E7%BA%A7%E5%AE%9E%E8%B7%B5.jpg

如上图所示:

1.容器化多个prometheus实例

由于当数据量很大(metrics很多)或者grafana选择的时间跨度很大时,prometheus的吞吐性能会很有问题,再加上会有很多人通过grafana查看各业务数据,如果生产环境只部署一个prometheus,肯定是有问题的,prometheus会经常性崩溃。

同时,这样也可以设置不同的数据保存时间,比如对于mq来说,我希望保留更长时间的数据。

2.exporter组件

prometheus-expoerter组件是一个数据收集和聚合的组件,以exporter-rocketmq为例,prometheus通过prometheus.xml中定义的抓取规则定时从exporter-rocketmq拉取监控数据,exporter-rocketmq收到请求后,再从rocketmq集群获取监控数据,分析处理后聚合成metircs的格式返回给prometheus存储。

本文中的rocketmq-exporter没有使用官方的exporter,是根据笔者公司的情况自行开发,后续会另行发文/开源。

3.业务服务

prometheus不仅仅作为基础组件的监控数据存储,同样的,我们可以在业务服务中使用,去监控一些业务指标,比如笔者曾经开发的oss上传基础服务,笔者十分关心文件上传数,上传文件大小/时间,以及相关的p90等指标。帮助笔者发现/确认问题,事实上很有帮助,比如曾经发现有1G大小的文件被上传等异常现象。

成本强相关的服务(不局限于此)非常适合这样处理。

可以理解为监控打点。

下图为oss上传服务的上传文件大小的监控截图:

01a674ba36ca848ce6b9c01efaa01bf1.png

下图为oss上传服务架构图:

原图参见:

https://github.com/hepyu/k8s-app-config/blob/master/product/standard/grafana-prometheus-pro/images/caf-cdn%E6%96%B9%E6%A1%88.jpg

c4a28f5ad7c1dc983531dcc451cfba57.png

相关文章参见:

cdn-3:上传文件到oss-bucket生产级别的完整监控

4.grafana

主要说明3部分,grafana-web, provisioning-datasources, provisioning-dashboards

grafana-web:

通过丰富图表展示监控数据,这些图表有dashboard定义。

provisioning-datasources:

位于:

https://github.com/hepyu/k8s-app-config/tree/master/product/standard/grafana-prometheus-pro/grafana/provisioning/datasources

这个目录下只有一个文件datasource.yml,定义grafana获取查询数据的数据源,可以定义多个数据源,不同的图表/dashboard可以使用不同的数据源。

datasources: - name: prometheus-mq-rocketmq type: prometheus access: proxy orgId: 1 url: http://prometheus-mq-rocketmq:9090 isDefault: false jsonData: tlsAuth: false tlsAuthWithCACert: false

provisioning-dashboards:

位于:

https://github.com/hepyu/k8s-app-config/tree/master/product/standard/grafana-prometheus-pro/grafana/provisioning/dashboards

这个目录下有一个provision.yml配置文件,和不同监控组件的dashboard目录。

provision.yml定义了dashboard位置,用于grafana启动时加载。

providers: - name: 'storage-mysql' orgId: 1 folder: 'storage-mysql' folderUid: '' type: file options: path: /var/lib/grafana/k8s-app-config/product/standard/grafana-prometheus-pro/grafana/provisioning/dashboards/storage-mysql - name: 'mq-rocketmq' orgId: 1 folder: 'mq-rocketmq' folderUid: 'mq-rocketmq' type: file options: path: /var/lib/grafana/k8s-app-config/product/standard/grafana-prometheus-pro/grafana/provisioning/dashboards/mq-rocketmq

建议使用provisioning-dashboards方式去定义dashboard,这样的dashboard在grafana界面是不允许修改的,更加安全,防止误操作。

(3).grafana/prometheus生产级容器化配置

笔者提供了一个grafana/prometheus生产级的容器化配置,完全按照本文方式实现,位于:

https://github.com/hepyu/k8s-app-config/tree/master/product/standard/grafana-prometheus-pro

1.注意事项

a.本配置使用的是local-pv,生产使用要换成云存储,本配置提供nfs的配置(已注释)。

b.imagePullSecret是注释掉的,生产要打开,因为镜像仓库都是有secret的。

c.注意先建立pv目录和挂载,注意目录的权限,否则prometehus, grafana容器化失败,给775或777。

2.容器化步骤

kubectl apply -f grafana-prometheus-image-repo-secret.yaml(生产环境需要改成自己的秘钥,本地部署不要执行)

kubectl apply -f grafana-prometheus-namespace.yaml

分别进入子目录执行:kubectl apply -f .

容器化完成后的样例:

08506092c121f48ff00f85ce148c7443.png
b61f15177f30730fc709cc84a222a5ad.png

不过现在dashboard是没有数据显示的,如何将各类基础中间件纳入grafana/prometheus监控,请关注后续文章。

3.关键配置

下述关键配置位于文件:

https://github.com/hepyu/k8s-app-config/blob/master/product/standard/grafana-prometheus-pro/grafana/grafana-statefulset.yaml​

下边的配置保证grafana启动前先把dashboards和datasources配置下载到本地。

initContainers: - name: dashboards-clear #存到你公司自己的镜像仓库,不要用docker官方仓库 image: alpine/git:1.0.7 command: ['sh', '-c', 'rm -rf inc-k8s-app-config'] volumeMounts: - name: pv-metrics-grafana mountPath: /git - name: dashboards-sync #存到你公司自己的镜像仓库,不要用docker官方仓库 image: alpine/git:1.0.7 command: ['sh', '-c', 'git clone '] volumeMounts: - name: pv-metrics-grafana mountPath: /git

下图配置指定了grafana启动时从哪里加载dashboards和datasources,即之前git clone下的目录。

env:

#开启percona的dashboards,用于mysql监控dashboard显示,关闭,我们通过provisioning方式实现dashboard导入.

env: #开启percona的dashboards,用于mysql监控dashboard显示,关闭,我们通过provisioning方式实现dashboard导入. #- name: GF_INSTALL_PLUGINS # value: "percona-percona-app" - name: GF_PATHS_PROVISIONING value: "/var/lib/grafana"

(4).相关文章

1.cdn-3:上传文件到oss-bucket生产级别的完整监控

2.阿里云自建kubernetes集群与微服务的生产实践系列-1:整体架构-1

68fe0e6a8d25900e7e977b3c0e561b4a.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值