Untuk melihat secara detail tujuan, desain, dan implementasi proyek ini, lihat postingan blog ini.
Ekanite adalah server syslog berkinerja tinggi dengan pencarian teks bawaan. Tujuannya adalah melakukan beberapa hal, dan melakukannya dengan baik -- menerima pesan log melalui jaringan, dan memudahkan pencarian pesan. Apa yang kurang dalam fiturnya, digantikan dengan fokus. Dibangun di Go, ia tidak memiliki ketergantungan eksternal, sehingga penerapannya menjadi mudah.
Fitur-fiturnya meliputi:
Pencarian diimplementasikan menggunakan perpustakaan pencarian bleve. Untuk beberapa analisis kinerja bleve, dan teknik sharding yang digunakan oleh Ekanite, lihat postingan ini.
Cara tercepat untuk menjalankan OSX dan Linux adalah dengan mengunduh biner rilis yang sudah dibuat sebelumnya. Anda dapat menemukan biner ini di halaman rilis Github. Setelah terinstal, Anda dapat memulai Ekanite seperti:
ekanited -datadir ~ /ekanite_data # Or any directory of your choice.
Untuk melihat semua opsi Ekanite, lewati -h
pada baris perintah.
Jika Anda ingin membangun Ekanite , baik karena Anda menginginkan kode terbaru atau biner bawaan untuk platform tidak tersedia, lihat CONTRIBUTING.md.
Untuk saat ini, agar Ekanite dapat menerima log, klien syslog Anda harus dikonfigurasi sedemikian rupa sehingga baris log sesuai dengan RFC5424, dan dalam format berikut:
<PRI>VERSION TIMESTAMP HOSTNAME APP-NAME PROC-ID MSGID MSG"
Konsultasikan dengan RFC untuk mempelajari masing-masing bidang ini. Bidang TIMESTAMP harus dalam format RFC3339. Baik rsyslog dan syslog-ng mendukung templating, yang membuatnya sangat mudah bagi program-program tersebut untuk memformat log dengan benar dan mengirimkan log ke Ekanite. Templat dan petunjuk pemasangan untuk kedua sistem ada di bawah.
rsyslog
# Send messages to Ekanite over TCP using the template. Assumes Ekanite is listening on 127.0.0.1:5514
$template Ekanite,"<%pri%>%protocol-version% %timestamp:::date-rfc3339% %HOSTNAME% %app-name% %procid% - %msg%n"
*.* @@127.0.0.1:5514;Ekanite
Tambahkan templat ini ke /etc/rsyslog.d/23-ekanite.conf
lalu restart rsyslog menggunakan perintah sudo service rsyslog restart
.
syslog-ng
source s_ekanite {
system(); # Check which OS & collect system logs
internal(); # Collect syslog-ng logs
};
template Ekanite { template("<${PRI}>1 ${ISODATE} ${HOST} ${PROGRAM} ${PID} - $MSGn"); template_escape(no) };
destination d_ekanite {
tcp("127.0.0.1" port(5514) template(Ekanite));
};
log {
source(s_ekanite);
destination(d_ekanite);
};
Tambahkan template ini ke /etc/syslog-ng/syslog-ng.conf
lalu restart syslog-ng menggunakan perintah /etc/init.d/syslog-ng restart
.
Dengan perubahan ini, rsyslog atau syslog-ng akan terus mengirimkan log ke tujuan mana pun yang ada, dan juga meneruskan log ke Ekanite.
Dukungan pencarian cukup sederhana saat ini. Anda memiliki dua opsi -- antarmuka sederhana seperti telnet, dan antarmuka kueri berbasis browser.
Telnet ke server kueri (lihat opsi baris perintah) dan masukkan istilah pencarian. Bahasa kueri yang didukung adalah bahasa sederhana yang didukung oleh bleve, namun sintaks kueri yang lebih canggih, termasuk mencari nilai bidang tertentu, mungkin akan segera didukung.
Misalnya, di bawah ini adalah contoh sesi pencarian, yang menunjukkan akses ke URL login situs Wordpress. Klien telnet terhubung ke server kueri dan memasukkan string login
$ telnet 127.0.0.1 9950
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
login
<134>0 2015-05-05T23:50:17.025568+00:00 fisher apache-access - - 65.98.59.154 - - [05/May/2015:23:50:12 +0000] "GET /wp-login.php HTTP/1.0" 200 206 "-" "-"
<134>0 2015-05-06T01:24:41.232890+00:00 fisher apache-access - - 104.140.83.221 - - [06/May/2015:01:24:40 +0000] "GET /wp-login.php?action=register HTTP/1.0" 200 206 "http://www.philipotoole.com/" "Opera/9.80 (Windows NT 6.2; Win64; x64) Presto/2.12.388 Version/12.17"
<134>0 2015-05-06T01:24:41.232895+00:00 fisher apache-access - - 104.140.83.221 - - [06/May/2015:01:24:40 +0000] "GET /wp-login.php?action=register HTTP/1.1" 200 243 "http://www.philipotoole.com/wp-login.php?action=register" "Opera/9.80 (Windows NT 6.2; Win64; x64) Presto/2.12.388 Version/12.17"
<134>0 2015-05-06T02:47:54.612953+00:00 fisher apache-access - - 184.68.20.22 - - [06/May/2015:02:47:51 +0000] "GET /wp-login.php HTTP/1.1" 200 243 "-" "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/24.0.1309.0 Safari/537.17"
<134>0 2015-05-06T04:20:49.008609+00:00 fisher apache-access - - 193.104.41.186 - - [06/May/2015:04:20:46 +0000] "POST /wp-login.php HTTP/1.1" 200 206 "-" "Opera 10.00"
Mungkin Anda hanya ingin mencari akses POST
ke URL itu:
login -GET
<134>0 2015-05-06T04:20:49.008609+00:00 fisher apache-access - - 193.104.41.186 - - [06/May/2015:04:20:46 +0000] "POST /wp-login.php HTTP/1.1" 200 206 "-" "Opera 10.00"
Program klien yang lebih canggih direncanakan.
Antarmuka berbasis browser juga menerima kueri bergaya bleve, identik dengan yang dijelaskan di bagian Telnet . Secara default antarmuka browser tersedia di http://localhost:8080. Contoh sesi ditunjukkan di bawah ini.
Statistik dan diagnostik dasar tersedia. Kunjungi http://localhost:9951/debug/vars
untuk mengambil informasi ini. Host dan port dapat diubah melalui opsi baris perintah -diag
.
Arsitekturnya sekarang mendukung implementasi parser baru yang mudah di luar syslog stok dalam 3 langkah mudah:
input/parser.go
perluassupportFormats() untuk menangkap standar dan nama tambahan.parser/
, buat parser format input baru menggunakan pernyataan regex yang sesuai.timestamp
yang kompatibel dengan RFC3339, misalnya 2006-01-02T15:04:05Z07:00
input/parser.go
, perbarui NewParser() untuk membuat instance parser format input baru dengan benar. Proyek ini tidak dipelihara secara aktif, meskipun pembangunan mungkin akan terjadi kembali di masa depan.