炎凰數(shù)據(jù)賦能上海網(wǎng)程,實(shí)現(xiàn)華為云資源智慧管理

· 需求

· 網(wǎng)程云服務(wù)器平臺(tái)的功能

· 云服務(wù)器平臺(tái)的技術(shù)棧

· 炎凰數(shù)據(jù)平臺(tái)收集華為云的數(shù)據(jù)

問題來了。。。

炎凰數(shù)據(jù)平臺(tái)端

網(wǎng)程云服務(wù)器平臺(tái)server端

· 華為云使用狀況的dashboard展示

· 寫在最后

· 參考

需求

隨著業(yè)務(wù)的增加,我們對(duì)華為云創(chuàng)建云服務(wù)器的需求越來越多,之前是由專門的管理員統(tǒng)一來管理,可是一直為開發(fā)人員重復(fù)著創(chuàng)建、擴(kuò)容、銷毀、部署環(huán)境等工作,管理員不勝其煩。這時(shí),我們有了想讓開發(fā)人員能夠自己創(chuàng)建云服務(wù)器的需求。后來我們發(fā)現(xiàn)華為云的API在功能上非常完整,而且華為云的API Explorer是個(gè)非常方便的調(diào)試工具,通過華為云提供的API,我們快速的開發(fā)了自己的云服務(wù)器管理平臺(tái),開發(fā)人員可以自己完成創(chuàng)建、銷毀、擴(kuò)容等操作,我們也根據(jù)賦予的權(quán)限,給開發(fā)人員不同的容量(云服務(wù)器個(gè)數(shù)容量、磁盤容量、使用時(shí)間的容量等)。

有了網(wǎng)程云服務(wù)器平臺(tái),我們管理員的工作簡(jiǎn)化了許多。而且開發(fā)人員,也節(jié)省了許多申請(qǐng)和審批云服務(wù)器的時(shí)間。但是,使用了一段時(shí)間后,發(fā)現(xiàn)我們?nèi)鄙倭艘惶捉y(tǒng)計(jì)和分析實(shí)際使用量的系統(tǒng),后來我們了解到炎凰數(shù)據(jù)平臺(tái)的分析能力之后,我們又開始整理日志數(shù)據(jù),然后發(fā)送給炎凰數(shù)據(jù)平臺(tái)。通過炎凰數(shù)據(jù)平臺(tái)對(duì)數(shù)據(jù)的分析,我們清楚地了解實(shí)際用量和產(chǎn)生的費(fèi)用。

網(wǎng)程云服務(wù)器平臺(tái)的功能

以上就是我們的云服務(wù)器平臺(tái),通過華為云開放的API,我們可以實(shí)現(xiàn):

· 創(chuàng)建/刪除臨時(shí)云服務(wù)器

· 臨時(shí)云服務(wù)器的開機(jī)、關(guān)機(jī)、重啟

· 延長(zhǎng)臨時(shí)云服務(wù)器的租期

· 增加磁盤

· 遠(yuǎn)程登錄

云服務(wù)器平臺(tái)的技術(shù)棧

我們是使用的華為云的Python SDK,這里不得不再次稱贊下華為云的API Explorer,是個(gè)能夠提供快速開發(fā)的工具,這里能夠根據(jù)你鍵入的值自動(dòng)生成代碼。

之后也可以使用華為云提供的SDK代碼示例調(diào)試中調(diào)試代碼,而且是我們都熟悉的VS Code的風(fēng)格。截個(gè)圖,自己體會(huì),常使用VS Code開發(fā)的朋友是不是看著很熟悉。

因?yàn)槲覀冞x擇使用Python作為開發(fā)語言的緣故,就使用了 Flask + Gunicorn + Supervisor 來托管Web服務(wù)。

Flask 因?yàn)楸旧砭褪荘ython編寫,所以對(duì)Python的契合度就很高,而且是一個(gè)輕量級(jí)的Web應(yīng)用框架。

Gunicorn是作為Flask的WSGI HTTP服務(wù)器。它所在的位置通常是在反向代理(如 Nginx)或者負(fù)載均衡(如 AWS ELB)和一個(gè)web應(yīng)用(比如 Django 或者 Flask)之間。

這里只要把Flask 的5000端口托管起來即可,配置如下:

Supervisor的服務(wù)進(jìn)程為supervisord,主要負(fù)責(zé)在啟動(dòng)自身時(shí)啟動(dòng)管理的子進(jìn)程,響應(yīng)客戶端的命令,重啟崩潰或退出的子進(jìn)程,記錄子進(jìn)程stdout和stderr輸出,生成和處理子進(jìn)程生命周期中的事件??梢栽谝粋€(gè)配置文件中配置相關(guān)參數(shù),包括Supervisord自身的狀態(tài)。在
/etc/supervisord.d/xxxxx.ini 創(chuàng)建子進(jìn)程,其管理的各個(gè)子進(jìn)程的相關(guān)屬性。配置文件一般位于/etc/supervisord.conf。

例如:子進(jìn)程配置
/etc/supervisord.d/wangcheng-web.ini

Supervisor的客戶端稱為supervisorctl,它提供了一個(gè)類shell的接口(即命令行)來使用supervisord服務(wù)端提供的功能。通過supervisorctl,用戶可以連接到supervisord服務(wù)器進(jìn)程,獲得服務(wù)器進(jìn)程控制的子進(jìn)程的狀態(tài),啟動(dòng)和停止子進(jìn)程,獲得正在運(yùn)行的進(jìn)程列表。客戶端通過Unix域套接字或者TCP套接字與服務(wù)端進(jìn)行通信,服務(wù)器端具有身份憑證認(rèn)證機(jī)制,可以有效提升安全性。當(dāng)客戶端和服務(wù)器位于同一臺(tái)機(jī)器上時(shí),客戶端與服務(wù)器共用同一個(gè)配置文件/etc/supervisord.conf,通過不同標(biāo)簽來區(qū)分兩者的配置。

炎凰數(shù)據(jù)平臺(tái)收集華為云的數(shù)據(jù)

問題來了。。。

網(wǎng)程云服務(wù)器平臺(tái)的我們寫好了,解決了開發(fā)者使用云服務(wù)器的問題,但是作為系統(tǒng)管理者,我也碰到了問題,我如何來管理?我如何知道我每月消費(fèi)了多少費(fèi)用?詳細(xì)的使用情況?

設(shè)想下隨著產(chǎn)品功能的增加,云服務(wù)器的使用量必然會(huì)增長(zhǎng),費(fèi)用上也會(huì)增長(zhǎng)。老板問能不能每月或者一個(gè)季度對(duì)云服務(wù)器做個(gè)預(yù)算?這時(shí)候沒有數(shù)據(jù)的支撐,我們很難拿出準(zhǔn)確的數(shù)字。

這時(shí)炎凰數(shù)據(jù)平臺(tái)的價(jià)值就凸顯出來了,炎凰數(shù)據(jù)平臺(tái)能夠幫助我們通過日志文件,非常簡(jiǎn)單而又清晰地,統(tǒng)計(jì)出云服務(wù)器的開機(jī)時(shí)間、云服務(wù)器的數(shù)量、進(jìn)而可以估算出費(fèi)用。

云服務(wù)器平臺(tái)的日志,是調(diào)用華為云的API,生成的JSON格式的日志文件。然后通過fluentd發(fā)送到炎凰數(shù)據(jù)平臺(tái)。(也可以使用Vector作為數(shù)據(jù)傳輸工具)。本例中,log的數(shù)據(jù)類型為JSON,其實(shí),大家可以根據(jù)自己的實(shí)際情況選擇不同的數(shù)據(jù)類型。炎凰數(shù)據(jù)平臺(tái)不挑數(shù)據(jù)類型,有什么數(shù)據(jù),就接什么類型的數(shù)據(jù),就Parse什么類型的數(shù)據(jù)。

炎凰數(shù)據(jù)平臺(tái)端

在炎凰數(shù)據(jù)平臺(tái)中,創(chuàng)建好數(shù)據(jù)集之后,創(chuàng)建HEI,接收數(shù)據(jù)。(通過HTTP采集數(shù)據(jù))

頒發(fā)云服務(wù)器平臺(tái)的API Token

網(wǎng)程云服務(wù)器平臺(tái)server端

安裝Fluentd

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

systemctl enable td-agent

systemctl start td-agent

配置fluentd的監(jiān)控?cái)?shù)據(jù)

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 # 炎凰數(shù)據(jù)平臺(tái)的云服務(wù)器

port 9882 #HEI數(shù)據(jù)傳輸?shù)亩丝?/p>

</server>

</store>

</match>

可能需要配置fluentd service的root權(quán)限,視監(jiān)控的文件權(quán)限而定。

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

然后通過網(wǎng)頁訪問炎凰數(shù)據(jù)平臺(tái),只要執(zhí)行簡(jiǎn)單SQL就可以對(duì)數(shù)據(jù)進(jìn)行查詢

我們可以看到數(shù)據(jù)都已經(jīng)發(fā)送過來了, Cheers

華為云使用狀況的dashboard展示

通過簡(jiǎn)單的SQL query,我們就可以實(shí)時(shí)的統(tǒng)計(jì)出,云服務(wù)器的使用情況。

我這里也節(jié)選了一些配置的使用情況

數(shù)據(jù)展示我看到了什么?

1.  華為云使用情況,作為華為云的管理者,我能清楚了解一段時(shí)間中,華為云按需創(chuàng)建的云服務(wù)器有多少,比如用了多少臺(tái)云主機(jī),都用了多少時(shí)間。

2.  使用者,從統(tǒng)計(jì)上可以找到誰是重度使用者,從使用者中了解需求,從而改進(jìn)。

3.  費(fèi)用統(tǒng)計(jì),如上圖我們可以清楚的知道我們每個(gè)月華為云的費(fèi)用組成。不過,通過創(chuàng)建臨時(shí)服務(wù)器這個(gè)策略,我們減少了不少的研發(fā)成本。

寫在最后

華為云的API、開發(fā)工具、調(diào)試工具和文檔都非常完整,而且API的功能也非常齊全。對(duì)于開發(fā)者,能夠快速完成開發(fā)工作。不過對(duì)于管理和運(yùn)維工作也存在著挑戰(zhàn),在使用炎凰數(shù)據(jù)平臺(tái)之后,這一切就變的簡(jiǎn)單了很多,只要有足夠的日志,加上簡(jiǎn)單的SQL語句,管理者頭疼的問題就迎刃而解。另外通過實(shí)時(shí)數(shù)據(jù)的分析,能夠?qū)崟r(shí)的了解當(dāng)前云服務(wù)器的使用情況。

現(xiàn)在正在做的事,我們打算把炎凰數(shù)據(jù)平臺(tái)、華為云API和我們的CI/CD串聯(lián)在了一起。當(dāng)開發(fā)者完成當(dāng)前代碼,并提交代碼后。網(wǎng)程云服務(wù)器平臺(tái),自動(dòng)創(chuàng)建一臺(tái)臨時(shí)云服務(wù)器,臨時(shí)云服務(wù)器安裝并注冊(cè)gitlab runner,自動(dòng)拉取代碼,部署環(huán)境并執(zhí)行測(cè)試腳本。然后將測(cè)試結(jié)果發(fā)送到炎凰數(shù)據(jù)平臺(tái),炎凰數(shù)據(jù)平臺(tái)會(huì)判斷是否測(cè)試結(jié)果達(dá)成了期望,并通過郵件和Teams (Web Hook 的方式) 發(fā)送結(jié)果給開發(fā)人員。如果測(cè)試成功,網(wǎng)程云平臺(tái)會(huì)自動(dòng)銷毀云服務(wù)器。如果測(cè)試失敗,云服務(wù)器會(huì)暫時(shí)保留,留給開發(fā)人員調(diào)試代碼,直到成功后銷毀,形成了開發(fā)和測(cè)試的閉環(huán)。開發(fā)人員也不需要等待測(cè)試結(jié)果,成功與否都會(huì)發(fā)送郵件和消息通知,提高了開發(fā)人員的效率,此時(shí)開發(fā)人員可以創(chuàng)建新的分支,去為其他新功能做準(zhǔn)備了。

對(duì)于我們公司的日常開發(fā)工作上,華為云和炎凰數(shù)據(jù)平臺(tái)是兩個(gè)大殺器,殺掉了過去反復(fù)創(chuàng)建、部署環(huán)境、銷毀的時(shí)間,和管理員統(tǒng)計(jì)費(fèi)用和查看使用情況的時(shí)間,在我們簡(jiǎn)化工作流程上起到了關(guān)鍵性的作用。

參考

華為云API

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

炎凰數(shù)據(jù)

https://www.yanhuangdata.com/ 

免責(zé)聲明:本網(wǎng)站內(nèi)容主要來自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準(zhǔn)確性及可靠性,但不保證有關(guān)資料的準(zhǔn)確性及可靠性,讀者在使用前請(qǐng)進(jìn)一步核實(shí),并對(duì)任何自主決定的行為負(fù)責(zé)。本網(wǎng)站對(duì)有關(guān)資料所引致的錯(cuò)誤、不確或遺漏,概不負(fù)任何法律責(zé)任。任何單位或個(gè)人認(rèn)為本網(wǎng)站中的網(wǎng)頁或鏈接內(nèi)容可能涉嫌侵犯其知識(shí)產(chǎn)權(quán)或存在不實(shí)內(nèi)容時(shí),應(yīng)及時(shí)向本網(wǎng)站提出書面權(quán)利通知或不實(shí)情況說明,并提供身份證明、權(quán)屬證明及詳細(xì)侵權(quán)或不實(shí)情況證明。本網(wǎng)站在收到上述法律文件后,將會(huì)依法盡快聯(lián)系相關(guān)文章源頭核實(shí),溝通刪除相關(guān)內(nèi)容或斷開相關(guān)鏈接。

2023-03-15
炎凰數(shù)據(jù)賦能上海網(wǎng)程,實(shí)現(xiàn)華為云資源智慧管理
· 需求·網(wǎng)程云服務(wù)器平臺(tái)的功能·云服務(wù)器平臺(tái)的技術(shù)棧·炎凰數(shù)據(jù)平臺(tái)收集華為云的數(shù)據(jù)問題來了。。。炎凰數(shù)據(jù)平臺(tái)端網(wǎng)程云服務(wù)器平臺(tái)server端·華為云使用狀況的dashboard展示·寫在最后·參考需求隨著業(yè)務(wù)的增加,我們對(duì)華為云創(chuàng)建云服務(wù)器的需求越來越多,之前是由專門的管理員...

長(zhǎng)按掃碼 閱讀全文