院长简介
作者:院长
职位:运维开发工程师
官网: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"
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)
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
c.JSON(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群已满
】
推荐阅读