Prometheus Alertmanager Proaktif Ci /cd İzleme

Neden CI /CD Boruları için Proaktif İzleme Maddeleri

Sürekli bütünleşme ve Sürekli İşbirlikleri (CI/CD) boru hatları modern yazılım teslimatının arka kemiği oluşturur. Test etmek, bina etmek ve üretime dağıtmak için her şeyi otomatikleştirmektedir.Bir boru hattı molası olduğunda, tüm geliştirme ekibini engelleyebilir, gecikme sürümlerini engelleyebilir ve -eğer üretime geri dönmezlerse - el ele alınmaz kod.

Prometheus, uyarıcı, uyarıcının akıllı uyarılarını kullanarak, uyarıları kontrol etmek için karmaşık bir çalışmadır - ilgili bildirimleri, baskılı çoğaltmalar ve onları doğru insanlara veya sistemlere yönlendirmek.

Prometheus Alertmanager

Prometheus Alertmanager bir tek bir sistem değil - Prometheus sunucusu ile konserde çalışır. sunucu yapılandırmada tanımlanmış olan uyarı kurallarını çeşitli kanallarla toplar: e-posta, Pagerty, OpsGenie, webhooks ve daha fazlası.

Uyarıcının Temelleri

Sistem sayesinde nasıl akışlar

  1. Prometheus, ihracatçılardan veya uç noktalarından ölçümler çıkarır (örneğin, Jenkins metrics, GitLab CI metrics, Kubernetes pod statüsü).
  2. Prometheus yapılandırmasında tanımlanmış uyarı kurallarına dayanarak, koşullar bir uyarı tetikler (örneğin, 10 dakika içinde başarısızlık oranı >% 5).
  3. Uyarıcı yangın uyarısını alır, grup bekleme ve aralık ayarları, toplu uyarılar ve onları rotalar.
  4. Bildirimler, alıcılara gönderilir. Cevaplar otomatik eylemleri (örneğin, sıkı bir işi yeniden başlatması için webhook) tetikleyebilir.

Bu akışını anlamak, kritik olayların asla kaçırılmaması için uyarıcıları uyarmak için gereklidir.

Neden Alertmanager özellikle CI /CD İzleme için?

CI/CD boru hatları yüksek bir ölçüm ve olaylar üretir. Akıllı Uyarı olmadan, takımlar gürültülü bildirimde boğulur - her biri başarısız test, yavaş dağıtım veya aralıklı ağ blip bir mesaj tetikler. Alertmanager bunu çözer:

Uyarıcı ile proaktif izleme, boru bozulması eğilimlerini tespit edebileceğiniz anlamına gelir (örneğin, toplam bir başarısızlıka neden olan zaman).

CI/CD Boru Hattınız için Prometheus ve Alertmanager'ı açın

Katı bir uyarı temeli uygulamak hem Prometheus hem de Alertmanager'ı anlamak gerektirir. Aşağıda gerçek dünya gözleriyle bir adım kılavuzu vardır.

Adım 1: Deploy Prometheus ve Alertmanager

Zaten yapmadıysanız, Prometheus ve Alertmanager. Common yaklaşımlar Docker, Kubernetes Helm grafikler veya yerli paketler kullanarak içerir. Basit bir test ortamı için, docker-compose kullanabilirsiniz:

version: '3'
services:
 prometheus:
 image: prom/prometheus:latest
 volumes:
 - ./prometheus.yml:/etc/prometheus/prometheus.yml
 ports:
 - "9090:9090"

 alertmanager:
 image: prom/alertmanager:latest
 volumes:
 - ./alertmanager.yml:/etc/alertmanager/alertmanager.yml
 ports:
 - "9093:9093"

Resmi olarak noter:0)Alertmanager Belgeleri[Dönetici konfigürasyonlar için).

Adım 2: CI /CD-Specific Metriks

Prometheus'un CI/CD araçlarınıza metriklere ihtiyacı var. Ortak entegrasyonlar:

Örneğin, Jenkins'in başarısızlıkları izlemek için, başarı için 0 değerle birlikte, 1 başarısızlık için bir metrik ortaya çıkar.

Adım 3: Prometheus'ta Uyarı Kuralları Oluşturun

Uyarı kuralları Prometheus'a yüklenen YAML dosyalarıdır. Aşağıda bir CI/CD boru hattı için örnek bir dosya:

groups:
 - name: CI/CD Alerts
 rules:
 - alert: BuildFailureHigh
 expr: rate(jenkins_job_last_result{result="failure"}[5m]) > 0.1
 for: 2m
 labels:
 severity: critical
 annotations:
 summary: "High build failure rate in pipeline {{ $labels.job }}"
 description: "Build failure rate > 10% over 5 minutes for job {{ $labels.job }} in environment {{ $labels.env }}"

 - alert: DeploymentDurationAnomaly
 expr: histogram_quantile(0.95, rate(deployment_duration_seconds_bucket[10m])) > 300
 for: 5m
 labels:
 severity: warning
 annotations:
 summary: "Deployment duration anomaly for service {{ $labels.service }}"
 description: "95th percentile deployment duration exceeds 5 minutes"

Adım 4: Configure Alertmanager Routing ve Bildirimler

Uyarıların nasıl işlendiğini tanımlayan birFLT:6 oluşturun. Örnek:

route:
 group_by: ['alertname', 'job', 'env']
 group_wait: 30s
 group_interval: 5m
 repeat_interval: 4h
 receiver: 'default'
 routes:
 - match:
 severity: critical
 receiver: 'pagerduty-critical'
 continue: true
 - match:
 severity: warning
 receiver: 'slack-warnings'

receivers:
 - name: 'pagerduty-critical'
 pagerduty_configs:
 - service_key: <your-pagerduty-key>
 - name: 'slack-warnings'
 slack_configs:
 - api_url: https://hooks.slack.com/services/...
 channel: '#ci-cd-alerts'
 send_resolved: true

Anahtar ayarları:

Kapsamlı bir rehber için, [[Şerefli konfigürasyon belgeleri).

Adım 5: Olay Yanıt Otomasyonu ile Bütünleştir

Proaktif izleme sadece uyarıların harekete geçmesi durumunda etkilidir. Uyarıcıda otomatik yanıtları tetiklemek için webhooks kullanın:

Birçok takım ayrıca, Uyarıcının üst kısmındaki uyarı programları yönetmek için (veya benzer) Grafana OnCall[FONT:1) kullanıyor.

Proaktif CI /CD İzleme için Gelişmiş Uyarıcı Özellikler

Temel routing ayarlandığında, izlemenizi iyi almak için gelişmiş özelliklerden yararlanın.

Inhibition Kuralları

Örneğin, Kubernetes node düşer (kahkadar uyarıları) Eğer program dışı uyarılar hakkında uyarılara ihtiyacınız yoktur (kahkaha uyarıları)

inhibit_rules:
 - source_match:
 severity: 'critical'
 target_match:
 severity: 'warning'
 equal: ['namespace', 'cluster']

Bu, hataların kalibrasyonu sırasında gürültüyü azaltır.

Silencing ve Mute Timers

Örneğin, her Salı günü 2 AM'de dağıtsanız, bu pencere sırasında dağıtımla ilgili uyarıları bastırırsınız:

mute_time_intervals:
 - name: tuesday_deploy
 weekdays: ['Tuesday']
 time_intervals:
 - times: ['02:00', '04:00']

Yolunuzda mutebi referans: 03:11. Bu, beklenen operasyonel aktivitelerden uyarı yorgunluğunu önler.

Alertmanager Webhooks for Custom Actions

Slack ve PagerDuty'nin ötesinde, iç araçla entegre etmek için webhooks kullanın. Örneğin, bir webhook alıcı sıkı bir boru hattını otomatik olarak başlatabilecek bir API çağırabilir:

receivers:
 - name: 'webhook-auto-fix'
 webhook_configs:
 - url: 'https://internal-api.example.com/pipeline/restart'
 send_resolved: true

Anahtar Toplayıcılar Her CI/CD Boru Hattı İzlemesi Gerekiyor

Etkili uyarı kuralları tanımlamak için, ne ölçümlerin önemli olduğunu bilmeniz gerekir. DORA (DevOps Research and Assessment) çerçevesi dört temel metrikleri tanımlar:

Prometheus bunları özel ihracat veya loglar-to-metrik boru hatlarıyla takip edebilir. Örnek uyarı MTTR için kural:

 - alert: MTTRTooHigh
 expr: avg by (service) (deployment_recovery_time_seconds) > 3600
 for: 10m
 labels:
 severity: warning
 annotations:
 summary: "MTTR for {{ $labels.service }} exceeds 1 hour"

CI/CD Borularında Uyarılama için en iyi uygulamalar

Aşırı doldurma, bu yönergeleri uyarınızı etkili tutmak için takip eder.

Define Anlamlı Thresholds

Tarihi verilerle ilgili temel eşler tahmin edilmez. Gerçek bir uyarı vs. normal dalgalanmaları oluşturan olayları analiz etmek için geçmiş olaylar. Dinamik eşleri kullanın (hakayıt kuralları) uyumsuzluğu için.

Birden Çok Şiddetli Seviye Kullanın

Eylemlere cevap vermek için harita kıvrımları:

Gerçek Data ile Test Uyarı Kuralları

Prometheus'un yerleşik test araçları veya ESFLT:14, dağıtmadan önce kuralları doğrulamaya yardımcı olun. Simulate uyarı koşulları bir ortamda.

Doküman Uyarı Yapıları

Bir wiki veya runbook her uyarının amacını, ne zaman tetiklendiği ve gerekirse nasıl sessizliğin sağlanması. Bu hızlar olay yanıtı.

Düzenli olarak İnceleme ve Refine

Tüm uyarı kurallarının dörtte bir gözden geçirilmesi. Dur stale kuralları, eşleri ayarlama ve yenileri değiştirme hatları için ekleyin. Alertmanager'ın basitliği onu kolayca iterate'ye kolaylaştırır.

Popüler CI/CD Platformları ile birlikte tüm Uyarıcılar

Jenkins

İş inşa etmek için kullanılan değer, süresi ve sonuçları ortaya çıkarmak için, Prometheus metrics[[Döneticileri, süresi ve sonuçları.Geçmiş durumdaki kuyruk boyutlarında veya işlere uyarı.

GitLab CI

GitLab koşucular için uç noktası ortaya çıkarır. Monitor koşucu kullanılabilirlik ve boru hattı yürütme süreleri.Birleşme isteği boru hatları için, itenway aracılığıyla özel ölçümler kullanın.

GitHub Actions

GitHub Actions yerli olarak Prometheus metriklerini ortaya çıkarmadığından, iş akışlarından gelen ölçümler, iş akışları veya zaman kesinti oranları üzerinde uyarı kullanıyor.

# In a workflow step
- name: push metrics
 run: |
 echo "pipeline_status{workflow=\"deploy\",result=\"${{ job.status }}\"} 1" | curl --data-binary @- http://pushgateway:9091/metrics/job/github_actions/instance/${{ github.run_id }}

Kubernetes Yerli Borular (Tekton, Argo Workflows)

Boru hatları ve özel kaynak tanımlarını izlemek için [[UseDs) Feed on pipelineRun başarısızlıkları veya GörevRun zamanouts.

Ortak Pitfalls ve Them'dan Nasıl Kaçırmak

Güçlü bir kurulumla bile, takımlar zorluklarla karşılaşırlar. İşte onları nasıl gezebilirsiniz:

İzlemeyi İzlemeyi Kendini Takip Etmek

Prometheus ve Alertmanager birbirlerini izleyebilir. Expose Prometheus'un kendi metriklerini izleyebilir ve Uyarıcı başarısızlıklar için uyarıları ayarlayabilir (örneğin, bildirimler başarısız, sessizlikler expiring Örnek kuralı:

 - alert: AlertmanagerNotificationFailing
 expr: rate(alertmanager_notifications_failed_total[10m]) > 0.01
 for: 5m
 labels:
 severity: critical
 annotations:
 summary: "Alertmanager notifications are failing"

İzleme döngünüzün kör noktalardan kaçınmak için dirençli olmasını sağlayın.

Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç

Prometheus Alertmanager for proaktif CI/CD izleme, boru hattınızı aktif hale getirmek için güvenli bir şekilde dönüştürmeye çalışır.Sistem herhangi bir CI /CD platformuyla entegre etmek için yeterince esnektir ve açık kaynak doğası, maliyetlerinizi belirlemek için tam ihtiyaçlarınızı tespit etme yeteneği kazanır - bunun doğru bir şekilde, gerçek kurtarma işlemine dayalı olarak, gerçek kurtarma olaylarıyla ilgili olarak, herhangi bir CI/CD platformu ile entegre etmek için zamanınızı yatırım yapmak için zamanında yatırım yapabilirsiniz.