diff --git a/findings/code_dashboard.html b/findings/code_dashboard.html new file mode 100644 index 0000000..f90c70e --- /dev/null +++ b/findings/code_dashboard.html @@ -0,0 +1,318 @@ + + + + + +Scrivas — Source Code & Reliability + + + +
+ +
+
+
Dasnuve · Cloud Discovery
+

Source Code Recovery & Reliability Triage

+
What is running on the Scrivas EC2 estate, where the source lives, and why production is fragile.
+
+
+ Account 716468089330
+ Region us-east-2 · 7 instances
+ 2026-08-28 · CONFIDENTIAL +
+
+ +
+
+
10
+
Repos recoverable on EC2
+
Full git history, not just build output
+
+
+
2
+
Frontends not recoverable
+
Deployed build only — no .git
+
+
+
23
+
Prod containers, one host
+
Incl. 3 × Postgres, Kafka, OpenSearch
+
+
+
0
+
Memory limits set
+
And zero swap, on all 7 instances
+
+
+ +
+
+ 01

The source code is recoverable — and that is time-sensitive

+ Scrivas_dev_env · ML_dev +
+ +
+ All 10 application repositories exist as complete git checkouts on Scrivas-owned instances, with full + commit history — not merely deployed artifacts. Scrivas can recover its codebase from its own AWS account today. +

Every repository points at a single external remote: git@git.devteam.space:scrivas/<repo>.git — + the incumbent contractor's self-hosted GitLab, which Scrivas does not control. The on-instance checkouts are + therefore the client's only independent leverage over their own source.

+
+ +
+
+
APP

Scrivas_dev_env /home/admin/

+
+ + + + + + + +
RepositoryCommitsLast commit
scrivas_backend13802026-08-28 · Vasilii
scrivas_gate1832026-08-14 · Vasilii
scrivas_search962026-06-24 · Azamat
patient592026-08-13 · vturtugeshev
+
+
+
ML

ML_dev /srv/

+
+ + + + + + + + + +
RepositoryCommitsLast commit
post_processor1372026-06-30
sai_suggestions932026-06-16
ml_monitoring622026-07-20
patient-summary-service492026-06-12
patient_document_parser412026-06-16
soniox_transcriber252026-06-16
+
+
+ +
+ The gap: /var/www/scrivas_frontend and /var/www/Scrivas_admin_frontend are + deployed build output with no .git. Frontend source cannot be recovered from EC2 and must be + obtained from the contractor's GitLab. +

Why this is urgent: scrivas_backend received a commit on the day of this assessment. + Development is active on infrastructure the contractor controls. Mirror all 10 repos + (git clone --mirror) to Scrivas-controlled storage before any contract conversation changes + access posture.

+
+
+ +
+
+ 02

Two tiers, two engineering standards

+ the better pattern already exists in-house +
+
+
+
APP

Application tier fragile

+

23 containers on a single hostencounter_api, + gate_api, patient_api, 8 Celery workers, celery_beat, + 3 × Postgres 17.5, Redis, Kafka, Debezium CDC, OpenSearch, autoheal.

+

Deployed by docker-compose directly from git checkouts. + No orchestration, no image registry, no immutable artifact.

+
+
+
ML

ML tier mature

+

Deployed from ECR + (…dkr.ecr.us-east-2…/scrivas/*) with commit-SHA image tags and + blue/green slots (dev-green-*, stage-blue-*).

+

Health checks defined and passing across every service. + This is a materially stronger delivery pipeline — and a template the application tier can adopt.

+
+
+
+ +
+
+ 03

Reliability findings

+ ranked by likely contribution to reported instability +
+
+ + + + + + + + + + + + + +
#FindingEvidenceRisk
1No memory limit on any prod containerHostConfig.Memory=0 on all 23High
2No swap on any instanceswapon --show empty, all 7High
3Prod at 73% memory at rest11 GiB used of 15 GiBHigh
4Whole stack on one host, incl. 3 databasesdocker ps — 23 containersHigh
53 prod containers set to never restartKafka, OpenSearch, search-api — policy noHigh
6Prod OS differs from dev/stageUbuntu 26.04 vs 24.04 elsewhereMedium
7autoheal deployed in productionwillfarrell/autoheal:1.2.0Medium
8Uncommitted config drift in prod checkoutsdocker-compose.yml.bkp, .env.saveMedium
947 interactive login sessions on produptime (32 on Ml_prod)Medium
10sai-suggestions-redis.service failedML_stage systemctl --state=failedLow
+
+ +
+
+ 04

Primary hypothesis: unbounded memory on a shared host

+
+ +

Production memory, at rest — before any workload spike:

+ +
+ 11 GiB used (73%) + 3.5 GiB cache + 441 MiB free + 0 B swap +
+ +
+ Findings 1–4 compound into a single failure mode. Production runs 23 containers — including three Postgres + instances, Kafka and OpenSearch — on one 15 GiB host already 73% consumed at rest, with + no per-container memory limits and no swap. A single Celery worker handling an oversized document + or audio chunk can exhaust host memory. With no limits, the kernel OOM killer selects by resident size — so it + will typically kill a database, not the worker that caused the problem. +

That yields precisely the profile a client reports as "random reliability issues": unpredictable, uncorrelated + with the triggering workload, and difficult to reproduce.

+

Finding 5 compounds recovery. Kafka, OpenSearch and search-api carry restart policy no — if + they die or the host reboots, they stay down until someone intervenes. Everything else is + unless-stopped, so a reboot yields a partially-recovered stack that looks healthy from the outside.

+

Finding 7 corroborates. Someone deliberately deployed autoheal, a daemon whose only job is + restarting containers that fail health checks. That treats a symptom — and indicates health-check failures were + frequent enough to be worth automating around.

+
+ +
+ What the evidence does not show — stated plainly, because it bounds the conclusion. +

· No OOM kill was captured. dmesg and journalctl on prod show no OOM events in + the retained window; State.OOMKilled is false on all 23 containers.

+

· No crash-looping. RestartCount is 0 on every prod container. The Celery workers + showing "Up 6 hours" were redeployed at 13:49 that day, not restarted by failure.

+

· last is not installed on prod, so reboot history could not be read there.

+

Findings 1–5 are therefore a demonstrated structural exposure, not an observed root cause. Confirming + the hypothesis requires history these instances do not currently retain — which is itself a finding.

+
+
+ +
+
05

Recommended next steps

+
+
+
NOW

Immediate

+
    +
  1. Mirror all 10 repos to Scrivas-controlled storage. Highest value, lowest effort, time-sensitive.
  2. +
  3. Set unless-stopped on Kafka, OpenSearch and search-api — removes the silent partial-recovery failure.
  4. +
+
PROVE

Confirm the hypothesis

+
    +
  1. Enable per-container memory metrics in CloudWatch — EC2-CloudWatchAgent-Role is already attached.
  2. +
  3. Add mem_limit per service, sized from observed peaks; add swap as an OOM buffer.
  4. +
  5. Query historic mem_used_percent to date the onset of instability.
  6. +
+
+
+
FIX

Structural

+
    +
  1. Move the three Postgres instances off the shared application host.
  2. +
  3. Align prod OS/AMI with stage — 26.04 vs 24.04 makes staging an unreliable rehearsal for production.
  4. +
  5. Extend the ML tier's pattern — ECR, commit-SHA tags, blue/green — to the application tier. The better pattern already exists in-house.
  6. +
  7. Reconcile config drift (.env.save, docker-compose.yml.bkp) into version control.
  8. +
  9. Audit the 47 interactive prod sessions.
  10. +
+
+
+
+ + +
+ + diff --git a/findings/ec2_code_discovery_report.md b/findings/ec2_code_discovery_report.md new file mode 100644 index 0000000..e3cd793 --- /dev/null +++ b/findings/ec2_code_discovery_report.md @@ -0,0 +1,142 @@ +# Scrivas — EC2 Code Discovery & Reliability Triage + +**Prepared by:** Dasnuve · **Date:** 2026-08-28 +**Access:** `dasnuve-scrivas-louis-impersonation` → `arn:aws:iam::716468089330:user/louis` +**Method:** Read-only EC2 describe + SSM `AWS-RunShellScript` probes (no writes, no restarts, no config changes). +**Scripts:** `scripts/ec2_code_discovery.py` (inventory), `scripts/ec2_code_inspect.py` (probes) +**Raw:** `findings/ec2_code_inspect.json`, `findings/ec2_code_inspect_prod.json` + +--- + +## 1. Headline: the source code is recoverable + +**All 10 application repositories exist as full git checkouts on Scrivas-owned EC2 instances**, with complete +history — not just deployed artifacts. The client can recover their codebase from their own account today. + +All repos point to a single external remote: + +> `git@git.devteam.space:scrivas/.git` + +`git.devteam.space` is the **incumbent contractor's self-hosted GitLab** (DevTeam.Space; commit authors are +`@devteamspace.com`). Scrivas does not control this host. The checkouts on EC2 are therefore the client's +only leverage over their own source. + +### Application repos — `Scrivas_dev_env` (i-010066e6c9027aa6e), `/home/admin/` + +| Repo | Commits | Branch | Last commit | +|---|---:|---|---| +| `scrivas_backend` | **1380** | `dev` | 2026-08-28 — Vasilii | +| `scrivas_gate` | 183 | `dev` | 2026-08-14 — Vasilii | +| `scrivas_search` | 96 | `dev` | 2026-06-24 — Azamat | +| `patient` | 59 | `dev` | 2026-08-13 — vturtugeshev@webiomed.ru | + +### ML repos — `ML_dev` (i-095bd68aff22b103b), `/srv/` + +| Repo | Commits | Last commit | +|---|---:|---| +| `post_processor` | 137 | 2026-06-30 — Yegor Kovalev | +| `sai_suggestions` | 93 | 2026-06-16 | +| `ml_monitoring` | 62 | 2026-07-20 | +| `patient-summary-service` | 49 | 2026-06-12 | +| `patient_document_parser` | 41 | 2026-06-16 | +| `soniox_transcriber` | 25 | 2026-06-16 | + +**Not in git:** `/var/www/scrivas_frontend` and `/var/www/Scrivas_admin_frontend` on the dev box are +**deployed build output only — no `.git`**. Frontend source is *not* recoverable from EC2 and must come +from the contractor's GitLab. This is the one genuine gap. + +### Recommended immediate action +Mirror all 10 repos (`git clone --mirror`) off the instances to Scrivas-controlled storage **before** any +contract conversation changes access posture. `scrivas_backend` received a commit *today* — the contractor +is actively developing, so the on-box checkouts are current. + +--- + +## 2. Architecture as actually deployed + +Two clearly different engineering standards are in play. + +**Application tier — `scrivas_prod_env` (i-073154fb4fa773bbd), Ubuntu 26.04, m6a.xlarge, 15 GiB** +23 containers on a **single host**: `encounter_api`, `gate_api`, `patient_api`, 8 Celery workers, +`celery_beat`, **3× Postgres 17.5**, Redis 8.2.1, Kafka 4.1.1, Debezium CDC 2.7.3, OpenSearch, autoheal. +Deployed via `docker-compose` from git checkouts. No orchestration, no registry. + +**ML tier — `Ml_prod` / `ML_stage` / `ML_dev`, 7.6 GiB** +Deployed from **ECR** (`716468089330.dkr.ecr.us-east-2.amazonaws.com/scrivas/*`) with commit-SHA image +tags and **blue/green slots** (`dev-green-*`, `stage-blue-*`). Health checks present and passing. +This tier is materially more mature than the application tier. + +**`Netbird_scrivas` (i-02754e7ae419cd5db)** — NetBird VPN mesh (server, dashboard, Traefik v3.6). + +--- + +## 3. Reliability findings + +Ranked by likely contribution to the reported instability. + +| # | Finding | Evidence | Risk | +|---|---|---|---| +| 1 | **No memory limit on any prod container** | `HostConfig.Memory=0` on all 23 | **High** | +| 2 | **No swap on any instance** | `swapon --show` empty, all 7 | **High** | +| 3 | **Prod at 11 GiB / 15 GiB (73%) steady-state** | `free -h` | **High** | +| 4 | **Entire prod stack on one host — incl. 3 databases** | `docker ps` | **High** | +| 5 | **Three prod containers have restart policy `no`** | `scrivas-kafka`, `scrivas-opensearch`, `scrivas_search-search-api-1` | **High** | +| 6 | **Prod OS differs from dev/stage** | prod Ubuntu 26.04 vs 24.04 elsewhere | Medium | +| 7 | **`autoheal` deployed in prod** | `willfarrell/autoheal:1.2.0` | Medium | +| 8 | **Uncommitted config drift in prod checkouts** | `docker-compose.yml.bkp`, `.bkpwithlogs`, `src/gate/.env.save` | Medium | +| 9 | **47 interactive login sessions on prod** | `uptime` (32 on `Ml_prod`) | Medium | +| 10 | `sai-suggestions-redis.service` failed on ML_stage | `systemctl --state=failed` | Low | + +### The primary hypothesis: unbounded memory on a shared host + +Findings 1–4 compound into one failure mode. Prod runs 23 containers — including three Postgres +instances, Kafka, and OpenSearch — on a single 15 GiB box that is already **73% consumed at rest**, +with **no per-container memory limits** and **no swap**. Any single Celery worker processing an +oversized document or audio chunk can exhaust host memory. With no limits, the kernel OOM killer +chooses the victim — and it will typically pick the largest RSS process, which is a **database**, not +the worker that caused the problem. + +That produces exactly the symptom profile a client describes as "random reliability issues": +unpredictable, uncorrelated with the triggering workload, and hard to reproduce. + +Finding 5 makes it worse. Kafka, OpenSearch, and the search API have restart policy `no` — if they +die or the host reboots, **they stay down** until someone intervenes manually. Everything else is +`unless-stopped`, so a reboot yields a partially-recovered stack. + +The presence of `autoheal` (finding 7) is corroborating: someone deliberately installed a daemon whose +only job is restarting containers that fail health checks. That is treatment of a symptom, and it tells +us health-check failures were frequent enough to be worth automating around. + +### What the evidence does *not* show + +Stated plainly, because it constrains the conclusion: + +- **No OOM kill was captured in the current logs.** `dmesg` and `journalctl` on prod show no OOM events + in the retained window. `State.OOMKilled` is `false` on all 23 containers. +- **No crash-looping.** `RestartCount` is **0** on every prod container. The Celery workers showing + "Up 6 hours" were **redeployed** at 13:49 today, not restarted by failure. +- `last` is not installed on prod, so reboot history could not be read there. + +So findings 1–5 are a demonstrated **structural exposure**, not an observed root cause. Confirming the +hypothesis requires history the boxes do not currently retain. + +--- + +## 4. Recommended next steps + +**Immediately** +1. Mirror all 10 repos to Scrivas-controlled storage. Highest-value, lowest-effort, time-sensitive. +2. Set restart policy to `unless-stopped` on Kafka, OpenSearch, and search-api. + +**To confirm the memory hypothesis** — the current boxes cannot answer this from retained logs +3. Enable CloudWatch per-container memory metrics (the `EC2-CloudWatchAgent-Role` profile is already attached). +4. Add `mem_limit` per service in compose, sized from observed peaks; add swap as an OOM buffer. +5. Query CloudWatch for historic `mem_used_percent` on prod to date the onset of instability. + +**Structural** +6. Move the three Postgres instances off the shared application host. +7. Align prod OS/AMI with stage (26.04 vs 24.04 makes staging an unreliable rehearsal). +8. Extend the ML tier's ECR + commit-SHA + blue/green pattern to the application tier — the better + pattern already exists in-house. +9. Reconcile the uncommitted prod config drift into version control. +10. Audit the 47 interactive prod sessions. diff --git a/findings/ec2_code_inspect.json b/findings/ec2_code_inspect.json new file mode 100644 index 0000000..fef6563 --- /dev/null +++ b/findings/ec2_code_inspect.json @@ -0,0 +1,302 @@ +{ + "generated": "2026-08-28T15:49:39.403488-04:00", + "region": "us-east-2", + "probes": [ + "os_release", + "uptime_load", + "disk", + "memory", + "code_dirs", + "git_checkouts", + "git_remotes", + "manifests", + "processes", + "listening", + "systemd_units", + "systemd_failed", + "docker", + "docker_images", + "oom_kills", + "svc_restarts", + "reboots", + "cron" + ], + "results": { + "i-095bd68aff22b103b": { + "os_release": { + "status": "Success", + "stdout": "PRETTY_NAME=\"Ubuntu 24.04.4 LTS\"\nNAME=\"Ubuntu\"\nVERSION_ID=\"24.04\"\nVERSION=\"24.04.4 LTS (Noble Numbat)\"\nVERSION_CODENAME=noble\nID=ubuntu\nID_LIKE=debian\nHOME_URL=\"https://www.ubuntu.com/\"\nSUPPORT_URL=\"https://help.ubuntu.com/\"\nBUG_REPORT_URL=\"https://bugs.launchpad.net/ubuntu/\"\nPRIVACY_POLICY_URL=\"https://www.ubuntu.com/legal/terms-and-policies/privacy-policy\"\nUBUNTU_CODENAME=noble\nLOGO=ubuntu-logo\nLinux ip-172-31-26-26 7.0.0-1010-aws #10~24.04.1-Ubuntu SMP PREEMPT Mon Jul 27 17:41:33 UTC 2026 x86_64 x86_64 x86_64 GNU/Linux", + "stderr": "" + }, + "uptime_load": { + "status": "Success", + "stdout": " 19:49:42 up 15 days, 13:34, 0 user, load average: 0.07, 0.11, 0.09\n0.07 0.11 0.09 1/556 3708993", + "stderr": "" + }, + "disk": { + "status": "Success", + "stdout": "Filesystem Size Used Avail Use% Mounted on\n/dev/root 193G 46G 148G 24% /\ntmpfs 3.8G 0 3.8G 0% /dev/shm\ntmpfs 1.6G 2.2M 1.6G 1% /run\ntmpfs 5.0M 0 5.0M 0% /run/lock\nefivarfs 128K 3.8K 120K 4% /sys/firmware/efi/efivars\n/dev/nvme0n1p16 881M 202M 617M 25% /boot\n/dev/nvme0n1p15 105M 6.2M 99M 6% /boot/efi\noverlay 193G 46G 148G 24% /var/lib/docker/rootfs/overlayfs/e44ad8ada982413e134a0f808f5258611b96a2be7e5e78186d8098aef0ef5e42\noverlay 193G 46G 148G 24% /var/lib/docker/rootfs/overlayfs/d991d98f4a596c46d465054646dbf70ed26353b02a78c1c7c9752fe31650373c\noverlay 193G 46G 148G 24% /var/lib/docker/rootfs/overlayfs/f6063b3345a8dc4cb95c1142a63c2492122ed481aaf4120267445e9eabe926ac\noverlay 193G 46G 148G 24% /var/lib/docker/rootfs/overlayfs/0698fd968fa90c2803cc9168d05554a2af6f1f25f0280bae4ae0b5fbd84136aa\noverlay 193G 46G 148G 24% /var/lib/docker/rootfs/overlayfs/ac62d3eaf65e4733f6f83f85f409553724b99a0b87494ebfc3d607b0295cd84d\noverlay 193G 46G 148G 24% /var/lib/docker/rootfs/overlayfs/a8f1465efc695cbe55fc1b0a2a3352ad0532104847f062065bd3dc7e7075a5aa\noverlay 193G 46G 148G 24% /var/lib/docker/rootfs/overlayfs/15f495363998b7c196826202b6aa584976bf8b4a37ece873c3d3869caa973efe\noverlay 193G 46G 148G 24% /var/lib/docker/rootfs/overlayfs/e14d551d7fb67c76ff6533c116b0a70ba63f6523034278e508aa891c7fb4cc6e\noverlay 193G 46G 148G 24% /var/lib/docker/rootfs/overlayfs/d1bb2ab90222d9a4a1fc77c300dd48907993721c1b95ed4bead27653a20d3a07\noverlay 193G 46G 148G 24% /var/lib/docker/rootfs/overlayfs/e1312221d3f3e67b195ca1d561cce9984cd71cde22d7f04bf04b13558a8160b3\noverlay 193G 46G 148G 24% /var/lib/docker/rootfs/overlayfs/dcc956a69830a91dd3c16703e5653dfa277c007c2e8ceb6a516171ca0367cefa\noverlay 193G 46G 148G 24% /var/lib/docker/rootfs/overlayfs/83dcd9e8930be916501aef45855ffbf3b4eeba87ccc4ececf30198be162c5cd5\noverlay 193G 46G 148G 24% /var/lib/docker/rootfs/overlayfs/58d8d5bb29c0eae51f0fd8601bf8c1ef5163bae1ad41b2be27ce04e0ccdc052c\n--- inodes\nFilesystem Inodes IUsed IFree IUse% Mounted on\n/dev/root 26083328 763326 25320002 3% /\ntmpfs 989732 2 989730 1% /dev/shm\ntmpfs 819200 1143 818057 1% /run\ntmpfs 989732 3 989729 1% /run/lock\nefivarfs 0 0 0 - /sys/firmware/efi/efivars\n/dev/nvme0n1p16 58496 605 57891 2% /boot\n/dev/nvme0n1p15 0 0 0 - /boot/efi\noverlay 26083328 763326 25320002 3% /var/lib/docker/rootfs/overlayfs/e44ad8ada982413e134a0f808f5258611b96a2be7e5e78186d8098aef0ef5e42\noverlay 26083328 763326 25320002 3% /var/lib/docker/rootfs/overlayfs/d991d98f4a596c46d465054646dbf70ed26353b02a78c1c7c9752fe31650373c\noverlay 26083328 763326 25320002 3% /var/lib/docker/rootfs/overlayfs/f6063b3345a8dc4cb95c1142a63c2492122ed481aaf4120267445e9eabe926ac\noverlay 26083328 763326 25320002 3% /var/lib/docker/rootfs/overlayfs/0698fd968fa90c2803cc9168d05554a2af6f1f25f0280bae4ae0b5fbd84136aa\noverlay 26083328 763326 25320002 3% /var/lib/docker/rootfs/overlayfs/ac62d3eaf65e4733f6f83f85f409553724b99a0b87494ebfc3d607b0295cd84d\noverlay 26083328 763326 25320002 3% /var/lib/docker/rootfs/overlayfs/a8f1465efc695cbe55fc1b0a2a3352ad0532104847f062065bd3dc7e7075a5aa\noverlay 26083328 763326 25320002 3% /var/lib/docker/rootfs/overlayfs/15f495363998b7c196826202b6aa584976bf8b4a37ece873c3d3869caa973efe\noverlay 26083328 763326 25320002 3% /var/lib/docker/rootfs/overlayfs/e14d551d7fb67c76ff6533c116b0a70ba63f6523034278e508aa891c7fb4cc6e\noverlay 26083328 763326 25320002 3% /var/lib/docker/rootfs/overlayfs/d1bb2ab90222d9a4a1fc77c300dd48907993721c1b95ed4bead27653a20d3a07\noverlay 26083328 763326 25320002 3% /var/lib/docker/rootfs/overlayfs/e1312221d3f3e67b195ca1d561cce9984cd71cde22d7f04bf04b13558a8160b3\noverlay 26083328 763326 25320002 3% /var/lib/docker/rootfs/overlayfs/dcc956a69830a91dd3c16703e5653dfa277c007c2e8ceb6a516171ca0367cefa\noverlay 26083328 763326 25320002 3% /var/lib/docker/rootfs/overlayfs/83dcd9e8930be916501aef45855ffbf3b4eeba87ccc4ececf30198be162c5cd5\noverlay 26083328 763326 25320002 3% /var/lib/docker/rootfs/overlayfs/58d8d5bb29c0eae51f0fd8601bf8c1ef5163bae1ad41b2be27ce04e0ccdc052c", + "stderr": "" + }, + "memory": { + "status": "Success", + "stdout": " total used free shared buff/cache available\nMem: 7.6Gi 2.3Gi 2.5Gi 4.4Mi 3.1Gi 5.3Gi\nSwap: 0B 0B 0B\n--- swap", + "stderr": "" + }, + "code_dirs": { + "status": "Success", + "stdout": "/home:\ntotal 20\ndrwxr-xr-x 5 root root 4096 Jun 23 16:13 .\ndrwxr-xr-x 23 root root 4096 Aug 13 06:14 ..\ndrwxr-x--- 5 deploy deploy 4096 Jul 13 12:56 deploy\ndrwxr-x--- 2 gitlab-runner gitlab-runner 4096 Jun 23 16:13 gitlab-runner\ndrwxr-x--- 12 ubuntu ubuntu 4096 Jun 18 06:32 ubuntu\n\n/opt:\ntotal 40\ndrwxr-xr-x 6 root root 4096 Jul 15 13:42 .\ndrwxr-xr-x 23 root root 4096 Aug 13 06:14 ..\n-rw-rw-r-- 1 deploy deploy 797 Jul 9 18:26 .env\n-rw-r--r-- 1 deploy deploy 689 Jun 16 04:10 .env.bak.20260616-041003\ndrwxr-xr-x 5 root root 4096 Aug 26 00:53 aws\ndrwx--x--x 4 root root 4096 Mar 5 15:13 containerd\n-rw-r--r-- 1 root root 2412 Nov 30 2023 default\n-rw-r--r-- 1 root root 1659 Jun 23 11:01 ml-dev\ndrwxr-xr-x 11 root root 4096 Jun 18 10:06 patient-summary-service\ndrwxr-xr-x 14 root root 4096 Jun 16 10:13 post_processor\n\n/srv:\ntotal 56\ndrwxr-xr-x 10 ubuntu ubuntu 4096 Jun 24 09:22 .\ndrwxr-xr-x 23 root root 4096 Aug 13 06:14 ..\n-rw-rw-r-- 1 ubuntu ubuntu 15164 Mar 31 19:00 AGENTS.md\ndrwxr-xr-x 9 deploy deploy 4096 Jul 20 19:37 ml_monitoring\ndrwxr-xr-x 11 ubuntu ubuntu 4096 Jun 16 15:05 patient-summary-service\ndrwxr-xr-x 12 ubuntu ubuntu 4096 Jun 16 15:04 patient_document_parser\ndrwxr-xr-x 14 deploy deploy 4096 Jun 30 15:39 post_processor\ndrwxr-xr-x 2 root root 4096 Jun 24 09:22 redis-tls\ndrwxr-xr-x 4 root root 4096 Jun 24 08:55 redis_db\ndrwxr-xr-x 23 ubuntu ubuntu 4096 Jun 16 03:33 sai_suggestions\ndrwxr-xr-x 11 ubuntu ubuntu 4096 Jun 16 03:33 soniox_transcriber\n\n/var/www:\ntotal 12\ndrwxr-xr-x 3 root root 4096 May 1 12:04 .\ndrwxr-xr-x 14 root root 4096 May 1 12:04 ..\ndrwxr-xr-x 2 root root 4096 May 1 12:04 html", + "stderr": "" + }, + "git_checkouts": { + "status": "Success", + "stdout": "/srv/sai_suggestions/.git\n/srv/patient-summary-service/.git\n/srv/patient_document_parser/.git\n/srv/ml_monitoring/.git\n/srv/post_processor/.git\n/srv/soniox_transcriber/.git\n/opt/patient-summary-service/.git\n/opt/post_processor/.git\n/home/ubuntu/.codex/.tmp/plugins/.git", + "stderr": "" + }, + "git_remotes": { + "status": "Success", + "stdout": "== /srv/sai_suggestions\n== /srv/patient-summary-service\n== /srv/patient_document_parser\n== /srv/ml_monitoring\n== /srv/post_processor\n== /srv/soniox_transcriber\n== /opt/patient-summary-service\norigin\tgit@git.devteam.space:scrivas/patient-summary-service.git (fetch)\norigin\tgit@git.devteam.space:scrivas/patient-summary-service.git (push)\n7178a26575e261dbf889f40c974f607bb3c91ca7 Fri Jun 12 03:43:55 2026 +0500 Yegor Kovalev phi_logging: never crash the service when the audit log is unwritable (SOC 2 deploy fix)\n## dev...origin/dev\n== /opt/post_processor\norigin\tgit@git.devteam.space:scrivas/post_processor.git (fetch)\norigin\tgit@git.devteam.space:scrivas/post_processor.git (push)\n2f5cd0ada1c96f10616f378668c9b8cb99f73fc9 Tue Jun 16 08:29:18 2026 +0500 Yegor Kovalev SOC 2: Redis auth+TLS + loopback bind (host-net)\n## dev...origin/dev\n== /home/ubuntu/.codex/.tmp/plugins", + "stderr": "" + }, + "manifests": { + "status": "Success", + "stdout": "/usr/share/doc/python3-botocore/requirements.txt\n/srv/sai_suggestions/requirements.txt\n/srv/sai_suggestions/tests/e2e/docker-compose.yml\n/srv/sai_suggestions/pyproject.toml\n/srv/sai_suggestions/Dockerfile\n/srv/sai_suggestions/docker-compose.yml\n/srv/patient-summary-service/requirements.txt\n/srv/patient-summary-service/pyproject.toml\n/srv/patient-summary-service/Dockerfile\n/srv/patient-summary-service/docker-compose.yml\n/srv/patient_document_parser/requirements.txt\n/srv/patient_document_parser/Dockerfile\n/srv/patient_document_parser/docker-compose.yml\n/srv/ml_monitoring/tests/mocks/Dockerfile\n/srv/ml_monitoring/pyproject.toml\n/srv/ml_monitoring/docker-compose.yml\n/srv/post_processor/requirements.txt\n/srv/post_processor/pyproject.toml\n/srv/post_processor/docker/Dockerfile\n/srv/soniox_transcriber/requirements.txt\n/srv/soniox_transcriber/tests/e2e/docker-compose.yml\n/srv/soniox_transcriber/pyproject.toml\n/srv/soniox_transcriber/docker/Dockerfile\n/srv/soniox_transcriber/docker/docker-compose.yml\n/opt/patient-summary-service/requirements.txt\n/opt/patient-summary-service/pyproject.toml\n/opt/patient-summary-service/Dockerfile\n/opt/patient-summary-service/docker-compose.yml\n/opt/post_processor/requirements.txt\n/opt/post_processor/pyproject.toml\n/opt/post_processor/docker/Dockerfile\n/opt/post_processor/docker/docker-compose.yml\n/home/ubuntu/.vscode-server/extensions/github.copilot-chat-0.36.2/package.json\n/home/ubuntu/.vscode-server/extensions/openai.chatgpt-26.609.30741-linux-x64/package.json\n/home/ubuntu/.vscode-server/extensions/openai.chatgpt-26.527.60818-linux-x64/package.json\n/home/ubuntu/.vscode-server/extensions/github.copilot-1.388.0/package.json\n/home/ubuntu/.vscode-server/extensions/github.vscode-pull-request-github-0.126.0/package.json", + "stderr": "" + }, + "processes": { + "status": "Success", + "stdout": "USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND\nubuntu 3541290 0.2 3.8 547092 305344 ? Ssl Aug25 11:07 /usr/local/bin/python3.11 /usr/local/bin/uvicorn main:app --host 0.0.0.0 --port 8000\nroot 3536532 0.2 3.7 541604 299376 ? Ssl Aug25 12:31 /usr/local/bin/python3.11 /usr/local/bin/uvicorn sai_suggestions.api.main:app --host 0.0.0.0 --port 8000\nroot 3538327 0.2 3.2 978320 258268 ? Ssl Aug25 10:33 /usr/local/bin/python3.11 /usr/local/bin/uvicorn app.main:app --host 0.0.0.0 --port 8000\nroot 2202636 0.2 3.2 643376 254172 ? Ssl Aug27 4:02 python -m app.main\nubuntu 3538482 0.2 3.0 502032 238000 ? Ssl Aug25 9:46 /usr/local/bin/python3.11 /usr/local/bin/uvicorn app:app --host 0.0.0.0 --port 8000\n472 1652 0.0 1.9 1530556 150580 ? Ssl Aug13 20:31 grafana server --homepath=/usr/share/grafana --config=/etc/grafana/grafana.ini --packaging=docker cfg:default.log.mode=console cfg:default.paths.data=/var/lib/grafana cfg:default.paths.logs=/var/log/grafana cfg:default.paths.plugins=/var/lib/grafana/plugins cfg:default.paths.provisioning=/etc/grafana/provisioning\nroot 1653 0.1 1.2 1402200 95976 ? Ssl Aug13 23:36 traefik traefik --providers.docker=true --providers.docker.exposedbydefault=false --providers.docker.network=traefik-net --entrypoints.web.address=:8090 --entrypoints.internal.address=:8091\nroot 815 0.5 1.0 2673500 80284 ? Ssl Aug13 114:41 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock\nnobody 1720 0.1 0.8 1752732 67052 ? Ssl Aug13 40:37 /bin/prometheus --web.listen-address=0.0.0.0:9090 --config.file=/tmp/prometheus.yml --storage.tsdb.path=/prometheus --storage.tsdb.retention.time=7d\nroot 651 0.3 0.8 2573492 63364 ? Ssl Aug13 80:21 /usr/bin/containerd\nroot 30117 0.1 0.7 1068508 55696 ? Ssl Aug13 38:38 /opt/aws/amazon-guardduty-agent/bin/amazon-guardduty-agent --worker-threads 8\nroot 2429504 0.3 0.6 1380784 52960 ? Sl Aug24 21:03 /snap/netbird/242/bin/netbird service run\nroot 3006517 0.0 0.6 83352 47916 ? S> /var/log/docker_clean.log 2>&1", + "stderr": "" + } + }, + "i-046e7fc4677eaa796": { + "os_release": { + "status": "Success", + "stdout": "PRETTY_NAME=\"Ubuntu 24.04.4 LTS\"\nNAME=\"Ubuntu\"\nVERSION_ID=\"24.04\"\nVERSION=\"24.04.4 LTS (Noble Numbat)\"\nVERSION_CODENAME=noble\nID=ubuntu\nID_LIKE=debian\nHOME_URL=\"https://www.ubuntu.com/\"\nSUPPORT_URL=\"https://help.ubuntu.com/\"\nBUG_REPORT_URL=\"https://bugs.launchpad.net/ubuntu/\"\nPRIVACY_POLICY_URL=\"https://www.ubuntu.com/legal/terms-and-policies/privacy-policy\"\nUBUNTU_CODENAME=noble\nLOGO=ubuntu-logo\nLinux ip-172-31-15-39 7.0.0-1010-aws #10~24.04.1-Ubuntu SMP PREEMPT Mon Jul 27 17:41:33 UTC 2026 x86_64 x86_64 x86_64 GNU/Linux", + "stderr": "" + }, + "uptime_load": { + "status": "Success", + "stdout": " 19:50:28 up 15 days, 13:15, 0 user, load average: 0.09, 0.14, 0.15\n0.09 0.14 0.15 1/567 3544357", + "stderr": "" + }, + "disk": { + "status": "Success", + "stdout": "Filesystem Size Used Avail Use% Mounted on\n/dev/root 193G 16G 177G 9% /\ntmpfs 3.8G 0 3.8G 0% /dev/shm\ntmpfs 1.6G 2.1M 1.6G 1% /run\ntmpfs 5.0M 0 5.0M 0% /run/lock\nefivarfs 128K 3.8K 120K 4% /sys/firmware/efi/efivars\n/dev/nvme0n1p16 881M 202M 617M 25% /boot\n/dev/nvme0n1p15 105M 6.2M 99M 6% /boot/efi\noverlay 193G 16G 177G 9% /var/lib/docker/rootfs/overlayfs/dc4f0eea66d0ef7f68fdbce545dde313a70dc31cb7ebc974151456fc00e32c9b\noverlay 193G 16G 177G 9% /var/lib/docker/rootfs/overlayfs/593c1f008ef4b3435f5c87dba7aaf3e0e7626474afd85723bf20f39641b17ebd\noverlay 193G 16G 177G 9% /var/lib/docker/rootfs/overlayfs/09d2bcc0019a83128cefc04bd3fe7b285139300fb719785c3eaff8f25a455049\noverlay 193G 16G 177G 9% /var/lib/docker/rootfs/overlayfs/8bf98332778bea88cef93a3a7f2f3aae75adf266af13595c32097f84d1455cc3\noverlay 193G 16G 177G 9% /var/lib/docker/rootfs/overlayfs/d3082c17054f4df1d0f4153c227394c5c81a21cdddc77dcd780522d299d38a9b\noverlay 193G 16G 177G 9% /var/lib/docker/rootfs/overlayfs/70b3522388f403c2ca8efc798a3e70d6ede66cba286abb5f9dbb983eb7c4d029\noverlay 193G 16G 177G 9% /var/lib/docker/rootfs/overlayfs/585d70b786a8639b2ef434cfb94b3e671b7b43eeef79939c425e8141486479b0\noverlay 193G 16G 177G 9% /var/lib/docker/rootfs/overlayfs/f789b113f1043cffd988aaecaf20b779671d7b9147c2c74ea51ef20780f21919\noverlay 193G 16G 177G 9% /var/lib/docker/rootfs/overlayfs/02bfe27dc799c3db9b2ee96fa2b4dc580091cc1cf6339a2ef606d332da728d37\noverlay 193G 16G 177G 9% /var/lib/docker/rootfs/overlayfs/0a15f48f5e0ff2766db09d7424a7422d15f039604897123ab18bde5967306b7f\noverlay 193G 16G 177G 9% /var/lib/docker/rootfs/overlayfs/18171bc17d5e150474540790ed497f21043316b3787e247c5b3f47ea78679f17\noverlay 193G 16G 177G 9% /var/lib/docker/rootfs/overlayfs/d6e65594744f415245bd590bb829cba8cf2e472fb3760eaa48643245fc93bdea\noverlay 193G 16G 177G 9% /var/lib/docker/rootfs/overlayfs/212e6f24ca3a19a26aa952f2efd504b980ed4af6b1e33908ea7eb52a9e0118c9\n--- inodes\nFilesystem Inodes IUsed IFree IUse% Mounted on\n/dev/root 26083328 406304 25677024 2% /\ntmpfs 989732 2 989730 1% /dev/shm\ntmpfs 819200 1110 818090 1% /run\ntmpfs 989732 3 989729 1% /run/lock\nefivarfs 0 0 0 - /sys/firmware/efi/efivars\n/dev/nvme0n1p16 58496 605 57891 2% /boot\n/dev/nvme0n1p15 0 0 0 - /boot/efi\noverlay 26083328 406304 25677024 2% /var/lib/docker/rootfs/overlayfs/dc4f0eea66d0ef7f68fdbce545dde313a70dc31cb7ebc974151456fc00e32c9b\noverlay 26083328 406304 25677024 2% /var/lib/docker/rootfs/overlayfs/593c1f008ef4b3435f5c87dba7aaf3e0e7626474afd85723bf20f39641b17ebd\noverlay 26083328 406304 25677024 2% /var/lib/docker/rootfs/overlayfs/09d2bcc0019a83128cefc04bd3fe7b285139300fb719785c3eaff8f25a455049\noverlay 26083328 406304 25677024 2% /var/lib/docker/rootfs/overlayfs/8bf98332778bea88cef93a3a7f2f3aae75adf266af13595c32097f84d1455cc3\noverlay 26083328 406304 25677024 2% /var/lib/docker/rootfs/overlayfs/d3082c17054f4df1d0f4153c227394c5c81a21cdddc77dcd780522d299d38a9b\noverlay 26083328 406304 25677024 2% /var/lib/docker/rootfs/overlayfs/70b3522388f403c2ca8efc798a3e70d6ede66cba286abb5f9dbb983eb7c4d029\noverlay 26083328 406304 25677024 2% /var/lib/docker/rootfs/overlayfs/585d70b786a8639b2ef434cfb94b3e671b7b43eeef79939c425e8141486479b0\noverlay 26083328 406304 25677024 2% /var/lib/docker/rootfs/overlayfs/f789b113f1043cffd988aaecaf20b779671d7b9147c2c74ea51ef20780f21919\noverlay 26083328 406304 25677024 2% /var/lib/docker/rootfs/overlayfs/02bfe27dc799c3db9b2ee96fa2b4dc580091cc1cf6339a2ef606d332da728d37\noverlay 26083328 406304 25677024 2% /var/lib/docker/rootfs/overlayfs/0a15f48f5e0ff2766db09d7424a7422d15f039604897123ab18bde5967306b7f\noverlay 26083328 406304 25677024 2% /var/lib/docker/rootfs/overlayfs/18171bc17d5e150474540790ed497f21043316b3787e247c5b3f47ea78679f17\noverlay 26083328 406304 25677024 2% /var/lib/docker/rootfs/overlayfs/d6e65594744f415245bd590bb829cba8cf2e472fb3760eaa48643245fc93bdea\noverlay 26083328 406304 25677024 2% /var/lib/docker/rootfs/overlayfs/212e6f24ca3a19a26aa952f2efd504b980ed4af6b1e33908ea7eb52a9e0118c9", + "stderr": "" + }, + "memory": { + "status": "Success", + "stdout": " total used free shared buff/cache available\nMem: 7.6Gi 2.3Gi 834Mi 3.9Mi 4.7Gi 5.2Gi\nSwap: 0B 0B 0B\n--- swap", + "stderr": "" + }, + "code_dirs": { + "status": "Success", + "stdout": "/home:\ntotal 20\ndrwxr-xr-x 5 root root 4096 Jul 1 10:18 .\ndrwxr-xr-x 22 root root 4096 Aug 13 06:35 ..\ndrwxr-x--- 5 deploy deploy 4096 Jul 1 12:11 deploy\ndrwxr-x--- 2 gitlab-runner gitlab-runner 4096 Jul 1 10:18 gitlab-runner\ndrwxr-x--- 11 ubuntu ubuntu 4096 Jul 14 07:05 ubuntu\n\n/opt:\ntotal 32\ndrwxr-xr-x 5 root root 4096 Jul 15 15:14 .\ndrwxr-xr-x 22 root root 4096 Aug 13 06:35 ..\n-rw-rw-r-- 1 deploy deploy 663 Jun 24 11:34 .env\ndrwxr-xr-x 5 root root 4096 Aug 26 00:53 aws\ndrwx--x--x 4 root root 4096 Mar 5 14:10 containerd\n-rw-r--r-- 1 root root 4325 May 6 11:05 default\ndrwxr-xr-x 3 root root 4096 Jul 14 06:57 redis-tls\n\n/srv:\ntotal 56\ndrwxr-xr-x 10 ubuntu ubuntu 4096 Jul 14 07:01 .\ndrwxr-xr-x 22 root root 4096 Aug 13 06:35 ..\n-rw-rw-r-- 1 ubuntu ubuntu 13833 Mar 23 13:13 AGENTS.md\ndrwxr-xr-x 7 deploy deploy 4096 Jul 20 19:38 ml_monitoring\ndrwxr-xr-x 10 ubuntu ubuntu 4096 Jun 29 20:13 patient-summary-service\ndrwxr-xr-x 9 ubuntu ubuntu 4096 Jun 29 20:13 patient_document_parser\ndrwxr-xr-x 13 ubuntu ubuntu 4096 Jun 29 20:13 post_processor\ndrwxr-xr-x 2 root root 4096 Jul 15 12:47 redis-tls\ndrwxr-xr-x 4 root root 4096 Jul 1 18:06 redis_db\ndrwxr-xr-x 23 ubuntu ubuntu 4096 Jun 29 20:13 sai_suggestions\ndrwxr-xr-x 10 ubuntu ubuntu 4096 Jun 29 20:13 soniox_transcriber\n\n/var/www:\ntotal 12\ndrwxr-xr-x 3 root root 4096 May 5 07:11 .\ndrwxr-xr-x 14 root root 4096 May 5 07:11 ..\ndrwxr-xr-x 2 root root 4096 May 5 07:11 html", + "stderr": "" + }, + "git_checkouts": { + "status": "Success", + "stdout": "/srv/sai_suggestions/.git\n/srv/patient-summary-service/.git\n/srv/patient_document_parser/.git\n/srv/ml_monitoring/.git\n/srv/post_processor/.git\n/srv/soniox_transcriber/.git\n/home/ubuntu/.codex/.tmp/plugins/.git", + "stderr": "" + }, + "git_remotes": { + "status": "Success", + "stdout": "== /srv/sai_suggestions\n== /srv/patient-summary-service\n== /srv/patient_document_parser\n== /srv/ml_monitoring\n== /srv/post_processor\n== /srv/soniox_transcriber\n== /home/ubuntu/.codex/.tmp/plugins", + "stderr": "" + }, + "manifests": { + "status": "Success", + "stdout": "/usr/share/doc/python3-botocore/requirements.txt\n/srv/sai_suggestions/requirements.txt\n/srv/sai_suggestions/tests/e2e/docker-compose.yml\n/srv/sai_suggestions/pyproject.toml\n/srv/sai_suggestions/Dockerfile\n/srv/sai_suggestions/docker-compose.yml\n/srv/patient-summary-service/requirements.txt\n/srv/patient-summary-service/pyproject.toml\n/srv/patient-summary-service/Dockerfile\n/srv/patient-summary-service/docker-compose.yml\n/srv/patient_document_parser/requirements.txt\n/srv/patient_document_parser/Dockerfile\n/srv/patient_document_parser/docker-compose.yml\n/srv/ml_monitoring/tests/mocks/Dockerfile\n/srv/ml_monitoring/pyproject.toml\n/srv/ml_monitoring/docker-compose.yml\n/srv/post_processor/requirements.txt\n/srv/post_processor/pyproject.toml\n/srv/post_processor/docker/Dockerfile\n/srv/post_processor/docker/docker-compose.yml\n/srv/soniox_transcriber/requirements.txt\n/srv/soniox_transcriber/tests/e2e/docker-compose.yml\n/srv/soniox_transcriber/pyproject.toml\n/srv/soniox_transcriber/docker/Dockerfile\n/srv/soniox_transcriber/docker/docker-compose.yml\n/home/ubuntu/.vscode-server/extensions/github.copilot-chat-0.36.2/package.json\n/home/ubuntu/.vscode-server/extensions/openai.chatgpt-26.506.31421-linux-x64/package.json\n/home/ubuntu/.vscode-server/extensions/openai.chatgpt-26.429.30905-linux-x64/package.json\n/home/ubuntu/.vscode-server/extensions/github.copilot-1.388.0/package.json\n/home/ubuntu/.vscode-server/extensions/github.vscode-pull-request-github-0.126.0/package.json", + "stderr": "" + }, + "processes": { + "status": "Success", + "stdout": "USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND\nroot 1791 0.2 4.0 1110456 322956 ? Ssl Aug13 50:34 /usr/local/bin/python3.11 /usr/local/bin/uvicorn app.main:app --host 0.0.0.0 --port 8000\nubuntu 1859 0.2 3.9 550928 312692 ? Ssl Aug13 53:11 /usr/local/bin/python3.11 /usr/local/bin/uvicorn main:app --host 0.0.0.0 --port 8000\nroot 1857 0.2 3.8 684340 301360 ? Ssl Aug13 58:17 /usr/local/bin/python3.11 /usr/local/bin/uvicorn sai_suggestions.api.main:app --host 0.0.0.0 --port 8000\nroot 2091197 0.2 3.2 644384 259620 ? Ssl Aug27 4:12 python -m app.main\nubuntu 2803851 0.2 3.0 501016 243864 ? Ssl Aug21 22:05 /usr/local/bin/python3.11 /usr/local/bin/uvicorn app:app --host 0.0.0.0 --port 8000\n472 1887 0.0 2.0 1538692 165088 ? Ssl Aug13 22:21 grafana server --homepath=/usr/share/grafana --config=/etc/grafana/grafana.ini --packaging=docker cfg:default.log.mode=console cfg:default.paths.data=/var/lib/grafana cfg:default.paths.logs=/var/log/grafana cfg:default.paths.plugins=/var/lib/grafana/plugins cfg:default.paths.provisioning=/etc/grafana/provisioning\nroot 850 0.5 1.4 2692076 114856 ? Ssl Aug13 115:49 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock\nnobody 1788 0.1 1.3 1757612 110120 ? Ssl Aug13 42:20 /bin/prometheus --web.listen-address=0.0.0.0:9090 --config.file=/tmp/prometheus.yml --storage.tsdb.path=/prometheus --storage.tsdb.retention.time=7d\nroot 1778 0.1 1.2 1402200 95220 ? Ssl Aug13 22:40 traefik traefik --providers.docker=true --providers.docker.exposedbydefault=false --providers.docker.network=traefik-net --entrypoints.web.address=:8090 --entrypoints.internal.address=:8091\nroot 548 0.0 0.9 1365648 77652 ? Ssl Aug13 9:36 /usr/bin/gitlab-runner run --config /etc/gitlab-runner/config.toml --working-directory /home/gitlab-runner --service gitlab-runner --user gitlab-runner\nroot 551 0.4 0.8 1282016 67988 ? Ssl Aug13 94:50 /usr/bin/netbird service run --log-level info --daemon-addr unix:///var/run/netbird.sock --log-file /var/log/netbird/client.log\nroot 618 0.3 0.8 2514128 66892 ? Ssl Aug13 75:44 /usr/bin/containerd\nroot 11880 0.1 0.7 998760 58708 ? Ssl Aug13 39:01 /opt/aws/amazon-guardduty-agent/bin/amazon-guardduty-agent --worker-threads 8\nroot 1485944 0.0 0.6 107768 51588 ? S> /var/log/docker_clean.log 2>&1", + "stderr": "" + } + }, + "i-02754e7ae419cd5db": { + "os_release": { + "status": "Success", + "stdout": "PRETTY_NAME=\"Ubuntu 24.04.4 LTS\"\nNAME=\"Ubuntu\"\nVERSION_ID=\"24.04\"\nVERSION=\"24.04.4 LTS (Noble Numbat)\"\nVERSION_CODENAME=noble\nID=ubuntu\nID_LIKE=debian\nHOME_URL=\"https://www.ubuntu.com/\"\nSUPPORT_URL=\"https://help.ubuntu.com/\"\nBUG_REPORT_URL=\"https://bugs.launchpad.net/ubuntu/\"\nPRIVACY_POLICY_URL=\"https://www.ubuntu.com/legal/terms-and-policies/privacy-policy\"\nUBUNTU_CODENAME=noble\nLOGO=ubuntu-logo\nLinux ip-172-31-19-86 7.0.0-1010-aws #10~24.04.1-Ubuntu SMP PREEMPT Mon Jul 27 17:41:33 UTC 2026 x86_64 x86_64 x86_64 GNU/Linux", + "stderr": "" + }, + "uptime_load": { + "status": "Success", + "stdout": " 19:51:11 up 15 days, 13:25, 0 user, load average: 0.19, 0.12, 0.10\n0.19 0.12 0.10 2/328 105213", + "stderr": "" + }, + "disk": { + "status": "Success", + "stdout": "Filesystem Size Used Avail Use% Mounted on\n/dev/root 24G 6.4G 17G 28% /\ntmpfs 2.0G 0 2.0G 0% /dev/shm\ntmpfs 782M 1.2M 781M 1% /run\ntmpfs 5.0M 0 5.0M 0% /run/lock\n/dev/xvda16 881M 202M 617M 25% /boot\n/dev/xvda15 105M 6.2M 99M 6% /boot/efi\noverlay 24G 6.4G 17G 28% /var/lib/docker/rootfs/overlayfs/ec16e04fb310adc22427b12093cf855bbcb4bb10f23444feb6791372e27fc66d\noverlay 24G 6.4G 17G 28% /var/lib/docker/rootfs/overlayfs/efac20386cb64dd82f0dcd510beef519f21f25a1e7ebb621277334c8f8dc415f\noverlay 24G 6.4G 17G 28% /var/lib/docker/rootfs/overlayfs/b83f92da28a542a416d2524d0e2d12bef5f19d71a0302b8fe6ece3706e84066f\n--- inodes\nFilesystem Inodes IUsed IFree IUse% Mounted on\n/dev/root 3145728 163314 2982414 6% /\ntmpfs 500170 2 500168 1% /dev/shm\ntmpfs 819200 758 818442 1% /run\ntmpfs 500170 3 500167 1% /run/lock\n/dev/xvda16 58496 605 57891 2% /boot\n/dev/xvda15 0 0 0 - /boot/efi\noverlay 3145728 163314 2982414 6% /var/lib/docker/rootfs/overlayfs/ec16e04fb310adc22427b12093cf855bbcb4bb10f23444feb6791372e27fc66d\noverlay 3145728 163314 2982414 6% /var/lib/docker/rootfs/overlayfs/efac20386cb64dd82f0dcd510beef519f21f25a1e7ebb621277334c8f8dc415f\noverlay 3145728 163314 2982414 6% /var/lib/docker/rootfs/overlayfs/b83f92da28a542a416d2524d0e2d12bef5f19d71a0302b8fe6ece3706e84066f", + "stderr": "" + }, + "memory": { + "status": "Success", + "stdout": " total used free shared buff/cache available\nMem: 3.8Gi 859Mi 391Mi 2.1Mi 2.9Gi 3.0Gi\nSwap: 0B 0B 0B\n--- swap", + "stderr": "" + }, + "code_dirs": { + "status": "Failed", + "stdout": "/home:\ntotal 12\ndrwxr-xr-x 3 root root 4096 Mar 12 14:41 .\ndrwxr-xr-x 22 root root 4096 Aug 13 06:25 ..\ndrwxr-x--- 4 ubuntu ubuntu 4096 Mar 12 18:00 ubuntu\n\n/opt:\ntotal 16\ndrwxr-xr-x 4 root root 4096 Mar 17 07:41 .\ndrwxr-xr-x 22 root root 4096 Aug 13 06:25 ..\ndrwxr-xr-x 5 root root 4096 Aug 26 00:53 aws\ndrwx--x--x 4 root root 4096 Mar 17 07:41 containerd\n\n/srv:\ntotal 28\ndrwxr-xr-x 3 root root 4096 Jun 11 20:58 .\ndrwxr-xr-x 22 root root 4096 Aug 13 06:25 ..\ndrwxr-xr-x 3 root root 4096 Jun 11 20:58 backup\n-rw-r--r-- 1 root root 4687 Mar 17 08:01 compose.yml\n-rw-r--r-- 1 root root 850 Mar 17 08:01 config.yaml\n-rw-r--r-- 1 root root 515 Mar 17 08:01 dashboard.env", + "stderr": "failed to run commands: exit status 2" + }, + "git_checkouts": { + "status": "Success", + "stdout": "", + "stderr": "" + }, + "git_remotes": { + "status": "Success", + "stdout": "", + "stderr": "" + }, + "manifests": { + "status": "Success", + "stdout": "/usr/share/doc/python3-botocore/requirements.txt", + "stderr": "" + }, + "processes": { + "status": "Success", + "stdout": "USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND\nroot 1253 0.2 2.6 1404280 107588 ? Ssl Aug13 58:26 traefik traefik --log.level=INFO --accesslog=true --providers.docker=true --providers.docker.exposedbydefault=false --providers.docker.network=netbird --entrypoints.web.address=:80 --entrypoints.websecure.address=:443 --entrypoints.websecure.allowACMEByPass=true --entrypoints.websecure.transport.respondingTimeouts.readTimeout=0 --entrypoints.websecure.transport.respondingTimeouts.writeTimeout=0 --entrypoints.websecure.transport.respondingTimeouts.idleTimeout=0 --entrypoints.web.http.redirections.entrypoint.to=websecure --entrypoints.web.http.redirections.entrypoint.scheme=https --certificatesresolvers.letsencrypt.acme.email=dilbag@devteamspace.com --certificatesresolvers.letsencrypt.acme.storage=/letsencrypt/acme.json --certificatesresolvers.letsencrypt.acme.tlschallenge=true --serverstransport.forwardingtimeouts.responseheadertimeout=0s --serverstransport.forwardingtimeouts.idleconntimeout=0s\nroot 783 0.0 2.2 2533408 90852 ? Ssl Aug13 17:17 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock\nroot 1252 0.1 1.9 2033336 77536 ? Ssl Aug13 36:44 /go/bin/netbird-server --config /etc/netbird/config.yaml\nroot 1932 0.2 1.5 998780 60872 ? Ssl Aug13 49:58 /opt/aws/amazon-guardduty-agent/bin/amazon-guardduty-agent --worker-threads 8\nroot 101706 0.0 1.2 87900 50444 ? S> /var/log/docker_clean.log 2>&1\n0 7 * * * /usr/local/bin/scrivas_db_backup.sh >> /var/log/scrivas_db_backup.log 2>&1", + "stderr": "" + } + }, + "i-067bdb5e3e09fa4bb": { + "os_release": { + "status": "Success", + "stdout": "PRETTY_NAME=\"Ubuntu 24.04.4 LTS\"\nNAME=\"Ubuntu\"\nVERSION_ID=\"24.04\"\nVERSION=\"24.04.4 LTS (Noble Numbat)\"\nVERSION_CODENAME=noble\nID=ubuntu\nID_LIKE=debian\nHOME_URL=\"https://www.ubuntu.com/\"\nSUPPORT_URL=\"https://help.ubuntu.com/\"\nBUG_REPORT_URL=\"https://bugs.launchpad.net/ubuntu/\"\nPRIVACY_POLICY_URL=\"https://www.ubuntu.com/legal/terms-and-policies/privacy-policy\"\nUBUNTU_CODENAME=noble\nLOGO=ubuntu-logo\nLinux ip-10-0-1-150 7.0.0-1010-aws #10~24.04.1-Ubuntu SMP PREEMPT Mon Jul 27 17:41:33 UTC 2026 x86_64 x86_64 x86_64 GNU/Linux", + "stderr": "" + }, + "uptime_load": { + "status": "Success", + "stdout": " 19:45:38 up 16 days, 5:35, 0 user, load average: 0.15, 0.16, 0.16\n0.15 0.16 0.16 3/1229 2739524", + "stderr": "" + }, + "disk": { + "status": "Success", + "stdout": "Filesystem Size Used Avail Use% Mounted on\n/dev/root 96G 16G 80G 17% /\ntmpfs 7.7G 0 7.7G 0% /dev/shm\ntmpfs 3.1G 3.0M 3.1G 1% /run\ntmpfs 5.0M 0 5.0M 0% /run/lock\nefivarfs 128K 3.8K 120K 4% /sys/firmware/efi/efivars\n/dev/nvme0n1p16 881M 202M 617M 25% /boot\n/dev/nvme0n1p15 105M 6.2M 99M 6% /boot/efi\noverlay 96G 16G 80G 17% /var/lib/docker/overlay2/28ba7f3e35319f1480c8d8193af048312e745b065bb13f80dc87662af0838403/merged\noverlay 96G 16G 80G 17% /var/lib/docker/overlay2/ad509b912b834237bf9732c1faf0efd80cfc2b72153c2c8d00a1b0100cad453c/merged\noverlay 96G 16G 80G 17% /var/lib/docker/overlay2/c0debd712a9ca5ffd579f78d63c7903a453c196e9e42004e7ec20c596e0d50a8/merged\noverlay 96G 16G 80G 17% /var/lib/docker/overlay2/28b964f070481a4633a2024696b3da1e197649cd2bdc0c8dba0fd81ded2a8cc2/merged\noverlay 96G 16G 80G 17% /var/lib/docker/overlay2/0a2c06eff8eb026a05281657bcdef0ee9ab04b4e36a0c139da255fa001c0a010/merged\noverlay 96G 16G 80G 17% /var/lib/docker/overlay2/358848c577ab5c132ed74f0effc87e5e860eade5507962a6c80873019f8ff6f4/merged\noverlay 96G 16G 80G 17% /var/lib/docker/overlay2/43549ef0bef3ec2637cd1df336317b2923ed41145fd320493fbaa751e13a1b47/merged\noverlay 96G 16G 80G 17% /var/lib/docker/overlay2/627369fdf8a2fed2a8a8dde7c7fd96a5eba98fcc1d0e3256a4c7becb742ea714/merged\noverlay 96G 16G 80G 17% /var/lib/docker/overlay2/bca46b3d2d49c2f84cbb67c441b11bd10a5254a17e10dda0c2ec4235b66b9069/merged\noverlay 96G 16G 80G 17% /var/lib/docker/overlay2/92aabb6d051121d8c9ea6a424769cdc1fb7616f09976fb4b03124ede80381745/merged\noverlay 96G 16G 80G 17% /var/lib/docker/overlay2/7977a95da76b4838464ae92735f6e20f5f28b57634fbe017c5b98b7e015747fc/merged\noverlay 96G 16G 80G 17% /var/lib/docker/overlay2/96e90adf0ef4c4a22ee11a068a9221c1f96132158bbdb2f6093b840c47d06051/merged\noverlay 96G 16G 80G 17% /var/lib/docker/overlay2/70fa11d2a7fc4e8b3c0f4c18c72c4c82382438093aab17425653bdc362269ef3/merged\noverlay 96G 16G 80G 17% /var/lib/docker/overlay2/6561a8f209218743b045c6e8b95eeb8bf3fa8115ad21acef44f50f16e63954e8/merged\noverlay 96G 16G 80G 17% /var/lib/docker/overlay2/3adcc5aa23b95eda02584f7b490d18005076c2f2221fabe76f24985bb8166d6b/merged\noverlay 96G 16G 80G 17% /var/lib/docker/overlay2/a518fd40b32679abfd38de7c972b5b919c20256112a6489b06437538c6fe9e7f/merged\noverlay 96G 16G 80G 17% /var/lib/docker/overlay2/62cb76bcdf6865c07e0256426c9bd7e2421325cc67a108d6f3294117248843bf/merged\noverlay 96G 16G 80G 17% /var/lib/docker/overlay2/a3f75435b9c6fc5c4c05a1cc2c7d2d08227a0e5700d4862b3ceaed1949e10748/merged\noverlay 96G 16G 80G 17% /var/lib/docker/overlay2/9dc3838d3e2b7b57e13d51b9561aac4d080519b4680093e71ffeb24473d8277f/merged\noverlay 96G 16G 80G 17% /var/lib/docker/overlay2/76741ea319152b7980d71be9b285d392aa2f6947f19758f5c6d02292877cc180/merged\noverlay 96G 16G 80G 17% /var/lib/docker/overlay2/126409ff68c44b53a49924b11b1d5678c3d3e201c20cab4e71e07ddf4237c73e/merged\noverlay 96G 16G 80G 17% /var/lib/docker/overlay2/fdc90124d466f0b0d9b27a6f5b3b047e2887acedfb2cf05db63af6fcd80ea6ee/merged\noverlay 96G 16G 80G 17% /var/lib/docker/overlay2/8beb16bf04eb60c683d481beae2c589468ae35ca8b087fbed7f5c88fb981efa9/merged\noverlay 96G 16G 80G 17% /var/lib/docker/overlay2/a8e29fe6c8dd6f7f06a80147397b9bcde103ac70b2266199ec7292be3f9450f0/merged\n--- inodes\nFilesystem Inodes IUsed IFree IUse% Mounted on\n/dev/root 12976128 382874 12593254 3% /\ntmpfs 1998796 2 1998794 1% /dev/shm\ntmpfs 819200 1364 817836 1% /run\ntmpfs 1998796 3 1998793 1% /run/lock\nefivarfs 0 0 0 - /sys/firmware/efi/efivars\n/dev/nvme0n1p16 58496 605 57891 2% /boot\n/dev/nvme0n1p15 0 0 0 - /boot/efi\noverlay 12976128 382874 12593254 3% /var/lib/docker/overlay2/28ba7f3e35319f1480c8d8193af048312e745b065bb13f80dc87662af0838403/merged\noverlay 12976128 382874 12593254 3% /var/lib/docker/overlay2/ad509b912b834237bf9732c1faf0efd80cfc2b72153c2c8d00a1b0100cad453c/merged\noverlay 12976128 382874 12593254 3% /var/lib/docker/overlay2/c0debd712a9ca5ffd579f78d63c7903a453c196e9e42004e7ec20c596e0d50a8/merged\noverlay 12976128 382874 12593254 3% /var/lib/docker/overlay2/28b964f070481a4633a2024696b3da1e197649cd2bdc0c8dba0fd81ded2a8cc2/merged\noverlay 12976128 382874 12593254 3% /var/lib/docker/overlay2/0a2c06eff8eb026a05281657bcdef0ee9ab04b4e36a0c139da255fa001c0a010/merged\noverlay 12976128 382874 12593254 3% /var/lib/docker/overlay2/358848c577ab5c132ed74f0effc87e5e860eade5507962a6c80873019f8ff6f4/merged\noverlay 12976128 382874 12593254 3% /var/lib/docker/overlay2/43549ef0bef3ec2637cd1df336317b2923ed41145fd320493fbaa751e13a1b47/merged\noverlay 12976128 382874 12593254 3% /var/lib/docker/overlay2/627369fdf8a2fed2a8a8dde7c7fd96a5eba98fcc1d0e3256a4c7becb742ea714/merged\noverlay 12976128 382874 12593254 3% /var/lib/docker/overlay2/bca46b3d2d49c2f84cbb67c441b11bd10a5254a17e10dda0c2ec4235b66b9069/merged\noverlay 12976128 382874 12593254 3% /var/lib/docker/overlay2/92aabb6d051121d8c9ea6a424769cdc1fb7616f09976fb4b03124ede80381745/merged\noverlay 12976128 382874 12593254 3% /var/lib/docker/overlay2/7977a95da76b4838464ae92735f6e20f5f28b57634fbe017c5b98b7e015747fc/merged\noverlay 12976128 382874 12593254 3% /var/lib/docker/overlay2/96e90adf0ef4c4a22ee11a068a9221c1f96132158bbdb2f6093b840c47d06051/merged\noverlay 12976128 382874 12593254 3% /var/lib/docker/overlay2/70fa11d2a7fc4e8b3c0f4c18c72c4c82382438093aab17425653bdc362269ef3/merged\noverlay 12976128 382874 12593254 3% /var/lib/docker/overlay2/6561a8f209218743b045c6e8b95eeb8bf3fa8115ad21acef44f50f16e63954e8/merged\noverlay 12976128 382874 12593254 3% /var/lib/docker/overlay2/3adcc5aa23b95eda02584f7b490d18005076c2f2221fabe76f24985bb8166d6b/merged\noverlay 12976128 382874 12593254 3% /var/lib/docker/overlay2/a518fd40b32679abfd38de7c972b5b919c20256112a6489b06437538c6fe9e7f/merged\noverlay 12976128 382874 12593254 3% /var/lib/docker/overlay2/62cb76bcdf6865c07e0256426c9bd7e2421325cc67a108d6f3294117248843bf/merged\noverlay 12976128 382874 12593254 3% /var/lib/docker/overlay2/a3f75435b9c6fc5c4c05a1cc2c7d2d08227a0e5700d4862b3ceaed1949e10748/merged\noverlay 12976128 382874 12593254 3% /var/lib/docker/overlay2/9dc3838d3e2b7b57e13d51b9561aac4d080519b4680093e71ffeb24473d8277f/merged\noverlay 12976128 382874 12593254 3% /var/lib/docker/overlay2/76741ea319152b7980d71be9b285d392aa2f6947f19758f5c6d02292877cc180/merged\noverlay 12976128 382874 12593254 3% /var/lib/docker/overlay2/126409ff68c44b53a49924b11b1d5678c3d3e201c20cab4e71e07ddf4237c73e/merged\noverlay 12976128 382874 12593254 3% /var/lib/docker/overlay2/fdc90124d466f0b0d9b27a6f5b3b047e2887acedfb2cf05db63af6fcd80ea6ee/merged\noverlay 12976128 382874 12593254 3% /var/lib/docker/overlay2/8beb16bf04eb60c683d481beae2c589468ae35ca8b087fbed7f5c88fb981efa9/merged\noverlay 12976128 382874 12593254 3% /var/lib/docker/overlay2/a8e29fe6c8dd6f7f06a80147397b9bcde103ac70b2266199ec7292be3f9450f0/merged", + "stderr": "" + }, + "memory": { + "status": "Success", + "stdout": " total used free shared buff/cache available\nMem: 15Gi 10Gi 709Mi 180Mi 4.5Gi 4.7Gi\nSwap: 0B 0B 0B\n--- swap", + "stderr": "" + }, + "code_dirs": { + "status": "Success", + "stdout": "/home:\ntotal 16\ndrwxr-xr-x 4 root root 4096 Mar 26 14:45 .\ndrwxr-xr-x 22 root root 4096 Aug 12 14:10 ..\ndrwxr-x--- 11 admin admin 4096 Aug 3 09:47 admin\ndrwxr-x--- 5 ubuntu ubuntu 4096 Jul 14 08:32 ubuntu\n\n/opt:\ntotal 36\ndrwxr-xr-x 5 root root 4096 Apr 6 18:12 .\ndrwxr-xr-x 22 root root 4096 Aug 12 14:10 ..\ndrwxr-xr-x 4 root root 4096 Aug 26 00:53 aws\ndrwx--x--x 4 root root 4096 Mar 26 14:42 containerd\n-rw-r--r-- 1 root root 2412 Nov 30 2023 default\ndrwxr-xr-x 3 root root 4096 Mar 26 15:48 gitlab-runner\n-rw-r--r-- 1 root root 8381 Mar 27 14:34 scrivas_stage.bkp\n\n/srv:\ntotal 16\ndrwxr-xr-x 3 root root 4096 Jul 14 07:43 .\ndrwxr-xr-x 22 root root 4096 Aug 12 14:10 ..\ndrwxr-xr-x 3 root root 4096 Jul 14 07:43 backups\n-rwxr-xr-x 1 root root 2080 Jun 17 11:55 docker_clean.sh\n\n/var/www:\ntotal 24\ndrwxr-xr-x 6 root root 4096 Jun 2 13:37 .\ndrwxr-xr-x 14 root root 4096 Mar 26 14:42 ..\ndrwxr-xr-x 2 admin www-data 4096 Jun 2 13:43 .well-known\ndrwxr-xr-x 3 admin www-data 4096 Aug 28 11:04 Scrivas_admin_frontend\ndrwxr-xr-x 2 root root 4096 Mar 31 10:39 html\ndrwxr-xr-x 3 admin www-data 4096 Aug 26 14:20 scrivas_frontend", + "stderr": "" + }, + "git_checkouts": { + "status": "Success", + "stdout": "/home/admin/scrivas_backend/.git\n/home/admin/patient/.git\n/home/admin/scrivas_gate/.git\n/home/admin/scrivas_search/.git", + "stderr": "" + }, + "git_remotes": { + "status": "Success", + "stdout": "== /home/admin/scrivas_backend\n== /home/admin/patient\n== /home/admin/scrivas_gate\n== /home/admin/scrivas_search", + "stderr": "" + }, + "manifests": { + "status": "Success", + "stdout": "/usr/share/doc/python3-botocore/requirements.txt\n/home/admin/scrivas_backend/pyproject.toml\n/home/admin/patient/src/patient/Dockerfile\n/home/admin/patient/pyproject.toml\n/home/admin/patient/docker-compose.yml\n/home/admin/scrivas_gate/src/gate/Dockerfile\n/home/admin/scrivas_gate/pyproject.toml\n/home/admin/scrivas_gate/docker-compose.yml\n/home/admin/scrivas_search/watchdog/requirements.txt\n/home/admin/scrivas_search/watchdog/Dockerfile\n/home/admin/scrivas_search/cdc-indexer/requirements.txt\n/home/admin/scrivas_search/cdc-indexer/Dockerfile\n/home/admin/scrivas_search/search-api/requirements.txt\n/home/admin/scrivas_search/search-api/Dockerfile\n/home/admin/scrivas_search/docker-compose.yml\n/home/admin/scrivas_search/opensearch/Dockerfile", + "stderr": "" + }, + "processes": { + "status": "Success", + "stdout": "USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND\nubuntu 2396638 0.6 31.8 8317552 5094900 ? Ssl Aug17 99:17 /usr/share/opensearch/jdk/bin/java -Xshare:auto -Dopensearch.networkaddress.cache.ttl=60 -Dopensearch.networkaddress.cache.negative.ttl=10 -XX:+AlwaysPreTouch -Xss1m -Djava.awt.headless=true -Dfile.encoding=UTF-8 -Djna.nosys=true -XX:-OmitStackTraceInFastThrow -XX:+ShowCodeDetailsInExceptionMessages -Dio.netty.noUnsafe=true -Dio.netty.noKeySetOptimization=true -Dio.netty.recycler.maxCapacityPerThread=0 -Dio.netty.allocator.numDirectArenas=0 -Dlog4j.shutdownHookEnabled=false -Dlog4j2.disable.jmx=true -Djava.locale.providers=SPI,CLDR -Xms1g -Xmx1g -XX:+UseG1GC -XX:G1ReservePercent=25 -XX:InitiatingHeapOccupancyPercent=30 -Djava.io.tmpdir=/tmp/opensearch-17172208052320607045 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=data -XX:ErrorFile=logs/hs_err_pid%p.log -Xlog:gc*,gc+age=trace,safepoint:file=logs/gc.log:utctime,pid,tags:filecount=32,filesize=64m --add-modules=jdk.incubator.vector -javaagent:agent/opensearch-agent.jar --add-opens=java.base/java.nio=org.apache.arrow.memory.core,ALL-UNNAMED -Dclk.tck=100 -Djdk.attach.allowAttachSelf=true -Djava.security.policy=/usr/share/opensearch/config/opensearch-performance-analyzer/opensearch_security.policy --add-opens=jdk.attach/sun.tools.attach=ALL-UNNAMED -Dopensearch.cgroups.hierarchy.override=/ -Xms4g -Xmx4g -XX:MaxDirectMemorySize=2147483648 -Dopensearch.path.home=/usr/share/opensearch -Dopensearch.path.conf=/usr/share/opensearch/config -Dopensearch.distribution.type=tar -Dopensearch.bundled_jdk=true -cp /usr/share/opensearch/lib/* org.opensearch.bootstrap.OpenSearch -Eindices.memory.index_buffer_size=30% -Eplugins.security.ssl.http.enabled=false -Ebootstrap.memory_lock=true -Ediscovery.type=single-node\nubuntu 2396640 1.0 6.5 5468052 1041468 ? Ssl Aug17 171:42 /opt/java/openjdk/bin/java -Xmx1G -Xms1G -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc*:file=/opt/kafka/bin/../logs/kafkaServer-gc.log:time,tags:filecount=10,filesize=100M -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dkafka.logs.dir=/opt/kafka/bin/../logs -Dlog4j2.configurationFile=/opt/kafka/bin/../config/log4j2.yaml -cp /opt/kafka/bin/../libs/HdrHistogram-2.2.2.jar:/opt/kafka/bin/../libs/activation-1.1.1.jar:/opt/kafka/bin/../libs/aopalliance-repackaged-3.0.6.jar:/opt/kafka/bin/../libs/argparse4j-0.7.0.jar:/opt/kafka/bin/../libs/caffeine-3.2.0.jar:/opt/kafka/bin/../libs/classgraph-4.8.179.jar:/opt/kafka/bin/../libs/commons-beanutils-1.11.0.jar:/opt/kafka/bin/../libs/commons-collections-3.2.2.jar:/opt/kafka/bin/../libs/commons-digester-2.1.jar:/opt/kafka/bin/../libs/commons-lang3-3.18.0.jar:/opt/kafka/bin/../libs/commons-logging-1.3.5.jar:/opt/kafka/bin/../libs/commons-validator-1.9.0.jar:/opt/kafka/bin/../libs/connect-api-4.1.1.jar:/opt/kafka/bin/../libs/connect-basic-auth-extension-4.1.1.jar:/opt/kafka/bin/../libs/connect-json-4.1.1.jar:/opt/kafka/bin/../libs/connect-mirror-4.1.1.jar:/opt/kafka/bin/../libs/connect-mirror-client-4.1.1.jar:/opt/kafka/bin/../libs/connect-runtime-4.1.1.jar:/opt/kafka/bin/../libs/connect-transforms-4.1.1.jar:/opt/kafka/bin/../libs/hash4j-0.22.0.jar:/opt/kafka/bin/../libs/hk2-api-3.0.6.jar:/opt/kafka/bin/../libs/hk2-locator-3.0.6.jar:/opt/kafka/bin/../libs/hk2-utils-3.0.6.jar:/opt/kafka/bin/../libs/jackson-annotations-2.19.0.jar:/opt/kafka/bin/../libs/jackson-core-2.19.0.jar:/opt/kafka/bin/../libs/jackson-databind-2.19.0.jar:/opt/kafka/bin/../libs/jackson-dataformat-csv-2.19.0.jar:/opt/kafka/bin/../libs/jackson-dataformat-yaml-2.19.0.jar:/opt/kafka/bin/../libs/jackson-datatype-jdk8-2.19.0.jar:/opt/kafka/bin/../libs/jackson-jakarta-rs-base-2.19.0.jar:/opt/kafka/bin/../libs/jackson-jakarta-rs-json-provider-2.19.0.jar:/opt/kafka/bin/../libs/jackson-module-blackbird-2.19.0.jar:/opt/kafka/bin/../libs/jackson-module-jakarta-xmlbind-annotations-2.19.0.jar:/opt/kafka/bin/../libs/jakarta.activation-2.0.1.jar:/opt/kafka/bin/../libs/jakarta.activation-api-2.1.0.jar:/opt/kafka/bin/../libs/jakarta.annotation-api-2.1.1.jar:/opt/kafka/bin/../libs/jakarta.inject-api-2.0.1.jar:/opt/kafka/bin/../libs/jakarta.servlet-api-6.0.0.jar:/opt/kafka/bin/../libs/jakarta.validation-api-3.0.2.jar:/opt/kafka/bin/../libs/jakarta.ws.rs-api-3.1.0.jar:/opt/kafka/bin/../libs/jakarta.xml.bind-api-3.0.1.jar:/opt/kafka/bin/../libs/javassist-3.30.2-GA.jar:/opt/kafka/bin/../libs/javax.activation-api-1.2.0.jar:/opt/kafka/bin/../libs/javax.annotation-api-1.3.2.jar:/opt/kafka/bin/../libs/jaxb-api-2.3.1.jar:/opt/kafka/bin/../libs/jersey-client-3.1.10.jar:/opt/kafka/bin/../libs/jersey-common-3.1.10.jar:/opt/kafka/bin/../libs/jersey-container-servlet-3.1.10.jar:/opt/kafka/bin/../libs/jersey-container-servlet-core-3.1.10.jar:/opt/kafka/bin/../libs/jersey-hk2-3.1.10.jar:/opt/kafka/bin/../libs/jersey-server-3.1.10.jar:/opt/kafka/bin/../libs/jetty-alpn-client-12.0.22.jar:/opt/kafka/bin/../libs/jetty-client-12.0.22.jar:/opt/kafka/bin/../libs/jetty-ee10-servlet-12.0.22.jar:/opt/kafka/bin/../libs/jetty-ee10-servlets-12.0.22.jar:/opt/kafka/bin/../libs/jetty-http-12.0.22.jar:/opt/kafka/bin/../libs/jetty-io-12.0.22.jar:/opt/kafka/bin/../libs/jetty-security-12.0.22.jar:/opt/kafka/bin/../libs/jetty-server-12.0.22.jar:/opt/kafka/bin/../libs/jetty-session-12.0.22.jar:/opt/kafka/bin/../libs/jetty-util-12.0.22.jar:/opt/kafka/bin/../libs/jline-3.30.4.jar:/opt/kafka/bin/../libs/jopt-simple-5.0.4.jar:/opt/kafka/bin/../libs/jose4j-0.9.6.jar:/opt/kafka/bin/../libs/jspecify-1.0.0.jar:/opt/kafka/bin/../libs/kafka-clients-4.1.1.jar:/opt/kafka/bin/../libs/kafka-coordinator-common-4.1.1.jar:/opt/kafka/bin/../libs/kafka-group-coordinator-4.1.1.jar:/opt/kafka/bin/../libs/kafka-group-coordinator-api-4.1.1.jar:/opt/kafka/bin/../libs/kafka-metadata-4.1.1.jar:/opt/kafka/bin/../libs/kafka-raft-4.1.1.jar:/opt/kafka/bin/../libs/kafka-server-4.1.1.jar:/opt/kafka/bin/../libs/kafka-server-common-4.1.1.jar:/opt/kafka/bin/../libs/kafka-share-coordinator-4.1.1.jar:/opt/kafka/bin/../libs/kafka-shell-4.1.1.jar:/opt/kafka/bin/../libs/kafka-storage-4.1.1.jar:/opt/kafka/bin/../libs/kafka-storage-api-4.1.1.jar:/opt/kafka/bin/../libs/kafka-streams-4.1.1.jar:/opt/kafka/bin/../libs/kafka-streams-examples-4.1.1.jar:/opt/kafka/bin/../libs/kafka-streams-scala_2.13-4.1.1.jar:/opt/kafka/bin/../libs/kafka-streams-test-utils-4.1.1.jar:/opt/kafka/bin/../libs/kafka-tools-4.1.1.jar:/opt/kafka/bin/../libs/kafka-tools-api-4.1.1.jar:/opt/kafka/bin/../libs/kafka-transaction-coordinator-4.1.1.jar:/opt/kafka/bin/../libs/kafka_2.13-4.1.1.jar:/opt/kafka/bin/../libs/log4j-1.2-api-2.24.3.jar:/opt/kafka/bin/../libs/log4j-api-2.24.3.jar:/opt/kafka/bin/../libs/log4j-core-2.24.3.jar:/opt/kafka/bin/../libs/log4j-slf4j-impl-2.24.3.jar:/opt/kafka/bin/../libs/lz4-java-1.8.0.jar:/opt/kafka/bin/../libs/maven-artifact-3.9.6.jar:/opt/kafka/bin/../libs/metrics-core-2.2.0.jar:/opt/kafka/bin/../libs/opentelemetry-proto-1.0.0-alpha.jar:/opt/kafka/bin/../libs/osgi-resource-locator-1.0.3.jar:/opt/kafka/bin/../libs/pcollections-4.0.2.jar:/opt/kafka/bin/../libs/plexus-utils-3.5.1.jar:/opt/kafka/bin/../libs/protobuf-java-3.25.5.jar:/opt/kafka/bin/../libs/re2j-1.8.jar:/opt/kafka/bin/../libs/rocksdbjni-9.7.3.jar:/opt/kafka/bin/../libs/scala-library-2.13.16.jar:/opt/kafka/bin/../libs/scala-logging_2.13-3.9.5.jar:/opt/kafka/bin/../libs/scala-reflect-2.13.16.jar:/opt/kafka/bin/../libs/slf4j-api-1.7.36.jar:/opt/kafka/bin/../libs/snakeyaml-2.4.jar:/opt/kafka/bin/../libs/snappy-java-1.1.10.7.jar:/opt/kafka/bin/../libs/swagger-annotations-2.2.25.jar:/opt/kafka/bin/../libs/trogdor-4.1.1.jar:/opt/kafka/bin/../libs/zstd-jni-1.5.6-10.jar -Djava.security.auth.login.config=/etc/kafka/kafka_jaas.conf kafka.Kafka /opt/kafka/config/server.properties\nadmin 2398259 0.9 4.3 5908244 693940 ? Sl Aug17 159:33 java -Xms256M -Xmx2G -server -XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35 -XX:+ExplicitGCInvokesConcurrent -XX:MaxInlineLevel=15 -Djava.awt.headless=true -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dkafka.logs.dir=/kafka/logs -Dlog4j.configuration=file:/kafka/config/log4j.properties -cp /kafka/libs/activation-1.1.1.jar:/kafka/libs/aopalliance-repackaged-2.6.1.jar:/kafka/libs/argparse4j-0.7.0.jar:/kafka/libs/audience-annotations-0.12.0.jar:/kafka/libs/caffeine-2.9.3.jar:/kafka/libs/checker-qual-3.19.0.jar:/kafka/libs/commons-beanutils-1.9.4.jar:/kafka/libs/commons-cli-1.4.jar:/kafka/libs/commons-collections-3.2.2.jar:/kafka/libs/commons-digester-2.1.jar:/kafka/libs/commons-io-2.11.0.jar:/kafka/libs/commons-lang3-3.8.1.jar:/kafka/libs/commons-logging-1.2.jar:/kafka/libs/commons-validator-1.7.jar:/kafka/libs/connect-api-3.7.0.jar:/kafka/libs/connect-basic-auth-extension-3.7.0.jar:/kafka/libs/connect-json-3.7.0.jar:/kafka/libs/connect-mirror-3.7.0.jar:/kafka/libs/connect-mirror-client-3.7.0.jar:/kafka/libs/connect-runtime-3.7.0.jar:/kafka/libs/connect-transforms-3.7.0.jar:/kafka/libs/error_prone_annotations-2.10.0.jar:/kafka/libs/hk2-api-2.6.1.jar:/kafka/libs/hk2-locator-2.6.1.jar:/kafka/libs/hk2-utils-2.6.1.jar:/kafka/libs/jackson-annotations-2.16.0.jar:/kafka/libs/jackson-core-2.16.0.jar:/kafka/libs/jackson-databind-2.16.0.jar:/kafka/libs/jackson-dataformat-csv-2.16.0.jar:/kafka/libs/jackson-datatype-jdk8-2.16.0.jar:/kafka/libs/jackson-jaxrs-base-2.16.0.jar:/kafka/libs/jackson-jaxrs-json-provider-2.16.0.jar:/kafka/libs/jackson-module-jaxb-annotations-2.16.0.jar:/kafka/libs/jackson-module-scala_2.13-2.16.0.jar:/kafka/libs/jakarta.activation-api-1.2.2.jar:/kafka/libs/jakarta.annotation-api-1.3.5.jar:/kafka/libs/jakarta.inject-2.6.1.jar:/kafka/libs/jakarta.validation-api-2.0.2.jar:/kafka/libs/jakarta.ws.rs-api-2.1.6.jar:/kafka/libs/jakarta.xml.bind-api-2.3.3.jar:/kafka/libs/javassist-3.29.2-GA.jar:/kafka/libs/javax.activation-api-1.2.0.jar:/kafka/libs/javax.annotation-api-1.3.2.jar:/kafka/libs/javax.servlet-api-3.1.0.jar:/kafka/libs/javax.ws.rs-api-2.1.1.jar:/kafka/libs/jaxb-api-2.3.1.jar:/kafka/libs/jersey-client-2.39.1.jar:/kafka/libs/jersey-common-2.39.1.jar:/kafka/libs/jersey-container-servlet-2.39.1.jar:/kafka/libs/jersey-container-servlet-core-2.39.1.jar:/kafka/libs/jersey-hk2-2.39.1.jar:/kafka/libs/jersey-server-2.39.1.jar:/kafka/libs/jetty-client-9.4.53.v20231009.jar:/kafka/libs/jetty-continuation-9.4.53.v20231009.jar:/kafka/libs/jetty-http-9.4.53.v20231009.jar:/kafka/libs/jetty-io-9.4.53.v20231009.jar:/kafka/libs/jetty-security-9.4.53.v20231009.jar:/kafka/libs/jetty-server-9.4.53.v20231009.jar:/kafka/libs/jetty-servlet-9.4.53.v20231009.jar:/kafka/libs/jetty-servlets-9.4.53.v20231009.jar:/kafka/libs/jetty-util-9.4.53.v20231009.jar:/kafka/libs/jetty-util-ajax-9.4.53.v20231009.jar:/kafka/libs/jline-3.22.0.jar:/kafka/libs/jolokia-jvm-1.7.2.jar:/kafka/libs/jopt-simple-5.0.4.jar:/kafka/libs/jose4j-0.9.4.jar:/kafka/libs/jsr305-3.0.2.jar:/kafka/libs/kafka-clients-3.7.0.jar:/kafka/libs/kafka-group-coordinator-3.7.0.jar:/kafka/libs/kafka-log4j-appender-3.7.0.jar:/kafka/libs/kafka-metadata-3.7.0.jar:/kafka/libs/kafka-raft-3.7.0.jar:/kafka/libs/kafka-server-3.7.0.jar:/kafka/libs/kafka-server-common-3.7.0.jar:/kafka/libs/kafka-shell-3.7.0.jar:/kafka/libs/kafka-storage-3.7.0.jar:/kafka/libs/kafka-storage-api-3.7.0.jar:/kafka/libs/kafka-streams-3.7.0.jar:/kafka/libs/kafka-streams-examples-3.7.0.jar:/kafka/libs/kafka-streams-scala_2.13-3.7.0.jar:/kafka/libs/kafka-streams-test-utils-3.7.0.jar:/kafka/libs/kafka-tools-3.7.0.jar:/kafka/libs/kafka-tools-api-3.7.0.jar:/kafka/libs/kafka_2.13-3.7.0.jar:/kafka/libs/lz4-java-1.8.0.jar:/kafka/libs/maven-artifact-3.8.8.jar:/kafka/libs/metrics-core-2.2.0.jar:/kafka/libs/metrics-core-4.1.12.1.jar:/kafka/libs/netty-buffer-4.1.100.Final.jar:/kafka/libs/netty-codec-4.1.100.Final.jar:/kafka/libs/netty-common-4.1.100.Final.jar:/kafka/libs/netty-handler-4.1.100.Final.jar:/kafka/libs/netty-resolver-4.1.100.Final.jar:/kafka/libs/netty-transport-4.1.100.Final.jar:/kafka/libs/netty-transport-classes-epoll-4.1.100.Final.jar:/kafka/libs/netty-transport-native-epoll-4.1.100.Final.jar:/kafka/libs/netty-transport-native-unix-common-4.1.100.Final.jar:/kafka/libs/opentelemetry-proto-1.0.0-alpha.jar:/kafka/libs/osgi-resource-locator-1.0.3.jar:/kafka/libs/paranamer-2.8.jar:/kafka/libs/pcollections-4.0.1.jar:/kafka/libs/plexus-utils-3.3.1.jar:/kafka/libs/protobuf-java-3.23.4.jar:/kafka/libs/reflections-0.10.2.jar:/kafka/libs/reload4j-1.2.25.jar:/kafka/libs/rocksdbjni-7.9.2.jar:/kafka/libs/scala-collection-compat_2.13-2.10.0.jar:/kafka/libs/scala-java8-compat_2.13-1.0.2.jar:/kafka/libs/scala-library-2.13.12.jar:/kafka/libs/scala-logging_2.13-3.9.4.jar:/kafka/libs/scala-reflect-2.13.12.jar:/kafka/libs/slf4j-api-1.7.36.jar:/kafka/libs/slf4j-reload4j-1.7.36.jar:/kafka/libs/snappy-java-1.1.10.5.jar:/kafka/libs/swagger-annotations-2.2.8.jar:/kafka/libs/trogdor-3.7.0.jar:/kafka/libs/zookeeper-3.8.3.jar:/kafka/libs/zookeeper-jute-3.8.3.jar:/kafka/libs/zstd-jni-1.5.5-6.jar org.apache.kafka.connect.cli.ConnectDistributed /kafka/config/connect-distributed.properties\nroot 2145831 0.1 1.6 801308 268588 ? Sl 13:23 0:33 /root/.cache/pypoetry/virtualenvs/scrivas-9TtSrW0h-py3.12/bin/python /root/.cache/pypoetry/virtualenvs/scrivas-9TtSrW0h-py3.12/bin/uvicorn encounter.app.main:app --host 0.0.0.0 --port 8000 --proxy-headers --forwarded-allow-ips=*\nroot 2146010 0.0 1.1 272052 177104 ? Sl 13:23 0:03 /usr/local/bin/python3.12 /usr/local/bin/celery -A celery_app worker --loglevel=info --concurrency=6 -Q emr_bulk\nroot 916 0.8 1.0 3985444 168928 ? Ssl Aug12 192:06 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock\ndnsmasq 3379 0.0 0.9 218016 144172 ? Ss Aug12 0:14 postgres: checkpointer \ndnsmasq 3380 0.0 0.8 217696 143860 ? Ss Aug12 0:07 postgres: background writer \nroot 2146018 0.0 0.8 230616 135100 ? Sl 13:23 0:03 /usr/local/bin/python3.12 /usr/local/bin/celery -A celery_app worker --loglevel=info --concurrency=6 -Q emr_bulk\nroot 2146021 0.0 0.8 227532 131976 ? Sl 13:23 0:01 /usr/local/bin/python3.12 /usr/local/bin/celery -A celery_app worker --loglevel=info --concurrency=6 -Q emr_bulk\nroot 2657995 0.1 0.8 949928 131516 ? Sl Aug17 16:21 /root/.cache/pypoetry/virtualenvs/scrivas-gate-9TtSrW0h-py3.12/bin/python /root/.cache/pypoetry/virtualenvs/scrivas-gate-9TtSrW0h-py3.12/bin/uvicorn gate.app.main:app --host 0.0.0.0 --port 8000 --proxy-headers --forwarded-allow-ips=*\nroot 2146001 0.0 0.8 227052 131444 ? Sl 13:23 0:01 /usr/local/bin/python3.12 /usr/local/bin/celery -A celery_app worker --loglevel=info --concurrency=6 -Q emr_bulk\nroot 2145990 0.0 0.7 212576 122464 ? Sl 13:23 0:01 /usr/local/bin/python3.12 /usr/local/bin/celery -A celery_app worker --loglevel=info --concurrency=6 -Q emr_bulk\nroot 2145994 0.0 0.7 213160 122460 ? Sl 13:23 0:01 /usr/local/bin/python3.12 /usr/local/bin/celery -A celery_app worker --loglevel=info --concurrency=6 -Q emr_bulk\nroot 2736352 0.9 0.7 213360 122052 ? Sl 19:43 0:01 /usr/local/bin/python3.12 /usr/local/bin/celery -A celery_app worker --loglevel=info --concurrency=2 -Q ml_summary\nroot 2146017 0.0 0.7 208100 117892 ? Sl 13:23 0:02 /usr/local/bin/python3.12 /usr/local/bin/celery -A celery_app worker --loglevel=info --concurrency=4 -Q emr_sync\nroot 2705707 0.0 0.7 208236 117048 ? Sl 19:23 0:00 /usr/local/bin/python3.12 /usr/local/bin/celery -A celery_app worker --loglevel=info --concurrency=2 -Q maintenance\nroot 2736379 0.5 0.7 208580 116932 ? Sl 19:43 0:00 /usr/local/bin/python3.12 /usr/local/bin/celery -A celery_app worker --loglevel=info --concurrency=2 -Q ml_summary\nroot 2689775 0.0 0.7 206820 116512 ? Sl 19:13 0:01 /usr/local/bin/python3.12 /usr/local/bin/celery -A celery_app worker --loglevel=info --concurrency=4 -Q emr_sync\nroot 2146000 0.0 0.7 206536 115672 ? Sl 13:23 0:01 /usr/local/bin/python3.12 /usr/local/bin/celery -A celery_app worker --loglevel=info --concurrency=4 -Q emr_sync\nroot 2146005 0.0 0.7 206168 114980 ? Sl 13:23 0:01 /usr/local/bin/python3.12 /usr/local/bin/celery -A celery_app worker --loglevel=info --concurrency=2 -Q maintenance\nroot 2710780 0.0 0.6 199476 105528 ? Sl 19:27 0:00 /usr/local/bin/python3.12 /usr/local/bin/celery -A celery_app worker --loglevel=info --concurrency=4 -Q emr_sync\nroot 2399933 0.0 0.6 564652 104396 ? Ssl Aug17 14:47 /usr/local/bin/python3.11 /usr/local/bin/uvicorn main:app --host 0.0.0.0 --port 8000 --proxy-headers --forwarded-allow-ips=*\nroot 2145615 0.2 0.5 102308 90696 ? Ss 13:23 0:56 /usr/local/bin/python3.12 /usr/local/bin/celery -A celery_app worker --loglevel=info --concurrency=2 -Q ml_summary\nroot 2145638 0.1 0.5 102356 90640 ? Ss 13:23 0:44 /usr/local/bin/python3.12 /usr/local/bin/celery -A celery_app worker --loglevel=info --concurrency=2 -Q auth\nroot 2145632 0.2 0.5 102340 90552 ? Ss 13:23 0:48 /usr/local/bin/python3.12 /usr/local/bin/celery -A celery_app worker --loglevel=info --concurrency=4 -Q emr_sync\nroot 2145301 0.1 0.5 102368 90540 ? Ss 13:23 0:45 /usr/local/bin/python3.12 /usr/local/bin/celery -A celery_app worker --loglevel=info --concurrency=6 -Q emr_bulk\nroot 2145597 0.1 0.5 102332 90452 ? Ss 13:23 0:43 /usr/local/bin/python3.12 /usr/local/bin/celery -A celery_app worker --loglevel=info --concurrency=2 -Q maintenance\nroot 2145463 0.1 0.5 102340 90396 ? Ss 13:23 0:42 /usr/local/bin/python3.12 /usr/local/bin/celery -A celery_app worker --loglevel=info --concurrency=4 -Q audio_chunk", + "stderr": "" + }, + "listening": { + "status": "Success", + "stdout": "udp UNCONN 0 0 0.0.0.0:51820 0.0.0.0:* \nudp UNCONN 0 0 127.0.0.1:3128 0.0.0.0:* users:((\"netbird\",pid=576,fd=18)) \nudp UNCONN 0 0 127.0.0.54:53 0.0.0.0:* users:((\"systemd-resolve\",pid=1247625,fd=16)) \nudp UNCONN 0 0 127.0.0.53%lo:53 0.0.0.0:* users:((\"systemd-resolve\",pid=1247625,fd=14)) \nudp UNCONN 0 0 100.112.223.22:53 0.0.0.0:* users:((\"netbird\",pid=576,fd=28)) \nudp UNCONN 0 0 10.0.1.150%ens5:68 0.0.0.0:* users:((\"systemd-network\",pid=1247645,fd=23)) \nudp UNCONN 0 0 127.0.0.1:323 0.0.0.0:* users:((\"chronyd\",pid=709,fd=5)) \nudp UNCONN 0 0 [::]:51820 [::]:* \nudp UNCONN 0 0 [::1]:323 [::]:* users:((\"chronyd\",pid=709,fd=6)) \ntcp LISTEN 0 4096 127.0.0.53%lo:53 0.0.0.0:* users:((\"systemd-resolve\",pid=1247625,fd=15)) \ntcp LISTEN 0 4096 0.0.0.0:8005 0.0.0.0:* users:((\"docker-proxy\",pid=2400004,fd=7)) \ntcp LISTEN 0 4096 0.0.0.0:8002 0.0.0.0:* users:((\"docker-proxy\",pid=1397083,fd=7)) \ntcp LISTEN 0 4096 0.0.0.0:8000 0.0.0.0:* users:((\"docker-proxy\",pid=2657871,fd=7)) \ntcp LISTEN 0 4096 0.0.0.0:8001 0.0.0.0:* users:((\"docker-proxy\",pid=2145764,fd=7)) \ntcp LISTEN 0 4096 0.0.0.0:8083 0.0.0.0:* users:((\"docker-proxy\",pid=2398220,fd=7)) \ntcp LISTEN 0 511 0.0.0.0:443 0.0.0.0:* users:((\"nginx\",pid=1247643,fd=9),(\"nginx\",pid=1247641,fd=9),(\"nginx\",pid=1247640,fd=9),(\"nginx\",pid=1247639,fd=9),(\"nginx\",pid=1247638,fd=9)) \ntcp LISTEN 0 4096 0.0.0.0:22 0.0.0.0:* users:((\"sshd\",pid=1247618,fd=3),(\"systemd\",pid=1,fd=119)) \ntcp LISTEN 0 511 0.0.0.0:80 0.0.0.0:* users:((\"nginx\",pid=1247643,fd=10),(\"nginx\",pid=1247641,fd=10),(\"nginx\",pid=1247640,fd=10),(\"nginx\",pid=1247639,fd=10),(\"nginx\",pid=1247638,fd=10))\ntcp LISTEN 0 4096 0.0.0.0:16542 0.0.0.0:* users:((\"docker-proxy\",pid=2440,fd=7)) \ntcp LISTEN 0 4096 0.0.0.0:16540 0.0.0.0:* users:((\"docker-proxy\",pid=2648684,fd=7)) \ntcp LISTEN 0 4096 0.0.0.0:16541 0.0.0.0:* users:((\"docker-proxy\",pid=3010,fd=7)) \ntcp LISTEN 0 4096 0.0.0.0:9092 0.0.0.0:* users:((\"docker-proxy\",pid=2396728,fd=7)) \ntcp LISTEN 0 4096 0.0.0.0:9200 0.0.0.0:* users:((\"docker-proxy\",pid=2396762,fd=7)) \ntcp LISTEN 0 4096 127.0.0.1:45589 0.0.0.0:* users:((\"containerd\",pid=650,fd=15)) \ntcp LISTEN 0 4096 0.0.0.0:17640 0.0.0.0:* users:((\"docker-proxy\",pid=2802,fd=7)) \ntcp LISTEN 0 4096 100.112.223.22:53 0.0.0.0:* users:((\"netbird\",pid=576,fd=27)) \ntcp LISTEN 0 4096 127.0.0.54:53 0.0.0.0:* users:((\"systemd-resolve\",pid=1247625,fd=17)) \ntcp LISTEN 0 4096 [::]:8005 [::]:* users:((\"docker-proxy\",pid=2400010,fd=7)) \ntcp LISTEN 0 4096 [::]:8002 [::]:* users:((\"docker-proxy\",pid=1397090,fd=7)) \ntcp LISTEN 0 4096 [::]:8000 [::]:* users:((\"docker-proxy\",pid=2657877,fd=7)) \ntcp LISTEN 0 4096 [::]:8001 [::]:* users:((\"docker-proxy\",pid=2145775,fd=7)) \ntcp LISTEN 0 4096 [::]:8083 [::]:* users:((\"docker-proxy\",pid=2398228,fd=7)) \ntcp LISTEN 0 4096 [::]:22 [::]:* users:((\"sshd\",pid=1247618,fd=4),(\"systemd\",pid=1,fd=120)) \ntcp LISTEN 0 4096 [::]:16542 [::]:* users:((\"docker-proxy\",pid=2465,fd=7)) \ntcp LISTEN 0 4096 [::]:16540 [::]:* users:((\"docker-proxy\",pid=2648690,fd=7)) \ntcp LISTEN 0 4096 [::]:16541 [::]:* users:((\"docker-proxy\",pid=3019,fd=7)) \ntcp LISTEN 0 4096 [::]:9092 [::]:* users:((\"docker-proxy\",pid=2396737,fd=7)) \ntcp LISTEN 0 4096 [::]:9200 [::]:* users:((\"docker-proxy\",pid=2396771,fd=7)) \ntcp LISTEN 0 4096 [::]:17640 [::]:* users:((\"docker-proxy\",pid=2808,fd=7))", + "stderr": "" + }, + "systemd_units": { + "status": "Success", + "stdout": " acpid.service loaded active running ACPI event daemon\n amazon-guardduty-agent.service loaded active running Amazon GuardDuty Agent\n chrony.service loaded active running chrony, an NTP client/server\n containerd.service loaded active running containerd container runtime\n cron.service loaded active running Regular background program processing daemon\n dbus.service loaded active running D-Bus System Message Bus\n docker.service loaded active running Docker Application Container Engine\n getty@tty1.service loaded active running Getty on tty1\n irqbalance.service loaded active running irqbalance daemon\n ModemManager.service loaded active running Modem Manager\n multipathd.service loaded active running Device-Mapper Multipath Device Controller\n netbird.service loaded active running NetBird mesh network client\n networkd-dispatcher.service loaded active running Dispatcher daemon for systemd-networkd\n nginx.service loaded active running A high performance web server and a reverse proxy server\n polkit.service loaded active running Authorization Manager\n rsyslog.service loaded active running System Logging Service\n serial-getty@ttyS0.service loaded active running Serial Getty on ttyS0\n snap.amazon-ssm-agent.amazon-ssm-agent.service loaded active running Service for snap application amazon-ssm-agent.amazon-ssm-agent\n snapd.service loaded active running Snap Daemon\n ssh.service loaded active running OpenBSD Secure Shell server\n systemd-journald.service loaded active running Journal Service\n systemd-logind.service loaded active running User Login Management\n systemd-networkd.service loaded active running Network Configuration\n systemd-resolved.service loaded active running Network Name Resolution\n systemd-udevd.service loaded active running Rule-based Manager for Device Events and Files\n udisks2.service loaded active running Disk Manager\n unattended-upgrades.service loaded active running Unattended Upgrades Shutdown", + "stderr": "" + }, + "systemd_failed": { + "status": "Success", + "stdout": "\u25cf fwupd-refresh.service loaded failed failed Refresh fwupd metadata and update motd\n\u25cf fwupd.service loaded failed failed Firmware update daemon", + "stderr": "" + }, + "docker": { + "status": "Success", + "stdout": "scrivas_backend-celery_worker_ml_summary-1\tscrivas_backend-celery_worker_ml_summary\tUp 6 hours\nscrivas_backend-celery_worker_emr_bulk-1\tscrivas_backend-celery_worker_emr_bulk\tUp 6 hours\nscrivas_backend-celery_worker_maintenance-1\tscrivas_backend-celery_worker_maintenance\tUp 6 hours\nscrivas_backend-celery_worker_emr_sync-1\tscrivas_backend-celery_worker_emr_sync\tUp 6 hours\nscrivas_backend-celery_worker_emr_writeback-1\tscrivas_backend-celery_worker_emr_writeback\tUp 6 hours\nscrivas_backend-celery_beat-1\tscrivas_backend-celery_beat\tUp 6 hours\nscrivas_backend-celery_worker_auth-1\tscrivas_backend-celery_worker_auth\tUp 6 hours\nscrivas_backend-celery_worker_ml_note-1\tscrivas_backend-celery_worker_ml_note\tUp 6 hours\nscrivas_backend-celery_worker_audio_chunk-1\tscrivas_backend-celery_worker_audio_chunk\tUp 6 hours\nscrivas_backend-encounter_api-1\tscrivas_backend-encounter_api\tUp 6 hours\nscrivas_gate-gate_api-1\tscrivas_gate-gate_api\tUp 11 days\nscrivas_gate-gate_db-1\tpostgres:17.5\tUp 11 days (healthy)\nscrivas-debezium\tdebezium/connect:2.7.3.Final\tUp 11 days\nscrivas-indexer\tscrivas_search-indexer\tUp 11 days\nscrivas_search-search-api-1\tscrivas_search-search-api\tUp 11 days\nscrivas-kafka\tapache/kafka:4.1.1\tUp 11 days (healthy)\nscrivas-opensearch\tscrivas_search-opensearch\tUp 11 days (healthy)\nscrivas-connector-watchdog\tscrivas_search-connector-watchdog\tUp 11 days\npatient-patient_api-1\tpatient-patient_api\tUp 2 weeks\nscrivas_backend-scrivas_redis-1\tredis:8.2.1\tUp 2 weeks (healthy)\nscrivas_backend-autoheal-1\twillfarrell/autoheal:1.2.0\tUp 2 weeks (healthy)\nscrivas_backend-encounter_db-1\tpostgres:17.5\tUp 2 weeks\npatient-patient_db-1\tpostgres:17.5\tUp 2 weeks\ngitlab-runner-scrivas\tgitlab/gitlab-runner:latest\tUp 2 weeks", + "stderr": "" + }, + "docker_images": { + "status": "Success", + "stdout": "scrivas_backend-celery_worker_emr_bulk:latest\t2026-08-28 13:23:18 +0000 UTC\nscrivas_backend-celery_worker_ml_note:latest\t2026-08-28 13:23:18 +0000 UTC\nscrivas_backend-encounter_api:latest\t2026-08-28 13:23:18 +0000 UTC\nscrivas_backend-celery_worker_emr_sync:latest\t2026-08-28 13:23:18 +0000 UTC\nscrivas_backend-celery_beat:latest\t2026-08-28 13:23:18 +0000 UTC\nscrivas_backend-celery_worker_ml_summary:latest\t2026-08-28 13:23:18 +0000 UTC\nscrivas_backend-celery_worker_emr_writeback:latest\t2026-08-28 13:23:18 +0000 UTC\nscrivas_backend-celery_worker_audio_chunk:latest\t2026-08-28 13:23:18 +0000 UTC\nscrivas_backend-celery_worker_maintenance:latest\t2026-08-28 13:23:18 +0000 UTC\nscrivas_backend-celery_worker_auth:latest\t2026-08-28 13:23:18 +0000 UTC\nscrivas_gate-gate_api:latest\t2026-08-17 13:18:01 +0000 UTC\nscrivas_search-search-api:latest\t2026-08-17 10:21:55 +0000 UTC\nscrivas_search-indexer:latest\t2026-08-17 10:21:53 +0000 UTC\nscrivas_search-connector-watchdog:latest\t2026-08-17 10:21:45 +0000 UTC\ndocker:latest\t2026-08-10 23:33:20 +0000 UTC\nscrivas_backend-celery_worker:latest\t2026-06-18 15:15:31 +0000 UTC\nscrivas_backend-celery_worker_long:latest\t2026-06-18 15:15:31 +0000 UTC\nscrivas_backend-celery_worker_realtime:latest\t2026-06-18 15:15:31 +0000 UTC\npatient-patient_api:latest\t2026-05-21 15:39:43 +0000 UTC\nscrivas_search-opensearch:latest\t2026-05-21 11:16:43 +0000 UTC", + "stderr": "" + }, + "oom_kills": { + "status": "Success", + "stdout": "", + "stderr": "" + }, + "svc_restarts": { + "status": "Success", + "stdout": "Aug 27 22:18:53 ip-10-0-1-150 systemd[1]: fwupd.service: Failed with result 'exit-code'.\nAug 27 22:19:18 ip-10-0-1-150 systemd[1]: fwupd-refresh.service: Failed with result 'exit-code'.\nAug 27 23:11:13 ip-10-0-1-150 systemd[1]: fwupd.service: Failed with result 'exit-code'.\nAug 27 23:11:38 ip-10-0-1-150 systemd[1]: fwupd-refresh.service: Failed with result 'exit-code'.\nAug 28 00:03:53 ip-10-0-1-150 systemd[1]: fwupd.service: Failed with result 'exit-code'.\nAug 28 00:04:18 ip-10-0-1-150 systemd[1]: fwupd-refresh.service: Failed with result 'exit-code'.\nAug 28 01:56:08 ip-10-0-1-150 systemd[1]: fwupd.service: Failed with result 'exit-code'.\nAug 28 01:56:33 ip-10-0-1-150 systemd[1]: fwupd-refresh.service: Failed with result 'exit-code'.\nAug 28 02:56:08 ip-10-0-1-150 systemd[1]: fwupd.service: Failed with result 'exit-code'.\nAug 28 02:56:33 ip-10-0-1-150 systemd[1]: fwupd-refresh.service: Failed with result 'exit-code'.\nAug 28 03:32:38 ip-10-0-1-150 systemd[1]: fwupd.service: Failed with result 'exit-code'.\nAug 28 03:33:03 ip-10-0-1-150 systemd[1]: fwupd-refresh.service: Failed with result 'exit-code'.\nAug 28 04:17:50 ip-10-0-1-150 systemd[1]: fwupd.service: Failed with result 'exit-code'.\nAug 28 04:18:15 ip-10-0-1-150 systemd[1]: fwupd-refresh.service: Failed with result 'exit-code'.\nAug 28 05:11:08 ip-10-0-1-150 systemd[1]: fwupd.service: Failed with result 'exit-code'.\nAug 28 05:11:33 ip-10-0-1-150 systemd[1]: fwupd-refresh.service: Failed with result 'exit-code'.\nAug 28 06:12:04 ip-10-0-1-150 systemd[1]: fwupd.service: Failed with result 'exit-code'.\nAug 28 06:12:29 ip-10-0-1-150 systemd[1]: fwupd-refresh.service: Failed with result 'exit-code'.\nAug 28 07:11:09 ip-10-0-1-150 systemd[1]: fwupd.service: Failed with result 'exit-code'.\nAug 28 07:11:34 ip-10-0-1-150 systemd[1]: fwupd-refresh.service: Failed with result 'exit-code'.\nAug 28 08:09:09 ip-10-0-1-150 systemd[1]: fwupd.service: Failed with result 'exit-code'.\nAug 28 08:09:34 ip-10-0-1-150 systemd[1]: fwupd-refresh.service: Failed with result 'exit-code'.\nAug 28 09:54:51 ip-10-0-1-150 systemd[1]: fwupd.service: Failed with result 'exit-code'.\nAug 28 09:55:16 ip-10-0-1-150 systemd[1]: fwupd-refresh.service: Failed with result 'exit-code'.\nAug 28 10:31:08 ip-10-0-1-150 systemd[1]: fwupd.service: Failed with result 'exit-code'.\nAug 28 10:31:33 ip-10-0-1-150 systemd[1]: fwupd-refresh.service: Failed with result 'exit-code'.\nAug 28 11:06:09 ip-10-0-1-150 systemd[1]: fwupd.service: Failed with result 'exit-code'.\nAug 28 11:06:34 ip-10-0-1-150 systemd[1]: fwupd-refresh.service: Failed with result 'exit-code'.\nAug 28 12:42:09 ip-10-0-1-150 systemd[1]: fwupd.service: Failed with result 'exit-code'.\nAug 28 12:42:34 ip-10-0-1-150 systemd[1]: fwupd-refresh.service: Failed with result 'exit-code'.\nAug 28 13:07:50 ip-10-0-1-150 systemd[1]: fwupd.service: Failed with result 'exit-code'.\nAug 28 13:08:15 ip-10-0-1-150 systemd[1]: fwupd-refresh.service: Failed with result 'exit-code'.\nAug 28 14:33:53 ip-10-0-1-150 systemd[1]: fwupd.service: Failed with result 'exit-code'.\nAug 28 14:34:18 ip-10-0-1-150 systemd[1]: fwupd-refresh.service: Failed with result 'exit-code'.\nAug 28 15:50:20 ip-10-0-1-150 systemd[1]: fwupd.service: Failed with result 'exit-code'.\nAug 28 15:50:45 ip-10-0-1-150 systemd[1]: fwupd-refresh.service: Failed with result 'exit-code'.\nAug 28 16:32:50 ip-10-0-1-150 systemd[1]: fwupd.service: Failed with result 'exit-code'.\nAug 28 16:33:15 ip-10-0-1-150 systemd[1]: fwupd-refresh.service: Failed with result 'exit-code'.\nAug 28 18:00:08 ip-10-0-1-150 systemd[1]: fwupd.service: Failed with result 'exit-code'.\nAug 28 18:00:33 ip-10-0-1-150 systemd[1]: fwupd-refresh.service: Failed with result 'exit-code'.", + "stderr": "" + }, + "reboots": { + "status": "Success", + "stdout": "reboot system boot 7.0.0-1010-aws Wed Aug 12 14:10 still running\nreboot system boot 6.17.0-1007-aws Thu Mar 26 14:31 - 14:09 (138+23:38)\nreboot system boot 6.17.0-1007-aws Thu Mar 26 14:20 - 14:31 (00:10)\n\nwtmp begins Thu Mar 26 14:20:38 2026", + "stderr": "" + }, + "cron": { + "status": "Success", + "stdout": "total 32\ndrwxr-xr-x 2 root root 4096 Apr 6 18:06 .\ndrwxr-xr-x 117 root root 12288 Aug 28 06:18 ..\n-rw-r--r-- 1 root root 102 Mar 31 2024 .placeholder\n-rw-r--r-- 1 root root 802 Apr 16 2023 certbot\n-rw-r--r-- 1 root root 201 Apr 8 2024 e2scrub_all\n-rw-r--r-- 1 root root 396 Jan 9 2024 sysstat\n# Edit this file to introduce tasks to be run by cron.\n# \n# Each task to run has to be defined through a single line\n# indicating with different fields when the task will be run\n# and what command to run for the task\n# \n# To define the time you can provide concrete values for\n# minute (m), hour (h), day of month (dom), month (mon),\n# and day of week (dow) or use '*' in these fields (for 'any').\n# \n# Notice that tasks will be started based on the cron's system\n# daemon's notion of time and timezones.\n# \n# Output of the crontab jobs (including errors) is sent through\n# email to the user the crontab file belongs to (unless redirected).\n# \n# For example, you can run a backup of all your user accounts\n# at 5 a.m every week with:\n# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/\n# \n# For more information see the manual pages of crontab(5) and cron(8)\n# \n# m h dom mon dow command\n0 3 * * * /srv/docker_clean.sh >> /var/log/docker_clean.log 2>&1", + "stderr": "" + } + }, + "i-0055a6b877ba156e7": { + "os_release": { + "status": "Success", + "stdout": "PRETTY_NAME=\"Ubuntu 26.04 LTS\"\nNAME=\"Ubuntu\"\nVERSION_ID=\"26.04\"\nVERSION=\"26.04 LTS (Resolute Raccoon)\"\nVERSION_CODENAME=resolute\nID=ubuntu\nID_LIKE=debian\nHOME_URL=\"https://www.ubuntu.com/\"\nSUPPORT_URL=\"https://help.ubuntu.com/\"\nBUG_REPORT_URL=\"https://bugs.launchpad.net/ubuntu/\"\nPRIVACY_POLICY_URL=\"https://www.ubuntu.com/legal/terms-and-policies/privacy-policy\"\nUBUNTU_CODENAME=resolute\nLOGO=ubuntu-logo\nLinux ip-10-1-1-164 7.0.0-1004-aws #4-Ubuntu SMP PREEMPT Mon Apr 13 13:14:24 UTC 2026 x86_64 GNU/Linux", + "stderr": "" + }, + "uptime_load": { + "status": "Success", + "stdout": " 19:46:22 up 100 days, 11:10, 32 users, load average: 0.11, 0.17, 0.17\n0.11 0.17 0.17 1/726 2367813", + "stderr": "" + }, + "disk": { + "status": "Success", + "stdout": "Filesystem Size Used Avail Use% Mounted on\n/dev/root 193G 14G 179G 8% /\ntmpfs 3.8G 0 3.8G 0% /dev/shm\ntmpfs 1.6G 2.4M 1.6G 1% /run\nefivarfs 128K 3.1K 120K 3% /sys/firmware/efi/efivars\ntmpfs 3.8G 0 3.8G 0% /tmp\n/dev/nvme0n1p13 989M 163M 759M 18% /boot\n/dev/nvme0n1p15 105M 6.3M 99M 7% /boot/efi\nnone 1.0M 0 1.0M 0% /run/credentials/getty@tty1.service\nnone 1.0M 0 1.0M 0% /run/credentials/serial-getty@ttyS0.service\ntmpfs 774M 8.0K 774M 1% /run/user/1000\noverlay 193G 14G 179G 8% /var/lib/docker/rootfs/overlayfs/478a7e20581e706d45e88f9d680758f61267212c4aadcedb3eaba39173c55382\noverlay 193G 14G 179G 8% /var/lib/docker/rootfs/overlayfs/2dfe3565bdf549b9b54ed71e05b01c753a3eaa7e800732c8e7f65991479a1421\noverlay 193G 14G 179G 8% /var/lib/docker/rootfs/overlayfs/346a0578f1f0cb6080451bdcb88447291663812f3638e300948f5561f91a1e55\noverlay 193G 14G 179G 8% /var/lib/docker/rootfs/overlayfs/563211a974ecb6448a4535f3d89397425cd1cc7f1f0465363e5d929525ba7d32\noverlay 193G 14G 179G 8% /var/lib/docker/rootfs/overlayfs/46c1d3b386176068c7d084b86b197c93ffcde6d8ceb6e07d43195eab4fc28cc8\noverlay 193G 14G 179G 8% /var/lib/docker/rootfs/overlayfs/c179b1809ba9d6e44443ffbe72521a395dd40468905e7c38d6debda3d6bc6e48\noverlay 193G 14G 179G 8% /var/lib/docker/rootfs/overlayfs/1d56b0fa54032c95c44b7ca6b70b3a2841011836ae4c3448c223d0df817b382b\noverlay 193G 14G 179G 8% /var/lib/docker/rootfs/overlayfs/2fad2f5d9b29e1db29a06ce15ece27938fcb6738cbeeb731bc378fdf80ced9e1\noverlay 193G 14G 179G 8% /var/lib/docker/rootfs/overlayfs/0be32ab522668928681c3e0073de6a44e695e55fb3e99722b32141f9a6dd4972\noverlay 193G 14G 179G 8% /var/lib/docker/rootfs/overlayfs/30f1d48d93f8e83b32e6350ac9998077b86d4f8b27326c54c8c1ef65ba154ce8\noverlay 193G 14G 179G 8% /var/lib/docker/rootfs/overlayfs/7fcd6a1c667b73f80bae2730c8127986e8ec681a4330efbe51019ef2c0daafbb\nnone 1.0M 0 1.0M 0% /run/credentials/systemd-resolved.service\nnone 1.0M 0 1.0M 0% /run/credentials/systemd-journald.service\nnone 1.0M 0 1.0M 0% /run/credentials/systemd-networkd.service\noverlay 193G 14G 179G 8% /var/lib/docker/rootfs/overlayfs/00df4b1586897cf673baff24308b795821f365cf5be939cf6f4da00e8bd0e541\noverlay 193G 14G 179G 8% /var/lib/docker/rootfs/overlayfs/b9474738853115a33e10273ebd60ea1a8cf872bcc6218a8be54463d83def6ea5\n--- inodes\nFilesystem Inodes IUsed IFree IUse% Mounted on\n/dev/root 24962560 386662 24575898 2% /\ntmpfs 989627 2 989625 1% /dev/shm\ntmpfs 819200 1342 817858 1% /run\nefivarfs 0 0 0 - /sys/firmware/efi/efivars\ntmpfs 1048576 16 1048560 1% /tmp\n/dev/nvme0n1p13 65536 651 64885 1% /boot\n/dev/nvme0n1p15 0 0 0 - /boot/efi\nnone 1024 1 1023 1% /run/credentials/getty@tty1.service\nnone 1024 1 1023 1% /run/credentials/serial-getty@ttyS0.service\ntmpfs 197925 48 197877 1% /run/user/1000\noverlay 24962560 386662 24575898 2% /var/lib/docker/rootfs/overlayfs/478a7e20581e706d45e88f9d680758f61267212c4aadcedb3eaba39173c55382\noverlay 24962560 386662 24575898 2% /var/lib/docker/rootfs/overlayfs/2dfe3565bdf549b9b54ed71e05b01c753a3eaa7e800732c8e7f65991479a1421\noverlay 24962560 386662 24575898 2% /var/lib/docker/rootfs/overlayfs/346a0578f1f0cb6080451bdcb88447291663812f3638e300948f5561f91a1e55\noverlay 24962560 386662 24575898 2% /var/lib/docker/rootfs/overlayfs/563211a974ecb6448a4535f3d89397425cd1cc7f1f0465363e5d929525ba7d32\noverlay 24962560 386662 24575898 2% /var/lib/docker/rootfs/overlayfs/46c1d3b386176068c7d084b86b197c93ffcde6d8ceb6e07d43195eab4fc28cc8\noverlay 24962560 386662 24575898 2% /var/lib/docker/rootfs/overlayfs/c179b1809ba9d6e44443ffbe72521a395dd40468905e7c38d6debda3d6bc6e48\noverlay 24962560 386662 24575898 2% /var/lib/docker/rootfs/overlayfs/1d56b0fa54032c95c44b7ca6b70b3a2841011836ae4c3448c223d0df817b382b\noverlay 24962560 386662 24575898 2% /var/lib/docker/rootfs/overlayfs/2fad2f5d9b29e1db29a06ce15ece27938fcb6738cbeeb731bc378fdf80ced9e1\noverlay 24962560 386662 24575898 2% /var/lib/docker/rootfs/overlayfs/0be32ab522668928681c3e0073de6a44e695e55fb3e99722b32141f9a6dd4972\noverlay 24962560 386662 24575898 2% /var/lib/docker/rootfs/overlayfs/30f1d48d93f8e83b32e6350ac9998077b86d4f8b27326c54c8c1ef65ba154ce8\noverlay 24962560 386662 24575898 2% /var/lib/docker/rootfs/overlayfs/7fcd6a1c667b73f80bae2730c8127986e8ec681a4330efbe51019ef2c0daafbb\nnone 1024 1 1023 1% /run/credentials/systemd-resolved.service\nnone 1024 1 1023 1% /run/credentials/systemd-journald.service\nnone 1024 1 1023 1% /run/credentials/systemd-networkd.service\noverlay 24962560 386662 24575898 2% /var/lib/docker/rootfs/overlayfs/00df4b1586897cf673baff24308b795821f365cf5be939cf6f4da00e8bd0e541\noverlay 24962560 386662 24575898 2% /var/lib/docker/rootfs/overlayfs/b9474738853115a33e10273ebd60ea1a8cf872bcc6218a8be54463d83def6ea5", + "stderr": "" + }, + "memory": { + "status": "Success", + "stdout": " total used free shared buff/cache available\nMem: 7.6Gi 2.9Gi 982Mi 4.7Mi 4.0Gi 4.7Gi\nSwap: 0B 0B 0B\n--- swap", + "stderr": "" + }, + "code_dirs": { + "status": "Success", + "stdout": "/home:\ntotal 20\ndrwxr-xr-x 5 root root 4096 Jul 1 10:27 .\ndrwxr-xr-x 19 root root 4096 May 20 08:35 ..\ndrwxr-x--- 5 deploy deploy 4096 Jul 6 17:31 deploy\ndrwxr-x--- 2 gitlab-runner gitlab-runner 4096 Jul 1 10:27 gitlab-runner\ndrwxr-x--- 7 ubuntu ubuntu 4096 Jul 14 07:11 ubuntu\n\n/opt:\ntotal 24\ndrwxr-xr-x 4 root root 4096 Jul 15 15:14 .\ndrwxr-xr-x 19 root root 4096 May 20 08:35 ..\n-rw-r--r-- 1 deploy deploy 633 Jun 24 11:35 .env\ndrwxr-xr-x 4 root root 4096 Aug 26 00:53 aws\ndrwx--x--x 4 root root 4096 May 20 11:46 containerd\n-rw-r--r-- 1 root root 2412 Mar 27 14:26 default\n\n/srv:\ntotal 40\ndrwxr-xr-x 10 root root 4096 Jul 14 08:52 .\ndrwxr-xr-x 19 root root 4096 May 20 08:35 ..\ndrwxr-xr-x 7 deploy deploy 4096 Jul 20 19:38 ml_monitoring\ndrwxr-xr-x 9 root root 4096 Jun 29 20:13 patient-summary-service\ndrwxr-xr-x 8 root root 4096 Jun 29 20:09 patient_document_parser\ndrwxr-xr-x 11 root root 4096 Jun 29 20:13 post_processor\ndrwxr-xr-x 2 root root 4096 Jul 15 12:48 redis-tls\ndrwxr-xr-x 4 root root 4096 Jul 1 18:07 redis_db\ndrwxr-xr-x 21 root root 4096 Jul 9 15:24 sai_suggestions\ndrwxr-xr-x 9 root root 4096 Jun 29 20:13 soniox_transcriber\n\n/var/www:\ntotal 12\ndrwxr-xr-x 3 root root 4096 May 20 08:43 .\ndrwxr-xr-x 14 root root 4096 May 20 08:43 ..\ndrwxr-xr-x 2 root root 4096 May 20 08:43 html", + "stderr": "" + }, + "git_checkouts": { + "status": "Success", + "stdout": "/srv/soniox_transcriber/.git\n/srv/ml_monitoring/.git\n/srv/patient_document_parser/.git\n/srv/post_processor/.git\n/srv/sai_suggestions/.git\n/srv/patient-summary-service/.git", + "stderr": "" + }, + "git_remotes": { + "status": "Success", + "stdout": "== /srv/soniox_transcriber\norigin\tgit@git.devteam.space:scrivas/soniox_transcriber.git (fetch)\norigin\tgit@git.devteam.space:scrivas/soniox_transcriber.git (push)\n9d0159d9fd47b2f5ea16b11552b4b09335e5d250 Fri Jun 12 03:43:55 2026 +0500 Yegor Kovalev phi_logging: never crash the service when the audit log is unwritable (SOC 2 deploy fix)\n## prod...origin/prod\n== /srv/ml_monitoring\n== /srv/patient_document_parser\norigin\tgit@git.devteam.space:scrivas/patient_document_parser.git (fetch)\norigin\tgit@git.devteam.space:scrivas/patient_document_parser.git (push)\n057896efc27b438a72ed36dd77866325c7693410 Fri Jun 12 03:43:55 2026 +0500 Yegor Kovalev phi_logging: never crash the service when the audit log is unwritable (SOC 2 deploy fix)\n## prod...origin/prod\n== /srv/post_processor\norigin\tgit@git.devteam.space:scrivas/post_processor.git (fetch)\norigin\tgit@git.devteam.space:scrivas/post_processor.git (push)\n320b744033bede7bf9a1e7cba5632c14439824f7 Fri Jun 12 03:43:55 2026 +0500 Yegor Kovalev phi_logging: never crash the service when the audit log is unwritable (SOC 2 deploy fix)\n## prod...origin/prod\n== /srv/sai_suggestions\norigin\tgit@git.devteam.space:scrivas/sai_suggestions.git (fetch)\norigin\tgit@git.devteam.space:scrivas/sai_suggestions.git (push)\nae0f873680c6641de70188fa336ecef7ea0f70d0 Thu Jul 9 20:01:32 2026 +0500 Yegor Kovalev merge: promote a9f2612 into prod (gpt-5.4 migration + threshold desync guard)\n## prod...origin/prod\n== /srv/patient-summary-service\norigin\tgit@git.devteam.space:scrivas/patient-summary-service.git (fetch)\norigin\tgit@git.devteam.space:scrivas/patient-summary-service.git (push)\n7178a26575e261dbf889f40c974f607bb3c91ca7 Fri Jun 12 03:43:55 2026 +0500 Yegor Kovalev phi_logging: never crash the service when the audit log is unwritable (SOC 2 deploy fix)\n## prod...origin/prod", + "stderr": "" + }, + "manifests": { + "status": "Success", + "stdout": "/srv/soniox_transcriber/docker/Dockerfile\n/srv/soniox_transcriber/docker/docker-compose.yml\n/srv/soniox_transcriber/requirements.txt\n/srv/soniox_transcriber/tests/e2e/docker-compose.yml\n/srv/soniox_transcriber/pyproject.toml\n/srv/ml_monitoring/tests/mocks/Dockerfile\n/srv/ml_monitoring/docker-compose.yml\n/srv/ml_monitoring/pyproject.toml\n/srv/patient_document_parser/Dockerfile\n/srv/patient_document_parser/requirements.txt\n/srv/patient_document_parser/docker-compose.yml\n/srv/post_processor/docker/Dockerfile\n/srv/post_processor/docker/docker-compose.yml\n/srv/post_processor/requirements.txt\n/srv/post_processor/pyproject.toml\n/srv/sai_suggestions/Dockerfile\n/srv/sai_suggestions/requirements.txt\n/srv/sai_suggestions/tests/e2e/docker-compose.yml\n/srv/sai_suggestions/docker-compose.yml\n/srv/sai_suggestions/pyproject.toml\n/srv/patient-summary-service/Dockerfile\n/srv/patient-summary-service/requirements.txt\n/srv/patient-summary-service/docker-compose.yml\n/srv/patient-summary-service/pyproject.toml\n/usr/share/doc/python3-botocore/requirements.txt\n/home/ubuntu/.vscode-server/extensions/github.copilot-chat-0.36.2/package.json\n/home/ubuntu/.vscode-server/extensions/github.copilot-1.388.0/package.json\n/home/ubuntu/.vscode-server/extensions/github.vscode-pull-request-github-0.126.0/package.json", + "stderr": "" + }, + "processes": { + "status": "Success", + "stdout": "USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND\nroot 434324 0.2 6.6 1203344 528068 ? Ssl Aug14 47:59 /usr/local/bin/python3.11 /usr/local/bin/uvicorn app.main:app --host 0.0.0.0 --port 8000\nubuntu 779457 0.2 4.1 702448 329136 ? Ssl Aug24 13:38 /usr/local/bin/python3.11 /usr/local/bin/uvicorn app:app --host 0.0.0.0 --port 8000\nroot 434132 0.3 4.0 780300 322980 ? Ssl Aug14 63:43 /usr/local/bin/python3.11 /usr/local/bin/uvicorn sai_suggestions.api.main:app --host 0.0.0.0 --port 8000\nubuntu 434136 0.2 3.9 621416 309316 ? Ssl Aug14 51:12 /usr/local/bin/python3.11 /usr/local/bin/uvicorn main:app --host 0.0.0.0 --port 8000\nroot 929863 0.2 3.3 729540 266636 ? Ssl Aug27 4:14 python -m app.main\n472 434047 0.0 1.5 1530700 123860 ? Ssl Aug14 19:57 grafana server --homepath=/usr/share/grafana --config=/etc/grafana/grafana.ini --packaging=docker cfg:default.log.mode=console cfg:default.paths.data=/var/lib/grafana cfg:default.paths.logs=/var/log/grafana cfg:default.paths.plugins=/var/lib/grafana/plugins cfg:default.paths.provisioning=/etc/grafana/provisioning\nroot 433434 0.6 1.4 2672760 118520 ? Ssl Aug14 134:36 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock\nroot 3193926 1.2 1.4 1104928 118504 ? Ssl Aug13 281:22 /opt/aws/amazon-guardduty-agent/bin/amazon-guardduty-agent --worker-threads 8\nnobody 433931 0.1 1.2 1772216 102684 ? Ssl Aug14 41:23 /bin/prometheus --web.listen-address=0.0.0.0:9090 --config.file=/tmp/prometheus.yml --storage.tsdb.path=/prometheus --storage.tsdb.retention.time=7d\nroot 433765 0.1 1.2 1401944 95688 ? Ssl Aug14 21:30 traefik traefik --providers.docker=true --providers.docker.exposedbydefault=false --providers.docker.network=traefik-net --entrypoints.web.address=:8090 --entrypoints.internal.address=:8091\nroot 429695 0.4 0.8 1281984 69112 ? Ssl Aug14 89:04 /usr/bin/netbird service run --log-level info --daemon-addr unix:///var/run/netbird.sock --log-file /var/log/netbird/client.log\nroot 431377 0.0 0.8 1431256 65512 ? Ssl Aug14 8:45 /usr/bin/gitlab-runner run --config /etc/gitlab-runner/config.toml --working-directory /home/gitlab-runner --service gitlab-runner --user gitlab-runner\nroot 432246 0.4 0.7 2195224 60212 ? Ssl Aug14 97:28 /usr/bin/containerd\nroot 337999 0.0 0.5 103500 46884 ? S> /var/log/docker_clean.log 2>&1", + "stderr": "" + } + } + } +} \ No newline at end of file diff --git a/index.html b/index.html index 4f429aa..8c8363a 100644 --- a/index.html +++ b/index.html @@ -55,10 +55,16 @@
Dasnuve · Cloud Discovery

Scrivas — AWS Discovery Reports

Read-only assessment of the Scrivas AWS Organization (o-qfj0pvhhv7) — footprint, - security posture, cost, and Organizations governance. Prepared to inform a proposal.

-
2 accounts · us-east-2 primary · generated 2026-08-19 · CONFIDENTIAL
+ security posture, cost, and Organizations governance — extended with an EC2 source-code recovery and production reliability triage. Prepared to inform a proposal.

+
2 accounts · us-east-2 primary · generated 2026-08-19, EC2 code pass 2026-08-28 · CONFIDENTIAL
+ + CODE + RELIABILITY +

Source Code & Reliability Triage time-sensitive

+

All 10 application repos found as full git checkouts on Scrivas-owned EC2 — recoverable despite the contractor holding the GitLab. Plus the reliability triage: 23 prod containers on one host, no memory limits, no swap.

+ Open dashboard → +
FINDINGS

Discovery Findings

@@ -83,6 +89,9 @@

Written report & raw evidence

  • discovery_report.md — narrative writeup (renders on GitHub)
  • +
  • ec2_code_discovery_report.md — code recovery + reliability triage (renders on GitHub)
  • +
  • findings/ec2_code_inspect.json — SSM probe output, all 7 instances
  • +
  • findings/ec2_code_inspect_prod.json — prod/stage probe snapshot
  • findings/org_assessment_report.json — org / trust / delegated-admin raw data
  • findings/fast_discovery.json — footprint, security, cost raw data
  • findings/member_lazka_547868853286.json — member account raw data
  • diff --git a/scripts/ec2_code_discovery.py b/scripts/ec2_code_discovery.py new file mode 100644 index 0000000..8052c84 --- /dev/null +++ b/scripts/ec2_code_discovery.py @@ -0,0 +1,159 @@ +#!/usr/bin/env python3 +""" +Scrivas — EC2 source-code discovery (stage 1: inventory) +======================================================== +Read-only. Enumerates EC2 instances in active regions and collects the +signals that indicate where application source code lives: + + - instance identity, state, type, AMI, launch time, tags + - IAM instance profile (what the box can reach) + - SSM managed status (can we run a read-only inspection on it?) + - EC2 user data (frequently contains the bootstrap/deploy script, + git remote URLs, artifact bucket names, image registries) + +Context: the client does not hold the source code for their own platform; +it was built under contract by a third party. This inventories what is +running in the client's own account to locate their code. + +Usage: python3 scripts/ec2_code_discovery.py [--profile PROFILE] +Output: findings/ec2_code_discovery.json +""" +import argparse +import base64 +import json +import os +from datetime import datetime, date + +import boto3 +from botocore.exceptions import ClientError, BotoCoreError + +DEFAULT_PROFILE = "dasnuve-scrivas-louis-impersonation" +REGIONS = ["us-east-2", "us-east-1"] +FINDINGS = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), "findings") + + +def _default(o): + return o.isoformat() if isinstance(o, (datetime, date)) else str(o) + + +def safe(fn, *a, **k): + try: + return fn(*a, **k), None + except (ClientError, BotoCoreError) as e: + return None, str(e) + + +def tag_map(tags): + return {t["Key"]: t["Value"] for t in (tags or [])} + + +def user_data(ec2, iid): + resp, err = safe(ec2.describe_instance_attribute, InstanceId=iid, Attribute="userData") + if err: + return {"error": err} + raw = (resp.get("UserData") or {}).get("Value") + if not raw: + return None + try: + return {"text": base64.b64decode(raw).decode("utf-8", "replace")} + except Exception as e: # noqa: BLE001 + return {"error": f"decode failed: {e}"} + + +def ssm_managed(session, region): + """Instance IDs SSM can reach — these are inspectable without SSH keys.""" + ssm = session.client("ssm", region_name=region) + out = {} + try: + for page in ssm.get_paginator("describe_instance_information").paginate(): + for i in page.get("InstanceInformationList", []): + out[i.get("InstanceId")] = { + "ping_status": i.get("PingStatus"), + "platform": f'{i.get("PlatformName")} {i.get("PlatformVersion")}', + "agent": i.get("AgentVersion"), + "last_ping": i.get("LastPingDateTime"), + } + except (ClientError, BotoCoreError) as e: + return {"_error": str(e)} + return out + + +def scan_region(session, region): + ec2 = session.client("ec2", region_name=region) + managed = ssm_managed(session, region) + instances = [] + + pages, err = safe(lambda: list(ec2.get_paginator("describe_instances").paginate())) + if err: + return {"error": err} + + for page in pages: + for res in page.get("Reservations", []): + for i in res.get("Instances", []): + iid = i["InstanceId"] + tags = tag_map(i.get("Tags")) + instances.append({ + "instance_id": iid, + "name": tags.get("Name"), + "state": i["State"]["Name"], + "type": i.get("InstanceType"), + "image_id": i.get("ImageId"), + "launch_time": i.get("LaunchTime"), + "key_name": i.get("KeyName"), + "private_ip": i.get("PrivateIpAddress"), + "public_ip": i.get("PublicIpAddress"), + "iam_instance_profile": (i.get("IamInstanceProfile") or {}).get("Arn"), + "security_groups": [g["GroupId"] for g in i.get("SecurityGroups", [])], + "volumes": [ + b["Ebs"]["VolumeId"] + for b in i.get("BlockDeviceMappings", []) if b.get("Ebs") + ], + "tags": tags, + "ssm": managed.get(iid), + "user_data": user_data(ec2, iid), + }) + return { + "region": region, + "ssm_managed_count": len([k for k in managed if not k.startswith("_")]), + "instance_count": len(instances), + "instances": instances, + } + + +def main(): + ap = argparse.ArgumentParser() + ap.add_argument("--profile", default=DEFAULT_PROFILE) + ap.add_argument("--regions", nargs="*", default=REGIONS) + args = ap.parse_args() + + session = boto3.Session(profile_name=args.profile) + ident = session.client("sts").get_caller_identity() + + report = { + "generated": datetime.now().astimezone().isoformat(), + "account": ident["Account"], + "principal": ident["Arn"], + "regions": [scan_region(session, r) for r in args.regions], + } + + os.makedirs(FINDINGS, exist_ok=True) + path = os.path.join(FINDINGS, "ec2_code_discovery.json") + with open(path, "w") as fh: + json.dump(report, fh, indent=2, default=_default) + print(f"wrote {path}") + + for r in report["regions"]: + if r.get("error"): + print(f'{r}') + continue + print(f'\n== {r["region"]}: {r["instance_count"]} instances, {r["ssm_managed_count"]} SSM-managed') + for i in r["instances"]: + ud = i["user_data"] + ud_flag = "userdata" if (ud and ud.get("text")) else "-" + ssm_flag = i["ssm"]["ping_status"] if i.get("ssm") else "-" + print(f' {i["instance_id"]:22} {i["state"]:10} {i["type"]:14} ' + f'ssm={ssm_flag:8} {ud_flag:9} {i.get("name")}') + + +if __name__ == "__main__": + main() diff --git a/scripts/ec2_code_inspect.py b/scripts/ec2_code_inspect.py new file mode 100644 index 0000000..d5d70d4 --- /dev/null +++ b/scripts/ec2_code_inspect.py @@ -0,0 +1,158 @@ +#!/usr/bin/env python3 +""" +Scrivas — EC2 code & reliability inspection (stage 2) +===================================================== +Runs a fixed, read-only command set on SSM-managed instances to locate the +deployed application code and collect reliability evidence. + +Context: Scrivas does not hold the source for their own platform (built by a +third-party contractor) and is reporting production reliability issues. This +inspects the client's own instances, in the client's own account, to (a) find +where the code lives and (b) gather triage evidence. + +SCOPE NOTE: ssm:SendCommand executes on the host. The command set below is +read-only by construction -- no writes, no restarts, no config changes, and +no dumping of file *contents* beyond manifests and VCS metadata. Review +PROBES before running. Requires explicit operator approval. + +Usage: + python3 scripts/ec2_code_inspect.py --list + python3 scripts/ec2_code_inspect.py --instance i-073154fb4fa773bbd + python3 scripts/ec2_code_inspect.py --all +Output: findings/ec2_code_inspect.json +""" +import argparse +import json +import os +import time +from datetime import datetime, date + +import boto3 +from botocore.exceptions import ClientError, BotoCoreError + +DEFAULT_PROFILE = "dasnuve-scrivas-louis-impersonation" +REGION = "us-east-2" +FINDINGS = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), "findings") + +# Read-only probes. Each is (label, shell). Keep every command non-mutating. +PROBES = [ + ("os_release", "cat /etc/os-release; uname -a"), + ("uptime_load", "uptime; cat /proc/loadavg"), + ("disk", "df -h; echo '--- inodes'; df -i"), + ("memory", "free -h; echo '--- swap'; swapon --show"), + ("code_dirs", "ls -la /opt /srv /var/www /home 2>/dev/null"), + ("git_checkouts", "find / -maxdepth 6 -name .git -type d " + "-not -path '*/node_modules/*' 2>/dev/null | head -40"), + ("git_remotes", "for g in $(find / -maxdepth 6 -name .git -type d " + "-not -path '*/node_modules/*' 2>/dev/null | head -20); do " + "r=$(dirname $g); echo \"== $r\"; " + "git -C $r remote -v 2>/dev/null; " + "git -C $r log -1 --format='%H %ad %an %s' 2>/dev/null; " + "git -C $r status -sb 2>/dev/null | head -5; done"), + ("manifests", "find / -maxdepth 6 \\( -name package.json -o -name requirements.txt " + "-o -name pyproject.toml -o -name go.mod -o -name Dockerfile " + "-o -name docker-compose.y*ml \\) -not -path '*/node_modules/*' " + "2>/dev/null | head -40"), + ("processes", "ps auxww --sort=-%mem | head -30"), + ("listening", "ss -tulpnH 2>/dev/null | head -40"), + ("systemd_units", "systemctl list-units --type=service --state=running --no-pager --no-legend | head -40"), + ("systemd_failed", "systemctl list-units --state=failed --no-pager --no-legend"), + ("docker", "docker ps -a --format '{{.Names}}\t{{.Image}}\t{{.Status}}' 2>/dev/null | head -30"), + ("docker_images", "docker images --format '{{.Repository}}:{{.Tag}}\t{{.CreatedAt}}' 2>/dev/null | head -20"), + ("oom_kills", "sudo dmesg -T 2>/dev/null | grep -iE 'oom|killed process' | tail -20"), + ("svc_restarts", "sudo journalctl --since '7 days ago' --no-pager 2>/dev/null " + "| grep -iE 'segfault|out of memory|failed with result|start-limit' | tail -40"), + ("reboots", "last -x reboot 2>/dev/null | head -10"), + ("cron", "ls -la /etc/cron.d 2>/dev/null; crontab -l 2>/dev/null"), +] + + +def _default(o): + return o.isoformat() if isinstance(o, (datetime, date)) else str(o) + + +def managed(session): + ssm = session.client("ssm", region_name=REGION) + out = [] + for page in ssm.get_paginator("describe_instance_information").paginate(): + out += [i for i in page.get("InstanceInformationList", []) + if i.get("PingStatus") == "Online"] + return out + + +def run_probe(ssm, iid, label, shell, timeout=120): + try: + cmd = ssm.send_command( + InstanceIds=[iid], + DocumentName="AWS-RunShellScript", + Comment=f"dasnuve-discovery:{label}"[:100], + Parameters={"commands": [shell], "executionTimeout": [str(timeout)]}, + )["Command"]["CommandId"] + except (ClientError, BotoCoreError) as e: + return {"error": str(e)} + + for _ in range(int(timeout / 2)): + time.sleep(2) + try: + r = ssm.get_command_invocation(CommandId=cmd, InstanceId=iid) + except ClientError as e: + if "InvocationDoesNotExist" in str(e): + continue + return {"error": str(e)} + if r["Status"] in ("Pending", "InProgress", "Delayed"): + continue + return { + "status": r["Status"], + "stdout": r.get("StandardOutputContent", "").rstrip(), + "stderr": r.get("StandardErrorContent", "").rstrip(), + } + return {"error": "timed out waiting for invocation"} + + +def inspect(session, iid): + ssm = session.client("ssm", region_name=REGION) + print(f"\n=== {iid}") + res = {} + for label, shell in PROBES: + print(f" .. {label}", flush=True) + res[label] = run_probe(ssm, iid, label, shell) + return res + + +def main(): + ap = argparse.ArgumentParser() + ap.add_argument("--profile", default=DEFAULT_PROFILE) + ap.add_argument("--instance", action="append", dest="instances") + ap.add_argument("--all", action="store_true") + ap.add_argument("--list", action="store_true") + args = ap.parse_args() + + session = boto3.Session(profile_name=args.profile) + online = managed(session) + + if args.list: + for i in online: + print(f'{i["InstanceId"]:22} {i["PingStatus"]:8} ' + f'{i.get("PlatformName")} {i.get("PlatformVersion")}') + return + + targets = args.instances or ([i["InstanceId"] for i in online] if args.all else []) + if not targets: + ap.error("pass --instance ID (repeatable), --all, or --list") + + report = { + "generated": datetime.now().astimezone().isoformat(), + "region": REGION, + "probes": [p[0] for p in PROBES], + "results": {iid: inspect(session, iid) for iid in targets}, + } + + os.makedirs(FINDINGS, exist_ok=True) + path = os.path.join(FINDINGS, "ec2_code_inspect.json") + with open(path, "w") as fh: + json.dump(report, fh, indent=2, default=_default) + print(f"\nwrote {path}") + + +if __name__ == "__main__": + main()