Kinesis 에이전트 - Amazon Data Firehose

Amazon Data Firehose 스트림을 Amazon S3의 Apache Iceberg Table로 전송하는 작업은 미리 보기 중이며 변경될 수 있습니다.

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Kinesis 에이전트

Amazon Kinesis 에이전트는 데이터를 수집하고 Firehose로 전송하는 방법을 보여주는 참조 구현 역할을 하는 독립 실행형 Java 소프트웨어 애플리케이션입니다. 에이전트는 지속적으로 파일 세트를 모니터링하고 Firehose 스트림에 새 데이터를 보냅니다. 에이전트는 파일 로테이션, 체크포인트 지정, 실패 시 재시도를 처리하는 방법을 보여줍니다. 신뢰할 수 있고 시기적절하며 간단한 방식으로 데이터를 전달할 수 있는 방법을 보여줍니다. 또한 스트리밍 프로세스를 더 잘 모니터링하고 문제를 해결하기 위해 CloudWatch 지표를 내보내는 방법도 보여줍니다. 자세히 알아보려면 awslabs/. amazon-kinesis-agent

기본적으로 줄 바꿈 문자('\n')를 기반으로 각 파일에서 레코드가 구문 분석됩니다. 그러나 여러 줄 레코드를 구문 분석하도록 에이전트를 구성할 수도 있습니다(에이전트 구성 설정 참조).

웹 서버, 로그 서버, 데이터베이스 서버 등 Linux 기반 서버 환경에 에이전트를 설치할 수 있습니다. 에이전트를 설치한 후 모니터링할 파일과 데이터에 대한 Firehose 스트림을 지정하여 에이전트를 구성합니다. 에이전트가 구성되면 파일에서 데이터를 안정적으로 수집하여 Firehose 스트림으로 안정적으로 전송합니다.

주제
    • 사용자 운영 체제가 Amazon Linux 또는 Red Hat Enterprise Linux 버전 7 이상이어야 합니다.

    • 에이전트 버전 2.0.0 이상은 버전 1.8 이상을 사용하여 JRE 실행됩니다. 에이전트 버전 1.1.x는 1.7 이상을 사용하여 JRE 실행됩니다.

    • EC2Amazon을 사용하여 에이전트를 실행하는 경우 EC2 인스턴스를 시작하십시오.

    • 에이전트가 Firehose 스트림으로 데이터를 전송하려면 지정한 IAM 역할 또는 AWS 자격 증명에 Amazon Data Firehose PutRecordBatch작업을 수행할 권한이 있어야 합니다. 에이전트에 대한 CloudWatch 모니터링을 활성화하는 경우 작업을 수행할 권한도 필요합니다. CloudWatch PutMetricData 자세한 내용은,, Amazon의 인증 및 액세스 제어를 참조하십시오 Amazon Data Firehose를 통한 액세스 제어 CloudWatch. Kinesis 에이전트 상태 모니터링

    다음 방법 중 하나를 사용하여 AWS 자격 증명을 관리하십시오.

    • 사용자 지정 자격 증명 공급자를 생성합니다. 세부 정보는 사용자 지정 자격 증명 공급자 만들기을 참조하세요.

    • EC2인스턴스를 시작할 때 IAM 역할을 지정하십시오.

    • 에이전트를 구성할 때 AWS 자격 증명을 지정하십시오 (아래 구성 awsSecretAccessKey 표의 항목 awsAccessKeyId 및 구성 표 항목 참조에이전트 구성 설정).

    • /etc/sysconfig/aws-kinesis-agent편집하여 AWS 지역 및 AWS 액세스 키를 지정하십시오.

    • EC2인스턴스가 다른 AWS 계정에 있는 경우 Amazon Data Firehose 서비스에 대한 액세스를 제공하는 IAM 역할을 생성하십시오. 에이전트를 구성할 때 해당 역할을 지정하십시오 (assumeRoleARNassumeRoleExternalId 참조). 이전 방법 중 하나를 사용하여 이 역할을 수임할 권한이 있는 다른 계정의 사용자 AWS 자격 증명을 지정하십시오.

    사용자 지정 자격 증명 공급자를 생성하고 userDefinedCredentialsProvider.classnameuserDefinedCredentialsProvider.location 구성 설정에서 클래스 이름과 Kinesis 에이전트까지의 jar 경로를 지정할 수 있습니다. 이러한 두 가지 구성 설정에 대한 설명은 에이전트 구성 설정 단원을 참조하십시오.

    사용자 지정 자격 증명 공급자를 생성하려면 다음 예와 같이 AWS CredentialsProvider 인터페이스를 구현하는 클래스를 정의합니다.

    import com.amazonaws.auth.AWSCredentials; import com.amazonaws.auth.AWSCredentialsProvider; import com.amazonaws.auth.BasicAWSCredentials; public class YourClassName implements AWSCredentialsProvider { public YourClassName() { } public AWSCredentials getCredentials() { return new BasicAWSCredentials("key1", "key2"); } public void refresh() { } }

    클래스에는 인수를 취하지 않는 생성자가 있어야 합니다.

    AWS 주기적으로 refresh 메서드를 호출하여 업데이트된 자격 증명을 가져옵니다. 자격 증명 공급자가 수명 주기 동안 계속 다른 자격 증명을 제공하도록 하려면 이 메서드에 자격 증명을 새로 고치는 코드를 포함하십시오. 또는 자격 증명 공급자가 정적(변경되지 않는) 자격 증명을 제공하기를 원할 경우 이 메서드를 비워 둘 수 있습니다.

    우선 인스턴스에 연결합니다. 자세한 내용은 Amazon EC2 사용 설명서의 인스턴스에 연결을 참조하십시오. 연결에 문제가 있는 경우 Amazon EC2 사용 설명서의 인스턴스 연결 문제 해결을 참조하십시오.

    다음으로, 다음 중 한 가지 방법을 사용하여 인스턴스를 설치합니다.

    • Amazon Linux 리포지토리에서 에이전트 설정하는 방법

      이 방법은 Amazon Linux 인스턴스에만 해당됩니다. 다음 명령을 사용합니다.

      sudo yum install –y aws-kinesis-agent

      에이전트 v 2.0.0 이상은 Amazon Linux 2 () AL2 운영 체제가 설치된 컴퓨터에 설치됩니다. 이 에이전트 버전에는 Java 1.8 이상이 필요합니다. 필요한 Java 버전이 아직 없는 경우 에이전트 설치 프로세스에서 해당 버전이 설치됩니다. Amazon Linux 2에 대한 자세한 내용은 을 참조하십시오 https://aws.amazon.com/amazon-linux-2/.

    • Amazon S3 리포지토리에서 에이전트 설정하는 방법

      이 방법은 공개적으로 사용 가능한 리포지토리에서 에이전트를 설치하기 때문에, Red Hat Enterprise Linux 및 Amazon Linux 2 인스턴스에도 적용됩니다. 다음 명령을 사용하여 에이전트 버전 2.x.x의 최신 버전을 다운로드하고 설치합니다.

      sudo yum install –y https://s3.amazonaws.com/streaming-data-agent/aws-kinesis-agent-latest.amzn2.noarch.rpm

      특정 버전의 에이전트를 설치하려면 명령에서 버전 번호를 지정합니다. 예를 들어 다음 명령은 에이전트 버전 2.0.1을 설치합니다.

      sudo yum install –y https://streaming-data-agent.s3.amazonaws.com/aws-kinesis-agent-2.0.1-1.amzn1.noarch.rpm

      현재 Java 1.7을 사용하고 있고 업그레이드를 원하지 않는 경우 Java 1.7과 호환되는 에이전트 버전 1.xx를 다운로드할 수 있습니다. 예를 들어 다음 명령을 사용하여 에이전트 버전 1.1.6을 다운로드할 수 있습니다.

      sudo yum install –y https://s3.amazonaws.com/streaming-data-agent/aws-kinesis-agent-1.1.6-1.amzn1.noarch.rpm

      다음 명령을 사용하면 최신 에이전트 버전 1.x.x를 다운로드할 수 있습니다.

      sudo yum install –y https://s3.amazonaws.com/streaming-data-agent/aws-kinesis-agent-latest.amzn1.noarch.rpm
    • GitHub리포지토리에서 에이전트를 설정하려면

      1. 먼저 에이전트 버전에 따라 필요한 Java 버전이 설치되어 있는지 확인합니다.

      2. amazon-kinesis-agent GitHub awslabs/ 리포지토리에서 에이전트를 다운로드합니다.

      3. 다운로드 디렉터리로 이동하고 다음 명령을 실행해 에이전트를 설치합니다.

        sudo ./setup --install
    • Docker 컨테이너에서 에이전트 설정

      amazonlinux 컨테이너 베이스를 통해서도 컨테이너에서 Kinesis 에이전트를 실행할 수 있습니다. 다음 Dockerfile을 사용하여 docker build를 실행합니다.

      FROM amazonlinux RUN yum install -y aws-kinesis-agent which findutils COPY agent.json /etc/aws-kinesis/agent.json CMD ["start-aws-kinesis-agent"]
    에이전트를 구성하고 시작하려면
    1. 구성 파일(/etc/aws-kinesis/agent.json)을 열고 편집합니다(기본 파일 액세스 권한을 사용하는 경우 수퍼유저로).

      이 구성 파일에서 에이전트가 데이터를 수집하는 파일 ("filePattern") 과 에이전트가 데이터를 보내는 Firehose 스트림 ("deliveryStream") 의 이름을 지정합니다. 파일 이름은 패턴이며, 에이전트가 파일 로테이션을 인식합니다. 파일을 로테이션하거나 초당 1회 이하 새 파일을 생성할 수 있습니다. 에이전트는 파일 생성 타임스탬프를 사용하여 추적하고 Firehose 스트림으로 전송할 파일을 결정합니다. 초당 1회보다 자주 새 파일을 생성하거나 파일을 로테이션하면 에이전트가 제대로 구별되지 않습니다.

      { "flows": [ { "filePattern": "/tmp/app.log*", "deliveryStream": "yourdeliverystream" } ] }

      기본 AWS 지역은 입니다. us-east-1 다른 리전을 사용 중이라면 리전에 엔드포인트를 지정해 구성 파일에 firehose.endpoint 설정을 추가합니다. 자세한 내용은 에이전트 구성 설정 단원을 참조하십시오.

    2. 에이전트를 수동으로 시작합니다.

      sudo service aws-kinesis-agent start
    3. (선택 사항) 시스템 시작 시 에이전트가 시작되도록 구성합니다.

      sudo chkconfig aws-kinesis-agent on

    현재 이 에이전트는 배경에서 시스템 서비스로 실행 중입니다. 지정된 파일을 지속적으로 모니터링하고 지정된 Firehose 스트림으로 데이터를 보냅니다. 에이전트 활동은 /var/log/aws-kinesis-agent/aws-kinesis-agent.log에 기록됩니다.

    이 에이전트는 두 가지 의무 구성 설정인 filePattern, deliveryStream과 추가 기능을 제공하는 선택적 구성 설정을 지원합니다. /etc/aws-kinesis/agent.json에서 의무 및 선택적 구성 설정을 지정할 수 있습니다.

    구성 파일을 변경할 때마다 다음 명령을 이용해 에이전트를 중지했다 시작해야 합니다.

    sudo service aws-kinesis-agent stop sudo service aws-kinesis-agent start

    또는 다음 명령을 사용할 수 있습니다.

    sudo service aws-kinesis-agent restart

    다음은 일반적인 구성 설정입니다.

    구성 설정 설명
    assumeRoleARN

    사용자가 맡을 역할의 Amazon 리소스 이름 (ARN). 자세한 내용은 사용 IAM설명서의 IAM 역할을 사용한 AWS 계정 간 액세스 위임을 참조하십시오.

    assumeRoleExternalId

    역할을 맡을 사람을 결정하는 선택적 식별자입니다. 자세한 내용은 사용 설명서의 IAM 외부 ID 사용 방법을 참조하십시오.

    awsAccessKeyId

    AWS 기본 자격 증명을 재정의하는 액세스 키 ID. 이 설정은 다른 모든 자격 증명 공급자보다 우선 적용됩니다.

    awsSecretAccessKey

    AWS 기본 자격 증명을 재정의하는 비밀 키. 이 설정은 다른 모든 자격 증명 공급자보다 우선 적용됩니다.

    cloudwatch.emitMetrics

    설정된 CloudWatch 경우 (true) 에이전트가 메트릭을 내보낼 수 있도록 합니다.

    기본값: true

    cloudwatch.endpoint

    의 지역별 엔드포인트. CloudWatch

    기본값: monitoring.us-east-1.amazonaws.com

    firehose.endpoint

    Amazon Data Firehose의 리전 엔드포인트입니다.

    기본값: firehose.us-east-1.amazonaws.com

    sts.endpoint

    AWS 보안 토큰 서비스의 리전 엔드포인트.

    기본값: https://sts.amazonaws.com

    userDefinedCredentialsProvider.classname 사용자 지정 자격 증명 공급자를 정의하는 경우 이 설정을 사용하여 정규화된 클래스 이름을 지정합니다. 클래스 이름 끝에 .class를 포함하지 마십시오.
    userDefinedCredentialsProvider.location 사용자 지정 자격 증명 공급자를 정의하는 경우 이 설정을 사용하여 사용자 지정 자격 증명 공급자를 포함하는 jar의 절대 경로를 지정합니다. 또한 에이전트는 /usr/share/aws-kinesis-agent/lib/ 위치에서 jar 파일을 찾습니다.

    다음은 흐름 구성 설정입니다.

    구성 설정 설명
    aggregatedRecordSizeBytes

    에이전트가 레코드를 집계한 다음 한 번의 작업으로 Firehose 스트림에 넣도록 하려면 이 설정을 지정하십시오. 에이전트가 Firehose 스트림에 집계 레코드를 추가하기 전에 원하는 크기로 설정합니다.

    기본값: 0(집계 없음)

    dataProcessingOptions

    Firehose 스트림으로 전송되기 전에 구문 분석된 각 레코드에 적용되는 처리 옵션 목록입니다. 처리 옵션은 지정된 순서로 진행됩니다. 자세한 내용은 에이전트를 사용하여 데이터를 사전 처리합니다. 단원을 참조하십시오.

    deliveryStream

    [필수] Firehose 스트림의 이름입니다.

    filePattern

    [필수] 에이전트가 모니터링해야 하는 파일에 대한 glob입니다. 이 패턴과 일치하는 파일을 에이전트가 자동으로 선별하여 모니터링합니다. 이 패턴과 일치하는 모든 파일에 대한 읽기 권한을 aws-kinesis-agent-user에 부여해야 합니다. 파일이 포함된 디렉터리에 대한 읽기 및 실행 권한을 aws-kinesis-agent-user에 부여해야 합니다.

    중요

    에이전트는 이 패턴과 일치하는 파일을 선택합니다. 에이전트가 의도하지 않은 레코드를 선택하지 않도록 하려면 이 패턴을 신중하게 선택합니다.

    initialPosition

    파일 구문 분석이 처음 시작된 위치입니다. 유효 값은 START_OF_FILEEND_OF_FILE입니다.

    기본값: END_OF_FILE

    maxBufferAgeMillis

    에이전트가 Firehose 스트림으로 데이터를 보내기 전에 데이터를 버퍼링하는 최대 시간 (밀리초) 입니다.

    값 범위: 1,000~900,000(1초 ~ 15분)

    기본값: 60,000(1분)

    maxBufferSizeBytes

    에이전트가 Firehose 스트림으로 데이터를 보내기 전에 데이터를 버퍼링하는 최대 크기 (바이트) 입니다.

    값 범위: 1~4,194,304(4MB)

    기본값: 4,194,304(4MB)

    maxBufferSizeRecords

    에이전트가 Firehose 스트림으로 데이터를 보내기 전에 데이터를 버퍼링하는 최대 레코드 수입니다.

    값 범위: 1~500

    기본값: 500

    minTimeBetweenFilePollsMillis

    에이전트가 새로운 데이터에 대해 모니터링한 파일을 폴링하고 구문 분석하는 시간 간격(밀리초)입니다.

    값 범위: 1 이상

    기본값: 100

    multiLineStartPattern

    레코드의 시작을 식별하기 위한 패턴입니다. 레코드는 패턴과 일치하는 줄 1개 및 패턴과 일치하지 않는 나머지 줄로 이루어져 있습니다. 유효한 값은 정규식입니다. 기본적으로 로그 파일에서 각각의 줄 바꿈은 하나의 레코드로 구문 분석됩니다.

    skipHeaderLines

    모니터링한 파일을 시작할 때 에이전트가 구문 분석을 건너뛰는 줄의 개수입니다.

    값 범위: 0 이상

    기본값: 0(영)

    truncatedRecordTerminator

    레코드 크기가 Amazon Data Firehose 레코드 크기 제한을 초과할 때 에이전트가 파싱된 레코드를 잘라내는 데 사용하는 문자열입니다. (1,000KB)

    기본값: '\n'(줄 바꿈)

    여러 개의 흐름 구성 설정을 지정하여, 에이전트가 여러 파일 디렉터리를 모니터링하고 여러 스트림으로 데이터를 보내도록 구성할 수 있습니다. 다음 구성 예제에서 에이전트는 두 개의 파일 디렉터리를 모니터링하고 각각 Kinesis 데이터 스트림과 Firehose 스트림으로 데이터를 보냅니다. Kinesis Data Streams와 Amazon Data Firehose에 서로 다른 엔드포인트를 지정하여 데이터 스트림과 Firehose 스트림이 같은 지역에 있지 않아도 되도록 할 수 있습니다.

    { "cloudwatch.emitMetrics": true, "kinesis.endpoint": "https://your/kinesis/endpoint", "firehose.endpoint": "https://your/firehose/endpoint", "flows": [ { "filePattern": "/tmp/app1.log*", "kinesisStream": "yourkinesisstream" }, { "filePattern": "/tmp/app2.log*", "deliveryStream": "yourfirehosedeliverystream" } ] }

    Amazon Kinesis Data Streams에서 에이전트를 사용하는 방법에 대한 자세한 내용은 Kinesis Agent를 사용하여 Amazon Kinesis Data Streams에 쓰기를 참조하세요.

    에이전트는 모니터링된 파일에서 파싱된 레코드를 Firehose 스트림으로 보내기 전에 사전 처리할 수 있습니다. 파일 흐름에 dataProcessingOptions 구성 설정을 추가하여 이 기능을 활성화할 수 있습니다. 하나 이상의 처리 옵션을 추가할 수 있으며, 추가된 옵션은 지정된 순서로 수행됩니다.

    에이전트는 다음 처리 옵션을 지원합니다. 에이전트는 오픈 소스이므로, 처리 옵션을 더 개발하고 확장할 수 있습니다. 에이전트는 Kinesis Agent에서 다운로드할 수 있습니다.

    처리 옵션
    SINGLELINE

    줄 바꿈 문자, 선행 공백과 후행 공백을 삭제해 여러 줄 레코드를 한 줄 레코드로 변환합니다.

    { "optionName": "SINGLELINE" }
    CSVTOJSON

    구분자로 구분된 형식에서 형식으로 레코드를 변환합니다. JSON

    { "optionName": "CSVTOJSON", "customFieldNames": [ "field1", "field2", ... ], "delimiter": "yourdelimiter" }
    customFieldNames

    [필수] 각 JSON 키 값 쌍에서 키로 사용되는 필드 이름. 예를 들어 ["f1", "f2"]를 지정하면 레코드 "v1, v2"가 {"f1":"v1","f2":"v2"}로 변환됩니다.

    delimiter

    레코드에서 구분 기호로 사용되는 문자열입니다. 기본값은 쉼표(,)입니다.

    LOGTOJSON

    레코드를 로그 형식에서 JSON 형식으로 변환합니다. 지원되는 로그 형식은 Apache Common Log, Apache Combined Log, Apache Error LogRFC3164 Syslog입니다.

    { "optionName": "LOGTOJSON", "logFormat": "logformat", "matchPattern": "yourregexpattern", "customFieldNames": [ "field1", "field2", ] }
    logFormat

    [필수] 로그 항목 형식입니다. 유효한 값은 다음과 같습니다.

    • COMMONAPACHELOG - Apache Common Log 형식입니다. 각 로그 항목에는 기본적으로 "%{host} %{ident} %{authuser} [%{datetime}] \"%{request}\" %{response} %{bytes}" 패턴이 있습니다.

    • COMBINEDAPACHELOG - Apache Combined Log 형식입니다. 각 로그 항목에는 기본적으로 "%{host} %{ident} %{authuser} [%{datetime}] \"%{request}\" %{response} %{bytes} %{referrer} %{agent}" 패턴이 있습니다.

    • APACHEERRORLOG - Apache Error Log 형식입니다. 각 로그 항목에는 기본적으로 "[%{timestamp}] [%{module}:%{severity}] [pid %{processid}:tid %{threadid}] [client: %{client}] %{message}" 패턴이 있습니다.

    • SYSLOG— RFC3164 Syslog 형식. 각 로그 항목에는 기본적으로 "%{timestamp} %{hostname} %{program}[%{processid}]: %{message}" 패턴이 있습니다.

    matchPattern

    지정된 로그 형식에 대한 기본 패턴을 재정의합니다. 사용자 지정 형식을 사용하는 경우 이 설정을 이용해 로그 항목에서 값을 추출합니다. matchPattern을 지정하면 customFieldNames도 함께 지정해야 합니다.

    customFieldNames

    각 JSON 키 값 쌍에서 키로 사용되는 사용자 지정 필드 이름. 이 설정을 사용하여 matchPattern에서 추출한 값에 필드 이름을 정의하거나 사전 정의된 로그 형식의 기본 필드 이름을 재정의합니다.

    예 : LOGTOJSON 구성

    다음은 Apache Common Log 항목을 JSON 형식으로 변환한 LOGTOJSON 구성의 한 예입니다.

    { "optionName": "LOGTOJSON", "logFormat": "COMMONAPACHELOG" }

    변환 전:

    64.242.88.10 - - [07/Mar/2004:16:10:02 -0800] "GET /mailman/listinfo/hsdivision HTTP/1.1" 200 6291

    변환 후:

    {"host":"64.242.88.10","ident":null,"authuser":null,"datetime":"07/Mar/2004:16:10:02 -0800","request":"GET /mailman/listinfo/hsdivision HTTP/1.1","response":"200","bytes":"6291"}
    예 : 사용자 지정 필드를 사용한 LOGTOJSON 구성

    다음은 LOGTOJSON 구성의 또 다른 예제입니다.

    { "optionName": "LOGTOJSON", "logFormat": "COMMONAPACHELOG", "customFieldNames": ["f1", "f2", "f3", "f4", "f5", "f6", "f7"] }

    이 구성 설정을 사용하면 이전 예제와 동일한 Apache Common Log 항목이 다음과 같은 JSON 형식으로 변환됩니다.

    {"f1":"64.242.88.10","f2":null,"f3":null,"f4":"07/Mar/2004:16:10:02 -0800","f5":"GET /mailman/listinfo/hsdivision HTTP/1.1","f6":"200","f7":"6291"}
    예 : Apache Common Log 항목 변환

    다음 흐름 구성은 Apache Common Log 항목을 한 줄 형식의 레코드로 변환합니다. JSON

    { "flows": [ { "filePattern": "/tmp/app.log*", "deliveryStream": "my-delivery-stream", "dataProcessingOptions": [ { "optionName": "LOGTOJSON", "logFormat": "COMMONAPACHELOG" } ] } ] }
    예 : 여러 줄 레코드 변환

    다음 흐름 구성은 첫 줄이 "[SEQUENCE="로 시작하는 여러 줄 레코드를 구문 분석합니다. 먼저 각각의 레코드가 한 줄 레코드로 변환됩니다. 그런 다음 탭 구분 기호를 기반으로 레코드에서 값이 추출됩니다. 추출된 값은 지정된 customFieldNames 값에 매핑되어 한 줄 형식의 레코드를 형성합니다. JSON

    { "flows": [ { "filePattern": "/tmp/app.log*", "deliveryStream": "my-delivery-stream", "multiLineStartPattern": "\\[SEQUENCE=", "dataProcessingOptions": [ { "optionName": "SINGLELINE" }, { "optionName": "CSVTOJSON", "customFieldNames": [ "field1", "field2", "field3" ], "delimiter": "\\t" } ] } ] }
    예 : 일치 LOGTOJSON 패턴을 사용한 구성

    다음은 마지막 필드 (바이트) 를 생략한 JSON 형식으로 변환된 Apache Common Log 항목의 한 가지 LOGTOJSON 구성입니다.

    { "optionName": "LOGTOJSON", "logFormat": "COMMONAPACHELOG", "matchPattern": "^([\\d.]+) (\\S+) (\\S+) \\[([\\w:/]+\\s[+\\-]\\d{4})\\] \"(.+?)\" (\\d{3})", "customFieldNames": ["host", "ident", "authuser", "datetime", "request", "response"] }

    변환 전:

    123.45.67.89 - - [27/Oct/2000:09:27:09 -0400] "GET /java/javaResources.html HTTP/1.0" 200

    변환 후:

    {"host":"123.45.67.89","ident":null,"authuser":null,"datetime":"27/Oct/2000:09:27:09 -0400","request":"GET /java/javaResources.html HTTP/1.0","response":"200"}

    시스템 시작 시 에이전트를 자동으로 시작합니다.

    sudo chkconfig aws-kinesis-agent on

    에이전트의 상태를 확인합니다:

    sudo service aws-kinesis-agent status

    에이전트를 중지합니다.

    sudo service aws-kinesis-agent stop

    이 위치에서 에이전트의 로그 파일을 읽습니다.

    /var/log/aws-kinesis-agent/aws-kinesis-agent.log

    에이전트를 제거합니다.

    sudo yum remove aws-kinesis-agent

    Windows용 Kinesis 에이전트가 있나요?

    Windows용 Kinesis 에이전트는 Linux 플랫폼용 Kinesis 에이전트와 다른 소프트웨어입니다.

    왜 Kinesis 에이전트가 느려지거나 RecordSendErrors가 증가하나요?

    이는 대개 Kinesis에서 제한하기 때문입니다. Kinesis Data Streams의 WriteProvisionedThroughputExceeded 메트릭이나 Firehose ThrottledRecords 스트림의 메트릭을 확인하십시오. 이 지표 중 0에서 증가한 수치가 있으면 스트림 제한을 늘려야 한다는 의미입니다. 자세한 내용은 Kinesis 데이터 스트림 제한 및 Firehose 스트림을 참조하십시오.

    제한을 확인한 후에는 Kinesis 에이전트가 대량의 작은 파일을 테일링하도록 구성되어 있는지 확인하세요. Kinesis 에이전트가 새 파일을 테일링할 때 지연이 발생하므로 Kinesis 에이전트는 소량의 대용량 파일을 추적합니다. 로그 파일을 더 큰 파일로 통합해 보세요.

    java.lang.OutOfMemoryError 예외가 발생하나요?

    Kinesis 에이전트에는 현재 워크로드를 처리할 메모리가 충분하지 않습니다. /usr/bin/start-aws-kinesis-agentJAVA_START_HEAPJAVA_MAX_HEAP을 늘리고 에이전트를 다시 시작해 보세요.

    IllegalStateException : connection pool shut down 예외가 발생하나요?

    Kinesis 에이전트에는 현재 워크로드를 처리할 연결이 충분하지 않습니다. /etc/aws-kinesis/agent.json에서 일반 에이전트 구성 설정의 maxConnectionsmaxSendingThreads를 늘려 보세요. 이 필드의 기본값은 제공되는 런타임 프로세서의 12배입니다. 고급 에이전트 구성 설정에 대한 자세한 AgentConfiguration내용은.java를 참조하십시오.

    Kinesis 에이전트의 다른 문제는 어떻게 디버그할 수 있나요?

    /etc/aws-kinesis/log4j.xml에서 DEBUG 레벨 로그를 활성화할 수 있습니다.

    Kinesis 에이전트는 어떻게 구성하나요?

    maxBufferSizeBytes의 크기가 작을수록 Kinesis 에이전트는 더 자주 데이터를 전송합니다. 이렇게 하면 레코드의 전송 시간이 줄어 유용하지만, Kinesis에 대한 초당 요청 수가 증가합니다.

    왜 Kinesis 에이전트가 중복 레코드를 보내나요?

    이 문제는 파일 테일링이 잘못 구성되어 발생합니다. fileFlow’s filePattern마다 매칭되는 파일은 하나뿐이어야 합니다. 사용 중인 logrotate 모드가 copytruncate 모드인 경우에도 이 문제가 발생할 수 있습니다. 모드를 기본 모드 또는 생성 모드로 변경하여 중복을 피하세요. 중복 레코드 처리에 대한 자세한 내용은 중복 레코드 처리를 참조하세요.