**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'
```
{
        
        String full_path = new_data_part->getFullRelativePath();
        if (new_data_part->volume->getDisk()->exists(full_path))
        {
            LOG_WARNING(log, "Removing old temporary directory {}", fullPath(new_data_part->volume->getDisk(), full_path));
            new_data_part->volume->getDisk()->removeRecursive(full_path);
        }
        const auto disk = new_data_part->volume->getDisk();
        disk->createDirectories(full_path);
        if (getSettings()->fsync_part_directory)
            sync_guard = disk->getDirectorySyncGuard(full_path);
    }
    
    
    auto compression_codec = getContext()->chooseCompressionCodec(0, 0);
    const auto & index_factory = MergeTreeIndexFactory::instance();
    MergedBlockOutputStream out(new_data_part, metadata_snapshot, columns, index_factory.getMany(metadata_snapshot->getSecondaryIndices()), compression_codec);
    bool sync_on_insert = settings->fsync_after_insert;
    out.writePrefix();
    out.write(block);
    out.writeSuffixAndFinalizePart(new_data_part, sync_on_insert);
    try
    {
        MergeTreeData::Transaction transaction(*this);
        auto replaced_parts = renameTempPartAndReplace(new_data_part, nullptr, &transaction);
        if (!replaced_parts.empty())
        {
            Strings part_names;
            for (const auto & part : replaced_parts)