LogHub新增公网IP/服务端到达时间标签

本文涉及的产品
对象存储 OSS,20GB 3个月
文件存储 NAS,50GB 3个月
阿里云盘企业版 CDE,企业版用户数5人 500GB空间
简介: 日志服务LogHub功能新增加了两种默认标签:日志写入客户端的公网IP地址和服务端接受日志的时间。客户端公网IP可以用于统计客户端的位置分布。服务端到达时间可以统计日志的实际到达服务端的时间。

简介

日志服务LogHub功能新增加了两种默认标签:日志写入客户端的公网IP地址和服务端接受日志的时间。客户端公网IP可以用于统计客户端的位置分布。服务端到达时间可以统计日志的实际到达服务端的时间。

用户开通之后,使用SDK,WebTracking等方式写入日志时,日志服务会记录客户端IP地址和日志到达服务端的时间,并作为如下标签保存到Tag字段中,如图1所示:

  • __client_ip___: 客户端的公网IP地址;
  • __receive_time___: 服务端接受日志的时间,格式为Unix时间戳,如1537145311。

20180918092307

图1 添加标签

如何开通

用户只需在LogStore上打开记录外网IP。新创建LogStore时,开关默认打开,如图2所示。对于已经存在的LogStore,用户也可以通过修改页面开通。
image

图2 开通记录外网IP

注意

  1. 日志服务只会添加公网IP到标签中,如果客户端IP是内网IP,则不会出现在标签中。
  2. 暂不支持Logtail客户端。使用Logtail采集日志时,客户端IP已经包含在source字段中。

如何消费

查询分析中消费

用户可以像使用其他自定义标签一样对这两个标签进行消费和在控制台上查询。查询tag中的字段时,需要添加 “__tag__” 前缀。如查询IP地址为220.111.23.88的客户端写入的日志:

__tag__:__client_ip__:  220.111.23.88

标签字段同样支持模糊查询:

__tag__:__client_ip__:  220.*

同时日志服务也提供了大量的IP地理函数,如根据IP查询客户端所在城市:

* | SELECT ip_to_city("__tag__:__client_ip__") as city

将IP地理函数和可视化图表结合,将客户端分布在地图上可视化展示,例如统计每个地点写入的日志条数:

20180917133309.png | center | 827x359


图3 写入日志客户端分布

查询语句为:

* | SELECT count(1) as count, ip_to_geo("__tag__:__client_ip__") as geo GROUP BY geo

查看全部地理函数

日志到达服务端时间戳也可以用于查询,如查询到达时间戳为1537090887的日志:

__tag__:__receive_time__: 1537090887

通过SDK或消费组消费

当使用SDK或者消费组消费时,可以通过LogGroup对象的Tag属性中获取客户端IP和到达时间。以使用Java SDK为例,可以通过如下方式获取到客户端IP和日志到达服务端时间:

BatchGetLogRequest request = new BatchGetLogRequest(...);
BatchGetLogResponse response = client.BatchGetLog(request);
for (LogGroupData data : response.GetLogGroups()) {
    Logs.LogGroup logGroup = data.GetLogGroup();
    for (Logs.LogTag tag : logGroup.getLogTagsList()) {
        if (tag.getKey().equals("__client_ip__")) {
            // 写入日志的客户端IP地址
            String clientIp = tag.getValue();
            // ...
        } else if (tag.getKey().equals("__receive_time__")) {
            // 日志到达服务端时间戳
            String timestamp = tag.getValue();
            // ...
        }
    }
}

流计算消费

日志服务支持多种流计算平台将其作为流式数据输入,以使用Blink消费日志为例,假设用户的原始日志数据为如下格式:

{
    "a": 1000,
    "b": 1234,
    "c": "li"
}

为了能够从日志服务消费数据,用户需要创建如下DDL:

create table sls_stream(
    a int,
    b int,
    c varchar
) with (
    type ='sls',
    endPoint ='http://cn-hangzhou-corp.sls.aliyuncs.com',
    accessId ='your access key id',
    accessKey ='your access key',
    startTime = '2017-07-05 00:00:00',
    project ='ali-cloud-streamtest',
    logStore ='stream-test',
    consumerGroup ='consumerGroupTest1'
);

除type外的各项参数用户需要根据实际情况替换。开通记录外网IP后,用户可以使用如下DDL在Blink消费新增的__client_ip__ 和__receive_time__ 标签:

create table sls_stream(
    __client_ip__  varchar HEADER,
    __receive_time__ varchar HEADER,
    a int,
    b int,
    c varchar
) with (
    type ='sls',
    endPoint ='http://cn-hangzhou-corp.sls.aliyuncs.com',
    accessId ='xxxxxxxxxxx',
    accessKey ='xxxxxxxxxxxxxxxxxxxxxxxxxxxx',
    startTime = '2017-07-05 00:00:00',
    project ='ali-cloud-streamtest',
    logStore ='stream-test',
    consumerGroup ='consumerGroupTest1'
);

MaxCompute/OSS等存储

  1. OSS: 预计10月底支持投递标签功能。
  2. MaxCompute: DataWorks 9月底上线投递标签功能,上线之后用户可以选择使用DataWorks投递。

控制台使用演示:

相关资料

  1. 消费组消费
  2. 日志格式
  3. 操作LogStore
  4. IP地理函数
相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
4月前
|
SQL 关系型数据库 MySQL
实时数仓 Hologres操作报错合集之遇到报错:连接到 FE 失败,剩余的连接槽保留用于非复制超级用户连接,该怎么处理
在使用阿里云实时数仓Hologres时,可能会遇到不同类型的错误。例如:1.内存超限错误、2.字符串缓冲区扩大错误、3.分区导入错误、4.外部表访问错误、5.服务未开通或权限问题、6.数据类型范围错误,下面是一些常见错误案例及可能的原因与解决策略的概览。
|
5月前
|
负载均衡 Kubernetes 网络协议
如何在集群的负载均衡过程保留请求源IP
本文探讨了在Kubernetes (k8s)集群中如何确保服务获取到请求的源IP。通常,源IP可能会因网络地址转换(NAT)和代理服务器而丢失。为保留源IP,文章建议在代理服务器层添加HTTP头`X-REAL-IP`字段。在K8s中,通过设置`externalTrafficPolicy: Local`可保留源IP,但这会牺牲负载均衡。使用Ingress时,可通过配置Ingress Controller的`use-forwarded-headers`并调整ConfigMap来同时保留源IP和实现负载均衡。文章适用于对网络和K8s感兴趣的读者。
121 3
|
5月前
|
弹性计算 Shell Apache
某时间段访问apache 服务器的请求IP
【4月更文挑战第29天】
49 2
|
11月前
|
对象存储
尝试增加OSS客户端的超时时间
尝试增加OSS客户端的超时时间
663 4
如何避免错误配置的应用接收用户流量?
如何避免错误配置的应用接收用户流量?
|
网络协议 Shell Perl
根据web访问日志,封禁请求量异常的IP,如IP在半小时后恢复正常,则解除封禁
根据web访问日志,封禁请求量异常的IP,如IP在半小时后恢复正常,则解除封禁
98 1
|
消息中间件 Kafka
多网络情况下,Kafka客户端如何选择合适的网络发起请求
我们都知道, 每个Broker都可以配置多个监听器, 用来用于网络分流。 相关知识请看:一文搞懂Kafka中的listeners和advertised.listeners以及其他通信配置
多网络情况下,Kafka客户端如何选择合适的网络发起请求
|
存储 安全 关系型数据库
插件未购买或已到期,请重新绑定帐号后重试,如操作无效,请将服务器出口IP改为:8XX.XXX.XX.XX
插件未购买或已到期,请重新绑定帐号后重试,如操作无效,请将服务器出口IP改为:8XX.XXX.XX.XX
805 0
|
人工智能 Linux
VOS 媒体转发开启后,如何计算各种编码所占用的带宽,以及如何修改服务器的时区
计算方法如下: 带宽 = 包长度 × 每秒包数 = 包长度 × (1 / 打包周期) =(Ethernet 头 + IP 头 + UDP 头 + RTP 头 + 有效载荷)× 每秒包数 =(112bit + 160bit + 64bit + 96bit + 有效载荷)× 每秒包数 =(112bit + 320bit + 有效载荷)× 每秒包数 =(432bit + 有效载荷)× 每秒包数 =(432bit × 每秒包数) + (有效载荷 × 每秒包数) =(432bit × 1000 / 打包周期) + 编码速率 =(432bit / 打包周期)Kbps + 编码速率 按照上面的计算公式: G
|
Windows
批量创建IP方法
以下教程,将告诉大家如何在Windows系统中通过命令行,批量添加IP。目标,在本机的的网卡名称为“本地连接”的网卡中,批量添加192.168.1段的ip地址,起开始IP为10,每次增加1,知道22为止,即括号的三个参数。
990 0
下一篇
无影云桌面