· 需求
· 網(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ù)
- 中國(guó)唯一!阿里云當(dāng)選UALink聯(lián)盟董事會(huì)成員,推動(dòng)制定AI新標(biāo)準(zhǔn)
- 阿里云輕量應(yīng)用服務(wù)器全新升級(jí),「通用型實(shí)例」峰值帶寬高達(dá)200Mbps
- ?新一代核心系統(tǒng)全面上線!中華財(cái)險(xiǎn)與阿里云達(dá)成數(shù)智化升級(jí)新合作
- 阿里云通過信通院首批企業(yè)用云治理能力成熟度評(píng)測(cè)
- 2025年云預(yù)測(cè):傳統(tǒng)漏洞、人工智能增長(zhǎng)和邊緣繁榮
- 云遣返:工作負(fù)載分配的關(guān)鍵戰(zhàn)略考慮因素
- 告別加班!華為云推薦數(shù)智員工“入職”會(huì)無憂
- 阿里云支持疊紙新游《無限暖暖》全球多平臺(tái)開服!
- Gartner:到2027年,90%的企業(yè)機(jī)構(gòu)將采用混合云
- Gartner:到2025年,全球公有云終端用戶支出將達(dá)到7230億美元
免責(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)鏈接。