Service Monitoring
Now: 2026-04-09 14:35:41 UTCAction trace:enabledTrace file:
/app/tmp/service_actions.logPostgreSQL
Status:connected
Config:
DB_URL / DATABASE_URLValue:
postgres://weather:***@new_weather_db/weatherConnection:
postgres://new_weather_db/weatherCheck: OK (0 ms)
METAR decoder
Status:connected
Config:
METAR_TAF_DECODE_URL / METS_DECODER_URLValue:
http://metar_taf_parser:7000Health URL:
http://metar_taf_parser:7000/healthcheckHTTP: 200 (7 ms)
TAF decoder
Status:connected
Config:
METAR_TAF_DECODE_URL / METS_DECODER_URLValue:
http://metar_taf_parser:7000Health URL:
http://metar_taf_parser:7000/healthcheckHTTP: 200 (7 ms)
Потоки данных: что собираем и куда пишем
| Pipeline | Source | Collected data | Destination tables |
|---|---|---|---|
| NOAA METAR | NOAA metars.cache.csv.gz | METAR/SPECI: ICAO, observed_at, raw_text, weather, wind, pressure, clouds | noaa_metars noaa_cache_runs noaa_ingest_state aerodromes |
| NOAA TAF | NOAA tafs.cache.xml.gz | TAF: ICAO, issued/valid range, raw_text, decoded forecast groups | noaa_tafs noaa_cache_runs noaa_ingest_state |
| ArcGIS Tropical Cyclones | ArcGIS Active_Hurricanes_v1 FeatureServer | Observed/forecast positions, tracks, cones, warnings, wind swaths and radii polygons | active_tropical_cyclones |
| ArcGIS Recent Tropical Cyclones | ArcGIS Recent_Hurricanes_v1 FeatureServer | Observed positions, observed tracks, observed wind swaths for recent systems | recent_tropical_cyclones |
| Roshydro ingest | FTP *.b files (ROSHYDRO_FTP_*) | METAR/TAF/OPMET batches + parser outputs + file processing stats | roshydro_metars roshydro_tafs roshydro_opmet_processed_files aerodromes opmetdata sigmet_geo airmet_geo gamet_geo |
| Roshydro OPMET parity (code present, runtime switch pending) | Same FTP *.b, ETX/=//END PART splitting | AIRMET/SIGMET/GAMET normalized records, parse/build errors, geo projections | opmetdata opmeterror sigmet_geo airmet_geo gamet_geo |
ArcGIS Tropical Cyclones
| Exists | yes |
|---|---|
| Rows | 126 |
| Distinct storms | 3 |
| Latest fetch | 2026-04-09 14:22:26 UTC |
| Ago | 13m14s |
| Layer | Rows |
|---|---|
| Forecast Error Cone and Danger Area | 3 |
| Forecast Position | 20 |
| Forecast Track | 5 |
| Observed Position | 81 |
| Observed Track | 17 |
ArcGIS Recent Tropical Cyclones
| Exists | yes |
|---|---|
| Rows | 897 |
| Distinct storms | 23 |
| Latest fetch | 2026-04-09 14:22:26 UTC |
| Ago | 13m14s |
| Layer | Rows |
|---|---|
| Observed Position | 749 |
| Observed Track | 148 |
Таблицы и последние изменения данных
| Table | Exists | Rows | Latest | Ago | Error |
|---|---|---|---|---|---|
aerodromes | yes | 5601 | 2026-04-06 19:20:53 UTC | 2d19h14m47s | — |
noaa_metars | yes | 187322 | 2026-04-09 23:51:00 UTC | now | — |
noaa_tafs | yes | 12539 | 2026-04-09 14:33:00 UTC | 2m41s | — |
roshydro_metars | yes | 101336 | 2026-04-28 01:00:00 UTC | now | — |
roshydro_tafs | yes | 12251 | 2026-05-31 14:31:00 UTC | now | — |
active_tropical_cyclones | yes | 126 | 2026-04-09 14:22:26 UTC | 13m14s | — |
recent_tropical_cyclones | yes | 897 | 2026-04-09 14:22:26 UTC | 13m14s | — |
roshydro_opmet_processed_files | yes | 158244 | 2026-04-09 14:35:39 UTC | 1s | — |
noaa_cache_runs | yes | 59796 | 2026-04-09 14:35:41 UTC | now | — |
noaa_ingest_state | yes | 2 | — | — | — |
opmetdata | yes | 84542 | 2026-04-09 14:35:27 UTC | 13s | — |
opmeterror | yes | 0 | — | — | — |
sigmet_geo | yes | 42993 | 2026-04-09 14:35:37 UTC | 3s | — |
airmet_geo | yes | 11512 | 2026-04-09 14:06:29 UTC | 29m11s | — |
gamet_geo | yes | 30037 | 2026-04-09 11:40:03 UTC | 2h55m37s | — |
Runtime env snapshot
| Variable | Value |
|---|---|
ROSHYDRO_JOB_INTERVAL_MIN | — |
NOAA_METAR_JOB_INTERVAL_MIN | — |
NOAA_TAF_JOB_INTERVAL_MIN | — |
ARCGIS_TROPICAL_CYCLONES_JOB_INTERVAL_MIN | — |
ARCGIS_RECENT_TROPICAL_CYCLONES_JOB_INTERVAL_MIN | — |
NOAA_METAR_CACHE_URL | — |
NOAA_TAF_CACHE_URL | — |
ARCGIS_TROPICAL_CYCLONES_URL | — |
ARCGIS_RECENT_TROPICAL_CYCLONES_URL | — |
ROSHYDRO_FTP_HOST | 193.7.166.1 |
ROSHYDRO_FTP_REMOTE_GLOB | — |
OPMET_ERROR_RETENTION_HOURS | — |
OPMET_ERROR_CLEANUP_INTERVAL_MIN | — |
METS_DECODER_URL | http://metar_taf_parser:7000 |
ASG_MET_PARSER | http://old_meteo_text_parser:5001 |
ACTION_TRACE_ENABLED | true |
OPMET errors
Top error types:
| created_at | opmet_type | error_type | message | opmetdata_id | original_file |
|---|
Temporary action trace (TEST)
Это временный функционал для тестирования. После завершения тестов удалить:src/app/services/support/action_recorder.rb, маршрут/monitor/actions и вызовыActionRecorder.record(...)
[
{
"at": "2026-04-09T14:35:41Z",
"source": "api.monitor",
"status": "info",
"action": "monitor_requested",
"details": null
},
{
"at": "2026-04-09T14:35:41Z",
"source": "orchestrator.noaa.metar",
"status": "ok",
"action": "ingest_cycle_finished",
"details": {
"messages_count": 444,
"skipped": 4647
}
},
{
"at": "2026-04-09T14:35:40Z",
"source": "orchestrator.roshydro",
"status": "ok",
"action": "ingest_cycle_finished",
"details": {
"files_count": 4
}
},
{
"at": "2026-04-09T14:35:39Z",
"source": "orchestrator.roshydro",
"status": "info",
"action": "processing_file",
"details": {
"filename": "UUUJ02903973.b"
}
},
{
"at": "2026-04-09T14:35:36Z",
"source": "orchestrator.roshydro",
"status": "info",
"action": "processing_file",
"details": {
"filename": "UUUJ02903972.b"
}
},
{
"at": "2026-04-09T14:35:36Z",
"source": "orchestrator.noaa.taf",
"status": "ok",
"action": "ingest_cycle_finished",
"details": {
"messages_count": 43,
"skipped": 2905
}
},
{
"at": "2026-04-09T14:35:26Z",
"source": "orchestrator.noaa.metar",
"status": "info",
"action": "ingest_cycle_started",
"details": null
},
{
"at": "2026-04-09T14:35:22Z",
"source": "orchestrator.roshydro",
"status": "info",
"action": "processing_file",
"details": {
"filename": "UUUJ02903971.b"
}
},
{
"at": "2026-04-09T14:34:29Z",
"source": "orchestrator.roshydro",
"status": "info",
"action": "processing_file",
"details": {
"filename": "UUUJ02903970.b"
}
},
{
"at": "2026-04-09T14:34:29Z",
"source": "orchestrator.roshydro",
"status": "info",
"action": "files_detected",
"details": {
"count": 4
}
},
{
"at": "2026-04-09T14:34:26Z",
"source": "orchestrator.roshydro",
"status": "info",
"action": "dependencies_ok",
"details": null
},
{
"at": "2026-04-09T14:34:26Z",
"source": "orchestrator.roshydro",
"status": "info",
"action": "ingest_cycle_started",
"details": null
},
{
"at": "2026-04-09T14:34:26Z",
"source": "orchestrator.noaa.taf",
"status": "info",
"action": "ingest_cycle_started",
"details": null
},
{
"at": "2026-04-09T14:33:36Z",
"source": "orchestrator.noaa.metar",
"status": "ok",
"action": "ingest_cycle_finished",
"details": {
"messages_count": 70,
"skipped": 4995
}
},
{
"at": "2026-04-09T14:33:36Z",
"source": "orchestrator.roshydro",
"status": "ok",
"action": "ingest_cycle_finished",
"details": {
"files_count": 1
}
},
{
"at": "2026-04-09T14:33:31Z",
"source": "orchestrator.roshydro",
"status": "info",
"action": "processing_file",
"details": {
"filename": "UUUJ02903969.b"
}
},
{
"at": "2026-04-09T14:33:31Z",
"source": "orchestrator.roshydro",
"status": "info",
"action": "files_detected",
"details": {
"count": 1
}
},
{
"at": "2026-04-09T14:33:26Z",
"source": "orchestrator.roshydro",
"status": "info",
"action": "dependencies_ok",
"details": null
},
{
"at": "2026-04-09T14:33:26Z",
"source": "orchestrator.noaa.metar",
"status": "info",
"action": "ingest_cycle_started",
"details": null
},
{
"at": "2026-04-09T14:33:26Z",
"source": "orchestrator.roshydro",
"status": "info",
"action": "ingest_cycle_started",
"details": null
},
{
"at": "2026-04-09T14:32:37Z",
"source": "orchestrator.roshydro",
"status": "ok",
"action": "ingest_cycle_finished",
"details": {
"files_count": 8
}
},
{
"at": "2026-04-09T14:32:36Z",
"source": "orchestrator.noaa.taf",
"status": "ok",
"action": "ingest_cycle_finished",
"details": {
"messages_count": 19,
"skipped": 2928
}
},
{
"at": "2026-04-09T14:32:36Z",
"source": "orchestrator.roshydro",
"status": "info",
"action": "processing_file",
"details": {
"filename": "UUUJ02903968.b"
}
},
{
"at": "2026-04-09T14:32:36Z",
"source": "orchestrator.noaa.metar",
"status": "ok",
"action": "ingest_cycle_finished",
"details": {
"messages_count": 67,
"skipped": 5002
}
},
{
"at": "2026-04-09T14:32:36Z",
"source": "orchestrator.roshydro",
"status": "info",
"action": "processing_file",
"details": {
"filename": "UUUJ02903967.b"
}
},
{
"at": "2026-04-09T14:32:32Z",
"source": "orchestrator.roshydro",
"status": "info",
"action": "processing_file",
"details": {
"filename": "UUUJ02903966.b"
}
},
{
"at": "2026-04-09T14:32:20Z",
"source": "orchestrator.roshydro",
"status": "info",
"action": "processing_file",
"details": {
"filename": "UUUJ02903965.b"
}
},
{
"at": "2026-04-09T14:32:13Z",
"source": "orchestrator.roshydro",
"status": "info",
"action": "processing_file",
"details": {
"filename": "UUUJ02903964.b"
}
},
{
"at": "2026-04-09T14:31:59Z",
"source": "orchestrator.roshydro",
"status": "info",
"action": "processing_file",
"details": {
"filename": "UUUJ02903963.b"
}
},
{
"at": "2026-04-09T14:31:43Z",
"source": "orchestrator.roshydro",
"status": "info",
"action": "processing_file",
"details": {
"filename": "UUUJ02903962.b"
}
},
{
"at": "2026-04-09T14:31:31Z",
"source": "orchestrator.roshydro",
"status": "info",
"action": "processing_file",
"details": {
"filename": "UUUJ02903961.b"
}
},
{
"at": "2026-04-09T14:31:31Z",
"source": "orchestrator.roshydro",
"status": "info",
"action": "files_detected",
"details": {
"count": 8
}
},
{
"at": "2026-04-09T14:31:26Z",
"source": "orchestrator.roshydro",
"status": "info",
"action": "dependencies_ok",
"details": null
},
{
"at": "2026-04-09T14:31:26Z",
"source": "orchestrator.noaa.taf",
"status": "info",
"action": "ingest_cycle_started",
"details": null
},
{
"at": "2026-04-09T14:31:26Z",
"source": "orchestrator.noaa.metar",
"status": "info",
"action": "ingest_cycle_started",
"details": null
},
{
"at": "2026-04-09T14:31:26Z",
"source": "orchestrator.roshydro",
"status": "info",
"action": "ingest_cycle_started",
"details": null
},
{
"at": "2026-04-09T14:30:33Z",
"source": "orchestrator.roshydro",
"status": "ok",
"action": "ingest_cycle_finished",
"details": {
"files_count": 4
}
},
{
"at": "2026-04-09T14:30:32Z",
"source": "orchestrator.roshydro",
"status": "info",
"action": "processing_file",
"details": {
"filename": "UUUJ02903960.b"
}
},
{
"at": "2026-04-09T14:30:32Z",
"source": "orchestrator.roshydro",
"status": "info",
"action": "processing_file",
"details": {
"filename": "UUUJ02903959.b"
}
},
{
"at": "2026-04-09T14:30:31Z",
"source": "orchestrator.roshydro",
"status": "info",
"action": "processing_file",
"details": {
"filename": "UUUJ02903958.b"
}
},
{
"at": "2026-04-09T14:30:31Z",
"source": "orchestrator.roshydro",
"status": "info",
"action": "processing_file",
"details": {
"filename": "UUUJ02903957.b"
}
},
{
"at": "2026-04-09T14:30:31Z",
"source": "orchestrator.roshydro",
"status": "info",
"action": "files_detected",
"details": {
"count": 4
}
},
{
"at": "2026-04-09T14:30:26Z",
"source": "orchestrator.roshydro",
"status": "info",
"action": "dependencies_ok",
"details": null
},
{
"at": "2026-04-09T14:30:26Z",
"source": "orchestrator.roshydro",
"status": "info",
"action": "ingest_cycle_started",
"details": null
},
{
"at": "2026-04-09T14:29:42Z",
"source": "orchestrator.roshydro",
"status": "ok",
"action": "ingest_cycle_finished",
"details": {
"files_count": 1
}
},
{
"at": "2026-04-09T14:29:41Z",
"source": "orchestrator.noaa.metar",
"status": "ok",
"action": "ingest_cycle_finished",
"details": {
"messages_count": 31,
"skipped": 5112
}
},
{
"at": "2026-04-09T14:29:41Z",
"source": "orchestrator.noaa.taf",
"status": "ok",
"action": "ingest_cycle_finished",
"details": {
"messages_count": 74,
"skipped": 2873
}
},
{
"at": "2026-04-09T14:29:41Z",
"source": "orchestrator.roshydro",
"status": "info",
"action": "processing_file",
"details": {
"filename": "UUUJ02903956.b"
}
},
{
"at": "2026-04-09T14:29:41Z",
"source": "orchestrator.roshydro",
"status": "info",
"action": "files_detected",
"details": {
"count": 1
}
},
{
"at": "2026-04-09T14:29:27Z",
"source": "orchestrator.roshydro",
"status": "info",
"action": "dependencies_ok",
"details": null
},
{
"at": "2026-04-09T14:29:26Z",
"source": "orchestrator.noaa.metar",
"status": "info",
"action": "ingest_cycle_started",
"details": null
},
{
"at": "2026-04-09T14:29:26Z",
"source": "orchestrator.roshydro",
"status": "info",
"action": "ingest_cycle_started",
"details": null
},
{
"at": "2026-04-09T14:29:14Z",
"source": "orchestrator.roshydro",
"status": "ok",
"action": "ingest_cycle_finished",
"details": {
"files_count": 1
}
},
{
"at": "2026-04-09T14:28:30Z",
"source": "orchestrator.roshydro",
"status": "info",
"action": "processing_file",
"details": {
"filename": "UUUJ02903955.b"
}
},
{
"at": "2026-04-09T14:28:30Z",
"source": "orchestrator.roshydro",
"status": "info",
"action": "files_detected",
"details": {
"count": 1
}
},
{
"at": "2026-04-09T14:28:26Z",
"source": "orchestrator.roshydro",
"status": "info",
"action": "dependencies_ok",
"details": null
},
{
"at": "2026-04-09T14:28:26Z",
"source": "orchestrator.noaa.taf",
"status": "info",
"action": "ingest_cycle_started",
"details": null
},
{
"at": "2026-04-09T14:28:26Z",
"source": "orchestrator.roshydro",
"status": "info",
"action": "ingest_cycle_started",
"details": null
},
{
"at": "2026-04-09T14:27:38Z",
"source": "orchestrator.noaa.metar",
"status": "ok",
"action": "ingest_cycle_finished",
"details": {
"messages_count": 355,
"skipped": 4793
}
},
{
"at": "2026-04-09T14:27:37Z",
"source": "orchestrator.roshydro",
"status": "ok",
"action": "ingest_cycle_finished",
"details": {
"files_count": 2
}
},
{
"at": "2026-04-09T14:27:37Z",
"source": "orchestrator.roshydro",
"status": "info",
"action": "processing_file",
"details": {
"filename": "UUUJ02903954.b"
}
},
{
"at": "2026-04-09T14:27:30Z",
"source": "orchestrator.roshydro",
"status": "info",
"action": "processing_file",
"details": {
"filename": "UUUJ02903953.b"
}
},
{
"at": "2026-04-09T14:27:30Z",
"source": "orchestrator.roshydro",
"status": "info",
"action": "files_detected",
"details": {
"count": 2
}
},
{
"at": "2026-04-09T14:27:26Z",
"source": "orchestrator.roshydro",
"status": "info",
"action": "dependencies_ok",
"details": null
},
{
"at": "2026-04-09T14:27:26Z",
"source": "orchestrator.noaa.metar",
"status": "info",
"action": "ingest_cycle_started",
"details": null
},
{
"at": "2026-04-09T14:27:26Z",
"source": "orchestrator.roshydro",
"status": "info",
"action": "ingest_cycle_started",
"details": null
},
{
"at": "2026-04-09T14:26:42Z",
"source": "orchestrator.roshydro",
"status": "ok",
"action": "ingest_cycle_finished",
"details": {
"files_count": 1
}
},
{
"at": "2026-04-09T14:26:42Z",
"source": "orchestrator.noaa.taf",
"status": "ok",
"action": "ingest_cycle_finished",
"details": {
"messages_count": 17,
"skipped": 2930
}
},
{
"at": "2026-04-09T14:26:41Z",
"source": "orchestrator.roshydro",
"status": "info",
"action": "processing_file",
"details": {
"filename": "UUUJ02903952.b"
}
},
{
"at": "2026-04-09T14:26:41Z",
"source": "orchestrator.roshydro",
"status": "info",
"action": "files_detected",
"details": {
"count": 1
}
},
{
"at": "2026-04-09T14:26:40Z",
"source": "orchestrator.noaa.metar",
"status": "ok",
"action": "ingest_cycle_finished",
"details": {
"messages_count": 62,
"skipped": 5140
}
},
{
"at": "2026-04-09T14:25:26Z",
"source": "orchestrator.roshydro",
"status": "info",
"action": "dependencies_ok",
"details": null
},
{
"at": "2026-04-09T14:25:26Z",
"source": "orchestrator.noaa.taf",
"status": "info",
"action": "ingest_cycle_started",
"details": null
},
{
"at": "2026-04-09T14:25:26Z",
"source": "orchestrator.noaa.metar",
"status": "info",
"action": "ingest_cycle_started",
"details": null
},
{
"at": "2026-04-09T14:25:26Z",
"source": "orchestrator.roshydro",
"status": "info",
"action": "ingest_cycle_started",
"details": null
},
{
"at": "2026-04-09T14:24:31Z",
"source": "orchestrator.roshydro",
"status": "ok",
"action": "ingest_cycle_finished",
"details": {
"files_count": 3
}
},
{
"at": "2026-04-09T14:24:31Z",
"source": "orchestrator.roshydro",
"status": "info",
"action": "processing_file",
"details": {
"filename": "UUUJ02903951.b"
}
},
{
"at": "2026-04-09T14:24:30Z",
"source": "orchestrator.roshydro",
"status": "info",
"action": "processing_file",
"details": {
"filename": "UUUJ02903950.b"
}
},
{
"at": "2026-04-09T14:24:30Z",
"source": "orchestrator.roshydro",
"status": "info",
"action": "processing_file",
"details": {
"filename": "UUUJ02903949.b"
}
},
{
"at": "2026-04-09T14:24:30Z",
"source": "orchestrator.roshydro",
"status": "info",
"action": "files_detected",
"details": {
"count": 3
}
}
]