Um projeto para estudar trace distribuído e monitoramento.
Tenho estudado sobre observabilidade e instrumentação de código em Go. Eu venho do Java, onde era apenas adicionar o Java Agent do OpenTelemetry e ele fazia boa parte do trabalho por você.
A inteção é criar um exemplo para cada aspecto de observabilidade, da instrumentação do código a criação de painéis de monitoramento e alertas com algumas ferramentas diferentes (não pretendo me aprofundar muito nas ferramentas, apenas o necessário para os exemplos) que facilitem o entendimento.
A idéia é criar um ambiente simulando alguns cenários comuns de sistemas e gerar visualização das métricas e dos traces de trace e monitoramento.
Até o momento eu vi duas possibilidades, uma utilziando Jaeger
,
que permite visualizar apenas os traces, e a outra utilziando a
stack do OpenSearch (OpenSearch, OpenSearch Dashboards, Data Prepper, Filebeat e Logstash), que permite pegar também as
métricas de runtime e logs, que permitem algumas opções extras.
Uma das opções é utilizar o Jaegerpara visualização de trace distribuído.
Outra opção, que permite coletar também métricas de runtime, como memória alocada, pausas do garbage collector (GC), conexões de banco em uso e disponíveis, etc.
- riandyrn/otelchi - Github
- lightstep/opentelemetry-examples - Github
- mdevilliers/open-telemetery-golang-bestiary - Github
- deviantony/docker-elk - Github
- Get started with Trace Analytics - Opensearch
- Trace analytics
- Data Prepper configuration reference - bookstack.cn
- opensearchproject/logstash-oss-with-opensearch-output-plugin - DockerHub
- Defining processors - Filebeat
- Exported fields - Filebeat Processors
- Migrating from Logstash
-
elastic/terraform-provider-elasticstack - Terraform Registry
-
phillbaker/terraform-provider-elasticsearch - Terraform Registry
## building data-prepper Docker image on Raspberry Pi
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo apt-get install -y openjdk-17-jdk
git clone -b '2.1.1' https://github.com/opensearch-project/data-prepper.git && \
cd data-prepper && \
sed -i 's|eclipse-temurin:17-jdk-alpine|arm64v8/eclipse-temurin|g' release/docker/Dockerfile && \
sed -i 's|apk update|apt update|g' release/docker/Dockerfile && \
sed -i 's|apk add --no-cache bash bc|apt install bc bash -y|g' release/docker/Dockerfile && \
cp data-prepper/shared-config/log4j.properties
./gradlew :release:docker:docker || echo "ERROR"
export IMAGE_NAME="$( docker images | grep opensearch | awk '{ print $1 }' )"
export IMAGE_VERSION="$( docker images | grep opensearch | awk '{ print $2 }' )"
docker tag "$IMAGE_NAME:$IMAGE_VERSION" "eldius/$IMAGE_NAME:$IMAGE_VERSION"
docker push "eldius/$IMAGE_NAME:$IMAGE_VERSION"
- Cmder:
- ConEmu console emulator:
cons:
- The tool doesn’t include shell features such as tab completion and remote connections.
- Poor scrolling support – Scrolling navigates to blank space instead of text content.
- Mintty console emulator for Cygwin:
cons:
- No support for WSL.
- No multiple tab support.
- Console2 – best terminal emulators and command prompt for Windows:
cons:
- Inactive development team. The software was last updated in 2013.
- Many users face a glitch were stopping a running script closes the tab instead of showing the screen where users can input new command.
- Hyper – a cross-platform terminal emulator:
cons:
- The software is unstable.
- Electron uses a lot of resources.
- Development activity is very slow.
- Terminus – an open source windows terminal emulator:
cons:
- The software occupies over 80MB of drive space and uses a lot of resources.
- Programmers complain that some functions fail while running the software.