Gladex Agent Logs
Agent run logs & app logs · env: prod · LAN-only investor surface
Overview
| Run logs | 2523 files, 131.2 MB |
| Latest run log | run-20261024-231500-2057.log |
| Log directory | /data/agent-logs |
| App log directory | /opt/startup/prod/logs |
Run logs (newest first, last 50)
Tail — run-20261024-231500-2057.log (last 200 lines)
-rw-r----- 1 root adm 6775 Oct 12 23:57 other_vhosts_access.log.12.gz
-rw-r----- 1 root adm 10125 Oct 11 23:28 other_vhosts_access.log.13.gz
-rw-r----- 1 root adm 12222 Oct 10 23:37 other_vhosts_access.log.14.gz
-rw-r----- 1 root adm 1548 Oct 22 22:16 other_vhosts_access.log.2.gz
-rw-r----- 1 root adm 1277 Oct 21 23:45 other_vhosts_access.log.3.gz
-rw-r----- 1 root adm 6875 Oct 20 23:39 other_vhosts_access.log.4.gz
-rw-r----- 1 root adm 4301 Oct 19 22:45 other_vhosts_access.log.5.gz
-rw-r----- 1 root adm 5510 Oct 18 22:12 other_vhosts_access.log.6.gz
-rw-r----- 1 root adm 4168 Oct 17 23:40 other_vhosts_access.log.7.gz
-rw-r----- 1 root adm 5589 Oct 16 23:50 other_vhosts_access.log.8.gz
-rw-r----- 1 root adm 5367 Oct 15 23:35 other_vhosts_access.log.9.gz
-rw-r----- 1 root adm 5767 Oct 24 16:07 photos-access.log
-rw-r----- 1 root adm 19418 Oct 23 19:58 photos-access.log.1
-rw-r----- 1 root adm 8014 Oct 14 23:37 photos-access.log.10.gz
-rw-r----- 1 root adm 886 Oct 13 17:46 photos-access.log.11.gz
-rw-r----- 1 root adm 581 Oct 12 23:11 photos-access.log.12.gz
-rw-r----- 1 root adm 1794 Oct 11 23:43 photos-access.log.13.gz
-rw-r----- 1 root adm 11913 Oct 10 23:37 photos-access.log.14.gz
-rw-r----- 1 root adm 1115 Oct 22 20:55 photos-access.log.2.gz
-rw-r----- 1 root adm 206 Oct 21 23:24 photos-access.log.3.gz
-rw-r----- 1 root adm 1842 Oct 20 20:13 photos-access.log.4.gz
-rw-r----- 1 root adm 439 Oct 19 23:30 photos-access.log.5.gz
-rw-r----- 1 root adm 431 Oct 18 19:35 photos-access.log.6.gz
-rw-r----- 1 root adm 7548 Oct 17 21:12 photos-access.log.7.gz
-rw-r----- 1 root adm 10714 Oct 16 22:53 photos-access.log.8.gz
-rw-r----- 1 root adm 5359 Oct 15 23:00 photos-access.log.9.gz
-rw-r----- 1 root adm 181 Oct 24 09:18 photos-error.log
-rw-r----- 1 root adm 402 Oct 14 08:41 photos-error.log.1
-rw-r----- 1 root adm 264 Oct 10 07:55 photos-error.log.2.gz
-rw-r--r-- 1 root root 463 Sep 27 21:17 photos-error.log.3.gz
=== download hits in access logs ===
1 10.2.3.1
[0m$ [0mgrep -hc "GET /download/gladex" /var/log/apache2/*access* 2>/dev/null; echo "=== sample lines ==="; grep -h "GET /download/gladex" /var/log/apache2/*access* 2>/dev/null | tail -5; echo "=== curl UA lines by day ==="; grep -h "GET /download/gladex" /var/log/apache2/*access* 2>/dev/null | grep -i "curl" | awk -F: '{print $1" "$2}' | uniq -c | tail -20
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
=== sample lines ===
10.2.3.1 - - [24/Oct/2026:07:34:32 +0200] "GET /download/gladex HTTP/1.1" 200 2132712 "-" "Mozilla/5.0 (compatible; QlyzeBot/1.0; +https://app.qlyze.io/bot)"
=== curl UA lines by day ===
> build · mimo-v2.6-flash-free
[0m$ [0mcd /var/log/apache2 && { grep -h "GET /download/gladex" *.log *.log.1 2>/dev/null; for f in *.gz; do zgrep -h "GET /download/gladex" "$f" 2>/dev/null; done; } > /tmp/dl-hits.txt; wc -l /tmp/dl-hits.txt; echo "=== by peer ==="; awk '{print $1}' /tmp/dl-hits.txt | sort | uniq -c | sort -rn; echo "=== by UA (tail field) ==="; awk -F'"' '{print $6}' /tmp/dl-hits.txt | sort | uniq -c | sort -rn | head -12; echo "=== by day ==="; awk -F'[' '{print substr($2,1,11)}' /tmp/dl-hits.txt | sort | uniq -c | tail -20
40 /tmp/dl-hits.txt
=== by peer ===
32 10.2.3.1
3 gladex.de:80
2 127.0.0.1
2 10.2.3.8
1 git.gladex.de:80
=== by UA (tail field) ===
7 curl/8.5.0
5 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/155.0.0.0 Safari/537.36
4 Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; Amazonbot/0.1; +https://developer.amazon.com/support/amazonbot) Chrome/119.0.6045.214 Safari/537.36
4 Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1
3 Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; Reflectionbot/1.0; +https://reflection.ai/bot) Chrome/151.0.0.0 Safari/537.36
3 Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)
3 Mozilla/5.0 (compatible; QlyzeBot/1.0; +https://app.qlyze.io/bot)
3 Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36
2 Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/153.0.0.0 Safari/537.36
2 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.4 Safari/605.1.15 (Applebot/0.1; +http://www.apple.com/go/applebot)
1 curl/8.7.1
1 PoliasBot/0.1 (+https://polias.eu/bot; hallo@polias.eu)
=== by day ===
9 10/Oct/2026
3 11/Oct/2026
10 12/Oct/2026
2 13/Oct/2026
6 14/Oct/2026
2 17/Oct/2026
3 19/Oct/2026
3 20/Oct/2026
1 21/Oct/2026
1 24/Oct/2026
> build · mimo-v2.6-flash-free
[0m$ [0mpython3 - <<'EOF'
import json, collections, datetime
p="/opt/startup/prod/logs/downloads.log"
byhour=collections.Counter(); samples=[]
for line in open(p):
d=json.loads(line)
if d["ua"].startswith("curl"):
t=datetime.datetime.fromtimestamp(d["ts"], datetime.UTC)
byhour[t.strftime("%Y-%m-%d %H"])] = byhour.get(t.strftime("%Y-%m-%d %H"),0)+1
samples.append((t.isoformat(), d["peer"], d["ua"]))
print("curl lines:", len(samples))
print("first:", samples[0], "last:", samples[-1])
# gaps
import statistics
ts=[datetime.datetime.fromtimestamp(json.loads(l)["ts"], datetime.UTC) for l in open(p) if json.loads(l)["ua"].startswith("curl")]
ts.sort()
gaps=[(ts[i+1]-ts[i]).total_seconds() for i in range(len(ts)-1)]
print("median gap s:", statistics.median(gaps), "min:", min(gaps), "max:", max(gaps))
print("distinct days:", len({t.date().isoformat() for t in ts}))
EOF
File "<stdin>", line 8
byhour[t.strftime("%Y-%m-%d %H"])] = byhour.get(t.strftime("%Y-%m-%d %H"),0)+1
^
SyntaxError: closing parenthesis ']' does not match opening parenthesis '('
[0m$ [0mcd /data/repo && grep -rn "download/gladex" --include="*.sh" --include="*.php" --include="*.py" --include="*.md" tools/ tests/ app/ 2>/dev/null | head -20; echo "=== cron/systemd ==="; grep -rn "download" /etc/cron.d/ /etc/crontab 2>/dev/null | head; systemctl list-timers --no-pager 2>/dev/null | grep -i "down\|health\|red\|watch" | head
tools/REGISTRY.md:2558:- HTTP endpoints: /healthz (dev+prod), /download/gladex, /api/health, /api/uptime, /api/endpoints, /api/changelog, /api/stats
tools/REGISTRY.md:8638:`/download/gladex`, written by `app/src/php/download_counter.php` in `[0.4.313]`):
tests/test_getting_started.sh:278:for tok in 'curl -fsSL https://gladex.de/download/gladex' 'gladex serve --port 50051' 'gladex mcp --port 50052'; do
tests/test_getting_started.sh:281:assert_has "A10 the install line is classified EXCLUDED" $'F01\tEXCLUDED\tcurl -fsSL https://gladex.de/download/gladex' "$(cat "$BASE/cls")"
tests/test_docs_mobile.php:424: * Commands paragraph: `curl -O https://gladex.de/download/gladex`. The URL is
tests/test_docs_mobile.php:446:assert_true(strpos($src, 'curl -O https://gladex.de/download/gladex') !== false,
tests/test_docs_mobile.php:569: out.hasUrl = document.body.textContent.indexOf('https://gladex.de/download/gladex') >= 0;
tests/test_report_demo.sh:199: 'curl -fsSL http://gladex.de/download/gladex -o /usr/local/bin/gladex && chmod +x /usr/local/bin/gladex' \
tests/test_report_demo.sh:286: "$(grep -c '^\*\*Download\*\*: `curl -fsSL http://gladex.de/download/gladex' "$REPORT" || true)"
tests/test_start_page.php:149:foreach (['https://gladex.de/download/gladex',
tests/test_start_page.php:208: assert_true(str_contains($d, 'https://gladex.de/download/gladex'),
tests/test_download_counter.php:5: * date — the app served /download/gladex and counted nothing, and Apache's
tests/test_download_counter.php:33: * HEAD on /download/gladex writes no line, a GET on
tests/test_download_counter.php:34: * /download/gladex writes exactly one, parsed end to end. Cost
tests/test_download_counter.php:328: $c2 = http_code("http://127.0.0.1:$port/download/gladex", 'HEAD', $markHead);
tests/test_download_counter.php:331: assert_true($c2 === 200, "$envName HEAD /download/gladex answers 200 (got $c2)");
tests/test_download_counter.php:335: $c3 = http_code("http://127.0.0.1:$port/download/gladex", 'GET', $markGet);
tests/test_download_counter.php:336: assert_true($c3 === 200, "$envName GET /download/gladex answers 200 (got $c3)");
app/src/php/download.php:208: <a href="/download/gladex" class="download-btn" download>
app/src/php/info.php:158: <a href="/download/gladex">Download CLI</a>
=== cron/systemd ===
Sat 2026-10-24 23:30:29 CEST 2min 16s Sat 2026-10-24 23:25:29 CEST 2min 43s ago sofia-watch.timer sofia-watch.service
Sat 2026-10-24 23:32:30 CEST 4min 16s Sat 2026-10-24 23:17:30 CEST 10min ago agent-loop-watchdog.timer agent-loop-watchdog.service
Sun 2026-10-25 07:51:34 CET 9h Sat 2026-10-24 08:51:33 CEST 14h ago update-notifier-download.timer update-notifier-download.service
> build · mimo-v2.6-flash-free
Select another run log from the list above. Only files matching run-YYYYMMDD-HHMMSS-N.log are readable.
App log tail — prod-8001.log (last 60 lines)
[Sat Oct 24 23:16:59 2026] 127.0.0.1:42718 Accepted [Sat Oct 24 23:16:59 2026] 127.0.0.1:42718 Closing [Sat Oct 24 23:16:59 2026] 127.0.0.1:42726 Accepted [Sat Oct 24 23:16:59 2026] 127.0.0.1:42726 Closing [Sat Oct 24 23:16:59 2026] 127.0.0.1:42738 Accepted [Sat Oct 24 23:16:59 2026] 127.0.0.1:42738 Closing [Sat Oct 24 23:18:01 2026] 127.0.0.1:37708 Accepted [Sat Oct 24 23:18:01 2026] 127.0.0.1:37708 Closing [Sat Oct 24 23:18:45 2026] 127.0.0.1:54306 Accepted [Sat Oct 24 23:18:45 2026] 127.0.0.1:54306 Closing [Sat Oct 24 23:20:42 2026] 127.0.0.1:60370 Accepted [Sat Oct 24 23:20:42 2026] 127.0.0.1:60370 Closing [Sat Oct 24 23:20:42 2026] 127.0.0.1:60378 Accepted [Sat Oct 24 23:20:42 2026] 127.0.0.1:60378 Closing [Sat Oct 24 23:20:58 2026] 127.0.0.1:32874 Accepted [Sat Oct 24 23:20:58 2026] 127.0.0.1:32874 Closing [Sat Oct 24 23:20:58 2026] 127.0.0.1:32884 Accepted [Sat Oct 24 23:20:58 2026] 127.0.0.1:32884 Closing [Sat Oct 24 23:21:28 2026] 127.0.0.1:47434 Accepted [Sat Oct 24 23:21:28 2026] 127.0.0.1:47434 Closing [Sat Oct 24 23:21:28 2026] 127.0.0.1:47436 Accepted [Sat Oct 24 23:21:28 2026] 127.0.0.1:47436 Closing [Sat Oct 24 23:21:28 2026] 127.0.0.1:47438 Accepted [Sat Oct 24 23:21:28 2026] 127.0.0.1:47438 Closing [Sat Oct 24 23:21:28 2026] 127.0.0.1:47454 Accepted [Sat Oct 24 23:21:28 2026] 127.0.0.1:47454 Closing [Sat Oct 24 23:21:28 2026] 127.0.0.1:47466 Accepted [Sat Oct 24 23:21:28 2026] 127.0.0.1:47466 Closing [Sat Oct 24 23:21:28 2026] 127.0.0.1:47474 Accepted [Sat Oct 24 23:21:28 2026] 127.0.0.1:47474 Closing [Sat Oct 24 23:21:28 2026] 127.0.0.1:47488 Accepted [Sat Oct 24 23:21:28 2026] 127.0.0.1:47488 Closing [Sat Oct 24 23:21:28 2026] 127.0.0.1:47502 Accepted [Sat Oct 24 23:21:28 2026] 127.0.0.1:47502 Closing [Sat Oct 24 23:21:28 2026] 127.0.0.1:47512 Accepted [Sat Oct 24 23:21:28 2026] 127.0.0.1:47512 Closing [Sat Oct 24 23:21:28 2026] 127.0.0.1:47528 Accepted [Sat Oct 24 23:21:28 2026] 127.0.0.1:47528 Closing [Sat Oct 24 23:22:47 2026] 127.0.0.1:43964 Accepted [Sat Oct 24 23:22:47 2026] 127.0.0.1:43964 Closing [Sat Oct 24 23:22:47 2026] 127.0.0.1:43966 Accepted [Sat Oct 24 23:22:47 2026] 127.0.0.1:43966 Closing [Sat Oct 24 23:22:47 2026] 127.0.0.1:43968 Accepted [Sat Oct 24 23:22:47 2026] 127.0.0.1:43968 Closing [Sat Oct 24 23:22:47 2026] 127.0.0.1:43972 Accepted [Sat Oct 24 23:22:47 2026] 127.0.0.1:43972 Closing [Sat Oct 24 23:22:47 2026] 127.0.0.1:43982 Accepted [Sat Oct 24 23:22:47 2026] 127.0.0.1:43982 Closing [Sat Oct 24 23:22:47 2026] 127.0.0.1:43990 Accepted [Sat Oct 24 23:22:47 2026] 127.0.0.1:43990 Closing [Sat Oct 24 23:22:47 2026] 127.0.0.1:44004 Accepted [Sat Oct 24 23:22:47 2026] 127.0.0.1:44004 Closing [Sat Oct 24 23:22:47 2026] 127.0.0.1:44010 Accepted [Sat Oct 24 23:22:47 2026] 127.0.0.1:44010 Closing [Sat Oct 24 23:22:47 2026] 127.0.0.1:44024 Accepted [Sat Oct 24 23:22:48 2026] 127.0.0.1:44024 Closing [Sat Oct 24 23:22:48 2026] 127.0.0.1:44038 Accepted [Sat Oct 24 23:22:48 2026] 127.0.0.1:44038 Closing [Sat Oct 24 23:28:31 2026] 127.0.0.1:58038 Accepted
Other app logs: downloads.log
Generated 2026-10-24 21:28:31 UTC · Gladex.de