EC2(AmazonLinux2)의 로그를 KinesisFireHose에 흘려 S3에 축적한다
그런 다음 S3 버킷과 FireHose 스트림 생성. FireHose IAM 목록은 여기에서 만들 수 있다.
이하, EC2의 설정.
여기에서는 Apache에의 액세스 로그를 소재로 하고 있다.
$ sudo yum -y install httpd
$ sudo systemctl enable httpd
$ sudo systemctl start httpd
$ sudo vi /etc/httpd/conf/httpd.conf
:set number
로 행 수를 표시할 수 있다. :197
에서 197행째로 날 수 있다.197행째에 추가
LogFormat "time:%t\tforwardedfor:%{X-Forwarded-For}i\thost:%h\treq:%r\tstatus:%>s\tsize:%b\treferer:%{Referer}i\tua:%{User-Agent}i\treqtime_microsec:%D\tcache:%{X-Cache}o\truntime:%{X-Runtime}o\tvhost:%{Host}i" ltsv
219행에 추가
LogFormat "time:%t\tforwardedfor:%{X-Forwarded-For}i\thost:%h\treq:%r\tstatus:%>s\tsize:%b\treferer:%{Referer}i\tua:%{User-Agent}i\treqtime_microsec:%D\tcache:%{X-Cache}o\truntime:%{X-Runtime}o\tvhost:%{Host}i" ltsv
$ sudo systemctl restart httpd
$ sudo chmod 755 /var/log/httpd
$ sudo chmod 644 /var/log/httpd/access_log
$ sudo yum install –y https://s3.amazonaws.com/streaming-data-agent/aws-kinesis-agent-latest.amzn1.noarch.rpm
$ sudo vi /etc/aws-kinesis/agent.json
/etc/aws-kinesis/agent.json
{
"cloudwatch.emitMetrics": false,
"firehose.endpoint": "https://firehose.ap-northeast-1.amazonaws.com",
"flows": [
{
"filePattern": "/var/log/httpd/access_log_ltsv",
"deliveryStream": "作成したstream名"
}
]
}
$ sudo systemctl restart aws-kinesis-agent
$ sudo systemctl enable aws-kinesis-agent
aws-kinesis-agent.service is not a native service, redirecting to /sbin/chkconfig.
Executing /sbin/chkconfig aws-kinesis-agent on
$ sudo tail -f /var/log/aws-kinesis-agent/aws-kinesis-agent.log
2020-02-15 13:48:42.192+0000 (FileTailer[fh:xxxx:/var/log/httpd/access_log_ltsv].MetricsEmitter RUNNING) com.amazon.kinesis.streaming.agent.tailing.FileTailer [INFO] FileTailer[fh:xxxx:/var/log/httpd/access_log_ltsv]: Tailer Progress: Tailer has parsed 3 records (985 bytes), transformed 0 records, skipped 0 records, and has successfully sent 0 records to destination.
2020-02-15 13:48:42.198+0000 (Agent.MetricsEmitter RUNNING) com.amazon.kinesis.streaming.agent.Agent [INFO] Agent: Progress: 3 records parsed (985 bytes), and 0 records sent successfully to destinations. Uptime: 120058ms
2020-02-15 13:48:51.186+0000 (sender-0) com.amazon.kinesis.streaming.agent.UserDefinedCredentialsProvider [INFO] No custom implementation of credentials provider present in the config file
2020-02-15 13:49:12.193+0000 (FileTailer[fh:xxxx:/var/log/httpd/access_log_ltsv].MetricsEmitter RUNNING) com.amazon.kinesis.streaming.agent.tailing.FileTailer [INFO] FileTailer[fh:xxxx:/var/log/httpd/access_log_ltsv]: Tailer Progress: Tailer has parsed 3 records (985 bytes), transformed 0 records, skipped 0 records, and has successfully sent 3 records to destination.
2020-02-15 13:49:12.198+0000 (Agent.MetricsEmitter RUNNING) com.amazon.kinesis.streaming.agent.Agent [INFO] Agent: Progress: 3 records parsed (985 bytes), and 3 records sent successfully to destinations. Uptime: 150058ms
잠시 후
○ records sent successfully to destinations
가 되어 FireHose측에 흘러 온 것을 확인할 수 있다. 그 후 약 5분하여 S3에 데이터가 날았다. 아무래도 S3에의 송신은 약간의 러그가 있는 것 같다.모니터링
추가
FireHose에서 빨아 들여 S3에 둔 tsv 형식의 로그 데이터를 Athena로부터 쿼리를 걸어 보았다.
참고) htps //w w.ぢ. 이. jp / 미소 / 아마 존 - 아테나 - s3 - sql
Athena 콘솔의 [create table]에서 s3을 선택하고 DB 이름, 테이블 이름을 결정한 후 대상 버킷의 주소를 지정합니다. 데이터를 모두 성형해주는 것 같다.)
파일 형식을 tsv로 선택하고 열 이름과 데이터 형식을 한꺼번에 지정합니다. (컬럼수가 많다면 bulk를 선택해 하는 편이 편하다.)
작성 후,
SELECT * FROM テーブル名
제대로 나왔다.
로그 파일의 포맷을 스스로 성형해 주면, 향후는 EC2 토하는 로그를 Athena로 읽을 수 있을 것 같다.
참고
Reference
이 문제에 관하여(EC2(AmazonLinux2)의 로그를 KinesisFireHose에 흘려 S3에 축적한다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Kept1994/items/be87deede32f4936cb92텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)