通过Gin框架对接阿里云SLS日志服务,查询服务日志,你学会了吗?

开发 前端
日志服务一站式提供数据采集、加工、查询与分析、可视化、告警、消费与投递等功能,全面提升研发、运维、运营、安全等场景的数字化能力。项目代码

阿里云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的服务日志,其他功能自行探索。

图片图片

责任编辑:武晓燕 来源: 院长技术
相关推荐

2023-11-01 07:28:31

MySQL日志维护

2024-05-29 09:20:41

2023-11-27 00:55:43

Eureka服务

2024-01-30 18:29:29

微服务架构Ingress

2022-09-29 08:32:14

查询语句OR

2024-01-29 00:41:14

2023-06-15 08:00:23

2024-01-19 08:25:38

死锁Java通信

2024-02-04 00:00:00

Effect数据组件

2023-01-10 08:43:15

定义DDD架构

2023-07-26 13:11:21

ChatGPT平台工具

2023-08-01 12:51:18

WebGPT机器学习模型

2024-01-02 12:05:26

Java并发编程

2024-03-05 18:10:47

事务SQL目录

2024-02-28 07:35:32

SQL查询数据库

2024-10-08 08:11:39

2023-07-29 00:10:48

2022-05-17 08:24:58

查询日志MySQL

2023-01-30 09:01:54

图表指南图形化

2024-07-31 08:39:45

Git命令暂存区
点赞
收藏

51CTO技术栈公众号