Recorder Status

Generated 16 Jul 2026, 04:10:08 PM IST · auto-refreshes every 30 seconds
Cron configured

Zerodha Token

Refresh failed
Updated16 Jul 2026, 02:15:08 PM IST
Last refreshfailed
Token presentyes
Auto-refresh missingZERODHA_API_SECRET, ZERODHA_USER_ID, ZERODHA_PASSWORD, ZERODHA_TOTP_KEY
Refresh log · last 30 lines
=== 2026-07-16 08:45:08 UTC zerodha refresh attempt 1 ===
Traceback (most recent call last):
  File "/opt/tick-recorder/scripts/auto_refresh_zerodha_token.py", line 191, in <module>
    main()
  File "/opt/tick-recorder/scripts/auto_refresh_zerodha_token.py", line 48, in main
    raise RuntimeError(f"Missing Zerodha credentials in env: {', '.join(missing)}")
RuntimeError: Missing Zerodha credentials in env: ZERODHA_API_SECRET, ZERODHA_USER_ID, ZERODHA_PASSWORD, ZERODHA_TOTP_KEY
=== 2026-07-16 08:46:08 UTC zerodha refresh attempt 2 ===
Traceback (most recent call last):
  File "/opt/tick-recorder/scripts/auto_refresh_zerodha_token.py", line 191, in <module>
    main()
  File "/opt/tick-recorder/scripts/auto_refresh_zerodha_token.py", line 48, in main
    raise RuntimeError(f"Missing Zerodha credentials in env: {', '.join(missing)}")
RuntimeError: Missing Zerodha credentials in env: ZERODHA_API_SECRET, ZERODHA_USER_ID, ZERODHA_PASSWORD, ZERODHA_TOTP_KEY
=== 2026-07-16 08:47:08 UTC zerodha refresh attempt 3 ===
Traceback (most recent call last):
  File "/opt/tick-recorder/scripts/auto_refresh_zerodha_token.py", line 191, in <module>
    main()
  File "/opt/tick-recorder/scripts/auto_refresh_zerodha_token.py", line 48, in main
    raise RuntimeError(f"Missing Zerodha credentials in env: {', '.join(missing)}")
RuntimeError: Missing Zerodha credentials in env: ZERODHA_API_SECRET, ZERODHA_USER_ID, ZERODHA_PASSWORD, ZERODHA_TOTP_KEY
zerodha refresh FAILED after 3 attempts

Shoonya Token

Fresh
Updated16 Jul 2026, 02:15:08 PM IST
Last refreshok
Token presentyes
Auto-refresh missingnone
Refresh log · last 30 lines
=== 2026-07-16 08:45:01 UTC shoonya refresh attempt 1 ===
2026-07-16 14:15:01 IST | Starting automated Shoonya session refresh...
2026-07-16 14:15:07 IST | Captured auth code: a76ac122...
2026-07-16 08:45:08 | INFO     | session                        | ========================================================================
2026-07-16 08:45:08 | INFO     | session                        |   RECORDER SESSION STARTED  -  2026-07-16 14:15:08
2026-07-16 08:45:08 | INFO     | session                        | ========================================================================
2026-07-16 14:15:08 IST | Shoonya session refreshed and validated for account=FN226998.
shoonya refresh OK (attempt 1)

Tick Recorder

Writer down
Metrics updated16 Jul 2026, 03:30:31 PM IST
Metrics age2,377.0 seconds
Process detectedno
ProcessNot found
Writer threadnot alive
Alertswriter_thread_dead, last_flush_stale

Tick Metrics

Hostrecorder
Session Idrecorder-20260716T102829+0530-ec1befde
Ticks Received Total15844677
Ticks Written Total15844677
Ticks Dropped Total0
Ticks Received Delta25167
Ticks Written Delta26352
Queue Depth Current0
Files Open1119
Files Rotated8452
Manifest Entries8452
Disk Free Gb22.1
Rotation Errors446

Services

tick-recorder@zerodha-maininactive
tick-recorder@shoonya-maininactive
Cron45 8 * * 1-5 bash "/opt/tick-recorder/scripts/cron_refresh_broker_tokens.sh" # tick-recorder broker token refresh

Recorder Log

2026-07-16 10:01:08 | INFO     | market_data.storage.sync_writer | Rotated tick data file
2026-07-16 10:01:08 | INFO     | market_data.storage.sync_writer | Rotated tick data file
2026-07-16 10:01:08 | INFO     | market_data.storage.sync_writer | Rotated tick data file
2026-07-16 10:01:08 | INFO     | market_data.storage.sync_writer | Rotated tick data file
2026-07-16 10:01:08 | INFO     | market_data.storage.sync_writer | Rotated tick data file
2026-07-16 10:01:08 | INFO     | market_data.storage.sync_writer | Rotated tick data file
2026-07-16 10:01:08 | INFO     | market_data.storage.sync_writer | Rotated tick data file
2026-07-16 10:01:08 | INFO     | market_data.storage.sync_writer | Rotated tick data file
2026-07-16 10:01:08 | INFO     | market_data.storage.sync_writer | Rotated tick data file
2026-07-16 10:01:08 | INFO     | market_data.storage.sync_writer | Rotated tick data file
2026-07-16 10:01:08 | INFO     | market_data.storage.sync_writer | Rotated tick data file
2026-07-16 10:01:08 | INFO     | market_data.storage.sync_writer | Rotated tick data file
2026-07-16 10:01:08 | INFO     | market_data.storage.sync_writer | Rotated tick data file
2026-07-16 10:01:08 | INFO     | market_data.storage.sync_writer | Rotated tick data file
2026-07-16 10:01:08 | INFO     | market_data.storage.sync_writer | Rotated tick data file
2026-07-16 10:01:08 | INFO     | market_data.storage.sync_writer | Rotated tick data file
2026-07-16 10:01:08 | INFO     | market_data.storage.sync_writer | Rotated tick data file
2026-07-16 10:01:08 | INFO     | market_data.storage.sync_writer | Rotated tick data file
2026-07-16 10:01:08 | INFO     | market_data.storage.sync_writer | Rotated tick data file
2026-07-16 10:01:08 | INFO     | market_data.storage.sync_writer | Rotated tick data file
2026-07-16 10:01:08 | INFO     | market_data.storage.sync_writer | Rotated tick data file
2026-07-16 10:01:08 | INFO     | market_data.storage.sync_writer | Rotated tick data file
2026-07-16 10:01:08 | INFO     | market_data.storage.sync_writer | Rotated tick data file
2026-07-16 10:01:08 | INFO     | market_data.storage.sync_writer | Rotated tick data file
2026-07-16 10:01:08 | INFO     | market_data.storage.sync_writer | Rotated tick data file
2026-07-16 10:01:08 | ERROR    | market_data.storage.sync_writer | SyncTickStore close did not complete cleanly. | context: error=One or more tick files failed to rotate: Failed to gzip /opt/tick-recorder/data/live_ticks/date=2026-07-16/symbol=SENSEX2671678300PE/hour=15/ticks.jsonl to /opt/tick-recorder/data/live_ticks/date=2026-07-16/symbol=SENSEX2671678300PE/hour=15/ticks.jsonl.gz: source file does not exist: /opt/tick-recorder/data/live_ticks/date=2026-07-16/symbol=SENSEX2671678300PE/hour=15/ticks.jsonl User action: Check disk space and write permissions on the parent directory. The uncompressed ticks.jsonl file is preserved. State preserved: source_jsonl_preserved. User action: Check logs for the failed file and retry rotation after fixing disk permissions/space. State preserved: some_open_files_preserved., state=some_files_may_remain_open_or_uncompressed, operation=sync_tick_store_close, user_action=Check logs for the failed file. Preserved open files can be retried.
2026-07-16 10:01:08 | ERROR    | market_data.storage.writer_thread | Sync writer failed during writer-thread shutdown. | context: error=One or more tick files failed to rotate: Failed to gzip /opt/tick-recorder/data/live_ticks/date=2026-07-16/symbol=SENSEX2671678300PE/hour=15/ticks.jsonl to /opt/tick-recorder/data/live_ticks/date=2026-07-16/symbol=SENSEX2671678300PE/hour=15/ticks.jsonl.gz: source file does not exist: /opt/tick-recorder/data/live_ticks/date=2026-07-16/symbol=SENSEX2671678300PE/hour=15/ticks.jsonl User action: Check disk space and write permissions on the parent directory. The uncompressed ticks.jsonl file is preserved. State preserved: source_jsonl_preserved. User action: Check logs for the failed file and retry rotation after fixing disk permissions/space. State preserved: some_open_files_preserved., state=some_tick_files_may_remain_unrotated, operation=writer_thread_shutdown_close, user_action=Inspect preserved JSONL files and rerun recovery once available.
2026-07-16 10:01:08 | CRITICAL | market_data.storage.writer_thread | TickStore writer thread died. | context: error=One or more tick files failed to rotate: Failed to gzip /opt/tick-recorder/data/live_ticks/date=2026-07-16/symbol=SENSEX2671678300PE/hour=15/ticks.jsonl to /opt/tick-recorder/data/live_ticks/date=2026-07-16/symbol=SENSEX2671678300PE/hour=15/ticks.jsonl.gz: source file does not exist: /opt/tick-recorder/data/live_ticks/date=2026-07-16/symbol=SENSEX2671678300PE/hour=15/ticks.jsonl User action: Check disk space and write permissions on the parent directory. The uncompressed ticks.jsonl file is preserved. State preserved: source_jsonl_preserved. User action: Check logs for the failed file and retry rotation after fixing disk permissions/space. State preserved: some_open_files_preserved., state=writer_thread_dead_queue_may_contain_unwritten_ticks, operation=writer_thread_run, user_action=Stop the engine, inspect logs for the preceding storage error, check disk space/permissions, then restart the process.
2026-07-16 10:01:23 | ERROR    | market_data.live_feed.kite_ticker_feed | Tick normalization failed: Tick validation failed: bid 2.0 is greater than ask 0.0 for GOLD26JUL139500CE. Check broker depth payload. | raw_tick={'tradable': True, 'mode': 'full', 'instrument_token': 142403335, 'last_price': 4201.0, 'last_traded_quantity': 0, 'average_traded_price': 0.0, 'volume_traded': 0, 'total_buy_quantity': 3, 'total_sell_quantity': 0, 'ohlc': {'open': 0.0, 'high': 0.0, 'low': 0.0, 'close': 3777.5}, 'change': 11.211118464592985, 'last_trade_time': datetime.datetime(1970, 1, 1, 0, 0), 'oi': 0, 'oi_day_high': 0, 'oi_day_low': 0, 'exchange_timestamp': datetime.datetime(2026, 7, 16, 8, 45, 31), 'depth': {'buy': [{'quantity': 1, 'price': 2.0, 'orders': 1}, {'quantity': 2, 'price': 1.5, 'orders': 1}, {'quantity': 0, 'price': 0.0, 'orders': 0}, {'quantity': 0, 'price': 0.0, 'orders': 0}, {'quantity': 0, 'price': 0.0, 'orders': 0}], 'sell': [{'quantity': 0, 'price': 0.0, 'orders': 0}, {'quantity': 0, 'price': 0.0, 'orders': 0}, {'quantity': 0, 'price': 0.0, 'orders': 0}, {'quantity': 0, 'price': 0.0, 'orders': 0}, {'quantity': 0, 'price': 0.0, 'orders': 0}]}}
2026-07-16 10:01:23 | ERROR    | market_data.live_feed.kite_ticker_feed | Tick normalization failed: Tick validation failed: bid 1.0 is greater than ask 0.0 for GOLD26JUL138500CE. Check broker depth payload. | raw_tick={'tradable': True, 'mode': 'full', 'instrument_token': 142403847, 'last_price': 4882.5, 'last_traded_quantity': 0, 'average_traded_price': 0.0, 'volume_traded': 0, 'total_buy_quantity': 1, 'total_sell_quantity': 0, 'ohlc': {'open': 0.0, 'high': 0.0, 'low': 0.0, 'close': 4448.0}, 'change': 9.76843525179856, 'last_trade_time': datetime.datetime(1970, 1, 1, 0, 0), 'oi': 0, 'oi_day_high': 0, 'oi_day_low': 0, 'exchange_timestamp': datetime.datetime(2026, 7, 16, 6, 59, 38), 'depth': {'buy': [{'quantity': 1, 'price': 1.0, 'orders': 1}, {'quantity': 0, 'price': 0.0, 'orders': 0}, {'quantity': 0, 'price': 0.0, 'orders': 0}, {'quantity': 0, 'price': 0.0, 'orders': 0}, {'quantity': 0, 'price': 0.0, 'orders': 0}], 'sell': [{'quantity': 0, 'price': 0.0, 'orders': 0}, {'quantity': 0, 'price': 0.0, 'orders': 0}, {'quantity': 0, 'price': 0.0, 'orders': 0}, {'quantity': 0, 'price': 0.0, 'orders': 0}, {'quantity': 0, 'price': 0.0, 'orders': 0}]}}