SLS Indexing Service是E-MapReduce推出的一個(gè)Druid插件,用于從日志服務(wù)(Log Service,簡(jiǎn)稱SLS)消費(fèi)數(shù)據(jù)。

背景介紹

SLS Indexing Service優(yōu)點(diǎn)如下:
  • 極為便捷的數(shù)據(jù)采集,可以利用SLS的多種數(shù)據(jù)采集方式實(shí)時(shí)將數(shù)據(jù)導(dǎo)入SLS。
  • 無需額外維護(hù)一個(gè)Kafka集群,省去了數(shù)據(jù)流的一個(gè)環(huán)節(jié)。
  • 支持Exactly-Once語(yǔ)義。

    因?yàn)镾LS Indexing Service消費(fèi)原理與Kafka Indexing Service類似,所以也支持Kafka Indexing Service一樣的Exactly-Once語(yǔ)義。

  • 消費(fèi)作業(yè)高可靠保證,例如,作業(yè)失敗重試,集群重啟等。

準(zhǔn)備工作

  • 如果您還沒有開通SLS服務(wù),請(qǐng)先開通SLS服務(wù),并配置好相應(yīng)的Project和Logstore。
  • 準(zhǔn)備好以下配置項(xiàng)內(nèi)容:
    • SLS服務(wù)的Endpoint(請(qǐng)使用內(nèi)網(wǎng)服務(wù)入口)。
    • 阿里云賬號(hào)的AccessKey ID和對(duì)應(yīng)的AccessKey Secret。

使用SLS Indexing Service

  1. 準(zhǔn)備數(shù)據(jù)格式描述文件
    如果您熟悉 Kafka Indexing Service,那么 SLS Indexing Service 會(huì)非常簡(jiǎn)單。具體請(qǐng)參見Kafka Indexing Service的介紹,我們用同樣的數(shù)據(jù)進(jìn)行索引,那么數(shù)據(jù)源的數(shù)據(jù)格式描述文件如下(將其保存為 metrics-sls.json):
    {
        "type": "sls",
        "dataSchema": {
            "dataSource": "metrics-sls",
            "parser": {
                "type": "string",
                "parseSpec": {
                    "timestampSpec": {
                        "column": "time",
                        "format": "auto"
                    },
                    "dimensionsSpec": {
                        "dimensions": ["url", "user"]
                    },
                    "format": "json"
                }
            },
            "granularitySpec": {
                "type": "uniform",
                "segmentGranularity": "hour",
                "queryGranularity": "none"
            },
            "metricsSpec": [{
                    "type": "count",
                    "name": "views"
                },
                {
                    "name": "latencyMs",
                    "type": "doubleSum",
                    "fieldName": "latencyMs"
                }
            ]
        },
        "ioConfig": {
            "project": <your_project>,
            "logstore": <your_logstore>,
            "endpoint": "cn-hangzhou-intranet.log.aliyuncs.com",(以杭州為例,注意使用內(nèi)網(wǎng)服務(wù)入口)
            "accessKeyId": <your_access_key_id>,
            "accessKeySec": <your_access_key_secret>,
            "collectMode": "simple"/"other"
            "taskCount": 1,
            "replicas": 1,
            "taskDuration": "PT1H"
        },
        "tuningConfig": {
            "type": "sls",
            "maxRowsInMemory": "100000"
        }
    }
    對(duì)比Kafka Indexing Service一節(jié)中的介紹,我們發(fā)現(xiàn)兩者基本上是一樣的。這里簡(jiǎn)要列一下需要注意的字段:
    • type: sls。
    • dataSchema.parser.parseSpec.format:與ioConfig.consumerProperties.logtail.collection-mode有關(guān),也就是與SLS日志的收集模式有關(guān)。如果是極簡(jiǎn)模式(simple)收集,那么該處原本文件是什么格式,就填什么格式。如果是非極簡(jiǎn)模式(other)收集,那么此處取值為json。
    • ioConfig.project:您要收集的日志的project。
    • ioConfig.logstore: 您要收集的日志的logstore。
    • ioConfig.consumerProperties.endpoint: SLS內(nèi)網(wǎng)服務(wù)地址,例如杭州對(duì)應(yīng) cn-hangzhou-intranet.log.aliyuncs.com
    • ioConfig.consumerProperties.access-key-id:阿里云賬號(hào)的AccessKey ID。
    • ioConfig.consumerProperties.access-key-secret: 阿里云賬號(hào)的AccessKeySecret。
    • ioConfig.consumerProperties.logtail.collection-mode: SLS日志收集模式,極簡(jiǎn)模式填simple,其他情況填 other。
    重要 上述配置文件中的ioConfig 配置格式僅適用于EMR-3.20.0及之前版本。自EMR-3.21.0開始,ioConfig配置變更如下:
    "ioConfig": {
            "project": <your_project>,
            "logstore": <your_logstore>,
            "endpoint": "cn-hangzhou-intranet.log.aliyuncs.com",(以杭州為例,注意使用內(nèi)網(wǎng)服務(wù)入口)
            "accessKeyId": <your_access_key_id>,
            "accessKeySec": <your_access_key_secret>,
            "collectMode": "simple"/"other"
            "taskCount": 1,
            "replicas": 1,
            "taskDuration": "PT1H"
        },

    即,取消了 consumerProperties 層級(jí)、access-key-idaccess-key-secretlogtail.collection-mode 變更為 accessKeyIdaccessKeySeccollectMode

  2. 執(zhí)行下述命令添加SLS supervisor。
    curl --negotiate -u:druid -b ~/cookies -c ~/cookies -XPOST -H 'Content-Type: application/json' -d @metrics-sls.json http://emr-header-1.cluster-1234:18090/druid/indexer/v1/supervisor
    重要 其中--negotiate、-u、-b、-c等選項(xiàng)是針對(duì)安全Druid集群。
  3. 向SLS中導(dǎo)入數(shù)據(jù)。

    您可以采用多種方式向SLS中導(dǎo)入數(shù)據(jù)。

  4. 在Druid端進(jìn)行相關(guān)查詢。