Envio de registros usando a API
Você pode enviar logs para uma instância IBM Cloud Logs usando a API de ingestão.
Autenticar usando um token de portador
Você deve obter um token de acesso IBM Cloud® Identity and Access Management (IAM) para autenticar suas solicitações.
Para obter seu token usando o IBM Cloud CLI, conclua as etapas a seguir:
-
Efetue login no IBM Cloud.
Certifique-se de que a entidade com a qual você faz login tenha a função '
Senderpara o serviço IBM Cloud Logs. -
Execute o comando a seguir:
ibmcloud iam oauth-tokens -
Coloque esse token no cabeçalho Authorization (Autorização) da solicitação HTTP no formato Bearer (Portador)
.
Por exemplo, você pode recuperar seu token portador do IAM e exportá-lo como uma variável de ambiente executando o seguinte comando CLI:
export IAM_TOKEN=`ibmcloud iam oauth-tokens --output json | jq -r '.iam_token'`
Enviar registros usando cURL
A tabela a seguir descreve os detalhes do ponto de extremidade:
| Detail | Valor |
|---|---|
URL |
<INSTANCE_ID>.ingress.<REGION>.logs.cloud.ibm.com/logs/v1/singles |
HTTP Method |
POST |
Cabeçalho Content-Type |
application/json |
Cabeçalho Authorization |
Bearer $IAM_TOKEN |
em que
INSTANCE_ID: GUID da instância IBM Cloud Logs para onde você deseja enviar logs.REGION: Região em que a instância IBM Cloud Logs está localizada.IAM_TOKEN: token portador do IAM usado para solicitar autorização para enviar logs. A permissãologs.data.sendé necessária.
Use o seguinte comando cURL para enviar uma linha de registro:
curl -v --location "<INSTANCE_ID>.ingress.<REGION>.logs.cloud.ibm.com/logs/v1/singles" \
--header "Content-Type: application/json" \
--header "Authorization: $IAM_TOKEN" \
--data '[{
"applicationName": "ENTER_APPLICATION_NAME",
"subsystemName": "ENTER_SUBSYSTEM_NAME",
"severity": "ENTER_SEVERITY",
"computerName": "ENTER_VALUE",
"text": ENTER_LOG_LINE,
"category": "ENTER_VALUE",
"className": "ENTER_VALUE",
"methodName": "ENTER_VALUE",
"threadId": "ENTER_VALUE"
}]'
A tabela a seguir descreve os objetos JSON que você pode incluir por linha de log em uma solicitação:
| Nome da propriedade | Tipo de propriedade | Obrigatório | Mais informações |
|---|---|---|---|
applicationName |
string |
True | |
subsystemName |
string |
True | |
text |
string/json |
True | Se você estiver usando Ajax ou uma tecnologia similar, talvez seja necessário enviar os dados com JSON.stringify (). |
severity |
number |
Não | 1 – Debug2 – Verbose3 – Info4 – Warn5 – Error6 – CriticalSe não for especificado, 1 – Debug será usado. |
timestamp |
number |
Não | Milissegundos UTC. Se não for especificado, será usado o horário em que o log chegará ao gateway. |
computerName |
string |
Não | |
category |
string |
Não | |
className |
string |
Não | |
methodName |
string |
Não | |
threadId |
string |
Não | |
hiResTimestamp |
string |
Não | Nanossegundos UTC |
Se você não especificar severity, os logs receberão a gravidade de 1 – Debug.
Você pode enviar até 2MB por solicitação, o que equivale a aproximadamente 3.000 logs de tamanho médio.
Por exemplo, você pode executar o seguinte comando para enviar logs para uma instância na região eu-es :
curl -v --location "https://90d208cc-e1dd-4fb2-a938-358e5996f056.ingress.eu-es.logs.cloud.ibm.com/logs/v1/singles" \
--header "Content-Type: application/json" \
--header "Authorization: $IAM_TOKEN" \
--data '[{
"applicationName": "cs-rest-test3",
"subsystemName": "cs-rest-test3",
"computerName": "computer test3",
"text": {"key":"value","message":"148.145.31.214 - user [24/Oct/2023:15:54:46 +0000] \"PATCH /maximized/Triple-buffered_Managed/core.hmtl HTTP/1.1\" 400 7074 1.666 \"-\" \"Mozilla/5.0 (Macintosh; PPC Mac OS X 10_6_4 rv:6.0) Gecko/1929-02-10 Firefox/37.0\" \"-\"","countryme":"Italy"},
"category": "cat-1",
"className": "class-1",
"methodName": "method-1",
"threadId": "thread-1"
}]'
A opção -v fornece uma saída detalhada que pode ajudar a determinar se o comando foi concluído com sucesso ou se houve problemas de autorização ou conectividade.