前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >内嵌日志服务控制台

内嵌日志服务控制台

原创
作者头像
日志服务CLS小助手
发布2021-02-07 10:59:35
8480
发布2021-02-07 10:59:35
举报
文章被收录于专栏:日志服务CLS日志服务CLS

一、简介

日志服务提供 日志服务控制台 内嵌到其他系统的能力,满足不需要登录腾讯云控制台即可查询分析日志的诉求。通过内嵌日志服务控制台页面,可以给用户带来以下方便:

  • 在外部系统服务中(例如公司内部运维或运营系统)快速集成日志服务的查询分析能力。
  • 无需管理众多腾讯云子账号,方便将日志数据分享给他人进行查看。

内嵌页面示例代码:cls-iframe-demo

以下为内嵌日志服务控制台流程图:

img
img

前提条件

  1. 用户根据业务情况,登录 访问管理 CAM 控制台,创建 CAM 角色且允许登录控制台(角色载体为用户主账号,例如 CompanyOpsRole),并为 CAM 角色配置相应的访问权限,例如只读策略权限 QcloudCLSReadOnlyAccess。您可以 通过控制台通过 API 创建 CAM 角色:
    • 通过控制台创建 CAM 角色
      1. 登录 访问管理 CAM 控制台。
      2. 单击左侧菜单栏中的【角色】,进入角色页面。
      3. 选择【新建角色】>【腾讯云账户】,开始新建自定义角色。
      4. 选择【当前主账号】并勾选【允许当前角色服务控制台】,单击【下一步】。
      输入角色载体
      输入角色载体

注意: 若无 “允许角色登录控制台” 选项,请 提交工单 联系我们开通白名单。

e.为角色设置访问策略,例如只读策略权限 QcloudCLSReadOnlyAccess,单击【下一步】。

配置角色访问策略
配置角色访问策略

f. 输入角色名,完成创建。

审阅
审阅

通过 API 创建 CAM 角色: 创建角色请参见 创建角色 API 文档,其中,ConsoleLogin 需要填入1,允许角色登录控制台。 例如请求示例:

代码语言:javascript
复制
https://cam.tencentcloudapi.com/?Action=CreateRole&RoleName=CompanyOpsRole&ConsoleLogin=1&PolicyDocument={"version":"2.0","statement":[{"action":["cls:get*","cls:list*","cls:GetHistogram","cls:GetFastAnalysis","cls:GetChart","cls:ListChart","cls:ListDashboard","cls:GetDashboard","cls:searchLog","cls:downloadLog","cls:pullLogs"],"effect":"allow","principal":{"qcs":["qcs::cam::uin/100001234567:root"]}}]}

2. 获取当前用户的访问密钥。如何获取持久密钥,可参见主账号访问密钥管理文档。

操作步骤

  1. 用户登录访问腾讯云外部的 Web 服务。
  2. Web 服务端根据登录用户身份分配对应的角色名,例如 CompanyOpsRole(需预先创建好,此为前提条件1)。
  3. Web 服务端系统根据角色名访问腾讯云 STS 服务,使用前提条件2中获取到的访问密钥调用 AssumeRole 接口,申请角色 CompanyOpsRole 的临时密钥。
  4. 用户调用 AssumeRole 接口成功后,获取到角色 CompanyOpsRole 的临时密钥。
  5. 用户通过该角色的临时密钥生成登录签名信息。详细可参考以下步骤: - 参数排序 对要求签名的参数按照字母表或数字表递增顺序的排序,先考虑第一个字母,在相同的情况下考虑第二个字母,依此类推。您可以借助编程语言中的相关排序函数来实现这一功能,例如 PHP中 的 ksort 函数。其中签名参数包含以下内容:

参数名称

必选

类型

描述

action

String

操作动作,固定为roleLogin

timestamp

Int

当前时间戳

nonce

Int

随机整数,取值1000-100000000

secretId

String

STS 返回的临时 AK

- 拼接参数 将上一步排序好的请求参数,按“参数名称=参数值”拼接,例如

代码语言:javascript
复制
action=roleLogin&nonce=67439&secretId=AKI***PLE&timestamp=1484793352

- 拼接签名串 按请求方法 + 请求主机 +请求路径 + ? + 请求字符串的规则拼接签名串。 参数必选描述请求主机和路径是固定为cloud.tencent.com/login/roleAccessCallback请求方法是支持 GET 或 POST 签名串示例

代码语言:javascript
复制
GETcloud.tencent.com/login/roleAccessCallback?action=roleLogin&nonce=67439&secretId=AKI***PLE&timestamp=1484793352

- 生成签名串 使用 HMAC-SHA1 算法对字符串签名,目前支持 HMAC-SHA1 和 HMAC-SHA256。具体代码如下,以 PHP 语言为例:

代码语言:javascript
复制
$secretKey = 'Gu5***1qA'; 
$srcStr    = 'GETcloud.tencent.com/login/roleAccessCallback?action=roleLogin&nonce=67439&secretId=&timestamp=1484793352'; 
$signStr   = base64_encode(hash_hmac('sha1', $srcStr, $secretKey, true)); 
echo $signStr;

PHP 版本示例代码

代码语言:javascript
复制
<?php
 $secretId  = "AKI***";            //STS 返回的临时 AK 
$secretKey = "Gu5***PLE";         //STS 返回的临时 
Secret $token     = "ADE***fds";         //STS 返回的安全 TOKEN 
$param["nonce"]     = 11886;      //rand(); 
$param["timestamp"] = 1465185768; //time(); 
$param["secretId"]  = $secretId; 
$param["action"]    = "roleLogin"; 
ksort($param); 
$signStr = "GETcloud.tencent.com/login/roleAccessCallback?"; 
foreach ( $param as $key => $value ) { $signStr = $signStr . $key . "=" . $value . "&"; 
} 
$signStr   = substr($signStr, 0, -1); 
$signature = base64_encode(hash_hmac("sha1", $signStr, $secretKey, true)); 
echo $signature.PHP_EOL;

6. 拼接完整登录信息以及目的页面地址进行登录。

a. 获取日志服务控制台检索分析页面。

代码语言:javascript
复制
https://console.cloud.tencent.com/cls/search?region=<region>&logset_id=<logset_id>&topic_id=<topic_id>

b. 拼接完整登录信息以及目的页地址进行登录,**参数值需要 urlencode 编码**。

代码语言:javascript
复制
https://cloud.tencent.com/login/roleAccessCallback 
?algorithm=<签名时加密算法,目前只支持 sha1 和 sha256 ,不填默认 sha1 
&secretId=<签名时 secretId> 
&token=<临时密钥 token> 
&nonce=<签名时 nonce> 
&timestamp=<签名时 timestamp> 
&signature=<签名串> 
&s_url=<登录后目的 URL>

7. 使用生成的最终链接,访问腾讯云日志服务控制台页面。例如检索分析页面的内嵌访问链接如下:

代码语言:javascript
复制
https://cloud.tencent.com/login/roleAccessCallback?nonce=52055817&s_url=https%3A%2F%2Fconsole.cloud.tencent.com%2Fcls%2Fsearch%3Fregion%3Dap-guangzhou%26start_time%3D2020-05-26%25252014%25253A01%25253A18%26end_time%3D2020-05-26%25252014%25253A16%25253A18&secretId=AKID-vHJ7WPHcy_RVIOm-QTIktXOf9S9z_k_JackOp3dyQPJwmDrNLQJuiNuw9******&signature=eXeWaDn6iJlcPp1sqqGd6m9%2FQk****&timestamp=1592455018&token=5e4vuBHL7fBQPi1V9fvSINw4Vu7PSr9Ic3de78b86109c171eb4e3ea27c137c1fIWKU8JC-LO01L87sIYlfTSaHHXeHcqim7Jg9hBuN2nbdfgeBUPXhmpyAk4G6e9bHFZ-7yNRig7Y33CQHxh6jOesP4VfhRzQprWGRtC5No1ty******-aoj_WJhA55oyvqaqxw2jtTdh8nx9OjJr3tlbIa9oJe7aZYoPbdpFqrF6ZjlCPPap2yQB_SkUsWwDl_9BrK2Km3U2IocdvQ7QxrW0ts1aiBi7xtTSJRcfkBYPYEV_YoJrtkhYW3E4L47imA1bfVAjM9F5uKWzVzsDGDT0aCUU9mqdb4vjJrY8tm-wJKKEe8eiyY9EbkH3VWnFV2YocYNDJqFyjKOWR******

日志服务控制台检索分析页面 URL 参数说明:

参数名称

必选

类型

描述

region

String

地域简称,例如:ap-shanghai 表示上海地域,其他可用地域简称,请参见 可用地域

logset_id

String

日志集 ID

topic_id

String

日志主题 ID

start_time

String

要检索日志的起始时间,格式样例:2019-11-13 10:00:00

end_time

String

要检索日志的结束时间,格式样例:2019-11-13 20:00:00

query

String

关键字检索语法,若关键字中有 URL 保留字符,需要进行 UrlEncode 编码

hideWidget

Boolean

是否隐藏智能客服图标:true 表示隐藏,false 表示不隐藏

hideTopNav

Boolean

是否隐藏腾讯云控制台顶部导航栏:true 表示隐藏,false 表示不隐藏

hideLeftNav

Boolean

是否隐藏腾讯云控制台左侧导航栏:true 表示隐藏,false 表示不隐藏

hideHeader

Boolean

是否隐藏日志服务顶部导航栏(标题及地域选择):true 表示隐藏,false 表示不隐藏

hideTopTips

Boolean

是否隐藏日志服务顶部提示语框:true 表示隐藏,false 表示不隐藏

hideRegion

Boolean

是否隐藏日志服务顶部的地域选择按钮:true 表示隐藏,false 表示不隐藏

hideLogsetSelect

Boolean

是否隐藏日志服务日志集选择按钮:true 表示隐藏,false 表示不隐藏

hideTopicSelect

Boolean

是否隐藏日志服务日志主题选择按钮:true 表示隐藏,false 表示不隐藏

有任何问题欢迎大家加入企业微信群咨询:【云原生日志服务CLS】技术社区群(或者联系:v_ltvli加入)

云原生日志服务CLS技术社区群二维码
云原生日志服务CLS技术社区群二维码

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、简介
    • 前提条件
    • 操作步骤
    相关产品与服务
    日志服务
    日志服务(Cloud Log Service,CLS)是腾讯云提供的一站式日志服务平台,提供了从日志采集、日志存储到日志检索,图表分析、监控告警、日志投递等多项服务,协助用户通过日志来解决业务运维、服务监控、日志审计等场景问题。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档