Todos os produtos
Search
Central de documentação

Simple Log Service:Integração com o Grafana

Última atualização: Jul 03, 2026

Use o Grafana para visualizar e analisar logs do Nginx coletados pelo Simple Log Service (SLS).

Importante

Pré-requisitos

Compatibilidade do plugin

A tabela a seguir descreve a compatibilidade entre o Grafana e o plugin SLS.

Versão do Grafana

Versão do plugin SLS

≥8.0.0

2.x

<8.0.0

1.0

Observações de uso

Ao configurar o redirecionamento baseado em STS, atenda às seguintes condições de segurança:

  • O usuário associado à chave de acesso da source de dados deve ter as políticas de acesso AliyunRAMReadOnlyAccess e AliyunSTSAssumeRoleAccess, permissão para chamar a API CreateTicket e as permissões necessárias para o SLS.

  • A função RAM especificada no campo RoleArn da source de dados deve ter apenas a política de acesso AliyunLogReadOnlyAccess.

  • Para mais informações sobre o funcionamento, consulte Incorporar e compartilhar páginas do console.

Se você configurar o acesso sem login, verifique se a source de dados não é usada em painéis do Grafana compartilhados publicamente. O acesso público pode aumentar os custos de tráfego e expor o conteúdo dos logs.

Nota

Para mais informações sobre políticas de acesso do sistema, consulte Políticas de acesso do sistema para o Simple Log Service.

Etapa 1: Instalar o plugin SLS

  1. Execute o comando a seguir para extrair o pacote do plugin no diretório de plugins do Grafana.

    • Para Grafana instalado via repositório YUM ou pacote RPM:

      unzip aliyun-log-grafana-datasource-plugin-master.zip -d /var/lib/grafana/plugins
    • Para Grafana instalado a partir de um arquivo .tar.gz:

      Neste comando, {PATH_TO} representa o caminho de instalação do Grafana.

      unzip aliyun-log-grafana-datasource-plugin-master.zip -d {PATH_TO}/grafana-11.4.0/data/plugins
  2. Modifique o arquivo de configuração do Grafana.

    1. Abra o arquivo de configuração.

      • Para Grafana instalado via repositório YUM ou pacote RPM: /etc/grafana/grafana.ini

      • Para Grafana instalado a partir de um arquivo .tar.gz: {PATH_TO}/grafana-11.4.0/conf/defaults.ini

    2. Na seção [plugins] do arquivo de configuração, defina o parâmetro allow_loading_unsigned_plugins.

      allow_loading_unsigned_plugins = aliyun-log-service-datasource
  3. Reinicie o Grafana.

    1. Use o comando kill para encerrar o processo do Grafana.

    2. Execute um dos comandos a seguir para iniciar o Grafana.

      • Para Grafana instalado via repositório YUM ou pacote RPM:

        systemctl restart grafana-server
      • Para Grafana instalado a partir de um arquivo .tar.gz:

        ./bin/grafana-server web

Etapa 2: Adicionar uma source de dados

  1. Faça login no Grafana.

  2. No painel de navegação à esquerda, escolha Connections > Data Sources.

  3. Na aba Data Sources, clique em Add data source.

  4. Na página Add data source, pesquise por log-service-datasource e clique nele.

  5. Na página aliyun-log-service-datasource, configure as seguintes definições.

    • A tabela a seguir descreve os parâmetros obrigatórios.

      Parâmetro

      Descrição

      Endpoint

      O endpoint do Project, como http://cn-qingdao.log.aliyuncs.com. Use seu endpoint real. Para mais informações, consulte Endpoints.

      Project

      O nome do Project no SLS.

      AccessKeyID

      O AccessKey ID identifica o usuário. Para mais informações, consulte Par de chaves de acesso.

      Recomendamos conceder apenas as permissões estritamente necessárias a um usuário RAM, seguindo o princípio do menor privilégio. Para saber como conceder permissões a um usuário RAM, consulte Criar um usuário RAM e conceder permissões e Exemplos de políticas personalizadas do RAM.

      AccessKeySecret

      O AccessKey secret criptografa e verifica a string de assinatura. Mantenha o AccessKey secret em sigilo absoluto.

    • A tabela a seguir descreve os parâmetros opcionais.

      Parâmetro

      Descrição

      Name

      Nome da source de dados. O valor padrão é aliyun-log-service-datasource.

      Default

      Esta opção vem ativada por padrão.

      Default LogStore

      Se você omitir o Logstore, garanta que sua chave de acesso tenha a permissão ListProject para o Project atual.

      RoleArn

      Obrigatório para redirecionamento via STS. Especifique o ARN da função RAM.

      HTTP headers

      Há suporte para headers personalizados, que têm efeito apenas quando o tipo de source de dados é MetricStore(PromQL). Para detalhes de configuração, consulte as definições de FormValue em Acelerar consultas. A lista a seguir descreve os campos de Headers:

      • x-sls-parallel-enable: Define se a computação simultânea será ativada. Desativado por padrão.

      • x-sls-parallel-time-piece-interval: Unidade de tempo para fragmentação por intervalo de tempo, em segundos. O intervalo suportado é [3600, 86400*30]. O valor padrão é 21600 (6 horas).

      • x-sls-parallel-time-piece-count: Quantidade de shards ao fragmentar por intervalo de tempo. O intervalo suportado vai de 1 a 16. O valor padrão é 8.

      • x-sls-parallel-count: Concorrência global. O intervalo suportado vai de 2 a 64. O valor padrão é 8.

      • x-sls-parallel-count-per-host: Concorrência por host. O intervalo suportado vai de 1 a 8. O valor padrão é 2.

      • x-sls-global-cache-enable: Define se o cache global será ativado. Desativado por padrão.

      Region

      Suporta assinatura v4 para maior segurança.

  6. Após concluir a configuração, clique em Save & test.

Etapa 3: Adicionar um painel

Para adicionar um painel ao Grafana:

  1. No painel de navegação à esquerda, clique em Dashboards.

  2. No painel Dashboards, clique em + Created dashboard. Em seguida, clique em + Add visualization.

  3. Na página Select data source, selecione aliyun-log-service-datasource como source de dados.

  4. Adicione um painel de visualização.

    A lista a seguir descreve as configurações disponíveis:

    • Data Source Type: Quatro tipos estão disponíveis, baseados na sintaxe (SQL e PromQL) e no tipo de armazenamento: ALL(SQL), Logstore(SQL), MetricStore(SQL) e MetricStore(PromQL).

      • Logstores aceitam SQL para consulta e análise.

      • Metricstores aceitam SQL e PromQL para consulta e análise.

      • MetricStore(PromQL) permite adicionar headers personalizados na página de configuração da source de dados.

    • Logstore list: Selecione o nome do Logstore que deseja consultar.

    • Query: Insira uma instrução de consulta, por exemplo:

      * | select count(*) as c, __time__-__time__%60 as t group by t
    • ycol: null

    • xcol: Selecione TimeSeries / Custom e insira t.

    • goto SLS: Redirecionamento direto para o console SLS com um clique.

      Nas páginas Explore e de painéis, clique em goto SLS para acessar o console SLS e fazer comparações. Assim, você aproveita recursos mais avançados e capacidades flexíveis de busca de logs do console SLS. Durante o redirecionamento, as informações de consulta e período são transferidas automaticamente, evitando entrada manual.

      Esse método de redirecionamento leva diretamente ao console SLS e não exige configuração adicional. No entanto, é necessário já estar logado no console SLS no navegador; caso contrário, você será redirecionado para a página de login.

      Nota

      Esse recurso está disponível no SLS Grafana Plugin versão 2.30 ou superior.

  5. Em Panel options, à direita, insira um título e clique em Save dashboard no canto superior direito. Na caixa de diálogo exibida, clique em Save.

Configurar variáveis de modelo

As variáveis de modelo no Grafana permitem alterar dinamicamente os dados exibidos em um gráfico.

Configurar uma variável de intervalo de tempo

  1. No canto superior direito da página New dashboard, clique em Edit > Settings.

  2. Clique em Variables.

  3. Clique em New variable.

  4. Configure a variável de modelo com os parâmetros a seguir e clique em Add.

    A tabela a seguir descreve os principais parâmetros.

    Parâmetro

    Descrição

    Name

    Nome da variável, como myinterval. Essa variável é usada na sua configuração e deve ser inserida como $$myinterval na condição de consulta.

    Type

    Selecione Interval.

    Label

    Defina como time interval.

    Values

    Defina como 1m,10m,30m,1h,6h,12h,1d,7d,14d,30d.

    Auto Option

    Ative a opção Auto Option e mantenha os demais parâmetros com suas configurações padrão.

  5. Resultado. Após a configuração, uma lista suspensa de time interval aparece no topo do painel, permitindo selecionar intervalos como Auto, 1m, 10m, 30m, 1h, 6h, 12h ou 1d.

Configurar uma variável de nome de domínio

  1. Na página Variables, clique em New.

  2. Configure a variável de modelo com os parâmetros a seguir e clique em Add.

    Parâmetro

    Descrição

    Name

    Nome da variável, por exemplo, hostname. Esta é a variável utilizada na configuração; se o nome for hostname, especifique $hostname na condição de consulta.

    Type

    Selecione Custom.

    Label

    Insira um nome de domínio.

    Custom Options

    Se definir o parâmetro como *,example.com,example.org,example.net, será possível visualizar o status de acesso de todos os nomes de domínio. Também é possível visualizar separadamente o status de acesso de example.com, example.org ou example.net.

    Selection Options

    Mantenha as configurações padrão.

  3. Resultado. Após a configuração, uma lista suspensa de nomes de domínio aparece no topo do painel, permitindo selecionar * (todos os domínios), example.com, example.org ou example.net.

Configurar variável de lista de Logstore

  1. Na página de configurações de Variables, selecione o tipo Custom. O campo name serve como identificador único e deve conter a string 'logstore', sem distinção entre maiúsculas e minúsculas. Em Custom Options, insira os valores da variável separados por vírgulas.

    image.webp

  2. No editor do painel, altere a opção Logstore list para sua variável personalizada, selecione um valor e atualize o painel para ver os resultados.image.webp

Configuração de gráficos

Painéis Stat e Gauge

Formato de xcol: stat.

Formato de ycol: <numeric_column>, <numeric_column>.

Importante

Se você fornecer uma coluna não numérica onde uma coluna numérica é necessária, o valor será definido como 0.

  • Exemplo 1

    Tipo de painel: Stat

    xcol: stat

    ycol: PV, deltaPercent

    query:

    * | select diff[1] as "PV", round((diff[1] - diff[2])/diff[2] * 100, 2) as deltaPercent from (select compare("PV", 86400) as diff from (select count(*) as "PV" from log))

    O resultado da consulta é exibido em um painel Stat, mostrando duas métricas numéricas: PV e deltaPercent. Valores positivos aparecem em verde e negativos em vermelho, com um mini gráfico de linha de tendência abaixo de cada métrica.

  • Exemplo 2

    Tipo de painel: Gauge

    xcol: stat

    ycol: c

    query:

    * | select count(distinct labels['hostname']) as c from (select promql_query('${metricName}{cluster =~ "${cluster}"}') from metrics ) limit 100000

    O resultado da consulta aparece em um painel Gauge. O valor é mostrado como um indicador em arco no medidor, com o arco transitando do verde ao vermelho para representar a faixa de valores.

Gráfico de pizza

Formato de xcol: pie.

Formato de ycol: <grouping_column>, <numeric_column>.

  • Exemplo 1

    Tipo de painel: Pie Chart

    xcol: pie

    ycol: request_method, c

    query:

    request_method: "$method" | select count(*) as c, request_method group by request_method

    O resultado da consulta é exibido como um gráfico de pizza mostrando a distribuição de vários métodos de requisição HTTP, como GET, POST, PUT e DELETE.

  • Exemplo 2

    Tipo de painel: Pie Chart

    xcol: pie

    ycol: http_user_agent, pv

    query:

    * | select count(1) as pv, case when http_user_agent like '%Chrome%' then 'Chrome' when http_user_agent like '%Firefox%' then 'Firefox' when http_user_agent like '%Safari%' then 'Safari' else 'unKnown' end as http_user_agent group by case when http_user_agent like '%Chrome%' then 'Chrome' when http_user_agent like '%Firefox%' then 'Firefox' when http_user_agent like '%Safari%' then 'Safari' else 'unKnown' end order by pv desc limit 10

    O resultado da consulta é exibido como um gráfico de pizza mostrando a porcentagem de tráfego de diferentes navegadores: Chrome, Firefox, Safari e unKnown.

  • Outros casos de uso

    O formato usado nos painéis Stat também pode ser aplicado a gráficos de pizza para gerar uma visualização válida.

    Tipo de painel: Pie Chart

    xcol: stat

    ycol: hostNameNum, ipNum

    query:

    * | select count(distinct labels['hostname']) as hostNameNum, count(distinct labels['ip']) + 20 as ipNum from (select promql_query('${metricName}{cluster =~ ".*"}') from metrics ) limit 100000

    O resultado da consulta é exibido como um gráfico de pizza mostrando a proporção das métricas hostNameNum e ipNum.

Séries temporais

Formato de xcol: <time_column>.

Formato de ycol: <numeric_column> [, <numeric_column>, ...] (sintaxe Logstore) ou <labels / grouping_column>#:#<numeric_column> (sintaxe Metricstore ou sintaxe de agregação de logs).

  • Exemplo 1

    Tipo de painel: Time series

    xcol: time

    ycol: pv, uv

    query:

    * | select __time__ - __time__ % $${myinterval} as time, COUNT(*)/ 100 as pv, approx_distinct(remote_addr)/ 60 as uv GROUP BY time order by time limit 2000

    O resultado da consulta é exibido como um gráfico de linhas de séries temporais, mostrando as tendências de duas séries, pv e uv, ao longo do tempo.

  • Exemplo 2

    Tipo de painel: Time series

    xcol: time

    ycol: labels#:#value

    query:

    * | select time, * from (select promql_query_range('${metricName}') from metrics) limit 1000

    O resultado da consulta é exibido como um gráfico de linhas de séries temporais, onde cada série recebe automaticamente um nome e é agrupada por seus rótulos.

  • Exemplo 3

    Também é possível usar SQL para personalizar a exibição dos rótulos das séries temporais.

    Tipo de painel: Time series

    xcol: time

    ycol: customLabelsExtract#:#value

    query:

    * | select concat(labels['ip'], ' -> ', labels['cluster']) as customLabelsExtract, value from (select promql_query_range('${metricName}') from metrics) limit 1000

    O resultado da consulta é exibido como um gráfico de linhas de séries temporais, com nomes de séries definidos pelo campo SQL personalizado customLabelsExtract (formato: IP -> cluster).

Gráfico de barras

Formato de xcol: bar.

Formato de ycol: <grouping_column>, <numeric_column> [, <numeric_column>, ...].

  • Exemplo 1

    Tipo de painel: Bar chart

    xcol: bar

    ycol: host, pv, pv2, uv

    query:

    * | select host, COUNT(*)+10 as pv, COUNT(*)+20 as pv2, approx_distinct(remote_addr) as uv GROUP BY host ORDER BY uv desc LIMIT 5

    O resultado da consulta é exibido como um gráfico de barras horizontais comparando as métricas pv, pv2 e uv para cada host.

Tabela

O painel Table suporta ordenação por tempo com precisão de nanossegundos, caso exista um campo de nanossegundos.

É possível modificar a contagem de totalLogs. O padrão é 100, o mínimo é 1 e o máximo é 5000. Isso se aplica apenas a instruções de consulta, não a instruções de análise.

Sintaxe xcol: <empty>.

Formato de ycol: Deixe este campo vazio ou especifique <display_column> [, <display_column>, ...].

  • Exemplo 1

    Tipo de painel: Table

    xcol: Table/Log

    ycol: <empty>

    query:

    * | select __time__ - __time__ % 60 as time, COUNT(*)/ 100 as pv, approx_distinct(remote_addr)/ 60 as uv GROUP BY time order by time limit 2000

    O resultado da consulta é exibido em uma tabela com colunas para time, pv e uv.

Logs

Sintaxe xcol: <empty>.

Sintaxe ycol: <empty>.

Exemplo

Tipo de painel: Logs

xcol: <Empty>

ycol: <Empty>

query:

host: www.vt.mock.com

O resultado da consulta é exibido em um painel Logs mostrando entradas de log brutas, onde cada entrada exibe pares chave-valor para seus campos.

Traces

Tipo de painel: Traces

xcol: trace

ycol: <empty>

query:

traceID: "f88271003ab7d29ffee1eb8b68c58237"

O resultado da consulta é exibido em um painel Traces mostrando as informações de rastreamento. O lado esquerdo lista Service & Operation, e o lado direito mostra uma linha do tempo em gráfico de Gantt para cada span, ilustrando a hierarquia e a duração do trace.

Nota

Este exemplo usa um Logstore que contém dados de trace. É necessário ativar o serviço Trace no SLS. O SLS suporta ingestão nativa de dados de trace OpenTelemetry e também aceita ingestão de dados de outros sistemas de rastreamento. Para mais informações, consulte Visão geral da ingestão de dados de trace.

No Grafana 10.0 e versões posteriores, há suporte para filtragem de spans em dados de trace. Se estiver usando uma versão anterior do Grafana, também é possível definir filtros de span personalizados na consulta. Por exemplo:

traceID: "f88271003ab7d29ffee1eb8b68c58237" and resource.deployment.environment : "dev" and service : "web_request" and duration > 10

GeoMap

Formato de xcol: map.

Formato de ycol: <country_column>, <geolocation_column>, <numeric_column>.

Exemplo

Tipo de painel: GeoMap

xcol: map

ycol: country, geo, pv

query:

* | select count(1) as pv ,geohash(ip_to_geo(arbitrary(remote_addr))) as geo,ip_to_country(remote_addr) as country from log group by country having geo <>'' limit 1000

O resultado da consulta é exibido em um GeoMap, mostrando a distribuição de tráfego em diferentes regiões em um mapa-múndi. O tamanho dos círculos indica o volume de tráfego.

Perguntas frequentes

  • Onde os logs do Grafana são armazenados?

    Os logs do Grafana ficam armazenados nos seguintes diretórios:

    • macOS: /usr/local/var/log/grafana

    • Linux: /var/log/grafana

  • O que fazer se aliyun-log-plugin_linux_amd64: permission denied aparecer nos logs?

    Conceda permissões de execução ao diretório dist/aliyun-log-plugin_linux_amd64 dentro do diretório do plugin.