Docker ana bilgisayarı, kapsayıcı ve kapsayıcıya alınmış hizmet izleme çözümü

Fiziksel sunucular, sanal makineler, kapsayıcılar ve kapsayıcıların içinde çalışan hizmetler için ölçüm depolaması, görselleştirme ve uyarılar sağlayabilen açık kaynaklı, kendi kendine barındırılan bir izleme çözümü arıyordum. Elastic Beats, Graphite ve Prometheus'u denedikten sonra Prometheus'u onayladım. Prometheus'u seçmenin ana nedeni, çok boyutlu ölçümü desteklemek ve kolay öğrenilen sorgu dilidir. Grafikler ve uyarılar için aynı dili kullanabilirsiniz, bu da izleme görevlerini kolaylaştırır. Prometheus, kara kutu algılamanın yanı sıra beyaz kutu ölçümlerini de yönetir, bu da altyapıyı inceleyip uygulamanın dahili durumunu izleyebileceğiniz anlamına gelir.

Neden Prometheus'u seçmelisiniz:

  • Tüm yığın, kapsayıcılar kullanılarak dağıtılabilir

  • Dağıtık sistemler ve altyapı için inşa edilmiştir

  • Ölçeklenebilir veri toplama, dağıtılmış depolamaya dayanmaz

  • Esnek hizmet keşfi (Kubernetes, Consul, EC2, Azure için yerleşik destek)

  • HAProxy, MySQL, PostgreSQL, Memcached, Redis ve diğer hizmetleri sağlayan özel ihracatçı

Prometheus ekosistemi büyük önem taşımaktadır.Çeşitli sistemlere uygun gösterge ihracatçıları bulabilirsiniz: veritabanları, MQ, HTTP sunucularından IoT veya IPMI gibi donanımla ilgili sistemlere. Whitebox gözetimi ayrıca geniş bir kapsama alanına sahiptir. Prometheus istemci kitaplığı, Go, Java, Python, Ruby, .NET, PHP ve daha fazla programlama dili için uygundur.

Prometheus ve Docker'a başlarken

Prometheus yığınını denemek istiyorsanız, GitHub'daki dockprom deposuna bakın. kullanabilirsin dockprom Kendi izleme çözümünüzü geliştirmek için bir başlangıç noktası olarak. kullanım dockprom, Tüm yığını tek bir komutla çalıştırabilirsiniz: Prometheus, Grafana, cAdvisor, NodeExporter ve AlertManager.

Bir Docker Swarm sürümü arıyorsanız, lütfen swarmprom blog gönderisine bakın.

Kurulum

Docker ana bilgisayarındaki dockprom deposunu klonlayın, dockprom dizinine kopyalayın ve compose up komutunu çalıştırın:

git klon cd dockprom ADMIN_USER = yönetici ADMIN_PASSWORD = yönetici docker-compose up -d

konteyner:

  • Prometheus (gösterge veritabanı) http: // < ana bilgisayar-ip > : 9090

  • AlertManager (Uyarı Yönetimi) http: // < ana bilgisayar-ip > : 9093

  • Grafana (görsel gösterge) http: // < ana bilgisayar-ip > : 3000

  • NodeExporter (ana bilgisayar metrik toplayıcı)

  • cAdvisor (kapsayıcı ölçümleri toplayıcı)

  • Caddy (ters proxy ve prometheus ve alertmanager için temel kimlik doğrulama sağlayıcısı)

Grafana'yı kur

Şu yöne rotayı ayarla http: // < ana bilgisayar-ip > : 3000 kullanıcı yönetici parola yönetici Ve oturum açın. Oluşturma dosyasındaki kimlik bilgilerini değiştirebilir veya oluştururken bunu sağlayabilirsiniz ADMIN_USER ile YÖNETİCİ ŞİFRESİ Ortam Değişkenleri.

Grafana, varsayılan veri kaynağı olarak Dashboard ve Prometheus ile önceden yapılandırılmıştır:

  • İsim: Prometheus

  • Türü: Prometheus

  • URL: http: // prometheus: 9090

  • Ziyaret: Temsilci

Docker ana bilgisayar kontrol paneli

Docker ana bilgisayar kontrol paneli, sunucu kaynak kullanımını izlemek için temel göstergeleri görüntüler:

  • Sunucu çalışma süresi, CPU boşta kalma yüzdesi, CPU çekirdeği sayısı, kullanılabilir bellek, takas ve depolama

  • Sistem yük ortalama grafiği, IO işlem grafiği, kesinti grafiği ile çalıştırılır ve bloke edilir

  • Modların CPU kullanım grafiği (misafir, boşta, iowa, irq, iyi, softirq, çalma, sistem, kullanıcı)

  • Dağıtıma göre bellek kullanımı grafiği (kullanılan, kullanılabilir, arabellek, önbellek)

  • IO kullanım grafiği (Bps okuyun, Bps ve IO zamanını okuyun)

  • Cihazın ağ kullanım şeması (inbound Bps, outbound Bps)

  • Exchange kullanım ve etkinlik çizelgeleri

Docker kapsayıcı panosu

Docker Container Dashboard, çalışan container'ları izlemek için temel göstergeleri gösterir:

  • Toplam konteyner CPU yükü, bellek ve depolama kullanımı

  • Çalışan konteyner diyagramı, sistem yükleme diyagramı, IO kullanım diyagramı

  • Konteyner CPU kullanım grafiği

  • Konteyner bellek kullanım grafiği

  • Konteyner önbelleğinin bellek kullanım grafiği

  • Konteyner ağının gelen kullanım diyagramı

  • Kapsayıcı ağı giden kullanım diyagramı

Bu panonun, izleme yığınına ait olan kapsayıcıları görüntülemediğini unutmayın.

Hizmet panosunu izleme

İzleme Hizmetleri Panosu, izleme yığınını oluşturan konteynerleri izlemek için kullanılan temel göstergeleri görüntüler:

  • Prometheus konteyner çalışma süresi, yığının toplam bellek kullanımını, Prometheus yerel depolama bellek bloğu ve serisini izleyin

  • Konteyner CPU kullanım grafiği

  • Konteyner bellek kullanım grafiği

  • Prometheus'un azminin aciliyet tablosu

  • Prometheus video engelleme ve kontrol noktası süre grafiği

  • Prometheus numune alım oranı, hedef çizilme ve çizilme süresi grafiği

  • Prometheus HTTP istek grafiği

  • Prometheus Uyarı Haritası

Prometheus saklama süresini 200 saat ve yığın boyutunu 1 GB olarak belirledim.Bu değerleri oluşturma dosyasında değiştirebilirsiniz.

prometheus: görüntü: balo / prometheus komut: -'- storage.local.target-heap-size = 1073741824 ' -'- storage.local.retention = 200h '

Yığın boyutunu maksimum toplam fiziksel belleğin% 50'sine ayarladığınızdan emin olun.

Alarmı tanımla

Üç uyarı profili oluşturdum:

  • Hizmet uyarı hedeflerini izleme. Kurallar

  • Docker Host, host.rules'i hatırlatıyor

  • Docker Kapsayıcıları uyarı container'ları.rules

Prometheus'a bir HTTP POST çağrısı yaparak uyarı kurallarını değiştirebilir ve yeniden yükleyebilirsiniz:

curl -X POST http: // < ana bilgisayar-ip > : 9090 / - / yeniden yükle

Servis uyarılarını izleyin

Herhangi bir izleme hedefi (node-exportorter ve cAdvisor) 30 saniyeden fazla kapalıysa, bir alarm tetiklenir:

ALERT monitor_service_down EĞER yukarı == 030 sn İÇİN ETİKETLER {severity = "kritik"} AÇIKLAMALAR { Summary = "Çalışmayan hizmeti izle", description = "{{$ labels.instance}} hizmeti çalışmıyor.", }

Docker Ana Bilgisayar uyarısı

Docker ana CPU'su 30 saniyeden fazla yüksek yük altındaysa bir alarm tetiklenir:

ALERT high_cpu_load IF node_load1 > 1.530 sn İÇİN ETİKETLER {severity = "uyarı"} AÇIKLAMALAR { Summary = "Yüksek yük altında sunucu", description = "Docker ana bilgisayarı yüksek yük altında, ortalama yük 1m {{$ value}}. {{$ labels.job}} işinin {{$ labels.instance}} örneği tarafından rapor edildi.", }

Yük eşiğini CPU çekirdeğine göre değiştirin.

Docker ana bilgisayar belleği neredeyse doluysa, bir uyarı tetiklenir:

ALERT high_memory_load EĞER (toplam (node_memory_MemTotal) -sum (node_memory_MemFree + node_memory_Buffers + node_memory_Cached)) / sum (node_memory_MemTotal) * 100 > 8530 sn İÇİN ETİKETLER {severity = "uyarı"} AÇIKLAMALAR { Summary = "Sunucu belleği neredeyse dolu", description = "Docker ana bilgisayar bellek kullanımı% {{humanize $ value}}. {{$ labels.job}} işinin {{$ labels.instance}} örneği tarafından rapor edildi.", }

Docker ana bilgisayar depolama alanı neredeyse doluysa, bir alarm tetiklenir:

ALERT hight_storage_load IF (node_filesystem_size {fstype = "aufs"} - node_filesystem_free {fstype = "aufs"}) / node_filesystem_size {fstype = "aufs"} * 100 > 8530 sn İÇİN ETİKETLER {severity = "uyarı"} AÇIKLAMALAR { Summary = "Sunucu depolama alanı neredeyse dolu", description = "Docker ana bilgisayar depolama kullanımı% {{humanize $ value}}. {{$ labels.job}} işinin {{$ labels.instance}} örneği tarafından rapor edildi.", }

Docker Container uyarısı

Konteyner 30 saniyeden fazla kapalı kalırsa bir alarm tetiklenir:

UYARI jenkins_down Yoksa (container_memory_usage_bytes {name = "jenkins"}) 30 sn İÇİN ETİKETLER {severity = "kritik"} AÇIKLAMALAR { özet = "Jenkins düştü", description = "Jenkins konteyneri 30 saniyeden fazla kapalı." }

Konteyner, toplam CPU çekirdeklerinin% 10'undan fazlasını 30 saniyeden fazla kullanırsa, bir alarm tetiklenir:

UYARI jenkins_high_cpu IF sum (oran (container_cpu_usage_seconds_total {name = "jenkins"})) / count (node_cpu {mode = "system"}) * 100 > 1030 sn İÇİN ETİKETLER {severity = "uyarı"} AÇIKLAMALAR { Summary = "Jenkins yüksek CPU kullanımı", description = "Jenkins CPU kullanımı% {{humanize $ değer}}." }

Konteyner 30 saniyeden fazla 1,2 GB'den fazla RAM kullanırsa bir alarm tetiklenir:

UYARI jenkins_high_memory IF toplamı (container_memory_usage_bytes {name = "jenkins"}) > 120000000030 sn İÇİN ETİKETLER {severity = "uyarı"} AÇIKLAMALAR { Summary = "Jenkins yüksek bellek kullanımı", description = "Jenkins bellek tüketimi {{$ değeri insanlaştır}} seviyesinde.", }

Alarm kurmak

AlertManager hizmeti, Prometheus sunucusu tarafından gönderilen uyarıları işlemekten sorumludur. AlertManager, e-posta, Pushover, Slack, HipChat veya webhook arayüzünü açığa çıkaran başka herhangi bir sistem aracılığıyla bildirim gönderebilir. Entegrasyonların tam listesi burada bulunabilir.

Ziyaret ederek bildirimleri görüntüleyebilir ve sessize alabilirsiniz http: // < ana bilgisayar-ip > : 9093 .

Bildirim alıcısı, alertmanager / config.yml dosyasında yapılandırılabilir.

Slack aracılığıyla uyarı almak için, seçmeniz gerekir Gelen web kancası Özel entegrasyon gerçekleştirin. Slack entegrasyonunu kurma hakkında daha fazla bilgiyi burada bulabilirsiniz.

Slack Webhook URL'sini şuraya kopyala: api_url Alan ve Slack belirtin koridor .

rota: alıcı: 'slack'receiver'lar: -name: 'slack' slack_configs: -send_resolved: doğru text: "{{.CommonAnnotations.description}}" kullanıcı adı: 'Prometheus' kanal:'# < kanal > ' api_url: 'https: //hooks.slack.com/services/ < webhook kimliği > '

Genişletilmiş izleme sistemi

Dockprom Grafana kontrol paneli, birden fazla Docker ana bilgisayarını kapsayacak şekilde kolayca genişletilebilir. Daha fazla ana bilgisayarı izlemek için tek yapmanız gereken her ana bilgisayara dağıtım yapmaktır Düğüm dışa aktarıcı ile cAdvisor Kapsayıcılar ve onları almak için Prometheus sunucusunu işaret edin.

Her veri merkezi / bölgesi için Prometheus yığınını çalıştırmalı ve tüm altyapıya genel bir bakış olarak kullanılacak özel Prometheus örneğindeki tüm ölçümleri toplamak için federasyon işlevini kullanmalısınız. Bu şekilde, bir bölge başarısız olursa veya bölge birleştirme gerçekleştiren Prometheus örneği kapatılırsa, kalan bölgelerde bulunan izleme sistemlerine yine de erişilebilir.

Ayrıca, her bölgede iki özdeş Prometheus sunucusu çalıştırarak Prometheus'u yüksek oranda erişilebilir hale getirebilirsiniz. Alertmanager, tekilleştirme gerçekleştirdiği için, birden çok sunucunun aynı Alertmanager'a uyarılar göndermesine izin vermek, yinelenen uyarılara neden olmaz.

iQOO cep telefonu performans ölçümü: Snapdragon 855 "Tiger" ile kim rekabet edecek?
önceki
"Bir Gölge Gibi" afişi "Sevdim ve Özledim" i açığa çıkarır, "Evlilikten Sonra Gerçek Aşkla Tanış" teması, aşkın acımasız gerçeğine doğrudan vurur
Sonraki
Çekiç Teknolojisi Kuş Yuvası konferansının arifesinde Wang Ziru, Luo Yonghao'ya saldırmak için uzun bir makale gönderdi.
"Soul Solo" aslında çok yakışıklı, Decesolo 2017FW sizin için sokak varyasyonunu yorumlamak için işçilik ve tasarım kullanıyor
PRCV2018 Meitu Kısa Video Gerçek Zamanlı Sınıflandırma Zorluğu Birincilik Ödülü Çözüm Giriş
Little House Secret Konferans Salonu: Neden Huawei Router Q2 Pro çeşitli daire türlerini tutabilir?
Anlaşılması gereken bilgisayar ağı bilgisi (TCP)
Familia'nın yedi koltuklu premium versiyonu 7.98-96.8 milyon yuan için piyasaya sürülüyor
Öfkeli eleştirilerin kilidini açmak için "Seni önemsiyorum" ön gösterimi, "farklı" kadın filmleri düşünce ve yankı uyandırıyor
İlkbaharda Bahar Şiirlerini Okumak Hangisini hatırlıyorsun?
İnce ve hafif! ASUS Zenbook Pro 15 üzerinde Core i9 + GTX 1050
China College Student Programming Contest'in CCPC'si sona erdi ve Tsinghua şampiyonluğu kazandı! Megvii, önümüzdeki 5 yılın toplam sponsorluğunu garanti altına alma sözü verdi
Bir çift altın botunuz var Air Foamposite Pro "Metalik Altın" talep edilmeyi bekliyor
İPhone XS serisine başlamak için en iyi zaman! Özellikler, çabanın yarısını iki katına çıkarmanıza yardımcı olur
To Top