日志服务提供嵌入式集成查询分析和仪表盘等页面功能,方便您查看日志数据。

背景信息

为使您在配置完成日志服务采集和查询分析等功能后,能直接使用日志服务的查询分析和仪表盘页面功能,并将日志数据分享给其他用户进行查看,同时避免使用RAM会带来众多RAM账号的管理成本。日志服务提供指定日志库查询页面和仪表盘页面嵌入自建Web功能,不需要登录日志服务控制台即可直接访问日志服务查询分析和仪表盘等页面,访问后可以通过授权RAM用户限制操作权限,例如授予只读权限。

操作流程如下图所示。访问流程

操作步骤

  1. 登录自建Web,通过Web服务端访问令牌服务(STS)获取临时AK信息和安全Token。
  2. 调用STS SDK服务接口获取临时访问凭证STS AK与SecurityToken。
    说明 STS返回的SecurityToken中可能包含特殊字符,请将特殊字符进行URL编码后再输入。
    请求示例:
    http://signin.aliyun.com/federation?Action=GetSigninToken
                        &AccessKeyId=<STS返回的临时AK>
                        &AccessKeySecret=<STS返回的临时Secret>
                        &SecurityToken=<STS返回的安全Token>
                        &TicketType=mini
  3. 调整SecurityToken有效期。

    SecurityToken默认有效期为15分钟~60分钟,您可以参见本步骤调整SecurityToken的最大有效期为12小时。

    1. RAM控制台,修改目标RAM角色的最大会话时间为12小时。
      ran角色
    2. RAM控制台,修改目标RAM用户的登录Session过期时间为12小时。
      ram用户
    3. 修改免登录代码中的setDurationSeconds字段的值为43200L。
      此处以JAVA代码为例。
      AssumeRoleRequest assumeRoleReq = new AssumeRoleRequest();
      assumeRoleReq.setRoleArn(roleArn);
      assumeRoleReq.setRoleSessionName(roleSession);
      assumeRoleReq.setMethod(MethodType.POST);
      assumeRoleReq.setDurationSeconds(43200L);
  4. 生成免登录链接。
    1. 获取日志服务页面链接。
      • 完整查询分析页面:
        https://sls4service.console.aliyun.com/lognext/project/<Project名称>/logsearch/<日志库名称>?hideTopbar=true&hideSidebar=true
      • 查询页面:
        https://sls4service.console.aliyun.com/lognext/project/<Project名称>/logsearch/<日志库名称>?isShare=true&hideTopbar=true&hideSidebar=true
      • 仪表盘页面:
        https://sls4service.console.aliyun.com/lognext/project/<Project名称>/dashboard/<仪表盘ID>?isShare=true&hideTopbar=true&hideSidebar=true
        说明 上述链接中仪表盘ID为网页链接上的ID,并非仪表盘的展示名称。
    2. 将获取到的登录Token与日志服务页面链接一并生成免登录访问链接。
      请求示例:
      http://signin.aliyun.com/federation?Action=Login
                                  &LoginUrl=<登录失效跳转的地址,一般配置为自建Web配置302跳转的URL。>
                                  &Destination=<实际访问日志服务页面,支持查询页面和仪表盘页面。如果有参数,则需要使用encodeURL对参数进行转码。>
                                  &SigninToken=<获取的登录Token>

示例

Java、PHP和Python代码示例如下:
  • JAVA
    <dependency>
        <groupId>com.aliyun</groupId>
        <artifactId>aliyun-java-sdk-sts</artifactId>
        <version>3.0.0</version>
    </dependency>
    <dependency>
        <groupId>com.aliyun</groupId>
        <artifactId>aliyun-java-sdk-core</artifactId>
        <version>3.5.0</version>
    </dependency>
    <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpclient</artifactId>
        <version>4.5.5</version>
    </dependency>
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>fastjson</artifactId>
        <version>1.2.47</version>
    </dependency>
  • PHP
  • Python
  • Go