关联PostgreSQL数据源

本文介绍如何创建外部存储,建立日志服务与PostgreSQL数据库的关联。

前提条件

  • 已采集数据到日志服务。具体操作,请参见数据采集

  • 已经安装日志服务CLI并且配置服务入口和访问密钥

  • 已将数据存储到阿里云RDS PostgreSQL数据库、阿里云ADB PostgreSQL数据库或阿里云实时数仓Hologres。

  • PostgreSQL数据库在阿里云VPC内网域内,RDS实例、ADB实例或Hologres实例必须与日志服务Project处于同一地域。

    重要

    不支持直接使用公网地址连接PostgreSQL数据库。

背景信息

日志服务外部存储功能支持日志服务与阿里云RDS PostgreSQL数据库、阿里云ADB PostgreSQL数据库或阿里云实时数仓Hologres关联,您还可以将查询分析结果写入PostgreSQL数据库中,便于进一步处理结果。

操作步骤

1. 设置白名单

RDS PosrgreSQL数据库

需添加白名单地址100.104.0.0/16、11.194.0.0/1611.201.0.0/16。更多信息,请参见设置白名单

阿里云实时数仓Hologres

需添加白名单地址100.104.0.0/16、11.194.0.0/1611.201.0.0/16。更多信息,请参见IP白名单

ADB PostgreSQL数据库

需添加白名单地址100.104.0.0/16、11.194.0.0/1611.201.0.0/16。更多信息,请参见设置白名单

2. 创建ExternalStore

  1. 登录安装CLI所在的服务器,在命令行执行touch命令,创建配置文件/home/shell/config.json。在config.json中添加如下脚本。根据实际情况您需要替换regionvpc-idhostportusernamepassworddbtable的值。

    参数说明

    示例

    {
        "externalStoreName":"sls_join_meta_store",
        "storeType":"postgresql",
        "parameter":{
            "region":"cn-qingdao",
            "vpc-id":"vpc-m5eq4irc1pucp*******",
            "host":"localhost",
            "port":"3306",
            "username":"user",
            "password":"****",
            "db":"scmc",
            "table":"join_meta"
        }
    }

    externalStoreName

    ExternalStore名称,必须小写。

    storeType

    数据源类型,固定为postgresql。

    region

    地域,比如cn-wulanchabu、cn-hangzhou

    重要

    RDS实例、Hologres实例或者ADB实例必须与日志服务Project处于同一地域。

    vpc-id

    VPC ID。详细说明如下:

    • 如果是专有网络下的RDS PostgreSQL数据库,则配置vpc-idRDS实例所属专有网络的ID。

    • 如果是专有网络下的ADB PostgreSQL数据库,则配置vpc-idADB实例所属专有网络的ID。

    • 如果是专有网络下阿里云Hologres数据库,则配置vpc-id为阿里云Hologres所属专有网络的ID。

    host  

    数据库内网地址。

    port

    数据库实例端口号。

    username

    数据库用户名。

    password

    数据库密码。

    db

    数据库名。

    table

    数据库表名,支持两种格式:

    1. table_name,例如test。

    2. schema_name.table_name,例如public.test。

  1. 在命令行执行如下命令,创建ExternalStore。其中project_name为日志服务Project名称,请根据实际情况替换,本文以log-rds-demo为例。

    aliyunlog log create_external_store --project_name="log-rds-demo" --config="file:///home/shell/config.json" 
  2. 查询ExternalStore信息。命令执行成功后,无响应消息。您可以执行aliyunlog log get_external_store --project_name="log-rds-demo" --store_name="sls_join_meta_store" --format-output=json查询RDS PostgreSQL外部数据源详细信息。查询信息如下:

    {
     "externalStoreName": "sls_join_meta_store",
     "parameter": {
     "db": "postgres",
     "host": "rm-bp1******rm76.pg.rds.aliyuncs.com",
     "port": "5432",
     "region": "cn-wulanchabu",
     "table": "test",
     "timezone": "",
     "username": "user",
     "vpc-id": "vpc-m5eq4irc1pucp*******"
     },
     "storeType": "postgresql"
    }

3. 查询关联的PostgreSQL数据

关联外部数据源后,您可以在日志服务控制台,名为log-rds-demoProject下,单击任意Logstore,通过查询分析语句* | select * from sls_join_meta_store查询关联的PostgreSQL数据。

image

相关操作

  • 更新PostgreSQL外部存储。

    aliyunlog log update_external_store --project_name="log-rds-demo" --config="file:///home/shell/config.json" 
  • 删除PostgreSQL外部存储。

    aliyunlog log delete_external_store --project_name="log-rds-demo" --store_name=sls_join_meta_store