diff --git a/apps/api/src/routes/api/v1/applications/handlers.ts b/apps/api/src/routes/api/v1/applications/handlers.ts index 686eea8cc..d179aabfa 100644 --- a/apps/api/src/routes/api/v1/applications/handlers.ts +++ b/apps/api/src/routes/api/v1/applications/handlers.ts @@ -677,6 +677,24 @@ export async function getUsage(request) { return errorHandler({ status, message }) } } + +export async function getUsageByContainer(request) { + try { + const { id, containerId } = request.params + const teamId = request.user?.teamId; + let usage = {}; + + const application: any = await getApplicationFromDB(id, teamId); + if (application.destinationDockerId) { + [usage] = await Promise.all([getContainerUsage(application.destinationDocker.id, containerId)]); + } + return { + usage + } + } catch ({ status, message }) { + return errorHandler({ status, message }) + } +} export async function deployApplication(request: FastifyRequest) { try { const { id } = request.params diff --git a/apps/api/src/routes/api/v1/applications/index.ts b/apps/api/src/routes/api/v1/applications/index.ts index 1c230210f..4ac98d895 100644 --- a/apps/api/src/routes/api/v1/applications/index.ts +++ b/apps/api/src/routes/api/v1/applications/index.ts @@ -1,6 +1,6 @@ import { FastifyPluginAsync } from 'fastify'; import { OnlyId } from '../../../../types'; -import { cancelDeployment, checkDNS, checkDomain, checkRepository, cleanupUnconfiguredApplications, deleteApplication, deleteSecret, deleteStorage, deployApplication, getApplication, getApplicationLogs, getApplicationStatus, getBuildIdLogs, getBuildPack, getBuilds, getGitHubToken, getGitLabSSHKey, getImages, getPreviews, getPreviewStatus, getSecrets, getStorages, getUsage, listApplications, loadPreviews, newApplication, restartApplication, restartPreview, saveApplication, saveApplicationSettings, saveApplicationSource, saveBuildPack, saveConnectedDatabase, saveDeployKey, saveDestination, saveGitLabSSHKey, saveRepository, saveSecret, saveStorage, stopApplication, stopPreviewApplication, updatePreviewSecret, updateSecret } from './handlers'; +import { cancelDeployment, checkDNS, checkDomain, checkRepository, cleanupUnconfiguredApplications, deleteApplication, deleteSecret, deleteStorage, deployApplication, getApplication, getApplicationLogs, getApplicationStatus, getBuildIdLogs, getBuildPack, getBuilds, getGitHubToken, getGitLabSSHKey, getImages, getPreviews, getPreviewStatus, getSecrets, getStorages, getUsage, getUsageByContainer, listApplications, loadPreviews, newApplication, restartApplication, restartPreview, saveApplication, saveApplicationSettings, saveApplicationSource, saveBuildPack, saveConnectedDatabase, saveDeployKey, saveDestination, saveGitLabSSHKey, saveRepository, saveSecret, saveStorage, stopApplication, stopPreviewApplication, updatePreviewSecret, updateSecret } from './handlers'; import type { CancelDeployment, CheckDNS, CheckDomain, CheckRepository, DeleteApplication, DeleteSecret, DeleteStorage, DeployApplication, GetApplicationLogs, GetBuildIdLogs, GetBuilds, GetImages, RestartPreviewApplication, SaveApplication, SaveApplicationSettings, SaveApplicationSource, SaveDeployKey, SaveDestination, SaveSecret, SaveStorage, StopPreviewApplication } from './types'; @@ -51,6 +51,7 @@ const root: FastifyPluginAsync = async (fastify): Promise => { fastify.get('/:id/logs/build/:buildId', async (request) => await getBuildIdLogs(request)); fastify.get('/:id/usage', async (request) => await getUsage(request)) + fastify.get('/:id/usage/:containerId', async (request) => await getUsageByContainer(request)) fastify.post('/:id/deploy', async (request) => await deployApplication(request)) fastify.post('/:id/cancel', async (request, reply) => await cancelDeployment(request, reply)); diff --git a/apps/ui/src/routes/applications/[id]/logs/index.svelte b/apps/ui/src/routes/applications/[id]/logs/index.svelte index a716f0788..2de662d12 100644 --- a/apps/ui/src/routes/applications/[id]/logs/index.svelte +++ b/apps/ui/src/routes/applications/[id]/logs/index.svelte @@ -125,7 +125,7 @@ `${application.id}${service.name ? `-${service.name}` : ''}`} class="w-full rounded p-5 hover:bg-primary font-bold" > - Container: {application.id}{service.name ? `-${service.name}` : ''} {/each} diff --git a/apps/ui/src/routes/applications/[id]/usage.svelte b/apps/ui/src/routes/applications/[id]/usage.svelte index f9919ecee..7067c677e 100644 --- a/apps/ui/src/routes/applications/[id]/usage.svelte +++ b/apps/ui/src/routes/applications/[id]/usage.svelte @@ -1,11 +1,14 @@ @@ -38,21 +76,45 @@
Monitoring
-
-
-
-
Used Memory / Memory Limit
-
{usage?.MemUsage}
-
+
+ {#each services as service} + + {/each} +
+{#if selectedService} +
+ {#if usageLoading} + + Streaming logs + {/if} +
+
+
Used Memory / Memory Limit
+
{usage?.MemUsage}
+
-
-
Used CPU
-
{usage?.CPUPerc}
-
+
+
Used CPU
+
{usage?.CPUPerc}
+
-
-
Network IO
-
{usage?.NetIO}
+
+
Network IO
+
{usage?.NetIO}
+
-
+{/if}