💻
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

Push Gateway

PreviousBlackBox exporterNextService Discovery

Last updated 1 year ago

Was this helpful?

Prometheus, genellikle hedef sistemlerden (uygulamalar, sunucular, ağ cihazları vb.) metrikleri toplamak için kullanılır. Prometheus, HTTP üzerinden hedef sistemlere erişir ve metrikleri düzenli aralıklarla çekerek saklar.

Ancak bazen hedef sistemlerin doğrudan erişilebilir olmadığı durumlar veya geçici olarak erişilemez olduğu anlar olabilir. Bu durumda, Prometheus Push Gateway devreye girer. Push Gateway, hedef sistemlerin metrikleri Prometheus'a itmesine izin verir. Hedef sistemler, Push Gateway'e HTTP POST istekleri göndererek metrikleri Push Gateway'e kaydeder. Ardından Prometheus, Push Gateway'den bu metrikleri alır ve işler.

Push Gateway, Prometheus'un tipik scrape (çekme) modelinden farklı olarak push (itme) modelini kullanır. Bu, hedef sistemlerin metrikleri aktif olarak Prometheus'a gönderdiği anlamına gelir, böylece Prometheus sürekli olarak hedef sistemlere erişmek zorunda kalmaz.

Push Gateway, özellikle geçici, kısa ömürlü veya dinamik hedeflerin olduğu senaryolarda kullanışlıdır. Örneğin, kısa süreli çalışan iş yükleri veya batch işlemleri gibi durumlarda metrikleri toplamak için kullanılabilir.

Prometheus Push Gateway'yi Ubuntu 20.04'e kurmak için aşağıdaki adımları takip edebilirsiniz:

  1. Gerekli bağımlılıkları yükleyin:

sudo apt update
sudo apt install -y wget
export PUSHGATEWAY_VERSION="0.10.0"  # Sürüm numarasını güncelleyin
wget https://github.com/prometheus/pushgateway/releases/download/v${PUSHGATEWAY_VERSION}/pushgateway-${PUSHGATEWAY_VERSION}.linux-amd64.tar.gz
  1. İndirilen arşivi açın:

tar xvfz pushgateway-${PUSHGATEWAY_VERSION}.linux-amd64.tar.gz
  1. Push Gateway'in çalıştırılabilir dosyasını /usr/local/bin/ dizinine kopyalayın:

sudo cp pushgateway-${PUSHGATEWAY_VERSION}.linux-amd64/pushgateway /usr/local/bin/
  1. Push Gateway kullanıcısı ve grubunu oluşturun:

sudo useradd --no-create-home --shell /bin/false pushgateway
  1. Servis dosyasını oluşturun:

sudo nano /etc/systemd/system/pushgateway.service

Aşağıdaki içeriği yapıştırın ve kaydedin:

[Unit]
Description=Prometheus Push Gateway
Documentation=https://github.com/prometheus/pushgateway
Wants=network-online.target
After=network-online.target

[Service]
User=pushgateway
Group=pushgateway
Type=simple
ExecStart=/usr/local/bin/pushgateway

[Install]
WantedBy=default.target
  1. Servisi etkinleştirin ve başlatın:

sudo systemctl daemon-reload
sudo systemctl enable pushgateway
sudo systemctl start pushgateway
  1. Push Gateway'in doğru şekilde çalıştığını kontrol edin:

sudo systemctl status pushgateway

Adding Prometheus

  - job_name: "push_gateway"
    static_configs:
      - targets: ["10.90.0.145:9091"]

Yukarıdaki yapılandırma, Prometheus'un Push Gateway'i hedef almasını sağlayan bir job (iş) tanımıdır. Bu tanım, Prometheus'un Push Gateway üzerinden metrikleri almasını ve saklamasını sağlar.

Aşağıda, verilen örnek yapılandırmanın açıklamasını bulabilirsiniz:

  • job_name: "push_gateway": Bu satır, Prometheus için tanımlanan işin adını belirtir. Bu ad, Prometheus yapılandırma dosyasında hedefleyeceğiniz Push Gateway işini belirlemek için kullanılır.

  • static_configs: Bu bölüm, hedeflerin statik olarak yapılandırılacağını belirtir, yani Push Gateway hedefinin sabit bir IP adresi ve port numarası olduğunu ifade eder.

  • - targets: ["10.90.0.145:9091"]: Bu satır, Push Gateway hedefini belirtir. Burada "10.90.0.145" IP adresi ve "9091" portu Push Gateway'in konumunu gösterir. Bu, Prometheus'un Push Gateway üzerinden metrikleri çekmek için hedef bir adres olarak kullanacağı anlamına gelir.

Bu tanımı Prometheus yapılandırma dosyanıza eklerseniz, Prometheus Push Gateway'den metrikleri almak için belirlediğiniz adı kullanarak bu işi hedef alacaktır. Prometheus, Push Gateway üzerinden belirtilen IP adresi ve port numarası üzerinden metrikleri toplayacak ve ardından bunları Prometheus veritabanında saklayacaktır.

Bu yapılandırma, Prometheus ve Push Gateway arasındaki entegrasyonu sağlar ve Push Gateway'in metrikleri toplamasını ve Prometheus'a itmesini sağlar. Bu şekilde, Push Gateway'in erişimi güç olan veya geçici olarak erişilemez olan hedef sistemlerden metrikleri alarak, Prometheus'un daha geniş bir metrik yelpazesini toplamasına olanak tanır.

  1. Prometheus servisini durdurun:

sudo systemctl stop prometheus
  1. Yapılandırma dosyasını düzenleyin:

sudo nano /etc/prometheus/prometheus.yml
  1. Dosya içerisinde yeni job tanımını ekleyin. Örneğin:

- job_name: "push_gateway"
  static_configs:
    - targets: ["10.90.0.145:9091"]
  1. Dosyayı kaydedin ve kapatın.

  2. Prometheus servisini yeniden başlatın:

sudo systemctl start prometheus
  1. Servisin doğru şekilde başladığından emin olmak için durumunu kontrol edin:

sudo systemctl status prometheus

Prometheus servisini yeniden başlattıktan sonra, Prometheus Push Gateway'i hedef alan job tanımı etkinleştirilecek ve Prometheus, Push Gateway üzerinden metrikleri almaya başlayacaktır. Push Gateway'den gelen metrikler, Prometheus veritabanında depolanacak ve kullanılabilir hale gelecektir.

Not: Yapılandırma dosyasını değiştirdikten sonra herhangi bir hata mesajı alırsanız veya servis başarılı bir şekilde başlamazsa, yapılandırma dosyasını doğru şekilde düzenlediğinizden ve sözdizimine dikkat ettiğinizden emin olun. Hataları tespit etmek için servis günlüklerini kontrol etmeyi unutmayın (sudo journalctl -u prometheus).

Push Gateway'e bir POST isteği göndermek için kullanılan tam URL'nin formatı şu şekildedir:

POST http://<push_gateway_host>:9091/metrics/job/<job_name>/instance/<instance_name> HTTP/1.1

Burada <push_gateway_host>, Push Gateway'in IP adresini veya alan adını temsil eder. Push Gateway'in IP adresi veya alan adı, isteği göndermek istediğiniz hedef Push Gateway'e karşılık gelir. Port numarası 9091 olarak belirtilir, çünkü Push Gateway genellikle bu port üzerinde çalışır.

<job_name>, Push Gateway'e gönderilen metriğin ait olduğu işin adını temsil eder. Örneğin, bu bir uygulamanın veya hizmetin adı olabilir.

<instance_name>, metriğin ait olduğu işin belirli bir örneğini temsil eder. Bu, aynı işten birden fazla örneğiniz olduğunda farklı örneklerin metriklerini ayırmak için kullanılabilir.

Örneğin, aşağıdaki URL'ü ele alalım:

POST http://10.90.0.145:9091/metrics/job/myjob/instance/myinstance HTTP/1.1

Bu örnekte, 10.90.0.145 IP adresiyle erişilebilen Push Gateway'e bir POST isteği gönderiliyor. İsteğin hedefi, myjob adlı bir iş ve myinstance adlı bir sunucu/cihaz üzerindeki metriklerdir.

Gerçek senaryolar için, <push_gateway_host> kısmını kendi Push Gateway IP adresiniz veya alan adınızla değiştirmeniz gerekmektedir. Ayrıca, <job_name> ve <instance_name> kısımlarını kendi metrikleriniz ve iş/cihaz adlarınıza göre değiştirmeniz gerekecektir.

Bu tam URL formatını kullanarak Push Gateway'e POST isteği göndererek, belirlediğiniz iş ve örneğe ait metrikleri kaydedebilirsiniz.

Push Gateway'e metrikleri göndermek için Prometheus'un özel bir metrik formatını kullanmanız gerekmektedir. Push Gateway, metrikleri Prometheus'un anlayabileceği metrik formatına çevirir ve kaydeder.

Aşağıdaki gibi doğru bir örnek ile Push Gateway'e metrik göndermeyi deneyebilirsiniz:

echo 'my_metric{label1="value1", label2="value2"} 42.5' | curl -X POST --data-binary @- http://10.90.0.145:9091/metrics/job/myjob/instance/myinstance

Bu komut, metriği doğrudan Push Gateway'e gönderir. echo komutuyla metriği oluşturur ve ardından curl ile POST isteğini gerçekleştirir. Push Gateway, metriği alır, Prometheus için uygun formata çevirir ve kaydeder.

Yine, <push_gateway_host> kısmını kendi Push Gateway IP adresiniz veya alan adınızla, <job_name> ve <instance_name> kısımlarını da kendi metrikleriniz ve iş/cihaz adlarınıza göre değiştirmeniz gerekmektedir.

Bu şekilde Push Gateway'e metrik göndermeyi deneyebilirsiniz.

Push Gateway metrikleri alırken, etiketlerde değişiklik yapabilir, yeni etiketler ekleyebilir. Ancak, bazı durumlarda orijinal metrik etiketlerini korumak önemli olabilir. Bu durumda, honor_labels özelliği kullanılarak Push Gateway'in orijinal etiketleri koruması sağlanır.

- job_name: "push_gateway"
    honor_labels: true
    static_configs:
      - targets: ["10.90.0.145:9091"]

honor_labels özelliği, Push Gateway yapılandırma dosyasında yukarıdaki şekilde kullanılabilir:

With cronjob:

#!/bin/bash
echo "my_date{source=\"system\"} $(date +%s)" | curl --data-binary @- http://10.90.0.145:9091/metrics/job/cronjob/instance/myscript

Yukarıdaki script ile tarih bilgisini saniye cinsinden, push gateway'e gönderiyoruz. Bunu sürekli göndermek için crontab'a bu scripti eklemeliyiz.

* * * * * /root/date_clock.sh

Ardından prometheus web arayüzünden veya push gateway'den gelen veriyi kontrol edebiliriz.

Göreceğiniz üzere "my_date" metriğine ait veriler prometheus uygulamamıza ulaşmaya başladı.

With Python;

from prometheus_client import CollectorRegistry, Gauge, push_to_gateway

registry = CollectorRegistry()
g = Gauge('job_last_success_unixtime', 'Last time a batch job successfully finished', registry=registry)
g.set_to_current_time()
push_to_gateway('10.90.0.145:9091', job='batchA', registry=registry)

Jobu çalıştırdıktan sonra, prometheus arayüzünden gelen veriyi kontrol edebiliriz;

Yukarıdaki Python kodu, bir işin son başarılı şekilde tamamlandığı zamanı ölçen ve bunu Pushgateway aracına gönderen bir kod parçasıdır.

Kodun yaptığı işlemleri şöyle açıklayabilirim:

  • from prometheus_client import CollectorRegistry, Gauge, push_to_gateway

Bu satırda, prometheus_client adlı bir kütüphaneden CollectorRegistry, Gauge ve push_to_gateway adlı üç fonksiyonu içe aktarıyoruz. Bu fonksiyonlar, Prometheus ile etkileşim kurmak için gerekli olan metrik tanımlama, kaydetme ve gönderme işlevlerini sağlar.

  • registry = CollectorRegistry()

Bu satırda, CollectorRegistry fonksiyonunu çağırarak registry adlı bir değişken oluşturuyoruz. Bu değişken, bir CollectorRegistry nesnesi tutar. Bu nesne ise, Prometheus'un metriklerini kaydetmek için kullanılan bir kayıt defteridir.

  • g = Gauge('job_last_success_unixtime', 'Last time a batch job successfully finished', registry=registry)

Bu satırda, Gauge fonksiyonunu çağırarak g adlı bir değişken oluşturuyoruz. Bu değişken, bir Gauge nesnesi tutar. Bu nesne ise, Prometheus'un anlık olarak ölçebileceği bir metrik türüdür. Bu metrik türü, tek bir değer alabilir ve bu değer zamanla artabilir veya azalabilir. Gauge fonksiyonuna üç parametre veriyoruz: metriğin adı, metriğin açıklaması ve metriğin kaydedileceği kayıt defteri.

  • g.set_to_current_time()

Bu satırda, g değişkeninin set_to_current_time adlı bir metodunu çağırıyoruz. Bu metod ise, g değişkeninin değerini mevcut zamanın saniye cinsinden değerine ayarlar. Böylece, işin son başarılı şekilde tamamlandığı zamanı ölçmüş oluyoruz.

  • push_to_gateway('10.90.0.145:9091', job='batchA', registry=registry)

Bu satırda, push_to_gateway fonksiyonunu çağırıyoruz. Bu fonksiyon ise, kayıt defterindeki metrikleri Pushgateway'e gönderir. Pushgateway'e üç parametre veriyoruz: Pushgateway'in çalıştığı IP adresi ve port numarası, işin adı ve kayıt defteri.

Pushgateway, normalde prometheus tarafından izlenemeyen işlerden veri toplamak için kullanılan bir araçtır. Ancak Pushgateway’in kullanımı bazı durumlarda sakıncalı olabilir. Pushgateway pitfalls’lerden bazıları şunlardır:

  • Birden fazla işten veri toplamak için tek bir Pushgateway kullanılırsa, Pushgateway hem tek başarısızlık noktası hem de potansiyel bir darboğaz haline gelir.

  • Prometheus’un her izleme işleminde ürettiği up metriğini kaybedersiniz. Bu metrik, işlerin sağlıklı olup olmadığını gösterir.

  • Pushgateway, kendisine gönderilen verileri asla unutmaz ve bunları Prometheus’a sürekli olarak sunar. Bu veriler manuel olarak Pushgateway’in API’si aracılığıyla silinmediği sürece Prometheus’ta kalır.

Bu nedenle, Pushgateway’i genel veri toplama amacıyla kullanmak yerine, sadece servis seviyesindeki toplu işlerin sonucunu yakalamak için kullanmak daha uygundur. Servis seviyesindeki toplu işler, belirli bir makine veya iş örneğiyle ilişkili olmayan işlerdir (örneğin, bir servis için birkaç kullanıcıyı silen bir toplu iş).

Push Gateway'in en son sürümünü indirin. Aşağıdaki komutu çalıştırarak en son sürümün indirme bağlantısını alabilirsiniz:

Artık Prometheus Push Gateway Ubuntu 20.04'te başarıyla kurulmuş ve çalışır durumda olmalıdır. Ayrıca, adresinden web arayüzüne erişebiliriz. Push Gateway'e HTTP POST istekleri göndererek metrikleri kaydedebilir ve Prometheus tarafından kullanılabilir hale getirebilirsiniz.

👨‍⚕️
📍
Prometheus GitHub deposundan
http://pushgatewayip:9091/
Göreceğiniz üzere push_gateway hedefi up durumdadır.
Göreceğiniz üzere, metrik push gateway üzerinde gözükmektedir.
Prometheus web arayüzünden kontrol ettiğimizde gönderdiğimiz metriğe ait verilere ulaşabildiğimizi görüyoruz.
Mavi le işaretlediğim satırda göreceğiniz üzere prometheus'un kendi eklemiş olduğu gereksiz etiketler kaldırıldı.