Menanyakan log kueri penyelesai Amazon Route 53 - Amazon Athena

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Menanyakan log kueri penyelesai Amazon Route 53

Anda dapat membuat tabel Athena untuk Amazon Route 53 Resolver permintaan log dan kueri mereka dari Athena.

Route 53 penyelesai permintaan penebangan untuk penebangan permintaan DNS yang dibuat oleh sumber daya dalam VPC, lokal sumber daya yang menggunakan inbound resolver endpoint, permintaan yang menggunakan akhir Resolver keluar untuk rekursif DNS resolusi, dan permintaan yang menggunakan Route 53 Resolver DNS firewall aturan untuk memblokir, memungkinkan, atau memantau daftar domain. Untuk informasi selengkapnya, lihat Mencatat Log Kueri DNS dalam Panduan Developer Amazon Route 53. Untuk informasi tentang masing-masing bidang dalam log, lihat Nilai yang muncul di log kueri resolver di Panduan Pengembang Amazon Route 53.

Membuat tabel untuk log kueri resolver

Anda dapat menggunakan Editor Kueri di konsol Athena untuk membuat dan kueri tabel untuk log permintaan Route 53 penyelesai Anda.

Untuk membuat dan menanyakan tabel Athena untuk log kueri resolver Route 53
  1. Buka konsol Athena di https://console.aws.amazon.com/athena/.

  2. Dalam Editor Kueri Athena, masukkan yang berikutCREATE TABLE. GantiLOCATIONdengan yang sesuai dengan lokasi log Resolver Anda di Amazon S3.

    CREATE EXTERNAL TABLE r53_rlogs ( version string, account_id string, region string, vpc_id string, query_timestamp string, query_name string, query_type string, query_class string, rcode string, answers array< struct< Rdata: string, Type: string, Class: string> >, srcaddr string, srcport int, transport string, srcids struct< instance: string, resolver_endpoint: string >, firewall_rule_action string, firewall_rule_group_id string, firewall_domain_list_id string ) ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe' LOCATION 's3://DOC-EXAMPLE-BUCKET/AWSLogs/aws_account_id/vpcdnsquerylogs/{vpc-id}/'

    Karena data log kueri Resolver dalam format JSON, pernyataan CREATE TABLE menggunakan SerDepustaka JSON untuk menganalisis data.

    catatan

    SerDe Mengharapkan setiap dokumen JSON berada pada satu baris teks tanpa karakter penghentian baris yang memisahkan bidang dalam catatan. Jika teks JSON dalam format cetak cantik, Anda mungkin menerima pesan kesalahan seperti HIVE_CURSOR_ERROR: Row is not a valid JSON Object or HIVE_CURSOR_ERROR:: Unexpected JsonParseException end-of-input: expected close marker for OBJECT saat Anda mencoba menanyakan tabel setelah Anda membuatnya. Untuk informasi selengkapnya, lihat File Data JSON dalam dokumentasi SerDe OpenX pada. GitHub

  3. Pilih Run query (Jalankan kueri). Pernyataan itu menciptakan tabel Athena bernamar53_rlogskolom yang mewakili masing-masing bidang dalam data log Resolver Anda.

  4. Di Athena konsol Kueri Editor, jalankan kueri berikut untuk memverifikasi bahwa tabel Anda telah dibuat.

    SELECT * FROM "r53_rlogs" LIMIT 10

Contoh partisi

Contoh berikut menunjukkan CREATE TABLE pernyataan untuk log query Resolver yang menggunakan proyeksi partisi dan dipartisi oleh vpc dan tanggal. Untuk informasi selengkapnya tentang proyek partisi, lihat Proyeksi partisi dengan Amazon Athena.

CREATE EXTERNAL TABLE r53_rlogs ( version string, account_id string, region string, vpc_id string, query_timestamp string, query_name string, query_type string, query_class string, rcode string, answers array< struct< Rdata: string, Type: string, Class: string> >, srcaddr string, srcport int, transport string, srcids struct< instance: string, resolver_endpoint: string >, firewall_rule_action string, firewall_rule_group_id string, firewall_domain_list_id string ) PARTITIONED BY ( `date` string, `vpc` string ) ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe' STORED AS INPUTFORMAT 'org.apache.hadoop.mapred.TextInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' LOCATION 's3://DOC-EXAMPLE-BUCKET/route53-query-logging/AWSLogs/aws_account_id/vpcdnsquerylogs/' TBLPROPERTIES( 'projection.enabled' = 'true', 'projection.vpc.type' = 'enum', 'projection.vpc.values' = 'vpc-6446ae02', 'projection.date.type' = 'date', 'projection.date.range' = '2023/06/26,NOW', 'projection.date.format' = 'yyyy/MM/dd', 'projection.date.interval' = '1', 'projection.date.interval.unit' = 'DAYS', 'storage.location.template' = 's3://DOC-EXAMPLE-BUCKET/route53-query-logging/AWSLogs/aws_account_id/vpcdnsquerylogs/${vpc}/${date}/' )

Kueri contoh

Contoh berikut menunjukkan beberapa pertanyaan yang dapat Anda lakukan dari Athena pada log permintaan Resolver Anda.

Contoh 1 - log kueri dalam urutan query_timestamp menurun

Kueri berikut menampilkan hasil log dalam turunquery_timestampAgar.

SELECT * FROM "r53_rlogs" ORDER BY query_timestamp DESC

Contoh 2 - log kueri dalam waktu mulai dan akhir yang ditentukan

Kueri kueri berikut log antara tengah malam dan 8 pagi pada 24 September 2020. Gantikan waktu awal dan akhir sesuai dengan kebutuhan Anda sendiri.

SELECT query_timestamp, srcids.instance, srcaddr, srcport, query_name, rcode FROM "r53_rlogs" WHERE (parse_datetime(query_timestamp,'yyyy-MM-dd''T''HH:mm:ss''Z') BETWEEN parse_datetime('2020-09-24-00:00:00','yyyy-MM-dd-HH:mm:ss') AND parse_datetime('2020-09-24-00:08:00','yyyy-MM-dd-HH:mm:ss')) ORDER BY query_timestamp DESC

Contoh 3 - log kueri berdasarkan pola nama kueri DNS tertentu

Kueri berikut memilih catatan yang nama kueri termasuk string “example.com”.

SELECT query_timestamp, srcids.instance, srcaddr, srcport, query_name, rcode, answers FROM "r53_rlogs" WHERE query_name LIKE '%example.com%' ORDER BY query_timestamp DESC

Contoh 4 - permintaan log kueri tanpa jawaban

Kueri berikut memilih entri log tempat permintaan tidak menerima jawaban.

SELECT query_timestamp, srcids.instance, srcaddr, srcport, query_name, rcode, answers FROM "r53_rlogs" WHERE cardinality(answers) = 0

Contoh 5 - log kueri dengan jawaban tertentu

Kueri berikut menunjukkan log tempatanswer.Rdatanilai memiliki alamat IP yang ditentukan.

SELECT query_timestamp, srcids.instance, srcaddr, srcport, query_name, rcode, answer.Rdata FROM "r53_rlogs" CROSS JOIN UNNEST(r53_rlogs.answers) as st(answer) WHERE answer.Rdata='203.0.113.16';