当前位置: 首页 > news >正文

grom接入Prometheus,grafana

在同级目录下分别创建

docker-compose.yml,与prometheus.yml 配置文件

version: '3.8'services:prometheus:image: prom/prometheuscontainer_name: prometheusports:- "9090:9090"  # Prometheus Web UI 端口volumes:- ./prometheus.yml:/etc/prometheus/prometheus.ymlnetworks:- monitoringgrafana:image: grafana/grafanacontainer_name: grafanaports:- "3000:3000"networks:- monitoringdepends_on:- prometheuspushgateway:image: prom/pushgatewaycontainer_name: pushgatewayports:- "9091:9091"networks:- monitoringnetworks:monitoring:driver: bridge
global:scrape_interval: 5s  //采集指标频次scrape_configs:- job_name: 'prometheus'static_configs:- targets: ['host.docker.internal:8181'] //我这边是宿主机运行程序,在同一bridge下面安装的prometheus与granfa.如果程序以容器运行,加入同一个bridge下面。docker容器访问宿主机host配置host.docker.internal

gorm中间件配置

func init() {// 设置MySQL连接信息dsn := "sa:sa123456@tcp(127.0.0.1:3306)/test?charset=utf8mb4&parseTime=True&loc=Local"// 创建一个GORM连接db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})if err != nil {fmt.Println("Failed to connect to the database:", err)return}db.Use(prometheus.New(prometheus.Config{DBName:          "test", // 使用 `DBName` 作为指标 labelRefreshInterval: 15,     // 指标刷新频率(默认为 15 秒)PushAddr:        "",     // 如果配置了 `PushAddr`,则推送指标StartServer:     true,   // 启用一个 http 服务来暴露指标HTTPServerPort:  8181,   // 配置 http 服务监听端口,默认端口为 8080 (如果您配置了多个,只有第一个 `HTTPServerPort` 会被使用)MetricsCollector: []prometheus.MetricsCollector{// 从 SHOW STATUS 选择变量变量,如果不设置,则使用全部的状态变量&prometheus.MySQL{VariableNames: []string{"Threads_running"},},},}))// 获取通用数据库对象 sql.DBsqlDB, err := db.DB()if err != nil {fmt.Println("Failed to get generic database object:", err)return}// 设置连接池参数// SetMaxIdleConns 用于设置连接池中空闲连接的最大数量sqlDB.SetMaxIdleConns(10)// SetMaxOpenConns 设置打开数据库连接的最大数量sqlDB.SetMaxOpenConns(100)// SetConnMaxLifetime 设置了连接可复用的最大时间sqlDB.SetConnMaxLifetime(time.Hour)global.DB = db// 检查连接是否成功fmt.Println("Connected to the database successfully")
}

监听成功

我们用go的高并发 限制运行协程数量最大100.

// SetMaxOpenConns 设置打开数据库连接的最大数量
sqlDB.SetMaxOpenConns(100)
func save() {// 设置随机种子rand.Seed(time.Now().UnixNano())// 插入2000万条数据batchSize := 1000totalRecords := 20000000var wg errgroup.Groupwg.SetLimit(100)for i := 0; i < totalRecords/batchSize; i++ {num := iwg.Go(func() error {var employees []Employee//for j := 0; j < batchSize; j++ {employees = append(employees, Employee{EmpNo:     num*batchSize + num + 1,BirthDate: randomDate(time.Date(1950, 1, 1, 0, 0, 0, 0, time.UTC), time.Date(2000, 12, 31, 0, 0, 0, 0, time.UTC)),FirstName: randomString(14),LastName:  randomString(16),Gender:    randomGender(),HireDate:  randomDate(time.Date(1980, 1, 1, 0, 0, 0, 0, time.UTC), time.Date(2024, 12, 31, 0, 0, 0, 0, time.UTC)),})fmt.Printf("Inserted %d records\n", (i+1)*batchSize)global.DB.Create(&employees)return nil})//fmt.Printf("Inserted %d records\n", (i+1)*batchSize)}wg.Wait()
}

在prometheus可以看到相关指标信息

在granfa配置好相关datasoure可以看到相关数据库连接串指标

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 我从“天坑”专业转行到AI工程师,年薪一跃30W!
  • 初识python人脸识别(简单小项目)
  • Android 启动动画太生硬
  • Google Earth Engine(GEE)——在选定的时间内,按照时间循环筛选影像中的第一幅影像并导出到Google 硬盘
  • Leetcode - 周赛410
  • 企业如何组建安全稳定的跨国通信网络
  • Android SystemServer启动流程
  • 有什么蓝牙耳机值得推荐一下吗?百元开放式耳机选购指南
  • 240810-Gradio通过HTML组件打开本地文件+防止网页跳转到about:blank
  • linux下ETCD安装、配置、命令
  • 如何让键盘F2功能键设置成重命名键(Fn+Esc)
  • SAM2部署过程中pip install -e . 报错:‘gbk‘ codec can‘t decode byte 0xa4
  • 【自动驾驶】ROS中的重名问题:工作空间、节点、参数
  • 总投资额超1320亿!上半年文旅项目投资盘点,康养/红色/智慧旅游等六大赛道受资本青睐
  • <数据集>车间工人、安全帽、安全背心识别<目标检测>
  • 【vuex入门系列02】mutation接收单个参数和多个参数
  • 【笔记】你不知道的JS读书笔记——Promise
  • 【从零开始安装kubernetes-1.7.3】2.flannel、docker以及Harbor的配置以及作用
  • 【译】React性能工程(下) -- 深入研究React性能调试
  • Babel配置的不完全指南
  • CAP 一致性协议及应用解析
  • CEF与代理
  • ES6语法详解(一)
  • Go 语言编译器的 //go: 详解
  • JavaScript的使用你知道几种?(上)
  • JavaScript设计模式之工厂模式
  • Joomla 2.x, 3.x useful code cheatsheet
  • Mithril.js 入门介绍
  • mongo索引构建
  • ReactNativeweexDeviceOne对比
  • Solarized Scheme
  • vue自定义指令实现v-tap插件
  • 从输入URL到页面加载发生了什么
  • 分享几个不错的工具
  • 前端知识点整理(待续)
  • 我的业余项目总结
  • 一个JAVA程序员成长之路分享
  • 译自由幺半群
  • 大数据全解:定义、价值及挑战
  • ## 1.3.Git命令
  • #mysql 8.0 踩坑日记
  • #微信小程序(布局、渲染层基础知识)
  • (附源码)springboot宠物管理系统 毕业设计 121654
  • (力扣记录)235. 二叉搜索树的最近公共祖先
  • (十一)图像的罗伯特梯度锐化
  • (一)项目实践-利用Appdesigner制作目标跟踪仿真软件
  • (原創) 是否该学PetShop将Model和BLL分开? (.NET) (N-Tier) (PetShop) (OO)
  • (转) 深度模型优化性能 调参
  • (转)菜鸟学数据库(三)——存储过程
  • .Net - 类的介绍
  • .NET(C#) Internals: as a developer, .net framework in my eyes
  • .Net--CLS,CTS,CLI,BCL,FCL
  • :=
  • @data注解_SpringBoot 使用WebSocket打造在线聊天室(基于注解)
  • [C++] Windows中字符串函数的种类