簡介
日志服務LogHub功能新增加了兩種預設标簽:日志寫入用戶端的公網IP位址和服務端接受日志的時間。用戶端公網IP可以用于統計用戶端的位置分布。服務端到達時間可以統計日志的實際到達服務端的時間。
使用者開通之後,使用SDK,WebTracking等方式寫入日志時,日志服務會記錄用戶端IP位址和日志到達服務端的時間,并作為如下标簽儲存到Tag字段中,如圖1所示:
- __client_ip___: 用戶端的公網IP位址;
- __receive_time___: 服務端接受日志的時間,格式為Unix時間戳,如1537145311。

圖1 添加标簽
如何開通
使用者隻需在LogStore上打開記錄外網IP。新建立LogStore時,開關預設打開,如圖2所示。對于已經存在的LogStore,使用者也可以通過修改頁面開通。
圖2 開通記錄外網IP
注意:
- 日志服務隻會添加公網IP到标簽中,如果用戶端IP是内網IP,則不會出現在标簽中。
- 暫不支援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地理函數和可視化圖表結合,将用戶端分布在地圖上可視化展示,例如統計每個地點寫入的日志條數:
圖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等存儲
- OSS: 預計10月底支援投遞标簽功能。
- MaxCompute: DataWorks 9月底上線投遞标簽功能,上線之後使用者可以選擇使用DataWorks投遞。
控制台使用示範: