💻
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

Functions

PreviousAggregation OperatorsNextAlıştırma

Last updated 2 years ago

Was this helpful?

PromQL, veri modelinde ölçümleri işlemek için birçok farklı işlev (function) sunar. PromQL işlevleri, ölçümleri filtrelemek, birleştirmek, gruplandırmak, işlemek ve daha pek çok işlevi yerine getirmek için kullanılır.

  • sum(): Belirli bir etiket kümesine göre ölçümleri toplar.

  • avg(): Belirli bir etiket kümesine göre ölçümlerin ortalamasını hesaplar.

  • max(): Belirli bir etiket kümesine göre ölçümlerin maksimum değerini hesaplar.

  • min(): Belirli bir etiket kümesine göre ölçümlerin minimum değerini hesaplar.

  • count(): Belirli bir etiket kümesine göre ölçümlerin sayısını hesaplar.

  • rate(): Bir ölçüm serisindeki artış oranını hesaplar.

  • irate(): Ölçüm serisindeki anlık artış hızını hesaplar.

  • delta(): Bir ölçüm serisindeki değişim miktarını hesaplar.

  • absent(): Belirli bir etiket kümesine göre ölçüm serisinde herhangi bir verinin eksik olup olmadığını kontrol eder.

Kullanımları,

  • Rate

rate(prometheus_http_requests_total[1m])

Yukarıdaki PromQL sorgusu, belirli bir ölçüm serisi için son 1 dakikadaki artış oranını hesaplamak için kullanılır. prometheus_http_requests_total ölçüm serisindeki ölçümlerin artış hızını hesaplamak için rate() işlevi kullanılır.

[1m] ifadesi, sorgu sonucunun son 1 dakikadaki artış hızını göstermesini sağlar. Bu ifade, rate() işlevine iletilen ölçüm serisindeki ölçümlerin aralığını belirler. Bu örnekte, son 1 dakikadaki ölçümler hesaplanacaktır.

Sonuç olarak, bu sorgu, son 1 dakika boyunca prometheus_http_requests_total ölçüm serisindeki ölçümlerin artış hızını hesaplar ve sorgu sonucunda artış hızı olarak ifade eder.

  • irate

irate(prometheus_http_requests_total[1m])

Bu sorgu, prometheus_http_requests_total metriğinin son 1 dakikadaki anlık artış hızını hesaplar. irate() fonksiyonu, bir aralık vektöründeki zaman serisi verilerinin anlık artış hızını hesaplar. Bu hesaplama son iki veri noktasına dayanır.

irate() fonksiyonu, bir aralık vektöründeki zaman serisi verilerinin anlık artış hızını hesaplar. Bu hesaplama son iki veri noktasına dayanır. Yani, irate() fonksiyonu aralık vektöründeki son iki veri noktasını alır ve bu iki nokta arasındaki artış hızını hesaplar.

Örneğin, irate(prometheus_http_requests_total[1m]) sorgusu, prometheus_http_requests_total metriğinin son 1 dakikadaki verilerini alır ve bu verilerin son iki noktası arasındaki artış hızını hesaplar.

"rate" fonksiyonunun hesaplamasında belirlenen zaman aralığına göre ("range" değeri) hesaplama yapılır. Bu nedenle, "rate" fonksiyonu sonucu, belirli bir zaman aralığındaki artış oranını hesaplar. "Irate" fonksiyonu ise, son örneklemeden itibaren belirli bir süreyi hesaba katarak sabit bir oran hesaplar. Bu nedenle, "irate" fonksiyonu daha anlık bir artış oranını verirken, "rate" fonksiyonu daha belirli bir zaman aralığındaki artış oranını verir.

  • changes

changes(process_start_time_seconds{job="node_exporter"}[1h])

changes() fonksiyonu, belirli bir zaman aralığı içindeki ölçüm serisindeki değişiklik sayısını hesaplar. Bu fonksiyon, zaman aralığındaki ölçüm serisindeki herhangi bir artış veya azalışı sayar ve sonucu döndürür.

process_start_time_seconds{job="node_exporter"} ifadesi, node_exporter işinin başlangıç süresi ölçüm serisini ifade eder. [1h] ifadesi, son bir saat içindeki ölçümleri filtreler.

Dolayısıyla changes(process_start_time_seconds{job="node_exporter"}[1h]) sorgusu, son bir saat içinde node_exporter işinin başlangıç süresi ölçüm serisindeki değişiklik sayısını hesaplar ve sonucu döndürür. Bu, node_exporter işinin son bir saat içinde kaç kez başladığını veya durdurulduğunu hesaplamak için kullanılır.

  • deriv

deriv(node_network_receive_bytes_total{device="ens160"}[1h])

deriv(node_network_receive_bytes_total{device="ens160"}[1h]) sorgusu, node_network_receive_bytes_total metriğini device="ens160" etiketi ile filtreler ve son bir saat içindeki değerlerini seçer. Daha sonra deriv işlevi bu metrikteki değişiklik oranını hesaplar. Bu sorgu, belirtilen süre boyunca ens160 interface'in ağ alım bayt sayısındaki değişiklik oranını saniye başına bayt cinsinden gösterir.

Özetle, Örneğin, son bir saat içinde ens160 interface gelen ağ trafiği byte miktarı 10 MB arttıysa, deriv(node_network_receive_bytes_total{device="ens160"}[1h]) sorgusu sonucu 10 MB/saniye verir.

  • predict_linear

predict_linear(node_memory_MemFree_bytes{job="node_exporter"}[1h], 2*60*60)/1024/1024/1024 

predict_linear(node_memory_MemFree_bytes{job="node_exporter"}[1h], 2*60*60)/1024/1024/1024 sorgusu, node_memory_MemFree_bytes metriğini job="node_exporter" etiketi ile filtreler ve son bir saat içindeki değerlerini seçer. Daha sonra predict_linear işlevi bu metrikteki değişiklik oranını kullanarak gelecekteki bir değeri tahmin eder. Bu sorgu, 2 saat sonra boş bellek miktarını gigabayt cinsinden tahmin eder.

2*60*60 ifadesi 2 saat sonrasını saniye cinsinden ifade eder. predict_linear işlevi ikinci parametre olarak gelecekteki bir zamanı saniye cinsinden alır ve bu zaman için bir tahmin yapar. Bu durumda, 2*60*60 ifadesi 2 saat sonrasını saniye cinsinden ifade eder ve predict_linear işlevi 2 saat sonra boş bellek miktarını tahmin eder.

2*60*60 ifadesi 2 saat sonrasını saniye cinsinden ifade eder. Bir saat 60 dakikadır ve bir dakika 60 saniyedir. Bu nedenle, bir saat 60 * 60 = 3600 saniyedir. 2 saat ise 2 * 3600 = 7200 saniyedir. Dolayısıyla, 2*60*60 ifadesi 2 saat sonrasını saniye cinsinden ifade eder.

  • max_over_time

max_over_time işlevi, bir zaman serisi metriğinin belirtilen bir süre boyunca en yüksek değerini döndürür.

max_over_time(node_cpu_seconds_total[1h])

max_over_time(node_cpu_seconds_total[1h]) sorgusu, node_cpu_seconds_total metriğinin son bir saat içindeki en yüksek değerini döndürür. Bu sorgu, belirtilen süre boyunca bir sunucunun CPU kullanımının en yüksek değerini gösterir.

  • min_over_time

min_over_time(node_cpu_seconds_total[1h]) 

min_over_time(node_cpu_seconds_total[1h]) sorgusu, node_cpu_seconds_total metriğinin son bir saat içindeki en düşük değerini döndürür. Bu sorgu, belirtilen süre boyunca bir sunucunun CPU kullanımının en düşük değerini gösterir.

  • avg_over_time

avg_over_time(node_cpu_seconds_total[1h])

Bu sorgu, 1 saatlik bir zaman dilimi boyunca bir dizi işlemci metriklerinin ortalama değerini hesaplar. "node_cpu_seconds_total" işlemci metrikleri için varsayılan bir Prometheus metrik adıdır ve toplam işlemci süresini saniye cinsinden ölçer. "avg_over_time" işlevi, belirtilen bir zaman aralığı boyunca verilerin ortalamasını hesaplar.

  • sort

sort(node_cpu_seconds_total)

sort(node_cpu_seconds_total) sorgusu, node_cpu_seconds_total metriğinin değerlerini artan sıraya göre sıralar.

  • sort_desc

sort_desc(node_cpu_seconds_total) 

sort_desc(node_cpu_seconds_total) sorgusu, node_cpu_seconds_total metriğinin değerlerini azalan sıraya göre sıralar.

  • time

time()

time() sorgusu, PromQL'deki işlevlerden biridir ve sorgunun çalıştırıldığı zamanın tam zaman damgasını (unix timestamp) döndürür.

time() - process_start_time_seconds{job="node_exporter"}

time() - process_start_time_seconds{job="node_exporter"} sorgusu, process_start_time_seconds metriğindeki bir işlemin ne kadar süredir çalıştığını hesaplamak için kullanılır.

Bu sorgu, time() işlevi ile process_start_time_seconds işlevi arasındaki zaman farkını hesaplayarak, bir işlemin ne kadar süredir çalıştığını hesaplar. Sonuç olarak, bu sorgu node_exporter işleminin çalışma süresini saniye cinsinden döndürür.

  • day_of_week

day_of_week()

day_of_week() PromQL işlevi, bir zaman damgası (timestamp) değerinin haftanın hangi gününe denk geldiğini döndürür.

day_of_week() işlevi, bir zaman damgasının haftanın kaçıncı gününe denk geldiğini 0'dan 6'ya kadar olan bir sayı olarak ifade eder. 0 Pazar'ı temsil ederken, 1 Pazartesi'yi, 2 Salı'yı vb. temsil eder.

  • day_of_month

day_of_month()

day_of_month() PromQL işlevi, bir zaman damgasının ayın kaçıncı gününe denk geldiğini döndürür.

day_of_month() işlevi, bir zaman damgasının ayın kaçıncı gününe denk geldiğini bir tam sayı olarak ifade eder. Örneğin, 1 Ocak tarihi 1, 2 Ocak tarihi 2, vb. şeklinde ifade edilir.

👨‍⚕️
🧠