alinode 新手村生存指南

原文博客: http://www.52cik.com/2018/10/...

alinode 是阿里雲產品 Node.js 性能平臺 的前身。
之前是收費項目,2018年初集成到阿里雲後就徹底免費了,我也是第一時間接入測試並上線使用。
在羣裏安利了很多小夥伴,但真正使用的不是不少,由於大部分都不知道 node 是怎麼跑起來的。
說多了都是淚,因此打算寫個簡單教程,讓小白也能夠分分鐘上手 alinode 這種神兵利器。html

基礎知識

先來了解下 alinode 是個啥東西吧,這裏我找了些資料。前端

有樸靈大大在 阿里D2前端技術論壇——2015融合 上的分享 alinode與Node應用性能管理(1)alinode與Node應用性能管理(2)node

還有 Node.js 性能平臺官方文檔 以及 雲棲社區 Node.js 性能平臺官方博客git

好了,文檔比較多,若是你懶的看,那我簡單一句話幫你歸納下。
alinode 是樸靈大大和他的小夥伴修改了 node 源碼,能夠將 cpu、內存、GC 等數據導出的 node 版本。
目前沒有開源,不過他們準備儘快開源。github

因爲沒有開源,因此一些小夥伴不放心,生怕有後門,泄露公司機密。
其實徹底不必擔憂,這種事情簡單抓包就能夠看出有沒有後門了。
並且我也有幸在機緣巧合下看到了 alindoe 源碼,對比了官方源碼後能夠很負責任的告訴你徹底沒有後門。web

如何使用

若是你會在線上安裝 node 而且啓動你的應用,那麼你就會使用。
原理是同樣的,剩下的,無論你怎麼啓動項目,直接啓動,用 pm2 或者其餘方法,都無所謂。docker

安裝使用 (tnvm 版本)

官網推薦使用 tnvm 安裝,就是 nvm 的淘寶鏡像版本,而且加入了 alinode 而已。npm

# 安裝版本管理工具 tnvm,安裝過程出錯參考:https://github.com/aliyun-node/tnvm
wget -O- https://raw.githubusercontent.com/aliyun-node/tnvm/master/install.sh | bash

source ~/.bashrc # 加載配置,使當前環境當即生效

tnvm ls-remote alinode # 查看須要的版本
tnvm install alinode-v3.12.0 # 安裝須要的版本
tnvm use alinode-v3.12.0 # 使用須要的版本

npm install @alicloud/agenthub -g # 安裝 agenthub

安裝好 alinode 後,還安裝了一個 @alicloud/agenthub 模塊。
官網介紹:agenthub 是由 Node.js 性能平臺提供的 agent 命令程序,用於協助您的 Node 應用性能數據上報和問題診斷。json

簡單說就是將 alinode 生成的 cpu 內存 GC 等數據上傳到 Node.js 性能平臺 上,這樣咱們就能夠在平臺上看到監控數據了。bash

好了到此安裝完成,而後就是建立應用和使用了。

安裝使用 (docker 版本)

官網提供了 docker 鏡像 docker pull registry.cn-hangzhou.aliyuncs.com/aliyun-node/alinode
但也一直被吐槽太TM大了,都是些啥啊,咋就這麼大,,其實官網 node 鏡像也同樣大。

但在9月份的時候,他們提供了 alpine 版本,截止目前才 79.5MB 大小,很是接近官網 node 的 alpine 版本鏡像。
快來試試吧 docker pull registry.cn-hangzhou.aliyuncs.com/aliyun-node/alinode:3-alpine

因爲沒有提供 Dockerfile,很多小夥伴也是心慌慌,簡直就是個黑盒,因此也是一直觀望狀態。
因而我花了一點時間分析了官網鏡像,並提取了 Dockerfile 模板,方便你們使用,並且能夠爲所欲爲的魔改。

模板在這 alinode Dockerfile 官網鏡像模板,裏面有詳細分析原理和提取 Dockerfile 的文章,想知道原理的能夠看看。
好了,如今 Dockerfile 也有了,沒有理由不用了吧。

那麼開始使用 docker alindoe,因爲你們使用 docker 的姿式不一樣,因此仍是參考官網文檔
若是你使用 pm2 的,也能夠試試我魔改過的版本 docker-alinode

建立應用,監控 node 項目

上面簡單說了 tnvm 和 docker 的安裝使用方法,但還沒說具體怎麼使用。
接下來正式開始接入 alinode 平臺了。

建立應用

打開 https://node.console.aliyun.com,沒有帳號的,去註冊個帳號,反正免費的。

建立應用
建立應用。

建立成功
複製 App ID 和 App Secret 的值。

在你的項目根目錄建立一個配置,配置名隨便,我這裏用 alinode.config.json 演示,寫入以下配置。

{
  "appid": "76675",
  "secret": "0342cccd7ed8fc29a0f97e59f871d020533385f3"
}

ps: 詳細配置,請參閱 @alicloud/agenthub 模塊

我這裏的目錄結構以下:

├── node_modules
├── alinode.config.json
├── app.js
├── package.json
└── yarn.lock

tnvm 版本使用

先執行 agenthub start alinode.config.json 命令,開啓上報工具。
而後啓動你的應用:

ENABLE_NODE_LOG=YES node app.js # 直接啓動
# 或者
ENABLE_NODE_LOG=YES pm2 start pm2.js # PM2 啓動
# 或者其餘任何方式,但要加上 ENABLE_NODE_LOG=YES 開啓日誌。

我以前嘗試將 ENABLE_NODE_LOG 寫到 pm2 配置中,結果無效,而後也沒去研究爲何,若是有大佬知道緣由還請告知。

而後等待1分鐘後,便可在平臺上看到監控數據了。
agenthub 默認上報時間是能夠改的,本身根據官網文檔修改吧。

docekr 版本使用

docker 版本能夠省略建立 alinode.config.json 配置文件,直接參數配置。

官方鏡像

docker run -d \
  -p 8000:8000 \
  -w /app \
  -v $PWD:/app \
  -e "APP_ID=76675" \
  -e "APP_SECRET=0342cccd7ed8fc29a0f97e59f871d020533385f3" \
  -h my-alinode \
  --name my-alinode \
  registry.cn-hangzhou.aliyuncs.com/aliyun-node/alinode:3-alpine \
  node app.js

使用我封裝的鏡像,內置 pm2

docker run -d \
  -p 8000:8000 \
  -v $PWD:/app \
  -e "APP_ID=76675" \
  -e "APP_SECRET=0342cccd7ed8fc29a0f97e59f871d020533385f3" \
  -h my-alinode \
  --name my-alinode \
  toomee/alinode:3-alpine \
  pm2-runtime start app.js

ps: docker 中使用 pm2-runtime 而不是 pm2 命令。
ps: 若是你的 pm2 配置是 ecosystem.config.js,那麼能夠省略最後一行。

查看監控數據

啓動後等待1分鐘,便可看到監控數據。

控制面板
如圖,已經有數據了。

咱們壓測一下,而後看看數據。

壓測
點擊實例面板,能夠看到進程基本信息,這裏只有一個進程,若是你開了多進程,都會在這裏顯示的。
下面的 進程指標分佈中 好像顯示全部 node 進程,能夠看到他把 agenthub 進程也顯示出來了。

系統監控數據
因爲測試項目剛啓動沒啥數據,因此用咱們線上項目截了張圖。

能夠看到 內存 cpu 會有兩條曲線,一條是系統佔用量,一條是 node 佔用量。

還有 異常日誌、Trace、模塊依賴 你會發現沒數據,根據 agenthub 官網配置配置好後,便可看到數據。
慢 HTTP 日誌 是訪問你要用和你請求後臺接口的那些較慢的請求記錄。

有了這些數據,就能夠幫助咱們優化應用以及快速定位到問題了。

抓取性能數據

在 進程數據 頁面右下角有個 抓取性能數據 區域,這些就是幫助咱們排查 cpu 莫名飆高,內存泄漏 等問題的工具。
這裏就不介紹了,等有空的時候單獨寫幾篇,或者看 官方博客 上的例子。

小結

至此 alinode 基本使用算是差很少了。

哪怕高級功能暫時不會用,那用 alinode 來當個監控也不錯啊,在報警面板中配置報警規則,好比 cpu 飈高,load 飈高後報警,支持釘釘機器人推送,很是方便。

此次介紹了 alinode 的 tnvm 和 docker 版本的使用方法。
目的是安利更多的人來使用,爲了大家的項目健康,也爲了 alinode 和 node 社區的發展。
若是有一天 node 官網內置了 alinode 的功能,並提供的 web監控平臺 源碼,那就能夠搭建屬於本身的監控環境了。

等到 alindoe 開源後,這一天應該不會遠的。

相關文章
相關標籤/搜索