炎凰数据赋能上海网程,实现华为云资源智慧管理

· 需求

· 网程云服务器平台的功能

· 云服务器平台的技术栈

· 炎凰数据平台收集华为云的数据

问题来了。。。

炎凰数据平台端

网程云服务器平台server端

· 华为云使用状况的dashboard展示

· 写在最后

· 参考

需求

随着业务的增加,我们对华为云创建云服务器的需求越来越多,之前是由专门的管理员统一来管理,可是一直为开发人员重复着创建、扩容、销毁、部署环境等工作,管理员不胜其烦。这时,我们有了想让开发人员能够自己创建云服务器的需求。后来我们发现华为云的API在功能上非常完整,而且华为云的API Explorer是个非常方便的调试工具,通过华为云提供的API,我们快速的开发了自己的云服务器管理平台,开发人员可以自己完成创建、销毁、扩容等操作,我们也根据赋予的权限,给开发人员不同的容量(云服务器个数容量、磁盘容量、使用时间的容量等)。

有了网程云服务器平台,我们管理员的工作简化了许多。而且开发人员,也节省了许多申请和审批云服务器的时间。但是,使用了一段时间后,发现我们缺少了一套统计和分析实际使用量的系统,后来我们了解到炎凰数据平台的分析能力之后,我们又开始整理日志数据,然后发送给炎凰数据平台。通过炎凰数据平台对数据的分析,我们清楚地了解实际用量和产生的费用。

网程云服务器平台的功能

以上就是我们的云服务器平台,通过华为云开放的API,我们可以实现:

· 创建/删除临时云服务器

· 临时云服务器的开机、关机、重启

· 延长临时云服务器的租期

· 增加磁盘

· 远程登录

云服务器平台的技术栈

我们是使用的华为云的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/wangcheng-web.ini

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

炎凰数据平台收集华为云的数据

问题来了。。。

网程云服务器平台的我们写好了,解决了开发者使用云服务器的问题,但是作为系统管理者,我也碰到了问题,我如何来管理?我如何知道我每月消费了多少费用?详细的使用情况?

设想下随着产品功能的增加,云服务器的使用量必然会增长,费用上也会增长。老板问能不能每月或者一个季度对云服务器做个预算?这时候没有数据的支撑,我们很难拿出准确的数字。

这时炎凰数据平台的价值就凸显出来了,炎凰数据平台能够帮助我们通过日志文件,非常简单而又清晰地,统计出云服务器的开机时间、云服务器的数量、进而可以估算出费用。

云服务器平台的日志,是调用华为云的API,生成的JSON格式的日志文件。然后通过fluentd发送到炎凰数据平台。(也可以使用Vector作为数据传输工具)。本例中,log的数据类型为JSON,其实,大家可以根据自己的实际情况选择不同的数据类型。炎凰数据平台不挑数据类型,有什么数据,就接什么类型的数据,就Parse什么类型的数据。

炎凰数据平台端

在炎凰数据平台中,创建好数据集之后,创建HEI,接收数据。(通过HTTP采集数据)

颁发云服务器平台的API Token

网程云服务器平台server端

安装Fluentd

curl -L https://toolbelt.treasuredata.com/sh/install-redhat-td-agent4.sh | sh

systemctl enable td-agent

systemctl start td-agent

配置fluentd的监控数据

vi /etc/td-agent/td-agent.conf

修改以下配置

<source>

tag wangcheng_log #tag name, will fill into below stanza name

@type tail

path /opt/wangcheng_log* #log files

read_from_head true

<parse>

@type none

</parse>

</source>

<filter wangcheng_log.**> #tag name

@type record_modifier

remove_keys message

<record>

_message ${record["message"]}

_datatype json #data type

_event_set wangcheng #add event set on honghu

_time 0

</record>

</filter>

<match wangcheng_log.**> #tag name

@type copy

<store>

@type stdout

</store>

<store>

@type forward

<server>

name yhp

host yhp.yanhuangdata.com # 炎凰数据平台的云服务器

port 9882 #HEI数据传输的端口

</server>

</store>

</match>

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

sed -i 's/User=td-agent/User=root/g' /etc/systemd/system/multi-user.target.wants/td-agent.service

sed -i 's/Group=td-agent/Group=root/g' /etc/systemd/system/multi-user.target.wants/td-agent.service

systemctl daemon-reload

systemctl restart td-agent

vi /etc/systemd/system/multi-user.target.wants/td-agent.service

[Service]

User=root

Group=root

然后通过网页访问炎凰数据平台,只要执行简单SQL就可以对数据进行查询

我们可以看到数据都已经发送过来了, Cheers

华为云使用状况的dashboard展示

通过简单的SQL query,我们就可以实时的统计出,云服务器的使用情况。

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

数据展示我看到了什么?

1.  华为云使用情况,作为华为云的管理者,我能清楚了解一段时间中,华为云按需创建的云服务器有多少,比如用了多少台云主机,都用了多少时间。

2.  使用者,从统计上可以找到谁是重度使用者,从使用者中了解需求,从而改进。

3.  费用统计,如上图我们可以清楚的知道我们每个月华为云的费用组成。不过,通过创建临时服务器这个策略,我们减少了不少的研发成本。

写在最后

华为云的API、开发工具、调试工具和文档都非常完整,而且API的功能也非常齐全。对于开发者,能够快速完成开发工作。不过对于管理和运维工作也存在着挑战,在使用炎凰数据平台之后,这一切就变的简单了很多,只要有足够的日志,加上简单的SQL语句,管理者头疼的问题就迎刃而解。另外通过实时数据的分析,能够实时的了解当前云服务器的使用情况。

现在正在做的事,我们打算把炎凰数据平台、华为云API和我们的CI/CD串联在了一起。当开发者完成当前代码,并提交代码后。网程云服务器平台,自动创建一台临时云服务器,临时云服务器安装并注册gitlab runner,自动拉取代码,部署环境并执行测试脚本。然后将测试结果发送到炎凰数据平台,炎凰数据平台会判断是否测试结果达成了期望,并通过邮件和Teams (Web Hook 的方式) 发送结果给开发人员。如果测试成功,网程云平台会自动销毁云服务器。如果测试失败,云服务器会暂时保留,留给开发人员调试代码,直到成功后销毁,形成了开发和测试的闭环。开发人员也不需要等待测试结果,成功与否都会发送邮件和消息通知,提高了开发人员的效率,此时开发人员可以创建新的分支,去为其他新功能做准备了。

对于我们公司的日常开发工作上,华为云和炎凰数据平台是两个大杀器,杀掉了过去反复创建、部署环境、销毁的时间,和管理员统计费用和查看使用情况的时间,在我们简化工作流程上起到了关键性的作用。

参考

华为云API

https://apiexplorer.developer.huaweicloud.com/apiexplorer/overview 

炎凰数据

https://www.yanhuangdata.com/ 

极客网企业会员

免责声明:本网站内容主要来自原创、合作伙伴供稿和第三方自媒体作者投稿,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所提供信息的准确性及可靠性,但不保证有关资料的准确性及可靠性,读者在使用前请进一步核实,并对任何自主决定的行为负责。本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任。任何单位或个人认为本网站中的网页或链接内容可能涉嫌侵犯其知识产权或存在不实内容时,应及时向本网站提出书面权利通知或不实情况说明,并提供身份证明、权属证明及详细侵权或不实情况证明。本网站在收到上述法律文件后,将会依法尽快联系相关文章源头核实,沟通删除相关内容或断开相关链接。