全局配置

Pandora.js 设计了一套配置文件,希望能和应用的配置进行隔离,毕竟 Pandora.js 可能会在全局场景下应用,导致不一样的情况发生。

Pandora.js 设计了一套简单有效的配置覆盖机制,用户可以通过配置文件的形式,对默认的行为做一些修改。

我们通过 PANDORA_CONFIG 这个环境变量来注入配置包,这个配置包可以是一个文件,如果内容比较多,也可以是一个 npm 包,能直接 require 即可。

  1. PANDORA_CONFIG=pandora-ali pandora start .
  2. PANDORA_CONFIG=./index.js pandora start .

文件的内容只需要写覆盖的部分

通过命令行加载多配置

本质上,配置的覆盖就只是配置文件内容的覆盖,所以只需要做好分割就好。

注意:Pandora.js 使用 : 作为分隔符来分割多个路径。

  1. $ export PANDORA_CONFIG=pandora-ali:./index.js
  2. $ pandora start

默认的全局配置

该文件维护在 default.ts全局配置 - 图1.

Pandora.js 提供了一组默认的配置来保证基础脚本的运行,一般指定了几项标准的内容:

在这些key的基础上,进行覆盖,增加操作,默认配置如下,可能有变化,具体见代码详情。

下文中所有的自由变量(即没有声明来源的量,比如 DefaultEnvironment),全部可以通过 require('dorapan')require('pandora') 获得。

  1. export default {
  2. // 配置环境实现类
  3. environment: DefaultEnvironment,
  4. actuator: {
  5. // RESTful 接口进行配置
  6. http: {
  7. enabled: true,
  8. port: 7002, // 默认监听在 7002 端口
  9. },
  10. // 配置 EndPoints
  11. endPoint: {
  12. // 错误采集的 EndPoint
  13. error: {
  14. enabled: true,
  15. target: ErrorEndPoint,
  16. resource: ErrorResource,
  17. initConfig: {
  18. // 错误缓存大小,保留最近多少条错误
  19. maxErrorCount: 100
  20. }
  21. },
  22. // 健康检查的 EndPoint
  23. health: {
  24. enabled: true,
  25. target: HealthEndPoint,
  26. resource: HealthResource,
  27. initConfig: {
  28. // HTTP 检查
  29. port: {
  30. enabled: true,
  31. checkUrl: `http://127.1:6001`
  32. },
  33. // 磁盘检查
  34. disk_space: {
  35. enabled: true,
  36. rate: 80,
  37. }
  38. }
  39. },
  40. // 应用信息的 EndPoint
  41. info: {
  42. // 应用信息
  43. enabled: true,
  44. target: InfoEndPoint,
  45. resource: InfoResource,
  46. },
  47. // 进程信息的 EndPoint
  48. process: {
  49. // 进程信息
  50. enabled: true,
  51. target: ProcessEndPoint,
  52. resource: ProcessResource,
  53. },
  54. // 自定义 Metrics 的 EndPoint
  55. metrics: {
  56. enabled: true,
  57. target: MetricsEndPoint,
  58. resource: MetricsResource,
  59. initConfig: {
  60. collector: NormalMetricsCollector
  61. }
  62. },
  63. // 链路追踪的 EndPoint
  64. trace: {
  65. enabled: true,
  66. target: TraceEndPoint,
  67. resource: TraceResource,
  68. initConfig: {
  69. // 缓存最近 1000 条链路
  70. cacheSize: 1000,
  71. // 采样率
  72. rate: process.env.NODE_ENV !== 'production' ? 100 : 10,
  73. // 优先级高的链路是否跳出采样率限制,比如错误的链路
  74. priority: true
  75. }
  76. }
  77. },
  78. },
  79. // 数据上报 Reporter 的配置
  80. reporter: {
  81. file: {
  82. enabled: true,
  83. // 默认实现把 Metrics 日志写到 ~/logs/pandorajs/metrics
  84. target: FileMetricsManagerReporter,
  85. interval: 5
  86. }
  87. },
  88. // 应用日志的配置
  89. logger: {
  90. // 日志目录
  91. logsDir: join(homedir(), 'logs'),
  92. // 每个应用的日志配置,基本上就是 Stdout
  93. appLogger: {
  94. // 默认不输出到 Daemon 的 Stdout,请务必不要改变这一配置
  95. stdoutLevel: 'NONE',
  96. // 默认记录 Info 信息,比如应用启动停止,建议保持 INFO
  97. level: 'INFO'
  98. },
  99. // Service 的日志是否分散为单个日志文件,建议保持 false
  100. isolatedServiceLogger: false
  101. }
  102. };