Em minha última postagem, analisamos as métricas por meio do Amazon CloudWatch SDK. O monitoramento de integridade é um tópico super importante e crucial para manter o desempenho de seus aplicativos de transmissão ao vivo. Outro elemento crucial é a análise do visualizador. Nesta postagem, veremos algumas maneiras de fornecer informações sobre os visualizadores de stream. de integridade da transmissão ao vivo do Amazon Interactive Video Service (Amazon IVS) Grande parte deste post será semelhante ao meu último post. Isso ocorre porque os dados do visualizador também são armazenados no CloudWatch e podem ser recuperados por meio do SDK. Há um método adicional, como veremos abaixo, para obter uma contagem dos espectadores atuais de uma transmissão ao vivo, que é uma maneira prática de obter uma contagem que pode ser exibida em seu front-end. embora esta postagem se concentre em visualizadores de canais de transmissão ao vivo, você também pode recuperar métricas sobre suas salas de bate-papo do Amazon IVS, como e messages . Não abordaremos isso neste post, mas você pode conferir os para saber mais. Observação: ConcurrentChatConnections Delivered documentos Recuperando exibições simultâneas por meio do console do CloudWatch Se você está apenas procurando dar uma olhada nos dados do visualizador sem recuperar os dados brutos, pode visualizar seus por meio do console do CloudWatch. Primeiro, selecione e, em seguida, escolha . ConcurrentViews Todas as métricas IVS Em seguida, selecione . Por canal Em seguida, marque a caixa de seleção na linha que contém para qualquer um de seus canais do Amazon IVS. ConcurrentViews Outra maneira de encontrar exibições simultâneas para uma sessão de streaming é por meio do console do Amazon IVS. Selecione seu canal e escolha um na página de detalhes do canal. ID de transmissão Os detalhes de uma sessão de transmissão conterão vários gráficos, um dos quais contém as da sessão. exibições Simultâneas Recuperando exibições simultâneas por meio do CloudWatch SDK Para integrar esses dados em seu próprio aplicativo, você pode recuperá-los por meio do CloudWatch SDK. Da mesma forma que as métricas de integridade, você precisará do do canal, um e um para recuperar . ARN StartTime EndTime ConcurrentViews Em vez de escolher aleatoriamente os horários de início e término, provavelmente faz sentido obter esses horários dinamicamente, escolhendo os horários de início e término de uma sessão de transmissão ao vivo. Você pode recuperar uma lista de sessões de stream por meio do Amazon IVS SDK (como vimos na ). postagem anterior você sempre precisará de um , mesmo para transmissões ao vivo no momento. Para transmissões ao vivo, você sempre pode usar a hora atual como ao usar o SDK para recuperar métricas. Lembrete: EndTime EndTime Para recuperar esses dados por meio do AWS SDK for JavaScript (v3), você precisará instalar o pacote e criar uma instância do cliente ( ). Depois que a instância do cliente for criada, defina algumas variáveis para as entradas necessárias. @aws-sdk/client-cloudwatch new CloudWatchClient() const startTime = new Date('2023-02-10T14:00:00.000Z'); const endTime = new Date('2023-02-10T14:30:00.000Z'); const arn = process.env.DEMO_CHANNEL_ARN; Em seguida, crie um objeto de entrada. O objeto de entrada conterá , e uma matriz de . A matriz de consultas conterá um único objeto que especifica o ( ), o ( ) e as pelas quais filtrar (nome do canal, neste caso). StartTime EndTime MetricDataQueries MetricName ConcurrentViews Namespace AWS/IVS Dimensions const getMetricDataInput = { StartTime: startTime, EndTime: endTime, MetricDataQueries: [{ Id: "concurrentviews", MetricStat: { Metric: { MetricName: "ConcurrentViews", Namespace: "AWS/IVS", Dimensions: [{ Name: "Channel", Value: arn.split("/")[1] }] }, Period: 5, Stat: "Average", } }], MaxDatapoints: 100 }; Agora envie a solicitação e registre o resultado. const getMetricDataRequest = new GetMetricDataCommand(getMetricDataInput); let metrics = await cloudWatchClient.send(getMetricDataRequest); console.log(metrics); Que produz uma saída semelhante à seguinte (metadados SDK estranhos removidos para abreviar): { "MetricDataResults": [ { "Id": "concurrentviews", "Label": "ConcurrentViews", "Timestamps": [ "2023-02-10T14:29:00.000Z", "2023-02-10T14:28:00.000Z", "2023-02-10T14:27:00.000Z", "2023-02-10T14:26:00.000Z", "2023-02-10T14:22:00.000Z" ], "Values": [ 3, 3, 3, 3, 10 ], "StatusCode": "PartialData" } ] } Você pode filtrar, classificar e gerar esses dados para produzir um formato útil para gerar gráficos. const viewMetrics = metrics .MetricDataResults .find((metric) => metric.Id === 'concurrentviews'); const viewValues = viewMetrics.Values.reverse(); const viewData = []; viewMetrics .Timestamps .reverse() .forEach((t, i) => { viewData.push({ timestamp: t, concurrentviews: viewValues[i], }) }); console.log(JSON.stringify(viewData)); Que produz uma matriz de objetos. [ { "timestamp": "2023-02-10T14:22:00.000Z", "concurrentviews": "10.00" }, { "timestamp": "2023-02-10T14:26:00.000Z", "concurrentviews": "3.00" }, ... ] Você pode usar esses dados com nossa biblioteca de gráficos favorita (ou um gerador de gráficos on-line genérico, como eu fiz). Gerando imagens de gráfico com o CloudWatch SDK Na última postagem, analisamos a geração da imagem diretamente por meio do CloudWatch SDK. Essa abordagem também se aplica às suas métricas de exibição. const startTime = new Date('2023-02-10T14:00:00.000Z'); const endTime = new Date('2023-02-10T14:25:00.000Z'); const arn = process.env.DEMO_CHANNEL_ARN; const cloudWatchClient = new CloudWatchClient(); const getMetricWidgetImageInput = { MetricWidget: JSON.stringify({ metrics: [ [ "AWS/IVS", "ConcurrentViews", "Channel", arn.split("/")[1] ] ], start: startTime, end: endTime, period: 5, stat: "Average" }) }; const getMetricWidgetImageRequest = new GetMetricWidgetImageCommand(getMetricWidgetImageInput); const metricImage = await cloudWatchClient.send(getMetricWidgetImageRequest); Que retorna um objeto com a chave que contém um buffer de matriz ( ) contendo a imagem do gráfico. MetricWidgetImage Uint8Array { "MetricWidgetImage": { "0": 137, "1": 80, "2": 78, ... } } Para converter esse buffer de matriz em uma string base64: const buffer = Buffer.from(metricImage.MetricWidgetImage); console.log(buffer.toString('base64')); O que nos dá: iVBORw0KGgoAAAANSUhEUgAAAlgAAAGQCAIAAAD9V4nPAAAACXBIWXMA... Isso pode ser convertido em uma imagem que se parece com isso: Recuperando Sessões Atuais de Visualização ao Vivo para um Canal Conforme mencionado acima, você pode facilmente obter uma contagem das sessões de exibição atuais para a transmissão ao vivo ativa em um canal por meio do módulo cliente Amazon IVS no AWS SDK. Para isso, utilize o método . GetStream import { GetStreamCommand, IvsClient } from "@aws-sdk/client-ivs"; const client = new IvsClient(); const getStreamCommandInput = { channelArn: process.env.DEMO_CHANNEL_ARN, }; const getStreamRequest = new GetStreamCommand(getStreamCommandInput); const getStreamResponse = await client.send(getStreamRequest); console.log(getStreamResponse); Que produz uma saída como a seguinte. { "stream": { "channelArn": "arn:aws:ivs:us-east-1:[redacted]:channel/[redacted]", "health": "HEALTHY", "playbackUrl": "https://[redacted].us-east-1.playback.live-video.net/api/video/v1/us-east-1.[redacted].channel.x4aGUUxIp5Vw.m3u8", "startTime": "2023-02-10T15:46:36.000Z", "state": "LIVE", "streamId": "st-[redacted]", "viewerCount": 5 } } Observe a propriedade , que é uma contagem ao vivo de sessões de visualização para a transmissão ao vivo atual. viewerCount Resumo Nesta postagem, aprendemos como recuperar dados de exibição para nossas transmissões ao vivo do Amazon IVS por meio dos SDKs CloudWatch e Amazon IVS. Para saber mais, confira a . documentação Coroa