**Use case**

Currently, `system.replicas` table has `total_replicas` and `active_replicas` columns which are useful to check/alert when some replicas are down. One problem, these columns are numbers. They tell when there is a problem, but you need to further check ZooKeeper or query all the nodes to detect what exact replicas (hosts) are down/inactive/have problems.

**Describe the solution you'd like**

Add a replicas column maybe as a map which would contain the replica name, and it's status. Or, add 2 array columns with `replica_names` and `active_replica_names`

**Alternative**

Something along the line

```sql
select path, value from system.zookeeper where path IN (
    select concat(path, '/', name) from system.zookeeper where path in (select concat(zookeeper_path, '/replicas') from system.replicas)
)
and name = 'is_active'
```
std::atomic<time_t> last_queue_update_finish_time{0};
    DataPartsExchange::Fetcher fetcher;
    
    Poco::Event startup_event;
    
    std::atomic<bool> partial_shutdown_called {false};
    
    Poco::Event partial_shutdown_event {false};     
    
    static inline std::atomic_uint total_fetches {0};
    
    std::atomic_uint current_table_fetches {0};
    int metadata_version = 0;
    
    BackgroundJobsExecutor background_executor;
    BackgroundMovesExecutor background_moves_executor;
    
    bool queue_update_in_progress = false;
    BackgroundSchedulePool::TaskHolder queue_updating_task;
    BackgroundSchedulePool::TaskHolder mutations_updating_task;
    
    BackgroundSchedulePool::TaskHolder merge_selecting_task;
    
    std::mutex merge_selecting_mutex;
    
    BackgroundSchedulePool::TaskHolder mutations_finalizing_task;
    
    ReplicatedMergeTreeCleanupThread cleanup_thread;
    
    ReplicatedMergeTreePartCheckThread part_check_thread;