Gerenciando times

O time de monitoramento e resposta a incidentes é responsável por configurar notificações e alertas personalizados, atuando de forma proativa para identificar e resolver rapidamente qualquer falha nos sistemas, garantindo a continuidade dos negócios e a satisfação dos clientes.

Criando um time

  • Abra o menu “Teams”.
  • Clique em “+ Team” para criar seu time.
  • Dê um nome para seu time e configure um ou mais canais de notificação.
  • Clique em “Save” para salvar as configurações e criar seu time.

Adicionando usuários ao time

  • Clique no time que deseja adicionar um usuário.
  • Adicione o e-mail e selecione uma role para o usuário.
  • Clique em “ADD” para adicionar.

Editando usuários do time

  • Clique no time que deseja editar um usuário.
  • Clique no icone  na linha do usuário que deseja editar.
  • troque a role ou desative-o conforme sua preferência.
  • Clique em “Save” para salvar as alterações.

Removendo usuários do time

  • Clique no time que deseja remover um usuário.
  • Clique no icone  na linha do usuário que deseja remover.
  • Clique em “Delete Member” para remover.

Canais de notificação

Personalize seu time escolhendo um nome e definindo os canais de notificação que melhor atendem às suas necessidades. Você pode receber notificações por email, Telegram, Slack, Microsoft Teams, WhatsApp, Google Chat, Discord ou configurar outros canais usando webhooks
Quer saber como configurar os canais de notificação? Clique no canal que deseja configurar logo abaixo:

Call Rotation

Em times, podemos configurar o recebimento de notificações em ordem de pessoas e tipo de notificação. Entre as opções, os membros do time podem escolher receber alertas via:

  • Email
  • SMS
  • Voice Call
  • Telegram

Roles em times

Dentro de times, possuímos as roles onde podemos definir níveis de permissão em relação ao time. Isso impacta a interação com os recursos da plataforma. As roles disponíveis são:

  • Member
  • Admin
  • Owner

Como gerenciar usuários em sua organização

Ao envolver mais membros na gestão de incidentes, a organização se torna mais resiliente, ágil e preparada para enfrentar os desafios do mundo digital. Uma equipe diversificada e engajada é fundamental para garantir a segurança e a disponibilidade dos sistemas, protegendo os dados da empresa e a satisfação dos clientes

Adicionando usuários à organização

  • Entre no menu “Users”.
  •  Clique em “New” para adicionar os usuários.
  • Adicione o e-mail, nome e sua role.
  • Clique em “Create User” e pronto! Usuários adicionados.

Usuários ainda não cadastrados

Para criar sua conta na One Platform, utilize um e-mail corporativo válido. Após o cadastro, você receberá um e-mail de convite contendo um link exclusivo para definir sua senha. É importante ressaltar que este link tem validade de 5 dias. Após este período, será necessário solicitar um novo convite.

Usuários com contas já configuradas na plataforma

Usuários já cadastrados na plataforma serão adicionados à nova organização sem a necessidade de criar uma nova conta ou ser notificado. A nova organização do usuário aparecerá assim que ele entrar na plataforma, na lista de organizações. Caso o usuário esteja em apenas uma organização, ele será direcionado à home desta organização diretamente após o login.

Editando usuário

Para editar clique no botão
Aqui você pode editar a role e ativar/desativar o usuário na organização.

Deletando usuário

  • Para remover o usuário da organização, clique no botão
  • Aparecerá um modal, confirme a exclusão clicando em Delete User.
 

Iniciando na Elven Platform

Bem-vindo à Elven Platform, sua solução completa para monitoramento, gestão de incidentes e Status Pages. Este guia foi elaborado para garantir que você não apenas entre na plataforma, mas tenha uma experiência excepcional desde o primeiro momento. Prepare-se para iniciar uma jornada que superará todas as suas expectativas!

Cadastro e Configuração Inicial

Cadastro da organização

  • Acesse Sign Up.
  • Preencha suas informações básicas utilizando um e-mail corporativo e clique em “Sign Up” .
  • Nomeie a sua organização, aceite os Terms and Conditions e clique em “Start Now”.
  • Confirme seu e-mail para ativar sua conta.

Conclusão do cadastro

  • Faça login na sua nova conta.
  • Entre no menu “Profile” e conclua o seu cadastro incluindo o seu nome e telefone.
  • Verifique seu telefone.

Convide sua equipe

  • Clique aqui para saber como adicionar membros em sua organização!

Explorando os principais módulos

A Elven Platform oferece três principais módulos, cada um projetado
para atender às necessidades únicas da sua organização. Confira abaixo
cada um deles e, se tiver alguma dúvida, nossa equipe está aqui para
ajudá-lo a escolher o módulo que melhor se adapta aos seus objetivos e
desafios específicos. Por aqui vamos encontrar a
solução ideal para você!

Módulo de Monitoramento

Solução proativa e personalizável para acompanhar a saúde e o desempenho dos sistemas e aplicativos.

  • Comece escolhendo o tipo de monitoramento e configure-o clicando aqui
  • Entenda a tela do recurso clicando aqui
  • Analise as métricas do recurso clicando aqui

Módulo de Gestão e Respostas a Incidentes

Em tempo real a Elven Platform, recebe o evento de alerta ou
incidente, aciona a escala de plantão, notifica nos canais de
comunicação e registra todas as interações dentro da plataforma até sua
resolução.

  • Comece configurando seu time clicando aqui
  • Escolha os canais que deseja ser notificado clicando aqui
  • Configure o call rotation clicando aqui
  • Entenda a tela de incidentes clicando aqui
  • Crie um postmortem do incidente clicando aqui

Módulo de Status Pages

Páginas de Status personalizadas para manter os usuários informados
sobre o status dos serviços ou aplicações via SMS ou Webhook, com uptime
de disponibilidade e histórico de incidentes.

  • Comece configurando sua a Status Page por aqui 
  • Mais informações sobre a Status Page aqui

Suporte e Melhoria Contínua

  • Explore nossa extensa base de conhecimento para encontrar respostas para suas perguntas mais comuns clicando aqui
  • Entre em contato com nossa equipe de suporte dedicada a qualquer momento para obter assistência eficiente por e-mail support@elvenworks.atlassian.net ou Ferramenta de abertura de chamados.

  • Envie-nos seu feedback e sugestões para contato@elven.works para melhorias contínuas.

Agora que você está pronto para começar, prepare-se para embarcar em
uma jornada de sucesso e confiabilidade sem precedentes com a Elven
Platform. Estamos honrados por você ter escolhido nossa plataforma e
estamos aqui para apoiá-lo em cada etapa do caminho.

Acknowledge em um Alerta ou Incidente

O que é o Acknowledge?

Em sistemas de monitoramento, o acknowledge é uma ação formal que confirma o recebimento e o conhecimento de um alerta específico por parte de um operador ou sistema. Isso significa que a equipe está ciente do incidente e está tomando as medidas necessárias para resolvê-lo. É como um registro digital que mostra quem e quando confirmou o alerta, facilitando o acompanhamento e a resolução de problemas.

Imagine que um servidor de banco de dados está sobrecarregado. Ao dar um acknowledge nesse alerta, o administrador confirma que está investigando a causa do problema e que tomará as medidas necessárias para solucioná-lo.

Essa ação simples, mas estratégica, oferece diversos benefícios:

  • Melhora na gestão de incidentes: ao confirmar o alerta, a equipe demonstra que está ciente do problema e que está trabalhando para resolvê-lo, otimizando o processo de atendimento;
  • Evita a perda de informações: o registro do acknowledge garante que nenhum alerta seja esquecido, evitando que problemas passem despercebidos.
  • Promove a colaboração: ao tornar visível o status de cada alerta, o acknowledge facilita a coordenação entre os membros da equipe, garantindo que todos trabalhem de forma sincronizada.
  • Aumenta a rastreabilidade: o histórico de acknowledges permite rastrear a evolução de cada incidente, facilitando a análise de causas e a identificação de padrões.

Ao medir o tempo médio para a ação do acknowledge (MTTA), podemos avaliar a rapidez com que a equipe responde a incidentes. Um MTTA baixo indica uma resposta ágil e eficiente, enquanto um MTTA elevado pode sinalizar problemas na comunicação ou na escalabilidade da equipe.

Monitorando o MTTA, é possível identificar gargalos e tomar medidas para melhorar o tempo de resposta da equipe, garantindo uma resolução mais rápida dos incidentes.

Em Alertas

Assim que recebemos um alerta, o call-rotation é ativado automaticamente enquanto o mesmo estiver com o status alarmed.

Para realizar a ação de acknowledge, siga os seguintes passos:

  • Abra as opções do alerta clicando nos três pontos.
  • Clique em “Acknowledge Alert”.
  • Confirme a ação clicando em “Acknowledge”.

Em Incidentes

Assim que recebemos um incidente, o call-rotation é ativado automaticamente enquanto o mesmo estiver com o status alarmed.

Para realizar a ação de acknowledge, siga os seguintes passos:

  • Abra o incidente clicando em seu nome.
  • Clique em “Acknowledge”.

Através de Notificações

Através da plataforma, podemos criar times e configurar canais de notificações para recebermos os alertas e incidentes, podendo nota-los com mais facilidade. Por essas notificações, é possível realizar a ação do acknowledge.

Abaixo estão demonstrações de como ocorre a ação do acknowledge em cada canal de notificação:

E-mail

Após receber a notifcação, clique no botão “Acknowledge” e ele te redirecionará até a página do incidente.

Telegram

Após receber a notifcação, clique no link em frente  a mensagem “Click to acknowledge incident” e ele te redirecionará até a página do incidente.

Slack

Diferente dos outros, ao clicar no botão “Acnowledge” em seu canal do Slack, ele não te redirecionará para a página do incidente, mas fará o acknowledge imediatamente, sem a necessidade de abrir a Elven Platform. 

Microsoft Teams

Após receber a notifcação, clique no botão “Click to acknowledge incident” e ele te redirecionará até a página do incidente.

Whatsapp

Após receber a notifcação, clique no link e ele te redirecionará até a página do incidente.

Google Chat

Após receber a notifcação, clique no link em frente  a mensagem “Click to acknowledge incident” e ele te redirecionará até a página do incidente.

Discord

Após receber a notifcação, clique no link em frente  a mensagem “Click to acknowledge incident” e ele te redirecionará até a página do incidente.

Insights

Insights fornece uma visão abrangente dos dados históricos de uma organização permitindo que a liderança tome decisões informadas para aprimorar a maturidade operacional. Encontrado no menu lateral, o Insights é composto pelas seguintes abas:  

Incidents

Incidents oferece uma visualização geral do esforço de resposta ao longo do tempo de cada incidente que aconteceu em uma organização. Você pode filtrar os incidentes de acordo com intervalo de datas, severidade e origem do incidente. 

  • Total Incidents: o total de incidentes que a organização enfrentou em um determinado período;
  • Total Response Effort: somatório total do tempo de envolvimento em um incidente, medido a partir do  acknowledge até sua resolução;
  • MTTA (Mean Time to Acknowledge): média de tempo para reconhecimento de um incidente; 
  • MTTR (Mean Time to Resolve): média de tempo desde o gatilho de um incidente até a sua resolução; 
  • Time Cluster: grupo correspondente ao período em que o incidente ocorreu: 
  • Business Hour Interruptions: interrupções que ocorreram de segunda a sexta-feira, entre 8h e 18h; 
  • Off Hour Interruptions: interrupções que ocorreram de segunda a sexta-feira entre 18h e 22h, ou durante o final de semana entre 18h e 22h; 
  • Sleep Hour Interruptions: interrupções que ocorreram em de segunda-feira a domingo entre 22h e 8h. 
  • TTA (Time to Acknowledge): quantidade de tempo entre o gatilho do incidente até o seu reconhecimento. 
  • TTR (Time to Resolve): tempo desde o gatilho do incidente até a sua resolução. 

Responders

Responders fornece insights sobre o impacto dos incidentes em seus responders, além de trazer dados sobre como foi a sua resolução. Ele também inclui uma lista individual de incidentes baseado em cada responder. Você pode filtrar esse dashboard de acordo com intervalo de datas, severidade, responders, time cluster e MTTR. 

  • Total Incidents: o total de incidentes que a organização enfrentou em um determinado período;
  • Total Response Effort: somatório total dos tempos de envolvimento dos responders com os incidentes, medido a partir do momento em que um responder dá o acknowledge até que o incidente seja resolvido; 
  • MTTA (Mean time to Acknowledge): média de tempo que um responder levou para o reconhecimento de um incidente; 
  • MTTR (Mean time to Resolve): média de tempo desde o gatilho de um incidente até o tempo sua resolução por um responder; 

Monitoring Performance

Monitoring Performance possibilita acompanhar e entender o desempenho de monitoramentos realizados pela One Platform em tempo real. Ela oferece uma visão de dados relacionados à saúde dos produtos digitais, permitindo que os usuários identifiquem rapidamente tendências, padrões e anomalias.

  • Downtime: tempo de inatividade dos monitoramentos;

  • Outages: quantas interrupções tiveram nos monitoramentos;
  • Uptime: Percentual de disponibilidade do recurso monitorado;
  • Maximum Response Time: tempo máximo de resposta (latência) do monitoramento;
  • Minimum Response Time: tempo mínimo de resposta (latência) do monitoramento;
  • Average Response Time: tempo médio de resposta (latência) do monitoramento;
  • Uptime per Day: Percentual de disponibilidade do recurso monitorado  em comparação aos dias;
  • Latency per  Hour

    : tempo de inatividade dos monitoramentos;

  • Top Downtime Resources: Recursos com maior tempo de inatividade, mostrando quantas horas cada recurso ficou indisponível.
  • Top AVG Latencies per Resources: Latência média por recurso, mostrando o tempo médio de resposta em milissegundos (ms) para cada recurso monitorado.

Dora Metrics

A aba de Dora Metrics propõem o acompanhamento de quatro métricas que indicam como anda o desempenho da equipe de operações e dos softwares desenvolvidos por uma empresa. Além de promover a confiabilidade de produtos digitais, por essa aba o nosso usuário poderá medir e aprimorar a maturidade de sua empresa.
  • Deployment Frequency: a métrica de frequência de implantação, avalia o número de deploys realizados em um período de tempo. Para calcular, meça a quantidade de implementações em um período previamente determinado.
  • Lead Time for Changes: essa métrica avalia o tempo desde o commit mais antigo em um merge até o momento do merge na branch de destino. A média simples dos últimos 30 dias é exibida. Para medir, avalie a data de início do teste e a data de implementação real.
  • Change Failure Rate: indica a taxa de falha das mudanças, calculada dividindo o número de hotfixes e rollbacks pelo número de deploys. Isso ajuda a equilibrar a métrica Deployment Frequency.
  • Mean Time to Recover: indica a média de tempo necessária para a equipe recuperar falhas e problemas que interrompem os sistemas e aplicações.
  • Change Failure Rate by Month: Mede a taxa de falhas das mudanças, calculada mensalmente, dividindo o número de hotfixes e rollbacks pelo número total de deploys realizados no mês.
  • MTTR by Month: Indica o tempo médio necessário para a equipe recuperar falhas e problemas críticos, calculado mensalmente.
  • Deploy Frequency by MonthAvalia a frequência de deploys realizados em um mês, ajudando a monitorar a cadência de entrega de mudanças.
  • Lead Time for Changes by MonthMede o tempo médio entre o commit mais antigo e o merge na branch de destino, calculado mensalmente para avaliar a eficiência do fluxo de trabalho ao longo do mês.
  • Deploy Frequency and Change Failure Rate by Day: Monitoramento diário da frequência de deploys e da taxa de falhas associadas a mudanças, para avaliar a agilidade na entrega e a qualidade das implementações.

Business Impact

Business Impact foi desenvolvido para fornecer uma análise do impacto financeiro causado por incidentes nos sistemas da empresa. Utilizando algoritmos avançados e dados em tempo real, ela calcula quanto cada minuto de inatividade pode custar para a organização, oferecendo uma visão clara e quantificável dos prejuízos potenciais. Na One Platform, o Business Impact calcula o custo estimado para a sua empresa resolver o incidente. O cálculo realizado é: Total Estimated Costs = Total Response Hours x Estimated Costs. É importante certificar-se de que o Business Impact contabiliza todas as equipes que estiveram  envolvidas em um incidente, ou seja, se duas pessoas (ou times) responderam ao mesmo incidente, o  tempo será considerado duas vezes.

Real-time Explorer

A aba Real-Time Explorer foi desenvolvida para fornecer uma visão detalhada e em tempo real do desempenho dos agents instalados nos ambientes dos nossos clientes. Esta funcionalidade permite a visualização instantânea de eventos de hits e failure, oferecendo uma compreensão aprofundada das operações em curso. Com esta ferramenta, é possível monitorar de forma contínua e precisa, identificando rapidamente quaisquer problemas, o que fortalece a confiabilidade e a performance dos sistemas monitorados. 

External Services Mongodb Atlas

Com o serviço externo Mongodb Atlas, recebemos dados em nossa API (Interface de Programação de Aplicações). Geramos uma URL que nos envia os dados podendo abrir um Alarme ou Incidente na plataform assim como um status Resolvido.

Temos duas opções:

  • Alert
  • Incident

Configuração Mongodb Atlas

No formulário, deve preencher o External service name e os Responders, que receberão notificações deste serviço, e em seguida clique em CREATE

Mais abaixo aparecerá as informações do seu External Service, solicitando que selecione um Api token.

Após selecionar o Api Token, as informações necessárias para configurar o External Service estão completas.

Configurando no Mongodb Atlas

Dentro do seu projeto no Atlas, acesse o menu à esquerda na sessão Databases e clique em Clusters.

No canto superior direito, clique no ícone de alerta, conforme indicado na imagem abaixo.

Selecione uma das opções para adicionar um novo alerta.

No modal que será aberto, configure como ira monitorar e, na opção 3, clique em Add Notification Method e selecione Webhook.

Insira a URL gerada pelo serviço externo da Elven no campo Webhook URL e clique em Save.

Elven Observability: Operator collector (instrumentação automática)

Para que possamos usar o auto-instrumentação devemos instalar o operator do collector

  • Dependencies

cert-manager

  • Instale o operator
				
					kubectl apply -f https://github.com/open-telemetry/opentelemetry-operator/releases/latest/download/opentelemetry-operator.yaml
				
			
  • Caso vá instrumentar aplicações Golang:
				
					kubectl -n opentelemetry-operator-system patch deployment opentelemetry-operator-controller-manager \
--type=json \
-p='[{"op": "add", "path": "/spec/template/spec/containers/0/args/-", "value": "--enable-go-instrumentation=true"}]'
				
			

Instale o collector

É uma prática recomendada enviar telemetria de contêineres para um OpenTelemetry Collector em vez de diretamente para um backend. O Collector ajuda a simplificar o gerenciamento de segredos, desacopla problemas de exportação de dados (como a necessidade de fazer novas tentativas) de seus aplicativos e permite que você adicione dados adicionais à sua telemetria, como com o componente k8sattributesprocessor . Se você optar por não usar um Collector, pode pular para a próxima seção.

https://opentelemetry.io/docs/kubernetes/operator/automatic/

Exemplo de configuracao

				
					apiVersion: opentelemetry.io/v1beta1
kind: OpenTelemetryCollector
metadata:
  name: otel
spec:
  config: 
    receivers:
      otlp:
        protocols:
          grpc:
          http:
    processors:
      memory_limiter:
        check_interval: 1s
        limit_percentage: 75
        spike_limit_percentage: 15
      batch:
        send_batch_size: 10000
        timeout: 10s
    exporters:
      otlp:
        endpoint: "tempo-distributor.domain.io:443"
        tls:
          insecure: false
          insecure_skip_verify: true
      prometheusremotewrite:
        endpoint: https://mimir-distributor.domain.io/api/v1/push
        headers:
          X-Scope-OrgID: <TENANT>          
    service:
      pipelines:
        metrics:
          receivers: [otlp] 
          processors: [batch]
          exporters: [prometheusremotewrite]
        traces:
          receivers: [otlp]
          processors: []
          exporters: [otlp]
				
			
  • Aplique o collector
				
					kubectl apply -k otel-collector-operator/
				
			

OpenTelemetry instrumentation

Para poder gerenciar a instrumentação automática, o Operator precisa ser configurado para saber quais pods instrumentar e qual instrumentação automática usar para esses pods. Isso é feito por meio do Instrumentation CRD.

Ex. Java

				
					apiVersion: opentelemetry.io/v1alpha1
kind: Instrumentation
metadata:
  name: instrumentation-sample
spec:
  propagators:
    - tracecontext
    - baggage
    - b3
  sampler:
    type: parentbased_traceidratio
    argument: "1"
  env:
    - name: OTEL_EXPORTER_OTLP_ENDPOINT
      value: otel-collector.monitoring:4318
  java:    
    env:
      - name: OTEL_EXPORTER_OTLP_ENDPOINT
        value: http://otel-collector.monitoring:4317 
				
			

Ex. DOTNET

				
					apiVersion: opentelemetry.io/v1alpha1
kind: Instrumentation
metadata:
  name: instrumentation-sample
spec:
  propagators:
    - tracecontext
    - baggage
    - b3
  sampler:
    type: parentbased_traceidratio
    argument: "1"
  env:
    - name: OTEL_EXPORTER_OTLP_ENDPOINT
      value: otel-collector.default:4318   
  dotnet:
    env:
      - name: OTEL_DOTNET_AUTO_METRICS_CONSOLE_EXPORTER_ENABLED
        value: "false"
      - name: OTEL_DOTNET_AUTO_TRACES_CONSOLE_EXPORTER_ENABLED
        value: "false"
      - name: OTEL_DOTNET_AUTO_LOGS_CONSOLE_EXPORTER_ENABLED
        value: "false"  
      - name: OTEL_EXPORTER_OTLP_ENDPOINT
        value: http://otel-collector.monitoring:4318
      - name: OTEL_TRACES_EXPORTER
        value: "true"
      - name: OTEL_METRICS_EXPORTER
        value: "true"
				
			

Adicionar anotações a implantações existentes

O passo final é optar por seus serviços para instrumentação automática. Isso é feito atualizando seus serviços spec.template.metadata.annotations para incluir uma anotação específica do idioma:

.NET: instrumentation.opentelemetry.io/inject-dotnet: “true”

Go: instrumentation.opentelemetry.io/inject-go: “true”

Java: instrumentation.opentelemetry.io/inject-java: “true”

Node.js: instrumentation.opentelemetry.io/inject-nodejs: “true”

Python: instrumentation.opentelemetry.io/inject-python: “true”

  • Aplicacao test usando auto-instrumentação JAVA

https://opentelemetry.io/docs/kubernetes/operator/automatic/

				
					kubectl apply -f - <<EOF
apiVersion: apps/v1
kind: Deployment
metadata:
  name: java-sample
spec:
  replicas: 1
  selector:
    matchLabels:
      app: java-sample
  template:
    metadata:
      labels:
        app: java-sample
      annotations:
        instrumentation.opentelemetry.io/inject-java: "true"
    spec:
      containers:
      - name: java-sample
        image: emr001/java-app
        ports:
        - containerPort: 8080
        env:
          - name: OTEL_SERVICE_NAME
            value: "java-demo"
---
apiVersion: v1
kind: Service
metadata:
  name: java-app
spec:
  selector:
    app: java-sample
  ports:
    - port: 8080
      protocol: TCP
      targetPort: 8080
---
apiVersion: opentelemetry.io/v1alpha1
kind: Instrumentation
metadata:
  name: instrumentation-sample
spec:
  propagators:
    - tracecontext
    - baggage
    - b3
  sampler:
    type: parentbased_traceidratio
    argument: "1"
  env:
    - name: OTEL_EXPORTER_OTLP_ENDPOINT
      value: otel-collector.monitoring:4318
  java:    
    env:
      - name: OTEL_EXPORTER_OTLP_ENDPOINT
        value: http://otel-collector.monitoring:4317
  dotnet:
    env:
      - name: OTEL_DOTNET_AUTO_METRICS_CONSOLE_EXPORTER_ENABLED
        value: "false"
      - name: OTEL_DOTNET_AUTO_TRACES_CONSOLE_EXPORTER_ENABLED
        value: "false"
      - name: OTEL_DOTNET_AUTO_LOGS_CONSOLE_EXPORTER_ENABLED
        value: "false"  
      - name: OTEL_EXPORTER_OTLP_ENDPOINT
        value: http://otel-collector.monitoring:4318
      - name: OTEL_TRACES_EXPORTER
        value: "true"
      - name: OTEL_METRICS_EXPORTER
        value: "true"              
EOF 
				
			

Execute um restart no deployment para o operator inserir o agent via init-container

				
					kubectl rollout restart deployment java-sample 
				
			

Faça um port-forward na porta 8080 e use o loop abaixo para enviar traces, metricas e logs

				
					kubectl port-forward svc/java-app 8080:8080
				
			

Vamos fazer um loop para enviar várias requests

				
					while true; do curl http://localhost:8080/api/hello && echo "" && sleep 1; done
				
			

Tracing Grafana

  • Aplicacao test usando auto-instrumentação DOTNET
				
					kubectl apply -f - <<EOF
apiVersion: apps/v1
kind: Deployment
metadata:
  name: dotnet-sample
spec:
  replicas: 1
  selector:
    matchLabels:
      app: dotnet-sample
  template:
    metadata:
      labels:
        app: dotnet-sample
      annotations:
        instrumentation.opentelemetry.io/inject-dotnet: "true"
    spec:
      containers:
      - name: dotnet-sample
        image: emr001/dotnet8-app:v1
        ports:
        - containerPort: 8080
        env:
          - name: OTEL_SERVICE_NAME
            value: "dotnet-demo"
---
apiVersion: v1
kind: Service
metadata:
  name: dotnet-app
spec:
  selector:
    app: dotnet-sample
  ports:
    - port: 80
      protocol: TCP
      targetPort: 8080
EOF
				
			

Execute um restart no deployment para o operator inserir o agent via init-container

				
					kubectl rollout restart deployment dotnet-sample 
				
			

Faça um port-forward na porta 8080 e use o loop abaixo para enviar traces, metricas e logs

				
					kubectl port-forward svc/dotnet-app 80:80
				
			

Vamos fazer um loop para enviar varias requests

				
					while true; do curl http://localhost/weatherforecast && echo "" && sleep 1; done
				
			
				
					while true; do curl http://localhost/error && echo "" && sleep 1; done
				
			

Dashboard Grafana

Elven Observability: Instrumentação de Lambda

Pré-requisitos 

Instrumentação

Sem Serverless Framework

Instrumentação realizada pelo console da AWS

Configurando as variáveis de ambiente

Vá até a Lambda, desça a página, clique na aba Configuration, selecione a seção Environment variables e clique em Edit.

Adicione as seguintes variáveis de ambiente clicando em Add Environment Variables:

				
					  AWS_LAMBDA_EXEC_WRAPPER="/opt/otel-handler" 
  OTEL_TRACES_SAMPLER="always_on" 
  OTEL_TRACES_EXPORTER="otlp" 
  OTEL_METRICS_EXPORTER="otlp" 
  OTEL_LOG_LEVEL="DEBUG" 
  OTEL_PROPAGATORS="tracecontext,baggage, xray" 
  OTEL_LAMBDA_TRACE_MODE="capture"

  OTEL_EXPORTER_OTLP_ENDPOINT="<EC2_URL_HERE>" 
  OTEL_SERVICE_NAME="<LAMBDA-NAME>"
  OTEL_RESOURCE_ATTRIBUTES="service.name=<LAMBDA_NAME>,environment=<ENVIRONMENT>" 
				
			

Somente as últimas três variáveis devem ser alteradas:

  • EC2_URL_HERE: o IP da EC2 ou o DNS caso tenha sido configurado
  • LAMBDA-NAME: o nome do serviço que aparecerá nos traces e métricas
  • ENVIRONMENT: dev, hml ou prd, o ambiente que está sendo instrumentado

Configurando a Layer de instrumentação

Na aba Code, desça até a seção Layers e clique em Add a Layer

Então, escolha a opção Specify an ARN e cole esse ARN:

arn:aws:lambda:us-east-1:184161586896:layer:opentelemetry-nodejs-0_9_0:4

Por fim, clique em Verify e então em Add

Com Serverless Framework

Feito no arquivo serverless.yaml na qual as lambdas são configuradas, como no exemplo abaixo:

Importante: a configuração deve ser feita para cada Function!

As configurações são as mesmas realizadas em Configurando as variáveis de ambiente e em Configurando a Layer de instrumentação.

				
					org: <ORG_NAME> 
app: <APP_NAME> 
service: <SERVICE_NAME> 

provider: 
  name: aws 
  runtime: nodejs20.x 

functions: 
  <LAMBDA_NAME_1>:
    handler: <HANDLER> 
    
    layers: 
      - arn:aws:lambda:us-east-1:184161586896:layer:opentelemetry-nodejs-0_9_0:4

    environment: 
      AWS_LAMBDA_EXEC_WRAPPER: "/opt/otel-handler" 
      OTEL_TRACES_SAMPLER: "always_on" 
      OTEL_TRACES_EXPORTER: "otlp" 
      OTEL_METRICS_EXPORTER: "otlp" 
      OTEL_LOG_LEVEL: "DEBUG" 
      OTEL_LAMBDA_TRACE_MODE: "capture" 
      OTEL_PROPAGATORS: "tracecontext,baggage, xray"

      OTEL_EXPORTER_OTLP_ENDPOINT: "<EC2_URL_HERE>" 
      OTEL_SERVICE_NAME: "<LAMBDA_NAME>" 
      OTEL_RESOURCE_ATTRIBUTES: "service.name=<LAMBDA_NAME>,environment=<ENVIRONMENT>" 
  <LAMBDA_NAME_2>:
    handler: <HANDLER> 
    
    layers: 
      - arn:aws:lambda:us-east-1:184161586896:layer:opentelemetry-nodejs-0_9_0:4

    environment: 
      AWS_LAMBDA_EXEC_WRAPPER: "/opt/otel-handler" 
      OTEL_TRACES_SAMPLER: "always_on" 
      OTEL_TRACES_EXPORTER: "otlp" 
      OTEL_METRICS_EXPORTER: "otlp" 
      OTEL_LOG_LEVEL: "DEBUG" 
      OTEL_LAMBDA_TRACE_MODE: "capture" 
      OTEL_PROPAGATORS: "tracecontext,baggage, xray"

      OTEL_EXPORTER_OTLP_ENDPOINT: "<EC2_URL_HERE>" 
      OTEL_SERVICE_NAME: "<LAMBDA_NAME>" 
      OTEL_RESOURCE_ATTRIBUTES: "service.name=<LAMBDA_NAME>,environment=<ENVIRONMENT>"
				
			

Feito isso, é só realizar o deploy.

Elven Observability: Instalando OpentTelemetry Collector em uma EC2

Pré-requisitos

  • Conta AWS
  • Organization cadastrada na Elven Observability

Configure a EC2

Caso necessite configurar uma EC2, verifique a documentação da AWS, porém antes de concluir a criação, certifique-se de:

  • Realizar a configuração do User Data, conforme a ceção Configurando o User Data da EC2
  • Habilitar tráfego de entrada para TCP 4318 e TCP 4317 no security group.
  • Habilitar o IP público.

Configurando o User Data da EC2

Para automatizar a configuração do OpenTelemetry Collector, isto é, não precisar se conectar na máquina e realizar cada passo  manualmente, é possível utilizar o campo de “User Data” que será um script executado ao inicializar a máquina.

  1. Crie uma cópia do script user_data.sh, e edite-a, substituindo o <TENANT_ID> pelo nome da organização, que será igual ao valor em X-Scope-OrgId: <TENANT_ID-here> e <YOUR-TOKEN> pelo valor em Authorization: Bearer <YOUR-TOKEN-here>, ambos fornecidos ao realizar o cadastro da organization pelo time da Elven Works.

  2. Copie o script editado dentro do campo User Data, na seção Advanced Details durante a criação da EC2:

				
					#!/bin/bash

# Update packages and install Docker
apt-get update -y
apt-get install docker.io -y

# Add the ubuntu user to the docker group
usermod -aG docker $USER

# Create the otel-config.yaml file
cat <<EOF > /home/ubuntu/otel-config.yaml
receivers:
  otlp:
    protocols:
      grpc:
        endpoint: "0.0.0.0:4317"
      http:
        endpoint: "0.0.0.0:4318"

exporters:
  otlphttp:
    endpoint: https://tempo.elvenobservability.com/http
    headers:
      X-Scope-OrgID: "<TENANT_ID>"
      Authorization: "Bearer <your-token>"

  prometheusremotewrite:
    endpoint: https://mimir.elvenobservability.com/api/v1/push
    headers:
      X-Scope-OrgID: "<TENANT_ID>"
      Authorization: "Bearer <your-token>"

  loki:
    endpoint: "http://loki.elvenobservability.com/loki/api/v1/push"
    default_labels_enabled:
      exporter: false
      job: true
    headers:
      X-Scope-OrgID: "<TENANT_ID>"
      Authorization: "Bearer <your-token>"

processors:
  batch: {}
  resource:
    attributes:
    - action: insert
      key: loki.tenant
      value: host.name
  filter:
    metrics:
      exclude:
        match_type: regexp
        metric_names:
          - "go_.*"
          - "scrape_.*"
          - "otlp_.*"
          - "promhttp_.*"

service:
  pipelines:
    metrics:
      receivers: [otlp]
      processors: [batch, filter]
      exporters: [prometheusremotewrite]
    traces:
      receivers: [otlp]
      processors: [batch]
      exporters: [otlphttp]
    logs:
      receivers: [otlp]
      processors: [resource, batch]
      exporters: [loki]
EOF


# Run Otel Collector Contrib using Docker
docker run -d --name otel-collector-contrib \
  -p 4317:4317 -p 4318:4318 \
  -v /home/ubuntu/otel-config.yaml:/etc/otel-config.yaml:ro \
  otel/opentelemetry-collector-contrib:latest \
  --config /etc/otel-config.yaml

# Configure Docker to automatically start on boot
sudo systemctl enable docker 
				
			

 Elastic Search

O Conector do Elastic search  possibilita que o environmnet execute a verificação do serviço utilizando o Host fornecido.
O environment faz uma solicitação  realizada no endpoint /_cluster/healt e registrará o resultado como um Operacional ou  Not Operacional, conforme os dados obtidos dentro do intervalo de tempo predefinido.
 
  •  Criando o monitoramento
  •  Open automatic incident

Criando o monitoramento

Para criar o monitomante apos clicar no card em service hub prencha o formulario

 

  • Resource Name: Nome da configuração de monitoramento.
  • Interval: Frequência da checagem do recurso.
  • Timeout: Tempo limite da checagem.
  • Checkpoint: Escolha o enviroment configurado.
  • Monitoring Type:
    • No Auth: sem autenticação
    • User and Password: autenticação por meio de usuário e senha
    • Api Key: autenticação via API key(Encoded).
  • Protocol: HTTPS ou HTTP.
  • Host: IP ou domínio do ElasticSearch.
  • Port: Porta do serviço ElasticSearch.
  • Index: (Opcional) Nome do índice ou deixe em branco para checar a saúde do cluster.

Open automatic Incident

Permite configurar a abertura automática de incidentes em caso de falha no monitoramento.

 
  • Severity: Existem cinco níveis de severidade disponíveis.
  • Failures for automatic incident creation: Refere-se à quantidade de falhas necessárias para acionar a abertura do incidente automático.
  • Check interval (in seconds): Define o período entre as checagens. É importante ressaltar que esse intervalo não pode ser inferior ao produto do número de hits pelo intervalo configurado no formulário de monitoramento.
  • Hits to close automatic incident: Indica o número de hits necessários para a resolução do incidente automático.
  • Responders: Refere-se às equipes que serão notificadas em caso de incidentes relacionados a este monitoramento, sendo possível adicionar uma ou mais equipes.

Para assegurar que o  esteja habilitado, ao salvar, certifique-se de que o campo Enable to se up automatic incidents opening esteja selecionado.

Rolar para cima