blockmine 1.20.0 → 1.22.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (434) hide show
  1. package/.claude/agents/README.md +469 -0
  2. package/.claude/agents/auth-route-debugger.md +118 -0
  3. package/.claude/agents/auth-route-tester.md +93 -0
  4. package/.claude/agents/auto-error-resolver.md +97 -0
  5. package/.claude/agents/build-optimizer.md +236 -0
  6. package/.claude/agents/code-architecture-reviewer.md +83 -0
  7. package/.claude/agents/code-refactor-master.md +94 -0
  8. package/.claude/agents/cost-optimizer.md +134 -0
  9. package/.claude/agents/deployment-orchestrator.md +113 -0
  10. package/.claude/agents/documentation-architect.md +82 -0
  11. package/.claude/agents/frontend-error-fixer.md +77 -0
  12. package/.claude/agents/iac-code-generator.md +71 -0
  13. package/.claude/agents/incident-responder.md +346 -0
  14. package/.claude/agents/infrastructure-architect.md +31 -0
  15. package/.claude/agents/kubernetes-specialist.md +56 -0
  16. package/.claude/agents/migration-planner.md +181 -0
  17. package/.claude/agents/network-architect.md +196 -0
  18. package/.claude/agents/plan-reviewer.md +52 -0
  19. package/.claude/agents/refactor-planner.md +63 -0
  20. package/.claude/agents/security-scanner.md +102 -0
  21. package/.claude/agents/web-research-specialist.md +78 -0
  22. package/.claude/commands/cost-analysis.md +315 -0
  23. package/.claude/commands/dev-docs-update.md +55 -0
  24. package/.claude/commands/dev-docs.md +51 -0
  25. package/.claude/commands/incident-debug.md +247 -0
  26. package/.claude/commands/infra-plan.md +81 -0
  27. package/.claude/commands/migration-plan.md +478 -0
  28. package/.claude/commands/route-research-for-testing.md +37 -0
  29. package/.claude/commands/security-review.md +66 -0
  30. package/.claude/hooks/CONFIG.md +448 -0
  31. package/.claude/hooks/README.md +163 -0
  32. package/.claude/hooks/SKILL_ACTIVATION_COMPLETE.md +226 -0
  33. package/.claude/hooks/WINDOWS_HOOKS_README.md +151 -0
  34. package/.claude/hooks/add-skill-activation-banners.ts +132 -0
  35. package/.claude/hooks/comprehensive-skill-test.ts +1315 -0
  36. package/.claude/hooks/error-handling-reminder.sh +12 -0
  37. package/.claude/hooks/error-handling-reminder.ts +222 -0
  38. package/.claude/hooks/k8s-manifest-validator.sh +56 -0
  39. package/.claude/hooks/package-lock.json +556 -0
  40. package/.claude/hooks/package.json +16 -0
  41. package/.claude/hooks/post-tool-use-tracker.ps1 +174 -0
  42. package/.claude/hooks/post-tool-use-tracker.sh +183 -0
  43. package/.claude/hooks/security-policy-check.sh +247 -0
  44. package/.claude/hooks/skill-activation-prompt.ps1 +10 -0
  45. package/.claude/hooks/skill-activation-prompt.sh +10 -0
  46. package/.claude/hooks/skill-activation-prompt.ts +141 -0
  47. package/.claude/hooks/stop-build-check-enhanced.sh +130 -0
  48. package/.claude/hooks/terraform-validator.sh +53 -0
  49. package/.claude/hooks/test-input.json +7 -0
  50. package/.claude/hooks/test-skill-activation.ts +427 -0
  51. package/.claude/hooks/trigger-build-resolver.sh +79 -0
  52. package/.claude/hooks/tsc-check.sh +173 -0
  53. package/.claude/hooks/tsconfig.json +19 -0
  54. package/.claude/settings.json +55 -0
  55. package/.claude/settings.local.json +28 -3
  56. package/.claude/skills/README.md +507 -0
  57. package/.claude/skills/api-engineering/SKILL.md +63 -0
  58. package/.claude/skills/api-engineering/resources/api-versioning.md +88 -0
  59. package/.claude/skills/api-engineering/resources/graphql-patterns.md +106 -0
  60. package/.claude/skills/api-engineering/resources/rate-limiting.md +118 -0
  61. package/.claude/skills/api-engineering/resources/rest-api-design.md +105 -0
  62. package/.claude/skills/backend-dev-guidelines/SKILL.md +306 -0
  63. package/.claude/skills/backend-dev-guidelines/resources/architecture-overview.md +451 -0
  64. package/.claude/skills/backend-dev-guidelines/resources/async-and-errors.md +307 -0
  65. package/.claude/skills/backend-dev-guidelines/resources/complete-examples.md +638 -0
  66. package/.claude/skills/backend-dev-guidelines/resources/configuration.md +275 -0
  67. package/.claude/skills/backend-dev-guidelines/resources/database-patterns.md +224 -0
  68. package/.claude/skills/backend-dev-guidelines/resources/middleware-guide.md +213 -0
  69. package/.claude/skills/backend-dev-guidelines/resources/routing-and-controllers.md +756 -0
  70. package/.claude/skills/backend-dev-guidelines/resources/sentry-and-monitoring.md +336 -0
  71. package/.claude/skills/backend-dev-guidelines/resources/services-and-repositories.md +789 -0
  72. package/.claude/skills/backend-dev-guidelines/resources/testing-guide.md +235 -0
  73. package/.claude/skills/backend-dev-guidelines/resources/validation-patterns.md +754 -0
  74. package/.claude/skills/budget-and-cost-management/SKILL.md +850 -0
  75. package/.claude/skills/build-engineering/SKILL.md +431 -0
  76. package/.claude/skills/build-engineering/resources/artifact-repositories.md +72 -0
  77. package/.claude/skills/build-engineering/resources/build-caching.md +96 -0
  78. package/.claude/skills/build-engineering/resources/build-pipelines.md +105 -0
  79. package/.claude/skills/build-engineering/resources/build-security.md +95 -0
  80. package/.claude/skills/build-engineering/resources/build-systems.md +389 -0
  81. package/.claude/skills/build-engineering/resources/compilation-optimization.md +201 -0
  82. package/.claude/skills/build-engineering/resources/dependency-management.md +73 -0
  83. package/.claude/skills/build-engineering/resources/monorepo-builds.md +110 -0
  84. package/.claude/skills/build-engineering/resources/performance-optimization.md +113 -0
  85. package/.claude/skills/build-engineering/resources/reproducible-builds.md +82 -0
  86. package/.claude/skills/cloud-engineering/SKILL.md +675 -0
  87. package/.claude/skills/cloud-engineering/resources/aws-patterns.md +742 -0
  88. package/.claude/skills/cloud-engineering/resources/azure-patterns.md +714 -0
  89. package/.claude/skills/cloud-engineering/resources/cleared-cloud-environments.md +987 -0
  90. package/.claude/skills/cloud-engineering/resources/cloud-cost-optimization.md +757 -0
  91. package/.claude/skills/cloud-engineering/resources/cloud-networking.md +1058 -0
  92. package/.claude/skills/cloud-engineering/resources/cloud-security-tools.md +1530 -0
  93. package/.claude/skills/cloud-engineering/resources/cloud-security.md +990 -0
  94. package/.claude/skills/cloud-engineering/resources/gcp-patterns.md +758 -0
  95. package/.claude/skills/cloud-engineering/resources/migration-strategies.md +820 -0
  96. package/.claude/skills/cloud-engineering/resources/multi-cloud-strategies.md +670 -0
  97. package/.claude/skills/cloud-engineering/resources/oci-patterns.md +1198 -0
  98. package/.claude/skills/cloud-engineering/resources/serverless-patterns.md +795 -0
  99. package/.claude/skills/cloud-engineering/resources/well-architected-frameworks.md +966 -0
  100. package/.claude/skills/cybersecurity/SKILL.md +409 -0
  101. package/.claude/skills/cybersecurity/resources/security-architecture.md +266 -0
  102. package/.claude/skills/database-engineering/SKILL.md +61 -0
  103. package/.claude/skills/database-engineering/resources/backup-and-recovery.md +72 -0
  104. package/.claude/skills/database-engineering/resources/database-replication.md +63 -0
  105. package/.claude/skills/database-engineering/resources/postgresql-fundamentals.md +70 -0
  106. package/.claude/skills/database-engineering/resources/query-optimization.md +68 -0
  107. package/.claude/skills/devsecops/SKILL.md +374 -0
  108. package/.claude/skills/devsecops/resources/ci-cd-security.md +204 -0
  109. package/.claude/skills/devsecops/resources/compliance-automation.md +530 -0
  110. package/.claude/skills/devsecops/resources/compliance-frameworks.md +2322 -0
  111. package/.claude/skills/devsecops/resources/container-security.md +915 -0
  112. package/.claude/skills/devsecops/resources/cspm-integration.md +1440 -0
  113. package/.claude/skills/devsecops/resources/policy-enforcement.md +619 -0
  114. package/.claude/skills/devsecops/resources/secrets-management.md +755 -0
  115. package/.claude/skills/devsecops/resources/security-monitoring.md +146 -0
  116. package/.claude/skills/devsecops/resources/security-scanning.md +887 -0
  117. package/.claude/skills/devsecops/resources/security-testing.md +203 -0
  118. package/.claude/skills/devsecops/resources/supply-chain-security.md +518 -0
  119. package/.claude/skills/devsecops/resources/vulnerability-management.md +481 -0
  120. package/.claude/skills/devsecops/resources/zero-trust-architecture.md +177 -0
  121. package/.claude/skills/documentation-as-code/SKILL.md +323 -0
  122. package/.claude/skills/documentation-as-code/resources/api-documentation.md +90 -0
  123. package/.claude/skills/documentation-as-code/resources/changelog-management.md +79 -0
  124. package/.claude/skills/documentation-as-code/resources/diagram-generation.md +44 -0
  125. package/.claude/skills/documentation-as-code/resources/docs-as-code-workflow.md +99 -0
  126. package/.claude/skills/documentation-as-code/resources/documentation-automation.md +68 -0
  127. package/.claude/skills/documentation-as-code/resources/documentation-sites.md +79 -0
  128. package/.claude/skills/documentation-as-code/resources/markdown-best-practices.md +162 -0
  129. package/.claude/skills/documentation-as-code/resources/openapi-specification.md +77 -0
  130. package/.claude/skills/documentation-as-code/resources/readme-engineering.md +60 -0
  131. package/.claude/skills/documentation-as-code/resources/technical-writing-guide.md +202 -0
  132. package/.claude/skills/engineering-management/SKILL.md +356 -0
  133. package/.claude/skills/engineering-management/resources/career-ladders.md +609 -0
  134. package/.claude/skills/engineering-management/resources/hiring-and-assessment.md +555 -0
  135. package/.claude/skills/engineering-management/resources/one-on-one-guides.md +609 -0
  136. package/.claude/skills/engineering-management/resources/resource-planning.md +557 -0
  137. package/.claude/skills/engineering-management/resources/team-organization-patterns.md +491 -0
  138. package/.claude/skills/engineering-management/resources/technical-interviews.md +474 -0
  139. package/.claude/skills/engineering-operations-management/SKILL.md +817 -0
  140. package/.claude/skills/error-tracking/SKILL.md +379 -0
  141. package/.claude/skills/frontend-dev-guidelines/SKILL.md +403 -0
  142. package/.claude/skills/frontend-dev-guidelines/resources/common-patterns.md +331 -0
  143. package/.claude/skills/frontend-dev-guidelines/resources/complete-examples.md +872 -0
  144. package/.claude/skills/frontend-dev-guidelines/resources/component-patterns.md +502 -0
  145. package/.claude/skills/frontend-dev-guidelines/resources/data-fetching.md +767 -0
  146. package/.claude/skills/frontend-dev-guidelines/resources/file-organization.md +502 -0
  147. package/.claude/skills/frontend-dev-guidelines/resources/loading-and-error-states.md +501 -0
  148. package/.claude/skills/frontend-dev-guidelines/resources/performance.md +406 -0
  149. package/.claude/skills/frontend-dev-guidelines/resources/routing-guide.md +364 -0
  150. package/.claude/skills/frontend-dev-guidelines/resources/styling-guide.md +428 -0
  151. package/.claude/skills/frontend-dev-guidelines/resources/typescript-standards.md +418 -0
  152. package/.claude/skills/general-it-engineering/SKILL.md +393 -0
  153. package/.claude/skills/general-it-engineering/resources/asset-management.md +712 -0
  154. package/.claude/skills/general-it-engineering/resources/automation-orchestration.md +817 -0
  155. package/.claude/skills/general-it-engineering/resources/business-continuity.md +786 -0
  156. package/.claude/skills/general-it-engineering/resources/change-management.md +715 -0
  157. package/.claude/skills/general-it-engineering/resources/enterprise-monitoring.md +729 -0
  158. package/.claude/skills/general-it-engineering/resources/help-desk-operations.md +738 -0
  159. package/.claude/skills/general-it-engineering/resources/incident-service-management.md +834 -0
  160. package/.claude/skills/general-it-engineering/resources/it-governance.md +753 -0
  161. package/.claude/skills/general-it-engineering/resources/itil-framework.md +503 -0
  162. package/.claude/skills/general-it-engineering/resources/service-management.md +669 -0
  163. package/.claude/skills/infrastructure-architecture/SKILL.md +328 -0
  164. package/.claude/skills/infrastructure-architecture/resources/architecture-decision-records.md +505 -0
  165. package/.claude/skills/infrastructure-architecture/resources/architecture-patterns.md +528 -0
  166. package/.claude/skills/infrastructure-architecture/resources/capacity-planning.md +453 -0
  167. package/.claude/skills/infrastructure-architecture/resources/cleared-environment-architecture.md +773 -0
  168. package/.claude/skills/infrastructure-architecture/resources/cost-architecture.md +499 -0
  169. package/.claude/skills/infrastructure-architecture/resources/data-architecture.md +501 -0
  170. package/.claude/skills/infrastructure-architecture/resources/disaster-recovery.md +535 -0
  171. package/.claude/skills/infrastructure-architecture/resources/migration-architecture.md +512 -0
  172. package/.claude/skills/infrastructure-architecture/resources/multi-region-design.md +608 -0
  173. package/.claude/skills/infrastructure-architecture/resources/reference-architectures.md +562 -0
  174. package/.claude/skills/infrastructure-architecture/resources/security-architecture.md +538 -0
  175. package/.claude/skills/infrastructure-architecture/resources/system-design-principles.md +489 -0
  176. package/.claude/skills/infrastructure-architecture/resources/workload-classification.md +1000 -0
  177. package/.claude/skills/infrastructure-strategy/SKILL.md +924 -0
  178. package/.claude/skills/network-engineering/SKILL.md +385 -0
  179. package/.claude/skills/network-engineering/resources/dns-management.md +738 -0
  180. package/.claude/skills/network-engineering/resources/load-balancing.md +820 -0
  181. package/.claude/skills/network-engineering/resources/network-architecture.md +546 -0
  182. package/.claude/skills/network-engineering/resources/network-security.md +921 -0
  183. package/.claude/skills/network-engineering/resources/network-troubleshooting.md +749 -0
  184. package/.claude/skills/network-engineering/resources/routing-switching.md +373 -0
  185. package/.claude/skills/network-engineering/resources/sdn-networking.md +695 -0
  186. package/.claude/skills/network-engineering/resources/service-mesh-networking.md +777 -0
  187. package/.claude/skills/network-engineering/resources/tcp-ip-protocols.md +444 -0
  188. package/.claude/skills/network-engineering/resources/vpn-connectivity.md +672 -0
  189. package/.claude/skills/observability-engineering/SKILL.md +101 -0
  190. package/.claude/skills/observability-engineering/resources/apm-tools.md +97 -0
  191. package/.claude/skills/observability-engineering/resources/correlation-strategies.md +87 -0
  192. package/.claude/skills/observability-engineering/resources/distributed-tracing.md +98 -0
  193. package/.claude/skills/observability-engineering/resources/logs-aggregation.md +118 -0
  194. package/.claude/skills/observability-engineering/resources/observability-cost-optimization.md +141 -0
  195. package/.claude/skills/observability-engineering/resources/opentelemetry.md +110 -0
  196. package/.claude/skills/platform-engineering/SKILL.md +555 -0
  197. package/.claude/skills/platform-engineering/resources/architecture-overview.md +600 -0
  198. package/.claude/skills/platform-engineering/resources/container-orchestration.md +916 -0
  199. package/.claude/skills/platform-engineering/resources/cost-optimization.md +634 -0
  200. package/.claude/skills/platform-engineering/resources/developer-platforms.md +670 -0
  201. package/.claude/skills/platform-engineering/resources/gitops-automation.md +650 -0
  202. package/.claude/skills/platform-engineering/resources/infrastructure-as-code.md +778 -0
  203. package/.claude/skills/platform-engineering/resources/infrastructure-standards.md +708 -0
  204. package/.claude/skills/platform-engineering/resources/multi-tenancy.md +602 -0
  205. package/.claude/skills/platform-engineering/resources/platform-security.md +711 -0
  206. package/.claude/skills/platform-engineering/resources/resource-management.md +592 -0
  207. package/.claude/skills/platform-engineering/resources/service-mesh.md +628 -0
  208. package/.claude/skills/release-engineering/SKILL.md +393 -0
  209. package/.claude/skills/release-engineering/resources/artifact-management.md +108 -0
  210. package/.claude/skills/release-engineering/resources/build-optimization.md +84 -0
  211. package/.claude/skills/release-engineering/resources/ci-cd-pipelines.md +411 -0
  212. package/.claude/skills/release-engineering/resources/deployment-strategies.md +197 -0
  213. package/.claude/skills/release-engineering/resources/pipeline-security.md +62 -0
  214. package/.claude/skills/release-engineering/resources/progressive-delivery.md +83 -0
  215. package/.claude/skills/release-engineering/resources/release-automation.md +68 -0
  216. package/.claude/skills/release-engineering/resources/release-orchestration.md +77 -0
  217. package/.claude/skills/release-engineering/resources/rollback-strategies.md +66 -0
  218. package/.claude/skills/release-engineering/resources/versioning-strategies.md +59 -0
  219. package/.claude/skills/route-tester/SKILL.md +392 -0
  220. package/.claude/skills/skill-developer/ADVANCED.md +197 -0
  221. package/.claude/skills/skill-developer/HOOK_MECHANISMS.md +306 -0
  222. package/.claude/skills/skill-developer/PATTERNS_LIBRARY.md +152 -0
  223. package/.claude/skills/skill-developer/SKILL.md +430 -0
  224. package/.claude/skills/skill-developer/SKILL_RULES_REFERENCE.md +315 -0
  225. package/.claude/skills/skill-developer/TRIGGER_TYPES.md +305 -0
  226. package/.claude/skills/skill-developer/TROUBLESHOOTING.md +514 -0
  227. package/.claude/skills/skill-rules.json +2940 -0
  228. package/.claude/skills/sre/SKILL.md +464 -0
  229. package/.claude/skills/sre/resources/alerting-best-practices.md +282 -0
  230. package/.claude/skills/sre/resources/capacity-planning.md +226 -0
  231. package/.claude/skills/sre/resources/chaos-engineering.md +193 -0
  232. package/.claude/skills/sre/resources/disaster-recovery.md +232 -0
  233. package/.claude/skills/sre/resources/incident-management.md +436 -0
  234. package/.claude/skills/sre/resources/observability-stack.md +240 -0
  235. package/.claude/skills/sre/resources/on-call-runbooks.md +167 -0
  236. package/.claude/skills/sre/resources/performance-optimization.md +108 -0
  237. package/.claude/skills/sre/resources/reliability-patterns.md +183 -0
  238. package/.claude/skills/sre/resources/slo-sli-sla.md +464 -0
  239. package/.claude/skills/sre/resources/toil-reduction.md +145 -0
  240. package/.claude/skills/systems-engineering/SKILL.md +648 -0
  241. package/.claude/skills/systems-engineering/resources/automation-patterns.md +771 -0
  242. package/.claude/skills/systems-engineering/resources/configuration-management.md +998 -0
  243. package/.claude/skills/systems-engineering/resources/linux-administration.md +672 -0
  244. package/.claude/skills/systems-engineering/resources/networking-fundamentals.md +982 -0
  245. package/.claude/skills/systems-engineering/resources/performance-tuning.md +871 -0
  246. package/.claude/skills/systems-engineering/resources/powershell-scripting.md +482 -0
  247. package/.claude/skills/systems-engineering/resources/security-hardening.md +739 -0
  248. package/.claude/skills/systems-engineering/resources/shell-scripting.md +915 -0
  249. package/.claude/skills/systems-engineering/resources/storage-management.md +628 -0
  250. package/.claude/skills/systems-engineering/resources/system-monitoring.md +787 -0
  251. package/.claude/skills/systems-engineering/resources/troubleshooting-guide.md +753 -0
  252. package/.claude/skills/systems-engineering/resources/windows-administration.md +738 -0
  253. package/.claude/skills/technical-leadership/SKILL.md +728 -0
  254. package/CHANGELOG.md +90 -39
  255. package/README.md +94 -0
  256. package/backend/docs/SECRETS_DOCUMENTATION.md +327 -0
  257. package/backend/jest.config.js +59 -0
  258. package/backend/package-lock.json +6129 -0
  259. package/backend/package.json +16 -4
  260. package/backend/prisma/migrations/20251026104609_add_websocket_api/migration.sql +33 -0
  261. package/backend/prisma/schema.prisma +33 -0
  262. package/backend/src/__tests__/core/DependencyService.test.js +336 -0
  263. package/backend/src/__tests__/core/UserService.test.js +875 -0
  264. package/backend/src/__tests__/repositories/BaseRepository.test.js +146 -0
  265. package/backend/src/__tests__/repositories/BotRepository.test.js +118 -0
  266. package/backend/src/__tests__/repositories/CommandRepository.test.js +132 -0
  267. package/backend/src/__tests__/repositories/EventGraphRepository.test.js +93 -0
  268. package/backend/src/__tests__/repositories/GroupRepository.test.js +155 -0
  269. package/backend/src/__tests__/repositories/PermissionRepository.test.js +130 -0
  270. package/backend/src/__tests__/repositories/PluginRepository.test.js +107 -0
  271. package/backend/src/__tests__/repositories/ServerRepository.test.js +80 -0
  272. package/backend/src/__tests__/repositories/UserRepository.test.js +128 -0
  273. package/backend/src/__tests__/secretsFilter.test.js +425 -0
  274. package/backend/src/__tests__/services/BotLifecycleService.test.js +411 -0
  275. package/backend/src/__tests__/services/BotProcessManager.test.js +285 -0
  276. package/backend/src/__tests__/services/CacheManager.test.js +125 -0
  277. package/backend/src/__tests__/services/CommandExecutionService.test.js +460 -0
  278. package/backend/src/__tests__/services/ResourceMonitorService.test.js +207 -0
  279. package/backend/src/__tests__/services/TelemetryService.test.js +291 -0
  280. package/backend/src/__tests__/setup.js +25 -0
  281. package/backend/src/api/routes/apiKeys.js +181 -0
  282. package/backend/src/api/routes/bots.js +49 -7
  283. package/backend/src/api/routes/plugins.js +2 -1
  284. package/backend/src/api/routes/system.js +174 -0
  285. package/backend/src/container.js +82 -0
  286. package/backend/src/core/BotManager.js +142 -871
  287. package/backend/src/core/BotManager.old.js +1093 -0
  288. package/backend/src/core/BotProcess.js +1092 -850
  289. package/backend/src/core/BreakLoopSignal.js +8 -0
  290. package/backend/src/core/EventGraphManager.js +280 -193
  291. package/backend/src/core/GraphExecutionEngine.js +321 -928
  292. package/backend/src/core/MessageQueue.js +27 -6
  293. package/backend/src/core/NodeRegistry.js +37 -991
  294. package/backend/src/core/PluginManager.js +62 -12
  295. package/backend/src/core/PrismaService.js +32 -0
  296. package/backend/src/core/UserService.js +3 -3
  297. package/backend/src/core/__tests__/PrismaService.test.js +24 -0
  298. package/backend/src/core/commands/README.md +305 -0
  299. package/backend/src/core/commands/dev.js +13 -7
  300. package/backend/src/core/commands/ping.js +10 -4
  301. package/backend/src/core/commands/whois.js +63 -0
  302. package/backend/src/core/config/validation.js +27 -0
  303. package/backend/src/core/constants/graphTypes.js +21 -0
  304. package/backend/src/core/node-registries/actions.js +132 -0
  305. package/backend/src/core/node-registries/arrays.js +137 -0
  306. package/backend/src/core/node-registries/bot.js +23 -0
  307. package/backend/src/core/node-registries/data.js +290 -0
  308. package/backend/src/core/node-registries/debug.js +26 -0
  309. package/backend/src/core/node-registries/events.js +187 -0
  310. package/backend/src/core/node-registries/flow.js +139 -0
  311. package/backend/src/core/node-registries/logic.js +45 -0
  312. package/backend/src/core/node-registries/math.js +42 -0
  313. package/backend/src/core/node-registries/objects.js +98 -0
  314. package/backend/src/core/node-registries/strings.js +153 -0
  315. package/backend/src/core/node-registries/time.js +113 -0
  316. package/backend/src/core/node-registries/users.js +79 -0
  317. package/backend/src/core/nodes/actions/bot_look_at.js +36 -0
  318. package/backend/src/core/nodes/actions/bot_set_variable.js +32 -0
  319. package/backend/src/core/nodes/actions/http_request.js +98 -0
  320. package/backend/src/core/nodes/actions/send_log.js +28 -0
  321. package/backend/src/core/nodes/actions/send_message.js +32 -0
  322. package/backend/src/core/nodes/actions/send_websocket_response.js +33 -0
  323. package/backend/src/core/nodes/arrays/add_element.js +23 -0
  324. package/backend/src/core/nodes/arrays/contains.js +40 -0
  325. package/backend/src/core/nodes/arrays/find_index.js +23 -0
  326. package/backend/src/core/nodes/arrays/get_by_index.js +23 -0
  327. package/backend/src/core/nodes/arrays/get_next.js +35 -0
  328. package/backend/src/core/nodes/arrays/get_random_element.js +32 -0
  329. package/backend/src/core/nodes/arrays/remove_by_index.js +30 -0
  330. package/backend/src/core/nodes/bot/get_position.js +20 -0
  331. package/backend/src/core/nodes/data/array_literal.js +31 -0
  332. package/backend/src/core/nodes/data/boolean_literal.js +21 -0
  333. package/backend/src/core/nodes/data/cast.js +42 -0
  334. package/backend/src/core/nodes/data/datetime_literal.js +27 -0
  335. package/backend/src/core/nodes/data/entity_info.js +69 -0
  336. package/backend/src/core/nodes/data/get_argument.js +23 -0
  337. package/backend/src/core/nodes/data/get_bot_look.js +14 -0
  338. package/backend/src/core/nodes/data/get_entity_field.js +18 -0
  339. package/backend/src/core/nodes/data/get_nearby_entities.js +32 -0
  340. package/backend/src/core/nodes/data/get_nearby_players.js +64 -0
  341. package/backend/src/core/nodes/data/get_server_players.js +18 -0
  342. package/backend/src/core/nodes/data/get_user_field.js +40 -0
  343. package/backend/src/core/nodes/data/get_variable.js +23 -0
  344. package/backend/src/core/nodes/data/length.js +25 -0
  345. package/backend/src/core/nodes/data/make_object.js +31 -0
  346. package/backend/src/core/nodes/data/number_literal.js +21 -0
  347. package/backend/src/core/nodes/data/string_literal.js +34 -0
  348. package/backend/src/core/nodes/data/type_check.js +53 -0
  349. package/backend/src/core/nodes/debug/log.js +16 -0
  350. package/backend/src/core/nodes/flow/branch.js +15 -0
  351. package/backend/src/core/nodes/flow/break.js +14 -0
  352. package/backend/src/core/nodes/flow/delay.js +43 -0
  353. package/backend/src/core/nodes/flow/for_each.js +39 -0
  354. package/backend/src/core/nodes/flow/sequence.js +16 -0
  355. package/backend/src/core/nodes/flow/switch.js +47 -0
  356. package/backend/src/core/nodes/flow/while.js +64 -0
  357. package/backend/src/core/nodes/logic/__tests__/compare.test.js +83 -0
  358. package/backend/src/core/nodes/logic/compare.js +33 -0
  359. package/backend/src/core/nodes/logic/operation.js +35 -0
  360. package/backend/src/core/nodes/math/__tests__/operation.test.js +65 -0
  361. package/backend/src/core/nodes/math/operation.js +31 -0
  362. package/backend/src/core/nodes/math/random_number.js +43 -0
  363. package/backend/src/core/nodes/objects/create.js +40 -0
  364. package/backend/src/core/nodes/objects/delete.js +26 -0
  365. package/backend/src/core/nodes/objects/get.js +23 -0
  366. package/backend/src/core/nodes/objects/has_key.js +30 -0
  367. package/backend/src/core/nodes/objects/set.js +27 -0
  368. package/backend/src/core/nodes/strings/__tests__/concat.test.js +89 -0
  369. package/backend/src/core/nodes/strings/concat.js +27 -0
  370. package/backend/src/core/nodes/strings/contains.js +41 -0
  371. package/backend/src/core/nodes/strings/ends_with.js +43 -0
  372. package/backend/src/core/nodes/strings/equals.js +36 -0
  373. package/backend/src/core/nodes/strings/length.js +36 -0
  374. package/backend/src/core/nodes/strings/matches.js +39 -0
  375. package/backend/src/core/nodes/strings/split.js +37 -0
  376. package/backend/src/core/nodes/strings/starts_with.js +43 -0
  377. package/backend/src/core/nodes/time/__tests__/now.test.js +24 -0
  378. package/backend/src/core/nodes/time/add.js +33 -0
  379. package/backend/src/core/nodes/time/compare.js +35 -0
  380. package/backend/src/core/nodes/time/diff.js +29 -0
  381. package/backend/src/core/nodes/time/format.js +32 -0
  382. package/backend/src/core/nodes/time/now.js +18 -0
  383. package/backend/src/core/nodes/users/check_blacklist.js +37 -0
  384. package/backend/src/core/nodes/users/get_groups.js +36 -0
  385. package/backend/src/core/nodes/users/get_permissions.js +36 -0
  386. package/backend/src/core/nodes/users/set_blacklist.js +37 -0
  387. package/backend/src/core/services/BotLifecycleService.js +596 -0
  388. package/backend/src/core/services/BotProcessManager.js +163 -0
  389. package/backend/src/core/services/CacheManager.js +111 -0
  390. package/backend/src/core/services/CommandExecutionService.js +351 -0
  391. package/backend/src/core/services/ResourceMonitorService.js +90 -0
  392. package/backend/src/core/services/TelemetryService.js +124 -0
  393. package/backend/src/core/services/ValidationService.js +132 -0
  394. package/backend/src/core/services/__tests__/ValidationService.test.js +148 -0
  395. package/backend/src/core/services.js +20 -5
  396. package/backend/src/core/system/CommandContext.js +84 -0
  397. package/backend/src/core/system/Transport.js +78 -0
  398. package/backend/src/core/utils/__tests__/jsonParser.test.js +44 -0
  399. package/backend/src/core/utils/jsonParser.js +18 -0
  400. package/backend/src/core/utils/secretsFilter.js +262 -0
  401. package/backend/src/core/utils/variableParser.js +89 -0
  402. package/backend/src/core/validation/__tests__/nodeSchemas.test.js +175 -0
  403. package/backend/src/core/validation/nodeSchemas.js +112 -0
  404. package/backend/src/lib/prisma.js +2 -4
  405. package/backend/src/real-time/botApi/handlers/commandHandlers.js +28 -0
  406. package/backend/src/real-time/botApi/handlers/graphHandlers.js +99 -0
  407. package/backend/src/real-time/botApi/handlers/graphWebSocketHandlers.js +147 -0
  408. package/backend/src/real-time/botApi/handlers/index.js +43 -0
  409. package/backend/src/real-time/botApi/handlers/messageHandlers.js +66 -0
  410. package/backend/src/real-time/botApi/handlers/statusHandlers.js +17 -0
  411. package/backend/src/real-time/botApi/handlers/userHandlers.js +141 -0
  412. package/backend/src/real-time/botApi/index.js +40 -0
  413. package/backend/src/real-time/botApi/middleware.js +79 -0
  414. package/backend/src/real-time/botApi/utils.js +54 -0
  415. package/backend/src/real-time/socketHandler.js +6 -2
  416. package/backend/src/repositories/BaseRepository.js +43 -0
  417. package/backend/src/repositories/BotRepository.js +42 -0
  418. package/backend/src/repositories/CommandRepository.js +53 -0
  419. package/backend/src/repositories/EventGraphRepository.js +40 -0
  420. package/backend/src/repositories/GroupRepository.js +69 -0
  421. package/backend/src/repositories/PermissionRepository.js +48 -0
  422. package/backend/src/repositories/PluginRepository.js +42 -0
  423. package/backend/src/repositories/ServerRepository.js +27 -0
  424. package/backend/src/repositories/UserRepository.js +48 -0
  425. package/backend/src/server.js +3 -0
  426. package/backend/src/test-refactor.js +85 -0
  427. package/frontend/dist/assets/index-CfTo92bP.css +1 -0
  428. package/frontend/dist/assets/index-CiFD5X9Z.js +8344 -0
  429. package/frontend/dist/index.html +2 -2
  430. package/frontend/package.json +1 -5
  431. package/package.json +2 -1
  432. package/frontend/dist/assets/index-BFd7YoAj.css +0 -1
  433. package/frontend/dist/assets/index-CMMutadc.js +0 -8352
  434. package/nul +0 -0
@@ -0,0 +1,787 @@
1
+ # System Monitoring
2
+
3
+ Comprehensive guide to system monitoring covering log aggregation, metrics collection, APM integration, dashboards, and alerting for observability and reliability.
4
+
5
+ ## Table of Contents
6
+
7
+ - [Monitoring Architecture](#monitoring-architecture)
8
+ - [Log Aggregation](#log-aggregation)
9
+ - [Metrics Collection](#metrics-collection)
10
+ - [APM Tools Integration](#apm-tools-integration)
11
+ - [Dashboard Creation](#dashboard-creation)
12
+ - [Alert Configuration](#alert-configuration)
13
+ - [Log Analysis](#log-analysis)
14
+ - [Best Practices](#best-practices)
15
+
16
+ ## Monitoring Architecture
17
+
18
+ ### Monitoring Stack
19
+
20
+ ```
21
+ ┌─────────────────────────────────────────────────────────┐
22
+ │ Visualization │
23
+ │ (Grafana, Kibana) │
24
+ ├─────────────────────────────────────────────────────────┤
25
+ │ Alerting & Analysis │
26
+ │ (Prometheus, Elasticsearch) │
27
+ ├─────────────────────────────────────────────────────────┤
28
+ │ Data Collection │
29
+ │ (node_exporter, Filebeat, Telegraf) │
30
+ ├─────────────────────────────────────────────────────────┤
31
+ │ Application Servers │
32
+ └─────────────────────────────────────────────────────────┘
33
+ ```
34
+
35
+ ## Log Aggregation
36
+
37
+ ### rsyslog Configuration
38
+
39
+ ```bash
40
+ # Install rsyslog
41
+ sudo apt install rsyslog
42
+
43
+ # /etc/rsyslog.d/50-default.conf
44
+
45
+ # Log levels: debug, info, notice, warn, error, crit, alert, emerg
46
+
47
+ # Separate logs by facility
48
+ auth,authpriv.* /var/log/auth.log
49
+ *.*;auth,authpriv.none -/var/log/syslog
50
+ kern.* -/var/log/kern.log
51
+ mail.* -/var/log/mail.log
52
+
53
+ # Remote logging to centralized server
54
+ *.* @@logserver.example.com:514 # TCP
55
+ # Or UDP
56
+ *.* @logserver.example.com:514 # UDP
57
+
58
+ # Filter specific logs
59
+ :programname, isequal, "myapp" /var/log/myapp.log
60
+ & stop # Don't process further
61
+
62
+ # Restart rsyslog
63
+ sudo systemctl restart rsyslog
64
+ ```
65
+
66
+ **Centralized Log Server:**
67
+ ```bash
68
+ # /etc/rsyslog.conf on log server
69
+
70
+ # Enable UDP reception
71
+ module(load="imudp")
72
+ input(type="imudp" port="514")
73
+
74
+ # Enable TCP reception
75
+ module(load="imtcp")
76
+ input(type="imtcp" port="514")
77
+
78
+ # Template for organizing logs by hostname
79
+ $template RemoteLogs,"/var/log/remote/%HOSTNAME%/%PROGRAMNAME%.log"
80
+ *.* ?RemoteLogs
81
+ & stop
82
+ ```
83
+
84
+ ### journald Configuration
85
+
86
+ ```bash
87
+ # /etc/systemd/journald.conf
88
+
89
+ [Journal]
90
+ # Persistent storage
91
+ Storage=persistent
92
+
93
+ # Max disk usage
94
+ SystemMaxUse=1G
95
+ RuntimeMaxUse=100M
96
+
97
+ # Keep logs for 30 days
98
+ MaxRetentionSec=2592000
99
+
100
+ # Forward to syslog
101
+ ForwardToSyslog=yes
102
+
103
+ # Restart journald
104
+ sudo systemctl restart systemd-journald
105
+ ```
106
+
107
+ **Query journald:**
108
+ ```bash
109
+ # View all logs
110
+ journalctl
111
+
112
+ # Follow logs
113
+ journalctl -f
114
+
115
+ # Specific service
116
+ journalctl -u nginx.service
117
+
118
+ # Since time
119
+ journalctl --since "2024-01-01 00:00:00"
120
+ journalctl --since "1 hour ago"
121
+
122
+ # Priority level
123
+ journalctl -p err # Errors only
124
+ journalctl -p warning # Warnings and above
125
+
126
+ # Specific boot
127
+ journalctl -b # Current boot
128
+ journalctl -b -1 # Previous boot
129
+
130
+ # Export to file
131
+ journalctl -u myapp --since today > /tmp/myapp-logs.txt
132
+
133
+ # JSON format
134
+ journalctl -u myapp -o json-pretty
135
+ ```
136
+
137
+ ### Loki (Grafana Loki)
138
+
139
+ **Install Loki:**
140
+ ```bash
141
+ # Download Loki
142
+ wget https://github.com/grafana/loki/releases/download/v2.9.0/loki-linux-amd64.zip
143
+ unzip loki-linux-amd64.zip
144
+ sudo mv loki-linux-amd64 /usr/local/bin/loki
145
+ ```
146
+
147
+ **Loki Configuration:**
148
+ ```yaml
149
+ # /etc/loki/config.yml
150
+ auth_enabled: false
151
+
152
+ server:
153
+ http_listen_port: 3100
154
+ grpc_listen_port: 9096
155
+
156
+ common:
157
+ path_prefix: /var/loki
158
+ storage:
159
+ filesystem:
160
+ chunks_directory: /var/loki/chunks
161
+ rules_directory: /var/loki/rules
162
+ replication_factor: 1
163
+ ring:
164
+ kvstore:
165
+ store: inmemory
166
+
167
+ schema_config:
168
+ configs:
169
+ - from: 2023-01-01
170
+ store: boltdb-shipper
171
+ object_store: filesystem
172
+ schema: v11
173
+ index:
174
+ prefix: index_
175
+ period: 24h
176
+
177
+ limits_config:
178
+ retention_period: 720h # 30 days
179
+ ```
180
+
181
+ **Systemd Service:**
182
+ ```ini
183
+ # /etc/systemd/system/loki.service
184
+ [Unit]
185
+ Description=Loki Log Aggregation System
186
+ After=network.target
187
+
188
+ [Service]
189
+ Type=simple
190
+ User=loki
191
+ ExecStart=/usr/local/bin/loki -config.file=/etc/loki/config.yml
192
+ Restart=always
193
+
194
+ [Install]
195
+ WantedBy=multi-user.target
196
+ ```
197
+
198
+ **Promtail (Log Shipper):**
199
+ ```yaml
200
+ # /etc/promtail/config.yml
201
+ server:
202
+ http_listen_port: 9080
203
+ grpc_listen_port: 0
204
+
205
+ positions:
206
+ filename: /var/lib/promtail/positions.yaml
207
+
208
+ clients:
209
+ - url: http://loki-server:3100/loki/api/v1/push
210
+
211
+ scrape_configs:
212
+ - job_name: system
213
+ static_configs:
214
+ - targets:
215
+ - localhost
216
+ labels:
217
+ job: varlogs
218
+ host: ${HOSTNAME}
219
+ __path__: /var/log/*log
220
+
221
+ - job_name: nginx
222
+ static_configs:
223
+ - targets:
224
+ - localhost
225
+ labels:
226
+ job: nginx
227
+ __path__: /var/log/nginx/*log
228
+
229
+ - job_name: application
230
+ static_configs:
231
+ - targets:
232
+ - localhost
233
+ labels:
234
+ job: myapp
235
+ __path__: /var/log/myapp/*.log
236
+ ```
237
+
238
+ ## Metrics Collection
239
+
240
+ ### Prometheus Node Exporter
241
+
242
+ **Install:**
243
+ ```bash
244
+ # Download node_exporter
245
+ wget https://github.com/prometheus/node_exporter/releases/download/v1.7.0/node_exporter-1.7.0.linux-amd64.tar.gz
246
+ tar xvfz node_exporter-1.7.0.linux-amd64.tar.gz
247
+ sudo cp node_exporter-1.7.0.linux-amd64/node_exporter /usr/local/bin/
248
+ ```
249
+
250
+ **Systemd Service:**
251
+ ```ini
252
+ # /etc/systemd/system/node_exporter.service
253
+ [Unit]
254
+ Description=Node Exporter
255
+ After=network.target
256
+
257
+ [Service]
258
+ Type=simple
259
+ User=node_exporter
260
+ ExecStart=/usr/local/bin/node_exporter \
261
+ --collector.filesystem.mount-points-exclude='^/(sys|proc|dev|run)($|/)' \
262
+ --collector.netclass.ignored-devices='^(veth|docker|lo).*'
263
+ Restart=always
264
+
265
+ [Install]
266
+ WantedBy=multi-user.target
267
+ ```
268
+
269
+ **Enable and Start:**
270
+ ```bash
271
+ sudo useradd -rs /bin/false node_exporter
272
+ sudo systemctl daemon-reload
273
+ sudo systemctl enable node_exporter
274
+ sudo systemctl start node_exporter
275
+
276
+ # Verify
277
+ curl http://localhost:9100/metrics
278
+ ```
279
+
280
+ ### Prometheus Server
281
+
282
+ **Install Prometheus:**
283
+ ```bash
284
+ wget https://github.com/prometheus/prometheus/releases/download/v2.47.0/prometheus-2.47.0.linux-amd64.tar.gz
285
+ tar xvfz prometheus-2.47.0.linux-amd64.tar.gz
286
+ sudo cp prometheus-2.47.0.linux-amd64/{prometheus,promtool} /usr/local/bin/
287
+ sudo mkdir -p /etc/prometheus /var/lib/prometheus
288
+ ```
289
+
290
+ **Configuration:**
291
+ ```yaml
292
+ # /etc/prometheus/prometheus.yml
293
+ global:
294
+ scrape_interval: 15s
295
+ evaluation_interval: 15s
296
+ external_labels:
297
+ cluster: 'production'
298
+ region: 'us-east-1'
299
+
300
+ # Alertmanager configuration
301
+ alerting:
302
+ alertmanagers:
303
+ - static_configs:
304
+ - targets:
305
+ - localhost:9093
306
+
307
+ # Load rules
308
+ rule_files:
309
+ - "alerts/*.yml"
310
+
311
+ scrape_configs:
312
+ # Prometheus itself
313
+ - job_name: 'prometheus'
314
+ static_configs:
315
+ - targets: ['localhost:9090']
316
+
317
+ # Node exporters
318
+ - job_name: 'node'
319
+ static_configs:
320
+ - targets:
321
+ - 'web1:9100'
322
+ - 'web2:9100'
323
+ - 'db1:9100'
324
+ labels:
325
+ env: 'production'
326
+ role: 'backend'
327
+
328
+ # Application metrics
329
+ - job_name: 'myapp'
330
+ static_configs:
331
+ - targets:
332
+ - 'web1:8080'
333
+ - 'web2:8080'
334
+ metrics_path: '/metrics'
335
+ ```
336
+
337
+ **Systemd Service:**
338
+ ```ini
339
+ # /etc/systemd/system/prometheus.service
340
+ [Unit]
341
+ Description=Prometheus
342
+ After=network.target
343
+
344
+ [Service]
345
+ Type=simple
346
+ User=prometheus
347
+ ExecStart=/usr/local/bin/prometheus \
348
+ --config.file=/etc/prometheus/prometheus.yml \
349
+ --storage.tsdb.path=/var/lib/prometheus \
350
+ --web.console.templates=/etc/prometheus/consoles \
351
+ --web.console.libraries=/etc/prometheus/console_libraries \
352
+ --storage.tsdb.retention.time=30d
353
+ Restart=always
354
+
355
+ [Install]
356
+ WantedBy=multi-user.target
357
+ ```
358
+
359
+ ### Telegraf
360
+
361
+ **Install:**
362
+ ```bash
363
+ wget -q https://repos.influxdata.com/influxdata-archive_compat.key
364
+ echo '393e8779c89ac8d958f81f942f9ad7fb82a25e133faddaf92e15b16e6ac9ce4c influxdata-archive_compat.key' | sha256sum -c && cat influxdata-archive_compat.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/influxdata-archive_compat.gpg > /dev/null
365
+ echo 'deb [signed-by=/etc/apt/trusted.gpg.d/influxdata-archive_compat.gpg] https://repos.influxdata.com/debian stable main' | sudo tee /etc/apt/sources.list.d/influxdata.list
366
+ sudo apt-get update && sudo apt-get install telegraf
367
+ ```
368
+
369
+ **Configuration:**
370
+ ```toml
371
+ # /etc/telegraf/telegraf.conf
372
+
373
+ [global_tags]
374
+ env = "production"
375
+ datacenter = "us-east-1"
376
+
377
+ [agent]
378
+ interval = "10s"
379
+ round_interval = true
380
+ metric_batch_size = 1000
381
+ metric_buffer_limit = 10000
382
+
383
+ # Output to InfluxDB
384
+ [[outputs.influxdb_v2]]
385
+ urls = ["http://influxdb:8086"]
386
+ token = "$INFLUX_TOKEN"
387
+ organization = "myorg"
388
+ bucket = "metrics"
389
+
390
+ # Output to Prometheus
391
+ [[outputs.prometheus_client]]
392
+ listen = ":9273"
393
+
394
+ # Input plugins
395
+ [[inputs.cpu]]
396
+ percpu = true
397
+ totalcpu = true
398
+ collect_cpu_time = false
399
+ report_active = false
400
+
401
+ [[inputs.disk]]
402
+ ignore_fs = ["tmpfs", "devtmpfs", "devfs", "iso9660", "overlay", "aufs", "squashfs"]
403
+
404
+ [[inputs.diskio]]
405
+
406
+ [[inputs.mem]]
407
+
408
+ [[inputs.net]]
409
+
410
+ [[inputs.system]]
411
+
412
+ [[inputs.processes]]
413
+
414
+ [[inputs.nginx]]
415
+ urls = ["http://localhost/nginx_status"]
416
+
417
+ [[inputs.postgresql]]
418
+ address = "host=localhost user=telegraf database=postgres sslmode=disable"
419
+ ```
420
+
421
+ ## APM Tools Integration
422
+
423
+ ### Application Metrics (Node.js Example)
424
+
425
+ ```javascript
426
+ // Express.js with Prometheus metrics
427
+ const express = require('express');
428
+ const promClient = require('prom-client');
429
+
430
+ const app = express();
431
+
432
+ // Create a Registry
433
+ const register = new promClient.Registry();
434
+
435
+ // Add default metrics
436
+ promClient.collectDefaultMetrics({ register });
437
+
438
+ // Custom metrics
439
+ const httpRequestDuration = new promClient.Histogram({
440
+ name: 'http_request_duration_seconds',
441
+ help: 'Duration of HTTP requests in seconds',
442
+ labelNames: ['method', 'route', 'status_code'],
443
+ buckets: [0.1, 0.5, 1, 2, 5]
444
+ });
445
+
446
+ const httpRequestTotal = new promClient.Counter({
447
+ name: 'http_requests_total',
448
+ help: 'Total number of HTTP requests',
449
+ labelNames: ['method', 'route', 'status_code']
450
+ });
451
+
452
+ register.registerMetric(httpRequestDuration);
453
+ register.registerMetric(httpRequestTotal);
454
+
455
+ // Middleware to track metrics
456
+ app.use((req, res, next) => {
457
+ const start = Date.now();
458
+
459
+ res.on('finish', () => {
460
+ const duration = (Date.now() - start) / 1000;
461
+ const route = req.route ? req.route.path : req.path;
462
+
463
+ httpRequestDuration.labels(req.method, route, res.statusCode).observe(duration);
464
+ httpRequestTotal.labels(req.method, route, res.statusCode).inc();
465
+ });
466
+
467
+ next();
468
+ });
469
+
470
+ // Metrics endpoint
471
+ app.get('/metrics', async (req, res) => {
472
+ res.set('Content-Type', register.contentType);
473
+ res.end(await register.metrics());
474
+ });
475
+
476
+ app.listen(3000);
477
+ ```
478
+
479
+ ## Dashboard Creation
480
+
481
+ ### Grafana Installation
482
+
483
+ ```bash
484
+ # Install Grafana
485
+ sudo apt-get install -y software-properties-common
486
+ sudo add-apt-repository "deb https://packages.grafana.com/oss/deb stable main"
487
+ wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
488
+ sudo apt-get update
489
+ sudo apt-get install grafana
490
+
491
+ # Start Grafana
492
+ sudo systemctl start grafana-server
493
+ sudo systemctl enable grafana-server
494
+
495
+ # Access: http://localhost:3000
496
+ # Default credentials: admin/admin
497
+ ```
498
+
499
+ ### Grafana Dashboard JSON (Node Exporter)
500
+
501
+ ```json
502
+ {
503
+ "dashboard": {
504
+ "title": "System Metrics",
505
+ "panels": [
506
+ {
507
+ "title": "CPU Usage",
508
+ "targets": [
509
+ {
510
+ "expr": "100 - (avg by(instance) (rate(node_cpu_seconds_total{mode=\"idle\"}[5m])) * 100)"
511
+ }
512
+ ],
513
+ "type": "graph"
514
+ },
515
+ {
516
+ "title": "Memory Usage",
517
+ "targets": [
518
+ {
519
+ "expr": "100 * (1 - ((node_memory_MemAvailable_bytes) / (node_memory_MemTotal_bytes)))"
520
+ }
521
+ ],
522
+ "type": "graph"
523
+ },
524
+ {
525
+ "title": "Disk Usage",
526
+ "targets": [
527
+ {
528
+ "expr": "100 - ((node_filesystem_avail_bytes{mountpoint=\"/\"} * 100) / node_filesystem_size_bytes{mountpoint=\"/\"})"
529
+ }
530
+ ],
531
+ "type": "gauge"
532
+ }
533
+ ]
534
+ }
535
+ }
536
+ ```
537
+
538
+ ### Common PromQL Queries
539
+
540
+ ```promql
541
+ # CPU usage per core
542
+ rate(node_cpu_seconds_total{mode!="idle"}[5m])
543
+
544
+ # Memory usage percentage
545
+ 100 * (1 - ((node_memory_MemAvailable_bytes) / (node_memory_MemTotal_bytes)))
546
+
547
+ # Disk I/O
548
+ rate(node_disk_read_bytes_total[5m])
549
+ rate(node_disk_written_bytes_total[5m])
550
+
551
+ # Network traffic
552
+ rate(node_network_receive_bytes_total{device!~"lo|veth.*"}[5m])
553
+ rate(node_network_transmit_bytes_total{device!~"lo|veth.*"}[5m])
554
+
555
+ # HTTP request rate
556
+ rate(http_requests_total[5m])
557
+
558
+ # 95th percentile response time
559
+ histogram_quantile(0.95, rate(http_request_duration_seconds_bucket[5m]))
560
+
561
+ # Error rate
562
+ rate(http_requests_total{status_code=~"5.."}[5m])
563
+ ```
564
+
565
+ ## Alert Configuration
566
+
567
+ ### Prometheus Alert Rules
568
+
569
+ ```yaml
570
+ # /etc/prometheus/alerts/system.yml
571
+ groups:
572
+ - name: system_alerts
573
+ interval: 30s
574
+ rules:
575
+ # High CPU usage
576
+ - alert: HighCPUUsage
577
+ expr: 100 - (avg by(instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 80
578
+ for: 5m
579
+ labels:
580
+ severity: warning
581
+ component: system
582
+ annotations:
583
+ summary: "High CPU usage on {{ $labels.instance }}"
584
+ description: "CPU usage is above 80% (current: {{ $value | humanize }}%)"
585
+
586
+ # High memory usage
587
+ - alert: HighMemoryUsage
588
+ expr: 100 * (1 - ((node_memory_MemAvailable_bytes) / (node_memory_MemTotal_bytes))) > 90
589
+ for: 5m
590
+ labels:
591
+ severity: warning
592
+ annotations:
593
+ summary: "High memory usage on {{ $labels.instance }}"
594
+ description: "Memory usage is above 90% (current: {{ $value | humanize }}%)"
595
+
596
+ # Disk space low
597
+ - alert: DiskSpaceLow
598
+ expr: 100 - ((node_filesystem_avail_bytes{mountpoint="/"} * 100) / node_filesystem_size_bytes{mountpoint="/"}) > 85
599
+ for: 10m
600
+ labels:
601
+ severity: warning
602
+ annotations:
603
+ summary: "Disk space low on {{ $labels.instance }}"
604
+ description: "Disk usage is above 85% (current: {{ $value | humanize }}%)"
605
+
606
+ # Instance down
607
+ - alert: InstanceDown
608
+ expr: up == 0
609
+ for: 1m
610
+ labels:
611
+ severity: critical
612
+ annotations:
613
+ summary: "Instance {{ $labels.instance }} is down"
614
+ description: "{{ $labels.instance }} has been down for more than 1 minute"
615
+ ```
616
+
617
+ ### Alertmanager Configuration
618
+
619
+ ```yaml
620
+ # /etc/alertmanager/alertmanager.yml
621
+ global:
622
+ resolve_timeout: 5m
623
+ slack_api_url: 'https://hooks.slack.com/services/YOUR/SLACK/WEBHOOK'
624
+
625
+ route:
626
+ group_by: ['alertname', 'cluster']
627
+ group_wait: 10s
628
+ group_interval: 10s
629
+ repeat_interval: 12h
630
+ receiver: 'slack-notifications'
631
+
632
+ routes:
633
+ - match:
634
+ severity: critical
635
+ receiver: 'pagerduty-critical'
636
+
637
+ - match:
638
+ severity: warning
639
+ receiver: 'slack-notifications'
640
+
641
+ receivers:
642
+ - name: 'slack-notifications'
643
+ slack_configs:
644
+ - channel: '#alerts'
645
+ title: 'Alert: {{ .GroupLabels.alertname }}'
646
+ text: '{{ range .Alerts }}{{ .Annotations.description }}{{ end }}'
647
+
648
+ - name: 'pagerduty-critical'
649
+ pagerduty_configs:
650
+ - service_key: 'YOUR_PAGERDUTY_KEY'
651
+
652
+ - name: 'email-team'
653
+ email_configs:
654
+ - to: 'team@example.com'
655
+ from: 'alerts@example.com'
656
+ smarthost: 'smtp.example.com:587'
657
+ auth_username: 'alerts@example.com'
658
+ auth_password: 'password'
659
+
660
+ inhibit_rules:
661
+ - source_match:
662
+ severity: 'critical'
663
+ target_match:
664
+ severity: 'warning'
665
+ equal: ['alertname', 'instance']
666
+ ```
667
+
668
+ ## Log Analysis
669
+
670
+ ### Log Parsing with grep/awk
671
+
672
+ ```bash
673
+ # Find errors in logs
674
+ grep -i error /var/log/myapp/app.log
675
+
676
+ # Count occurrences
677
+ grep -c "ERROR" /var/log/myapp/app.log
678
+
679
+ # Extract specific fields (Apache access log)
680
+ awk '{print $1, $7}' /var/log/apache2/access.log
681
+
682
+ # Top 10 IP addresses
683
+ awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -10
684
+
685
+ # HTTP status code summary
686
+ awk '{print $9}' /var/log/nginx/access.log | sort | uniq -c
687
+
688
+ # Response times over threshold
689
+ awk '$NF > 1.0 {print $0}' /var/log/app/access.log
690
+ ```
691
+
692
+ ### Log Analysis Scripts
693
+
694
+ ```bash
695
+ #!/bin/bash
696
+ # analyze-logs.sh - Automated log analysis
697
+
698
+ LOG_FILE="/var/log/myapp/app.log"
699
+ REPORT_FILE="/var/log/myapp/daily-report-$(date +%Y%m%d).txt"
700
+
701
+ {
702
+ echo "=== Log Analysis Report ==="
703
+ echo "Date: $(date)"
704
+ echo "Log file: $LOG_FILE"
705
+ echo ""
706
+
707
+ echo "=== Error Summary ==="
708
+ echo "Total errors: $(grep -c ERROR $LOG_FILE)"
709
+ echo "Total warnings: $(grep -c WARN $LOG_FILE)"
710
+ echo ""
711
+
712
+ echo "=== Top 10 Error Messages ==="
713
+ grep ERROR $LOG_FILE | awk -F'ERROR' '{print $2}' | sort | uniq -c | sort -rn | head -10
714
+ echo ""
715
+
716
+ echo "=== Errors by Hour ==="
717
+ grep ERROR $LOG_FILE | awk '{print $1, $2}' | cut -d: -f1 | uniq -c
718
+ echo ""
719
+
720
+ echo "=== Last 20 Errors ==="
721
+ grep ERROR $LOG_FILE | tail -20
722
+
723
+ } > $REPORT_FILE
724
+
725
+ echo "Report saved to $REPORT_FILE"
726
+ ```
727
+
728
+ ## Best Practices
729
+
730
+ ### 1. Monitoring Strategy
731
+
732
+ ```
733
+ The Four Golden Signals:
734
+ 1. Latency - Response time
735
+ 2. Traffic - Request rate
736
+ 3. Errors - Error rate
737
+ 4. Saturation - Resource utilization
738
+ ```
739
+
740
+ ### 2. Alert Design
741
+
742
+ - **Alert on symptoms, not causes**
743
+ - **Make alerts actionable**
744
+ - **Include context in notifications**
745
+ - **Avoid alert fatigue**
746
+ - **Set appropriate thresholds**
747
+
748
+ ### 3. Retention Policies
749
+
750
+ ```bash
751
+ # Logs
752
+ - Application logs: 30 days
753
+ - System logs: 90 days
754
+ - Audit logs: 1 year
755
+
756
+ # Metrics
757
+ - Raw metrics: 15 days (15s interval)
758
+ - 5min aggregates: 90 days
759
+ - 1hour aggregates: 2 years
760
+ ```
761
+
762
+ ### 4. Security
763
+
764
+ ```bash
765
+ # Secure metrics endpoints
766
+ # Use authentication
767
+ # Encrypt in transit (TLS)
768
+ # Limit access to monitoring systems
769
+ # Sanitize log data (no PII, no secrets)
770
+ ```
771
+
772
+ ### 5. Performance
773
+
774
+ ```bash
775
+ # Optimize collection intervals
776
+ # Use log sampling for high-volume
777
+ # Aggregate metrics appropriately
778
+ # Archive old data
779
+ # Monitor the monitoring system
780
+ ```
781
+
782
+ ---
783
+
784
+ **Related Topics:**
785
+ - See [troubleshooting-guide.md](troubleshooting-guide.md) for debugging with logs
786
+ - See [performance-tuning.md](performance-tuning.md) for metrics interpretation
787
+ - See [security-hardening.md](security-hardening.md) for audit logging