夜莺-Nightingale
夜莺V7
项目介绍 功能概览
部署升级 部署升级
数据接入 数据接入
告警管理 告警管理
数据查看 数据查看
功能介绍 功能介绍
API FAQ
夜莺V6
项目介绍 架构介绍
快速开始 快速开始
黄埔营
安装部署 安装部署
升级
采集器 采集器
使用手册 使用手册
API API
数据库表结构 数据库表结构
FAQ FAQ
开源生态
Prometheus
版权声明
第1章:天降奇兵 第1章:天降奇兵
第2章:探索PromQL 第2章:探索PromQL
第3章:Prometheus告警处理 第3章:Prometheus告警处理
第4章:Exporter详解 第4章:Exporter详解
第5章:数据与可视化 第5章:数据与可视化
第6章:集群与高可用 第6章:集群与高可用
第7章:Prometheus服务发现 第7章:Prometheus服务发现
第8章:监控Kubernetes 第8章:监控Kubernetes
第9章:Prometheus Operator 第9章:Prometheus Operator
参考资料

阿里云 SLS

在日志分析中选择即时查询,选择阿里云 SLS 数据源,选择指定项目和日志库,就可以查询日志了。

表格图

根据举例的查询条件语句*|SELECT status,count(*) as count GROUP BY status。将查询统计 status 字段,并将统计计算结果命名为 count ,将结果 count 以 status 通过表格分组展示。

语句简析

*| select ... 说明: |管道符左侧*是查询语句;|管道符右侧 select...是分析语句;

status :表示日志数据中的一个字段。

count() AS count: 表示对每种 status 进行计数,并将计数结果命名为count。

GROUP BY status:表示将查询结果按照 status 字段进行分组。

更多语法学习可以参考:查询语法 分析语法 函数概览

时序图

将阿里云 SLS 日志查询结果提取值,将过滤条件作为指标中 tag 转存展示。下面有一些查询举例,可以学习理解一下。

常用基础查询语法

查询GET请求成功(状态码为200~299)且请求时间小于60秒的日志: request_method:GET and status in [200 299] not request_time>=60

查询remote_user字段值不为空的日志not remote_user:""

查询remote_user字段值为空的日志remote_user:""

查询remote_user字段值不为null的日志not remote_user:"null"

查询不存在remote_user字段的日志not remote_user:*

查询存在remote_user字段的日志remote_user:*

查询host字段值不为123的日志: not host:123.*

场景一:查询代理日志中状态码为403和405的日志,使用 host 、 method 、request_uri 分组统计。

status:403 OR status:405 | SELECT host AS host,request_method AS method,request_uri AS url,count(*) AS count GROUP BY host,method,url 这个语句也可以变形为程序错误日志,如: errCode: xxx or errCode:xxx | select ...

场景二:查询 request_method 字段以GE开头,且 client_ip 字段范围是 8.140.205.* 的数据,使用 host 、 method 、request_uri 分组统计

request_method:GE* and client_ip:8.140.205.* | SELECT host AS host,request_method AS method,request_uri AS url,client_ip AS cip,count(*) AS count GROUP BY host,method,url,cip

场景三:查询请求时间小于1秒的成功请求的日志中包含 flashcat 字符串的日志,使用 host 、 method 、request_uri 、status 、request_uri 分组统计。

flashcat AND read_request_time < 1 AND (status >= 200 AND status <= 299) | SELECT host AS host, request_method AS method, request_uri AS url,status as st, read_request_time as rqt,count(*) AS A GROUP BY host, method, url,status,read_request_time

场景四:查询昨日代理日志中状态码为403和405的日志,使用 host 、 method 、request_uri 分组统计。

status:403 OR status:405 | SELECT host AS host, request_method AS method, request_uri AS url, from_unixtime(__time__) AS time, count(*) AS A WHERE __time__ < to_unixtime(current_date) AND __time__ > to_unixtime(date_add('day', -1, current_date)) GROUP BY host, method, url, time

这个语句主要使用了from_unixtime()to_unixtime()current_datedate_addday函数;

rom_unixtime 函数用于将UNIX时间戳转化为timestamp类型的日期和时间表达式,格式为YYYY-MM-DD HH:MM:SS.Ms或YYYY-MM-DD HH:MM:SS.Ms Time_zone。

current_date 函数将timestamp类型的日期和时间表达式转化成UNIX时间戳。

current_date 函数用于返回当前日期,格式为YYYY-MM-DD。

date_add 函数用于在日期或时间中添加或减去指定的时间间隔。

day 函数用于提取日期和时间表达式中的天数,按月计算。day函数等同于day_of_month函数。

快猫星云 联系方式 快猫星云 联系方式
快猫星云 联系方式
快猫星云 联系方式
快猫星云 联系方式
快猫星云
OpenSource
开源版
Flashcat
Flashcat