全部产品
Search
文档中心

Simple Log Service:Kumpulkan data performa dari program Go dalam kluster Kubernetes

更新时间:Jul 06, 2025

pprof adalah alat profil untuk Go yang digunakan untuk menganalisis dan meningkatkan performa program Go serta menyediakan data performa. Anda dapat menggunakan modul Kubernetes Golang Pull dari aplikasi Full-stack Observability yang disediakan oleh Simple Log Service untuk mengumpulkan data performa dari semua program Go dalam kluster Kubernetes dengan mudah.

Prasyarat

  • Sebuah instans Full-stack Observability telah dibuat. Untuk informasi lebih lanjut, lihat Buat Sebuah Instans.

  • Sebuah komponen pemantauan telah diinstal dalam kluster Kubernetes. Untuk informasi lebih lanjut, lihat Instal Komponen Pemantauan.

    Catatan

    Gunakan image Logtail versi 1.7.1.0-monitor-aliyun atau yang lebih baru untuk menginstal komponen pemantauan.

Implementasi

Dalam kluster Kubernetes, model penyebaran DaemonSet digunakan untuk komponen pengumpulan data performa dari program Go dan log. Selama pengumpulan log, Logtail mendukung seleksi sumber daya Kubernetes dari berbagai dimensi. Saat mengumpulkan data performa dari program Go, Logtail juga dapat memfilter data menggunakan variabel lingkungan, label Kubernetes, namespace, nama pod, dan nama kontainer. Pengumpulan data performa melibatkan komunikasi antar proses Go, dan pemilihan sumber daya Kubernetes dapat mempengaruhi sejumlah besar proses tidak terkait. Oleh karena itu, Logtail memperkenalkan variabel lingkungan khusus bernama ILOGTAIL_PROFILE_PORT untuk mempersempit ruang lingkup data lebih lanjut.

Go menyediakan mekanisme eksposur bawaan untuk data performa yang diberikan oleh pprof. Setelah mengaktifkan mekanisme ini dalam program Go, Logtail dapat memperoleh data performa melalui HTTP.

image.png

Persiapan

  1. Aktifkan mekanisme eksposur untuk data performa.

    Sebelum mengumpulkan data performa pprof dari program Go, aktifkan mekanisme eksposur. Gunakan kode berikut untuk mengaktifkan mekanisme eksposur bawaan atau konfigurasikan mekanisme eksposur kustom. Pastikan data performa pprof diekspos pada alamat berikut: {host}:{port}/debug/pprof/Port. Dalam contoh berikut, data performa diekspos pada port 8080.

    package main
    
    import (
    	"net/http"
    	_ "net/http/pprof"
    )
    
    func main() {
    
    	// lakukan sesuatu...
    
    	_ = http.ListenAndServe(":8080", nil)
    }
  2. Konfigurasikan variabel lingkungan ILOGTAIL_PROFILE_PORT.

    Atur variabel lingkungan ILOGTAIL_PROFILE_PORT ke port tempat data diekspos. Contoh: ILOGTAIL_PROFILE_PORT=8080.

Buat konfigurasi Logtail

  1. Masuk ke konsol Simple Log Service.

  2. Di bagian Log Application, klik tab Intelligent O&M, lalu pilih Full-stack Observability.

  3. Di halaman Simple Log Service Full-stack Observability, klik instans yang ingin Anda kelola.

  4. Di panel navigasi kiri, klik Performance Monitoring.

  5. Klik Enable jika ini pertama kalinya Anda menggunakan fitur Pemantauan Performa di instans tersebut.

  6. Di pohon navigasi kiri, klik Data Import. Di halaman Data Access Configurations, temukan Kubernetes Golang Pull.

    Pertama kali membuat konfigurasi Logtail untuk data pemantauan host, nyalakan sakelar untuk masuk ke halaman konfigurasi. Jika sudah ada konfigurasi Logtail, klik ikon 创建 untuk masuk ke halaman konfigurasi.

  7. Klik Use Existing Machine Groups.

    Setelah komponen pemantauan diinstal, Simple Log Service secara otomatis membuat grup mesin bernama {instanceID}-{clusterID}-k8s-nodes. Anda dapat menggunakan grup mesin ini.

  8. Pilih grup mesin {instanceID}-{clusterID}-k8s-nodes, pindahkan grup mesin dari bagian Source Server Groups ke bagian Applied Server Groups, lalu klik Next.

    Penting

    Jika status denyut jantung grup mesin adalah FAIL, klik Automatic Retry. Jika masalah tetap ada, lihat Apa yang harus saya lakukan jika grup mesin Logtail tidak memiliki denyut jantung?

  9. Di langkah Specify Data Source, konfigurasikan parameter berikut dan klik Complete.

    Parameter

    Deskripsi

    General configurations

    Config Name

    Nama konfigurasi Logtail.

    Cluster

    Nama kluster Kubernetes.

    Setelah Anda mengonfigurasi parameter ini, Simple Log Service menambahkan tag cluster=Nama Cluster ke data performa yang dikumpulkan menggunakan konfigurasi Logtail.

    Penting

    Pastikan bahwa nama cluster unik. Jika tidak, konflik data mungkin terjadi.

    Profile Whitelist

    Jenis data yang ingin Anda kumpulkan.

    Collection Interval

    Interval waktu pengumpulan data. Satuan: detik.

    Timeout Period

    Periode timeout untuk pengumpulan data. Satuan: detik.

    Maximum Body Size

    Ukuran maksimum data yang dapat dikumpulkan. Satuan: KB.

    Kubernetes Selector configurations

    Namespace

    Ekspresi reguler yang digunakan untuk mencocokkan nama namespace. Parameter ini menentukan namespace dari mana data dikumpulkan.

    Pod Name

    Ekspresi reguler yang digunakan untuk mencocokkan nama pod. Parameter ini menentukan pod dari mana data dikumpulkan.

    Container Name

    Ekspresi reguler yang digunakan untuk mencocokkan nama kontainer. Parameter ini menentukan kontainer dari mana data dikumpulkan.

    Environment Variable Whitelist

    Daftar putih variabel lingkungan. Daftar putih menentukan kontainer dari mana data dikumpulkan. Parameter ini kosong secara default. Jika Anda membiarkan parameter ini kosong, data akan dikumpulkan dari semua kontainer yang menjalankan program Go dalam kluster Kubernetes. Saat mengonfigurasi daftar putih variabel lingkungan, parameter Key diperlukan, dan parameter value opsional.

    • Jika parameter EnvValue kosong, kontainer yang variabel lingkungannya berisi kunci yang ditentukan oleh EnvKey akan cocok.

    • Jika parameter EnvValue tidak kosong, kontainer yang variabel lingkungannya terdiri dari pasangan kunci-nilai yang ditentukan oleh EnvKey dan EnvValue akan cocok.

      Secara default, pencocokan string dilakukan untuk nilai parameter EnvValue. Kontainer hanya cocok jika nilai variabel lingkungan sama dengan nilai parameter EnvValue. Jika Anda menentukan nilai yang dimulai dengan caret (^) dan diakhiri dengan tanda dolar ($) untuk parameter EnvValue, pencocokan ekspresi reguler dilakukan. Sebagai contoh, jika Anda mengatur parameter EnvKey menjadi NGINX_SERVICE_PORT dan mengatur parameter EnvValue menjadi ^(80|6379)$, kontainer dengan nomor port 80 dan kontainer dengan nomor port 6379 akan cocok.

    Pasangan kunci-nilai dihubungkan menggunakan operator OR. Jika sebuah kontainer memiliki variabel lingkungan yang terdiri dari salah satu pasangan kunci-nilai yang ditentukan, kontainer tersebut cocok.

    Environment Variable Blacklist

    Daftar hitam variabel lingkungan. Daftar hitam menentukan kontainer dari mana data tidak dikumpulkan. Parameter ini kosong secara default, yang menunjukkan bahwa data dikumpulkan dari semua kontainer. Saat mengonfigurasi daftar hitam variabel lingkungan, parameter Key diperlukan, dan parameter value opsional.

    • Jika parameter EnvValue kosong, kontainer yang variabel lingkungannya berisi kunci yang ditentukan oleh EnvKey akan difilter.

    • Jika parameter EnvValue tidak kosong, kontainer yang variabel lingkungannya terdiri dari pasangan kunci-nilai yang ditentukan oleh EnvKey dan EnvValue akan difilter.

      Secara default, pencocokan string dilakukan untuk nilai parameter EnvValue. Kontainer hanya cocok jika nilai variabel lingkungan sama dengan nilai parameter EnvValue. Jika Anda menentukan nilai yang dimulai dengan caret (^) dan diakhiri dengan tanda dolar ($) untuk parameter EnvValue, pencocokan ekspresi reguler dilakukan. Sebagai contoh, jika Anda mengatur parameter EnvKey menjadi NGINX_SERVICE_PORT dan mengatur parameter EnvValue menjadi ^(80|6379)$, kontainer dengan nomor port 80 dan kontainer dengan nomor port 6379 akan cocok.

    Pasangan kunci-nilai dihubungkan menggunakan operator OR. Jika sebuah kontainer memiliki variabel lingkungan yang terdiri dari salah satu pasangan kunci-nilai yang ditentukan, kontainer tersebut difilter.

    K8s Label Whitelist

    Daftar putih label Kubernetes. Daftar putih menentukan kontainer dari mana data dikumpulkan. Saat mengonfigurasi daftar putih label Kubernetes, parameter Key diperlukan, dan parameter value opsional.

    • Jika parameter LabelValue kosong, kontainer yang label Kubernetes-nya berisi kunci yang ditentukan oleh LabelKey akan cocok.

    • Jika parameter LabelValue tidak kosong, kontainer yang label Kubernetes-nya terdiri dari pasangan kunci-nilai yang ditentukan oleh LabelKey dan LabelValue akan cocok.

      Secara default, pencocokan string dilakukan untuk nilai parameter LabelValue. Kontainer hanya cocok jika nilai label Kubernetes sama dengan nilai parameter LabelValue. Jika Anda menentukan nilai yang dimulai dengan caret (^) dan diakhiri dengan tanda dolar ($), pencocokan ekspresi reguler dilakukan. Sebagai contoh, jika Anda mengatur parameter LabelKey menjadi app dan mengatur parameter LabelValue menjadi ^(test1|test2)$, kontainer yang label Kubernetes-nya terdiri dari app:test1 atau app:test2 akan cocok.

    Pasangan kunci-nilai dihubungkan menggunakan operator OR. Jika sebuah kontainer memiliki label Kubernetes yang terdiri dari salah satu pasangan kunci-nilai yang ditentukan, kontainer tersebut cocok.

    K8s Label Blacklist

    Daftar hitam label Kubernetes. Daftar hitam menentukan kontainer dari mana data tidak dikumpulkan. Saat mengonfigurasi daftar hitam label Kubernetes, parameter Key diperlukan, dan parameter value opsional.

    • Jika parameter LabelValue kosong, kontainer yang label Kubernetes-nya berisi kunci yang ditentukan oleh LabelKey akan difilter.

    • Jika parameter LabelValue tidak kosong, kontainer yang label Kubernetes-nya terdiri dari pasangan kunci-nilai yang ditentukan oleh LabelKey dan LabelValue akan difilter.

      Secara default, pencocokan string dilakukan untuk nilai parameter LabelValue. Kontainer hanya cocok jika nilai label Kubernetes sama dengan nilai parameter LabelValue. Jika Anda menentukan nilai yang dimulai dengan caret (^) dan diakhiri dengan tanda dolar ($), pencocokan ekspresi reguler dilakukan. Sebagai contoh, jika Anda mengatur parameter LabelKey menjadi app dan mengatur parameter LabelValue menjadi ^(test1|test2)$, kontainer yang label Kubernetes-nya terdiri dari app:test1 atau app:test2 akan cocok.

    Pasangan kunci-nilai dihubungkan menggunakan operator OR. Jika sebuah kontainer memiliki label Kubernetes yang terdiri dari salah satu pasangan kunci-nilai yang ditentukan, kontainer tersebut difilter.

    Container Label Whitelist

    Daftar putih label kontainer. Daftar putih menentukan kontainer dari mana data dikumpulkan. Parameter ini kosong secara default. Jika Anda membiarkan parameter ini kosong, data akan dikumpulkan dari semua kontainer yang menjalankan program Go dalam kluster Kubernetes. Saat mengonfigurasi daftar putih label kontainer, parameter Key diperlukan, dan parameter value opsional.

    • Jika parameter LabelValue kosong, kontainer yang label kontainernya berisi kunci yang ditentukan oleh LabelKey akan cocok.

    • Jika parameter LabelValue tidak kosong, kontainer yang label kontainernya terdiri dari pasangan kunci-nilai yang ditentukan oleh LabelKey dan LabelValue akan cocok.

      Secara default, pencocokan string dilakukan untuk nilai parameter LabelValue. Kontainer hanya cocok jika nilai label kontainer sama dengan nilai parameter LabelValue. Jika Anda menentukan nilai yang dimulai dengan caret (^) dan diakhiri dengan tanda dolar ($) untuk parameter LabelValue, pencocokan ekspresi reguler dilakukan. Sebagai contoh, jika Anda mengatur parameter LabelKey menjadi io.kubernetes.container.name dan mengatur parameter LabelValue menjadi ^(nginx|cube)$, kontainer bernama nginx dan kontainer bernama cube akan cocok.

    Pasangan kunci-nilai dihubungkan menggunakan operator OR. Jika sebuah kontainer memiliki label kontainer yang terdiri dari salah satu pasangan kunci-nilai yang ditentukan, kontainer tersebut cocok.

    Container Label Blacklist

    Daftar hitam label kontainer. Daftar hitam menentukan kontainer dari mana data tidak dikumpulkan. Parameter ini kosong secara default, yang menunjukkan bahwa data dikumpulkan dari semua kontainer. Saat mengonfigurasi daftar hitam label kontainer, parameter Key diperlukan, dan parameter value opsional.

    • Jika parameter LabelValue kosong, kontainer yang label kontainernya berisi kunci yang ditentukan oleh LabelKey akan difilter.

    • Jika parameter LabelValue tidak kosong, kontainer yang label kontainernya terdiri dari pasangan kunci-nilai yang ditentukan oleh LabelKey dan LabelValue akan difilter.

      Secara default, pencocokan string dilakukan untuk nilai parameter LabelValue. Kontainer hanya cocok jika nilai label kontainer sama dengan nilai parameter LabelValue. Jika Anda menentukan nilai yang dimulai dengan caret (^) dan diakhiri dengan tanda dolar ($) untuk parameter LabelValue, pencocokan ekspresi reguler dilakukan. Sebagai contoh, jika Anda mengatur parameter LabelKey menjadi io.kubernetes.container.name dan mengatur parameter LabelValue menjadi ^(nginx|cube)$, kontainer bernama nginx dan kontainer bernama cube akan cocok.

    Pasangan kunci-nilai dihubungkan menggunakan operator OR. Jika sebuah kontainer memiliki label kontainer yang terdiri dari salah satu pasangan kunci-nilai yang ditentukan, kontainer tersebut difilter.

    Setelah menyelesaikan konfigurasi, Simple Log Service secara otomatis membuat aset seperti Metricstores. Untuk informasi lebih lanjut, lihat Aset.

Apa yang Harus Dilakukan Selanjutnya

Setelah mengumpulkan data performa pprof dari program Go ke Full-stack Observability, gunakan fitur pemantauan performa untuk mendiagnosis masalah performa. Untuk informasi lebih lanjut, lihat Kueri Data dan Perbandingan Data.