Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Grafana 高可用部署最佳实践

Grafana 高可用部署最佳实践

原创
作者头像
imroc
修改于 2022-08-03 03:28:15
修改于 2022-08-03 03:28:15
2.4K0
举报

摘自 Kubernetes 实践指南

概述

Grafana 默认安装是单副本,非高可用部署,而 Grafana 自身是支持多副本高可用部署的,本文介绍其配置方法以及已经安装的 Grafana 如何迁移到高可用架构。

修改配置

要让 Grafana 支持高可用,需要对 Grafana 配置文件 (grafana.ini) 进行一些关键的修改:

  1. Grafana 默认使用 sqlite3 文件存储数据,多副本共享可能会有数据冲突,可以配置一下 database 让多副本共享同一个 mysql 或 postgres 数据库,这样多副本就可以无状态横向伸缩。
  2. Grafana 多副本运行,如果配置了告警规则,每个副本都会重复告警,配置一下 ha_peers 让 Grafana 自行选主只让其中一个副本执行告警。
代码语言:text
AI代码解释
复制
[database]
url = mysql://root:123456@mysql.db.svc.cluster.local:3306/grafana
[unified_alerting]
enabled = true
ha_peers = monitoring-grafana-headless.svc.monitoring.cluster.local:9094
[alerting]
enabled = false
  • database 下配置数据库连接信息,包含数据库类型、用户名、密码、数据库地址、端口以及要具体哪个库。
  • alertingenabled 置为 false,表示禁用默认的告警方式(每个 Grafana 实例都单独告警)。
  • unified_alertingenabled 置为 true,表示开启高可用告警。
  • unified_alertingha_peers 填入 Grafana 所有实例的地址,在 k8s 环境可用 headless service,dns 会自动解析到所有 pod ip 来实现自动发现 Grafana 所有 IP,端口默认是 9094,用于 gossip 协议实现高可用。

helm chart 配置示例

如果 grafana 安装到 Kubernetes,通常使用 helm chart 来安装,一般是 grafana 官方 chartvalues.yaml 配置示例:

代码语言:yaml
AI代码解释
复制
replicas: 2
defaultDashboardsTimezone: browser
grafana.ini:
  unified_alerting:
    enabled: true
    ha_peers: 'monitoring-grafana-headless.monitoring.svc.cluster.local:9094'
  alerting:
    enabled: false
  database:
    url: 'mysql://root:123456@mysql.db.svc.cluster.local:3306/grafana'
  server:
    root_url: "https://grafana.imroc.cc"
  paths:
    data: /var/lib/grafana/
    logs: /var/log/grafana
    plugins: /var/lib/grafana/plugins
    provisioning: /etc/grafana/provisioning
  analytics:
    check_for_updates: true
  log:
    mode: console
  grafana_net:
    url: https://grafana.net
  • grafana.ini 字段用于修改 grafana 配置文件内容,使用 yaml 格式定义,会自动转成 ini
  • ha_peers 指向的 headless service 自行提前创建(当前 chart 内置的 headless 没暴露 9094 端口)。

headless service 示例:

代码语言:yaml
AI代码解释
复制
apiVersion: v1
kind: Service
metadata:
  name: monitoring-grafana-headless
  namespace: monitoring
spec:
  clusterIP: None
  ports:
  - name: http-web
    port: 3000
    protocol: TCP
    targetPort: 3000
  - name: alert
    port: 9094
    protocol: TCP
    targetPort: 9094
  selector:
    app.kubernetes.io/instance: monitoring
    app.kubernetes.io/name: grafana
  type: ClusterIP

如果你使用的 kube-prometheus-stack 安装,实际也是用的 Grafana 官方的 chart,只不过作为了一个子 chart,写 values.yaml 时将上面准备的配置放到 grafana 字段下面即可:

代码语言:yaml
AI代码解释
复制
grafana:
  replicas: 2
  defaultDashboardsTimezone: browser
  grafana.ini:
   ...

已安装的 Grafana 如何迁移到高可用架构 ?

如果你用的默认安装,使用 sqlite3 文件存储数据,可以先按照如下步骤迁移数据:

  • 拿到 grafana.db 文件,使用 Grafana 官方提供的迁移脚本 sqlitedump.sh 将 sqlite3 的数据转换成 sql 文件:
代码语言:shell
AI代码解释
复制
sqlitedump.sh grafana.db > grafana.sql

确保环境中安装了 sqlite3 命令。

  • 停止 Grafana (如果是 K8S 部署,可以修改副本数为 0)。
  • 准备好数据库,提前创建好 grafana database:
代码语言:sql
AI代码解释
复制
CREATE DATABASE grafana
  • 替换 Grafana 配置文件,参考前面的配置示例。
  • 启动 Grafana,让 Grafana 自动初始化数据库。
  • 将 sql 文件导入数据库执行:
代码语言:shell
AI代码解释
复制
mysql -h172.16.181.186 -P3306 -uroot -p123456 grafana < grafana.sql
  • 恢复 Grafana 运行。

参考资料

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
grafana酷炫图表
1)grafana是用于可视化大型测量数据的开源程序,他提供了强大和优雅的方式去创建、共享、浏览数据。dashboard中显示了你不同metric数据源中的数据。 2)grafana最常用于因特网基础设施和应用分析,但在其他领域也有机会用到,比如:工业传感器、家庭自动化、过程控制等等。 3)grafana有热插拔控制面板和可扩展的数据源,目前已经支持Graphite、InfluxDB、OpenTSDB、Elasticsearch。
张琳兮
2019/03/14
3.9K0
grafana酷炫图表
grafana安装使用及与zabbix集成 原
Grafana是一个完全开源的度量分析与可视化平台,可对来自各种各种数据源的数据进行查询、分析、可视化处理以及配置告警。
阿dai学长
2019/04/03
1.7K0
解决grafana加载缓慢的方案
最近在公司系统里做了一个内嵌grafana页面的功能,用于查看集群日志。但grafana作为一个单页面应用,加载框架资源,耗费了很长很长时间,以至于你起身去接杯水回来,页面还没有加载完毕。 本着精益求精的思想,想着提升加载速度。 一番搜索下来。发现在grafana7.4.0以后就支持了配置cdn来加载前端资源。 于是乎,说干就干。用我的两台服务器,一台部署grafana,一台将grafan前端资源部署起来当做cdn。 不要问我为什么不用阿里云的oss+cdn?主要是没钱。刷一下页面就是几毛钱,一般人谁受的了。其实原理是一样的。cdn可以用ip代理,可以用nginx代替。只是网络依然很慢。除非你服务器带宽很高。 顺便提一句 我们集群带宽只有5M。 废话少说。let do it 首先启动grafana 7.4.1版本的镜像,并映射配置文件
拿我格子衫来
2022/01/24
4.3K0
解决grafana加载缓慢的方案
Grafana Install&Upgrade (一)
Grafana 是一款采用 go 语言编写的开源应用,主要用于大规模指标数据的可视化展现,Grafana支持许多不同的数据源。每个数据源都有一个特定的查询编辑器,该编辑器定制的特性和功能是公开的特定数据来源。官方支持以下数据源:Zabbix,Graphite,Elasticsearch,InfluxDB,Prometheus,Cloudwatch,MySQL和OpenTSDB等。
Kevin song
2020/04/08
1.9K0
Grafana  Install&Upgrade (一)
Grafana 重置 admin 密码
太久没用 Grafana 发现之前设置的密码给忘记了,又没有配置邮箱功能,所以只能看下暴力修改了。
Hsinyan
2022/08/30
2K0
Grafana 重置 admin 密码
Grafana+Telegraf+Influxdb监控Tomcat集群方案
前一段时间自家养的几只猫经常出问题,由于没有有效的监控预警手段,以至于问题出现或者许久一段时间才会被通知到。凌晨一点这个锅可谁都不想背,为此基于目前的情况搭建了以下这么一套监控预警系统。
小柒2012
2019/12/05
9580
Grafana+Telegraf+Influxdb监控Tomcat集群方案
前一段时间自家养的几只猫经常出问题,由于没有有效的监控预警手段,以至于问题出现或者许久一段时间才会被通知到。凌晨一点这个锅可谁都不想背,为此基于目前的情况搭建了以下这么一套监控预警系统。
小柒2012
2018/08/13
1.4K0
Grafana+Telegraf+Influxdb监控Tomcat集群方案
Grafana重置admin密码
查找grafana.db的路径 1.通过配置文件查找 vim /etc/grafana/grafana.ini 12 #################################### Paths #################################### 13 [paths] 14 # Path to where grafana can store temp files, sessions, and the sqlite3 db (if that is used) 15 ;da
行 者
2019/12/10
2.2K0
8 张图高可用 Hadoop 在 K8S 中部署完全指南
非高可用 k8s 环境,可参考我这篇文章:入门 Hadoop 在 K8S 环境中部署
我的小碗汤
2023/03/19
2.7K0
8 张图高可用 Hadoop 在 K8S 中部署完全指南
Grafana安装及简单使用
版权声明:如需转载本文章,请保留出处! https://blog.csdn.net/xc_zhou/article/details/88936662
周小董
2019/04/09
17.2K0
Grafana安装及简单使用
grafana-1:恢复admin用户为默认密码
sqlite> update user set password = '59acf18b94d7eb0694c61e60ce44c110c7a683ac6a8f09580d626f90f4a242000746579358d77dd9e570e83fa24faa88a8a6', salt = 'F3FAxVm33R' where login = 'admin';
千里行走
2020/10/27
3.1K0
Prometheus+Grafana监控系统
Zabbix的客户端更多是只做上报的事情,push模式。而Prometheus则是客户端本地也会存储监控数据,服务端定时来拉取想要的数据。
小陈运维
2021/10/13
7870
KubeSphere 最佳实战:KubeSphere 部署 Kafka 集群实战指南
今天,我分享一篇专题文档,这份内容源自 KubeSphere 社群里一位(潜在的)知识星球会员的特别约稿。他正面临一个挑战:在 Kubernetes 集群上部署一个高可用的 Kafka 集群,这个问题已经研究数日,但仍未找到合适的解决方案。
运维有术
2024/08/01
3100
KubeSphere 最佳实战:KubeSphere 部署 Kafka 集群实战指南
Kubernetes 1.8.6 集群部署–集群监控(十)
Grafana+Prometheus打造全方位立体监控系统 架构 还是接着我的K8s架构来: 安装 Exporter 下载并解压: 注意:Exporter 是部署在Node上面的,也就是我的192.1
老七Linux
2018/05/31
7970
kubernetes 安装 Prometheus + Grafana
MetricServer:是kubernetes集群资源使用情况的聚合器,收集数据给kubernetes集群内使用,如 kubectl,hpa,scheduler等。
小陈运维
2021/10/13
2.6K0
试用grafana
Grafana 是一个开箱即用的可视化工具,具有功能齐全的度量仪表盘和图形编辑器,有灵活丰富的图形化选项,可以混合多种风格,支持多个数据源特点。本文把这几天简单试用的情况做个小结。
彭华盛
2020/03/06
5.2K0
kubernetes(k8s) 安装 Prometheus + Grafana
MetricServer:是kubernetes集群资源使用情况的聚合器,收集数据给kubernetes集群内使用,如 kubectl,hpa,scheduler等。
小陈运维
2022/04/24
1.6K1
从SpringBoot构建十万博文聊聊Tomcat集群监控
在十万博文终极架构中,我们使用了Tomcat集群,但这并不能保证系统不会出问题,为了保证系统的稳定运行,我们还需要对 Tomcat 进行有效的运维监控手段,不至于问题出现或者许久一段时间才知道。凌晨一点这个锅可谁都不想背,为此基于目前的情况搭建了以下这么一套监控预警系统。
小柒2012
2019/12/05
5630
使用 Grafana 创建可视化面板
Grafana 是一个监控仪表系统,它是由 Grafana Labs 公司开源的的一个系统监测工具,它可以大大帮助我们简化监控的复杂度,我们只需要提供需要监控的数据,它就可以帮助生成各种可视化仪表,同时它还有报警功能,可以在系统出现问题时发出通知。
我是阳明
2021/11/08
5.7K0
使用 Grafana 创建可视化面板
Kubernetes 集群和应用监控方案的设计与实践
当你的应用部署到 Kubenetes 后,你很难看到容器内部发生了什么,一旦容器死掉,里面的数据可能就永远无法恢复,甚至无法查看日志以定位问题所在,何况一个应用可能存在很多个实例,用户的一个请求不指定被哪个容器处理了,这使得在 Kubernetes 中对应用进行故障排除较为复杂。在应用之外,由于 Kubernetes 作为基础设施,掌管这整个集群的生死,Kubernetes 的任何故障,必定影响到应用服务的运行,因此监控 Kubernetes 运行状况也至关重要。
痴者工良
2022/05/06
1.2K0
Kubernetes 集群和应用监控方案的设计与实践
相关推荐
grafana酷炫图表
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档