日志服务
( Log Service
,简称 SLS
)是针对日志类数据的一站式服务,在阿里巴巴集团经历大量大数据场景锤炼而成。您无需开发就能快捷完成日志数据采集、消费、投递以及查询分析等功能,提升运维、运营效率,建立 DT 时代海量日志处理能力。日志是一个庞大的数据体,我们可以将自己的请求日志、系统日志等放入阿里云日志服务中,阿里云日志服务每月提供了500M的空间。
我这里使用 PHP SDK
接入阿里云的日志服。
创建 Project
开启阿里云日志服务,首先在控制台中创建 Project
及 Logstore
创建完成后,会提示你选择需要的服务,因为我使用的是 PHP SDK
接入,我这里选择的是 PHP
,当然,你也可以选择 JAVA
, Python
, Mysql
, Redis
, Nginx
, K8S
等等
下载SDK
阿里云提供了各个语言的SDK:
接入SDK
1、将SDK包放到自己项目目录中,我放到 libs 下
2、自动加载,在composer.json中添加自动加载
"autoload": {
"classmap": [
"libs/aliyun-log"
]
},
composer dump-autoload
3、日志采集
function putLog(array $content) {
$accessKeyId = 'accessKeyId';
$accessKeySecret = 'accessKeySecret';
$endpoint = 'cn-hangzhou.log.aliyuncs.com';
$project = 'test';
$logstore = 'logs';
$client = new \Aliyun_Log_Client($endpoint, $accessKeyId, $accessKeySecret, '');
$topic = 'request';
$logItem = new \Aliyun_Log_Models_LogItem();
$logItem->setTime(time());
$logItem->setContents($content);
$logItems = [$logItem];
$request = new \Aliyun_Log_Models_PutLogsRequest($project, $logstore, $topic, null, $logItems);
try {
dd($client->putLogs($request));
} catch (\Aliyun_Log_Exception $e) {
dd($e->getMessage(),$e->getCode());
Log::debug($e->getErrorMessage());
} catch (\Exception $e) {
dd($e->getMessage(),2);
Log::debug($e->getMessage());
}
}
$content = [
'device': 'Mac OS',
'ip' => '172.17.0.1',
'method' => 'GET',
'params' => [],
'uri' => '/',
'visited_at' => date('Y-m-d H:i:s')
];
putLog($content);
4、查看效果,发现报错了
这是因为没有给RAM授权的原因,阿里云的授权搞得有点复杂,这一块我是一脸懵逼,我就简单说下日志服务的授权步骤
RAM授权
1、在日志服务控制台左侧菜单选择权限助手:
2、生成授权策略,点击“复制到剪贴板”
3、创建权限策略
在RAM访问控制台中,选择“权限策略管理” —> “创建权限策略”,自定义输入策略名称,选择“脚本配置”,并将刚复制的授权策略json粘贴到文本域中
4、创建RAM角色
“RAM角色管理” —> “创建RAM角色”
5、给RAM角色授权
左侧菜单选择“授权” —> “新增授权”
被授权主体选项框中选择刚创建的RAM角色,然后选择自定义策略,搜索刚创建的策略,然后保存
最后
日志写入成功