GNU/Linux >> Belajar Linux >  >> Panels >> Docker

Instrumentasi Wadah dengan Tumpukan Elastis

TheElastic Stack dapat memantau berbagai data yang dihasilkan oleh container Docker. Dalam panduan ini, Anda akan menyiapkan Linode untuk menganalisis dan memvisualisasikan log kontainer dan metrik menggunakan alat seperti Kibana, Beats, dan Elasticsearch. Setelah selesai, Anda akan dapat mengonfigurasi sistem Anda untuk mengumpulkan data untuk container tambahan secara otomatis.

Sebelum Anda Mulai

  1. Jika Anda belum melakukannya, buat akun Linode dan Compute Instance. Lihat panduan Memulai Linode dan Membuat Instans Komputasi.

  2. Ikuti panduan Menyiapkan dan Mengamankan Instans Komputasi untuk memperbarui sistem Anda. Anda mungkin juga ingin mengatur zona waktu, mengkonfigurasi nama host Anda, membuat akun pengguna terbatas, dan memperkuat akses SSH.

  3. Ikuti Panduan UFW kami untuk menginstal dan mengkonfigurasi firewall (UFW) pada sistem berbasis Ubuntu atau Debian Anda, atau Panduan FirewallD kami untuk sistem berbasis rpm atau CentOS. Setelah mengkonfigurasi firewall, pastikan port yang diperlukan terbuka untuk melanjutkan koneksi melalui SSH untuk sisa panduan ini:

    sudo ufw allow ssh
    
  4. Instal Docker di Linode Anda dengan mengikuti panduan penginstalan dari proyek Docker.

Catatan Layanan dalam panduan ini hanya mengikat ke localhost, yang berarti mereka tidak dapat diakses di luar Linode dari host jarak jauh. Ini memastikan bahwa REST API Elasticsearch tetap pribadi untuk localhost dan tidak dapat diakses dari jarak jauh dari internet. Jika Anda mengambil langkah-langkah di luar panduan ini untuk mengonfigurasi Elasticsearch dan komponen terkait lebih lanjut, pastikan firewall Anda terpasang dan memblokir lalu lintas ke node Elasticsearch dan Kibana dengan benar dari internet (port 9200 dan 9300 untuk Elasticsearch dan 5601 untuk Kibana) untuk menyimpannya diamankan dengan benar.

Instal Komponen Elastic Stack

Sebelum mengonfigurasi sistem Anda untuk memantau container yang sedang berjalan, instal terlebih dahulu komponen yang diperlukan untuk mengumpulkan dan mengirimkan log dan metrik ke Elasticsearch.

Distribusi Berbasis Debian

Konfigurasikan apt Elastis repositori dan instal paket yang diperlukan dan dependensinya.

  1. Instal kunci penandatanganan paket APT Elastis resmi:

    wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
    
  2. Instal apt-transport-https paket, yang diperlukan untuk mengambil deb paket yang disajikan melalui HTTPS:

    sudo apt-get install apt-transport-https
    
  3. Tambahkan informasi repositori APT ke daftar sumber server Anda:

    echo "deb https://artifacts.elastic.co/packages/6.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-6.x.list
    
  4. Refresh daftar paket yang tersedia:

    sudo apt-get update
    
  5. Sebelum menginstal Elasticsearch, runtime Java harus ada. Pada sistem seperti Ubuntu 18.04 LTS, menggunakan default-jre-headless paket menginstal runtime Java yang kompatibel:

    sudo apt-get install default-jre-headless
    
  6. Instal Elasticsearch, Kibana, Filebeat, dan Metricbeat:

    sudo apt-get install elasticsearch kibana filebeat metricbeat
    

Distribusi Berbasis Redhat

Konfigurasikan rpm repositori untuk yum dan alat pengemasan terkait.

  1. Percayai kunci penandatanganan Elastis:

    sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
    
  2. Buat konfigurasi repositori yum untuk menggunakan repositori Elastic yum:

    File:/ etc/yum.repos.d/elasticsearch.repo
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    [elasticsearch-6.x]
    name=Elastic repository for 6.x packages
    baseurl=https://artifacts.elastic.co/packages/6.x/yum
    gpgcheck=1
    gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
    enabled=1
    autorefresh=1
    type=rpm-md
        
  3. Perbarui yum cache untuk memastikan semua paket baru tersedia:

    sudo yum update
    
  4. Sebelum menginstal Elasticsearch, runtime Java harus ada. Di CentOS, misalnya, runtime Java yang kompatibel dapat diinstal menggunakan paket OpenJDK tanpa kepala:

    sudo yum install java-11-openjdk-headless
    
  5. Instal Elasticsearch, Kibana, Filebeat, dan Metricbeat:

    sudo yum install elasticsearch kibana filebeat metricbeat
    

Konfigurasi Elastic Stack

Untuk menemukan dan menangkap metrik penampung dengan benar, setiap komponen tumpukan Elastis harus dikonfigurasi.

Elasticsearch

Dalam file /etc/elasticsearch/jvm.options dua nilai yang dimulai dengan -Xm harus tidak dikomentari. Pengaturan ini menginstruksikan JVM untuk mengalokasikan sejumlah memori tertentu. Nilai rekomendasi untuk pengaturan ini adalah 50% dari RAM sistem yang tersedia. Misalnya, pada sistem dengan RAM 1G, setelan ini harus:

File:/ etc/elasticsearch/jvm.options
1
2
-Xms512m
-Xmx512m
  1. Sebelum memulai Elasticsearch, instal beberapa plugin yang diperlukan untuk memproses data geoip dan agen pengguna.

    sudo /usr/share/elasticsearch/bin/elasticsearch-plugin install ingest-user-agent
    sudo /usr/share/elasticsearch/bin/elasticsearch-plugin install ingest-geoip
    
  2. Dengan pengaturan ini, mulai elasticsearch layanan.

    sudo systemctl start elasticsearch
    
  3. Tunggu beberapa saat hingga Elasticsearch dimulai, lalu periksa apakah Elasticsearch merespons melalui REST API:

    curl http://localhost:9200
    

    Anda akan melihat output seperti berikut:

    {
      "name" : "iQEk_-M",
      "cluster_name" : "elasticsearch",
      "cluster_uuid" : "tQeLgbKrTNOp2AoqdmTItw",
      "version" : {
            "number" : "6.5.4",
            "build_flavor" : "default",
            "build_type" : "deb",
            "build_hash" : "d2ef93d",
            "build_date" : "2018-12-17T21:17:40.758843Z",
            "build_snapshot" : false,
            "lucene_version" : "7.5.0",
            "minimum_wire_compatibility_version" : "5.6.0",
            "minimum_index_compatibility_version" : "5.0.0"
      },
      "tagline" : "You Know, for Search"
    }
    

    Elasticsearch siap untuk mengindeks dokumen.

Kibana

Sebagian besar pengaturan default Kibana cocok untuk tujuan panduan ini. Tidak ada perubahan konfigurasi yang diperlukan; mulai kibana layanan.

sudo systemctl start kibana

Filebeat

Gunakan docker input untuk mengaktifkan Filebeat untuk menangkap kontainer yang dimulai secara dinamis. Ini mengurangi kebutuhan untuk menentukan jalur file log Docker dan sebagai gantinya mengizinkan Filebeat untuk menemukan kontainer saat mereka mulai.

  1. Tambahkan yang berikut ini di dekat bagian atas file konfigurasi Filebeat untuk menginstruksikan filebeat daemon untuk menangkap log kontainer Docker. Baris ini harus dimasukkan di bawah kunci konfigurasi filebeat.inputs :

    File:/ etc/filebeat/filebeat.yml
    1
    2
    3
    4
    5
    6
    
    filebeat.inputs:
    - type: docker
      containers.ids:
      - '*'
      processors:
      - add_docker_metadata: ~
  2. Batalkan komentar pada baris berikut dan ubah nilainya menjadi true , yang akan mengizinkan Filebeat untuk membuat dasbor Kibana terkait untuk log kontainer yang diambil:

    File:/ etc/filebeat/filebeat.yml
    1
    
    setup.dashboards.enabled: true
  3. Terakhir, tambahkan autodiscover berikut ini konfigurasi ke akhir filebeat.yml berkas:

    File:/ etc/filebeat/filebeat.yml
    1
    2
    3
    4
    
    filebeat.autodiscover:
      providers:
        - type: docker
          hints.enabled: true
  4. Aktifkan nginx modul, yang akan digunakan nanti dalam tutorial ini:

    sudo /usr/bin/filebeat modules enable nginx
    
  5. Sisa dari file konfigurasi akan menginstruksikan Filebeat untuk mengirim log ke instance Elasticsearch yang berjalan secara lokal, yang dapat dibiarkan tidak berubah. Mulai Filebeat:

    sudo systemctl start filebeat
    

Metricbeat

Seperti Filebeat, konfigurasikan Metricbeat dengan cara yang sama untuk menemukan container yang sedang berjalan secara dinamis untuk dipantau.

  1. Metricbeat menggunakan modul untuk mengumpulkan metrik container. Keluarkan perintah berikut untuk mengaktifkan docker dan nginx modul:

    sudo /usr/bin/metricbeat modules enable docker
    sudo /usr/bin/metricbeat modules enable nginx
    
  2. Batalkan komentar pada baris berikut dan ubah nilainya menjadi true , yang akan mengizinkan Metricbeat untuk membuat dasbor Kibana terkait untuk log kontainer yang diambil:

    File:/ etc/metricbeat/metricbeat.yml
    1
    
    setup.dashboards.enabled: true
  3. Sisa dari file konfigurasi akan menginstruksikan Metricbeat untuk mengirim log ke instance Elasticsearch yang berjalan secara lokal, yang dapat dibiarkan tidak berubah. Metricbeat sekarang dapat dimulai:

    sudo systemctl start metricbeat
    

Memvisualisasikan Log dan Metrik Penampung

Contoh berikut menunjukkan bagaimana Filebeat dan Metricbeat secara otomatis menangkap data container yang dapat diakses dalam Kibana.

  1. Untuk memulai, jalankan container nginx Docker sederhana di Linode Anda.

    sudo docker run --name nginx -P -d --label co.elastic.logs/module=nginx nginx
    
    • Perintah ini akan menjalankan server web di latar belakang dan mengekspos layanan HTTP yang mendengarkan di bawah nomor port acak.
    • --label Argumennya adalah untuk membiarkan Filebeat secara otomatis mengurai format log dari jenis wadah tertentu, yang dalam hal ini adalah nginx.
  2. Untuk membuka koneksi aman ke Kibana, buka terowongan SSH ke port 5601 di Linode Anda.

    ssh -L 5601:localhost:5601 <[email protected]>
    
    • Ganti <[email protected]> dengan nama pengguna dan alamat IP Linode Anda.
    • Ini meneruskan port 5601 secara lokal ke port 5601 pada Linode Anda.
    • Panduan komprehensif untuk menggunakan terowongan SSH di berbagai platform tersedia di panduan Buat Terowongan SSH untuk MySQL kami.
  3. Jelajahi http://localhost:5601 di browser Anda, yang akan menampilkan halaman arahan awal berikut untuk Kibana.

  4. Klik Pengelolaan tautan di bilah sisi kiri bawah. Halaman berikut akan ditampilkan. Kemudian, klik Pola Indeks untuk masuk ke halaman konfigurasi Pola Indeks.

  5. Pola Indeks menentukan bagaimana Kibana memahami indeks yang ada di Elasticsearch. Agar beberapa visualisasi ditampilkan dengan benar, pola indeks default harus dikonfigurasi terlebih dahulu. Pilih filebeat-* di sisi kiri halaman untuk mengonfigurasi pola indeks filebeat-*.

  6. Klik ikon bintang di sudut kanan atas halaman untuk mengatur pola indeks ini sebagai default di Kibana.

    Kibana sekarang dikonfigurasi dengan benar dengan pola indeks default.

  7. Filebeat dan Metricbeat diatur untuk mengonfigurasi Elasticsearch dan Kibana secara otomatis, sehingga dasbor dan pola indeks dimuat dan siap digunakan. Klik Dasbor di bilah sisi kiri, yang menampilkan halaman berikut.

  8. Di bilah Pencarian, ketik "wadah" untuk menampilkan dasbor yang sudah diisi sebelumnya untuk wadah sistem. Klik pada Ikhtisar [Metricbeat Docker] tautan.

  9. Ikhtisar [Metricbeat Docker] dasbor akan dimuat, yang menunjukkan beberapa aspek metrik penampung yang sedang berjalan. Dasbor menampilkan daftar penampung yang berjalan, jumlah total penampung yang berjalan, dijeda, dan dihentikan, serta metrik tentang konsumsi sumber daya penampung.

    Menggulir lebih jauh ke bawah, ini juga menunjukkan grafik yang menunjukkan penggunaan sumber daya container dari waktu ke waktu, termasuk CPU, memori, dan aktivitas jaringan.

  10. Sebelum beralih ke visualisasi Kibana lainnya, buat beberapa aktivitas log dari nginx dengan mengirimkan permintaan HTTP ke wadah mendengarkan. Pertama, temukan port mana yang didengarkan container untuk permintaan menggunakan docker perintah:

    docker ps
    

    Anda akan melihat output seperti berikut:

    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                   NAMES
    3f0c6d284f1f        nginx               "nginx -g 'daemon of…"   23 minutes ago      Up 23 minutes       0.0.0.0:32769->80/tcp   nginx
    

    Dari output ini, kita tahu bahwa server HTTP dapat dijangkau dengan mengeluarkan permintaan ke port 32769, yang diteruskan ke port 80 di dalam container. Port pada sistem Anda mungkin berbeda.

  11. Kirim beberapa permintaan ke port ini menggunakan curl perintah, menggantikan <port> dengan nomor yang ditemukan pada langkah sebelumnya:

    for i in $(seq 1 10) ; do curl localhost:<port> ; done
    
  12. Sekarang sejumlah log hadir di Kibana untuk wadah ini. Klik Temukan di bilah sisi kiri di Kibana. Ini menampilkan layar berikut.

    • Histogram di dekat bagian atas laman menunjukkan jumlah total log penampung dari waktu ke waktu.
    • Tabel di bawah grafik berisi konten masing-masing konten log.
    • Mengklik panah di sebelah kiri setiap stempel waktu log akan menampilkan informasi untuk setiap log yang diambil.
  13. Coba terbitkan kembali for ... perintah untuk mengirim sepuluh curl . lainnya permintaan ke penampung dan amati bagaimana histogram log berubah untuk mencerminkan log baru.

  14. Klik Dasbor di bilah sisi kiri, lalu klik untuk kedua kalinya untuk masuk ke layar pemilihan dasbor. Cari “nginx” di bilah pencarian.

  15. Klik [Filebeat Nginx] Akses dan log kesalahan link, yang akan menampilkan dasbor dengan sejumlah visualisasi terkait aktivitas nginx.

Modul Tambahan

Tutorial ini telah menunjukkan bagaimana Filebeat dan Metricbeat dapat secara otomatis menangkap metrik dan log container tanpa perlu secara eksplisit mengonfigurasi jalur atau konfigurasi file log. Selain contoh nginx yang disajikan di sini, tautan tambahan yang disediakan di bawah ini menyebutkan modul lain yang dapat dimuat ke Filebeat dan Metricbeat untuk layanan lain.

Informasi Lebih Lanjut

Anda mungkin ingin berkonsultasi dengan sumber daya berikut untuk informasi tambahan tentang topik ini. Meskipun ini disediakan dengan harapan dapat bermanfaat, harap perhatikan bahwa kami tidak dapat menjamin keakuratan atau ketepatan waktu materi yang dihosting secara eksternal.

  • Modul Filebeat
  • Modul Metricbeat
  • Pemantauan Kontainer Elastis
  • Referensi Baris Perintah Docker

Docker
  1. Cara Menginstal WordPress dengan Docker di Ubuntu

  2. Instal ModSecurity dengan Apache di Docker Container

  3. Bagaimana Cara Menginstal Printer Dengan Ubuntu?

  1. Cara menginstal Docker dan menyebarkan LAMP Stack

  2. Cara Menginstal Ghost di Debian dengan Nginx

  3. Cara Memasang Laravel Framework dengan Softaculous

  1. Cara Memasang LAMP Stack di Ubuntu 18.04

  2. Cara Memasang LAMP Stack di CentOS 7

  3. Cara Menginstal Elastic Stack di Ubuntu 18.04 LTS