什么是SLS

阿里云日志服务(Log Service)快速分析功能提供给用户一键交互式查询体验,意图帮助用户快速分析某一字段在一段时间内的分布情况,减少用户索引关键数据的成本。通过快速采集,用户可以在阿里云平台进行(Syslog、accesslog)日志分析,也可以将日志导入到kafka消息队列、ODPS(类似mapreduce)进行分析,从而快速发现技术故障、漏洞与风控欺诈问题。

【20180520】阿里云日志服务SLS初体验 - 图1

前几年吹得比较火的”态势感知”,很多做安全概念的公司到客户的公司环境一看,发现连日志都没有,于是转变成了重点攻克日志采集与日志存储。若是大公司和国企如电信等,光是日志收集采集清楚覆盖全,就已经能够他们忙活大半年了。

快速入门(QuickStart)

云控制台安装与配置

  1. 阿里云日志服务SLS的入口在这里https://sls.console.aliyun.com/

  2. 可以新建一个project,然后选择对应的区域(region),区域(region)与后续SDK中的endpoint有关,在此Demo中我建议选择“华北5”,因为下面例子以华北5为例。

【20180520】阿里云日志服务SLS初体验 - 图2

  1. 一路点下去,直到完成一个Logstore的生成,在”数据接入向导”的地方,选择自定义数据中的API/SDK,这个用起来最简单且不需其他依赖。

logstore的安装与发包测试

  1. 完成云控制台的配置之后,我们可以下载python版本的SDK和Java版本的SDK进行试用了。其中资料可以在附录中找到。

  2. 以python版本的SDK为例,Sample代码下载下来后,你遇到的一个重要问题肯定是Endpoint如何填写以及accessid,accesskey的填写。endpoint如果是华北5的话可以填写cn-huhehaote.log.aliyuncs.com,其他Region的话需要自己找。

  3. 仔细阅读SDK中的sample.py代码,你会发现技术体系包含project,logstore,topic。前两个都是你在控制台填写的名称,后面这个topic是SDK中传需的,它将在”日志查询”中用于筛选日志。

【20180520】阿里云日志服务SLS初体验 - 图3

  1. python的SDK的使用大致如下,如果你靠复制粘贴使用时报错,可能你需要下载附录中阿里云的SLS三方库。
  1. #!/usr/bin/env python
  2. #encoding: utf-8
  3. import time
  4. from aliyun.log.logexception import LogException
  5. from aliyun.log.logitem import LogItem
  6. from aliyun.log.logclient import LogClient
  7. from aliyun.log.getlogsrequest import GetLogsRequest
  8. from aliyun.log.putlogsrequest import PutLogsRequest
  9. from aliyun.log.listtopicsrequest import ListTopicsRequest
  10. from aliyun.log.listlogstoresrequest import ListLogstoresRequest
  11. from aliyun.log.gethistogramsrequest import GetHistogramsRequest
  12. from aliyun.log.index_config import *
  13. from aliyun.log.logtail_config_detail import *
  14. from aliyun.log.machine_group_detail import *
  15. from aliyun.log.acl_config import *
  16. def sample_put_logs(client, project, logstore):
  17. topic = 'log_demo'
  18. source = ''
  19. contents = [
  20. ('key_1', 'key_1'),
  21. ('key_2', 'key_2'),
  22. ('key_3', 'key_3'),
  23. ('avg', '30')
  24. ]
  25. logitemList = [] # LogItem list
  26. logItem = LogItem()
  27. logItem.set_time(int(time.time()))
  28. logItem.set_contents(contents)
  29. for i in range(0, 1) :
  30. logitemList.append(logItem)
  31. request = PutLogsRequest(project, logstore, topic, source, logitemList)
  32. response = client.put_logs(request)
  33. response.log_print()
  34. if __name__=='__main__':
  35. endpoint = 'cn-huhehaote.log.aliyuncs.com'
  36. accessKeyId = ''
  37. accessKey = ''
  38. project = 'leguhuabei5'
  39. logstore = 'legu_test001'
  40. token = ""
  41. client = LogClient(endpoint, accessKeyId, accessKey,token)
  42. try :
  43. i = 0
  44. while (i<1000):
  45. sample_put_logs(client, project, logstore)
  46. time.sleep(1)
  47. except LogException, e:
  48. print e

正常运行时会是如下这样子的反馈:
【20180520】阿里云日志服务SLS初体验 - 图4

查看采集结果

  1. 在阿里云官网云控制台,可以点击”日志消费”下的预览查看服务端收集到的日志,”查询分析”处也可以查看采集到的日志。

【20180520】阿里云日志服务SLS初体验 - 图5

逻辑与概念

  • webTracking是什么? — 不知道,暂不计划在这里讲。

  • 其他几种日志类型,如logtail采集、nginx采集如何使用? — 不知道,暂不计划在这里讲。

  • 如何使用logtail采集? — 不知道,暂不计划在这里讲。

附录

  • 官方教程(显然并不是站在使用者角度写的,文档组织结构该换一种表达方式 … )

https://help.aliyun.com/document_detail/43772.html?spm=a2c4g.11186623.4.1.y8zn9e

  • Endpoint的文档看这里
  1. [https://help.aliyun.com/document_detail/29008.html?spm=5176.2020520112.108.1.52d234c0ucMr2t](https://help.aliyun.com/document_detail/29008.html?spm=5176.2020520112.108.1.52d234c0ucMr2t)
  • python版本的SDK
  1. [https://github.com/aliyun/aliyun-log-python-sdk?spm=a2c4g.11186623.2.5.JjeNlC](https://github.com/aliyun/aliyun-log-python-sdk?spm=a2c4g.11186623.2.5.JjeNlC)
  • Java版本的SDK
  1. [https://help.aliyun.com/document_detail/29068.html?spm=a2c4g.11186623.6.825.ODmyJ4](https://help.aliyun.com/document_detail/29068.html?spm=a2c4g.11186623.6.825.ODmyJ4)