Tencent Server Web (TSW)은 문제 포지셔닝 효율을 향상시키려는 원래 의도를 갖춘 웹 프론트 엔드 개발자를위한 Node.js 인프라이며 염색 패킷 캡처 및 홀로그램 로깅을 제공합니다. TSW는 HTTP 및 HTTPS 프로토콜의 비즈니스 시나리오에 적합한 비즈니스의 운영 및 유지 보수 모니터링 기능에 중점을두고 있으며 기존 애플리케이션 (KOA 및 Express)과 완벽하게 통합 될 수 있습니다.
TSW 2.0은 1.0을 기반으로하며, 최신 디자인 모델로 보충되어 1.0에서 많은 드로스를 제거하며 컨테이너화 및 클라우드 네이티브에도 더 친숙합니다. 비 침습적 및 저렴한 액세스를 달성합니다.
0 침입 | ?홀로그램 로그 | ?패킷을 잡으라고 요청합니다 |
|---|---|---|
| 함수는 Hack Nodejs 기본 코드를 통해 구현됩니다. 원래 비즈니스 코드 0에 침입하십시오. | 요청 클러스터링에 따라 현미경 수준의 홀로그램 로그가 클러스터되어 개발자에게 완벽한 라이브 복원을 제공합니다. | 서버 측에서 외부로 전송 된 모든 요청의 전체 패키지 내용은 크롤링 될 수 있으며 배경과의 통신에 더 이상 액세스 할 수 없습니다. |
npm install --save @tswjs/tsw
// yarn add @tswjs/tsw 구성 파일은 TSW가 시작될 때 런타임에로드 된 구성 파일이며 주로 사용할 플러그인 목록을 선언합니다. 기본적으로 프로젝트의 루트 디렉토리에있는 tswconfig.js 파일이로드되고 구성 파일 경로는 시작 매개 변수 -c 또는 --config 로 수동으로 지정할 수 있습니다.
참고 : 2.0의 Open 플랫폼의 통합과 관련된 논리는 없지만 사용자가 주문시 사용할 수 있도록 플러그인으로 캡슐화됩니다. 자세한 내용은 플러그인 장을 참조하십시오.
구성 파일 예 :
module . exports = {
plugins : [
new MyPlugin ( { } )
]
}매개 변수 목록 :
| 이름 | 유형 | 기본 | 선택 과목 | 설명 |
|---|---|---|---|---|
| 플러그인 | 배열 <플러그인> | - | 예 | 플러그인 목록 |
| 클리닝 | 부울 | false | 예 | 기본 인쇄를 끄는지 여부 |
| 로그 레벨 | DEBUG/INFO/WARN/ERROR | DEBUG | 예 | 로그 레벨을 설정하십시오 |
| WinstonTransports | 배열 <전송 스트림> | - | 예 | 윈스턴 로그 채널 |
npx @tswjs/tsw ./index.js 참고 : node --inspect ./index.js 의 원래 CLI 매개 변수는 --inspect 와 같은 환경 변수 NODE_OPTIONS 로 변환해야합니다 NODE_OPTIONS="--inspect" npx @tswjs/tsw ./index.js
TS 사용 : 프로젝트에 TS- 노드 종속성 패키지가 있는지 확인하면 TS 파일을 다음과 같이 직접로드 할 수 있습니다.
NODE_OPTIONS= " --require=ts-node/register " npx @tswjs/tsw ./index.ts CLI 옵션을 얻으려면 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 execute) | 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 프로젝트 외부에서 유지됩니다. 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 웹의 오픈 소스 프로토콜은 MIT입니다. 자세한 내용은 라이센스를 참조하십시오.