鸿鹄协助管理华为云与炎凰Ichiban
炎凰对华为云的需求
在炎凰日常的开发中,对于服务器上的需求,我们基本都是采用云服务。目前我们主要选择的是华为云,华为云的云主机比较稳定,提供的云主机配置也比较多样,非常适合对于不同场景硬件配置的需求,而且在技术支持服务上,响应速度也非常快。
一般来说,我们主要会采购一些包年的云主机,来满足日常的研发和测试。但是同事们也会碰到一些adhoc的需求,比如:对于用户碰到的问题,我们需要在一个实验环境复现它们,我们会临时开几台云主机来模拟客户的环境。
随着炎凰数据的员工越来越多,这样临时创建机器的需求也越来越多。我们发现,华为云的API在功能上非常完整,且华为云的API Explorer是个非常方便的Debug和测试的工具。于是我们通过API快速地开发了Ichiban,这是一个内部创建云主机的工具。
炎凰Ichiban简介
为什么叫Ichiban?因为炎凰有啤酒文化,公司的冰箱中除了饮料,更放满了各种各样的精酿啤酒,我们每周五都会有技术分享会,同时也是一周一度的Happy hour,啤酒+食物无限量供应。所以我觉得Ichiban+烤串是我们炎凰程序员的夏天必备,随时欢迎来炎凰喝啤酒~
首先,Ichiban的登录界面是下图这样。因为我们使用Microsoft Azure AD来管理我们员工的账号,所以我们调用微软的API来进行登录,并记录和管理用户信息。

登录后,就可以看到创建的云主机信息。

从这一层开始,都调用华为云的API来实现,功能上包括了:
创建云主机
云主机开机、关机、重启、远程登录和删除
延长云主机租期
增加硬盘等等
Ichiban 的技术栈
我们使用的是华为云的Python SDK,这里不得不再次称赞华为云的API Explorer,是个能够提供快速开发功能的工具,能够根据你键入的值自动生成代码。

之后也可以使用华为云提供的‘SDK代码示例调试’中调试代码,而且是我们都熟悉的VS Code的风格。截个图,自己体会,常使用VS Code开发的朋友是不是很熟悉?

因为我们使用Python作为开发语言,所以用了 Flask + Gunicorn + Supervisor 来托管Web服务。
Flask 因为本身就是Python编写,所以对Python的契合度就很高,而且是一个轻量级的Web应用框架。
Gunicorn 是作为Flask的WSGI HTTP服务器。它所在的位置通常是在反向代理(如 Nginx)或者负载均衡(如 AWS ELB)和一个web应用(比如 Django 或者 Flask)之间。
这里只要把Flask 的5000端口托管起来即可,配置如下:

Supervisor 的服务进程为supervisord,主要用来在启动自身时启动管理的子进程,响应客户端的命令,重启崩溃或退出的子进程,记录子进程stdout和stderr输出,生成和处理子进程生命周期中的事件。可以在一个配置文件中配置相关参数,包括Supervisord自身的状态。在/etc/supervisord.d/xxxxx.ini 创建子进程,其管理的各个子进程的相关属性。配置文件一般位于/etc/supervisord.conf。
例如:子进程配置/etc/supervisord.d/ichiban.ini

Supervisor 的客户端称为supervisorctl,它提供了一个类shell的接口(即命令行)来使用supervisord服务端提供的功能。通过supervisorctl,用户可以连接到supervisord服务器进程,获得服务器进程控制的子进程的状态,启动和停止子进程,获得正在运行的进程列表。
客户端通过Unix域套接字或者TCP套接字与服务端进行通信,服务器端具有身份凭证认证机制,可以有效提升安全性。当客户端和服务器位于同一台机器上时,客户端与服务器共用同一个配置文件/etc/supervisord.conf,通过不同标签来区分两者的配置。
重启进程时可以运行:

鸿鹄收集来华为云的数据
问题来了。。。
Ichiban的代码我们写好了,功能实现了,解决了开发者使用云主机的问题,但是作为ichiban的管理者,我也碰到了问题,我该如何管理?我如何知道我每月消费了多少费用,以及详细的使用情况?
设想下随着公司同事越来越多,ichiban的使用量必然会增长,费用也会增长。老板问能不能每月或者一个季度对Ichiban做个预算,这时候没有数据的支撑,我们很难拿出数字来做下一次的预算。
这时鸿鹄的价值就凸显出来了,鸿鹄能够帮助我们通过日志文件,非常简单而又清晰地,统计出云主机的开机时间、云主机的数量、进而估算出费用。
Ichiban的日志是调用华为云的API生成的JSON格式的日志文件,然后通过fluentd发送到鸿鹄的平台。(也可以使用Vector作为数据传输工具)。本例中,log的数据类型为JSON,其实,大家可以根据自己的实际情况选择不同的数据类型。鸿鹄不挑数据类型,有什么数据,就接什么类型的数据,就Parse什么类型的数据。
鸿鹄端
加了台便宜的云主机,按照文档(https://yanhuang.yuque.com/books/share/b1b27937-e331-40fd-bce1-bd521af4e662/vvv9si)一顿操作,安装好了鸿鹄。那只蓝色鸿鹄的logo就出现了。
在鸿鹄中创建HEI(通过HTTP采集数据)

颁发Ichiban的API Token

Ichiban端
安装Fluentd

配置fluentd的监控数据

修改以下配置

可能需要配置fluentd service的root权限,视监控的文件权限而定

收到数据了,哟吼。。。

华为云使用状况的dashboard展示
通过简单的SQL query,我们就可以实时的统计出,Ichiban的使用情况。

我这里也节选了一些配置的使用情况

数据展示我看到了什么?
华为云使用情况。作为华为云的管理者,我能清晰地了解一段时间中,华为云Adhoc的需求有多少,比如用了多少台云主机,分别用了多少时间。
使用者。从统计上可以找到谁是重度使用者,从使用者中了解需求,从而优化。
费用统计。如上图,我们可以清楚地知道我们每个月华为云的费用组成。不过实话实说,通过临时创建机器这种策略,我们减少了很多不必要的费用。
写在最后
华为云的API和相关工具做的很好,功能也很快就能够实现。但是对于管理者,费用上的管理和运维工作也存在着挑战。不过有了鸿鹄,这一切就变的简单了很多,只要有足够的日志,加上简单的SQL语句,让管理者头疼的问题就迎刃而解。
另外通过实时数据的分析,也能快速找到一些问题,比如我们可以对云主机的开机时间加上告警,假设:张三的一个云主机开了很长一段时间,有可能项目上的需要,也有可能某某忘记关闭了。那通过策略,发出告警(Email或者Webook),对张三进行通知,减少不必要的费用。
我们还有很多东西要做
展望下,我们Ichiban的后续开发还会继续做,把Ichiban、华为云和我们的CICD串联在了一起,通过华为云的API创建出临时的git runner、test runner 等,再通过鸿鹄监控CI/CD,好处:
1、鸿鹄能够帮助troubleshooting CI/CD的问题。
2、将CI/CD的运行状况放在仪表盘中。
3、减少不必要的费用,比如,我们可能某个测试要跑8个小时,有可能在某一小时是Case就中断了,鸿鹄能够提醒我们,我们可以通过手动或者trigger 脚本,对已经没有工作任务的runner进行删除。
一旦数据接入到鸿鹄,数据可玩性的大门就打开了,只要通过简单SQL,就可以发现很多有趣的东西,甚至是你从来没想到过的东西,可能是一个强大功能的启发,也有可能是发现漏洞的检测器。几行SQL就可以把你的数据弄得明明白白。
enjoy 鸿鹄~
大数至简
参考
华为云API :
https://apiexplorer.developer.huaweicloud.com/apiexplorer/doc?product=ECS&api=NovaCreateServers
Supervisor的文档:
https://zhuanlan.zhihu.com/p/424346764
炎凰数据:
http://www.yanhuangdata.com/
相关文章:
鸿鹄协助管理华为云与炎凰Ichiban
炎凰对华为云的需求 在炎凰日常的开发中,对于服务器上的需求,我们基本都是采用云服务。目前我们主要选择的是华为云,华为云的云主机比较稳定,提供的云主机配置也比较多样,非常适合对于不同场景硬件配置的需求ÿ…...
Vite创建Vue+TS项目引入文件路径报错
使用vite搭建vue3脚手架的时候,发现main.ts中引入App.vue编辑器会报错,但是不影响代码运行。 报错信息:TS2307: Cannot find module ‘./App.vue’ or its corresponding type declarations. 翻译过来是找不到模块或者相关的声明类型&#…...
计算机里基本硬件的组成以及硬件协同
文章目录 冯诺依曼体系输入设备输出设备存储器运算器控制器协同工作的流程 冯诺依曼体系 世界上第一台通用计算机,ENIAC,于1946年诞生于美国一所大学。 ENIAC研发的前期,需要工作人员根据提前设计好的指令手动接线,以这种方式输入…...
2023软件设计师中级备考经验分享(文中有资料链接分享)
先摊结论吧,软考中级设计师备考只是备考半个月(期间还摆烂了几天),然而成绩如下: 我自己都没想到会这么好的成绩。。。 上午题:推荐把软考通APP里的历年真题刷3-4遍,直接刷真题,然后…...
Windows 10 中无法最大化任务栏中的程序
方法1:仅选择选项 PC 屏幕 如果您使用双显示器,有时这可能会发生在您的 1 台计算机已插入但您正在访问的应用程序正在另一台计算机上运行的情况下,因此您看不到任何选项。因此,请设置仅在主计算机上显示显示的 PC 屏幕选项。 第…...
【iOS】KVOKVC原理
1 KVO 键值监听 1.1 KVO简介 KVO的全称是Key-Value Observing,俗称"键值监听",可以用于监听摸个对象属性值得改变。 KVO一般通过以下三个步骤使用: // 1. 添加监听 [self.student1 addObserver:self forKeyPath:"age"…...
当机器人变硬核:探索深度学习中的时间序列预测
收藏自:Wed, 15 Sep 2021 10:32:56 UTC 摘要:时间序列预测是机器学习和深度学习领域的一个重要应用,它可以用于预测未来趋势、分析数据模式和做出决策。本文将介绍一些基本概念和常用方法,并结合具体的案例,展示如何使…...
C# Solidworks二次开发:自动创建虚拟零件及使用注意事项
今天要讲的是关于在solidworks中如何自动创建虚拟零件的功能,也就是solidworks中插入新零件这个功能。 实现这个功能需要使用的API如下所示: InsertNewVirtualPart(swFaceOrPlane1, out swcomp2); 其中这个方法中使…...
vim工具 windows系统使用
vim常用命令: 编辑–>输入: i: 在当前光标所在字符的前面,转为输入模式; 粘贴命令 p p: 如果删除或复制为整行内容,则粘贴至光标所在行的下方,如果复制或删除的内容为非整行,则粘贴至光标所…...
Tesseract开源的OCR工具及python pytesseract安装使用
一 、介绍 Tesseract是一款由Google赞助的开源OCR。 pytesseract是python包装器,它为可执行文件提供了pythonic API。 Tesseract 已经有 30 年历史,开始它是惠普实验室的一款专利软件,在2005年后由Google接手并进一步开发和完善。Tesseract支…...
【数理知识】自由度 degree of freedom 及自由度的计算方法
放在最前的一句话:自由度是一个存在于两个学科中的概念,一个是存在于统计学中的自由度,另一个是存在于物理学中的自由度。而我本人需要的是研究物理学中的自由度概念,同时本笔记全篇也是在了解物理学中的自由度。 文章目录 自由度…...
苍穹外卖day09——历史订单模块(用户端)+订单管理模块(管理端)
查询历史订单——需求分析与设计 产品原型 业务规则 分页查询历史订单 可以根据订单状态查询 展示订单数据时,需要展示的数据包括:下单时间、订单状态、订单金额、订单明细(商品名称、图片) 接口设计 查询历史订单——代码开…...
正则表达式 —— Grep
文本处理三剑客:Grep、Sed、Awk 这三个工具都是基于对文本的内容进行增删改查的操作,此篇着重介绍grep与正则表达式的应用,以及扩展正则表达式。 正则表达式 什么是正则表达式? 它是由一类特殊字符以及文本字符所编写的一种模式…...
STC12C5A系列单片机片内看门狗的应用
wdt.c #include "wdt.h"void wdt_init(void) {WDT_CONTR 0x24; // 0010 0100 - 1.1377s }void wdt_feed(void) {WDT_CONTR | 0x10; // 喂狗 }wdt.h #ifndef _WDT_H_ #define _WDT_H_#include "stc12c5a60s2.h"// 函数声明 extern void wdt_init(void); …...
C语言指针详解
目录 指针是什么? 指针和指针类型 指针-整数 指针的解引用 野指针 野指针成因 如何规避野指针 指针运算 指针- 整数 指针-指针 指针的关系运算 指针和数组 二级指针 指针数组 指针数组 模拟二维数组 指针是什么? 指针理解的2个要点: 1. 指针是内存中一个…...
RTPS规范v2.5(中文版)
实时发布订阅协议 DDS互操作性有线协议 (DDSI-RTPS) 技术规范 V2.5 (2022-04-01正式发布) https://www.omg.org/spec/DDSI-RTPS/2.5/PDF 目 录 1 范围 8 2 一致性 8 3 规范性参考文献 8 4 术语和定义 9 5 标识 …...
LeetCode102.Binary-Tree-Level-Order-Traversal<二叉树的层序遍历>
题目: 思路: 写过N叉树的层序遍历,(8条消息) LeetCode429.N-Ary-Tree-Level-Order-Traversal<N 叉树的层序遍历>_Eminste的博客-CSDN博客 使用栈保存每一层的结点。然后每次当前层结束。将这一层的值添加进去res中。…...
yolov8系列[五]-项目实战-yolov8模型无人机检测
yolov8系列[五]-项目实战-yolov8模型无人机检测 项目介绍项目展示功能简介代码结构如何启动 开发者模式1. 安装依赖环境2. 启动程序 源代码下载其他 项目介绍 无人机识别项目,无人机搭载nvidia jetson边缘计算板子,进行实时识别。使用yolov8算法,训练了识别无人机的…...
Redis 笔记,基本数据类型、持久化、主从、集群等等问题
标题 😀😀😀创作不易,各位看官点赞收藏. 文章目录 标题Redis 基础笔记1、安装及环境搭建2、Redis 数据类型2.1、String2.2、List2.3、Hash2.4、Set2.5、Zset2.6、BitMap2.7、HyperLogLog2.8、Geospatial2.9、Stream 3、Redis 持久…...
JDK,JRE,JVM三者的关系
JDK(全称 Java Development Kit),Java开发工具包,能独立创建、编译、运行程序。 JDK JRE java开发工具(javac.exe/java.exe/jar.exe) JRE(全称 Java Runtime Environment),能运行…...
基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真
目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销,平衡网络负载,延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...
【力扣数据库知识手册笔记】索引
索引 索引的优缺点 优点1. 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度(创建索引的主要原因)。3. 可以加速表和表之间的连接,实现数据的参考完整性。4. 可以在查询过程中,…...
java 实现excel文件转pdf | 无水印 | 无限制
文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...
Golang dig框架与GraphQL的完美结合
将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用,可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器,能够帮助开发者更好地管理复杂的依赖关系,而 GraphQL 则是一种用于 API 的查询语言,能够提…...
【Go】3、Go语言进阶与依赖管理
前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课,做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程,它的核心机制是 Goroutine 协程、Channel 通道,并基于CSP(Communicating Sequential Processes࿰…...
UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)
UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中,UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化…...
mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包
文章目录 现象:mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时,可能是因为以下几个原因:1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...
九天毕昇深度学习平台 | 如何安装库?
pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子: 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...
【7色560页】职场可视化逻辑图高级数据分析PPT模版
7种色调职场工作汇报PPT,橙蓝、黑红、红蓝、蓝橙灰、浅蓝、浅绿、深蓝七种色调模版 【7色560页】职场可视化逻辑图高级数据分析PPT模版:职场可视化逻辑图分析PPT模版https://pan.quark.cn/s/78aeabbd92d1...
安全突围:重塑内生安全体系:齐向东在2025年BCS大会的演讲
文章目录 前言第一部分:体系力量是突围之钥第一重困境是体系思想落地不畅。第二重困境是大小体系融合瓶颈。第三重困境是“小体系”运营梗阻。 第二部分:体系矛盾是突围之障一是数据孤岛的障碍。二是投入不足的障碍。三是新旧兼容难的障碍。 第三部分&am…...
