首页 > 其他分享 >使用golang上报数据

使用golang上报数据

时间:2023-09-12 17:57:41浏览次数:36  
标签:span string err reporter golang json gin 上报 数据

package main

import (
    "fmt"
	"time"
	"context"
	"strings"

	"github.com/gin-gonic/gin"
    "github.com/SkyAPM/go2sky"
	"github.com/SkyAPM/go2sky/reporter"
)

func main() {
	// 创建一个Gin路由器
	r := gin.Default()
    
    // skywalking服务地址 127.0.0.1:11800
	rp, err := reporter.NewGRPCReporter("127.0.0.1:11800", reporter.WithCheckInterval(time.Second))
	if err != nil {
		fmt.Println("create gosky reporter failed!")
	}
	defer rp.Close()
    fmt.Println("create gosky reporter ok!")
	// 服务名 test-demo
	tracer, err := go2sky.NewTracer("test.demo", go2sky.WithReporter(rp))
    


	// 定义路由
	r.GET("/", func(c *gin.Context) {

		var ret string
		span, _, err := tracer.CreateEntrySpan(context.WithValue(context.Background(), go2sky.CtxTraceKey,
			"1234"), time.Unix(1694509947, 0), strings.Join([]string{"test.demo", "index"}, "/"), func(headerKey string) (string, error) {
			return ret, nil
		})
		if err != nil {
			fmt.Println("create new accountData span error %v \n", err)
			return
		}

		span.SetComponent(0)
		span.Tag("name", "test")
		span.Tag("age", "21")
		span.Tag("ip", "127.0.0.1")
		span.End(time.Now())
		c.JSON(200, gin.H{
			"message": "Hello World!",
		})
	})

	r.GET("/ping", func(c *gin.Context) {
		c.JSON(200, gin.H{
			"message": "pong!",
		})
	})

	r.POST("/submit", func(c *gin.Context) {
		var json struct {
			Name string `json:"name"`
			Email string `json:"email"`
		}

		if err := c.Bind(&json); err == nil {
			c.JSON(200, gin.H{
				"message": "JSON received",
				"name":    json.Name,
				"email":   json.Email,
			})
		} else {
			c.JSON(400, gin.H{"error": err.Error()})
		}
	})

	// 启动Gin应用程序
	r.Run(":9999")
}
//go run main.go 运行
//http://127.0.0.1:9999/ 访问url上报数据

  

标签:span,string,err,reporter,golang,json,gin,上报,数据
From: https://www.cnblogs.com/boye169/p/17697398.html

相关文章

  • 如何设计一个缓存策略,可以动态缓存热点数据呢?
    如何设计一个缓存策略,可以动态缓存热点数据呢?热点数据动态缓存的策略总体思路:通过数据最新访问时间来做排名,并过滤掉不常访问的数据,只留下经常访问的数据。以电商平台场景中的例子,现在要求只缓存用户经常访问的Top1000的商品。具体细节如下:先通过缓存系统做一个排序队列(比......
  • Redis五种数据类型及其数据结构
    Redis五种数据类型String数据结构:SDS应用类型:缓存数据,计数,互斥锁List数据结构:压缩列表或者双向链表应用类型:缓存链表或者作为队列Hash数据结构:压缩列表或者哈希表应用类型:缓存对象Set数据结构:整型集合或者哈希表应用类型:缓存集合,例如好友关系Zset......
  • ArrayList/MySQL数据批量写入Excel表格
    ArrayList/MySQL数据集合写入Excel1.文章概述:写入Excel文件通常需要使用一些库或工具,而"EasyExcel"通常是指的阿里巴巴开源的EasyExcel库。这个库可以让我们在Java中简便地进行Excel文件的读写操作。2.导入配置:<dependency><groupId>com.alibaba</group......
  • AttributeError: 'int' object has no attribute 'items' 混合数据存储
    data={'2023:09:01':{'867726032728067':68},'2023:09:02':{'867726032728067':68},'2023:09:03':0,'2023:09:04':{'866384064965578':48,'867266067918648':46......
  • python中JSON数据处理
    python和json数据类型对应关系PythonJSONdictionaryobjectlistarraystringstringint,floatnumberboolean(True,False)boolean(true,false)Nonenull需要注意的是,Python支持一些JSON不支持的数据类型,如元组(tuple)、集合(set)和字节串(bytes)。因此,在......
  • Docker配置PostgreSQL数据本地持久化
    原文:https://www.cnblogs.com/yangyangming/p/13502405.html主机中的本地目录作为Docker容器内的持久存储卷装载,以便在主机和Docker容器之间共享数据。如果主机希望访问或定期备份在Docker容器内运行的DB服务器写入文件夹的数据或数据库,则此方法非常有用。创建本地数据卷#创建......
  • 《Hello算法》笔记2数据结构
    逻辑结构逻辑结构揭示了数据元素之间的逻辑关系。线性数据结构:数组、链表、栈、队列、哈希表。非线性数据结构:树、堆、图、哈希表。 线性结构:数组、链表、队列、栈、哈希表,元素之间是一对一的顺序关系。树形结构:树、堆、哈希表,元素之间是一对多的关系。网状结构:图,元素......
  • 做数据做白化处理
    x=normrnd(0,10,[1400]);noise=normrnd(0,1,[1400]);y=xy=y+noisew=[x;y][coeff,scores]=pca(w')figure(1)holdonscatter(x(:),y(:),'.')biplot(coeff(:,1:2)*50,'varlabels',{'v_1','v_2'});%一行表示一个方向scatter(x(:),......
  • python采集数据保存csv, 文件内容乱码了怎么解决?
    如果你的Python程序采集到的数据在保存成CSV格式的文件时出现了乱码,那么可尝试以下解决方法:1.在打开CSV文件时指定编码方式你可以使用Python中的open()函数打开CSV文件,并在open()函数中指定文件编码方式为CSV文件原始编码方式。如果CSV文件原始编码......
  • openGauss数据库tpcc测试
     建表语句CREATETABLESPACEexample2relativelocation'tablespace2';CREATETABLESPACEexample3relativelocation'tablespace3';createtablebmsql_config(cfg_namevarchar(30),cfg_valuevarchar(50));createtablebmsql_wa......