View a markdown version of this page

Boolean, perbandingan, numerik, datetime, dan fungsi lainnya - CloudWatch Log Amazon

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

Boolean, perbandingan, numerik, datetime, dan fungsi lainnya

CloudWatch Logs Insights mendukung banyak operasi dan fungsi lain dalam kueri, seperti yang dijelaskan di bagian berikut.

Operator aritmatika

Operator aritmatika menerima tipe data numerik sebagai argumen dan mengembalikan hasil numerik. Gunakan operator aritmatika dalam fields perintah filter dan sebagai argumen untuk fungsi lainnya.

Operasi Deskripsi

a + b

Penambahan

a - b

Pengurangan

a * b

Perkalian

a / b

Pembagian

a ^ b

Eksponensiasi (pengembalian) 2 ^ 3 8

a % b

Sisa atau modulus (pengem 10 % 3 balian1)

Operator Boolean

Gunakan operator Booleanand,or, dan. not

catatan

Gunakan operator Boolean hanya dalam fungsi yang mengembalikan nilai TR UE atau FALSE.

Operator perbandingan

Operator perbandingan menerima semua tipe data sebagai argumen dan mengembalikan hasil Boolean. Gunakan operasi perbandingan dalam filter perintah dan sebagai argumen untuk fungsi lain.

Operator Deskripsi

=

Sama

!=

Tidak sama

<

Kurang dari

>

Lebih besar dari

<=

Kurang dari atau sama dengan

>=

Lebih besar dari atau sama dengan

Operator numerik

Operasi numerik menerima tipe data numerik sebagai argumen dan mengembalikan hasil numerik. Gunakan operasi numerik dalam fields perintah filter dan sebagai argumen untuk fungsi lainnya.

Operasi Tipe Hasil Deskripsi

abs(a: number)

number

Nilai absolut

ceil(a: number)

number

Bulat ke langit-langit (bilangan bulat terkecil yang lebih besar dari nilaia)

floor(a: number)

number

Bulat ke lantai (bilangan bulat terbesar yang lebih kecil dari nilaia)

greatest(a: number, ...numbers: number[])

number

Mengembalikan nilai terbesar

least(a: number, ...numbers: number[])

number

Mengembalikan nilai terkecil

log(a: number)

number

Log alami

round(a: number [, d: number])

number

Membulatkan nilaia. Dengan satu argumen, bulatkan ke bilangan bulat terdekat. Dengan dua argumen, bulatkan ke tempat d desimal.

sqrt(a: number)

number

Akar kuadrat

haversine(lat1: number, lon1: number, lat2: number, lon2: number)

number

Menghitung jarak lingkaran besar dalam kilometer antara dua titik geografis yang ditentukan oleh garis lintang dan bujur dalam derajat.

toNumber(fieldName: string)

number

Mengkonversi nilai bidang string ke nilai numerik.

toInt(fieldName: string)

number

Mengkonversi nilai bidang ke bilangan bulat (32-bit).

toLong(fieldName: string)

number

Mengkonversi nilai bidang ke bilangan bulat panjang (64-bit).

toDouble(fieldName: string)

number

Mengonversi nilai bidang menjadi angka float point presisi ganda.

Jenis struktur

Peta atau daftar adalah jenis struktur di CloudWatch Logs Insights yang memungkinkan Anda mengakses dan menggunakan atribut untuk kueri.

Contoh: Untuk mendapatkan peta atau daftar

Gunakan jsonParse untuk mengurai bidang yang merupakan string json menjadi peta atau daftar.

fields jsonParse(@message) as json_message
Contoh: Untuk mengakses atribut

Gunakan operator akses titik (map.atribut) untuk mengakses item di peta.. Jika atribut dalam peta berisi karakter khusus, gunakan backtick untuk melampirkan nama atribut (map.properties. `khusus.char`).

fields jsonParse(@message) as json_message | stats count() by json_message.status_code

Gunakan operator akses braket (list [index]) untuk mengambil item pada posisi tertentu dalam daftar.

fields jsonParse(@message) as json_message | filter json_message.users[1].action = "PutData"

Bungkus karakter khusus dalam backtick (``) ketika karakter khusus hadir dalam nama kunci.

fields jsonParse(@message) as json_message | filter json_message.`user.id` = "123"
Contoh: hasil kosong

Peta dan daftar diperlakukan sebagai null untuk fungsi string, angka, dan datetime.

fields jsonParse(@message) as json_message | display toupper(json_message)

Membandingkan peta dan daftar dengan bidang lain menghasilkanfalse.

catatan

Menggunakan peta dan daftar di deduppattern,sort,, stats dan tidak didukung.

Fungsi datetime

Fungsi datetime

Gunakan fungsi datetime dalam filter perintah fields dan sebagai argumen untuk fungsi lain. Gunakan fungsi ini untuk membuat bucket waktu untuk kueri dengan fungsi agregat. Gunakan periode waktu yang terdiri dari angka dan salah satu dari berikut ini:

  • msselama milidetik

  • sselama beberapa detik

  • mselama beberapa menit

  • hselama berjam-jam

Misalnya, 10m adalah 10 menit, dan 1h 1 jam.

catatan

Gunakan satuan waktu yang paling tepat untuk fungsi datetime Anda. CloudWatch Log membatasi permintaan Anda sesuai dengan satuan waktu yang Anda pilih. Misalnya, ini membatasi 60 sebagai nilai maksimum untuk setiap permintaan yang menggunakans. Jadi, jika Anda menentukanbin(300s), CloudWatch Log sebenarnya mengimplementasikan ini sebagai 60 detik, karena 60 adalah jumlah detik dalam satu menit sehingga CloudWatch Log tidak akan menggunakan angka yang lebih tinggi dari 60 dengans. Untuk membuat ember 5 menit, gunakan sebagai bin(5m) gantinya.

Tutup untuk ms adalah 1000, tutup untuk s dan m adalah 60, dan tutup untuk h adalah 24.

Tabel berikut berisi daftar fungsi datetime yang berbeda yang dapat Anda gunakan dalam perintah kueri. Tabel mencantumkan setiap jenis hasil fungsi dan berisi deskripsi dari setiap fungsi.

Tip

Saat Anda membuat perintah kueri, Anda dapat menggunakan pemilih interval waktu untuk memilih periode waktu yang ingin Anda kueri. Misalnya, Anda dapat mengatur periode waktu antara interval 5 dan 30 menit; interval 1, 3, dan 12 jam; atau kerangka waktu khusus. Anda juga dapat mengatur periode waktu antara tanggal tertentu.

Fungsi Tipe hasil Deskripsi

bin(period: Period)

Stempel waktu

Membulatkan nilai @timestamp ke periode waktu tertentu dan kemudian memotong. Misalnya, bin(5m) membulatkan nilai @timestamp ke 5 menit terdekat.

Anda dapat menggunakan ini untuk mengelompokkan beberapa entri log bersama-sama dalam kueri. Contoh berikut mengembalikan jumlah pengecualian per jam:

filter @message like /Exception/ | stats count(*) as exceptionCount by bin(1h) | sort exceptionCount desc

Unit waktu dan singkatan berikut didukung dengan bin fungsi ini. Untuk semua unit dan singkatan yang mencakup lebih dari satu karakter, menambahkan s ke pluralize didukung. Jadi keduanya hr dan hrs bekerja untuk menentukan jam.

  • millisecond ms msec

  • second s sec

  • minute m min

  • hour h hr

  • day d

  • week w

  • month mo mon

  • quarter q qtr

  • year y yr

datefloor(timestamp: Timestamp, period: Period)

Stempel waktu

Memotong stempel waktu ke periode tertentu. Misalnya, datefloor(@timestamp, 1h) memotong semua nilai @timestamp ke bagian bawah jam.

dateceil(timestamp: Timestamp, period: Period)

Stempel waktu

Membulatkan stempel waktu ke periode tertentu dan kemudian memotong. Misalnya, dateceil(@timestamp, 1h) memotong semua nilai @timestamp ke bagian atas jam.

fromMillis(fieldName: number)

Stempel waktu

Menafsirkan bidang input sebagai jumlah milidetik sejak jangka waktu Unix dan mengubahnya menjadi stempel waktu.

toMillis(fieldName: Timestamp)

nomor

Mengonversi stempel waktu yang ditemukan di bidang bernama menjadi angka yang mewakili milidetik sejak jangka waktu Unix. Misalnya, toMillis(@timestamp) mengubah stempel waktu menjadi2022-01-14T13:18:031.000-08:00. 1642195111000

now()

number

Mengembalikan waktu pemrosesan kueri dimulai, dalam detik zaman. Fungsi ini tidak membutuhkan argumen.

Anda dapat menggunakan ini untuk memfilter hasil kueri Anda sesuai dengan waktu saat ini.

Misalnya, kueri berikut mengembalikan semua kesalahan 4xx dari dua jam terakhir:

parse @message "Status Code: *;" as statusCode\n | filter statusCode >= 400 and statusCode <= 499 \n | filter toMillis(@timestamp) >= (now() * 1000 - 7200000)

Contoh berikut mengembalikan semua entri log dari lima jam terakhir yang berisi kata error atau failure

fields @timestamp, @message | filter @message like /(?i)(error|failure)/ | filter toMillis(@timestamp) >= (now() * 1000 - 18000000)

parseDate(fieldName: string, format: string [, timezone: string])

number

Mengurai string tanggal ke zaman milidetik menggunakan pola Java. DateTimeFormatter timezoneArgumen opsional menentukan zona waktu yang akan digunakan untuk penguraian.

Contoh: fields parseDate(field, "yyyy-MM-dd", "UTC") as epoch

formatDate(timestamp: LogField, format: string [, timezone: string])

string

Memformat stempel waktu menggunakan string format gaya strftime. Juga tersedia sebagai aliasstrftime. timezoneArgumen opsional menentukan zona waktu untuk pemformatan.

Contoh: fields formatDate(@timestamp, "%Y-%m-%d", "UTC") as date

catatan

Saat ini, CloudWatch Logs Insights tidak mendukung penyaringan log dengan stempel waktu yang dapat dibaca manusia.

Fungsi umum

Fungsi umum

Gunakan fungsi umum dalam filter perintah fields dan sebagai argumen untuk fungsi lainnya.

Fungsi Tipe hasil Deskripsi

ispresent(fieldName: LogField)

Boolean

Mengembalikan true jika bidang itu ada

coalesce(fieldName: LogField, ...fieldNames: LogField[])

LogField

Mengembalikan nilai non-null pertama dari daftar

case(cond1, val1, cond2, val2, ..., [default])

LogField

Mengevaluasi kondisi secara berurutan dan mengembalikan nilai untuk kondisi benar pertama. Jika tidak ada kondisi yang benar dan default disediakan, mengembalikan default. Mendukung hingga 10 cabang.

if(condition: Boolean, trueValue: LogField, falseValue: LogField)

LogField

Mengevaluasi suatu kondisi dan mengembalikan trueValue jika kondisinya benar, atau falseValue sebaliknya.

isNumeric(fieldName: LogField)

Boolean

Meng true embalikan jika nilai bidang dapat diurai sebagai angka.

Contoh: filter isNumeric(@duration)

messageSize(fieldName: LogField)

number

Mengembalikan panjang byte dari bidang string.

Contoh: fields messageSize(@message) as size

queryStartTime()

number

Mengembalikan waktu mulai jendela kueri sebagai milidetik zaman.

queryEndTime()

number

Mengembalikan waktu akhir jendela kueri sebagai milidetik zaman.

queryTimeRange()

number

Mengembalikan durasi jendela query dalam milidetik.

Fungsi JSON

Fungsi JSON

Gunakan fungsi JSON dalam filter perintah fields dan sebagai argumen untuk fungsi lainnya.

Fungsi Tipe hasil Deskripsi

jsonParse(fieldName: string)

Peta | Daftar | Kosong

Mengembalikan peta atau daftar ketika input adalah representasi string dari objek JSON atau array JSON. Mengembalikan nilai kosong, jika input bukan salah satu representasi.

jsonStringify(fieldName: Map | List)

String

Mengembalikan string JSON dari peta atau daftar data.

jsonArraySize(fieldName: LogField)

number

Mengembalikan jumlah elemen bidang string array JSON.

Contoh: fields jsonArraySize(Operation) as arrayLen

jsonArrayContains(fieldName: LogField, value: string)

Boolean

Meng true embalikan (1) jika array JSON di bidang berisi nilai yang ditentukan. Mengembalikan false (0) untuk JSON, non-array, atau array kosong yang tidak valid. Menggunakan perbandingan peka huruf besar/kecil.

Contoh: filter jsonArrayContains(@roles, "admin")

Fungsi string alamat IP

Fungsi string alamat IP

Gunakan fungsi string alamat IP dalam fields perintah filter dan sebagai argumen untuk fungsi lainnya.

Fungsi Tipe hasil Deskripsi

isValidIp(fieldName: string)

boolean

Mengembalikan true jika bidang adalah alamat IPv4 atau IPv6 yang valid.

isValidIpV4(fieldName: string)

boolean

Mengembalikan true jika bidang adalah alamat IPv4 yang valid.

isValidIpV6(fieldName: string)

boolean

Mengembalikan true jika bidang adalah alamat IPv6 yang valid.

isIpInSubnet(fieldName: string, subnet: string)

boolean

Mengembalikan true jika bidang adalah alamat IPv4 atau IPv6 yang valid dengan subnet v4 atau v6 yang ditentukan. Ketika Anda menentukan subnet, gunakan notasi CIDR seperti 192.0.2.0/24 atau2001:db8::/32, di mana 192.0.2.0 atau 2001:db8:: adalah awal dari blok CIDR.

isIpv4InSubnet(fieldName: string, subnet: string)

boolean

Mengembalikan true jika bidang adalah alamat IPv4 yang valid dalam subnet v4 yang ditentukan. Ketika Anda menentukan subnet, gunakan notasi CIDR seperti 192.0.2.0/24 di 192.0.2.0 mana awal blok CIDR..

isIpv6InSubnet(fieldName: string, subnet: string)

boolean

Mengembalikan true jika bidang adalah alamat IPv6 yang valid dalam subnet v6 yang ditentukan. Ketika Anda menentukan subnet, gunakan notasi CIDR seperti 2001:db8::/32 di 2001:db8:: mana awal blok CIDR.

ipv4ToNumber(fieldName: string)

number

Mengkonversi string alamat IPv4 ke representasi numeriknya.

isPrivateIP(fieldName: string)

boolean

Meng true embalikan jika alamat IP berada dalam rentang pribadi (RFC 1918).

isPublicIP(fieldName: string)

boolean

Mengembalikan true jika alamat IP dapat dirutekan secara publik.

isReservedIP(fieldName: string)

boolean

Mengembalikan true jika alamat IP berada dalam rentang yang dicadangkan.

Fungsi string

Fungsi string

Gunakan fungsi string dalam filter perintah fields dan sebagai argumen untuk fungsi lainnya.

Fungsi Tipe hasil Deskripsi

isempty(fieldName: string)

Bilangan

Mengembalikan 1 jika bidang tidak ada atau string kosong.

isblank(fieldName: string)

Bilangan

Mengembalikan 1 jika bidang tidak ada, string kosong, atau hanya berisi spasi.

concat(str: string, ...strings: string[])

string

Menyatukan string.

ltrim(str: string)

ltrim(str: string, trimChars: string)

string

Jika fungsi tidak memiliki argumen kedua, ia menghapus spasi putih dari kiri string. Jika fungsi memiliki argumen string kedua, itu tidak menghapus spasi putih. Sebaliknya, ia menghapus karakter trimChars dari kiristr. Misalnya, ltrim("xyZxyfooxyZ","xyZ") mengembalikan "fooxyZ".

rtrim(str: string)

rtrim(str: string, trimChars: string)

string

Jika fungsi tidak memiliki argumen kedua, ia menghapus spasi putih dari sebelah kanan string. Jika fungsi memiliki argumen string kedua, itu tidak menghapus spasi putih. Sebaliknya, ia menghapus karakter trimChars dari sebelah kananstr. Misalnya, rtrim("xyZfooxyxyZ","xyZ") mengembalikan "xyZfoo".

trim(str: string)

trim(str: string, trimChars: string)

string

Jika fungsi tidak memiliki argumen kedua, ia menghapus spasi putih dari kedua ujung string. Jika fungsi memiliki argumen string kedua, itu tidak menghapus spasi putih. Sebaliknya, ia menghapus karakter trimChars dari kedua sisistr. Misalnya, trim("xyZxyfooxyxyZ","xyZ") mengembalikan "foo".

strlen(str: string)

nomor

Mengembalikan panjang string dalam poin kode Unicode.

toupper(str: string)

string

Mengonversi string menjadi huruf besar.

tolower(str: string)

string

Mengonversi string menjadi huruf kecil.

substr(str: string, startIndex: number)

substr(str: string, startIndex: number, length: number)

string

Mengembalikan substring dari indeks yang ditentukan oleh argumen angka ke akhir string. Jika fungsi memiliki argumen angka kedua, itu berisi panjang substring yang akan diambil. Misalnya, substr("xyZfooxyZ",3, 3) mengembalikan "foo".

replace(fieldName: string, searchValue: string, replaceValue: string)

string

Mengganti semua searchValue dalam fieldName: stringdengan replaceValue.

Misalnya, fungsi replace(logGroup,"smoke_test","Smoke") mencari peristiwa log di mana bidang logGroup berisi nilai string smoke_test dan mengganti nilai dengan stringSmoke.

regexReplace(fieldName: string, pattern: string, replacement: string)

string

Mengganti semua substring yang cocok dengan ekspresi reguler pattern denganreplacement. Menggunakan sintaks regex RE2.

strcontains(str: string, searchValue: string)

strcontains(str: string, searchValue: string, caseInsensitive: boolean)

number

Mengembalikan 1 jika str berisi searchValue dan 0 sebaliknya. Jika parameter ketiga diatur ketrue, kecocokan tidak peka huruf besar/kecil.

startsWith(str: string, searchValue: string)

number

Mengembalikan 1 jika str dimulai dengan searchValue dan 0 sebaliknya.

endsWith(str: string, searchValue: string)

number

Mengembalikan 1 jika str diakhiri dengan searchValue dan 0 sebaliknya.

urlencode(str: string)

string

URL-encodes senar.

urldecode(str: string)

string

URL-decodes senar.

base64encode(str: string)

string

Base64-encodes senar.

base64decode(str: string)

string

Base64-decodes senar.

split(str: string, delimiter: string)

array

Membagi string dengan pembatas yang ditentukan dan mengembalikan array substring.

hexToAscii(value: string)

string

Mengkonversi string heksadesimal ke teks ASCII.

Contoh: fields hexToAscii("48656c6c6f") as text

hexToDec(value: string)

number

Mengkonversi string heksadesimal menjadi angka desimal.

Contoh: fields hexToDec("0xff") as dec

decToHex(value: number)

string

Mengkonversi bilangan bulat desimal menjadi string hex huruf kecil dengan 0x awalan. Angka negatif menghasilkan -0x awalan. Non-integers terpotong.

Contoh: fields decToHex(255) as hex