เดธเดพเดงเดพเดฐเดฃเดเดคเดฟเดฏเดฟเตฝ, เดตเดพเดฃเดฟเดเตเดฏ เดเตฝเดชเตเดชเดจเตเดจเดเตเดเดณเต เดฑเตเดกเดฟเดฎเตเดฏเตเดกเต เดเดชเตเดชเตบ เดธเตเดดเตโเดธเต เดเดคเดฐเดฎเดพเตผเดเดเตเดเดณเดพเดฏ Prometheus + Grafana, Nginx-เดจเตเดฑเต เดชเตเดฐเดตเตผเดคเตเดคเดจเด เดจเดฟเดฐเตเดเตเดทเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเด เดตเดฟเดถเดเดฒเดจเด เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเด เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเต. เดจเดฟเดฐเตเดเตเดทเดฃเดคเตเดคเดฟเดจเต เดคเดคเตเดธเดฎเดฏ เดตเดฟเดถเดเดฒเดจเดคเตเดคเดฟเดจเต เดเดคเต เดเดฐเต เดจเดฒเตเดฒ เดเดชเตเดทเดจเดพเดฃเต, เดเดจเตเดจเดพเตฝ เดเดฐเดฟเดคเตเดฐเดชเดฐเดฎเดพเดฏ เดตเดฟเดถเดเดฒเดจเดคเตเดคเดฟเดจเต เดตเดณเดฐเต เดธเตเดเดฐเตเดฏเดชเตเดฐเดฆเดฎเดฒเตเดฒ. เดเดคเตเดฐเต เดเดจเดชเตเดฐเดฟเดฏ เดเดฑเดตเดฟเดเดคเตเดคเดฟเดฒเตเด, nginx เดฒเตเดเตเดเดณเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดกเดพเดฑเตเดฑเดฏเตเดเต เด เดณเดตเต เด เดคเดฟเดตเตเดเด เดตเดณเดฐเตเดเดฏเดพเดฃเต, เดเตเดเดพเดคเต เดเดฐเต เดตเดฒเดฟเดฏ เด เดณเดตเดฟเดฒเตเดณเตเดณ เดกเดพเดฑเตเดฑ เดตเดฟเดถเดเดฒเดจเด เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต, เดเตเดเตเดคเตฝ เดชเตเดฐเดคเตเดฏเตเดเดฎเดพเดฏ เดเดจเตเดคเตเดเตเดเดฟเดฒเตเด เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเดคเต เดฏเตเดเตเดคเดฟเดธเดนเดฎเดพเดฃเต.
เดจเดฟเดเตเดเตพเดเตเดเต เดเดเตเดเดจเต เดเดชเดฏเตเดเดฟเดเตเดเดพเดฎเตเดจเตเดจเต เด เดฒเตเดเดจเดคเตเดคเดฟเตฝ เดเดพเตป เดจเดฟเดเตเดเดณเตเดเต เดชเดฑเดฏเตเด
เดเดเตเดเตพ เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจ เดตเดฟเดตเดฐเดเตเดเตพ เดถเตเดเดฐเดฟเดเตเดเดพเตป
Nginx เดฒเตเดเตเดเตพ เดถเตเดเดฐเดฟเดเตเดเตเดจเตเดจเต
เดธเตเดฅเดฟเดฐเดธเตเดฅเดฟเดคเดฟเดฏเดพเดฏเดฟ, Nginx เดฒเตเดเตเดเตพ เดเดคเตเดชเตเดฒเต เดเดพเดฃเดชเตเดชเตเดเตเดจเตเดจเต:
4/9/2019 12:58:17 PM1.1.1.1 - - [09/Apr/2019:09:58:17 +0000] "GET /sign-up HTTP/2.0" 200 9168 "https://example.com/sign-in" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36" "-"
4/9/2019 12:58:17 PM1.1.1.1 - - [09/Apr/2019:09:58:17 +0000] "GET /sign-in HTTP/2.0" 200 9168 "https://example.com/sign-up" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36" "-"
เด เดต เดชเดพเดดเตโเดธเต เดเตเดฏเตเดฏเดพเตป เดเดดเดฟเดฏเตเด, เดเดจเตเดจเดพเตฝ Nginx เดเตเตบเดซเดฟเดเดฑเตเดทเตป เดถเดฐเดฟเดฏเดพเดเตเดเตเดจเตเดจเดคเต เดตเดณเดฐเต เดเดณเตเดชเตเดชเดฎเดพเดฃเต, เด เดเตเดเดจเต เด เดคเต JSON-เตฝ เดฒเตเดเตเดเตพ เดจเดฟเตผเดฎเตเดฎเดฟเดเตเดเตเดจเตเดจเต:
log_format json_combined escape=json '{ "created_at": "$msec", '
'"remote_addr": "$remote_addr", '
'"remote_user": "$remote_user", '
'"request": "$request", '
'"status": $status, '
'"bytes_sent": $bytes_sent, '
'"request_length": $request_length, '
'"request_time": $request_time, '
'"http_referrer": "$http_referer", '
'"http_x_forwarded_for": "$http_x_forwarded_for", '
'"http_user_agent": "$http_user_agent" }';
access_log /var/log/nginx/access.log json_combined;
เดธเดเดญเดฐเดฃเดคเตเดคเดฟเดจเดพเดฏเดฟ S3
เดฒเตเดเตเดเตพ เดธเดเดญเดฐเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต, เดเดเตเดเตพ S3 เดเดชเดฏเตเดเดฟเดเตเดเตเด. เดฒเตเดเตเดเตพ เดเดฐเดฟเดเดคเตเดคเต เดธเดเดญเดฐเดฟเดเตเดเดพเดจเตเด เดตเดฟเดถเดเดฒเดจเด เดเตเดฏเตเดฏเดพเดจเตเด เดเดคเต เดจเดฟเดเตเดเดณเต เด เดจเตเดตเดฆเดฟเดเตเดเตเดจเตเดจเต, เดเดพเดฐเดฃเด S3-เดฒเต เดกเดพเดฑเตเดฑเดฏเตเดฎเดพเดฏเดฟ เดจเตเดฐเดฟเดเตเดเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเดพเตป เด เดฅเตเดจเดฏเตเดเตเดเต เดเดดเดฟเดฏเตเด. เดฒเตเดเตเดเตพ เดเดเตเดเดจเต เดถเดฐเดฟเดฏเดพเดฏเดฟ เดเตเตผเดเตเดเดพเดฎเตเดจเตเดจเตเด เดชเตเดฐเตเดธเดธเตเดธเต เดเตเดฏเตเดฏเดพเดฎเตเดจเตเดจเตเด เดฒเตเดเดจเดคเตเดคเดฟเตฝ เดชเดฟเดจเตเดจเตเดเต เดเดพเตป เดจเดฟเดเตเดเดณเตเดเต เดชเดฑเดฏเตเด, เดเดจเตเดจเดพเตฝ เดเดฆเตเดฏเด เดเดเตเดเตพเดเตเดเต S3 เตฝ เดเดฐเต เดตเตเดคเตเดคเดฟเดฏเตเดณเตเดณ เดฌเดเตเดเดฑเตเดฑเต เดเดตเดถเตเดฏเดฎเดพเดฃเต, เด เดคเดฟเตฝ เดฎเดฑเตเดฑเตเดจเตเดจเตเด เดธเดเดญเดฐเดฟเดเตเดเดชเตเดชเตเดเดฟเดฒเตเดฒ. เด เดฅเตเดจ เดเดฒเตเดฒเดพ เดชเตเดฐเดฆเตเดถเดเตเดเดณเดฟเดฒเตเด เดฒเดญเตเดฏเดฎเดฒเตเดฒเดพเดคเตเดคเดคเดฟเดจเดพเตฝ, เดเดคเต เดชเตเดฐเดฆเตเดถเดคเตเดคเดพเดฃเต เดจเดฟเดเตเดเตพ เดฌเดเตเดเดฑเตเดฑเต เดธเตเดทเตเดเดฟเดเตเดเตเดจเตเดจเดคเตเดจเตเดจเต เดฎเตเตปเดเตเดเตเดเดฟ เดชเดฐเดฟเดเดฃเดฟเดเตเดเตเดฃเตเดเดคเดพเดฃเต.
เด เดฅเตเดจ เดเตบเดธเตเดณเดฟเตฝ เดเดฐเต เดธเตผเดเตเดฏเตเดเตเดเต เดธเตเดทเตเดเดฟเดเตเดเตเดจเตเดจเต
เดฒเตเดเตเดเตพเดเตเดเดพเดฏเดฟ เด เดฅเตเดจเดฏเดฟเตฝ เดเดฐเต เดชเดเตเดเดฟเด เดเดฃเตเดเดพเดเตเดเดพเด. เดจเดฟเดเตเดเตพ Kinesis Firehose เดเดชเดฏเตเดเดฟเดเตเดเดพเดจเดพเดฃเต เดเดฆเตเดฆเตเดถเดฟเดเตเดเตเดจเตเดจเดคเตเดเตเดเดฟเตฝ เดเดดเตเดคเตเดคเดฟเดจเตเด เดตเดพเดฏเดจเดฏเตเดเตเดเตเด เดเดคเต เดเดตเดถเตเดฏเดฎเดพเดฃเต. เด เดฅเตเดจ เดเตบเดธเตเตพ เดคเตเดฑเดจเตเดจเต เดเดฐเต เดชเดเตเดเดฟเด เดธเตเดทเตเดเดฟเดเตเดเตเด:
SQL เดชเดเตเดเดฟเด เดธเตเดทเตเดเดฟเดเตเดเตฝ
CREATE EXTERNAL TABLE `kinesis_logs_nginx`(
`created_at` double,
`remote_addr` string,
`remote_user` string,
`request` string,
`status` int,
`bytes_sent` int,
`request_length` int,
`request_time` double,
`http_referrer` string,
`http_x_forwarded_for` string,
`http_user_agent` string)
ROW FORMAT SERDE
'org.apache.hadoop.hive.ql.io.orc.OrcSerde'
STORED AS INPUTFORMAT
'org.apache.hadoop.hive.ql.io.orc.OrcInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat'
LOCATION
's3://<YOUR-S3-BUCKET>'
TBLPROPERTIES ('has_encrypted_data'='false');
เดเตเดจเดธเดฟเดธเต เดซเดฏเตผเดนเตเดธเต เดธเตเดเตเดฐเตเด เดธเตเดทเตเดเดฟเดเตเดเตเดจเตเดจเต
Kinesis Firehose เดคเดฟเดฐเดเตเดเตเดเตเดคเตเดค เดซเตเตผเดฎเดพเดฑเตเดฑเดฟเตฝ Nginx-เตฝ เดจเดฟเดจเตเดจเต S3-เดฒเตเดเตเดเต เดฒเดญเดฟเดเตเด เดกเดพเดฑเตเดฑ เดเดดเตเดคเตเด, เด เดคเดฟเดจเต YYYY/MM/DD/HH เดซเตเตผเดฎเดพเดฑเตเดฑเดฟเดฒเตเดณเตเดณ เดกเดฏเดฑเดเตเดเดฑเดฟเดเดณเดพเดฏเดฟ เดตเดฟเดญเดเดฟเดเตเดเตเด. เดกเดพเดฑเตเดฑ เดตเดพเดฏเดฟเดเตเดเตเดฎเตเดชเตเตพ เดเดคเต เดเดชเดฏเตเดเดชเตเดฐเดฆเดฎเดพเดเตเด. เดจเดฟเดเตเดเตพเดเตเดเต เดคเตเตผเดเตเดเดฏเดพเดฏเตเด fluentd-เตฝ เดจเดฟเดจเตเดจเต S3-เดฒเตเดเตเดเต เดจเตเดฐเดฟเดเตเดเต เดเดดเตเดคเดพเตป เดเดดเดฟเดฏเตเด, เดเดจเตเดจเดพเตฝ เด เดธเดพเดนเดเดฐเตเดฏเดคเตเดคเดฟเตฝ เดจเดฟเดเตเดเตพ JSON เดเดดเตเดคเตเดฃเตเดเดฟเดตเดฐเตเด, เดซเดฏเดฒเตเดเดณเตเดเต เดตเดฒเดฟเดฏ เดตเดฒเดฟเดชเตเดชเด เดเดพเดฐเดฃเด เดเดคเต เดเดพเดฐเตเดฏเดเตเดทเดฎเดฎเดฒเตเดฒ. เดเตเดเดพเดคเต, PrestoDB เด เดฒเตเดฒเตเดเตเดเดฟเตฝ Athena เดเดชเดฏเตเดเดฟเดเตเดเตเดฎเตเดชเตเตพ, JSON เดเดฑเตเดฑเดตเตเด เดตเตเดเดค เดเตเดฑเดเตเด เดกเดพเดฑเตเดฑ เดซเตเตผเดฎเดพเดฑเตเดฑเดพเดฃเต. เด เดคเดฟเดจเดพเตฝ Kinesis Firehose เดเตบเดธเตเตพ เดคเตเดฑเดเตเดเตเด, "เดกเตเดฒเดฟเดตเดฑเดฟ เดธเตเดเตเดฐเตเด เดธเตเดทเตโเดเดฟเดเตเดเตเด" เดเตเดฒเดฟเดเตเดเต เดเตเดฏเตเดฏเตเด, "เดกเตเดฒเดฟเดตเดฑเดฟ" เดซเตเตฝเดกเดฟเตฝ "direct PUT" เดคเดฟเดฐเดเตเดเตเดเตเดเตเดเตเด:
เด
เดเตเดคเตเดค เดเดพเดฌเดฟเตฝ, "เดฑเตเดเตเดเตเตผเดกเต เดซเตเตผเดฎเดพเดฑเตเดฑเต เดชเดฐเดฟเดตเตผเดคเตเดคเดจเด" - "เดชเตเดฐเดพเดชเตเดคเดฎเดพเดเตเดเดฟ" เดคเดฟเดฐเดเตเดเตเดเตเดคเตเดคเต เดฑเตเดเตเดเตเตผเดกเดฟเดเดเต เดซเตเตผเดฎเดพเดฑเตเดฑเดพเดฏเดฟ "เด
เดชเตเดชเดพเดเตเดเต ORC" เดคเดฟเดฐเดเตเดเตเดเตเดเตเดเตเด. เดเดฟเดฒ เดเดตเตเดทเดฃ เดชเตเดฐเดเดพเดฐเด
เดธเดเดญเดฐเดฃเดคเตเดคเดฟเดจเดพเดฏเดฟ เดเดเตเดเตพ S3 เดคเดฟเดฐเดเตเดเตเดเตเดเตเดเตเดเดฏเตเด เดเดเตเดเตพ เดฎเตเดฎเตเดชเต เดธเตเดทเตเดเดฟเดเตเด เดฌเดเตเดเดฑเตเดฑเตเด เดคเดฟเดฐเดเตเดเตเดเตเดเตเดเตเด. เดเดพเตป เดเตเดฑเดเตเดเต เดเดดเดฟเดเตเดเต เดธเดเดธเดพเดฐเดฟเดเตเดเตเดจเตเดจ Aws Glue Crawler, เดเดฐเต S3 เดฌเดเตเดเดฑเตเดฑเดฟเตฝ เดชเตเดฐเดฟเดซเดฟเดเตเดธเตเดเตพ เดเดชเดฏเตเดเดฟเดเตเดเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเดพเตป เดเดดเดฟเดฏเดฟเดฒเตเดฒ, เด เดคเดฟเดจเดพเตฝ เดเดคเต เดถเตเดจเตเดฏเดฎเดพเดฏเดฟ เดตเดฟเดเตเดฃเตเดเดคเต เดชเตเดฐเดงเดพเดจเดฎเดพเดฃเต.
เดจเดฟเดเตเดเดณเตเดเต เดฒเตเดกเดฟเดจเต เดเดถเตเดฐเดฏเดฟเดเตเดเต เดถเตเดทเดฟเดเตเดเตเดจเตเดจ เดเดชเตเดทเดจเตเดเตพ เดฎเดพเดฑเตเดฑเดพเดตเตเดจเตเดจเดคเดพเดฃเต; เดเดพเตป เดธเดพเดงเดพเดฐเดฃเดฏเดพเดฏเดฟ เดธเตเดฅเดฟเดฐเดฎเดพเดฏเดตเดฏเดพเดฃเต เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเดคเต. S3 เดเดเดชเตเดฐเดทเตป เดฒเดญเตเดฏเดฎเดฒเตเดฒ, เดเดจเตเดจเดพเตฝ ORC เดธเตเดฅเดฟเดฐเดธเตเดฅเดฟเดคเดฟเดฏเดพเดฏเดฟ เดจเตเดฑเตเดฑเตเดตเต เดเดเดชเตเดฐเดทเตป เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเต.
เดเดดเตเดเตเดเตเดณเตเดณ
เดฒเตเดเตเดเตพ เดธเดเดญเดฐเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเด เดธเตเดตเตเดเดฐเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเด เดเดเตเดเตพ เดเดชเตเดชเตเตพ เดเตเดฐเดฎเตเดเดฐเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต, เดเดเตเดเตพ เด
เดฏเดฏเตเดเตเดเตเดจเตเดจเดคเต เดเตเดฐเดฎเตเดเดฐเดฟเดเตเดเตเดฃเตเดเดคเตเดฃเตเดเต. เดเดเตเดเตพ เดเดชเดฏเตเดเดฟเดเตเดเตเด
เดเดฆเตเดฏเด, เดจเดฎเตเดเตเดเต fluent.conf เดเตเตบเดซเดฟเดเดฑเตเดทเตป เดซเดฏเตฝ เดเดตเดถเตเดฏเดฎเดพเดฃเต. เดเดคเต เดธเตเดทเตเดเดฟเดเตเดเต เดเดฑเดตเดฟเดเด เดเตเตผเดเตเดเตเด:
เดชเตเตผเดเตเดเต 24224
เดเตเดเตเดเตเด 0.0.0.0
เดเดชเตเดชเตเตพ เดจเดฟเดเตเดเตพเดเตเดเต Fluentd เดธเตเตผเดตเตผ เดเดฐเดเดญเดฟเดเตเดเดพเด. เดจเดฟเดเตเดเตพเดเตเดเต เดเตเดเตเดคเตฝ เดตเดฟเดชเตเดฒเดฎเดพเดฏ เดเตเตบเดซเดฟเดเดฑเตเดทเตป เดเดตเดถเตเดฏเดฎเตเดฃเตเดเตเดเตเดเดฟเตฝ, เดเดคเดฟเดฒเตเดเตเดเต เดชเตเดเตเด
$ docker run
-d
-p 24224:24224
-p 24224:24224/udp
-v /data:/fluentd/log
-v <PATH-TO-FLUENT-CONF>:/fluentd/etc fluentd
-c /fluentd/etc/fluent.conf
fluent/fluentd:stable
เด เดเตเตบเดซเดฟเดเดฑเตเดทเตป เดชเดพเดค เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเต /fluentd/log
เด
เดฏเดฏเตเดเตเดเตเดจเตเดจเดคเดฟเดจเต เดฎเตเดฎเตเดชเต เดฒเตเดเตเดเตพ เดเดพเดทเต เดเตเดฏเตเดฏเดพเตป. เดเดคเต เดเตเดเดพเดคเต เดจเดฟเดเตเดเตพเดเตเดเต เดเตเดฏเตเดฏเดพเตป เดเดดเดฟเดฏเตเด, เดเดจเตเดจเดพเตฝ เดจเดฟเดเตเดเตพ เดชเตเดจเดฐเดพเดฐเดเดญเดฟเดเตเดเตเดฎเตเดชเตเตพ, เดฌเดพเดเตเดเต-เดฌเตเดฐเตเดเตเดเดฟเดเดเต เดฒเตเดฌเตผ เดเดชเดฏเตเดเดฟเดเตเดเต เดเดพเดทเต เดเตเดฏเตเดคเดคเตเดฒเตเดฒเดพเด เดจเดฟเดเตเดเตพเดเตเดเต เดจเดทเตเดเดชเตเดชเตเดเตเด. เดจเดฟเดเตเดเตพเดเตเดเต เดเดคเต เดชเตเตผเดเตเดเตเด เดเดชเดฏเตเดเดฟเดเตเดเดพเด; 24224 เดเดฃเต เดธเตเดฅเดฟเดฐเดฎเดพเดฏ Fluentd เดชเตเตผเดเตเดเต.
เดเดชเตเดชเตเตพ เดเดเตเดเตพเดเตเดเต Fluentd เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจเต, เดเดเตเดเตพเดเตเดเต Nginx เดฒเตเดเตเดเตพ เด เดตเดฟเดเต เด เดฏเดฏเตโเดเตเดเดพเตป เดเดดเดฟเดฏเตเด. เดเดเตเดเตพ เดธเดพเดงเดพเดฐเดฃเดฏเดพเดฏเดฟ เดเดฐเต เดกเตเดเตเดเตผ เดเดฃเตเดเตเดฏเตโเดจเดฑเดฟเตฝ Nginx เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจเต, เด เดธเดพเดนเดเดฐเตเดฏเดคเตเดคเดฟเตฝ เดกเตเดเตเดเดฑเดฟเดจเต Fluentd-เดจเดพเดฏเดฟ เดเดฐเต เดจเตเดฑเตเดฑเตเดตเต เดฒเตเดเดฟเดเดเต เดกเตเดฐเตเดตเตผ เดเดฃเตเดเต:
$ docker run
--log-driver=fluentd
--log-opt fluentd-address=<FLUENTD-SERVER-ADDRESS>
--log-opt tag="{{.Name}}"
-v /some/content:/usr/share/nginx/html:ro
-d
nginx
เดจเดฟเดเตเดเตพ Nginx เดตเตเดฏเดคเตเดฏเดธเตเดคเดฎเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดเตเดเตเดเดฏเดพเดฃเตเดเตเดเดฟเตฝ, เดจเดฟเดเตเดเตพเดเตเดเต เดฒเตเดเต เดซเดฏเดฒเตเดเตพ เดเดชเดฏเตเดเดฟเดเตเดเดพเด, Fluentd เดเดฃเตเดเต
เดฎเตเดเดณเดฟเตฝ เดเตเตบเดซเดฟเดเตผ เดเตเดฏเตโเดค เดฒเตเดเต เดชเดพเดดเตโเดธเดฟเดเดเต เดซเตเดฒเตเดฏเดจเตเดฑเต เดเตเตบเดซเดฟเดเดฑเตเดทเดจเดฟเดฒเตเดเตเดเต เดเตเตผเดเตเดเดพเด:
<filter YOUR-NGINX-TAG.*>
@type parser
key_name log
emit_invalid_record_to_error false
<parse>
@type json
</parse>
</filter>
เดเตเดเดพเดคเต Kinesis-เดฒเตเดเตเดเต เดฒเตเดเตเดเตพ เด
เดฏเดเตเดเตเดจเตเดจเดคเต เดเดชเดฏเตเดเดฟเดเตเดเต
<match YOUR-NGINX-TAG.*>
@type kinesis_firehose
region region
delivery_stream_name <YOUR-KINESIS-STREAM-NAME>
aws_key_id <YOUR-AWS-KEY-ID>
aws_sec_key <YOUR_AWS-SEC_KEY>
</match>
เด เดฅเตเดจ
เดจเดฟเดเตเดเตพ เดเดฒเตเดฒเดพเด เดถเดฐเดฟเดฏเดพเดฏเดฟ เดเตเดฐเดฎเตเดเดฐเดฟเดเตเดเดฟเดเตเดเตเดฃเตเดเตเดเตเดเดฟเตฝ, เดเตเดฑเดเตเดเต เดธเดฎเดฏเดคเตเดคเดฟเดจเต เดถเตเดทเด (เดธเตเดฅเดฟเดฐเดธเตเดฅเดฟเดคเดฟเดฏเดพเดฏเดฟ, Kinesis เดฑเตเดเตเดเตเตผเดกเตเดเตพเดเตเดเต เดเดฐเต 10 เดฎเดฟเดจเดฟเดฑเตเดฑเดฟเดฒเตเด เดเดฐเดฟเดเตเดเตฝ เดกเดพเดฑเตเดฑ เดฒเดญเดฟเดเตเดเต) เดจเดฟเดเตเดเตพ S3-เตฝ เดฒเตเดเต เดซเดฏเดฒเตเดเตพ เดเดพเดฃเตเด. Kinesis Firehose-เดจเตเดฑเต "เดฎเตเดฃเดฟเดฑเตเดฑเดฑเดฟเดเดเต" เดฎเตเดจเตเดตเดฟเตฝ S3-เตฝ เดเดคเตเดฐ เดกเดพเดฑเตเดฑ เดฐเตเดเดชเตเดชเตเดเตเดคเตเดคเดฟเดฏเดฟเดเตเดเตเดฃเตเดเตเดจเตเดจเต เดจเดฟเดเตเดเตพเดเตเดเต เดเดพเดฃเดพเดจเดพเดเตเด, เด เดคเตเดชเตเดฒเต เดคเดจเตเดจเต เดชเดฟเดถเดเตเดเดณเตเด. Kinesis เดฑเตเดณเดฟเดฒเตเดเตเดเต S3 เดฌเดเตเดเดฑเตเดฑเดฟเดฒเตเดเตเดเต เดเดดเตเดคเตเดคเต เดเดเตเดธเดธเต เดจเตฝเดเดพเตป เดฎเดฑเดเตเดเดฐเตเดคเต. Kinesis-เดจเต เดเดจเตเดคเตเดเตเดเดฟเดฒเตเด เดชเดพเดดเตโเดธเต เดเตเดฏเตเดฏเดพเตป เดเดดเดฟเดฏเตเดจเตเดจเดฟเดฒเตเดฒเตเดเตเดเดฟเตฝ, เด เดคเต เด เดคเต เดฌเดเตเดเดฑเตเดฑเดฟเดฒเตเดเตเดเต เดชเดฟเดถเดเตเดเตพ เดเตเตผเดเตเดเตเด.
เดเดชเตเดชเตเตพ เดจเดฟเดเตเดเตพเดเตเดเต เด เดฅเตเดจเดฏเดฟเดฒเต เดกเดพเดฑเตเดฑ เดเดพเดฃเดพเตป เดเดดเดฟเดฏเตเด. เดชเดฟเดถเดเตเดเตพ เดจเตฝเดเดฟเดฏ เดเดฑเตเดฑเดตเตเด เดชเตเดคเดฟเดฏ เด เดญเตเดฏเตผเดคเตเดฅเดจเดเตพ เดจเดฎเตเดเตเดเต เดเดฃเตเดเตเดคเตเดคเดพเด:
SELECT * FROM "db_name"."table_name" WHERE status > 499 ORDER BY created_at DESC limit 10;
เดเดฐเต เด เดญเตเดฏเตผเดคเตเดฅเดจเดฏเตเดเตเดเตเด เดเดฒเตเดฒเดพ เดฐเตเดเดเดณเตเด เดธเตเดเดพเตป เดเตเดฏเตเดฏเตเดจเตเดจเต
เดเดชเตเดชเตเตพ เดเดเตเดเดณเตเดเต เดฒเตเดเตเดเตพ ORC-เดฏเดฟเดฒเต S3-เตฝ เดชเตเดฐเตเดธเดธเตเดธเต เดเตเดฏเตเดฏเตเดเดฏเตเด เดธเดเดญเดฐเดฟเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดคเต, เดเดเดชเตเดฐเดธเตเดธเตเดเตเดฏเตโเดคเต เดตเดฟเดถเดเดฒเดจเดคเตเดคเดฟเดจเต เดคเดฏเตเดฏเดพเดฑเดพเดฃเต. Kinesis Firehose เด เดตเดฏเต เดเดฐเต เดฎเดฃเดฟเดเตเดเตเดฑเดฟเดฒเตเด เดกเดฏเดฑเดเตเดเดฑเดฟเดเดณเดพเดฏเดฟ เดเตเดฐเดฎเตเดเดฐเดฟเดเตเดเต. เดเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด, เดเตเดฌเดฟเตพ เดชเดพเตผเดเตเดเตเดทเตป เดเตเดฏเตเดฏเดพเดคเตเดคเดฟเดเดคเตเดคเตเดณเด, เด เดชเตเตผเดตเดฎเดพเดฏ เดเดดเดฟเดตเดพเดเตเดเดฒเตเดเดณเตเดเต เดเดฒเตเดฒเดพ เด เดญเตเดฏเตผเดคเตเดฅเดจเดเดณเดฟเดฒเตเด เด เดฅเตเดจ เดเดฒเตเดฒเดพ เดธเดฎเดฏ เดกเดพเดฑเตเดฑเดฏเตเด เดฒเตเดกเต เดเตเดฏเตเดฏเตเด. เดฐเดฃเตเดเต เดเดพเดฐเดฃเดเตเดเดณเดพเตฝ เดเดคเต เดเดฐเต เดตเดฒเดฟเดฏ เดชเตเดฐเดถเตเดจเดฎเดพเดฃเต:
- เดกเดพเดฑเตเดฑเดฏเตเดเต เด เดณเดตเต เดจเดฟเดฐเดจเตเดคเดฐเด เดตเตผเดฆเตเดงเดฟเดเตเดเตเดเตเดฃเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต, เดเตเดฆเตเดฏเดเตเดเดณเตเดเต เดตเตเดเดค เดเตเดฑเดฏเตเดเตเดเตเดจเตเดจเต;
- เดเดฐเต เด เดญเตเดฏเตผเดคเตเดฅเดจเดฏเตเดเตเดเตเด เดเตเดฑเดเตเดเดคเต 10 MB เดเดจเตเดจ เดคเตเดคเดฟเตฝ เดธเตโเดเดพเตป เดเตเดฏเตโเดค เดกเดพเดฑเตเดฑเดฏเตเดเต เดตเตเดณเดฟเดฏเด เด เดเดฟเดธเตเดฅเดพเดจเดฎเดพเดเตเดเดฟเดฏเดพเดฃเต เด เดฅเตเดจ เดฌเดฟเตฝ เดเตเดฏเตเดฏเตเดจเตเดจเดคเต.
เดเดคเต เดชเดฐเดฟเดนเดฐเดฟเดเตเดเดพเตป, เดเดเตเดเตพ AWS Glue Crawler เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเต, เด เดคเต S3-เดฒเต เดกเดพเดฑเตเดฑ เดเตเดฐเตเตพ เดเตเดฏเตเดฏเตเดเดฏเตเด เดชเดพเตผเดเตเดเตเดทเตป เดตเดฟเดตเดฐเดเตเดเตพ เดเตเดฒเต เดฎเตเดฑเตเดฑเดพเดธเตเดฑเตเดฑเตเดฑเดฟเดฒเตเดเตเดเต เดเดดเตเดคเตเดเดฏเตเด เดเตเดฏเตเดฏเตเด. เด เดฅเตเดจเดฏเต เด เดจเตเดตเตเดทเดฟเดเตเดเตเดฎเตเดชเตเตพ เดชเดพเตผเดเตเดเตเดทเดจเตเดเตพ เดเดฐเต เดซเดฟเตฝเดเตเดเดฑเดพเดฏเดฟ เดเดชเดฏเตเดเดฟเดเตเดเดพเตป เดเดคเต เดเดเตเดเดณเต เด เดจเตเดตเดฆเดฟเดเตเดเตเด, เดเตเดเดพเดคเต เดเดคเต เด เดจเตเดตเตเดทเดฃเดคเตเดคเดฟเตฝ เดตเตเดฏเดเตเดคเดฎเดพเดเตเดเดฟเดฏ เดกเดฏเดฑเดเตเดเดฑเดฟเดเตพ เดฎเดพเดคเตเดฐเด เดธเตเดเดพเตป เดเตเดฏเตเดฏเตเด.
Amazon Glue Crawler เดธเดเตเดเตเดเดฐเดฟเดเตเดเตเดจเตเดจเต
เดเดฎเดธเตเตบ เดเตเดฒเต เดเตเดฐเดพเดณเตผ S3 เดฌเดเตเดเดฑเตเดฑเดฟเดฒเต เดเดฒเตเดฒเดพ เดกเดพเดฑเตเดฑเดฏเตเด เดธเตเดเดพเตป เดเตเดฏเตเดฏเตเดเดฏเตเด เดชเดพเตผเดเตเดเตเดทเดจเตเดเดณเตเดณเตเดณ เดชเดเตเดเดฟเดเดเตพ เดธเตเดทเตเดเดฟเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดจเตเดจเต. AWS เดเตเดฒเต เดเตบเดธเตเดณเดฟเตฝ เดจเดฟเดจเตเดจเต เดเดฐเต เดเตเดฒเต เดเตเดฐเดพเดณเตผ เดธเตเดทเตโเดเดฟเดเตเดเต เดจเดฟเดเตเดเตพ เดกเดพเดฑเตเดฑ เดธเดเดญเดฐเดฟเดเตเดเตเดจเตเดจ เดธเตเดฅเดฒเดคเตเดคเต เดเดฐเต เดฌเดเตเดเดฑเตเดฑเต เดเตเตผเดเตเดเตเด. เดจเดฟเดฐเดตเดงเดฟ เดฌเดเตเดเดฑเตเดฑเตเดเตพเดเตเดเดพเดฏเดฟ เดจเดฟเดเตเดเตพเดเตเดเต เดเดฐเต เดเตเดฐเดพเดณเตผ เดเดชเดฏเตเดเดฟเดเตเดเดพเด, เด เดธเดพเดนเดเดฐเตเดฏเดคเตเดคเดฟเตฝ เด เดคเต เดฌเดเตเดเดฑเตเดฑเตเดเดณเตเดเต เดชเตเดฐเตเดเดณเตเดฎเดพเดฏเดฟ เดชเตเดฐเตเดคเตเดคเดชเตเดชเตเดเตเดจเตเดจ เดชเตเดฐเตเดเตพ เดเดชเดฏเตเดเดฟเดเตเดเต เดจเดฟเตผเดฆเตเดฆเดฟเดทเตเด เดกเดพเดฑเตเดฑเดพเดฌเตเดธเดฟเตฝ เดชเดเตเดเดฟเดเดเตพ เดธเตเดทเตเดเดฟเดเตเดเตเด. เด เดกเดพเดฑเตเดฑ เดชเดคเดฟเดตเดพเดฏเดฟ เดเดชเดฏเตเดเดฟเดเตเดเดพเตป เดจเดฟเดเตเดเตพ เดเดเตเดฐเดนเดฟเดเตเดเตเดจเตเดจเตเดตเตเดเตเดเดฟเตฝ, เดจเดฟเดเตเดเดณเตเดเต เดเดตเดถเตเดฏเดเตเดเตพเดเตเดเต เด เดจเตเดฏเตเดเตเดฏเดฎเดพเดฏ เดฐเตเดคเดฟเดฏเดฟเตฝ Crawler-เดจเตเดฑเต เดฒเตเดเตเดเต เดทเตเดกเตเดฏเตเตพ เดเตเตบเดซเดฟเดเตผ เดเตเดฏเตเดฏเตเดจเตเดจเดคเต เดเดฑเดชเตเดชเดพเดเตเดเตเด. เดเดฒเตเดฒเดพ เดเตเดฌเดฟเดณเตเดเตพเดเตเดเตเด เดเดเตเดเตพ เดเดฐเต เดเตเดฐเดพเดณเตผ เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเต, เด เดคเต เดเดฐเต เดฎเดฃเดฟเดเตเดเตเดฑเดฟเดฒเตเด เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจเต.
เดตเดฟเดญเดเดฟเดเตเด เดชเดเตเดเดฟเดเดเตพ
เดเตเดฐเดพเดณเดฑเดฟเดจเตเดฑเต เดเดฆเตเดฏ เดตเดฟเดเตเดทเตเดชเดฃเดคเตเดคเดฟเดจเต เดถเตเดทเด, เดธเตเดเดพเตป เดเตเดฏเตเดค เดเดฐเต เดฌเดเตเดเดฑเตเดฑเดฟเดจเตเด เดตเตเดฃเตเดเดฟเดฏเตเดณเตเดณ เดชเดเตเดเดฟเดเดเตพ เดเตเดฐเดฎเตเดเดฐเดฃเดเตเดเดณเดฟเตฝ เดตเตเดฏเดเตเดคเดฎเดพเดเตเดเดฟเดฏ เดกเดพเดฑเตเดฑเดพเดฌเตเดธเดฟเตฝ เดฆเตเดถเตเดฏเดฎเดพเดเตเด. เด เดฅเตเดจ เดเตบเดธเตเตพ เดคเตเดฑเดจเตเดจเต Nginx เดฒเตเดเตเดเดณเตเดณเตเดณ เดชเดเตเดเดฟเด เดเดฃเตเดเตเดคเตเดคเตเด. เดจเดฎเตเดเตเดเต เดเดจเตเดคเตเดเตเดเดฟเดฒเตเด เดตเดพเดฏเดฟเดเตเดเดพเตป เดถเตเดฐเดฎเดฟเดเตเดเดพเด:
SELECT * FROM "default"."part_demo_kinesis_bucket"
WHERE(
partition_0 = '2019' AND
partition_1 = '04' AND
partition_2 = '08' AND
partition_3 = '06'
);
เด เดเตเดฆเตเดฏเด 6 เดเดชเตเดฐเดฟเตฝ 7-เดจเต เดฐเดพเดตเดฟเดฒเต 8 เดฎเดฃเดฟเดเตเดเตเด 2019 เดฎเดฃเดฟเดเตเดเตเด เดเดเดฏเดฟเตฝ เดฒเดญเดฟเดเตเด เดเดฒเตเดฒเดพ เดฑเตเดเตเดเตเตผเดกเตเดเดณเตเด เดคเดฟเดฐเดเตเดเตเดเตเดเตเดเตเด. เดเดจเตเดจเดพเตฝ เดชเดพเตผเดเตเดเตเดทเตป เดเตเดฏเตเดฏเดพเดคเตเดค เดเตเดฌเดฟเดณเดฟเตฝ เดจเดฟเดจเตเดจเต เดตเดพเดฏเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดเตเดเดพเตพ เดเดคเต เดเดคเตเดฐเดคเตเดคเตเดณเด เดเดพเดฐเตเดฏเดเตเดทเดฎเดฎเดพเดฃเต? เดเตเดเดธเตเดฑเตเดฑเดพเดฎเตเดชเต เดเดชเดฏเตเดเดฟเดเตเดเต เด เดตเดฏเต เดซเดฟเตฝเดเตเดเตผ เดเตเดฏเตโเดคเต เด เดคเต เดฑเตเดเตเดเตเตผเดกเตเดเตพ เดจเดฎเตเดเตเดเต เดเดฃเตเดเตเดคเตเดคเดฟ เดคเดฟเดฐเดเตเดเตเดเตเดเตเดเตเด:
3.59 เดธเตเดเตเดเตปเดกเตเด 244.34 เดฎเตเดเดพเดฌเตเดฑเตเดฑเต เดกเดพเดฑเตเดฑเดฏเตเด เดเดฐเดพเดดเตเด เดฎเดพเดคเตเดฐเดฎเตเดณเตเดณ เดฒเตเดเตเดเดณเตเดณเตเดณ เดเดฐเต เดกเดพเดฑเตเดฑเดพเดเดฃเดคเตเดคเดฟเตฝ. เดชเดพเตผเดเตเดเตเดทเตป เดชเตเดฐเดเดพเดฐเด เดเดฐเต เดซเดฟเตฝเดเตเดเตผ เดชเดฐเตเดเตเดทเดฟเดเตเดเดพเด:
เดเตเดฑเดเตเดเต เดตเตเดเดคเตเดคเดฟเตฝ, เดเดจเตเดจเดพเตฝ เดเดฑเตเดฑเดตเตเด เดชเตเดฐเดงเดพเดจเดฎเดพเดฏเดฟ - 1.23 เดฎเตเดเดพเดฌเตเดฑเตเดฑเต เดกเดพเดฑเตเดฑ เดฎเดพเดคเตเดฐเด! เดตเดฟเดฒเดจเดฟเตผเดฃเตเดฃเดฏเดคเตเดคเดฟเตฝ เดเดฐเต เด เดญเตเดฏเตผเดคเตเดฅเดจเดฏเตเดเตเดเต เดเตเดฑเดเตเดเดคเต 10 เดฎเตเดเดพเดฌเตเดฑเตเดฑเตเดเตพ เดเดฒเตเดฒเตเดเตเดเดฟเตฝ เดเดคเต เดตเดณเดฐเต เดตเดฟเดฒเดเตเดฑเดเตเดเดคเดพเดฏเดฟเดฐเดฟเดเตเดเตเด. เดเดจเตเดจเดพเตฝ เดเดคเต เดเดชเตเดชเตเดดเตเด เดตเดณเดฐเต เดฎเดฟเดเดเตเดเดคเดพเดฃเต, เดตเดฒเดฟเดฏ เดกเดพเดฑเตเดฑเดพเดธเตเดฑเตเดฑเตเดเดณเดฟเตฝ เดตเตเดฏเดคเตเดฏเดพเดธเด เดตเดณเดฐเต เดถเตเดฐเดฆเตเดงเตเดฏเดฎเดพเดฏเดฟเดฐเดฟเดเตเดเตเด.
Cube.js เดเดชเดฏเตเดเดฟเดเตเดเต เดเดฐเต เดกเดพเดทเตโเดฌเตเตผเดกเต เดจเดฟเตผเดฎเตเดฎเดฟเดเตเดเตเดจเตเดจเต
เดกเดพเดทเตเดฌเตเตผเดกเต เดเตเดเตเดเดฟเดเตเดเตเตผเดเตเดเดพเตป, เดเดเตเดเตพ Cube.js เด
เดจเดฒเดฟเดฑเตเดฑเดฟเดเตเดเตฝ เดซเตเดฐเตเดฏเดฟเดเดตเตผเดเตเดเต เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเต. เดเดคเดฟเดจเต เดงเดพเดฐเดพเดณเด เดซเดเดเตเดทเดจเตเดเดณเตเดฃเตเดเต, เดชเดเตเดทเต เดเดเตเดเตพเดเตเดเต เดฐเดฃเตเดเดฟเตฝ เดคเดพเตฝเดชเตเดชเดฐเตเดฏเดฎเตเดฃเตเดเต: เดชเดพเตผเดเตเดเตเดทเตป เดซเดฟเตฝเดเตเดเดฑเตเดเดณเตเด เดกเดพเดฑเตเดฑ เดชเตเดฐเต-เด
เดเตเดฐเดเตเดทเดจเตเด เดธเตเดตเดฏเดฎเตเดต เดเดชเดฏเตเดเดฟเดเตเดเดพเดจเตเดณเตเดณ เดเดดเดฟเดตเต. เดเดคเต เดกเดพเดฑเตเดฑ เดธเตเดเตเดฎ เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเต
เดจเดฎเตเดเตเดเต เดเดฐเต เดชเตเดคเดฟเดฏ Cube.js เดเดชเตเดฒเดฟเดเตเดเตเดทเตป เดธเตเดทเตเดเดฟเดเตเดเดพเด. เดเดเตเดเตพ เดเดคเดฟเดจเดเด AWS เดธเตเดฑเตเดฑเดพเดเตเดเต เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเดพเตฝ, เดตเดฟเดจเตเดฏเดพเดธเดคเตเดคเดฟเดจเดพเดฏเดฟ Lambda เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเดคเต เดฏเตเดเตเดคเดฟเดธเดนเดฎเดพเดฃเต. Heroku เด
เดฒเตเดฒเตเดเตเดเดฟเตฝ Docker-เตฝ Cube.js เดฌเดพเดเตเดเตเตปเดกเต เดนเตเดธเตเดฑเตเดฑเต เดเตเดฏเตเดฏเดพเตป เดจเดฟเดเตเดเตพ เดเดเตเดฐเดนเดฟเดเตเดเตเดจเตเดจเตเดตเตเดเตเดเดฟเตฝ, เดจเดฟเดเตเดเตพเดเตเดเต เดคเดฒเดฎเตเดฑเดฏเตเดเตเดเดพเดฏเดฟ เดเดเตเดธเตเดชเตเดฐเดธเต เดเตเดเดชเตเดฒเตเดฑเตเดฑเต เดเดชเดฏเตเดเดฟเดเตเดเดพเด. เดกเตเดเตเดฏเตเดฎเตเดจเตเดฑเตเดทเตป เดฎเดฑเตเดฑเตเดณเตเดณเดตเดฐเต เดตเดฟเดตเดฐเดฟเดเตเดเตเดจเตเดจเต
$ npm install -g cubejs-cli
$ cubejs create nginx-log-analytics -t serverless -d athena
cube.js-เตฝ เดกเดพเดฑเตเดฑเดพเดฌเตเดธเต เดเดเตโเดธเดธเต เดเตเตบเดซเดฟเดเตผ เดเตเดฏเตเดฏเดพเตป เดเตปเดตเดฏเตเตบเดฎเตเดจเตเดฑเต เดตเตเดฐเดฟเดฏเดฌเดฟเดณเตเดเตพ เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเต. เดเดจเดฑเตเดฑเตเดฑเตผ เดเดฐเต .env เดซเดฏเตฝ เดธเตเดทเตเดเดฟเดเตเดเตเด, เด
เดคเดฟเตฝ เดจเดฟเดเตเดเดณเตเดเต เดเตเดเตพ เดตเตเดฏเดเตเดคเดฎเดพเดเตเดเดพเด
เดเดชเตเดชเตเตพ เดจเดฎเตเดเตเดเต เดเดตเดถเตเดฏเดฎเดพเดฃเต
เดกเดฏเดฑเดเตเดเดฑเดฟเดฏเดฟเตฝ schema
, เดเดฐเต เดซเดฏเตฝ เดธเตเดทเตเดเดฟเดเตเดเตเด Logs.js
. nginx-เดจเตเดณเตเดณ เดเดฐเต เดเดฆเดพเดนเดฐเดฃ เดกเดพเดฑเตเดฑ เดฎเตเดกเตฝ เดเดคเดพ:
เดฎเตเดกเตฝ เดเตเดกเต
const partitionFilter = (from, to) => `
date(from_iso8601_timestamp(${from})) <= date_parse(partition_0 || partition_1 || partition_2, '%Y%m%d') AND
date(from_iso8601_timestamp(${to})) >= date_parse(partition_0 || partition_1 || partition_2, '%Y%m%d')
`
cube(`Logs`, {
sql: `
select * from part_demo_kinesis_bucket
WHERE ${FILTER_PARAMS.Logs.createdAt.filter(partitionFilter)}
`,
measures: {
count: {
type: `count`,
},
errorCount: {
type: `count`,
filters: [
{ sql: `${CUBE.isError} = 'Yes'` }
]
},
errorRate: {
type: `number`,
sql: `100.0 * ${errorCount} / ${count}`,
format: `percent`
}
},
dimensions: {
status: {
sql: `status`,
type: `number`
},
isError: {
type: `string`,
case: {
when: [{
sql: `${CUBE}.status >= 400`, label: `Yes`
}],
else: { label: `No` }
}
},
createdAt: {
sql: `from_unixtime(created_at)`,
type: `time`
}
}
});
เดเดตเดฟเดเต เดจเดฎเตเดฎเตพ เดตเตเดฐเดฟเดฏเดฌเดฟเตพ เดเดฃเต เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเดคเต
เดกเดพเดทเตโเดฌเตเตผเดกเดฟเตฝ เดชเตเดฐเดฆเตผเดถเดฟเดชเตเดชเดฟเดเตเดเดพเตป เดเดเตเดฐเดนเดฟเดเตเดเตเดจเตเดจ เด เดณเดตเตเดเดณเตเด เดชเดพเดฐเดพเดฎเตเดฑเตเดฑเดฑเตเดเดณเตเด เดเดเตเดเตพ เดธเดเตเดเดฎเดพเดเตเดเตเดเดฏเตเด เดชเตเดฐเต-เด เดเตเดฐเดฟเดเตเดทเดจเตเดเตพ เดตเตเดฏเดเตเดคเดฎเดพเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดจเตเดจเต. Cube.js เดชเตเดฐเต-เด เดเตเดฐเดเตเดฑเตเดฑเดกเต เดกเดพเดฑเตเดฑ เดเดชเดฏเตเดเดฟเดเตเดเต เด เดงเดฟเด เดชเดเตเดเดฟเดเดเตพ เดธเตเดทเตโเดเดฟเดเตเดเตเดเดฏเตเด เดกเดพเดฑเตเดฑ เดตเดฐเตเดฎเตเดชเตเตพ เดธเตเดตเดฏเดฎเตเดต เด เดชเตโเดกเตเดฑเตเดฑเต เดเตเดฏเตเดฏเตเดเดฏเตเด เดเตเดฏเตเดฏเตเด. เดเดคเต เด เดจเตเดตเตเดทเดฃเดเตเดเตพ เดตเตเดเดคเตเดคเดฟเดฒเดพเดเตเดเตเด เดฎเดพเดคเตเดฐเดฎเดฒเตเดฒ, เด เดฅเตเดจ เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดเตเดฒเดตเต เดเตเดฑเดฏเตเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดจเตเดจเต.
เดกเดพเดฑเตเดฑ เดธเตเดเตเดฎ เดซเดฏเดฒเดฟเดฒเตเดเตเดเต เด เดตเดฟเดตเดฐเดเตเดเตพ เดเตเตผเดเตเดเดพเด:
preAggregations: {
main: {
type: `rollup`,
measureReferences: [count, errorCount],
dimensionReferences: [isError, status],
timeDimensionReference: createdAt,
granularity: `day`,
partitionGranularity: `month`,
refreshKey: {
sql: FILTER_PARAMS.Logs.createdAt.filter((from, to) =>
`select
CASE WHEN from_iso8601_timestamp(${to}) + interval '3' day > now()
THEN date_trunc('hour', now()) END`
)
}
}
}
เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจ เดเดฒเตเดฒเดพ เดฎเตเดเตเดฐเดฟเดเตเดเตเดเตพเดเตเดเตเดฎเดพเดฏเดฟ เดกเดพเดฑเตเดฑ เดชเตเดฐเต-เด
เดเตเดฐเดเตเดฑเตเดฑเต เดเตเดฏเตเดฏเตเดฃเตเดเดคเต เดเดตเดถเตเดฏเดฎเดพเดฃเตเดจเตเดจเต เดเดเตเดเตพ เด เดฎเตเดกเดฒเดฟเตฝ เดตเตเดฏเดเตเดคเดฎเดพเดเตเดเตเดจเตเดจเต, เดเตเดเดพเดคเต เดฎเดพเดธเด เดคเตเดฑเตเด เดชเดพเตผเดเตเดเตเดทเดจเดฟเดเดเต เดเดชเดฏเตเดเดฟเดเตเดเตเด.
เดเดชเตเดชเตเตพ เดจเดฎเตเดเตเดเต เดกเดพเดทเตเดฌเตเตผเดกเต เดเตเดเตเดเดฟเดเตเดเตเตผเดเตเดเดพเด!
Cube.js เดฌเดพเดเตเดเตเตปเดกเต เดจเตฝเดเตเดจเตเดจเต
Cube.js เดธเตเตผเดตเตผ เด
เดญเตเดฏเตผเดคเตเดฅเดจ เดธเตเดตเตเดเดฐเดฟเดเตเดเตเดจเตเดจเต
{
"measures": ["Logs.errorCount"],
"timeDimensions": [
{
"dimension": "Logs.createdAt",
"dateRange": ["2019-01-01", "2019-01-07"],
"granularity": "day"
}
]
}
NPM เดตเดดเดฟ Cube.js เดเตเดฒเดฏเดจเตเดฑเตเด เดฑเดฟเดฏเดพเดเตเดฑเตเดฑเต เดเดเด เดฒเตเดฌเตเดฐเดฑเดฟเดฏเตเด เดเตปเดธเตเดฑเตเดฑเดพเตพ เดเตเดฏเตเดฏเดพเด:
$ npm i --save @cubejs-client/core @cubejs-client/react
เดเดเตเดเตพ เดเดเดเดเตเดเตพ เดเดฑเดเตเดเตเดฎเดคเดฟ เดเตเดฏเตเดฏเตเดจเตเดจเต cubejs
ะธ QueryRenderer
เดกเดพเดฑเตเดฑ เดกเตเตบเดฒเตเดกเต เดเตเดฏเตเดฏเดพเดจเตเด เดกเดพเดทเตโเดฌเตเตผเดกเต เดถเตเดเดฐเดฟเดเตเดเดพเดจเตเด:
เดกเดพเดทเตเดฌเตเตผเดกเต เดเตเดกเต
import React from 'react';
import { LineChart, Line, XAxis, YAxis } from 'recharts';
import cubejs from '@cubejs-client/core';
import { QueryRenderer } from '@cubejs-client/react';
const cubejsApi = cubejs(
'YOUR-CUBEJS-API-TOKEN',
{ apiUrl: 'http://localhost:4000/cubejs-api/v1' },
);
export default () => {
return (
<QueryRenderer
query={{
measures: ['Logs.errorCount'],
timeDimensions: [{
dimension: 'Logs.createdAt',
dateRange: ['2019-01-01', '2019-01-07'],
granularity: 'day'
}]
}}
cubejsApi={cubejsApi}
render={({ resultSet }) => {
if (!resultSet) {
return 'Loading...';
}
return (
<LineChart data={resultSet.rawData()}>
<XAxis dataKey="Logs.createdAt"/>
<YAxis/>
<Line type="monotone" dataKey="Logs.errorCount" stroke="#8884d8"/>
</LineChart>
);
}}
/>
)
}
เดกเดพเดทเตโเดฌเตเตผเดกเต เดเดฑเดตเดฟเดเดเตเดเตพ เดเดตเดฟเดเต เดฒเดญเตเดฏเดฎเดพเดฃเต
เด เดตเดฒเดเดฌเด: www.habr.com