二丫讲梵 二丫讲梵
首页
  • 最佳实践
  • 迎刃而解
  • Nginx
  • Php
  • Zabbix
  • AWS
  • Prometheus
  • Grafana
  • CentOS
  • Systemd
  • Docker
  • Rancher
  • Ansible
  • Ldap
  • Gitlab
  • GitHub
  • Etcd
  • Consul
  • RabbitMQ
  • Kafka
  • MySql
  • MongoDB
  • OpenVPN
  • KVM
  • VMware
  • Other
  • ELK
  • K8S
  • LLM
  • Nexus
  • Jenkins
  • 随写编年
  • 家人物语
  • 追忆青春
  • 父亲的朋友圈
  • 电影音乐
  • 效率工具
  • 博客相关
  • Shell
  • 前端实践
  • Vue学习笔记
  • Golang学习笔记
  • Golang编程技巧
  • 学习周刊
  • Obsidian插件周刊
关于
友链
  • 本站索引

    • 分类
    • 标签
    • 归档
  • 本站页面

    • 导航
    • 打赏
  • 我的工具

    • 备忘录清单 (opens new window)
    • json2go (opens new window)
    • gopher (opens new window)
    • 微信MD编辑 (opens new window)
    • 国内镜像 (opens new window)
    • 出口IP查询 (opens new window)
    • 代码高亮工具 (opens new window)
  • 外站页面

    • 开往 (opens new window)
    • ldapdoc (opens new window)
    • HowToStartOpenSource (opens new window)
    • vdoing-template (opens new window)
GitHub (opens new window)

二丫讲梵

行者常至,为者常成
首页
  • 最佳实践
  • 迎刃而解
  • Nginx
  • Php
  • Zabbix
  • AWS
  • Prometheus
  • Grafana
  • CentOS
  • Systemd
  • Docker
  • Rancher
  • Ansible
  • Ldap
  • Gitlab
  • GitHub
  • Etcd
  • Consul
  • RabbitMQ
  • Kafka
  • MySql
  • MongoDB
  • OpenVPN
  • KVM
  • VMware
  • Other
  • ELK
  • K8S
  • LLM
  • Nexus
  • Jenkins
  • 随写编年
  • 家人物语
  • 追忆青春
  • 父亲的朋友圈
  • 电影音乐
  • 效率工具
  • 博客相关
  • Shell
  • 前端实践
  • Vue学习笔记
  • Golang学习笔记
  • Golang编程技巧
  • 学习周刊
  • Obsidian插件周刊
关于
友链
  • 本站索引

    • 分类
    • 标签
    • 归档
  • 本站页面

    • 导航
    • 打赏
  • 我的工具

    • 备忘录清单 (opens new window)
    • json2go (opens new window)
    • gopher (opens new window)
    • 微信MD编辑 (opens new window)
    • 国内镜像 (opens new window)
    • 出口IP查询 (opens new window)
    • 代码高亮工具 (opens new window)
  • 外站页面

    • 开往 (opens new window)
    • ldapdoc (opens new window)
    • HowToStartOpenSource (opens new window)
    • vdoing-template (opens new window)
GitHub (opens new window)
  • Shell编程

  • Go编程笔记

    • 开发技巧

    • 库包研究

    • 个人项目

      • 给我一个URL,我能将你关心的页面元素截图发给机器人
      • 有人在go-ldap库issue中寻求文档,我为此写了一个ldapctl工具
      • 拯救openLDAP的上古管理界面,我写了一个现代化的ldap管理后台go-ldap-admin
      • chatGPT钉钉群聊交互版-chatgpt-dingtalk
      • 最近开源的两个项目-获取腾讯云CLS日志费用预估
        • 项目一: cloudctl
          • 如何使用
          • 感谢开源
        • 项目二: eryajfctl
          • 如何使用
          • 开始开发
          • 感谢开源
          • 其他参考
      • 基于GO语言实现的体验最好的企微应用集成ChatGPT项目chatgpt-wecom
      • 开源一个工具-使用关键字搜索所有gitlab项目
      • 过年时鼓捣xirang框架遇到的前后端问题两则
  • 前端编程笔记

  • Go学习笔记

  • Vue-21年学习笔记

  • Vue-22年重学笔记

  • 编程世界
  • Go编程笔记
  • 个人项目
二丫讲梵
2023-06-22
目录

最近开源的两个项目-获取腾讯云CLS日志费用预估

文章发布较早,内容可能过时,阅读注意甄别。

# 项目一: 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

# 感谢开源

  • eryajfctl (opens new window)

如果觉得项目不错,请别忘了一键三连,给个 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 文件,也能防止文件中的敏感信息暴漏出去。

# 感谢开源

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

  • gopkg.in/yaml.v3 v3.0.1 (opens new window)
  • github.com/spf13/cobra v1.2.1 (opens new window)

# 其他参考

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

  • 使用 go-bindata 将文件编译进二进制 (opens new window)
  • 利用 cobra 库快速开发类似 kubectl 一样的命令行工具 (opens new window)
微信 支付宝
上次更新: 2024/09/26, 21:41:44
chatGPT钉钉群聊交互版-chatgpt-dingtalk
基于GO语言实现的体验最好的企微应用集成ChatGPT项目chatgpt-wecom

← chatGPT钉钉群聊交互版-chatgpt-dingtalk 基于GO语言实现的体验最好的企微应用集成ChatGPT项目chatgpt-wecom→

最近更新
01
记录二五年五一之短暂回归家庭
05-09
02
学习周刊-总第210期-2025年第19周
05-09
03
学习周刊-总第209期-2025年第18周
05-03
更多文章>
Theme by Vdoing | Copyright © 2017-2025 | 点击查看十年之约 | 浙ICP备18057030号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式