Service Monitoring
Now: 2026-04-06 14:45:37 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 (10 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 (10 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 | 71 |
| Distinct storms | 2 |
| Latest fetch | 2026-04-06 14:35:00 UTC |
| Ago | 10m37s |
| Layer | Rows |
|---|---|
| Forecast Error Cone and Danger Area | 2 |
| Forecast Position | 16 |
| Forecast Track | 4 |
| Observed Position | 41 |
| Observed Track | 8 |
ArcGIS Recent Tropical Cyclones
| Exists | yes |
|---|---|
| Rows | 897 |
| Distinct storms | 23 |
| Latest fetch | 2026-04-06 14:35:00 UTC |
| Ago | 10m37s |
| Layer | Rows |
|---|---|
| Observed Position | 749 |
| Observed Track | 148 |
Таблицы и последние изменения данных
| Table | Exists | Rows | Latest | Ago | Error |
|---|---|---|---|---|---|
aerodromes | yes | 5599 | 2026-04-06 12:06:21 UTC | 2h39m15s | — |
noaa_metars | yes | 176597 | 2026-04-06 14:41:00 UTC | 4m37s | — |
noaa_tafs | yes | 11957 | 2026-04-06 14:41:00 UTC | 4m37s | — |
roshydro_metars | yes | 105724 | 2026-04-19 20:51:00 UTC | now | — |
roshydro_tafs | yes | 12165 | 2026-05-31 14:31:00 UTC | now | — |
active_tropical_cyclones | yes | 71 | 2026-04-06 14:35:00 UTC | 10m37s | — |
recent_tropical_cyclones | yes | 897 | 2026-04-06 14:35:00 UTC | 10m37s | — |
roshydro_opmet_processed_files | yes | 149289 | 2026-04-06 14:45:26 UTC | 10s | — |
noaa_cache_runs | yes | 56241 | 2026-04-06 14:45:26 UTC | 10s | — |
noaa_ingest_state | yes | 2 | — | — | — |
opmetdata | yes | 78264 | 2026-04-06 14:43:06 UTC | 2m30s | — |
opmeterror | yes | 0 | — | — | — |
sigmet_geo | yes | 39873 | 2026-04-06 14:43:06 UTC | 2m30s | — |
airmet_geo | yes | 10768 | 2026-04-06 14:31:05 UTC | 14m32s | — |
gamet_geo | yes | 27623 | 2026-04-06 12:01:12 UTC | 2h44m24s | — |
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-06T14:45:37Z",
"source": "api.monitor",
"status": "info",
"action": "monitor_requested",
"details": null
},
{
"at": "2026-04-06T14:45:26Z",
"source": "orchestrator.roshydro",
"status": "ok",
"action": "ingest_cycle_finished",
"details": {
"files_count": 3
}
},
{
"at": "2026-04-06T14:45:26Z",
"source": "orchestrator.roshydro",
"status": "info",
"action": "processing_file",
"details": {
"filename": "UUUJ02895018.b"
}
},
{
"at": "2026-04-06T14:45:26Z",
"source": "orchestrator.noaa.taf",
"status": "ok",
"action": "ingest_cycle_finished",
"details": {
"messages_count": 16,
"skipped": 2833
}
},
{
"at": "2026-04-06T14:45:26Z",
"source": "orchestrator.roshydro",
"status": "info",
"action": "processing_file",
"details": {
"filename": "UUUJ02895017.b"
}
},
{
"at": "2026-04-06T14:45:26Z",
"source": "orchestrator.roshydro",
"status": "info",
"action": "processing_file",
"details": {
"filename": "UUUJ02895016.b"
}
},
{
"at": "2026-04-06T14:45:26Z",
"source": "orchestrator.roshydro",
"status": "info",
"action": "files_detected",
"details": {
"count": 3
}
},
{
"at": "2026-04-06T14:45:01Z",
"source": "orchestrator.roshydro",
"status": "info",
"action": "dependencies_ok",
"details": null
},
{
"at": "2026-04-06T14:45:00Z",
"source": "orchestrator.roshydro",
"status": "info",
"action": "ingest_cycle_started",
"details": null
},
{
"at": "2026-04-06T14:44:51Z",
"source": "orchestrator.noaa.metar",
"status": "ok",
"action": "ingest_cycle_finished",
"details": {
"messages_count": 34,
"skipped": 5029
}
},
{
"at": "2026-04-06T14:44:42Z",
"source": "orchestrator.roshydro",
"status": "ok",
"action": "ingest_cycle_finished",
"details": {
"files_count": 1
}
},
{
"at": "2026-04-06T14:44:05Z",
"source": "orchestrator.roshydro",
"status": "info",
"action": "processing_file",
"details": {
"filename": "UUUJ02895015.b"
}
},
{
"at": "2026-04-06T14:44:05Z",
"source": "orchestrator.roshydro",
"status": "info",
"action": "files_detected",
"details": {
"count": 1
}
},
{
"at": "2026-04-06T14:44:00Z",
"source": "orchestrator.roshydro",
"status": "info",
"action": "dependencies_ok",
"details": null
},
{
"at": "2026-04-06T14:44:00Z",
"source": "orchestrator.noaa.taf",
"status": "info",
"action": "ingest_cycle_started",
"details": null
},
{
"at": "2026-04-06T14:44:00Z",
"source": "orchestrator.noaa.metar",
"status": "info",
"action": "ingest_cycle_started",
"details": null
},
{
"at": "2026-04-06T14:44:00Z",
"source": "orchestrator.roshydro",
"status": "info",
"action": "ingest_cycle_started",
"details": null
},
{
"at": "2026-04-06T14:43:07Z",
"source": "orchestrator.roshydro",
"status": "ok",
"action": "ingest_cycle_finished",
"details": {
"files_count": 3
}
},
{
"at": "2026-04-06T14:43:07Z",
"source": "orchestrator.roshydro",
"status": "info",
"action": "processing_file",
"details": {
"filename": "UUUJ02895014.b"
}
},
{
"at": "2026-04-06T14:43:06Z",
"source": "orchestrator.roshydro",
"status": "info",
"action": "processing_file",
"details": {
"filename": "UUUJ02895013.b"
}
},
{
"at": "2026-04-06T14:43:06Z",
"source": "orchestrator.roshydro",
"status": "info",
"action": "processing_file",
"details": {
"filename": "UUUJ02895012.b"
}
},
{
"at": "2026-04-06T14:43:06Z",
"source": "orchestrator.roshydro",
"status": "info",
"action": "files_detected",
"details": {
"count": 3
}
},
{
"at": "2026-04-06T14:43:00Z",
"source": "orchestrator.roshydro",
"status": "info",
"action": "dependencies_ok",
"details": null
},
{
"at": "2026-04-06T14:43:00Z",
"source": "orchestrator.roshydro",
"status": "info",
"action": "ingest_cycle_started",
"details": null
},
{
"at": "2026-04-06T14:42:21Z",
"source": "orchestrator.noaa.metar",
"status": "ok",
"action": "ingest_cycle_finished",
"details": {
"messages_count": 291,
"skipped": 4772
}
},
{
"at": "2026-04-06T14:42:19Z",
"source": "orchestrator.roshydro",
"status": "ok",
"action": "ingest_cycle_finished",
"details": {
"files_count": 7
}
},
{
"at": "2026-04-06T14:42:19Z",
"source": "orchestrator.roshydro",
"status": "info",
"action": "processing_file",
"details": {
"filename": "UUUJ02895011.b"
}
},
{
"at": "2026-04-06T14:42:19Z",
"source": "orchestrator.roshydro",
"status": "info",
"action": "processing_file",
"details": {
"filename": "UUUJ02895010.b"
}
},
{
"at": "2026-04-06T14:42:19Z",
"source": "orchestrator.roshydro",
"status": "info",
"action": "processing_file",
"details": {
"filename": "UUUJ02895009.b"
}
},
{
"at": "2026-04-06T14:42:18Z",
"source": "orchestrator.noaa.taf",
"status": "ok",
"action": "ingest_cycle_finished",
"details": {
"messages_count": 52,
"skipped": 2794
}
},
{
"at": "2026-04-06T14:42:18Z",
"source": "orchestrator.roshydro",
"status": "info",
"action": "processing_file",
"details": {
"filename": "UUUJ02895008.b"
}
},
{
"at": "2026-04-06T14:42:18Z",
"source": "orchestrator.roshydro",
"status": "info",
"action": "processing_file",
"details": {
"filename": "UUUJ02895007.b"
}
},
{
"at": "2026-04-06T14:42:07Z",
"source": "orchestrator.roshydro",
"status": "info",
"action": "processing_file",
"details": {
"filename": "UUUJ02895006.b"
}
},
{
"at": "2026-04-06T14:42:00Z",
"source": "orchestrator.noaa.metar",
"status": "info",
"action": "ingest_cycle_started",
"details": null
},
{
"at": "2026-04-06T14:41:05Z",
"source": "orchestrator.roshydro",
"status": "info",
"action": "processing_file",
"details": {
"filename": "UUUJ02895005.b"
}
},
{
"at": "2026-04-06T14:41:05Z",
"source": "orchestrator.roshydro",
"status": "info",
"action": "files_detected",
"details": {
"count": 7
}
},
{
"at": "2026-04-06T14:41:00Z",
"source": "orchestrator.roshydro",
"status": "info",
"action": "dependencies_ok",
"details": null
},
{
"at": "2026-04-06T14:41:00Z",
"source": "orchestrator.noaa.taf",
"status": "info",
"action": "ingest_cycle_started",
"details": null
},
{
"at": "2026-04-06T14:41:00Z",
"source": "orchestrator.roshydro",
"status": "info",
"action": "ingest_cycle_started",
"details": null
},
{
"at": "2026-04-06T14:40:13Z",
"source": "orchestrator.noaa.metar",
"status": "ok",
"action": "ingest_cycle_finished",
"details": {
"messages_count": 471,
"skipped": 4588
}
},
{
"at": "2026-04-06T14:40:08Z",
"source": "orchestrator.roshydro",
"status": "ok",
"action": "ingest_cycle_finished",
"details": {
"files_count": 1
}
},
{
"at": "2026-04-06T14:40:05Z",
"source": "orchestrator.roshydro",
"status": "info",
"action": "processing_file",
"details": {
"filename": "UUUJ02895004.b"
}
},
{
"at": "2026-04-06T14:40:05Z",
"source": "orchestrator.roshydro",
"status": "info",
"action": "files_detected",
"details": {
"count": 1
}
},
{
"at": "2026-04-06T14:40:00Z",
"source": "orchestrator.roshydro",
"status": "info",
"action": "dependencies_ok",
"details": null
},
{
"at": "2026-04-06T14:40:00Z",
"source": "orchestrator.noaa.metar",
"status": "info",
"action": "ingest_cycle_started",
"details": null
},
{
"at": "2026-04-06T14:40:00Z",
"source": "orchestrator.roshydro",
"status": "info",
"action": "ingest_cycle_started",
"details": null
},
{
"at": "2026-04-06T14:39:29Z",
"source": "orchestrator.noaa.metar",
"status": "ok",
"action": "ingest_cycle_finished",
"details": {
"messages_count": 335,
"skipped": 4732
}
},
{
"at": "2026-04-06T14:39:27Z",
"source": "orchestrator.roshydro",
"status": "ok",
"action": "ingest_cycle_finished",
"details": {
"files_count": 1
}
},
{
"at": "2026-04-06T14:39:27Z",
"source": "orchestrator.noaa.taf",
"status": "ok",
"action": "ingest_cycle_finished",
"details": {
"messages_count": 47,
"skipped": 2796
}
},
{
"at": "2026-04-06T14:39:26Z",
"source": "orchestrator.roshydro",
"status": "info",
"action": "processing_file",
"details": {
"filename": "UUUJ02895003.b"
}
},
{
"at": "2026-04-06T14:39:26Z",
"source": "orchestrator.roshydro",
"status": "info",
"action": "files_detected",
"details": {
"count": 1
}
},
{
"at": "2026-04-06T14:39:01Z",
"source": "orchestrator.roshydro",
"status": "info",
"action": "dependencies_ok",
"details": null
},
{
"at": "2026-04-06T14:39:00Z",
"source": "orchestrator.roshydro",
"status": "info",
"action": "ingest_cycle_started",
"details": null
},
{
"at": "2026-04-06T14:38:15Z",
"source": "orchestrator.roshydro",
"status": "ok",
"action": "ingest_cycle_finished",
"details": {
"files_count": 1
}
},
{
"at": "2026-04-06T14:38:05Z",
"source": "orchestrator.roshydro",
"status": "info",
"action": "processing_file",
"details": {
"filename": "UUUJ02895002.b"
}
},
{
"at": "2026-04-06T14:38:05Z",
"source": "orchestrator.roshydro",
"status": "info",
"action": "files_detected",
"details": {
"count": 1
}
},
{
"at": "2026-04-06T14:38:00Z",
"source": "orchestrator.roshydro",
"status": "info",
"action": "dependencies_ok",
"details": null
},
{
"at": "2026-04-06T14:38:00Z",
"source": "orchestrator.noaa.taf",
"status": "info",
"action": "ingest_cycle_started",
"details": null
},
{
"at": "2026-04-06T14:38:00Z",
"source": "orchestrator.noaa.metar",
"status": "info",
"action": "ingest_cycle_started",
"details": null
},
{
"at": "2026-04-06T14:38:00Z",
"source": "orchestrator.roshydro",
"status": "info",
"action": "ingest_cycle_started",
"details": null
},
{
"at": "2026-04-06T14:37:07Z",
"source": "orchestrator.roshydro",
"status": "ok",
"action": "ingest_cycle_finished",
"details": {
"files_count": 3
}
},
{
"at": "2026-04-06T14:37:06Z",
"source": "orchestrator.roshydro",
"status": "info",
"action": "processing_file",
"details": {
"filename": "UUUJ02895001.b"
}
},
{
"at": "2026-04-06T14:37:05Z",
"source": "orchestrator.roshydro",
"status": "info",
"action": "processing_file",
"details": {
"filename": "UUUJ02895000.b"
}
},
{
"at": "2026-04-06T14:37:04Z",
"source": "orchestrator.roshydro",
"status": "info",
"action": "processing_file",
"details": {
"filename": "UUUJ02894999.b"
}
},
{
"at": "2026-04-06T14:37:04Z",
"source": "orchestrator.roshydro",
"status": "info",
"action": "files_detected",
"details": {
"count": 3
}
},
{
"at": "2026-04-06T14:37:00Z",
"source": "orchestrator.roshydro",
"status": "info",
"action": "dependencies_ok",
"details": null
},
{
"at": "2026-04-06T14:37:00Z",
"source": "orchestrator.roshydro",
"status": "info",
"action": "ingest_cycle_started",
"details": null
},
{
"at": "2026-04-06T14:36:25Z",
"source": "orchestrator.arcgis.recent_tropical_cyclones",
"status": "ok",
"action": "ingest_cycle_finished",
"details": {
"features_count": 897,
"layer_counts": {
"0": 749,
"1": 148,
"2": 0
}
}
},
{
"at": "2026-04-06T14:36:22Z",
"source": "orchestrator.noaa.metar",
"status": "ok",
"action": "ingest_cycle_finished",
"details": {
"messages_count": 251,
"skipped": 4815
}
},
{
"at": "2026-04-06T14:36:21Z",
"source": "orchestrator.roshydro",
"status": "ok",
"action": "ingest_cycle_finished",
"details": {
"files_count": 2
}
},
{
"at": "2026-04-06T14:36:19Z",
"source": "orchestrator.noaa.taf",
"status": "ok",
"action": "ingest_cycle_finished",
"details": {
"messages_count": 42,
"skipped": 2800
}
},
{
"at": "2026-04-06T14:36:18Z",
"source": "orchestrator.roshydro",
"status": "info",
"action": "processing_file",
"details": {
"filename": "UUUJ02894998.b"
}
},
{
"at": "2026-04-06T14:36:16Z",
"source": "orchestrator.arcgis.tropical_cyclones",
"status": "ok",
"action": "ingest_cycle_finished",
"details": {
"features_count": 71,
"layer_counts": {
"0": 16,
"1": 41,
"2": 4,
"3": 8,
"4": 2,
"5": 0,
"7": 0,
"8": 0,
"9": 0,
"11": 0
}
}
},
{
"at": "2026-04-06T14:36:00Z",
"source": "orchestrator.noaa.metar",
"status": "info",
"action": "ingest_cycle_started",
"details": null
},
{
"at": "2026-04-06T14:35:05Z",
"source": "orchestrator.roshydro",
"status": "info",
"action": "processing_file",
"details": {
"filename": "UUUJ02894997.b"
}
},
{
"at": "2026-04-06T14:35:05Z",
"source": "orchestrator.roshydro",
"status": "info",
"action": "files_detected",
"details": {
"count": 2
}
},
{
"at": "2026-04-06T14:35:00Z",
"source": "orchestrator.roshydro",
"status": "info",
"action": "dependencies_ok",
"details": null
},
{
"at": "2026-04-06T14:35:00Z",
"source": "orchestrator.arcgis.recent_tropical_cyclones",
"status": "info",
"action": "ingest_cycle_started",
"details": null
},
{
"at": "2026-04-06T14:35:00Z",
"source": "orchestrator.arcgis.tropical_cyclones",
"status": "info",
"action": "ingest_cycle_started",
"details": null
},
{
"at": "2026-04-06T14:35:00Z",
"source": "orchestrator.noaa.taf",
"status": "info",
"action": "ingest_cycle_started",
"details": null
}
]