💻
Cheet Sheets
  • 🦁Başlarken
  • 🟧DevOps Pre-Requisite
    • ❤️Why Linux? | Linux Basics #1
    • 💛Vi Editor | Linux Basics #2
    • 💙Basics Commands | Linux Basics #3
    • 🧡Package Managers | Linux Basics #4
    • 💚Services | Linux Basics #5
    • 💛Networking Basics
    • 🤎DNS Basics
    • 🩶Applications Basics
    • 🟨Java introduction
    • 🟩NodeJS Introduction
    • 🟦Python Introduction
    • 🟪GIT Introduction
    • 🟧Apache Web Server Introduction
    • ⬛Apache Tomcat
    • 🟫Python Flask
    • 🟥Node.js Express App
    • 🟨Databases
    • 🟩MySQL
    • 🟪MongoDB
    • 🟨SSL & TLS
    • 🟦YAML & JSON - JSON Path
    • ⬛Labs Resources
  • 🍎Kubernetes
    • 🍏Kubernetes: Nedir ?
    • 🍒Bileşenler
    • 🍵Kubectl ve Versiyon
    • ❤️Pod
    • 🏷️Label ve Selector
    • 🔎Annotation
    • 📲Namespaces
    • 📦Deployments
    • 🔁ReplicaSet
    • 🔙Rollout & Rollback
    • 🌐Networking - 1
    • 🌏Service
    • 🛠️Liveness Probe & Readiness Probe
    • 🥐Resource Limits
    • 💰Environment Variables
    • 📃Ephemeral Volumes
    • 🔑Secrets
    • 🌂ConfigMap
    • 🖥️Node Affinity
    • 🔌Pod Affinity
    • ✍️Taint and Toleration
    • 🔦DaemonSet
    • 🧀PV/PVC
    • 🌜Storage Class
    • 🗿StatefulSet
    • 🕹️Job & Cronjob
    • 🔐Authentication
    • 📏Role-based access control (RBAC)
    • 🈷️Service Account
    • 📈Ingress
    • 📂ImagePullPolicy & ImageSecret
    • 📖Static Pods
    • 🌐Network Policy
    • 🫐Helm Nedir?
    • 📽️Prometheus Stack - Monitoring
    • 💼EFK Stack - Monitoring
    • 🥳CRD & Operator
  • 🧑‍⚕️GIT & GITHUB
    • 👉Girizgah
    • 🌴Branch
    • 🤝Merge
    • 🤔Conflict - Rebase
    • 🇸🇴Alias
    • 🛑Gitignore
    • 🥢Diff
    • ◀️Checkout
    • 🔦Stash
    • 👉Other
  • ☁️AWS
    • 🪣S3
    • 🚙EC2
    • ⚖️ELB
    • 🤝Auto Scaling
    • 🗄️EFS
    • 🔐VPC
    • 🎆CloudFront
    • ❤️Route53
    • 🦈RDS
    • 🏢ElastiCache
    • 🔭CloudWatch
    • 👀CloudTrail
    • 📃CloudFormation
    • 🔕SNS
    • 📬SQS
    • 🎇SWF
    • 📧SES
    • 📦Kinesis
    • 📐AWSConfig
    • 👩‍🏭OpsWork
    • 🚀Lambda - Api Gateway
    • 📌ECS - EKS
    • 🔑KMS
    • 📂Directory Service
    • 🏐Snowball
    • 💾Storage Gateway
    • 💽Volume Gateway
    • 📼Tape Gateway
    • 🏠Organizations
    • 🔙Backup-Transfer-CloudShell
    • 🆔IAM
    • 📀DataSync
    • 🗃️FSx
    • 🎒Aurora Serverless
    • 🌐Global Accelerator
    • 💪HPC
    • 🎰Outposts
    • 🗼Others
  • 👨‍🔬Ansible
    • 👉Girizhah
    • 📔YAML
    • ⚙️Komponentler
    • 🎒Inventory
    • 🏑ad-hoc
    • ▶️Playbook
  • 👨‍⚕️PROMETHEUS
    • 📈Terminoloji
    • 🦯Ubuntu 20.04 Prometheus Kurulum
    • 🗒️prometheus.yml dosyasına ilk bakış:
    • 🧭promQL up query
    • 📇Exporters
    • 🔦promQL Data Types
    • 🦯Selectors & Matchers
    • 🔢Binary Operators
    • 💀ignoring and on
    • ✍️Aggregation Operators
    • 🧠Functions
    • 🖊️Alıştırma
    • 💻Client Libraries
    • 🐍Examining the data of our Python application
    • 🐐Examining the data of our GO application
    • ⏺️Recording Rules
    • 💡rate functions
    • ⏰Alerting
    • ⌚Alert Routing
    • ⏰Slack integration with Prometheus
    • 🤯PagerDuty integration with Prometheus
    • ◼️BlackBox exporter
    • 📍Push Gateway
    • 🪒Service Discovery
    • 🧊kube cadvisor with external prometheus
    • 👉aws with prometheus
    • ☁️CloudWatch Exporter
    • 👨‍🚒mysql exporter
    • 🛃Custom exporter with Python
    • ⚙️Prometheus with HTTP API
    • 🤖Prometheus Federation For Kubernetes
    • 📺Grafana
    • ⁉️Prometheus: Ne zaman kullanılmalı? Ne zaman kullanılmamalıdır?
  • 🍪Sheets
    • 🛳️Docker Sheets
    • 🐐Kube Sheets
  • 🔢12 Factor APP
    • 🏗️Introduction
    • 1️⃣Codebase
    • 2️⃣Dependencies
    • 3️⃣Concurrency
    • 4️⃣Processes
    • 5️⃣Backing Services
    • 6️⃣Config
    • 7️⃣Build, release, run
    • 8️⃣Port binding
    • 9️⃣Disposability
    • 🔟Dev/prod parity
    • 🕚Logs
    • 🕛Admin processes
  • ☁️Azure 104
    • 👨‍👨‍👧‍👧Azure Active Directory ( Entra ID )
    • 💰Subscriptions
    • 🌎Virtual Network (VNET)
    • 💻Virtual Machines
    • 🧑‍🌾Load Balancing
    • 🥍Network Advanced
    • 🪡Automating Deployment and Configuration
    • 💂Securing Storage
    • 📓Administering Azure Blobs and Azure Files
    • 🔧Managing Storage
    • 🎁App Service
    • 🛳️Azure Container
    • 🥇Backup And Recovery
    • 🪐Network Watcher
    • ⏰Resource Monitoring And Alerts
  • ⛅AZURE 305
    • 🆔identity and access management
    • 💼Desing Azure AD (Entra ID)
    • 👨‍💼Desing for Azure B2B
    • 🛃Desing for Azure B2C
    • 💳Design for MFA and Conditional Access
    • ⛑️Design for Identity Protection
    • 🚶Access Reviews
    • 🚦Managed identity Demostration
    • 🔐Key Vault Demostration
    • 👑Governance hierarchy
    • 💠Design for Management Groups
    • 🔑Desing for Subscriptions
    • 🍇Desing for resource groups
    • 📟Design for resource tags
    • 🚷Azure Policy & RBAC
    • 🫐Desing For Blueprints
    • 🪡Desing for Virtual Networks
    • 🛫Design for on-premises connectivity to Azure
    • 🔽Design for network connectivity
    • 📦Design for application delivery
    • 🥞Design for network security and application protection
    • 📕Choose a compute solution
    • 🌊Design for virtual machines
    • 🔋Azure Batch Demostration
    • 🛰️Design for Azure App Service
    • ⛲Design for Azure Container Instances
    • 🎢Design for Azure Kubernetes Service
    • 📠Azure Functions Demostration
    • 💪Azure Logic Apps Demostration
    • 🧑‍💼Design for data storage
    • 🎞️Design for Azure storage accounts
    • 🌟Choose the storage replication
    • 📹Azure blob storage - Lifecycle & immutable demo
    • 🥌Azure Files Demostration
    • 🕸️Design Azure disks
    • 🦼Design for storage security
    • 🔮Azure Table Storage And Cosmos DB Demostration
    • 🟧Azure SQL Solutions
    • 🎡Azure SQL Database - Purchasing models
    • 🕯️Database availability
    • 📜Data security strategy
    • 🧮Azure SQL Edge
    • 🚲Azure Data Factory
    • 🔅Azure Data Lake Storage
    • 🧘‍♂️Azure Databricks
    • 🎒Azure Synapse Analytics
    • 🅰️Azure Stream Analytics
    • 📼Data flow strategy
    • 🍥Cloud Adoption Framework
    • ☣️Azure Migration Framework
    • 🦿Assessing workloads
    • 🪡Migration tools
    • 🤖Azure Database migration
    • 👥Storage migration
    • 👜Azure Backup
    • ⏲️Azure Blob Backup and Recovery
    • 💈Azure files backup and recovery
    • 🎞️Azure VM backup and recovery
    • 🧺Azure SQL backup and recovery
    • ⏰Azure Site Recovery
    • 📩Differentiate event and message
    • ✈️Azure messaging solutions
    • 🚜Event Hub
    • 🥍Application optimization solution
    • 🎁Application lifecycle
    • 📺Azure Monitor
    • 🅱️Log Analytics
    • 👥Azure workbooks and Insights
    • 🚌Azure Data Explorer
  • Github Actions
    • Github Actions Nedir?
    • Workflow & Schedule Triggers
    • Single and Multiple Events
    • Manuel Events
    • Webhook Events
    • Conditional Keywords For Steps
    • Expressions - 1
    • Expressions - 2
    • Runners
    • Workflow Commands
    • Workflow Context
    • Dependent Jobs
    • Encrypted Secrets
    • Configuration Variables
    • Default & Custom Env Varb
    • Set Env Varb with Workflow Commands
    • Github Token Secret
    • Add Script to workflow
    • Push Package #1
    • Push Package #2 Docker
    • Service Containers
    • Routing workflow to runner
    • CodeQL Step
    • Caching Package and Dependency Files
    • Remove workflow Artifact
    • Workflow Status Badge
    • Env Protection
    • Job Matrix Configuration
    • Disable & Delete Workflows
    • Actions type for Action
    • Inputs and Outputs for actions
    • Action Versions
    • Files and Directories for Actions
    • Exit Codes
    • Reusable Workflow & Reuse Templates for Actions and Workflows
    • Configure Self Hosted Runners for Enterprise
  • Loki
    • What is Loki?
    • Architecture of Loki
    • Install Loki For Ubuntu
    • Install Promtail For Ubuntu
    • Querying Logs
    • Loki in Kubernetes
    • Deploying Loki in Kubernetes
    • Connecting to Grafana
    • Viewing Kubernetes logs
    • Promtail Customize & Pipeline
  • Ansible
    • Ansible Introduction
    • Introduction to Ansible Configuration Files
    • Ansible Inventory
    • Inventory Formats
    • Ansible Variables
    • Variable Types
    • Registering Variables and Variable Precedence
    • Variable Scoping
    • Magic Variables
    • Ansible Facts
    • Ansible Playbooks
    • Verifying Playbooks
    • Ansible lint
    • Ansible Conditionals
    • Ansible Conditionals based on facts, variables, re-use
    • Ansible Loops
    • Ansible Modules
    • Introduction to Ansible Plugins
    • Modules and Plugins Index
    • Introduction to Handlers
    • Ansible Roles
    • Ansible Collections
    • Introduction to Templating
    • Jinja2 Templates for Dynamic Configs
  • 🅰️Ansible Advanced
    • Playbook run options
    • Facts
    • Configuration files
Powered by GitBook
On this page

Was this helpful?

  1. PROMETHEUS

Alerting

Prometheus Alerting, Prometheus'ta tanımlanmış bir dizi kurala göre alarm oluşturmayı sağlayan bir bileşendir.

Prometheus Alerting, metriklerin değerlerini sürekli olarak izler ve tanımlanan kurala uyan metrikler için alarm üretir. Örneğin, bir kural, bir hizmetin yanıt verme süresinin normalde 500 ms'den az olduğunu belirleyebilir ve bu sürenin 500 ms'den yüksek olduğu durumlarda bir alarm üretir.

Alarm yöneticisi, tanımlanan alarm kurallarını gözlemler ve alarm durumlarına göre eylemler gerçekleştirir. Örneğin, bir hizmetin yanıt süresi belirtilen eşiği aşarsa, alarm yöneticisi bir bildirim gönderebilir veya bir dizi eylem gerçekleştirebilir.

Özetle,

Prometheus, belirli aralıklarla birçok farklı hizmetin ölçümlerini toplar ve bu ölçümleri zaman serileri olarak depolar. Bu ölçümler, sunucu kaynaklarının kullanımı, ağ trafiği, uygulama performansı vb. gibi birçok farklı alanda olabilir. Prometheus Alerting, bu ölçümleri kullanarak tanımlanmış kural veya koşullara göre alarm oluşturur. Örneğin, bir kural, bir sunucunun kullanılabilir belleğinin %10'dan az olmaması gerektiğini belirleyebilir ve bu koşul karşılanmadığında bir alarm oluşturabilir.

Bu kural ve koşullar YAML formatında yazılmaktadır.

Rule Oluşturmak;

Önceki bölümde oluşturduğumuz rule dosyamızın ismini, " recording_and_alerting_rules_1.yml " şeklinde güncelliyoruz. Ve içerisine aşağıdaki satırları ekliyoruz.

      - alert: NodeExporterDown
        expr: up{job="node_exporter"} == 0
# rules/recording_and_alerting_rules_1.yml
groups:
  - name: my_rules_1
    rules:
      - record: job:node_cpu_seconds_total:avg_idle
        expr: avg without(cpu)(rate(node_cpu_seconds_total{mode="idle"}[5m]))

      - alert: NodeExporterDown
        expr: up{job="node_exporter"} == 0

YAML dosyasındaki "my_rules_1" adlı grup içerisinde, "NodeExporterDown" adlı bir alarm tanımlandık.

Bu alarm, "up{job="node_exporter"} == 0" PromQL ifadesine göre tetiklenecektir. Bu ifade, "node_exporter" adlı işin çalışıp çalışmadığını kontrol eder. "up" metriği, bir işin çalışıp çalışmadığını gösteren 1 veya 0 değerini içerir. "job" etiketi, ölçümleri hangi işin sağladığını belirtir.

Eğer "node_exporter" adlı iş, 0 (çalışmıyor) değerini döndürürse, bu alarm tetiklenecektir. Alarm, bir bildirim veya başka bir işlemle yönetilebilir.

Örnek olması açısından, bir sunucumuza bağlanıp node_exporter servisimizi durdurduk. Ardından arayüzü kontrol ettiğimizde "firing" kısmında down olan sunucumuzu görebiliriz.

Ek olarak, "ALERTS" sorgusunu çalıştırarak, down durumda olan exporter hakkında bilgi alabiliriz.

For

groups:
  - name: my_rules_1
    rules:
      - record: job:node_cpu_seconds_total:avg_idle
        expr: avg without(cpu)(rate(node_cpu_seconds_total{mode="idle"}[5m]))

      - alert: NodeExporterDown
        expr: up{job="node_exporter"} == 0
        for:  1m

"For" parametresi, bir alarmın ne kadar süre boyunca devam etmesi gerektiğini belirler. Bu parametre, bir alarmın yanlış bir şekilde tetiklenmesini engellemeye yardımcı olur.

Örneğin, "NodeExporterDown" adlı bir alarm, yukarıdaki örnekte olduğu gibi, "up{job="node_exporter"} == 0" PromQL ifadesine göre tetiklenecektir. Ancak, "for: 1m" parametresi, alarmın en az 1 dakika boyunca devam etmesi gerektiğini belirtir.

Bu, "node_exporter" adlı işin geçici bir kesintisi nedeniyle bir alarm tetiklenmesini önlemeye yardımcı olur. Örneğin, bir sistem güncellemesi sırasında "node_exporter" geçici olarak durabilir ve bu durumda alarm tetiklenebilir. Ancak, "for" parametresi, bu kesintinin geçici olduğunu ve alarmın devam etmesi gerektiğini belirtir.

Bu şekilde, alarm yöneticisi, alarmın yanlış bir şekilde tetiklenmesini önleyebilir ve yalnızca gerçek bir hizmet kesintisi durumunda bir bildirim gönderir.

"up{job="node_exporter"} == 0" koşulu sağlandığında hemen bir alarm tetiklenmez. Bunun yerine, alarm durumu "pending" durumuna geçer ve alarm koşulu 1 dakika boyunca sağlandıktan sonra yalnızca bir alarm tetiklenir.

"node_exporter" adlı işin geçici bir kesintisi olduğunda, alarm durumu "pending" durumuna geçer ve "for" parametresinde belirtilen süre boyunca bekler. Eğer işteki kesinti 1 dakikadan daha kısa sürerse, alarm tetiklenmez ve yanlış bir alarm gönderilmez.

Labels

groups:
  - name: my_rules_1
    rules:
      - record: job:node_cpu_seconds_total:avg_idle
        expr: avg without(cpu)(rate(node_cpu_seconds_total{mode="idle"}[5m]))

      - alert: NodeExporterDown
        expr: up{job="node_exporter"} == 0
        for:  1m

      - record: job:app_response_latency_seconds:rate1m
        expr: rate(app_response_latency_seconds_sum[1m]) / rate(app_response_latency_seconds_count[1m])

      - alert: AppLatencyAbove5sec
        expr: job:app_response_latency_seconds:rate1m >= 5
        for: 2m
        labels:
          severity: critical

      - alert: AppLatencyAbove2sec
        expr: 2 < job:app_response_latency_seconds:rate1m < 5
        for: 2m
        labels:
          severity: warning

"labels", bir alarm için ek bilgi veya metaveri sağlamak için kullanılan anahtar-değer çiftleridir. Bu etiketler, alarm yöneticisi tarafından kullanılabilen ve alarmı daha iyi yönetmeye yardımcı olan ek bilgiler sağlarlar.

Örneğin, yukarıdaki Prometheus kurallarında, "labels" parametresi kullanılarak iki farklı alarm için etiketler tanımlanmıştır. "severity" adlı bir etiket, her iki alarmda da kullanılmıştır. Bu etiket, bir alarmın önceliğini veya ciddiyetini belirtir.

"AppLatencyAbove5sec" adlı alarm için, "severity: critical" etiketi tanımlanmıştır. Bu etiket, alarmın kritik bir durumu işaret ettiğini belirtir. Bu, alarm yöneticisi tarafından daha hızlı bir şekilde işlenmesi gereken bir durum olduğunu gösterir.

Benzer şekilde, "AppLatencyAbove2sec" adlı alarm için, "severity: warning" etiketi tanımlanmıştır. Bu etiket, alarmın daha az ciddi bir durumu işaret ettiğini belirtir. Bu, alarm yöneticisinin bu durumu daha düşük bir öncelik seviyesinde ele alabileceğini gösterir.

Bu şekilde, "labels" parametresi, alarm yöneticisi tarafından alınacak aksiyonların önceliği veya ciddiyeti hakkında ek bilgi sağlar.

Alert Manager

Prometheus Alertmanager, Prometheus ile birlikte kullanılan açık kaynaklı bir uyarı yönetim sistemidir. Alertmanager, Prometheus'tan gelen alarm sinyallerini alır, gruplandırır, filtreler ve bunlara yanıt olarak belirli eylemler gerçekleştirir.

Alertmanager, gelen uyarıları e-posta, SMS, Slack, PagerDuty ve diğer bildirim kanalları aracılığıyla iletebilir. Ayrıca, uyarıların otomatik olarak tekrarlanmasını veya silinmesini sağlayabilir. Alertmanager, karmaşık alarm durumlarını işlemek için özelleştirilebilir ve genişletilebilir bir yapıya sahiptir.

Genel olarak, Prometheus Alertmanager, Prometheus'tan gelen alarm sinyallerini yönetmek, filtrelemek ve yanıtlamak için tasarlanmıştır.

Kurulum,

Kurulacak sunucu üzerinde "prometheus" kullanıcısı ve grubu mevcut değilse, oluşturmalısınız.

sudo groupadd --system prometheus && sudo useradd -s /sbin/nologin --system -g prometheus prometheus
cd /tmp && wget https://github.com/prometheus/alertmanager/releases/download/v0.25.0/alertmanager-0.25.0.linux-amd64.tar.gz && tar xzf alertmanager-0.25.0.linux-amd64.tar.gz && cd alertmanager-0.25.0.linux-amd64 && mv -v alertmanager amtool /usr/local/bin/ && mkdir -v /etc/alertmanager && mv -v alertmanager.yml /etc/alertmanager && mkdir -v /etc/alertmanager/data && chown -Rfv prometheus:prometheus /etc/alertmanager/

Yukarıdaki komut ile "Alert Manager" servisini kuruyoruz. Özetle yukarıdaki komut şunları yapar;

  1. /tmp dizinine geçer: "cd /tmp"

  2. İndirilen dosyayı açar: "tar xzf alertmanager-0.25.0.linux-amd64.tar.gz"

  3. İndirilen dizine geçer: "cd alertmanager-0.25.0.linux-amd64"

  4. Alertmanager ve amtool dosyalarını /usr/local/bin dizinine taşır: "mv -v alertmanager amtool /usr/local/bin/"

  5. /etc/alertmanager dizinini oluşturur: "mkdir -v /etc/alertmanager"

  6. alertmanager.yml dosyasını /etc/alertmanager dizinine taşır: "mv -v alertmanager.yml /etc/alertmanager"

  7. /etc/alertmanager/data dizinini oluşturur: "mkdir -v /etc/alertmanager/data"

  8. /etc/alertmanager/ dizinini prometheus:prometheus kullanıcısına ve gruba sahip olacak şekilde değiştirir: "chown -Rfv prometheus:prometheus /etc/alertmanager/"

Alert Manager systemd dosyasını oluşturalım.

vi /etc/systemd/system/alertmanager.service
[Unit]
Description=Prometheus Alertmanager
Wants=network-online.target
After=network-online.target

[Service]
User=prometheus
Group=prometheus
Type=simple
ExecStart=/usr/local/bin/alertmanager \
    --config.file=/etc/alertmanager/alertmanager.yml \
    --storage.path=/etc/alertmanager/data
Restart=always

[Install]
WantedBy=multi-user.target

Bu systemd dosyasını kaydettikten sonra, "systemctl daemon-reload" komutunu kullanarak systemd'ye dosyayı yeniden yüklemelisiniz. Daha sonra, "systemctl start alertmanager" komutunu kullanarak Alertmanager hizmetini başlatabilirsiniz. "systemctl stop alertmanager" komutu ile de hizmeti durdurabilirsiniz.

Yukarıdaki adımları uygulayarak, Alert Manager servisini kurup, çalıştırdık.

Prometheus.yaml dosyamızda, yeni kurduğumuz alert manager servisini tanımlayıp servisi restart ediyoruz.

vi /etc/prometheus/prometheus.yml
# Alertmanager configuration
alerting:
  alertmanagers:
    - static_configs:
        - targets:
          - localhost:9093

systemctl restart prometheus komutu ile prometheus servisi restart ediyoruz.

Alert Manager kurulumu tamamlandı ve çalışır vaziyette olduğunu teyit ettik.

Sending email

global:
   smtp_require_tls: false

route:
  receiver: admin

receivers:
- name: admin
  email_configs:
  - to: 'example@gmail.com'
    from: 'example@gmail.com'
    smarthost: smtp.example.com:587
    auth_username: 'example@example.com'
    auth_identity: 'example@example.com'
    auth_password: 'fqkvkumorgaqgkat'
  1. global bölümü: Bu bölüm, Alertmanager için küresel yapılandırma ayarlarını içerir. smtp_require_tls ayarı, SMTP sunucusuyla iletişim sırasında TLS gerektirilip gerektirilmeyeceğini belirler. Bu örnekte, false olarak ayarlandığı için TLS gerekli değildir.

  2. route bölümü: Prometheus tarafından gönderilen uyarıların nasıl yönlendirileceğini belirler. Bu örnekte, admin adlı bir alıcının belirtildiği receiver özelliği tanımlanmıştır.

  3. receivers bölümü: Bu bölüm, admin alıcısının ayrıntılarını içerir. Bu örnekte, e-posta göndermek için kullanılacak SMTP sunucusunun ayrıntıları tanımlanmıştır. email_configs özelliği, SMTP sunucusu için gerekli yapılandırma ayarlarını içerir. to, e-postanın gönderileceği alıcının e-posta adresini belirtir. from, gönderenin e-posta adresini belirtir. smarthost, SMTP sunucusunun adını ve bağlantı noktasını belirtir. auth_username, SMTP sunucusuna kimlik doğrulama yapmak için kullanılan kullanıcı adını belirtir. auth_identity, SMTP sunucusuna bağlanmak için kullanılan kimlik bilgisini belirtir. auth_password, SMTP sunucusuna bağlanmak için kullanılan şifreyi belirtir.

annotations

annotations, Alertmanager'daki bir uyarıya ek ayrıntılar eklemek için kullanılan bir özelliktir. Bu özellik, bir uyarı hakkında daha ayrıntılı bilgi sağlamak ve alıcının uyarıyı daha iyi anlamasına yardımcı olmak için kullanılabilir.

Alertmanager, annotations özelliğinde belirtilen tüm ayrıntıları, bir uyarının gösterildiği arayüzlerde veya uyarı e-postalarında görüntüleyebilir.

groups:
  - name: my_rules_1
    rules:
      - record: job:node_cpu_seconds_total:avg_idle
        expr: avg without(cpu)(rate(node_cpu_seconds_total{mode="idle"}[5m]))

      - alert: NodeExporterDown
        expr: up{job="node_exporter"} == 0
        for:  1m

      - record: job:app_response_latency_seconds:rate1m
        expr: rate(app_response_latency_seconds_sum[1m]) / rate(app_response_latency_seconds_count[1m])

      - alert: AppLatencyAbove5sec
        expr: job:app_response_latency_seconds:rate1m >= 5
        for: 2m
        labels:
          severity: critical
        annotations:
          summary: 'Python app latency is over 5 seconds.'
          description: 'App latency of instance {{ $labels.instance }} of job {{ $labels.job }} is {{ $value }} seconds for more than 5 minutes.'
          app_link: 'http://10.90.0.144:8000/'

      - alert: AppLatencyAbove2sec
        expr: 2 < job:app_response_latency_seconds:rate1m < 5
        for: 2m
        labels:
          severity: warning
  • summary: Bu özellik, uyarı hakkında kısa bir özet sağlar. Bu örnekte, özet, "Python uygulaması gecikmesi 5 saniyenin üzerinde" olarak belirtilmiştir.

  • description: Bu özellik, uyarıyı daha ayrıntılı bir şekilde açıklar. Bu örnekte, açıklama, belirli bir uygulama örneğinin adını ({{ $labels.instance }}), iş adının adını ({{ $labels.job }}) ve ölçümleme verilerinin değerini ({{ $value }}) içerir. Açıklama, "5 dakikadan daha uzun süre için {{ $value }} saniye olan {{ $labels.job }} işinin {{ $labels.instance }} örneğinin uygulama gecikmesi" olarak belirtilmiştir.

  • app_link: Bu özellik, uyarının açıklamasında bahsedilen uygulamanın bağlantısını sağlar. Bu örnekte, bağlantı http://10.90.0.144:8000/ olarak belirtilmiştir.

Alarm 'a annotations kullanarak, detaylı bilgiler ekledik ve bu şekilde daha mantıklı uyarılar göndermeye başladı.

Previousrate functionsNextAlert Routing

Last updated 2 years ago

Was this helpful?

Alertmanager'ın Linux AMD64 sürümünü indirir: "wget "

👨‍⚕️
⏰
https://github.com/prometheus/alertmanager/releases/download/v0.25.0/alertmanager-0.25.0.linux-amd64.tar.gz
Gelen istekler 5 saniyenin üzerinde işlem görüyor.
Gelen istekler 2 ila 5 saniyenin arasında işlem görüyor.
Alertmanager'in kullandığı 9093 portu cevap veriyor.
Alert Manager tanımlı durumda.
Ui