日志服务提供服务日志功能,帮助您实时掌握日志服务的使用状况、提高运维效率。

开通服务日志

服务日志分为详细日志和重要日志(包括Logtail相关日志,消费组延时日志和计量日志等),分别保存在internal-operation_log和internal-diagnostic_log中。internal-diagnostic_log不计费,internal-operation_log和普通Logstore一样计费。详细日志对应用户的每次操作或者API请求,当读写请求较多时会产生较多的操作日志。
开通服务日志
用户可以根据需要开通服务日志:
服务日志
日志存储位置建议使用推荐配置,将同一个地域的服务日志保存到相同的Project中,便于管理和统计。

监控Logtail心跳

Logtail 安装好之后,可以通过服务日志Logtail的状态日志,来检查Logtail的工作状态。

Logtail状态日志保存在internal-diagnostic_log 中,进入internal-diagnostic_log搜索:__topic__: logtail_status,即可搜索Logtail状态日志。我们可以统计最近一段时间内的机器个数,用于和Logtail应用机器组的总机器数比较,并配置告警规则,如果低于总机器数则触发告警。
  • 查询语句
    __topic__: logtail_status | SELECT COUNT(DISTINCT ip) as ip_count
  • 查询截图
    查询分析
  • 配置告警规则(此处假设总机器数为100):
    创建告警
如果产生告警,则用户可以前往控制台查看机器组的状态,检查哪些机器心跳异常。

查看存储空间等计量数据

用户将日志写入日志服务后,通过日志流量,读写次数,存储空间等计量信息,可以看到日志服务的使用状况和各个计费项的详细内容。

每个Logstore每小时产生一条计量日志,包含统计时间段内的读写流量,读写次数以及当前时间点的原始日志和索引的存储空间大小,各个字段解释可以参考计量日志字段解释。日志服务的计量日志保存在服务日志的internal-diagnostic_log中,通过搜索:__topic__: metering,即可搜索计量日志。

使用max_by函数计算各个Logstore的存储空间:
  • 查询语句
    __topic__: metering | SELECT max_by(storage_index+storage_raw, __time__) as total_storage, project, logstore GROUP BY project, logstore
  • 查询截图
    查询
服务日志的默认仪表盘提供了丰富的计量日志相关的图表,参考计量日志报表

查看消费组延时

日志写入日志服务后,除了普通的查询分析之外,可能还需要对日志进行消费。日志服务提供了多种语言实现的消费组协同消费库

使用消费组消费时,日志的消费延时是用户比较关心的问题。通过观察消费延时,我们可以知道当前的消费进度,当延时较大时我们可以通过调整消费者个数等方式来改进消费速度。

消费组延时日志作为服务日志的一种,同样保存在internal-diagnostic_log中,每2分钟生成一次。通过搜索:__topic__: consumergroup_log,就可以搜索所有的消费组延时日志。

查询test-consumer-group这个消费组的消费延时:
  • 查询语句
    __topic__: consumergroup_log and consumer_group:  test-consumer-group | SELECT max_by(fallbehind, __time__) as fallbehind
  • 查询截图:
    查询截图

Logtail异常监控

Logtail是否正常运行关系到日志的完整性,如果用户能够及时发现Logtail的异常状况,就能尽快调整Logtail配置,使日志不会丢失。

Logtail的异常日志可以通过如下方式搜索:__topic__: logtail_alarm

查询15分钟各种异常类型的次数:
  • 查询语句
    __topic__: logtail_alarm | select sum(alarm_count)as errorCount, alarm_type  GROUP BY alarm_type
  • 查询截图
    查询截图

Logstore写入流量监控

通过计量日志,我们可以统计一个小时内的读写流量,但是如果需要统计更精确的时间范围,如15分钟内的读写流量,则需要使用操作日志。用户的每次操作都对应一次请求,每次请求都会产生一条操作日志。以15分钟为例,我们只需要统计所有写入操作的流量总和即可。
  1. 统计15分钟内Logstore写入的原始日志流量和压缩流量:
    • 查询语句
      Method: PostLogStoreLogs AND Project: my-project and LogStore: my-logstore | SELECT sum(InFlow) as raw_bytes, sum(NetInflow) as network_bytes
    • 查询截图
      查询截图
  2. 查询15分钟内写入网络流量的下降百分比:
    • 查询语句
      Method: PostLogStoreLogs AND Project: my-project and LogStore: my-logstore | select round((diff[1]-diff[2])/diff[1],2) as rate from (select compare(network_bytes, 900) as diff from (select sum(NetInflow) as network_bytes from log))
    • 查询截图
      查询截图
  3. 创建告警:
    设置大于50%时告警
    创建告警

操作审计

Project下所有资源的操作日志保存在internal-operation_log中,每行日志不仅会记录操作相关的信息,如创建机器组会记录机器组名称,操作Logstore会记录Logstore名称等,还会记录对应操作的用户信息。目前,用户信息可以分为如下类型:
类型 字段
主账户
  • InvokerUid:主账户Aliuid。
  • CallerType:Parent。
子账户
  • InvokerUid:子账户Aliuid。
  • CallerType:Subuser。
Sts
  • InvokerUid:主账户Aliuid。
  • CallerType:Sts。
  • RoleSessionName:<session名称>。
通过上述信息就能知道不同操作日志对应的用户信息。