Tencent Server Web(TSW)は、Webフロントエンド開発者向けのNode.jsインフラストラクチャであり、問題のポジショニング効率を改善する当初の意図であり、パケットキャプチャとホログラフィックロギングを染色することを提供します。 TSWは、HTTPおよびHTTPSプロトコルのビジネスシナリオに適したビジネスの運用およびメンテナンス監視機能に焦点を当てており、既存のアプリケーション(KOAおよびExpress)とシームレスに統合できます。
TSW 2.0は1.0に基づいており、最新のデザインモデルで補完され、1.0で多くのドロスを除去し、コンテナ化やクラウドネイティブにより優れています。非侵襲的で低コストのアクセスを実現します。
0侵入 | ?ホログラフィックログ | ?パケットをキャッチするリクエスト |
|---|---|---|
| 関数は、ハックnodejs基礎となるコードを介して実装されます。元のビジネスコードに侵入します0。 | リクエストクラスタリングに従ってクラスタリングされた顕微鏡レベルのホログラフィックログは、開発者に完全なライブ復元を提供します。 | サーバー側から外側に送信されたすべてのリクエストの完全なパッケージコンテンツは、rawっている可能性があり、バックグラウンドとの通信はもはやアクセスできなくなります。 |
npm install --save @tswjs/tsw
// yarn add @tswjs/tsw構成ファイルは、TSWの起動時にランタイムにロードされた構成ファイルであり、主に使用するプラグインのリストを宣言します。デフォルトでは、プロジェクトのルートディレクトリのtswconfig.jsファイルがロードされ、構成ファイルパスはパラメーター-cまたは--configを開始することで手動で指定できます。
注:2.0のオープンプラットフォームの統合に関連するロジックはありませんが、ユーザーがオンデマンドを使用できるようにプラグインにカプセル化されています。詳細については、プラグインの章を参照してください。
構成ファイルの例:
module . exports = {
plugins : [
new MyPlugin ( { } )
]
}パラメーターリスト:
| 名前 | タイプ | デフォルト | オプション | 説明 |
|---|---|---|---|---|
| プラグイン | 配列<プラグ> | - | はい | プラグインリスト |
| CleanLog | ブール | false | はい | デフォルトの印刷をオフにするかどうか |
| loglevel | DEBUG/INFO/WARN/ERROR | DEBUG | はい | ログレベルを設定します |
| WinstonTransports | 配列<TransportStream> | - | はい | ウィンストンログチャンネル |
npx @tswjs/tsw ./index.js注:ノードの元のCLIパラメーター--inspect node --inspect ./index.jsなど、 NODE_OPTIONS="--inspect" npx @tswjs/tsw ./index.jsなどの実行の環境変数NODE_OPTIONSに変換する必要があります。
TSを使用:プロジェクトにTS-Node依存関係パッケージがあることを確認する場合、TSファイルは次のように直接ロードできます。
NODE_OPTIONS= " --require=ts-node/register " npx @tswjs/tsw ./index.ts npx @tswjs/tsw --help 。
できるだけ早くプロジェクトを知るためのサンプルプロジェクトを提供します。
cd ~git clone https://github.com/Tencent/TSW.gitcd TSWcd examples/koayarnyarn serveまたはnpm run servecurl -v localhost:4443/path/to/foo -X POST -d "hello, server" TSWのコア実装方法は、パケットキャプチャメカニズムを実装するためのHack nodejs独自のhttp.requestおよびhttp.createServerです。サーバーがリクエストを処理する前後に、サーバーが他のサーバーなどにパケットを送信する前後に、対応するイベントがスローされ、処理をカスタマイズします。ユーザーがカスタマイズされた処理のこのようなグループを再利用および伝播するために、より便利にするために、それらを抽象化し、プラグインメカニズムを形成しました。
export . modules = class MyPlugin ( ) {
constructor ( ) {
this . name = "MyPlugin"
}
async init ( eventBus , config ) {
eventBus . on ( "RESPONSE_CLOSE" , ( payload ) => {
console . log ( payload ) ;
} )
}
} initメソッドが必要です。この方法は、同期または非同期のいずれかのプラグインロードの開始時に呼び出されます。
eventBus eventBus new EventEmitter()を介して取得されます。 TSWコアは、さまざまな重要な瞬間に上記のイベントをトリガーします。
| 鍵 | 意味(トリガータイミング) | ペイロード |
|---|---|---|
DNS_LOOKUP_SUCCESS | 各DNSクエリが成功した後にトリガーされます | string | dns.LookupAddress[] |
DNS_LOOKUP_ERROR | 各DNSクエリの障害後にトリガーされます | NodeJS.ErrorException |
RESPONSE_START | サーバーが応答の返品を開始するたびにトリガーされます( writeHeadを実行) | ResponseEventPayload |
RESPONSE_FINISH | 応答の最後にトリガーされた( res.on("finish") ) | ResponseEventPayload |
RESPONSE_CLOSE | 基礎となるリンクが閉じられたときにトリガーされます( res.on("close") ) | ResponseEventPayload |
REQUEST_START | サーバーが新しいリクエストを受信するたびにトリガーされました | RequestEventPayload |
デフォルトでは、TSWはすべてのログとパケットキャプチャコンテンツをクロールし、プラグインの消費のためにイベントバスに送信します。したがって、ログとパケットキャプチャコンテンツの実装では、一般に、ユーザーはプラグインを作成して自分でストレージを提供する必要があります。
したがって、TSWは公共サービスプラットフォームhttps://tswjs.orgを公式に提供し、ユーザーが低コストでより速く、より便利なレベルでTSWを使用できるようにします。詳細については、オープンプラットフォームの使用ガイドラインを参照してください。
TSW 2.0は、コンテナ化とクラウドネイティブ性に直面して設計されているため、組み込みのクラスター関連機能はありません。コンテナの健康チェックを直接使用して、サービスのロスレス再起動と障害の再起動メカニズムを完了することをお勧めします。コンテナ化スキームが使用されないシナリオの場合、PM2同様のツールを使用してマルチプロセスモードを実装することをお勧めします。
// ecosystem.config.json
{
"apps" : [
{
"name" : "app-name" ,
"script" : "built/index.js" ,
"interpreter" : "node" ,
"interpreter_args" : "./node_modules/@tswjs/tsw/dist/cli.js" ,
// other options
}
]
} // package.json
{
...
"scripts" : {
"start" : "pm2 start ecosystem.config.json"
} ,
...
} winston 、普遍的で軽量のログパッケージです。 winston複数のログチャネルをサポートし、ログの優先順位を個別に定義できます。 3つの組み込みログ送信チャネルConsole 、 File 、およびHTTPに加えて、一部の送信モジュールもウィンストンプロジェクトの外で維持されています。 winston公式ドキュメントをご覧ください。
TSW 2.0は、 winston送信チャネルを使用してログ情報をサポートしています。ユーザーはwinston.transportsインスタンスを構成ファイルに追加でき、ログは対応する構成に分類されます。
winstonを使用して、 errorレベル以下のログ情報を記録し、対応するファイルにdebugレベルを記録します。現在のconfigファイルは次のように構成されています。
module . exports = {
winstonTransports : [
new winston . transports . File ( { filename : 'error.log' , level : 'error' } ) ,
new winston . transports . File ( { filename : 'debug.log' , level : 'debug' } )
]
}ロギング




























Tencent Server WebのオープンソースプロトコルはMITです。詳細については、ライセンスを参照してください。