DEV Community

Rümeysa Öz for Açıklab

Posted on • Originally published at dev.to

6

Docker Compose ile Prometheus Kurulumu

‼️ İlgili makinede Docker ve Docker-Compose kurulu olduğu varsayılarak anlatım gerçekleştirilmiştir. Eğer kurulu değilse, ilk adım olarak kurulumlarını gerçekleştirmeniz gerekmektedir. Bu kaynaktan yaralanılabilir.

1. Prometheus Nedir?

Prometheus, ölçüm ve izleme sistemlerini bir araya getirmek için kullanılan açık kaynaklı bir araçtır. Prometheus, hizmetlerin sağlığını, performansını ve verimliliğini izlemek için birçok ölçüm ve gösterge toplar.

Ayrıca, esnek ve ölçeklenebilir bir yapıya sahiptir ve HTTP üzerinden metrikleri alabilir. Bir diğer yazıda bahsi geçecek olan Grafana ile birlikte kullanılarak görselleştirme ve raporlama için kullanılabilir.

2. Konfigürasyon

Prometheus konfigürasyonu için iki yaml dosyası oluşturulur:

  • prometheus/prometheus.yml
  • docker-compose.yml

2.1 Konfigürasyon dosyası: prometheus/prometheus.yml

prometheus.yml dosyasının konfigüre edilebilmesi için aşağıdaki adımlar izlenir.

  • İlk olarak şu komut ile ana dizinde prometheus adlı bir dosya oluşturulur:
 mkdir prometheus
Enter fullscreen mode Exit fullscreen mode
  • Ardından bu dizine gidilir:
 cd prometheus
Enter fullscreen mode Exit fullscreen mode
  • prometheus.yml dosyasının içine girilir:
 nano prometheus.yml
Enter fullscreen mode Exit fullscreen mode
  • Dosyanın içine aşağıdaki aşağıdaki veriler girilir ve kaydedilip çıkılır:
 my global config
global:
  scrape_interval:     15s # By default, scrape targets every 15 seconds.
  evaluation_interval: 15s # By default, scrape targets every 15 seconds.
  # scrape_timeout is set to the global default (10s).

  # Attach these labels to any time series or alerts when communicating with
  # external systems (federation, remote storage, Alertmanager).
  external_labels:
      monitor: 'my-project'

# Load and evaluate rules in this file every 'evaluation_interval' seconds.
rule_files:
  - 'alert.rules'
  # - "first.rules"
  # - "second.rules"

# alert
alerting:
  alertmanagers:
  - scheme: http
    static_configs:
    - targets:
      - "alertmanager:9093"

# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.

  - job_name: 'prometheus'

    # Override the global default and scrape targets from this job every 5 seconds.
    scrape_interval: 15s

    static_configs:
         - targets: ['localhost:9090']

  - job_name: 'cadvisor'

    # Override the global default and scrape targets from this job every 5 seconds.
    scrape_interval: 15s

    static_configs:
      - targets: ['cadvisor:8080']

  - job_name: 'node-exporter'

    # Override the global default and scrape targets from this job every 5 seconds.
    scrape_interval: 15s

    static_configs:
      - targets: ['node-exporter:9100']
Enter fullscreen mode Exit fullscreen mode

2.2 Docker Compose: docker-compose.yml

Prometheus'u başlatabilmek adına aşağıdaki adımlar izlenir.

  • İlk olarak şu komut ile ana dizine geçilir:
 cd ..
Enter fullscreen mode Exit fullscreen mode
  • Daha sonra docker-compose.yml dosyasının içine girilir:
 nano docker-compose.yml
Enter fullscreen mode Exit fullscreen mode
  • Dosyanın içine aşağıdaki aşağıdaki veriler girilir ve kaydedilip çıkılır:
version: '3.7'

volumes:
    prometheus_data: {}
    grafana_data: {}

networks:
  front-tier:
  back-tier:

services:

  prometheus:
    image: prom/prometheus:v2.36.2
    volumes:
      - ./prometheus/:/etc/prometheus/
      - prometheus_data:/prometheus
    command:
      - '--config.file=/etc/prometheus/prometheus.yml'
      - '--storage.tsdb.path=/prometheus'
      - '--web.console.libraries=/usr/share/prometheus/console_libraries'
      - '--web.console.templates=/usr/share/prometheus/consoles'
    ports:
      - 9090:9090
    links:
      - cadvisor:cadvisor
      - alertmanager:alertmanager
    depends_on:
      - cadvisor
    networks:
      - back-tier
    restart: always

  node-exporter:
    image: quay.io/prometheus/node-exporter:latest
    volumes:
      - /proc:/host/proc:ro
      - /sys:/host/sys:ro
      - /:/rootfs:ro
      - /:/host:ro,rslave
    command: 
      - '--path.rootfs=/host'
      - '--path.procfs=/host/proc' 
      - '--path.sysfs=/host/sys'
      - --collector.filesystem.ignored-mount-points
      - "^/(sys|proc|dev|host|etc|rootfs/var/lib/docker/containers|rootfs/var/lib/docker/overlay2|rootfs/run/docker/netns|rootfs/var/lib/docker/aufs)($$|/)"
    ports:
      - 9100:9100
    networks:
      - back-tier
    restart: always
    deploy:
      mode: global

  alertmanager:
    image: prom/alertmanager
    ports:
      - 9093:9093
    volumes:
      - ./alertmanager/:/etc/alertmanager/
    networks:
      - back-tier
    restart: always
    command:
      - '--config.file=/etc/alertmanager/config.yml'
      - '--storage.path=/alertmanager'

  cadvisor:
    image: gcr.io/cadvisor/cadvisor
    volumes:
      - /:/rootfs:ro
      - /var/run:/var/run:rw
      - /sys:/sys:ro
      - /var/lib/docker/:/var/lib/docker:ro
    ports:
      - 8080:8080
    networks:
      - back-tier
    restart: always
    deploy:
      mode: global

  grafana:
    image: grafana/grafana
    user: "472"
    depends_on:
      - prometheus
    ports:
      - 3000:3000
    volumes:
      - grafana_data:/var/lib/grafana
      - ./grafana/provisioning/:/etc/grafana/provisioning/
    env_file:
      - ./grafana/config.monitoring
    networks:
      - back-tier
      - front-tier
    restart: always
Enter fullscreen mode Exit fullscreen mode

3. Prometheus Başlat

  • Son olarak şu komut ile Prometheus başlatılır:
 docker-compose up -d
Enter fullscreen mode Exit fullscreen mode
  • Ardından tarayıcıya "http://IP:9090" girilir ve Prometheus arayüzüne erişilir:

IP: Prometheus kurulu olan makine'nin IP'si yazılır.

Image description

Image of AssemblyAI

Automatic Speech Recognition with AssemblyAI

Experience near-human accuracy, low-latency performance, and advanced Speech AI capabilities with AssemblyAI's Speech-to-Text API. Sign up today and get $50 in API credit. No credit card required.

Try the API

Top comments (1)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs

👋 Kindness is contagious

Discover a treasure trove of wisdom within this insightful piece, highly respected in the nurturing DEV Community enviroment. Developers, whether novice or expert, are encouraged to participate and add to our shared knowledge basin.

A simple "thank you" can illuminate someone's day. Express your appreciation in the comments section!

On DEV, sharing ideas smoothens our journey and strengthens our community ties. Learn something useful? Offering a quick thanks to the author is deeply appreciated.

Okay