Teste técnico para montagem de um ambiente capaz de prover observabilidade e demonstrar capacidade técnica de criação do mesmo
- App python usando Django
- nginx
- elasticsearch - para indexação de dados e mecanismo de busca
- kibana - para visualização de dados, metricas, logs e etc (em forma de dashboards e etc)
- metricbeat - para coleta de métricas (cpu, memória e etc)
- heartbeat - para informações de dispinibilidade (uptime)
- filebeat - para coleta de logs
- apm-server - para monitoramento de desempenho de aplicativos em tempo real (solicitações HTTP internas e externas, consultas de banco de dados, chamadas para caches e etc)
- Clone o repositório e acesse o diretorio do projeto clonado
$ git clone https://github.com/Jhousyfran/py_observabilidade.git
$ cd py_observabilidade
- Crie a rede observability com o comando
$ docker network create observability
- É necessário criar a pasta elasticsearch_data na máquina local manualmente para evitar erro de permissionamento
$ mkdir elasticsearch_data
- Agora sim, vamos subir os containers (Após rodar o comando aguarde alguns segundos para que as aplicações estejam disponíveis)
$ docker-compose up -d
- Para as aplicações
APP | ENDEREÇO/PORTA | DEMO (pra facilitar a vida e já sair usando) |
---|---|---|
kibana | http://localhost:5601 | http://146.190.236.50:5601 |
app | http://localhost:8280 | http://146.190.236.50 |
- Verifique se todos os containers estão rodando (principalmente elasticsearch). O esperado é algo semelhante ao demonstrado abaixo:
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3fda8bd7c008 py_observabilidade_nginx "/entrypoint.sh" 26 hours ago Up 24 minutes 0.0.0.0:8280->80/tcp, :::8280->80/tcp nginx
4e001bd2193a py_observabilidade_app "python manage.py ru…" 26 hours ago Up 24 minutes 0.0.0.0:8000->8000/tcp, :::8000->8000/tcp appexample
0b6d6614ccdd postgres "docker-entrypoint.s…" 26 hours ago Up 24 minutes 5432/tcp py_observabilidade_db_1
61cf58be78bf docker.elastic.co/beats/metricbeat:7.13.0 "/usr/bin/tini -- /u…" 26 hours ago Up 23 minutes metricbeat
074a16a02853 docker.elastic.co/beats/heartbeat:7.13.0 "/usr/bin/tini -- /u…" 26 hours ago Up 24 minutes heartbeat
9b1d0016c636 docker.elastic.co/kibana/kibana:7.13.0 "/bin/tini -- /usr/l…" 26 hours ago Up 24 minutes 0.0.0.0:5601->5601/tcp, :::5601->5601/tcp kibana
3337661a0ccb docker.elastic.co/elasticsearch/elasticsearch:7.13.0 "/bin/tini -- /usr/l…" 26 hours ago Up 24 minutes 0.0.0.0:9200->9200/tcp, :::9200->9200/tcp, 9300/tcp elasticsearch
18923e306197 docker.elastic.co/apm/apm-server-oss:7.13.0 "/usr/bin/tini -- /u…" 26 hours ago Up 24 minutes 0.0.0.0:8200->8200/tcp, :::8200->8200/tcp apm
- Se o container elasticsearch não estiver rodando, é provavel que seja necessário da permissão ao diretório elasticsearch_data. Dentro da pasta do projeto clonado faça:
$ sudo chmod 775 -R elasticsearch_data
$ docker-compsoe up -d
- O Passo anterior deve ser o suficiente para que o container volte a subir com sucesso! Caso contrario use o comando seguinte para investigar:
$ docker logs nome_do_container_desejado