All Products
Search
Document Center

Simple Log Service:Fungsi penguraian alamat IP

Last Updated:Jun 09, 2026

Fungsi penguraian alamat IP menyelesaikan alamat IP menjadi lokasi geografis, mengklasifikasikan jenis alamat, mengonversi antar format, serta memeriksa keanggotaan Blok CIDR.

Fungsi

Function

Description

geo_parse

Mengurai alamat IP untuk mendapatkan negara, provinsi, dan kota.

ip_cidrmatch

Memeriksa apakah suatu alamat IP termasuk dalam Blok Classless Inter-Domain Routing (CIDR).

ip_version

Memeriksa apakah alamat IP merupakan Alamat IPv4 atau Alamat IPv6.

ip_type

Memeriksa apakah alamat IP merupakan alamat private atau public.

ip_makenet

Mengonversi alamat IP menjadi Blok CIDR.

ip_to_format

Memformat Blok CIDR agar menggunakan panjang awalan atau subnet mask.

ip_overlaps

Memeriksa apakah dua Blok CIDR saling tumpang tindih.

ip2long

Mengonversi alamat IP dari string menjadi bilangan bulat panjang (long integer).

long2ip

Mengonversi bilangan bulat panjang (long integer) menjadi string alamat IP.

geo_parse

Mengurai alamat IP untuk mengambil informasi negara, provinsi, dan kota.

  • Sintaksis

    geo_parse(ip, ip_db="SLS-GeoIP", keep_fields=None, provider="ipip", ip_sep=None)
  • Parameter

    Parameter

    Tipe Parameter

    Wajib

    Deskripsi

    ip

    String

    Ya

    Alamat IP yang akan diurai. Untuk mengurai beberapa alamat IP dalam satu string, gunakan parameter ip_sep untuk menentukan pemisah.

    ip_db

    String

    Ya

    Basis data alamat IP yang digunakan untuk penguraian. Nilai yang valid:

    • SLS-GeoIP: Basis data IP bawaan SLS. Default. Diperbarui setiap hari. Tidak memerlukan konfigurasi tambahan.

    • Basis data IP kustom: Gunakan res_oss_file(endpoint, ak_id, ak_key, bucket, file, format='text', change_detect_interval=0,fetch_interval=2,refresh_retry_max=60,encoding='utf8',error='ignore'). Untuk detail parameter, lihat res_oss_file.

    keep_fields

    Tuple

    Tidak

    Kunci yang disertakan dalam hasil yang dikembalikan.

    • Jika Anda menggunakan basis data IP bawaan SLS, informasi berikut dikembalikan secara default:

      • city: Nama kota.

      • province: Nama provinsi.

      • country: Nama negara.

      • city_en: Kode wilayah administratif atau nama bahasa Inggris kota.

      • province_en: Kode wilayah administratif atau nama bahasa Inggris provinsi.

      • country_en: Kode atau nama bahasa Inggris negara atau wilayah.

      • isp: Nama Penyedia layanan internet (ISP).

      • lat: Latitude lokasi alamat IP.

      • lon: Longitude lokasi alamat IP.

    • Jika Anda menggunakan basis data IP kustom, informasi berikut dikembalikan secara default:

      • city: Nama kota.

      • province: Nama provinsi.

      • country: Nama negara.

    Contoh, keep_fields=("city","country") hanya mengembalikan bidang city dan country.

    Anda juga dapat menggunakan keep_fields untuk mengganti nama kunci. Contohnya, (("city","cty"),("country","state")) mengganti nama bidang output menjadi cty dan state.

    provider

    String

    Tidak

    Parameter ini hanya berlaku ketika ip_db diatur ke basis data IP kustom. Nilai yang valid:

    • ipip: Nilai default. Menggunakan basis data alamat IP biner dalam format IPDB yang disediakan oleh IPIP. Untuk mengunduh basis data tersebut, kunjungi ipip.

    • ip2location: Menggunakan basis data alamat IP biner global dari IP2Location. Untuk mengunduh basis data tersebut, kunjungi ip2location. Hanya paket biner yang didukung.

    ip_sep

    String

    Tidak

    Pemisah untuk beberapa alamat IP dalam satu string. Hasil dikembalikan dalam format JSON. Default: None (tidak melakukan pemisahan).

  • Respons

    Mengembalikan dictionary:

    {
      "city": "...",
      "province":"...",
      "country": "..."
    }
  • Contoh

    • Contoh 1: Kueri data menggunakan basis data IP bawaan SLS.

      • Log mentah

        ip : 203.0.113.1
      • Aturan transformasi

        e_set("geo", geo_parse(v("ip")))
      • Hasil

        ip : 203.0.113.1
        geo: {"city":"Hangzhou","province":"Zhejiang","country":"China","isp":"China Mobile","lat":30.16,"lon":120.12}
    • Contoh 2: Urai beberapa alamat IP dari satu field menggunakan basis data IP bawaan SLS.

      • Log mentah

        ip : 203.0.113.4, 192.0.2.2, 198.51.100.2
      • Aturan transformasi

        e_set("geo", geo_parse(v("ip"), ip_sep=","))
      • Hasil

        ip : 203.0.113.4, 192.0.2.2, 198.51.100.2
        geo : {"203.0.113.4": {"country_en": "CN", "province_en": "330000", "city_en": "330200", "country": "China", "province": "Zhejiang", "city": "Ningbo", "isp": "China Telecom", "lat": 29.8782, "lon": 121.549}, "192.0.2.2": {"country_en": "CN", "province_en": "320000", "city_en": "321300", "country": "China", "province": "Jiangsu", "city": "Suqian", "isp": "China Telecom", "lat": 33.9492, "lon": 118.296}, "198.51.100.2": {"country_en": "CN", "province_en": "330000", "city_en": "330500", "country": "China", "province": "Zhejiang", "city": "Huzhou", "isp": "China Telecom", "lat": 30.8703, "lon": 120.093}}
    • Contoh 3: Kueri data menggunakan basis data IP kustom.

      • Log mentah

        ip : 203.0.113.1
      • Aturan transformasi

        e_set("geo",geo_parse(v("ip"), ip_db=res_oss_file(endpoint='http://oss-cn-hangzhou.aliyuncs.com',
                                                         ak_id='your ak_id',
                                                         ak_key='your ak_key',
                                                         bucket='your bucket', file='ipipfree.ipdb',
                                                                       format='binary',change_detect_interval=20)))
      • Hasil

        ip : 203.0.113.1
        geo : {"city": "Hangzhou", "province":"Zhejiang","country": "China"}
    • Contoh 4: Kueri dengan basis data IP kustom dan ganti nama field output.

      • Log mentah

        ip : 203.0.113.1
      • Aturan transformasi

        e_set("geo",geo_parse(v("ip"), ip_db=res_oss_file(endpoint='http://oss-cn-hangzhou.aliyuncs.com',
                                                         ak_id='your ak_id',
                                                         ak_key='your ak_key',
                                                         bucket='your bucket', file='ipipfree.ipdb',
                                                                       format='binary',change_detect_interval=20),keep_fields=(("city","cty"),("country","state"),("province","pro"))))
      • Hasil

        ip : 203.0.113.1
        geo : { "state": "China","pro": "Zhejiang","cty": "Hangzhou"}
    • Contoh 5: Kueri dengan basis data IP kustom dan pilih field output.

      • Log mentah

        ip : 203.0.113.1
      • Aturan transformasi

        e_set("geo",geo_parse(v("ip"), ip_db=res_oss_file(endpoint='http://oss-cn-hangzhou.aliyuncs.com',
                                                         ak_id='your ak_id',
                                                         ak_key='your ak_key',
                                                         bucket='your bucket', file='ipipfree.ipdb',
                                                                       format='binary',change_detect_interval=20),keep_fields=("country","province")))
      • Hasil

        ip : 203.0.113.1
        geo : { "country": "China","province": "Zhejiang"}
    • Contoh 6: Kueri dengan basis data IP kustom menggunakan penyedia IP2Location.

      • Log mentah

        ip : 203.0.113.2
      • Aturan transformasi

        e_set("geo", geo_parse(v("ip"), ip_db=res_oss_file(endpoint='http://oss-cn-hangzhou.aliyuncs.com',ak_id="your ak_id", ak_key="your ak_secret", bucket='log-etl-staging', file='your ip2location bin file', format='binary', change_detect_interval=20),provider="ip2location"))
      • Hasil

        ip : 203.0.113.2
        geo : {"city":"Dearborn","province":"Michigan","country":"United States"}

      Transformasi data menggunakan SDK IP2Location open source untuk Python, yang mendukung field-field berikut. Jika suatu field tidak dapat diurai, pastikan basis data IP2Location Anda mencakupnya.

      country_short
      country_long / Transformasi data menggunakan field country sebagai gantinya.
      region / Transformasi data menggunakan field province sebagai gantinya.
      city
      isp
      latitude
      longitude
      domain
      zipcode
      timezone
      netspeed
      idd_code
      area_code
      weather_code
      weather_name
      mcc
      mnc
      mobile_brand
      elevation
      usage_type                               

      IP2Location Python SDK.

    • Contoh 7: Urai beberapa alamat IP menggunakan basis data IP kustom.

      • Log mentah

        ip : 203.0.113.3, 192.0.2.1, 198.51.100.1
      • Aturan transformasi

        e_set("geo", geo_parse(v("ip"), ip_db=res_oss_file(endpoint='http://oss-cn-hangzhou.aliyuncs.com',
                                                                       ak_id="ak_id",
                                                                       ak_key="ak_secret",
                                                                       bucket='log-etl-staging',
                                                                       file='calendar.csv/IP2LOCATION-LITE-DB3.BIN',
                                                                       format='binary', change_detect_interval=20),
                                        provider="ip2location", ip_sep=","))
      • Hasil

        ip : 203.0.113.3, 192.0.2.1, 198.51.100.1
        geo : {"203.0.113.3": {"city": "Dearborn", "province": "Michigan", "country": "United States"}, "192.0.2.1": {"city": "Hangzhou", "province": "Zhejiang", "country": "China"}, "198.51.100.1": {"city": "Hangzhou", "province": "Zhejiang", "country": "China"}}

ip_cidrmatch

Memeriksa apakah suatu alamat IP termasuk dalam Blok CIDR. Mengembalikan True jika cocok, False jika tidak. Mendukung IPv4 dan IPv6.

  • Sintaksis

    ip_cidrmatch(cidr_subnet, ip,default="")
  • Parameter

    Nama Parameter

    Tipe Parameter

    Wajib

    Deskripsi

    cidr_subnet

    String

    Ya

    Blok CIDR. Contoh: 192.168.1.0/24.

    ip

    String

    Ya

    Alamat IP yang akan diperiksa.

    default

    String

    Tidak

    Nilai fallback jika alamat IP tidak dapat dicocokkan. Bisa kosong.

  • Respons

    Mengembalikan True jika alamat IP cocok dengan Blok CIDR. Jika tidak, mengembalikan False.

  • Contoh

    • Contoh 1: Alamat IPv4 cocok dengan Blok CIDR dan fungsi mengembalikan True.

      • Log mentah

        cidr_subnet: 192.168.1.0/24
        ip: 192.168.1.100
      • Aturan transformasi

        e_set("is_belong",ip_cidrmatch(v("cidr_subnet"),v("ip")))
      • Hasil

        cidr_subnet: 192.168.1.0/24
        ip: 192.168.1.100
        is_belong: true
    • Contoh 2: Alamat IPv4 tidak cocok dengan Blok CIDR dan fungsi mengembalikan False.

      • Log mentah

        cidr_subnet: 192.168.1.0/24
        ip: 10.10.1.100
      • Aturan transformasi

        e_set("is_belong",ip_cidrmatch(v("cidr_subnet"),v("ip")))
      • Hasil

        cidr_subnet: 192.168.1.0/24
        ip: 10.10.1.100
        is_belong: false
    • Contoh 3: Alamat IP tidak dapat dicocokkan dengan Blok CIDR dan fungsi mengembalikan unknown.

      • Log mentah

        cidr_subnet: 192.168.1.0/24
        ip: a
      • Aturan transformasi

        e_set("is_belong",ip_cidrmatch(v("cidr_subnet"),v("ip"),default="unknown"))
      • Hasil

        cidr_subnet: 192.168.1.0/24
        ip: a
        is_belong: unknown

ip_version

Mengembalikan versi alamat IP: IPv4 atau IPv6.

  • Sintaksis

    ip_version(ip,default="")
  • Parameter

    Parameter

    Tipe Parameter

    Wajib

    Deskripsi

    ip

    String

    Ya

    Alamat IP.

    default

    String

    Tidak

    Nilai fallback jika versi tidak dapat ditentukan. Bisa kosong.

  • Respons

    Mengembalikan IPv4 atau IPv6.

  • Contoh

    • Contoh 1: Periksa versi alamat IPv4.

      • Log mentah

        ip: 192.168.1.100
      • Aturan transformasi

        e_set("version",ip_version(v("ip")))
      • Hasil

        ip: 192.168.1.100
        version: IPv4
    • Contoh 2: Periksa versi alamat IPv6.

      • Log mentah

        ip: ::1
      • Aturan transformasi

        e_set("version",ip_version(v("ip")))
      • Hasil

        ip: ::1
        version: IPv6

ip_type

Mengembalikan jenis alamat IP: private, reserved, loopback, public, atau allocated ripe ncc.

  • Sintaksis

    ip_type(ip,default="")
  • Parameter

    Parameter

    Tipe

    Wajib

    Deskripsi

    ip

    String

    Ya

    Alamat IP.

    default

    String

    Tidak

    Nilai fallback jika jenis tidak dapat ditentukan. Bisa kosong.

  • Respons

    Mengembalikan jenis alamat IP. Nilai yang valid adalah private, reserved, loopback, public, dan allocated ripe ncc.

  • Contoh

    • Contoh 1: Periksa alamat loopback.

      • Log mentah

        ip: 127.0.0.1
      • Aturan transformasi

        e_set("type",ip_type(v("ip")))
      • Hasil

        ip: 127.0.0.1
        type: loopback
    • Contoh 2: Periksa apakah alamat IP bersifat private.

      • Log mentah

        ip: 47.100.XX.XX
      • Aturan transformasi

        e_set("type",ip_type(v("ip")))
      • Hasil

        ip: 47.100.XX.XX
        type: private
    • Contoh 3: Memeriksa alamat publik.

      • Log mentah

        ip: 47.100.XX.XX
      • Aturan transformasi

        e_set("type",ip_type(v("ip")))
      • Hasil

        ip: 47.100.XX.XX
        type: public
    • Contoh 4: Periksa jenis alamat IPv6 yang merupakan alamat loopback.

      • Log mentah

        ip: ::1
      • Aturan transformasi

        e_set("type",ip_type(v("ip")))
      • Hasil

        ip: ::1
        type: loopback
    • Contoh 5: Periksa jenis alamat IPv6 yang merupakan alamat allocated ripe ncc.

      • Log mentah

        ip: 2001:0658:022a:cafe:0200::1
      • Aturan transformasi

        e_set("type",ip_type(v("ip")))
      • Hasil

        ip: 2001:0658:022a:cafe:0200::1
        type: allocated ripe ncc

ip_makenet

Mengonversi alamat IP menjadi Blok CIDR.

  • Sintaksis

    ip_makenet(ip, subnet_mask=None,default="")
  • Parameter

    Nama Parameter

    Tipe Parameter

    Wajib

    Deskripsi

    ip

    String

    Ya

    Alamat IP.

    subnet_mask

    String

    Ya

    Subnet mask. Contoh: 255.255.255.0.

    Catatan

    Jika Anda menentukan rentang alamat IP untuk parameter ip, Anda dapat mengosongkan parameter subnet_mask.

    default

    String

    Tidak

    Nilai fallback jika konversi gagal. Bisa kosong.

  • Respons

    Mengembalikan Blok CIDR.

  • Contoh

    • Contoh 1: Konversi alamat IP menjadi Blok CIDR.

      • Log mentah

        ip: 192.168.1.0
      • Aturan transformasi

        e_set("makenet",ip_makenet(v("ip"),"255.255.255.0"))
      • Hasil

        ip: 192.168.1.0
        makenet: 192.168.1.0/24
    • Contoh 2: Konversi rentang alamat IP menjadi Blok CIDR.

      • Log mentah

        ip: 192.168.1.0-192.168.1.255
      • Aturan transformasi

        e_set("makenet",ip_makenet(v("ip")))
      • Hasil

        ip: 192.168.1.0-192.168.1.255
        makenet: 192.168.1.0/24
    • Contoh 3: Konversi rentang alamat IP menjadi Blok CIDR.

      • Log mentah

        ip: 192.168.1.0/255.255.255.0
      • Aturan transformasi

        e_set("makenet",ip_makenet(v("ip")))
      • Hasil

        ip: 192.168.1.0/255.255.255.0
        makenet: 192.168.1.0/24

ip_to_format

Mengonversi Blok CIDR ke format tertentu, seperti panjang awalan, subnet mask, atau rentang alamat IP.

  • Sintaksis

    ip_to_format(cidr_subnet, want_prefix_len=0,default="")
  • Parameter

    Nama Parameter

    Tipe

    Wajib

    Deskripsi

    cidr_subnet

    String

    Ya

    Blok CIDR. Contoh: 192.168.1.0/24

    want_prefix_len

    Int

    Tidak

    Format output. Default: 0.

    • 0: Tidak diformat.

    • 1: Format awalan.

    • 2: Format netmask.

    • 3: Rentang alamat IP.

    default

    String

    Tidak

    Nilai fallback jika pemformatan gagal. Bisa kosong.

  • Respons

    Mengembalikan alamat IP dalam format yang ditentukan.

  • Contoh

    • Contoh 1: Mengembalikan Blok CIDR input tanpa mengubah format.

      • Log mentah

        ip: 192.168.1.0/24
      • Aturan transformasi

        e_set("strNormal",ip_to_format(v("ip"),0))
      • Hasil

        ip: 192.168.1.0/24
        strNormal: 192.168.1.0/24
    • Contoh 2: Memformat Blok CIDR agar menggunakan awalan.

      • Log mentah

         ip: 192.168.1.0/24
      • Aturan transformasi

        e_set("strNormal",ip_to_format(v("ip"),1))
      • Hasil

        ip: 192.168.1.0/24
        strNormal: 192.168.1.0/24
    • Contoh 3: Memformat Blok CIDR agar menggunakan subnet mask.

      • Log mentah

        ip: 192.168.1.0/24
      • Aturan transformasi

        e_set("strNormal",ip_to_format(v("ip"),2))
      • Hasil

        ip: 192.168.1.0/24
        strNormal: 192.168.1.0/255.255.255.0
    • Contoh 4: Memformat Blok CIDR sebagai rentang alamat IP.

      • Log mentah

        ip: 192.168.1.0/24
      • Aturan transformasi

        e_set("strNormal",ip_to_format(v("ip"),3))
      • Hasil

        ip: 192.168.1.0/24
        strNormal: 192.168.1.0-192.168.1.255

ip_overlaps

Menentukan apakah dua Blok CIDR saling tumpang tindih.

  • Sintaksis

    ip_overlaps(cidr_subnet, cidr_subnet2,default="")
  • Parameter

    Nama Parameter

    Tipe Parameter

    Wajib

    Deskripsi

    cidr_subnet

    String

    Ya

    Blok CIDR pertama.

    cidr_subnet2

    String

    Ya

    Blok CIDR kedua.

    default

    String

    Tidak

    Nilai fallback jika tumpang tindih tidak dapat ditentukan. Bisa kosong.

  • Respons

    • Fungsi mengembalikan 0 jika dua Blok CIDR tidak saling tumpang tindih.

    • Fungsi mengembalikan 1 jika dua Blok CIDR tumpang tindih di bagian akhir.

    • Fungsi mengembalikan -1 jika dua Blok CIDR tumpang tindih di bagian awal.

  • Contoh

    • Contoh 1: Dua Blok CIDR tidak saling tumpang tindih.

      • Log mentah

        cidr1: 192.168.0.0/23
        cidr2: 192.168.2.0/24
      • Aturan transformasi

        e_set("overlaps",ip_overlaps(v("cidr1"),v("cidr2")))
      • Hasil

        cidr1: 192.168.0.0/23
        cidr2: 192.168.2.0/24
        overlaps: 0
    • Contoh 2: Dua Blok CIDR tumpang tindih di bagian awal.

      • Log mentah

        cidr1: 192.168.1.0/24
        cidr2: 192.168.0.0/23
      • Aturan transformasi

        e_set("overlaps",ip_overlaps(v("cidr1"),v("cidr2")))
      • Hasil

        cidr1: 192.168.1.0/24
        cidr2: 192.168.0.0/23
        overlaps: -1
    • Contoh 3: Dua Blok CIDR tumpang tindih di bagian akhir.

      • Log mentah

        cidr1: 192.168.0.0/23
        cidr2: 192.168.1.0/24
      • Aturan transformasi

        e_set("overlaps",ip_overlaps(v("cidr1"),v("cidr2")))
      • Hasil

        cidr1: 192.168.0.0/23
        cidr2: 192.168.1.0/24
        overlaps: 1

ip2long

Mengonversi alamat IP dari string menjadi bilangan bulat panjang (long integer).

  • Sintaksis

    ip2long(value,default=0)
  • Parameter

    Nama Parameter

    Tipe Parameter

    Wajib

    Deskripsi

    value

    String

    Ya

    Nilai yang akan dikonversi.

    default

    String

    Tidak

    Nilai fallback untuk alamat IP yang tidak valid. Contoh: 0.

  • Respons

    Mengembalikan representasi bilangan bulat panjang (long integer) dari alamat IP yang valid.

  • Contoh

    • Contoh 1: Kasus default

      • Log mentah

        ip: 192.168.0.100
      • Aturan transformasi

        e_set("long_ip",ip2long(v("ip")))
      • Hasil

        ip: 192.168.0.100
        long_ip: 167772160
    • Contoh 2: Alamat IP tidak valid

      • Log mentah

        ip: 47.100.XX.XX
      • Aturan transformasi

        e_set("long_ip",ip2long(v("ip"), "ignore"))
      • Hasil

        ip:47.100.XX.XX
        long_ip:ignore

long2ip

Mengonversi bilangan bulat panjang (long integer) menjadi alamat IP dalam format string.

  • Sintaksis

    long2ip(value,default="")
  • Parameter

    Nama Parameter

    Tipe Parameter

    Wajib

    Deskripsi

    value

    String

    Ya

    Nilai yang akan dikonversi.

    default

    String

    Tidak

    Nilai fallback untuk bilangan bulat panjang (long integer) yang tidak valid. Default: string kosong.

  • Respons

    Mengembalikan alamat IP dalam format string yang dikonversi dari bilangan bulat panjang (long integer) yang valid.

  • Contoh

    • Contoh 1: Kasus default

      • Log mentah

        long: 167772160
      • Aturan transformasi

        e_set("ip",long2ip(v("long")))
      • Hasil

        long: 167772160
        ip: 192.168.0.100
    • Contoh 2: Konversi dari bilangan bulat panjang ke alamat IP gagal

      • Log mentah

        long: 4294967296
      • Aturan transformasi

        e_set("ip",long2ip(v("long")))
      • Hasil

        long: 4294967296
        ip: 
    • Contoh 3: Penanganan error kustom untuk konversi yang gagal

      • Log mentah

        long: 4294967296
      • Aturan transformasi

        e_set("ip",long2ip(v("long"),default="xxx"))
      • Hasil

        long: 4294967296
        ip: xxx