惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Martin Fowler
Martin Fowler
Jina AI
Jina AI
J
Java Code Geeks
Microsoft Security Blog
Microsoft Security Blog
Recent Announcements
Recent Announcements
I
InfoQ
L
LangChain Blog
The Cloudflare Blog
IT之家
IT之家
博客园 - 叶小钗
Apple Machine Learning Research
Apple Machine Learning Research
B
Blog
A
About on SuperTechFans
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Last Week in AI
Last Week in AI
Blog — PlanetScale
Blog — PlanetScale
罗磊的独立博客
云风的 BLOG
云风的 BLOG
Microsoft Azure Blog
Microsoft Azure Blog
Engineering at Meta
Engineering at Meta
F
Fortinet All Blogs
博客园 - 聂微东
美团技术团队
博客园_首页

二丫讲梵

学习周刊-总第258期-2026年第15周 学习周刊-总第257期-2026年第14周 学习周刊-总第256期-2026年第13周 学习周刊-总第255期-2026年第12周 学习周刊-总第254期-2026年第11周 学习周刊-总第253期-2026年第10周 临时插播一条羊毛,免费领取450元大模型API代金券 学习周刊-总第252期-2026年第09周 学习周刊-总第251期-2026年第08周 学习周刊-总第250期-2026年第07周 学习周刊-总第249期-2026年第06周 诚邀评论,聊聊你所知欲知的我 学习周刊-总第248期-2026年第05周 我的QQ动态之2015年 我的QQ动态之2014年 我的QQ动态之2013年 我的QQ动态之2012年 我的QQ动态-2010-2011年 我的QQ动态-创栏小叙 学习周刊-总第247期-2026年第04周 Nexus社区版权益阉割--一文告诉你有哪些版本可以选择 学习周刊-总第246期-2026年第03周 学习周刊-总第245期-2026年第02周 学习周刊-总第244期-2026年第01周 学习周刊-总第243期-2025年第52周 学习周刊-总第242期-2025年第51周 开源项目ZenOps:带你领略禅意运维 学习周刊-总第241期-2025年第50周 用京东金融,享负债人生 学习周刊-总第240期-2025年第49周
最近开源的两个项目-获取腾讯云CLS日志费用预估
二丫讲梵 · 2023-06-22 · via 二丫讲梵

# 项目一: cloudctl

项目地址: cloudctl (opens new window)

运维也可以如此优雅!

# 如何使用

先拷贝配置文件,然后正确配置里边的内容:

cp config.example.yml config.yml

1

执行如下指令,查询某日志主题前天单日费用:

# 你也可以直接在release下载二进制来执行
$ cloudctl cls getlogcost -l "xxxxxxxxxxxxxxxxxx" -r "ap-shanghai"

前天的花费为: 174元
日志主题为: xxxxxxxxxxxxxxxxxx

1
2
3
4
5

查询某个应用在一个大日志主题中花费的费用。

$ cloudctl cls getprojectcost -b "bot_webhook" -k k8s -l xxxxxxxxxxxxxxxxxxxxxxx -p testeryajf -r ap-shanghai

> 应用名称:`testeryajf`
> 应用在主题日志占比: `10%`
> 应用单月费用预计: `3000`
>该主题前天单日的费用为: `1000`
该主题的ID为: `xxxxxxxxxxxxxxxxxxxxxxx`

1
2
3
4
5
6
7

通知到群里的消息大概长这样:

我们的应用场景是,生产环境中,有两个日志主题,一个采集所有 CVM 主机应用的日志,一个采集所有部署在 tke 之中的日志。所以在一个日志主题中,会有许多个应用,每个应用对应了一组服务器。当然在 k8s 中对应的名字就是 deployment 的名字。

上边所有的参数都比较容易理解,示例当中也给出了明确的解析。这里单独把 project 的参数拿出来说一说。传递应用的名字,程序会首先拼接出如下语句,查询应用在整个日志主题中的日志量占比:

  • CVM:* | SELECT ROUND(COUNT(*) * 100.0 / (SELECT COUNT(*)), 2) AS percentage WHERE "__HOSTNAME__" like 'testeryajf%'
  • K8S: * | SELECT ROUND(COUNT(*) * 100.0 / (SELECT COUNT(*)), 2) AS percentage WHERE "__TAG__.pod_label_app" 'testeryajf'

所以你在运行项目之前,应该先确认如上语句,在你的日志主题当中,能够正常拿到该应用在主题中的日志量百分比。这是算出应用一个月成本评估的基础。

如果你有多个项目想要共同关注,则可以参照 project_list.example.yml 文件,对内容进行配置,运行命令如下:

$ cloudctl cls getprojectcost -f project_list.example.yml

1

你也可以使用 docker 镜像来运行服务。

$ docker run -it -e TC_SERCRET_ID="xxxxx" -e TC_SERCRET_KEY="xxxxxxxxxx" dockerproxy.com/eryajf/cloudctl /app/cloudctl cls getlogcost  -l "222345432454425"

前天的花费为: 1000元
日志主题为: 222345432454425

1
2
3
4

# 感谢开源

如果觉得项目不错,请别忘了一键三连,给个 star。


# 项目二: eryajfctl

项目地址: eryajfctl (opens new window)

运维也可以如此优雅!快用这个框架打造一个专属于你的工具箱吧!

通过这个框架,你可以快速上手,直接构建你想要的运维工具,而不必再考虑配置,框架设计等内容。

# 如何使用

先拷贝配置文件:

cp config.example.yml config.yml

1

执行如下指令,运行示例参数:

$ go run main.go ex getconfig -w "hello, This is eryajfctl"
通过配置文件获取到的用户名: eryajf
通过配置文件获取到的密码: 123456
通过命令行获取到的内容是: hello, This is eryajfctl

1
2
3
4

其中 ex 为一级参数,getconfig 为二级参数,大多数场景下,分两个层级就够用了,你可以把一级参数当做归类,比如 jenkins, gitlab,二级参数当做功能参数,再往后的参数则是该二级参数所需要的运行时参数。

也可以编译成二进制,然后通过如下方式查看帮助信息:

# 编译
$ make build

#运行测试
$ ./eryajfctl ex getconfig -h
通过命令行获取配置信息

Usage:
  eryajfctl ex getconfig [flags]

Flags:
  -h, --help          help for getconfig
  -w, --word string   测试参数 (default "你好,这是测试")

1
2
3
4
5
6
7
8
9
10
11
12
13

# 开始开发

你可以直接参考 ex 参数的流程,开发新的参数,从而满足实际使用需求。

如果你的配置文件中有敏感数据,可以考虑结合 go-bindata 来使用,通过执行:

go-bindata -o=./public/bindata_config.go -pkg=public config.yml

1

然后更改 public/config.go (opens new window) 中的配置信息读取方式,接着进入开发即可。

如果后续本地的 config.yml 配置有更新,则再次执行上边的命令,将配置文件注入到 bindata_config.go 即可。

这样做的一个好处是,你的二进制放到服务器等地运行的时候,既不需要添加 config.yml 文件,也能防止文件中的敏感信息暴漏出去。

# 感谢开源

此框架建立在如下几个优秀的开源项目之上:

# 其他参考

如果你想熟悉了解此框架的详细用法,还可以参考我的如下两篇文章: