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

Memantau Kontainer Docker Dengan Grafana Menggunakan Dockprom

Pemantauan adalah salah satu aktivitas penting di dunia DevOps. dan saya bahkan tidak perlu meyakinkan Anda tentang mengapa pemantauan adalah ide yang bagus. Anda sudah tahu itu, kan?

Anda tentu saja dapat tetap menggunakan alat baris perintah untuk memantau server Anda dan wadah buruh pelabuhan yang berjalan di atasnya, pendekatan berbasis GUI menambah kenyamanan menganalisis metrik kinerja dengan pengalaman intuitif untuk mengamati beberapa parameter sekaligus di layar. lebih mudah untuk berbagi dasbor pemantauan dengan orang yang kurang teknis.

Dalam tutorial ini, saya akan menunjukkan kepada Anda bagaimana Anda dapat mengatur pemantauan untuk kontainer buruh pelabuhan dengan dockprom dan menyajikannya dalam bentuk yang menarik secara visual berkat Grafana.

Memantau host dan container buruh pelabuhan dengan Dockprom

Dockprom adalah salah satu tumpukan yang menjalankan beragam alat pemantauan sebagai alat kolektif untuk kebutuhan pemantauan server Anda.

stefanprodan/dockpromDocker host dan pemantauan kontainer dengan Prometheus, Grafana, cAdvisor, NodeExporter dan AlertManager - stefanprodan/dockprom GitHubstefanprodan

Ingatlah bahwa contoh di sini akan didasarkan pada konfigurasi proxy terbalik Nginx. Konfigurasi Dockprom resmi didasarkan pada Caddy.

Di Buku Pegangan Linux dan High On Cloud, kami menggunakan Nginx dalam praktik standar. Jadi, saya mendesain ulang konfigurasi Dockprom menjadi berbasis Nginx, bukan Caddy. Hasilnya terlihat sangat sederhana seperti penerapan Nginx kami sebelumnya.

Esensial untuk penyiapan Dockprom

Dockprom menggunakan alat berikut untuk menyediakan solusi pemantauan untuk host dan container Docker Anda.

Grafana

Grafana memungkinkan Anda untuk menanyakan, memvisualisasikan, dan mengingatkan metrik dan log di mana pun mereka disimpan. Ini akan menjadi frontend web utama dan satu-satunya di mana Anda akan menggunakan semua aplikasi backend yang tersisa yang dibagikan di bagian alat yang tersisa.

Oleh karena itu, di sinilah Anda perlu menambahkan variabel lingkungan populer berbasis Nginx yang selama ini Anda gunakan untuk mengakses aplikasi kami dari mana saja di web:

environment:
  - VIRTUAL_HOST=dockprom.domain.com
  - LETSENCRYPT_HOST=dockprom.domain.com

Pastikan Anda mengubah ini sesuai dengan domain atau subdomain Anda.

Prometheus

Prometheus adalah alat pemantauan dan peringatan sistem sumber terbuka yang digunakan oleh ribuan orang di seluruh dunia.

Pushgateway

Pushgateway adalah layanan perantara yang memungkinkan Anda mendorong metrik dari pekerjaan yang tidak dapat dihapus. Anda mungkin ingin membaca ini untuk benar-benar mengetahui apakah Anda benar-benar membutuhkannya. Ini karena ada kasus-kasus terbatas yang memerlukannya.

Alertmanager

Alertmanager menangani peringatan yang dikirim oleh aplikasi klien seperti server Prometheus. Ini menangani deduplikasi, pengelompokan, dan perutean mereka ke integrasi penerima yang benar seperti email, PagerDuty, atau OpsGenie. Ini juga menangani pembungkaman dan penghambatan peringatan.

cAdvisor

cAdvisor adalah alat open source dari Google yang memberikan pemahaman kepada pengguna container tentang penggunaan sumber daya dan karakteristik kinerja container yang sedang berjalan.

Dalam konfigurasi khusus ini, saya menghadapi masalah tentang mengambil dua metrik berdasarkan dua kesalahan masing-masing setelah menerapkan konfigurasi cAdvisor resmi yang dinyatakan di Dockprom Stack:

Failed to get system UUID: open /etc/machine-id: no such file or directory
Could not configure a source for OOM detection, disabling OOM events: open /dev/kmsg: no such file or directory

Saya mencari repositori cAdvisor resmi tempat solusi telah disediakan. Yang pertama berhasil tetapi yang kedua tidak sesuai dengan yang saya cari, karena solusi ini didasarkan pada docker run perintah peluncuran berbasis.

Perbaikan Docker Compose diperlukan. Saya pertama kali mencoba me-mount /dev/kmsg tapi itu tidak akan berhasil. Terakhir, berdasarkan docker run solusi berbasis, saya menemukan bahwa pada baris yang sama, Docker Compose menyediakan flag terpisah yang disebut devices yang dapat digunakan untuk memasang /dev/kmsg sebagai perangkat. Anda dapat membacanya di sini.

Jadi, perbaikan untuk masalah pertama adalah menambahkan baris berikut ke baris di bagian volume:

	volumes:
  	  ---
      ---
      - /etc/machine-id:/etc/machine-id:ro
      - /var/lib/dbus/machine-id:/var/lib/dbus/machine-id:ro

Yang kedua seperti yang baru saja dibahas:

    devices:
      - /dev/kmsg:/dev/kmsg

Perhatikan betapa pentingnya metrik tersebut untuk pemasangan dari host karena ini adalah host yang ingin Anda pantau melalui Docker.

Ekspor Node

Pengekspor Node Prometheus memaparkan berbagai metrik terkait perangkat keras dan kernel. Ini mirip dengan bagaimana metrik ditampilkan di cAdvisor.

Menggabungkan semua hal di atas, file Docker Compose lengkap Anda akan terlihat seperti ini:

version: '3.7'

networks:
  net:
    external: true

volumes:
    prometheus_data: {}
    grafana_data: {}

services:

  prometheus:
    image: prom/prometheus:v2.24.0
    container_name: prometheus
    volumes:
      - ./prometheus:/etc/prometheus
      - prometheus_data:/prometheus
    command:
      - '--config.file=/etc/prometheus/prometheus.yml'
      - '--storage.tsdb.path=/prometheus'
      - '--web.console.libraries=/etc/prometheus/console_libraries'
      - '--web.console.templates=/etc/prometheus/consoles'
      - '--storage.tsdb.retention.time=200h'
      - '--web.enable-lifecycle'
    restart: on-failure
    networks:
      - net
    labels:
      org.label-schema.group: "monitoring"

  alertmanager:
    image: prom/alertmanager:v0.21.0
    container_name: alertmanager
    volumes:
      - ./alertmanager:/etc/alertmanager
    command:
      - '--config.file=/etc/alertmanager/config.yml'
      - '--storage.path=/alertmanager'
    restart: on-failure
    networks:
      - net
    labels:
      org.label-schema.group: "monitoring"

  nodeexporter:
    image: prom/node-exporter:v1.0.1
    container_name: nodeexporter
    volumes:
      - /proc:/host/proc:ro
      - /sys:/host/sys:ro
      - /:/rootfs:ro
    command:
      - '--path.procfs=/host/proc'
      - '--path.rootfs=/rootfs'
      - '--path.sysfs=/host/sys'
      - '--collector.filesystem.ignored-mount-points=^/(sys|proc|dev|host|etc)($$|/)'
    restart: on-failure
    networks:
      - net
    labels:
      org.label-schema.group: "monitoring"

  cadvisor:
    image: gcr.io/cadvisor/cadvisor:v0.38.7
    container_name: cadvisor
    volumes:
      - /:/rootfs:ro
      - /var/run:/var/run:rw
      - /sys:/sys:ro
      - /var/lib/docker:/var/lib/docker:ro
      - /etc/machine-id:/etc/machine-id:ro
      - /var/lib/dbus/machine-id:/var/lib/dbus/machine-id:ro
      #- /dev/kmsg:/dev/kmsg:rw
    #command: ["start", "--privileged"]
    restart: on-failure
    devices:
      - /dev/kmsg:/dev/kmsg
    networks:
      - net
    labels:
      org.label-schema.group: "monitoring"

  grafana:
    image: grafana/grafana:7.3.7
    container_name: grafana
    volumes:
      - grafana_data:/var/lib/grafana
      - ./grafana/provisioning:/etc/grafana/provisioning
    environment:
      - GF_SECURITY_ADMIN_USER=admin
      - GF_SECURITY_ADMIN_PASSWORD=admin
      - GF_USERS_ALLOW_SIGN_UP=false
    restart: on-failure
    networks:
      - net
    environment:
      - VIRTUAL_HOST=dockprom.domain.com
      - LETSENCRYPT_HOST=dockprom.domain.com

    labels:
      org.label-schema.group: "monitoring"

  pushgateway:
    image: prom/pushgateway:v1.3.1
    container_name: pushgateway
    restart: on-failure
    networks:
      - net
    labels:
      org.label-schema.group: "monitoring"

Jika Anda penasaran, Anda dapat memeriksa dan membandingkan file di atas dengan desain resmi Dockprom.

Waktu Aktif Lebih Baik - Pemantauan Web &Halaman Status Gratis Platform pemantauan waktu aktif yang jauh lebih baik dengan peringatan panggilan telepon, halaman status, dan manajemen insiden bawaan. Paket gratis termasuk! Jipi dari Metrics Watch

Menyiapkan host buruh pelabuhan dan pemantauan kontainer

Sekarang karena saya telah membagikan apa yang diimplementasikan Dockprom Stack dengan definisi resmi dari alat pemantauan server, izinkan saya sekarang membuat daftar proses langkah demi langkah penerapan desain Dockprom berbasis Nginx ini bersama dengan perbaikan penting cAdvisor.

Untuk tujuan pengujian, Anda dapat menggunakan nanode 1 GB di Linode untuk mencoba konfigurasi tetapi untuk tujuan produksi, server harus memiliki setidaknya 4 GB. Ini terutama karena Prometheus.

Linode | Awan Terbuka Independen untuk PengembangMisi kami adalah mempercepat inovasi dengan membuat komputasi awan menjadi sederhana, terjangkau, dan dapat diakses oleh semua orang. Linode Saya kira Anda sudah familiar dengan konsep Docker dan Docker Compose. Perhatikan juga bahwa Anda hanya dapat memantau wadah Docker yang berjalan di server yang sama.

Langkah 1:Ambil konfigurasi Dockprom resmi

Buka terminal di server dan masukkan perintah berikut:

git clone https://github.com/stefanprodan/dockprom
cd dockprom

Langkah 2:Revisi file docker-compose.yml

Seperti yang telah saya bahas dan bagikan file docker-compose.yml berbasis Nginx beberapa waktu lalu di bawah bagian Node Exporter. Harap edit file dan revisi.

Langkah 3:Luncurkan Konfigurasi!

Dengan asumsi Anda berada di direktori dockprom yang sama, jalankan perintah Docker Compose untuk meluncurkan Dockprom Stack:

docker-compose up -d

Langkah 4:Akses Dockprom Stack melalui Grafana

Ingat Anda mengatur URL akses Anda tambahan di dalam konfigurasi Grafana untuk akses web? Sekarang Anda dapat menggunakannya untuk mendapatkan akses penuh ke Stack.

Baik nama pengguna dan sandi telah disetel ke admin . Mengubahnya menjadi kata sandi yang kuat sangat disarankan. Panel login web biasa terlihat seperti:

Tunggu beberapa saat hingga antarmuka dimuat:

Kiat Bonus

Setelah Anda masuk ke Grafana, menavigasi dengan cepat ke statistik metrik pada awalnya bisa sangat melelahkan, itulah sebabnya saya akan membagikan tautan langsung ke panel dasbor untuk akses langsung:https://dockprom.domain.com/dashboards

Seperti yang Anda lihat, Anda hanya perlu menambahkan /dashboards ke domain atau subdomain Anda sendiri. Dari halaman ini, Anda dapat memantau metrik untuk:

  • Kontainer Docker
  • Sistem Inang
  • Prometheus
  • Nginx

Harap dicatat bahwa Nginx (ke-4 dan terakhir pada daftar di atas) akan menampilkan statistik kosong jika tidak langsung diinstal pada host. Ini tidak harus bingung dengan Jwilder Nginx karena berjalan di Docker. Anda harus memantau wadah Nginx secara khusus dalam kasus seperti itu.

Berikut layar Grafana untuk pemantauan host Docker:

Saya sudah membagikan tangkapan layar pemantauan kontainer di awal artikel ini:

Saya  berharap tutorial singkat ini membantu Anda menyiapkan tumpukan sumber daya ini di server Anda. Sekali lagi, ini berguna untuk satu server. Jika Anda memiliki wadah di beberapa server, Anda dapat menggunakan Swarmprom dari pengembang yang sama.

stefanprodan/swarmpromInstrumentasi Docker Swarm dengan Prometheus, Grafana, cAdvisor, Pengekspor Node dan Manajer Peringatan - stefanprodan/swarmprom GitHubstefanprodan

Jika Anda memiliki komentar atau saran, jangan ragu untuk membagikan pandangan Anda di bagian di bawah ini.


Docker
  1. Apa itu Doker? Pelajari Cara Menggunakan Wadah – Dijelaskan dengan Contoh

  2. Siapkan Nextcloud dengan Redis menggunakan Docker

  3. 3 Strategi untuk Penerapan Produksi Otomatis Dengan Docker

  1. Docker vs. Kubernetes

  2. Pemantauan Docker Containers:Manfaat, Praktik Terbaik, dan Alat yang Harus Dimiliki

  3. Mengapa Semua Orang Menggunakan Docker?

  1. Pantau dan Kelola Kontainer Docker dengan Portainer.io (alat GUI) – Bagian-2

  2. Pantau dan Kelola Kontainer Docker dengan Portainer.io (alat GUI) – Bagian-1

  3. Cara Mengelola Kontainer Docker menggunakan Portainer di Ubuntu