Abaixo, há um exemplo de script para monitoramento simples,
pressionando 1 ou 2 para enviar OK ou Failure. O objetivo deste exemplo é
apenas demonstrar como as chamadas devem ser feitas para o
monitoramento, via webhook, criado pela plataforma.

 

O script coleta os dados na sua aplicação ou dependência, interpreta
os resultados e os entrega para a plataforma de acordo com as instruções
de “Hits and Failures” do box apresentada na página da sua aplicação
registrada na plataforma.

 

Exemplo:

				
					#!/bin/bash

echo "Failure ou OK?"
echo "1. Failure"
echo "2. OK"
read status
echo "-------------"

token=`curl --request POST \
--url https://apis.elven.works/external/auth/v1/client/<Your Company URL> \
--header 'Content-Type: application/json' \
--data '{
"client_id": "<YOUR INFORMATION HERE>",
"client_secret": "<YOUR INFORMATION HERE>" }' | sed 's/{"access_token":"//g' | sed 's/","expires_in":300,"token_type":"Bearer"}//g'`


if [ $status == 2 ]; then
echo "OK"
curl -X POST -H 'Content-type: application/json' -H "Authorization: Bearer $token " https://apis.elven.works/external/monitoring/v1/hits --data '{"latency": 100000, "service": <YOUR SERVICE ID HERE>, "organization": "<YOUR ORGANIZATION ID HERE>"}'
fi

if [ $status == 1 ]; then
echo "Failure"
curl -X POST -H 'Content-type: application/json' -H "Authorization: Bearer $token " https://apis.elven.works/external/monitoring/v1/failures --data '{"issue": "<Your message>", "service": <YOUR SERVICE ID HERE>,"organization": "<YOUR ORGANIZATION ID HERE>"}'
fi
				
			

Adequado para Python 3 ou superior, o exemplo abaixo é de script para
monitoramento simples, pressionando 1 ou 2 para enviar OK ou Failure.

 

O objetivo deste exemplo é apenas demonstrar como as chamadas devem
ser feitas para o monitoramento, via webhook, criado pela plataforma.

 

Exemplo:

				
					import requests

print('FAILURE OR OK?')


print('TYPE 1 FOR FAILURE')


print('TYPE 2 FOR OK')


status = int(input('SELECT 1 OR 2:'))


choice = status


print('---', 'the option to be performed is: ', choice, '---')


token_headers = {'Content-Type': 'application/json'}


token_url = 'https://apis.elven.works/external/auth/v1/client/<Your Company ID>'


token_payload = {


'client_id': '<YOUR INFORMATION HERE>',


'client_secret': '<YOUR INFORMATION HERE>'


}


req_token = requests.post(


url=token_url,


json=token_payload,


headers=token_headers


)


token = req_token.json()['access_token']


req_headers = {'Content-Type': 'application/json',


'Authorization': 'Bearer ' + token}


req_url = 'https://apis.elven.works/external/auth/v1/client/<Your Company ID>'


req_payload = {'service': <YOUR SERVICE ID HERE> ,


'organization': '<YOUR ORGANIZATION ID HERE>'}


if (status == 2):


print("HITS")


hits_latency = {'latency': 100000}


req_payload.update(hits_latency)


hits = requests.post(


url=req_url + 'hits',


json=req_payload,


headers=req_headers


)


print(req_payload)


print(hits.json())


if (status == 1):


print("failures")


failures_issue = {'issue': 'Error message'}


req_payload.update(failures_issue)


hits = requests.post(


url=req_url + 'failures',


json=req_payload,


headers=req_headers


)


print(req_payload)


print(hits.json())
				
			

Há um exemplo abaixo de script para monitoramento simples, pressionando 1 ou 2 para enviar OK ou Failure.

O objetivo deste exemplo é apenas demonstrar como as chamadas devem
ser feitas para o monitoramento, via webhook, criado pela plataforma.

Exemplo:

				
					Write-Output("FAILURE OR OK?")

Write-Output("TYPE 1 FOR FAILURE")

Write-Output("TYPE 2 FOR OK")



$status = Read-host "SELECT 1 OR 2 "


Write-Output("---","the option to be performed is: ", $status, "---")

$headers=@{}

$headers.Add("content-type", "application/json")

$response = Invoke-WebRequest -Uri 'https://apis.elven.works/external/auth/v1/client/<Your Company URL>' `

-Method POST `

-Headers $headers `

-ContentType 'application/json' `



-Body '{"client_id": "<YOUR INFORMATION HERE>","client_secret": "<YOUR INFORMATION HERE>"}'

$StatusCode = $Response.StatusCode 

Write-Output "Get Token 1P - código resposta: $StatusCode" 

$token = ($response.Content | ConvertFrom-Json).access_token

$Date = Get-Date

$headers.Add("authorization", "Bearer $token")

$invoke_headers =@{

authorization = "Bearer $token"

}

$invoke_headers.Add("content-type", "application/json")


if($status -eq 2)

{

Write-Output("HITS")

$HITS = Invoke-WebRequest -Uri 'https://apis.elven.works/external/monitoring/v1/hits' `

-Method POST `

-Headers $invoke_headers `

-ContentType 'application/json' `

-Body '{"latency": 100000, "service": <YOUR SERVICE ID HERE>, "organization": "<YOUR ORGANIZATION ID HERE>"}'

Write-Output("$HITS")

}

if($status -eq 1)

{

Write-Output("FAILURE")

$FAILURE = Invoke-WebRequest -Uri 'https://apis.elven.works/external/monitoring/v1/failures' `

-Method POST `

-Headers $invoke_headers `

-ContentType 'application/json' `

-Body '{"issue": "ERROR MESSAGE", "service": <YOUR SERVICE ID HERE>, "organization": "<YOUR ORGANIZATION ID HERE>"}'

Write-Output($FAILURE)

}
				
			

Feito de forma sintética, com script, o Synthetic Monitoring testa, continuamente, a disponibilidade de um HTTP, alertando imediatamente assim que houver falhas. A One Platform detecta, de acordo com as regras dos usuários, qualquer tipo de problema em seu produto digital antes que eles afetem seus clientes, garantindo sua disponibilidade e confiabilidade.

Configurando o Synthetic Monitoring

Para configurar o Synthetic Monitoring, clique em Synthetic no menu lateral esquerdo da plataforma.

Após abrir o Synthetic Monitoring Center, onde listará todos os seus monitoramentos do tipo sintéticos, clique em “New Synthetic Monitoring” para adicionar um monitoramento.

No primeiro momento, você precisa:

1) Escolher o nome do monitoramento e o Enviroment. Caso queira criar um enviroment através desta página, clique em “+ Enviroment”
que você será direcionado para a tela de criação. Quando terminar a
criação, clique no símbolo de reload para o enviroment aparecer na
listagem.

2) Após a configuração do environment, escolha o intervalo de checagem no Interval check.

3) Em Response Template, conhecendo qual vai ser a resposta do Step, você pode colocar essa resposta no campo para gerar variáveis. Clicando em “Generate Keys”, a plataforma irá gerar variáveis para serem usados nos requests em qualquer dos steps. Clicando nas variáveis, ela já será copiada para a área de transferência.

Configurando os steps

Após o primeiro momento, você irá
configurar as etapas customizáveis de como deseja que sua página ou APIs
Web sejam monitoradas.

Para isso, nas configurações das etapas:

1) Escolha o nome de cada etapa, a URL de Healthcheck e o Timeout.

Obs.: Por motivos de segurança,
não é permitido inserir um IP no campo de healthcheck. Para monitorar um
IP, é necessário inserí-lo em uma secret e usá-la no healthcheck

2) Escolha qual será o método, se é GET ou Post, selecione o Skip SSL Validation, para ignorar a existência do certificado de SSL, e escolher o TLS Renegotiation, caso exija o protocolo de segurança. No caso de método Post, selecione o Post-Body Type entre as opções Raw ou “application/x-www-form-undecoded”. No caso do Raw, selecione o Raw Type (JSON, Text, Javascript, XML ou HTML) e preencha o Post Body conforme o Raw Type escolhido. Caso seja “application/x-www-form-undecoded”, preencha com a chave e valor, caso queria configurar mais de uma chave, clique no botão de mais (+) ao lado.  

3) Clique em “Optional request” para configurar um Header onde você pode colocar a Validation String, os Headers e Values. Caso queria configurar mais de um Header, clique no botão de mais (+) ao lado.

Assertions

Aqui você definirá qual deverá ser o retorno da requisição.

1) No campo Source, escolha a fonte entre JSON Body, Status Code e Text Body (Preencha o campo Property, se a escolha for JSON Body).

2) Escolha uma das opções disponíveis em Comparison.

3) defina o Target Value.

Exemplos de configuração do Assertions:

As variáveis geradas pelo Response Template podem ser usada na URL, nos Headers ou nos Post Body/application/x-www-form-undecoded.

1) Para utiliza-las no Value, você precisa adiciona-la no campo da mesma forma como foi gerada. 

 

2) Para utilizar uma variável na URL, você precisa adiciona-la à URL que será checada.

3) Para utilizar uma variável no Post Body, basta adicionar como valor.

 

Caso deseje mais de duas etapas de monitoramento, clique no botão “Add Step” no final da etapa de configuração dos steps

 

Após a configuração das etapas,
caso queira, você pode configurar a abertura de um incidente automático.
Selecione a severidade do incidente, o tempo de intervalo de checagem
no Check Interval in seconds (…) para fechar e abrir incidentes, e a quantidade de falhas e hits para, também, abrir e fechar um incidente. 

Após a configuração do incidente, escolha qual o time que será notificado e habilite a chave “Enable to set up automatic incidents opening” para ser notificado quando houver incidente.

Após todas essas configurações, clique em “Create monitoring” para criar o monitoramento sintético.

Para editar ou deletar seu monitoramento, clique no botão com três pontos para realizar uma das duas ações.

Mais abaixo, vemos a sessão de Event History, onde temos uma time line dos incidentes abertos neste monitoramento

Podemos filtrar pelo Status ou severidade do incidente

E também o período (pré estabelecido ou customizado)

Clicando em View more details, será encaminhado ao incidente em questão

Em um cenário tecnológico dinâmico, onde a eficiência operacional é crucial, os agentes desempenham um papel vital na coleta e transmissão de informações relevantes para o monitoramento e manutenção de sistemas. Este artigo explora o tráfego gerado pelos agentes (hits, failures e logs). Estes são não apenas indicadores fundamentais de desempenho, mas também peças-chave na investigação e resolução de incidentes.

Nos agentes da ElvenWorks trafegam:

  • Hits – representam interações bem-sucedidas entre o agente e o ambiente em que está integrado
  • Failures – destacam as interações malsucedidas ou anomalias detectadas pelo agente
  • Logs – registro de eventos, operações e informações cruciais. 

Nos logs do agente ElvenWorks são apresentados a seguintes informações:

  • id – número identificador do agente
  • application_id – número identificador da aplicação em que o agente bateu
  • addon_id – número identificador da dependência em que o agente bateu
  • incident_id – número identificador de quando um incidente é aberto pelo agente em questão
  • org_uid – número identificador da organização em que o agente está batendo
  • created_at – data em que o incidente foi aberto pelo agente em questão
  • updated_at – data da última atualização no incidente aberto pelo agente em questão
  • origin_entity – identifica o tipo de monitoria (interna, externa, multiflow, synthetic, etc…)
  • type – tipo da interação (resolved ou alarmed)
  • version – versão em que o agente instalado está

Essas informações são essenciais na investigação de incidentes, fornecendo informações contextuais que ajudam a entender a sequência de eventos que levaram a uma situação indesejada. As informações dos logs são retidas por 15 dias.

Primeiro, você precisa definir o provedor de cloud, então, no menu à
esquerda, clique em
Clouds e depois no botão New, localizado no
canto superior direito. Selecione o provedor de cloud de acordo com as
opções:
AWS, Azure ou Custom. Assim que selecionar o provedor que você
deseja, de acordo com suas necessidades, mais configurações aparecerão.

Configuração AWS: 


Configuração Azure: 


 
Após preencher as informações solicitadas de cada provedor, nomeie a cloud que está configurando. O nome da cloud não precisa ter um nome associado ao seu monitoramento.

A plataforma da ElvenWorks te dá a possibilidade de usar diversos
provedores de cloud, além daqueles mais usados pelo mercado, como AWS e
Azure. Para poder utilizar um de sua preferência, já customizado, você
deve, primeiro, fazer o setup da cloud dentro da plataforma, seguindo o
tutorial abaixo.

Na barra lateral à esquerda, clique em “Clouds” e no canto superior
direito, clique no botão “NEW”. No campo “Cloud Provider”, selecione a
opção Custom e defina um nome para a cloud que você está configurando. O
nome da cloud não precisa ser necessariamente associado a cloud do seu
produto digital. Depois de dar o nome, clique em “Save” para terminar o
registro da sua cloud.


Para criar uma policy da AWS na plataforma, você precisa, primeiro, entrar no Console da AWS, através do link, criar uma nova policy clicando em “Create policy” e copiar e colar o código abaixo.

 

Policy Content

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowRunInstances",
"Effect": "Allow",
"Action": "ec2:RunInstances",
"Resource": [
"arn:aws:ec2:*::image/*",
"arn:aws:ec2:*::snapshot/*",
"arn:aws:ec2:*:*:subnet/*",
"arn:aws:ec2:*:*:network-interface/*",
"arn:aws:ec2:*:*:security-group/*",
"arn:aws:ec2:*:*:key-pair/*"
]
},
{
"Sid": "AllowEc2WithRestrictions",
"Effect": "Allow",
"Action": [
"ec2:CreateVolume",
"ec2:RunInstances"
],
"Resource": [
"arn:aws:ec2:*:*:volume/*",
"arn:aws:ec2:*:*:instance/*"
],
"Condition": {
"StringEquals": {
"aws:RequestTag/Owner": "1p-agent"
},
"ForAllValues:StringEquals": {
"aws:TagKeys": [
"Owner",
"Name",
"Environment"
]
}
}
},
{
"Sid": "AllowFunctionsWithRestrictions",
"Effect": "Allow",
"Action": [
"ec2:TerminateInstances",
"ec2:StopInstances",
"ec2:RebootInstances",
"ec2:StartInstances",
"ec2:DeleteSecurityGroup",
"ec2:AuthorizeSecurityGroupEgress",
"ec2:AuthorizeSecurityGroupIngress",
"ec2:RevokeSecurityGroupIngress",
"ec2:RevokeSecurityGroupEgress",
"ec2:UpdateSecurityGroupRuleDescriptionsIngress",
"ec2:UpdateSecurityGroupRuleDescriptionsEgress"
],
"Resource": [
"arn:aws:ec2:*:*:instance/*",
"arn:aws:ec2:*:*:security-group/*"
],
"Condition": {
"StringEquals": {
"ec2:ResourceTag/Owner": "1p-agent"
}
}
},
{
"Sid": "AllowFunctions1p",
"Effect": "Allow",
"Action": [
"ec2:CreateTags",
"ec2:CreateSecurityGroup",
"ec2:Describe*",
"rds:Describe*",
"elasticache:Describe*",
"cloudwatch:ListMetrics",
"cloudwatch:GetMetricStatistics"
],
"Resource": "*"
},
{
"Sid": "Manage1pAccessKeys",
"Effect": "Allow",
"Action": [
"iam:get*"
],
"Resource": "arn:aws:iam::*:user/${aws:username}"
},
{
"Sid": "SsmAllRegionsToAMis",
"Effect": "Allow",
"Action": "ssm:*",
"Resource": [
"arn:aws:s3:::*",
"arn:aws:ssm:*:*:opsmetadata/*",
"arn:aws:ec2:*:*:instance/*",
"arn:aws:ssm:*:*:parameter/*"
]
}
]
}

Após criar a policy, vá até ao IAM Service,
com o Console da AWS e crie um usuário chamado 1p-agent. Clique em
“Policy actions” e em “Attach” e anexe a policy no usuário 1p-agent.

 

Essa policy permite:

  • EC2 provisiona, controla e administra instances com TAG “1P”. Nosso agent não usa Keypair.

  • RDS, Elasticache, EC2, IAM, Cloudwatch e S3 in list and get requests types

  • EKS Full Access (Opcional)


Como instalar seu agent custom

No menu lateral, clique em Environment.

Clique em New, selecione a Cloud, preencha o Name e Tag. Então clique em Save.

Clique no ícone 

Selecione a aba Operational System então selecione dentre os sistemas operacionais disponíveis (Amazon Linux, CentOS 7 and 8 ou Ubuntu) qual queira instalar o agent

Após selecionar o sistema, aparecerá um box, contendo o código designado pela plataforma para instalação na cloud customizada selecionada. É necessário que o GitHub esteja instalado no sistema operacional. Copie e cole o código no sistema desejado e, assim que a instalação estiver concluída, continue a configuração do monitoramento.

Como atualizar o agent custom

Caso precise atualizar o agent, execute os comandos abaixo, assim será atualizado para a versão atual.

				
					sudo su -
cd agent-custom
./setup.sh --update
				
			

No menu lateral, clique em Environment.


Clique em New, selecione a Cloud, preencha o Name e Tag. Então clique em Save.


Clique no ícone 


Selecione a aba Kubernetes.


Existem dois tipos de opções de atualização quando o agent é instalado através
do Kubernetes: Auto update (onde o agent é atualizado automaticamente) e Manual update (onde o agent não é atualizado automaticamente). 

Escolha uma das duas opções de atualização e assim que selecionar a opção desejada, aparecerá um box contendo o Yaml designado pela plataforma. Copie o Yaml, faça o deploy no Kubernetes e o agent será instalado.


 

Assim que a instalação estiver concluída, continue a configuração do monitoramento.

Rolar para cima