Analisis file log: mengekstraksi bagian informasi dari bagian nilai

10

Saya mencoba membuat kumpulan data pada beberapa file log dari salah satu produk kami.

File log yang berbeda memiliki tata letak dan konten sendiri; Saya berhasil mengelompokkan mereka bersama, hanya satu langkah tersisa ...

Memang, log "pesan" adalah informasi terbaik. Saya tidak memiliki daftar lengkap semua pesan itu, dan itu adalah ide yang buruk untuk kode keras berdasarkan itu karena daftar itu dapat berubah setiap hari.

Yang ingin saya lakukan adalah memisahkan teks identifikasi dari teks nilai (misalnya: "File Loaded XXX" menjadi (identifikasi: "File Loaded", nilai: "XXX")). Sayangnya, contoh ini sederhana, dan di dunia nyata ada tata letak yang berbeda dan terkadang beberapa nilai.

Saya sedang berpikir tentang menggunakan kernel string, tetapi ini dimaksudkan untuk pengelompokan ... dan cluseting tidak berlaku di sini (saya tidak tahu jumlah berbagai jenis pesan dan walaupun, itu akan terlalu banyak).

Apakah kamu punya ide?

Terima kasih atas bantuan Anda.

PS: Bagi yang memprogram, ini bisa lebih mudah dimengerti. Katakanlah kode tersebut berisi log printf ("blabla% s", "xxx") -> Saya ingin memisahkan "blabla" dan "xxx"

Michael Hooreman
sumber
Bisakah Anda memberikan contoh contoh yang menunjukkan variasi item yang perlu diuraikan algoritma?
Emre
2
Ada seratus cara untuk melakukan ini. Berikan sedikit pengertian tentang alat atau bahasa apa yang Anda butuhkan untuk melakukan ini. Apakah ada aspek ilmu data untuk ini? Sepertinya hanya log parsing.
Sean Owen

Jawaban:

3

Bagaimana dengan mempertimbangkan setiap string sebagai jejak proses dan penerapan alfa-algoritma? Itu akan memberi Anda grafik dan node dengan angka besar out-edge kemungkinan besar akan menunjuk ke nilai.

Anda dapat menandai simpul-simpul ini dan untuk setiap string baru mengurai / melintasi grafik sampai Anda mencapai area tersebut.

Juan Leni
sumber
Terima kasih banyak. Saya tidak tahu algoritma alpha. Saya akan memeriksa ke arah itu.
Michael Hooreman
2

Ini sepertinya bukan masalah Ilmu Data. Namun ada alat yang sangat bagus untuk melakukan hal itu, checkout: logstash, flume dan fluentd. Sebenarnya jika Anda ingin dapat memfilter dengan cepat dan "pintar" cara checkout Kibana dari orang-orang ElastichSearch ( http://www.elasticsearch.org/overview/kibana ). Alat-alat itu cukup untuk menyelesaikan masalah Anda dengan cara yang sangat efisien.

Javierfdr
sumber
Namun saya adalah bahwa ekstraksi fitur adalah bagian dari ilmu data. Yah, itu hanya pendapat ;-) Lebih seriouly, saya tidak berbicara tentang file log standar yang mudah, tetapi yang kustom dari perangkat lunak yang sangat spesifik. Jadi, itu benar-benar mengambil informasi dari konteks «kalimat»
Michael Hooreman
1

Jika Anda hanya mencoba untuk memisahkan informasi tekstual dan numerik maka ada solusi berdasarkan pada ekspresi reguler atau bahkan hanya pemisahan string.

Anda bahkan dapat melakukan sesuatu seperti menemukan karakter numerik pertama dan membagi teks menjadi dua tepat sebelum itu.

Dengan ekspresi reguler, Anda dapat mencocokkan semua karakter numerik yang mengikuti satu sama lain. Polanya akan ([0-9]+)dengan bendera global. Itu akan cocok dengan semua kelompok angka dan Anda dapat melakukan apa pun dengan Anda setelahnya.

Regex Tester baik untuk bermain-main dengan hal-hal itu.

LauriK
sumber
Terima kasih Laurik. Sayangnya bukan hanya angka, dan saya tidak tahu juga apa pesan yang akan datang. Jadi, saya sangat membutuhkan AI.
Michael Hooreman