Utilice Grafana para visualizar y analizar los registros de Nginx recopilados por Simple Log Service (SLS).
Para probar rápidamente esta función, utilice el enlace de acceso sin inicio de sesión: Demo - Grafana.
Puede exportar un panel desde Simple Log Service (SLS) e importarlo a Grafana. Para obtener más información, consulte Export a dashboard and import it to Grafana.
Requisitos previos
Recopile los registros de Nginx. Para obtener más información, consulte Use Nginx configuration mode to collect text logs.
Habilite y configure los índices. Para obtener más información, consulte Analyze Nginx access logs.
-
Descargue el paquete del proyecto del plugin de origen de datos.
Ejecute el siguiente comando para descargar el paquete:
wget https://github.com/aliyun/aliyun-log-grafana-datasource-plugin/archive/refs/heads/master.zip.NotaEste tema utiliza el plugin SLS v2.36 como ejemplo.
-
Instale Grafana. Para obtener más información, consulte la documentación oficial de Grafana.
NotaEste tema utiliza Grafana 11.4.0 como ejemplo.
Si instala Grafana en su computadora local, asegúrese de que el puerto 3000 sea accesible desde su navegador.
-
Para utilizar un gráfico circular, ejecute el siguiente comando para instalar el plugin Pie Chart.
grafana-cli plugins install grafana-piechart-panel
Compatibilidad del plugin
La siguiente tabla describe la compatibilidad entre Grafana y el plugin de SLS.
|
Versión de Grafana |
Versión del plugin de SLS |
|
≥8.0.0 |
|
|
<8.0.0 |
Notas de uso
Si configura una redirección basada en STS, se deben cumplir las siguientes condiciones de seguridad:
El usuario asociado con la accesskey del origen de datos debe tener las directivas de acceso
AliyunRAMReadOnlyAccessyAliyunSTSAssumeRoleAccess, permiso para llamar a la API CreateTicket y los permisos necesarios para SLS.El rol de RAM especificado en el campo RoleArn del origen de datos debe tener únicamente la directiva de acceso
AliyunLogReadOnlyAccess.Para obtener más información sobre cómo funciona esto, consulte Embed and share console pages.
Si configura el acceso sin inicio de sesión, compruebe que el origen de datos no se utilice en paneles de Grafana compartidos públicamente. El acceso público puede aumentar los costos de tráfico y exponer el contenido de los registros.
Para obtener más información sobre las directivas de acceso del sistema, consulte System access policies for Simple Log Service.
Paso 1: Instalar el plugin de SLS
-
Ejecute el siguiente comando para descomprimir el paquete del plugin en el directorio de plugins de Grafana.
-
Para Grafana instalado desde un repositorio YUM o un paquete RPM:
unzip aliyun-log-grafana-datasource-plugin-master.zip -d /var/lib/grafana/plugins -
Para Grafana instalado desde un archivo .tar.gz:
En este comando, {PATH_TO} es la ruta de instalación de Grafana.
unzip aliyun-log-grafana-datasource-plugin-master.zip -d {PATH_TO}/grafana-11.4.0/data/plugins
-
-
Modifique el archivo de configuración de Grafana.
-
Abra el archivo de configuración.
Para Grafana instalado desde un repositorio YUM o un paquete RPM: /etc/grafana/grafana.ini
Para Grafana instalado desde un archivo .tar.gz: {PATH_TO}/grafana-11.4.0/conf/defaults.ini
-
En la sección
[plugins]del archivo de configuración, establezca el parámetroallow_loading_unsigned_plugins.allow_loading_unsigned_plugins = aliyun-log-service-datasource
-
-
Reinicie Grafana.
Utilice el comando
killpara finalizar el proceso de Grafana.-
Ejecute uno de los siguientes comandos para iniciar Grafana.
-
Para Grafana instalado desde un repositorio YUM o un paquete RPM:
systemctl restart grafana-server -
Para Grafana instalado desde un archivo .tar.gz:
./bin/grafana-server web
-
Paso 2: Agregar un origen de datos
Inicie sesión en Grafana.
En el panel de navegación izquierdo, seleccione .
En la pestaña Data Sources, haga clic en Add data source.
En la página Add data source, busque y haga clic en log-service-datasource.
-
En la página aliyun-log-service-datasource, configure los siguientes ajustes.
-
La siguiente tabla describe los parámetros obligatorios.
Parámetro
Descripción
Endpoint
El endpoint del proyecto, por ejemplo,
http://cn-qingdao.log.aliyuncs.com. Utilice su endpoint real. Para obtener más información, consulte Endpoints.Project
El nombre del proyecto de SLS.
AccessKeyID
La AccessKey ID se utiliza para identificar a un usuario. Para obtener más información, consulte Access key pair.
Se recomienda otorgar únicamente los permisos necesarios a un usuario de RAM según el principio de menor privilegio. Para obtener más información sobre cómo otorgar permisos a un usuario de RAM, consulte Create a RAM user and grant permissions y RAM custom policy examples.
AccessKeySecret
La AccessKey secret se utiliza para cifrar y verificar una cadena de firma. La AccessKey secret debe mantenerse confidencial.
-
La siguiente tabla describe los parámetros opcionales.
Parámetro
Descripción
Name
El nombre del origen de datos. El valor predeterminado es aliyun-log-service-datasource.
Default
Este interruptor está habilitado de forma predeterminada.
Default LogStore
Si omite el logstore, asegúrese de que su accesskey tenga el permiso
ListProjectpara el proyecto actual.RoleArn
Obligatorio para la redirección basada en STS. Especifique el ARN del rol de RAM.
HTTP headers
Se admiten encabezados personalizados y solo surten efecto cuando el tipo de origen de datos es MetricStore(PromQL). Para obtener detalles sobre la configuración, consulte los ajustes de
FormValueen Accelerate queries. La siguiente lista describe los campos deHeaders:-
x-sls-parallel-enable: Especifica si se habilita el cómputo concurrente. Deshabilitado de forma predeterminada. -
x-sls-parallel-time-piece-interval: La unidad de tiempo para la fragmentación por rango de tiempo, en segundos. El rango compatible es[3600, 86400*30]. El valor predeterminado es21600(6 horas). -
x-sls-parallel-time-piece-count: El número de shards al fragmentar por rango de tiempo. El rango compatible es de 1 a 16. El valor predeterminado es 8. -
x-sls-parallel-count: La concurrencia global. El rango compatible es de 2 a 64. El valor predeterminado es 8. -
x-sls-parallel-count-per-host: La concurrencia por host. El rango compatible es de 1 a 8. El valor predeterminado es 2. -
x-sls-global-cache-enable: Especifica si se habilita la caché global. Deshabilitado de forma predeterminada.
Region
Admite firma v4 para mayor seguridad.
-
-
Después de completar la configuración, haga clic en Save & test.
Paso 3: Agregar un panel
Para agregar un panel a Grafana:
En el panel de navegación izquierdo, haga clic en Dashboards.
En el panel Dashboards, haga clic en + Created dashboard. Luego, haga clic en + Add visualization.
En la página Select data source, seleccione aliyun-log-service-datasource como origen de datos.
-
Agregue un panel de visualización.
La siguiente lista describe los ajustes:
-
Data Source Type: Hay cuatro tipos disponibles, basados en la sintaxis (SQL y PromQL) y el tipo de almacenamiento: ALL(SQL), Logstore(SQL), MetricStore(SQL) y MetricStore(PromQL).
Los logstores admiten SQL para query and analysis.
Los metricstores admiten SQL y PromQL para query and analysis.
MetricStore(PromQL) permite agregar encabezados personalizados en la página de configuración del origen de datos.
Logstore list: Seleccione el nombre del logstore que desea consultar.
-
Query: Introduzca una sentencia de consulta, por ejemplo:
* | select count(*) as c, __time__-__time__%60 as t group by t ycol:
nullxcol: Seleccione TimeSeries / Custom e introduzca
t.-
goto SLS: Redirección con un solo clic a la consola de SLS.
En las páginas de exploración y del panel, puede hacer clic en goto SLS para saltar a la consola de SLS y realizar comparaciones. También puede utilizar las funciones más avanzadas y las capacidades flexibles de búsqueda de registros de la consola de SLS. Al redirigirse, la información de la consulta y del tiempo se transfieren automáticamente, lo que elimina la necesidad de introducirlas manualmente.
Este método de redirección lo lleva directamente a la consola de SLS y no requiere configuración. Sin embargo, ya debe haber iniciado sesión en la consola de SLS en su navegador; de lo contrario, se le redirigirá a la página de inicio de sesión.
NotaEsta función está disponible en la versión 2.30 y posteriores del plugin SLS para Grafana.
-
En Panel options a la derecha, introduzca un título y luego haga clic en Save dashboard en la esquina superior derecha. En el cuadro de diálogo que aparece, haga clic en Save.
Configurar variables de plantilla
Las variables de plantilla en Grafana permiten cambiar dinámicamente los datos mostrados en un gráfico.
Configurar una variable de intervalo de tiempo
En la esquina superior derecha de la página New dashboard, haga clic en .
Haga clic en Variables.
Haga clic en New variable.
-
Configure la variable de plantilla con los siguientes parámetros y luego haga clic en Add.
La siguiente tabla describe los parámetros clave.
Parámetro
Descripción
Name
El nombre de la variable, como myinterval. Esta variable se utiliza en su configuración y debe introducirse como
$$myintervalen una condición de consulta.Type
Seleccione Interval.
Label
Establezca como time interval.
Values
Establezca como 1m,10m,30m,1h,6h,12h,1d,7d,14d,30d.
Auto Option
Habilite el interruptor Auto Option y mantenga los demás parámetros en sus valores predeterminados.
Resultado. Después de la configuración, aparece una lista desplegable de time interval en la parte superior del panel, que permite seleccionar intervalos como Auto, 1m, 10m, 30m, 1h, 6h, 12h o 1d.
Configurar una variable de nombre de dominio
En la página Variables, haga clic en New.
-
Configure la variable de plantilla con los siguientes parámetros y luego haga clic en Add.
Parámetro
Descripción
Name
El nombre de la variable, por ejemplo, hostname. Esta es la variable que utiliza en su configuración; si el nombre de la variable es hostname, debe especificar
$hostnameen la condición de consulta.Type
Seleccione Custom.
Label
Introduzca un nombre de dominio.
Custom Options
Si establece el parámetro en
*,example.com,example.org,example.net, podrá ver el estado de acceso de todos los nombres de dominio. También puede ver el estado de acceso deexample.com,example.orgoexample.netpor separado.Selection Options
Mantenga la configuración predeterminada.
Resultado. Después de la configuración, aparece una lista desplegable de nombres de dominio en la parte superior del panel, que permite seleccionar * (todos los dominios), example.com, example.org o example.net.
Configurar variable de lista de logstores
-
En la página de configuración de Variables, seleccione el tipo Custom. El campo
namesirve como identificador único y debe contener la cadena 'logstore', sin distinción entre mayúsculas y minúsculas. En Custom Options, introduzca los valores de la variable separados por comas.

En el editor del panel, cambie la opción Logstore list a su variable personalizada, seleccione un valor y actualice el panel para ver los resultados.

Configuración de gráficos
Paneles Stat y Gauge
Formato de xcol: stat.
Formato de ycol: <numeric_column>, <numeric_column>.
Si proporciona una columna no numérica donde se requiere una columna numérica, el valor se establece en 0.
-
Ejemplo 1
Tipo de panel: Stat
xcol:
statycol:
PV, deltaPercentquery:
* | 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))El resultado de la consulta se muestra en un panel Stat, que presenta dos métricas numéricas: PV y deltaPercent. Los valores positivos se muestran en verde y los negativos en rojo, con un mini gráfico de líneas de tendencia debajo de cada métrica.
-
Ejemplo 2
Tipo de panel: Gauge
xcol:
statycol:
cquery:
* | select count(distinct labels['hostname']) as c from (select promql_query('${metricName}{cluster =~ "${cluster}"}') from metrics ) limit 100000El resultado de la consulta se muestra en un panel Gauge. El valor se presenta como un indicador de arco en un medidor, con una transición de color de verde a rojo para representar el rango del valor.
Gráfico circular
Formato de xcol: pie.
Formato de ycol: <grouping_column>, <numeric_column>.
-
Ejemplo 1
Tipo de panel: Pie Chart
xcol:
pieycol:
request_method, cquery:
request_method: "$method" | select count(*) as c, request_method group by request_methodEl resultado de la consulta se muestra como un gráfico circular que presenta la distribución de diversos métodos de solicitud HTTP, como GET, POST, PUT y DELETE.
-
Ejemplo 2
Tipo de panel: Pie Chart
xcol:
pieycol:
http_user_agent, pvquery:
* | 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 10El resultado de la consulta se muestra como un gráfico circular que indica el porcentaje de tráfico proveniente de diferentes navegadores: Chrome, Firefox, Safari y unKnown.
-
Otros casos de uso
El formato para paneles Stat también puede aplicarse a gráficos circulares para generar una visualización válida.
Tipo de panel: Pie Chart
xcol:
statycol:
hostNameNum, ipNumquery:
* | select count(distinct labels['hostname']) as hostNameNum, count(distinct labels['ip']) + 20 as ipNum from (select promql_query('${metricName}{cluster =~ ".*"}') from metrics ) limit 100000El resultado de la consulta se muestra como un gráfico circular que presenta la proporción de las métricas hostNameNum e ipNum.
Series temporales
Formato de xcol: <time_column>.
Formato de ycol: <numeric_column> [, <numeric_column>, ...] (sintaxis de logstore) o <labels / grouping_column>#:#<numeric_column> (sintaxis de metricstore o sintaxis de agregación de registros).
-
Ejemplo 1
Tipo de panel: Time series
xcol:
timeycol:
pv, uvquery:
* | select __time__ - __time__ % $${myinterval} as time, COUNT(*)/ 100 as pv, approx_distinct(remote_addr)/ 60 as uv GROUP BY time order by time limit 2000El resultado de la consulta se muestra como un gráfico de líneas de series temporales que ilustra las tendencias de dos series, pv y uv, a lo largo del tiempo.
-
Ejemplo 2
Tipo de panel: Time series
xcol:
timeycol:
labels#:#valuequery:
* | select time, * from (select promql_query_range('${metricName}') from metrics) limit 1000El resultado de la consulta se muestra como un gráfico de líneas de series temporales, donde cada serie recibe un nombre automático y se agrupa según sus etiquetas.
-
Ejemplo 3
También puede utilizar SQL para personalizar la visualización de las etiquetas de las series temporales.
Tipo de panel: Time series
xcol:
timeycol:
customLabelsExtract#:#valuequery:
* | select concat(labels['ip'], ' -> ', labels['cluster']) as customLabelsExtract, value from (select promql_query_range('${metricName}') from metrics) limit 1000El resultado de la consulta se muestra como un gráfico de líneas de series temporales, con nombres de serie definidos por el campo SQL personalizado customLabelsExtract (formato:
IP -> cluster).
Gráfico de barras
Formato de xcol: bar.
Formato de ycol: <grouping_column>, <numeric_column> [, <numeric_column>, ...].
-
Ejemplo 1
Tipo de panel: Bar chart
xcol:
barycol:
host, pv, pv2, uvquery:
* | select host, COUNT(*)+10 as pv, COUNT(*)+20 as pv2, approx_distinct(remote_addr) as uv GROUP BY host ORDER BY uv desc LIMIT 5El resultado de la consulta se muestra como un gráfico de barras horizontales que compara las métricas pv, pv2 y uv para cada host.
Tabla
El panel Table admite la ordenación por tiempo con precisión de nanosegundos si existe un campo de nanosegundos.
Admite la modificación del recuento de totalLogs. El valor predeterminado es 100, el mínimo es 1 y el máximo es 5000. Esto aplica únicamente a sentencias de consulta, no a sentencias de análisis.
Sintaxis de xcol: <empty>.
Formato de ycol: Deje este campo vacío o especifique <display_column> [, <display_column>, ...].
-
Ejemplo 1
Tipo de panel: Table
xcol:
Table/Logycol:
<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 2000El resultado de la consulta se muestra en una tabla con columnas para time, pv y uv.
Registros
Sintaxis de xcol: <empty>.
Sintaxis de ycol: <empty>.
Ejemplo
Tipo de panel: Logs
xcol: <Empty>
ycol: <Empty>
query:
host: www.vt.mock.com
El resultado de la consulta se muestra en un panel Logs que presenta entradas de registro sin procesar, donde cada entrada muestra pares clave-valor correspondientes a sus campos.
Trazas
Tipo de panel: Traces
xcol: trace
ycol: <empty>
query:
traceID: "f88271003ab7d29ffee1eb8b68c58237"
El resultado de la consulta se muestra en un panel Traces que presenta la información de la traza. El lado izquierdo enumera Service & Operation, y el lado derecho muestra una línea de tiempo de diagrama de Gantt para cada span, lo que ilustra la jerarquía y la duración de la traza.
Este ejemplo utiliza un logstore que contiene datos de trazas. Debe habilitar el servicio Trace en SLS. SLS admite la ingesta nativa de datos de trazas de OpenTelemetry y también permite ingerir datos de trazas de otros sistemas de rastreo. Para obtener más información, consulte Overview of ingesting trace data.
En Grafana 10.0 y versiones posteriores, se admite el filtrado de spans para datos de trazas. Si utiliza una versión anterior de Grafana, también puede definir filtros de spans personalizados en su consulta. Por ejemplo:
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>.
Ejemplo
Tipo de panel: 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
El resultado de la consulta se muestra en un GeoMap, que presenta la distribución del tráfico en diferentes regiones sobre un mapa mundial. El tamaño de los círculos indica el volumen de tráfico.
Preguntas frecuentes
-
¿Dónde se almacenan los registros de Grafana?
Los registros de Grafana se almacenan en los siguientes directorios:
macOS: /usr/local/var/log/grafana
Linux: /var/log/grafana
-
¿Qué debo hacer si aparece aliyun-log-plugin_linux_amd64: permission denied en los registros?
Otorgue permisos de ejecución al directorio dist/aliyun-log-plugin_linux_amd64 dentro del directorio del plugin.

