Post

Capítulo 7: Gerenciamento Docker Swarm

Capítulo 7: Gerenciamento Docker Swarm

Nota: Este tutorial faz parte de uma série sobre tmux. Veja a Parte 6 aqui.

Introdução ao Cenário Docker Swarm

O Docker Swarm representa uma abordagem diferente à orquestração de containers comparado ao Kubernetes, oferecendo simplicidade e integração nativa com o ecossistema Docker. Enquanto o Kubernetes proporciona funcionalidades extensas e flexibilidade máxima, o Docker Swarm foca em facilidade de uso e deployment rápido, tornando-se uma escolha popular para organizações que valorizam simplicidade operacional sem sacrificar capacidades essenciais de orquestração.

Nosso cenário prático utiliza um cluster Docker Swarm composto por três nós: um manager node (ans-swarm-ctrl) e dois worker nodes (ans-swarm-wk-01 e ans-swarm-wk-02). Esta configuração reflete arquiteturas típicas de produção onde alta disponibilidade é mantida através de múltiplos workers, enquanto o manager node coordena operações do cluster. O manager node, localizado em 192.168.50.145, executa o Docker daemon com capacidades de management habilitadas, incluindo scheduling, service discovery e load balancing. Os worker nodes, em 192.168.50.150 e 192.168.50.151, executam containers de aplicação conforme direcionado pelo manager.

A arquitetura do Docker Swarm é inerentemente mais simples que a do Kubernetes, mas ainda requer monitoramento cuidadoso de múltiplos aspectos: saúde dos nós, distribuição de services, utilização de recursos e conectividade de rede. O tmux proporciona a capacidade de organizar e visualizar todas estas informações de forma coerente, transformando o que seria uma tarefa fragmentada em múltiplas sessões SSH em um workflow unificado e eficiente.

A integração do tmux com comandos nativos do Docker como docker service, docker node e docker stack cria um ambiente de administração poderoso que supera abordagens tradicionais baseadas em múltiplas janelas de terminal separadas. Esta integração permite workflows onde mudanças podem ser aplicadas em um pane enquanto seus efeitos são monitorados em tempo real em outros panes, proporcionando feedback imediato e reduzindo tempo de resposta a problemas operacionais.

Configuração do Ambiente Docker Swarm no Tmux

Estabelecimento da Sessão Base

A configuração eficaz de um ambiente tmux para administração Docker Swarm começa com o estabelecimento de uma sessão dedicada que servirá como centro de controle para todas as operações relacionadas ao cluster. Esta sessão deve ser nomeada de forma descritiva e configurada com layout e janelas que reflitam os diferentes aspectos da administração Swarm.

1
2
3
4
5
6
7
8
9
10
11
12
# Criar sessão dedicada para Docker Swarm
tmux new-session -d -s swarm-admin

# Renomear a primeira janela para refletir seu propósito
tmux rename-window -t swarm-admin:0 'manager'

# Configurar conexão com o manager node
tmux send-keys -t swarm-admin:manager 'ssh admin@192.168.50.145' C-m

# Verificar status inicial do cluster
tmux send-keys 'docker node ls' C-m
tmux send-keys 'docker service ls' C-m

A sessão swarm-admin serve como ambiente centralizado onde todas as operações de administração Docker Swarm são realizadas. A nomenclatura clara facilita identificação rápida quando múltiplas sessões estão ativas, e a conexão inicial ao manager node proporciona acesso imediato aos comandos de controle do cluster.

Configuração de Conectividade Multi-Node

O próximo passo envolve estabelecer conectividade com todos os nós do cluster, permitindo monitoramento direto de recursos do sistema, logs locais e execução de comandos de diagnóstico que complementam as informações disponíveis através dos comandos Docker Swarm centralizados.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# Criar janela para worker nodes
tmux new-window -t swarm-admin -n 'workers'

# Dividir janela para acomodar ambos os workers
tmux split-window -t swarm-admin:workers -h

# Conectar ao primeiro worker node
tmux select-pane -t swarm-admin:workers.0
tmux send-keys 'ssh admin@192.168.50.150' C-m
tmux send-keys 'docker info | grep -E "(Swarm|Node)"' C-m

# Conectar ao segundo worker node
tmux select-pane -t swarm-admin:workers.1
tmux send-keys 'ssh admin@192.168.50.151' C-m
tmux send-keys 'docker info | grep -E "(Swarm|Node)"' C-m

# Retornar ao manager para comandos centralizados
tmux select-window -t swarm-admin:manager
tmux send-keys 'docker node inspect --pretty ans-swarm-wk-01' C-m

Esta configuração estabelece conectividade direta com todos os nós do cluster, proporcionando acesso imediato para diagnóstico de problemas, monitoramento de recursos e execução de comandos administrativos. A organização em janelas separadas para manager e workers reflete a arquitetura lógica do Docker Swarm e facilita navegação mental entre diferentes aspectos do cluster.

Implementação de Layouts Especializados

Para administração eficaz de Docker Swarm, diferentes layouts de tmux são apropriados para diferentes tipos de tarefas. Um layout de monitoramento geral pode incluir visibilidade simultânea de todos os nós e services, enquanto um layout de deployment pode focar em logs detalhados e métricas de rollout.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# Criar janela para monitoramento geral do cluster
tmux new-window -t swarm-admin -n 'monitoring'

# Configurar layout de quatro panes para visão abrangente
tmux split-window -t swarm-admin:monitoring -h
tmux split-window -t swarm-admin:monitoring.0 -v
tmux split-window -t swarm-admin:monitoring.1 -v

# Configurar cada pane para diferentes aspectos de monitoramento
tmux select-pane -t swarm-admin:monitoring.0
tmux send-keys 'ssh admin@192.168.50.145' C-m
tmux send-keys 'watch docker node ls' C-m

tmux select-pane -t swarm-admin:monitoring.1
tmux send-keys 'ssh admin@192.168.50.145' C-m
tmux send-keys 'watch docker service ls' C-m

tmux select-pane -t swarm-admin:monitoring.2
tmux send-keys 'ssh admin@192.168.50.145' C-m
tmux send-keys 'watch "docker stats --no-stream"' C-m

tmux select-pane -t swarm-admin:monitoring.3
tmux send-keys 'ssh admin@192.168.50.145' C-m
tmux send-keys 'docker system events' C-m

Este layout de monitoramento proporciona visibilidade contínua dos aspectos mais críticos do cluster: status dos nós, estado dos services, utilização de recursos e eventos do sistema. O comando watch garante que informações sejam atualizadas automaticamente, mantendo administradores informados sobre mudanças no cluster sem necessidade de intervenção manual constante.

Monitoramento de Nós e Services

Monitoramento do Manager Node

O manager node no Docker Swarm é responsável por todas as decisões de orquestração, incluindo scheduling de tasks, service discovery e manutenção do estado desejado do cluster. O monitoramento eficaz do manager requer visibilidade de múltiplos aspectos: saúde do Docker daemon, status do Raft consensus, utilização de recursos e logs de operações críticas.

O Docker daemon no manager node mantém informações detalhadas sobre o estado do cluster que podem ser acessadas através de vários comandos. A configuração de monitoramento dedicado para o manager permite identificação rápida de problemas que podem afetar todo o cluster.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# Criar janela dedicada para monitoramento detalhado do manager
tmux new-window -t swarm-admin -n 'manager-details'

# Configurar layout para múltiplas perspectivas do manager
tmux split-window -t swarm-admin:manager-details -h
tmux split-window -t swarm-admin:manager-details.0 -v
tmux split-window -t swarm-admin:manager-details.1 -v

# Monitorar informações detalhadas do cluster
tmux select-pane -t swarm-admin:manager-details.0
tmux send-keys 'ssh admin@192.168.50.145' C-m
tmux send-keys 'watch "docker info | grep -A 20 Swarm"' C-m

# Monitorar logs do Docker daemon
tmux select-pane -t swarm-admin:manager-details.1
tmux send-keys 'ssh admin@192.168.50.145' C-m
tmux send-keys 'sudo journalctl -u docker -f' C-m

# Monitorar tasks em execução
tmux select-pane -t swarm-admin:manager-details.2
tmux send-keys 'ssh admin@192.168.50.145' C-m
tmux send-keys 'watch "docker service ps --no-trunc $(docker service ls -q)"' C-m

# Monitorar recursos do sistema
tmux select-pane -t swarm-admin:manager-details.3
tmux send-keys 'ssh admin@192.168.50.145' C-m
tmux send-keys 'watch "top -b -n1 | head -15"' C-m

Esta configuração proporciona monitoramento abrangente do manager node, incluindo informações específicas do Swarm, logs do sistema e utilização de recursos. A visualização simultânea permite identificação rápida de correlações entre eventos em diferentes aspectos do sistema.

Monitoramento de Worker Nodes

Os worker nodes executam as cargas de trabalho reais do cluster e requerem monitoramento focado em utilização de recursos, saúde de containers e conectividade com o manager. Diferentemente do manager, os workers têm responsabilidades mais limitadas, mas são críticos para a execução eficaz de aplicações.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# Criar janela para monitoramento detalhado de workers
tmux new-window -t swarm-admin -n 'worker-monitoring'

# Layout para comparação lado a lado dos workers
tmux split-window -t swarm-admin:worker-monitoring -h

# Configurar monitoramento para worker 1
tmux select-pane -t swarm-admin:worker-monitoring.0
tmux split-window -v
tmux select-pane -t swarm-admin:worker-monitoring.0
tmux send-keys 'ssh admin@192.168.50.150' C-m
tmux send-keys 'watch "docker ps --format \"table {{.Names}}\t{{.Status}}\t{{.Ports}}\""' C-m

tmux select-pane -t swarm-admin:worker-monitoring.1
tmux send-keys 'ssh admin@192.168.50.150' C-m
tmux send-keys 'watch "docker stats --no-stream"' C-m

# Configurar monitoramento para worker 2
tmux select-pane -t swarm-admin:worker-monitoring.2
tmux split-window -v
tmux select-pane -t swarm-admin:worker-monitoring.2
tmux send-keys 'ssh admin@192.168.50.151' C-m
tmux send-keys 'watch "docker ps --format \"table {{.Names}}\t{{.Status}}\t{{.Ports}}\""' C-m

tmux select-pane -t swarm-admin:worker-monitoring.3
tmux send-keys 'ssh admin@192.168.50.151' C-m
tmux send-keys 'watch "docker stats --no-stream"' C-m

Esta configuração permite comparação lado a lado de métricas e status entre workers, facilitando identificação de discrepâncias que podem indicar problemas de hardware, configuração ou distribuição de carga. A visualização simultânea também permite monitoramento de balanceamento de carga entre nós durante operações de scaling.

Monitoramento de Services e Tasks

O Docker Swarm organiza aplicações em services, que são definições declarativas de como containers devem ser executados através do cluster. Cada service pode ter múltiplas tasks (instâncias de containers) distribuídas através dos worker nodes. O monitoramento eficaz requer visibilidade tanto do estado geral dos services quanto do status individual das tasks.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# Criar janela dedicada para monitoramento de services
tmux new-window -t swarm-admin -n 'services'

# Layout para diferentes aspectos dos services
tmux split-window -t swarm-admin:services -h
tmux split-window -t swarm-admin:services.0 -v
tmux split-window -t swarm-admin:services.1 -v

# Monitorar lista geral de services
tmux select-pane -t swarm-admin:services.0
tmux send-keys 'ssh admin@192.168.50.145' C-m
tmux send-keys 'watch docker service ls' C-m

# Monitorar tasks de todos os services
tmux select-pane -t swarm-admin:services.1
tmux send-keys 'ssh admin@192.168.50.145' C-m
tmux send-keys 'watch "docker service ps --no-trunc $(docker service ls -q)"' C-m

# Monitorar logs agregados de services
tmux select-pane -t swarm-admin:services.2
tmux send-keys 'ssh admin@192.168.50.145' C-m
# Este pane será usado dinamicamente para logs específicos

# Monitorar eventos relacionados a services
tmux select-pane -t swarm-admin:services.3
tmux send-keys 'ssh admin@192.168.50.145' C-m
tmux send-keys 'docker system events --filter type=service' C-m

Esta configuração proporciona visibilidade abrangente do estado dos services, desde visão geral até detalhes específicos de tasks individuais. A organização permite identificação rápida de services com problemas e drill-down para análise detalhada conforme necessário.

Deployment e Gerenciamento de Aplicações

Preparação de Ambientes de Deployment

O deployment de aplicações no Docker Swarm pode ser realizado através de comandos individuais docker service create ou através de Docker Compose files usando docker stack deploy. Ambas as abordagens requerem preparação cuidadosa e monitoramento durante o processo de deployment para garantir sucesso e identificar problemas rapidamente.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# Criar janela dedicada para operações de deployment
tmux new-window -t swarm-admin -n 'deployment'

# Layout para preparação, execução e monitoramento
tmux split-window -t swarm-admin:deployment -h
tmux split-window -t swarm-admin:deployment.1 -v

# Configurar pane para preparação de deployment
tmux select-pane -t swarm-admin:deployment.0
tmux send-keys 'ssh admin@192.168.50.145' C-m
tmux send-keys 'cd /home/admin/docker-compose' C-m
tmux send-keys 'ls -la *.yml' C-m

# Configurar pane para execução de comandos
tmux select-pane -t swarm-admin:deployment.1
tmux send-keys 'ssh admin@192.168.50.145' C-m

# Configurar pane para monitoramento de deployment
tmux select-pane -t swarm-admin:deployment.2
tmux send-keys 'ssh admin@192.168.50.145' C-m
tmux send-keys 'watch docker service ls' C-m

Esta configuração estabelece um ambiente integrado onde compose files podem ser revisados, comandos de deployment podem ser executados e o progresso pode ser monitorado simultaneamente. Esta organização permite workflow fluido onde mudanças podem ser aplicadas e seus efeitos observados imediatamente.

Execução de Deployments com Stack

O Docker Stack proporciona uma forma declarativa de definir e deployar aplicações multi-service no Swarm. Esta abordagem é especialmente útil para aplicações complexas que requerem múltiplos services interconectados com configurações específicas de rede, volumes e secrets.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# Exemplo de deployment de stack web com monitoramento

# Criar arquivo docker-compose.yml para demonstração
cat > /tmp/web-stack.yml << EOF
version: '3.8'
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
    deploy:
      replicas: 3
      update_config:
        parallelism: 1
        delay: 10s
      restart_policy:
        condition: on-failure
  
  redis:
    image: redis:alpine
    deploy:
      replicas: 1
      placement:
        constraints:
          - node.role == manager
EOF

# No pane de comandos
tmux select-pane -t swarm-admin:deployment.1
tmux send-keys 'docker stack deploy -c /tmp/web-stack.yml web-app' C-m

# Configurar monitoramento específico para esta stack
tmux send-keys 'watch "docker stack services web-app"' C-m

# Em um novo pane, monitorar tasks específicas
tmux split-window -t swarm-admin:deployment.1 -v
tmux send-keys 'watch "docker stack ps web-app"' C-m

Esta configuração permite monitoramento em tempo real de todos os aspectos do deployment: status dos services na stack, estado das tasks individuais e progresso geral do deployment. A visualização simultânea facilita identificação rápida de problemas durante o processo de deployment.

Scaling e Rolling Updates

As operações de scaling e rolling updates são aspectos críticos da administração Docker Swarm que requerem monitoramento cuidadoso para garantir que aplicações mantenham disponibilidade durante mudanças. O Docker Swarm proporciona capacidades nativas para estas operações, e o tmux permite visualização simultânea de múltiplas métricas durante sua execução.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# Configurar monitoramento para operações de scaling
tmux new-window -t swarm-admin -n 'scaling'

# Layout para monitoramento abrangente de scaling
tmux split-window -t swarm-admin:scaling -h
tmux split-window -t swarm-admin:scaling.0 -v
tmux split-window -t swarm-admin:scaling.1 -v

# Monitorar status do service durante scaling
tmux select-pane -t swarm-admin:scaling.0
tmux send-keys 'ssh admin@192.168.50.145' C-m
tmux send-keys 'watch "docker service ls | grep web-app"' C-m

# Monitorar tasks durante scaling
tmux select-pane -t swarm-admin:scaling.1
tmux send-keys 'ssh admin@192.168.50.145' C-m
tmux send-keys 'watch "docker service ps web-app_web"' C-m

# Monitorar distribuição através dos nós
tmux select-pane -t swarm-admin:scaling.2
tmux send-keys 'ssh admin@192.168.50.145' C-m
tmux send-keys 'watch "docker node ps ans-swarm-wk-01 ans-swarm-wk-02"' C-m

# Pane para execução de comandos de scaling
tmux select-pane -t swarm-admin:scaling.3
tmux send-keys 'ssh admin@192.168.50.145' C-m
tmux send-keys 'docker service scale web-app_web=5' C-m

Durante operações de scaling, esta configuração permite observação em tempo real de como novas tasks são criadas, distribuídas através dos nós e tornam-se operacionais. A visualização simultânea de múltiplas perspectivas facilita identificação de problemas de balanceamento de carga ou limitações de recursos.

Troubleshooting e Diagnóstico

Identificação de Problemas Comuns

O troubleshooting eficaz em Docker Swarm requer compreensão das diferentes camadas onde problemas podem ocorrer: desde conectividade de rede entre nós até problemas específicos de containers individuais. O tmux facilita abordagem sistemática proporcionando visibilidade simultânea de diferentes aspectos do sistema.

Problemas comuns em clusters Docker Swarm incluem falhas de scheduling devido a constraints de placement, problemas de conectividade de rede overlay, falhas de pulling de imagens e problemas de recursos insuficientes. Cada tipo de problema requer diferentes tipos de informação para diagnóstico eficaz.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# Configurar ambiente de troubleshooting abrangente
tmux new-window -t swarm-admin -n 'troubleshooting'

# Layout para múltiplas perspectivas de diagnóstico
tmux split-window -t swarm-admin:troubleshooting -h
tmux split-window -t swarm-admin:troubleshooting.0 -v
tmux split-window -t swarm-admin:troubleshooting.1 -v

# Monitorar eventos do sistema para identificar problemas
tmux select-pane -t swarm-admin:troubleshooting.0
tmux send-keys 'ssh admin@192.168.50.145' C-m
tmux send-keys 'docker system events' C-m

# Monitorar tasks com problemas
tmux select-pane -t swarm-admin:troubleshooting.1
tmux send-keys 'ssh admin@192.168.50.145' C-m
tmux send-keys 'watch "docker service ps --filter desired-state=running --filter desired-state=ready $(docker service ls -q)"' C-m

# Monitorar logs de services problemáticos
tmux select-pane -t swarm-admin:troubleshooting.2
# Este pane será usado dinamicamente para logs específicos

# Pane para comandos de diagnóstico
tmux select-pane -t swarm-admin:troubleshooting.3
tmux send-keys 'ssh admin@192.168.50.145' C-m
tmux send-keys 'docker node ls' C-m

Esta configuração estabelece um ambiente de troubleshooting onde problemas podem ser identificados através de eventos do sistema, tasks problemáticas podem ser localizadas rapidamente e comandos de diagnóstico podem ser executados conforme necessário.

Análise de Logs de Services

A análise de logs no Docker Swarm é facilitada pela capacidade de agregar logs de múltiplas tasks de um service através do comando docker service logs. No entanto, para troubleshooting detalhado, frequentemente é necessário examinar logs de tasks individuais ou correlacionar logs de diferentes services.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# Configurar análise abrangente de logs
tmux new-window -t swarm-admin -n 'logs-analysis'

# Layout para múltiplas fontes de logs
tmux split-window -t swarm-admin:logs-analysis -h
tmux split-window -t swarm-admin:logs-analysis.0 -v
tmux split-window -t swarm-admin:logs-analysis.1 -v

# Logs agregados de um service específico
tmux select-pane -t swarm-admin:logs-analysis.0
tmux send-keys 'ssh admin@192.168.50.145' C-m
tmux send-keys 'docker service logs -f web-app_web' C-m

# Logs do Docker daemon do primeiro worker
tmux select-pane -t swarm-admin:logs-analysis.1
tmux send-keys 'ssh admin@192.168.50.150' C-m
tmux send-keys 'sudo journalctl -u docker -f' C-m

# Logs do Docker daemon do segundo worker
tmux select-pane -t swarm-admin:logs-analysis.2
tmux send-keys 'ssh admin@192.168.50.151' C-m
tmux send-keys 'sudo journalctl -u docker -f' C-m

# Logs do Docker daemon do manager
tmux select-pane -t swarm-admin:logs-analysis.3
tmux send-keys 'ssh admin@192.168.50.145' C-m
tmux send-keys 'sudo journalctl -u docker -f' C-m

Esta configuração permite análise simultânea de logs de aplicação e infraestrutura, facilitando identificação de correlações entre problemas de aplicação e eventos de infraestrutura. A visualização paralela é especialmente valiosa durante incident response quando tempo é crítico.

Diagnóstico de Conectividade de Rede

Problemas de rede são particularmente comuns em ambientes Docker Swarm devido à complexidade das redes overlay e routing mesh. O diagnóstico eficaz requer teste de conectividade em múltiplas camadas: entre nós do cluster, entre containers e entre services.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# Configurar diagnóstico abrangente de rede
tmux new-window -t swarm-admin -n 'network-diagnosis'

# Layout para testes de conectividade
tmux split-window -t swarm-admin:network-diagnosis -h
tmux split-window -t swarm-admin:network-diagnosis.0 -v
tmux split-window -t swarm-admin:network-diagnosis.1 -v

# Verificar conectividade entre nós
tmux select-pane -t swarm-admin:network-diagnosis.0
tmux send-keys 'ssh admin@192.168.50.145' C-m
tmux send-keys 'ping -c 3 192.168.50.150 && ping -c 3 192.168.50.151' C-m

# Verificar redes Docker
tmux select-pane -t swarm-admin:network-diagnosis.1
tmux send-keys 'ssh admin@192.168.50.145' C-m
tmux send-keys 'docker network ls' C-m
tmux send-keys 'docker network inspect ingress' C-m

# Verificar conectividade de services
tmux select-pane -t swarm-admin:network-diagnosis.2
tmux send-keys 'ssh admin@192.168.50.145' C-m
tmux send-keys 'docker service inspect web-app_web --format "{{.Endpoint}}"' C-m

# Testes de conectividade de aplicação
tmux select-pane -t swarm-admin:network-diagnosis.3
tmux send-keys 'ssh admin@192.168.50.145' C-m
tmux send-keys 'curl -I http://localhost:80' C-m

Esta configuração proporciona testes sistemáticos de conectividade em múltiplas camadas, desde conectividade básica de rede até funcionalidade de aplicação. A execução simultânea de testes facilita identificação de onde problemas de conectividade estão ocorrendo.

Automação e Scripts Avançados

Scripts para Operações Rotineiras

A administração de clusters Docker Swarm envolve muitas tarefas rotineiras que podem ser automatizadas para aumentar eficiência e reduzir erros. O tmux pode ser integrado com scripts que automatizam estas tarefas, proporcionando interfaces visuais para monitoramento de progresso.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#!/bin/bash
# Script: swarm-health-check.sh
# Executa verificações de saúde abrangentes do cluster Swarm

# Criar sessão dedicada para health check
tmux new-session -d -s swarm-health

# Verificar status dos nós
tmux send-keys -t swarm-health 'ssh admin@192.168.50.145' C-m
tmux send-keys 'docker node ls' C-m
tmux send-keys 'echo "=== Node Status Check Complete ===" ' C-m

# Criar nova janela para verificação de services
tmux new-window -t swarm-health -n 'service-check'
tmux send-keys 'docker service ls' C-m
tmux send-keys 'docker stack ls' C-m

# Criar janela para verificação de recursos
tmux new-window -t swarm-health -n 'resource-check'
tmux send-keys 'docker system df' C-m
tmux send-keys 'docker system info | grep -A 10 "Swarm:"' C-m

# Anexar à sessão para visualização
tmux attach-session -t swarm-health

Este script automatiza verificações de saúde rotineiras do cluster, organizando resultados em janelas separadas para fácil revisão. A automação reduz tempo necessário para verificações manuais e garante que verificações importantes não sejam esquecidas.

Integração com Ferramentas de Monitoramento

A integração do tmux com ferramentas de monitoramento externas como Prometheus, Grafana ou sistemas de logging centralizados pode proporcionar visibilidade ainda maior sobre o estado do cluster. Esta integração permite que dashboards e alertas sejam incorporados ao workflow tmux.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# Script para integração com ferramentas de monitoramento
#!/bin/bash

# Criar sessão integrada de monitoramento
tmux new-session -d -s swarm-monitoring

# Janela para métricas Docker nativas
tmux rename-window -t swarm-monitoring:0 'docker-metrics'
tmux send-keys 'ssh admin@192.168.50.145' C-m
tmux send-keys 'watch "docker stats --no-stream"' C-m

# Janela para logs centralizados
tmux new-window -t swarm-monitoring -n 'logs'
tmux send-keys 'ssh admin@192.168.10.113' C-m  # ans-elk server
tmux send-keys 'curl -X GET "localhost:9200/_cat/indices?v" | grep docker' C-m

# Janela para eventos e alertas
tmux new-window -t swarm-monitoring -n 'events'
tmux send-keys 'ssh admin@192.168.50.145' C-m
tmux send-keys 'docker system events' C-m

tmux attach-session -t swarm-monitoring

Script Automatizado para Conexão Multi-Pane

Baseado no script fornecido anteriormente, podemos criar uma versão específica para Docker Swarm que estabelece conexões automáticas com todos os nós do cluster:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#!/bin/bash
# Script: swarm_multi_panes_ssh.sh
# Conecta automaticamente aos nós do cluster Docker Swarm

USER="admin"
HOSTS=(
  "${USER}@ans-swarm-ctrl"
  "${USER}@ans-swarm-wk-01"
  "${USER}@ans-swarm-wk-02"
)

# Criar sessão para conexões SSH
tmux new-session -d -s swarm-ssh-multi

# Criar panes para cada host
for i in "${!HOSTS[@]}"; do
    if [ "$i" -ne 0 ]; then
        tmux split-window -t swarm-ssh-multi
    fi
done

# Aplicar layout tiled para organização visual
tmux select-layout -t swarm-ssh-multi tiled

# Estabelecer conexões SSH e executar comandos iniciais
for i in "${!HOSTS[@]}"; do
    tmux select-pane -t $i
    tmux send-keys "ssh ${HOSTS[$i]}" C-m
    
    # Comandos específicos baseado no tipo de nó
    if [[ "${HOSTS[$i]}" == *"ctrl"* ]]; then
        tmux send-keys "docker node ls" C-m
    else
        tmux send-keys "docker info | grep -E '(Swarm|Node)'" C-m
    fi
done

# Anexar à sessão
tmux attach-session -t swarm-ssh-multi

Este script automatiza completamente o processo de estabelecimento de conexões com todos os nós do cluster, executando comandos apropriados para cada tipo de nó e organizando a visualização de forma otimizada.

A administração eficaz de clusters Docker Swarm através do tmux demonstra como a ferramenta pode ser adaptada para diferentes tecnologias de orquestração mantendo princípios consistentes de organização e monitoramento. A simplicidade relativa do Docker Swarm comparado ao Kubernetes permite workflows mais diretos, mas os princípios de visibilidade simultânea e organização hierárquica permanecem igualmente valiosos. O próximo capítulo explorará como aplicar estes conceitos à administração de bancos de dados, demonstrando a versatilidade do tmux em diferentes domínios técnicos.

This post is licensed under CC BY 4.0 by the author.