<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ## 健康檢查(Terminus) Nestjs Terminus集成提供了可讀的/實時的健康檢查。在復雜的后臺設置中健康檢查是非常重要的。簡而言之,在web開發領域所說的健康檢查通常由一系列特定地址組成,例如,https://my-website.com/health/readiness 通過一個服務,或者一個你的基礎設施的一個部件(例如Kubernetes)來持續檢查這個地址。依賴于向這一地址發出的`GET`請求返回的HTTP狀態碼,該服務會在收到“不健康”響應時采取行動。由于你的服務中對“健康”和“不健康”的定義可能有所不同,Nestjs Teminus支持一系列健康指示。 作為示例,如果你的服務器使用 MongoDB來存儲數據,MongoDB是否正常運行就成了一個至關重要的信息。在這種情況下,你可以使用`MongooseHealthIndicator`。如果配置正常--按后續內容配置--你的健康檢查地址將根據MongoDB是否運行來返回健康或者不健康HTTP狀態碼。 ### 入門 要開始使用 `@nestjs/terminus` ,我們需要安裝所需的依賴項。 ```bash $ npm install --save @nestjs/terminus ``` ### 建立一個健康檢查 健康檢查表示健康指標的摘要。健康指示器執行服務檢查,無論是否處于健康狀態。 如果所有分配的健康指示符都已啟動并正在運行,則運行狀況檢查為正。由于許多應用程序需要類似的健康指標,因此 `@nestjs/terminus` 提供了一組預定義的健康指標,例如: - `DNSHealthIndicator` - `TypeOrmHealthIndicator` - `MongooseHealthIndicator` - `MicroserviceHealthIndicator` - `GRPCHealthIndicator` - `MemoryHealthIndicator` - `DiskHealthIndicator` 要開始我們第一個健康檢查,我們需要在`AppModule`引入`TerminusModule`。 > app.module.ts ```typescript import { Module } from '@nestjs/common'; import { TerminusModule } from '@nestjs/terminus'; @Module({ imports: [TerminusModule] }) export class AppModule { } ``` 我們的健康檢查可以使用控制器來執行,使用`Nestjs CLI`可以快速配置: ```typescript $ nest generate controller health ``` > 強烈建議在你的應用程序中使用關機鉤子。如果啟用,Terminus將使用其生命周期事件。在[這里](https://docs.nestjs.com/fundamentals/lifecycle-events#application-shutdown)閱讀更多關于關機鉤子的內容。 ### DNS 健康檢查 我們安裝了`@nestjs/terminus`后,導入`TerminusModule`并創建一個新的控制器,我們就準備好創建一個新的健康檢查了。 > health.controller.ts ```typescript @Controller('health') export class HealthController { constructor( private health: HealthCheckService, private dns: DNSHealthIndicator, ) {} @Get() @HealthCheck() check() { return this.health.check([ () => this.dns.pingCheck('nestjs-docs', 'https://docs.nestjs.com'), ]); } } ``` 我們的健康檢查現在將發送一個Get請求到`https://docs.nestjs.com`地址,如果我們從該地址得到一個健康響應,我們的路徑`http://localhost:3000/health`將在返回200狀態碼同時返回一個如下對象。 ```json { "status": "ok", "info": { "nestjs-docs": { "status": "up" } }, "error": {}, "details": { "nestjs-docs": { "status": "up" } } } ``` 該返回對象可以接口可以通過`@nestjs/terminus`包的`HealthCheckResult`接口來訪問。 名稱|內容|類型 --|--|-- status|如果任何健康檢查失敗了,狀態將是'error'。如果NestJS應用即將關閉,但仍然能接受HTTP請求,狀態檢查將會返回'shutting_down'狀態|'error'\|'ok'\|'shutting_down' info|對象包括每個狀態是`up`(或者說健康)的健康指示器的信息|`object` error|對象包括每個狀態是`down`(或者說不健康)的健康指示器的信息|`object` details|對象包括每個健康指示器的所有信息|`object` ### 自定義健康指標 在某些情況下,`@nestjs/terminus` 提供的預定義健康指標不會涵蓋您的所有健康檢查要求。 在這種情況下,您可以根據需要設置自定義運行狀況指示器。 讓我們開始創建一個代表我們自定義健康指標的服務。為了基本了解健康指標的結構,我們將創建一個示例 `DogHealthIndicator` 。如果每個 `Dog` 對象都具有 `goodboy` 類型,則此健康指示器應具有 `'up'` 狀態,否則將拋出錯誤,然后健康指示器將被視為 `'down'` 。 > dog.health.ts ```typescript import { Injectable } from '@nestjs/common'; import { HealthIndicator, HealthIndicatorResult, HealthCheckError } from '@nestjs/terminus'; export interface Dog { name: string; type: string; } @Injectable() export class DogHealthIndicator extends HealthIndicator { private dogs: Dog[] = [ { name: 'Fido', type: 'goodboy' }, { name: 'Rex', type: 'badboy' }, ]; async isHealthy(key: string): Promise<HealthIndicatorResult> { const badboys = this.dogs.filter(dog => dog.type === 'badboy'); const isHealthy = badboys.length === 0; const result = this.getStatus(key, isHealthy, { badboys: badboys.length }); if (isHealthy) { return result; } throw new HealthCheckError('Dogcheck failed', result); } } ``` 我們需要做的下一件事是將健康指標注冊為提供者。 > app.module.ts ```typescript import { Module } from '@nestjs/common'; import { TerminusModule } from '@nestjs/terminus'; import { DogHealthIndicator } from './dog.health'; @Module({ controllers: [HealthController], imports: [TerminusModule], providers: [DogHealthIndicator] }) export class AppModule { } ``` > 在應用程序中,`DogHealthIndicator` 應該在一個單獨的模塊中提供,例如 `DogModule` ,然后由 `AppModule` 導入。 最后需要做的是在所需的運行狀況檢查端點中添加現在可用的運行狀況指示器。 為此,我們返回到 `HealthController` 并將其實現到 `check` 函數中。 > health.controller.ts ```typescript import { HealthCheckService } from '@nestjs/terminus'; import { Injectable } from '@nestjs/common'; import { DogHealthIndicator } from './dog.health'; @Injectable() export class HealthController { constructor( private health: HealthCheckService, private dogHealthIndicator: DogHealthIndicator ) {} @Get() @HealthCheck() healthCheck() { return this.health.check([ async () => this.dogHealthIndicator.isHealthy('dog'), ]) } } ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看