专栏名称: 院长技术
《院长技术》专注于DevOps技术栈研究,云原生、Istio,CICD、Docker、Prometheus、K8s、ServiceMesh、Jenkins、Linux、微服务、分布式存储、监控、日志收集、安全渗透、虚拟化等技术栈。
目录
相关文章推荐
法询金融固收组  ·  央行货币政策工具(最全整理)! ·  7 小时前  
金融早实习  ·  易方达基金2025年暑期校招开启! ·  昨天  
51好读  ›  专栏  ›  院长技术

通过Gin框架对接阿里云SLS日志服务,查询服务日志

院长技术  · 公众号  ·  · 2024-11-12 08:52

正文

院长简介

作者:院长

职位:运维开发工程师

官网:https://deanit.cn

博客:https://blog.deanit.cn

擅长:

【虚拟化,容器化,自动化运维,CICD,监控,日志,中间件,双机热备,分布式存储,数据库,认证,组网隧道,Kali 安全渗透,网络攻击,负载均衡,Html,Css,Js,Jq,Vue3,Shell,Python,Go,前后端框架】

阿里云SLS

日志服务 Simple Log Service 是服务于阿里云客户以及阿里云集团内部自用的云原生观测与分析,一站式可观测数据的 Data to Insight 平台,为 Log、Metric、Trace 等数据提供大规模、低成本、实时的平台化服务。日志服务一站式提供数据采集、加工、查询与分析、可视化、告警、消费与投递等功能,全面提升研发、运维、运营、安全等场景的数字化能力。

项目代码

package main
import ( "fmt" "github.com/aliyun/aliyun-log-go-sdk" "github.com/gin-gonic/gin" "net/http" "time")
func main() { router := gin.Default()
router.GET("/download-logs", func(c *gin.Context) {    // 地区 endpoint := "cn-beijing.log.aliyuncs.com" // key accessKeyID := "LTAI5tShzYy1VMGR17H"    // 密钥 accessKeySecret := "QELEeTCudJHYhYY3mpuD"
provider := sls.NewStaticCredentialsProvider(accessKeyID, accessKeySecret, "") client := sls.CreateNormalInterfaceV2(endpoint, provider)
ProjectName := "dean"    LogStoreName := "nginx"
logstore, err := client.GetLogStore(ProjectName, LogStoreName) if err != nil { fmt.Println("出现报错了") panic(err) } fmt.Println("get logstore successfully:", logstore.Name)
// 设置查询的时间范围 fromTime := time.Now().Unix() - (60 * 60 * 24) // 24小时之前 toTime := time.Now().Unix() // 当前时间
// 设置查询的参数 query := "*" line := int64(100) // 每页日志条数 offset := int64(0) // 偏移量
// 获取日志 resp, err := logstore.GetLogs("", fromTime, toTime, query, line, offset, false) if err != nil { fmt.Println(err) c.JSON(http.StatusInternalServerError, gin.H{"error": "Failed to get logs"}) return } logs := resp.Logs
// 将所有日志转换为JSON格式返回 c.JSON(http.StatusOK, logs)
//// 设置文件名(可以根据需要自定义) //filename := "access_log_" + time.Now().Format("20060102150405") + ".txt" // //// 设置HTTP头信息,指示这是一个文件下载响应 //c.Header("Content-Disposition", "attachment; filename=\""+filename+"\"") //c.Header("Content-Type", "text/plain") // //// 写入文件内容 //c.String(http.StatusOK, logs)
// 设置下载相关的头部信息 c.Header("Content-Description", "File Transfer") c.Header("Content-Disposition", "attachment; filename=logs.txt") c.Header("Content-Type", "application/octet-stream")
// 将日志内容写入响应体 for _, log := range resp.Logs { c.Writer.Write([]byte(fmt.Sprintf("%v\n", log))) }
})
router.Run(":8080")}

启动代码程序:

访问Nginx服务,然后查看阿里云SLS日志服务:

访问接口:

http://127.0.0.1:8080/download-logs

可以看到接口返回内容是Nginx的服务日志,其他功能自行探索。

招贤纳士

欢迎👏关注《院长技术》,只做原创,干货~~~

更多技术干货持续输出中......


知识星球,试运营中,

原价188¥在不断上涨, 现加入仅需129¥ ,文档正逐渐上传!

欢迎加入 QQ-4 群:【

1群-2群-3群已满

推荐阅读







请到「今天看啥」查看全文