Kirim log ke container ELK dari container Docker (tanpa Filebeat)

Saya menggunakan SEBP/ELK Docker container karena tampaknya ini yang paling banyak digunakan cocok untuk mengatur pencatatan aplikasi dengan cepat. Sayangnya, setelah membaca dokumen sepertinya tidak ada cara mudah untuk mendapatkan log dari penampung saudara tanpa menggunakan Filebeat.

Saya tidak ingin menginstal Filebeat di setiap container saya karena sepertinya hal itu bertentangan langsung dengan mantra pemisahan tugas Docker.

TLDR; bagaimana cara mendapatkan log dari wadah aplikasi saya ke wadah ELK saya?


person ServAce85    schedule 06.01.2017    source sumber
comment
Saya mungkin mengerti ide Anda. Saya membuat gambar ELK, Anda dapat mencoba mengaktifkan input file di logstash https://github.com/nguoianphu/docker-elk/blob/master/logstash.conf, kemudian Anda dapat memasang jalur file dengan volume buruh pelabuhan.   -  person Tuan    schedule 06.01.2017


Jawaban (2)


Menggunakan filebeat di setiap wadah bertentangan dengan filosofi Docker. Ini akan membuang-buang sumber daya, dan memiliki lebih banyak biaya manajemen.

Anda dapat menggunakan file log lokal melalui logstash.

Contoh konfigurasi:

input {
  file {
    path => "/var/log/apache.log"
    type => "apache-access"  # a type to identify those logs (will need this later)
    start_position => "beginning"
  }
}

Sekarang kita harus membuat file log lokal ke logstash container:

Jika Anda menggunakan bind mounts Anda dapat memasang direktori yang sama di wadah logstash.

sudo docker run -d -v /path/to/logs/:/path/to/logs/in/container logstash

Jika Anda menggunakan volumes Anda juga dapat memasang volume yang sama yang berisi log ke logstash.

sudo docker run -d -v logvol:/path/to/logs/in/container logstash
person Farhad Farahi    schedule 06.01.2017

SEBP/ELK adalah alat yang salah untuk mengatasi masalah ini. Sebaliknya, saya seharusnya menggunakan proyek yang memutar wadah untuk setiap elemen tumpukan ELK: Elasticsearch, Logstash, dan Kibana. Saya menemukan repositori seperti itu di GitHub.

Proyek deviantony/docker-elk menggabungkan tiga elemen ELK ke dalam satu set container yang berfungsi. Hal yang hebat tentang hal ini adalah tidak seperti proyek SEBP/ELK, deviantony/docker-elk tidak mengambil pandangan yang berpendirian keras tentang fitur apa yang harus tersedia dan apa yang harus ditutup. Dalam proyek SEBP/ELK, kemampuan untuk menulis ke port 5000 dihapus dan ketika Anda mencoba menambahkannya kembali melalui file logstash.conf khusus, pendengar UDP akhirnya gagal. Sebaliknya, proyek deviantony/docker-elk hanya berfungsi.

Poin bonus: Proyek ini juga memiliki cabang yang mencakup X-Pack yang menambahkan lapisan keamanan minimal.

person ServAce85    schedule 07.01.2017