Extraindo métricas de uma instância do Monitoring usando a API de Monitoramento
Você pode extrair métricas de uma instância IBM Cloud Monitoring usando a API Monitoring.
Obter métricas usando cURL
É possível usar o comando cURL a seguir para obter métricas:
curl -X POST <SYSDIG_REST_API_ENDPOINT>/data -H "Authorization: $AUTH_TOKEN" -H "IBMInstanceID: $GUID" -H "SysdigTeamID: $TEAM_ID" -H "content-type: application/json" -d DATA
em que
-
<SYSDIG_REST_API_ENDPOINT>indica o terminal de destino pela chamada de API de REST. Para obter mais informações, consulte Monitorando terminais da API de REST. Por exemplo, o terminal público para uma instância que está disponível em us-south é o seguinte:https://us-south.monitoring.cloud.ibm.com/api -
É possível transmitir vários cabeçalhos usando
-H.AuthorizationeIBMInstanceIDsão cabeçalhos que são necessários para autenticação.SysdigTeamIDé opcional. Ao especificar esse cabeçalho, é possível limitar a solicitação aos dados e aos recursos disponíveis para a equipe especificada.Para obter um
AUTH_TOKENe oGUID, consulte Cabeçalhos para tokens do IAM. -
É possível transmitir o arquivo
metrics.jsonpara extrair métricas usando-d, por exemplo,-d @metrics.json.
A amostra a seguir mostra um modelo para o arquivo metrics.json:
{
"start": "Number: seconds",
"end": "Number: seconds",
"last": "Number: last available seconds",
"metrics": [
{
"id": "<>",
"aggregations": {}
}
],
"sampling": "Number: <10|60|600|3600|86400>",
"dataSourceType": "<host|container>",
"filter": "<>",
"paging": {
"from": "Number",
"to": "Number"
}
}
Dicionário de métricas
Para ver as métricas predefinidas pelo Sysdig, consulte Dicionário de métricas.
Para ver as métricas predefinidas que são definidas por serviços IBM Cloud que são ativados por Sysdig, consulte Serviços de nuvem.
Agregação de dados
Para saber mais sobre agregação de dados, consulte Agregação de dados.
Amostra: extrair métricas da plataforma
Este exemplo mostra como extrair métricas de plataforma do Cloud Foundry em us-south para as últimas 24 horas.
curl -X POST https://us-south.monitoring.cloud.ibm.com/api/data -H "Authorization: Bearer $AUTH_TOKEN" -H "IBMInstanceID: $GUID" -H "content-type: application/json" -d @metrics.json
O exemplo a seguir do arquivo metrics.json mostra como configurar o arquivo para extrair dados por ID da instância, a idade do contêiner do app e o número de bytes que o app está usando:
{
"metrics": [
{
"id": "ibm_resource"
},
{
"id": "ibm_cloudfoundry_app_container_age",
"aggregations": {"group": "max", "time": "max"}
},
{
"id": "ibm_cloudfoundry_app_memory_bytes_used",
"aggregations": {"group": "avg", "time": "avg"}
}
],
"filter": "ibm_location = \"us-south\"",
"sampling": 86400,
"last": 86400
}
O resultado para a extração de dados retorna as informações a seguir:
{
"data": [
{
"d": [
"73a9d202-7e97-45b2-a107-3b1528856be3",
316660942465643,
18809015.575
],
"t": 1587772800
}
],
"end": 1587772800,
"start": 1587686400
}
Amostra: extrair dados da CPU
Este exemplo mostra como extrair dados da CPU por host com o início, o término e o limite de amostragem.
O exemplo a seguir do arquivo metrics.json mostra como configurar o arquivo para extrair dados da CPU:
{
"start":"1555404790",
"end":"1555404850",
"sampling": 10,
"metrics": [
{
"id": "host.hostName"
},
{
"id": "cpu.used.percent",
"aggregations": {"time": "avg"}
}
],
"dataSourceType": "host"
}
O resultado para a extração de dados retorna as informações a seguir:
{
"data": [
{
"d": [
"j-rhel71.fyre.ibm.com",
3.621
],
"t": 1555404800
},
{
"d": [
"j-rhel71.fyre.ibm.com",
3.597
],
"t": 1555404810
},
{
"d": [
"j-rhel71.fyre.ibm.com",
3.993
],
"t": 1555404820
},
{
"d": [
"j-rhel71.fyre.ibm.com",
3.145
],
"t": 1555404830
},
{
"d": [
"j-rhel71.fyre.ibm.com",
4.09
],
"t": 1555404840
},
{
"d": [
"j-rhel71.fyre.ibm.com",
5.057
],
"t": 1555404850
}
],
"end": 1555404850,
"start": 1555404790
}
Amostra: a amostra cURL para extrair a métrica mais recente
Para obter o valor mais recente de uma métrica, especifique somente o nome da métrica. O valor mais recente que foi gerado em menos de cinco minutos atrás foi retornado.
Por exemplo, para obter o valor mais recente de host_cpu_used_percent:
curl <SYSDIG_REST_API_ENDPOINT>/prometheus/api/v1/query?query=sysdig_host_cpu_used_percent -H "Authorization: $AUTH_TOKEN" -H "IBMInstanceID: $GUID" -H "SysdigTeamID: $TEAM_ID" -H "content-type: application/json"
em que
-
<SYSDIG_REST_API_ENDPOINT>indica o terminal de destino pela chamada de API de REST. Para obter mais informações, consulte Monitorando terminais da API de REST. Por exemplo, o terminal público para uma instância que está disponível em us-south é o seguinte:https://us-south.monitoring.cloud.ibm.com/api -
É possível transmitir vários cabeçalhos usando
-H.AuthorizationeIBMInstanceIDsão cabeçalhos que são necessários para autenticação.SysdigTeamIDé opcional. Ao especificar esse cabeçalho, é possível limitar a solicitação aos dados e aos recursos disponíveis para a equipe especificada.Para obter um
AUTH_TOKENe oGUID, consulte Cabeçalhos para tokens do IAM.
Todos os painéis suportam a API PromQL completa. Para obter mais informações sobre o que é possível fazer com o PromQL,, consulte a documentação do Prometheus.
Amostra: amostra de cURL para extrair dados da CPU para uma equipe
Este exemplo mostra como extrair dados da CPU disponíveis dentro do contexto de uma equipe.
curl -X POST https://us-south.monitoring.cloud.ibm.com/api/data -H "Authorization: Bearer $AUTH_TOKEN" -H "IBMInstanceID: $GUID" -H "SysdigTeamID: 30785" -H "content-type: application/json" -d @metrics.json
Amostra: Extrair métrica de Monitoring para Event Streams
É possível usar o exemplo de código a seguir para extrair métricas de sua instância do Monitoring para o Event Streams.
- Substitua
<region>pela região de sua instância Monitoring, comous-east. - Substituir
<apikey>com umIBM CloudToken de chave da API IAM. - Substitua
<instance_id>pelo ID de sua instância Monitoring. - Substitua o campo de
metricscom a matriz de métricas do JSON que você deseja extrair. O exemplo de métrica écpu.cores.used.
from sdcclient import IbmAuthHelper, SdMonitorClient
endpoint = "https://<region>.monitoring.cloud.ibm.com"
apikey = "<apikey>"
instanceID = "<instance_id>"
ibm_headers = IbmAuthHelper.get_headers(endpoint, apikey, instanceID)
sdclient = SdMonitorClient(sdc_url=endpoint, custom_headers=ibm_headers)
metrics = [
{
"id": "cpu.cores.used",
"aggregations": {
"time": "avg",
"group": "sum"
}
}
]
filter = None
start = -120
end = 0
sampling = 60
ok, res = sdclient.get_data(metrics, start, end, sampling, filter=filter, datasource_type = "container")
print(ok)
print(res)
return res
Amostra: Extraia notificações de Monitoring para Event Streams com a Event Streams API de REST
-
Crie uma Event Streams instância.
- A partir dos planos de preços, selecione um Plano Enterprise.
- Se necessário, configure uma autorização no IAM para Event Streams para direcionar um provedor de KMS, como Key Protect, e atualize a página.
- Para o Terminal de serviço, selecione uma opção com uma rede Privada.
-
Espere alguns minutos até que sua Event Streams instância seja provisionada.
-
Em sua Event Streams instância, crie um tópico, como
kafka-java-console-sample-topic. -
Crie uma chave de serviço para servir de credenciais para a sua Event Streams instância no terminal de serviço em nuvem privada.
<name>: Digite um nome para a chave de serviço.<event_streams_instance>: Substitua pelo nome de sua instância Event Streams.
ibmcloud resource service-key-create <name> Writer --instance-name <event_streams_instance> --service-endpoint private -
Na saída do comando anterior, obtenha os detalhes que você precisa para fazer uma chamada de REST.
api_keykafka_http_url
Saída de exemplo:
api_key: 123465123456123465123465123465123465 kafka_http_url: https://mh-<id>.private.us-south.messagehub.appdomain.cloud -
No painel Monitoring, clique em Open dashboard (Abrir painel) para a instância Monitoring que você deseja usar.
-
Clique em ** Iniciar > Configurar um canal de notificação > Configurar canal de notificação**. A página de Configurações será aberta.
-
Clique em + Incluir canal de notificação e selecione a opção Webhook.
-
Configure o canal de notificação de webhook. Após criar um canal de notificação de webhook, deve-se continuar a configurar a autenticação para o canal.
- Para URL digite o endereço
kafka_http_urlda chave de serviço e acrescente a rota/topics/<topic>/recordsao endereço URL. O<topic>é o nome do tópico que você criou em sua instância Event Streams. - Para Nome, insira o nome do canal de notificação do webhook.
- Mantenha os outros campos com as configurações padrão.
- Clique em Salvar para criar o canal.
- Para URL digite o endereço
-
Obtenha um token IAM para autenticar suas solicitações para a Monitoring API.
-
Faça curl da Monitoring API para listar os canais de notificação.
- Substitua
<region>pela região de sua instância Monitoring, comous-east. - Substitua
<token>pelo token IAM que você recuperou anteriormente.
curl ’https://<region>.monitoring.cloud.ibm.com/api/notificationChannels' --header ‘Authorization: Bearer <token>’ | jq
Na saída, observe o id do canal de notificação em que o campo options.url corresponde a URL que você criou anteriormente.
{
"id": 123,
"version": 6,
...
"options": {
"notifyOnOk": true,
"url": "https://mh-<id>.private.us-south.messagehub.appdomain.cloud",
"notifyOnResolve": true
}
},
- Faça curl da Monitoring API para incluir o cabeçalho de autenticação no canal de notificação do webhook.
- Substitua
<region>pela região de sua instância Monitoring, comous-east. - Substitua
<id>pela ID do canal de notificação que você recuperou anteriormente. - Substitua
<token>pelo token IAM que você recuperou anteriormente.
curl -X PUT ’https://<region>.monitoring.cloud.ibm.com/api/notificationChannels/<id>' \
--header ‘Content-Type: application/json’
--header ‘Authorization: Bearer <token>’ -d @/tmp/notification.json
- Faça o curl da Monitoring API novamente para confirmar que o canal de notificação foi atualizado com o cabeçalho de autenticação.
- Substitua
<region>pela região de sua instância Monitoring, comous-east. - Substitua
<token>pelo token IAM que você recuperou anteriormente.
curl ’https://<region>.monitoring.cloud.ibm.com/api/notificationChannels' --header ‘Authorization: Bearer <token>’ | jq
Na saída, observe que o campo additionalHeaders.X-Auth-Token foi incluído no canal de notificação.
{
"notificationChannel":
{
"id": 123,
....
"options": {
"notifyOnOk": true,
"url": "https://mh-<id>.private.us-south.messagehub.appdomain.cloud/topics/kafka-java-console-sample-topic/records",
"notifyOnResolve": true,
"additionalHeaders": {
"X-Auth-Token": "123456123456123456123456123465123456"
...
- Configure o alerta que usa o canal de notificação do webhook que você criou para o Event Streams.
Quando um alerta for acionado do Event Streams, será possível revisar os detalhes em sua Monitoring instância.