22 Kasım 2021 Pazartesi

Grafana

Giriş
Açıklaması şöyle
Grafana is an open source solution for running data analytics, pulling up metrics that make sense of the massive amount of data & to monitor our apps with the help of cool customizable dashboards.
Grafana connects with every possible data source, commonly referred to as databases such as Graphite, Prometheus, Influx DB, ElasticSearch, MySQL, PostgreSQL etc
Açıklaması şöyle
Grafana is a tool that can inject various data sources and display them in a comprehensive graphical experience. It supports various data sources like ELK, Prometheus, Graphite. And It also supports sending alerts base on different conditions.
Prometheus
Grafana, Prometheus'un çıktısını dashboard tarzı daha okunaklı hale getirir. İlişkisi şeklen şöyle

Ekranları gösteren bir örnek burada

Data Source Ekleme
Data Source Ekleme yazısına taşıdım

grafana-server komutu
Grafana'yı başlatmak için "./bin/grafana-server" komutu çalıştırılır

Dashboard
Grafana Dashboard Genel Görünüm yazısına bakabilirsiniz
Grafana Dashboard Import yazısına bakabilirsiniz

Dashboard şöyle. Burada cluster için toplam CPU ve Memory kullanımı görülebilir

Container'lar için toplam CPU ve Memory kullanımı şöyle


Örnek - Create
 create -> Add Panel ile panel eklenir. Her panel'in metrics browser alanına birer birer şunlar eklenir
jenkins_plugins_active{}
jenkins_plugins_inactive{}
jenkins_plugins_failed{}
jenkins_plugins_withUpdate{}
Helm İle Kurulum
Şöyle yaparız
kubectl create ns prometheus
kubectl create ns grafana

helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo add grafana https://grafana.github.io/helm-charts

# deploy/prometheus-server diye deployment yapar
helm install prometheus prometheus-community/prometheus 
  --namespace prometheus 
  --set alertmanager.persistentVolume.storageClass="gp2" 
  --set server.persistentVolume.storageClass="gp2"

helm install grafana grafana/grafana 
  --namespace grafana 
  --set persistence.storageClassName="gp2" 
  --set persistence.enabled=true 
  --set adminPassword='EKS!sAWSome' 
  --values ./grafana.yaml 
  --set service.type=LoadBalancer

#get the DNS of grafana load balancer.
kubectl get svc -n grafana
Docker
Şöyle yaparız
docker pull grafana/grafana

docker run -d -p 3000:3000 grafana/grafana
"localhost:3000" adresine bağlanıtız. Kullanıcı ismi ve şifre "admin:admin"

Docker Compose
Docker Compose yazısına taşıdım

Kubernetes
Grafana Kubernetes Deployment yazısına taşıdım

Loki
Açıklaması şöyle
Grafana Loki is logging aggregation system which allows high available and multi tenancy.
In micro-service paradigm to read the logs from each micro-service is really hard when we do one by one. To identify one issue have to tail logs in multiple modules. But what loki does is support the log aggregation in single dashboard and will allow to query the results form dashboard.
Şeklen şöyle



promptail-config.yml şöyle. Logları loki'ye gönderir.
server: http_listen_address: 0.0.0.0 http_listen_port: 9080 positions: filename: /tmp/positions.yaml clients: - url: http://loki:3100/loki/api/v1/push scrape_configs: - job_name: docker entry_parser: raw pipeline_stages: - docker:{} static_configs: - labels: job: dockerlogs __path__: /var/lib/docker/containers/*/*log
promptail için docker plugin kurulmalı. Şöyle yaparız
docker plugin install grafana/loki-docker-driver:latest
  --alias loki --grant-all-permissions
loki-config.yml şöyle
auth_enabled: false

server:
  http_listen_port: 3100
  grpc_listen_port: 9096

common:
  path_prefix: /tmp/loki
  storage:
    filesystem:
      chunks_directory: /tmp/loki/chunks
      rules_directory: /tmp/loki/rules
  replication_factor: 1
  ring:
    instance_addr: 127.0.0.1
    kvstore:
      store: inmemory

schema_config:
  configs:
    - from: 2020-10-24
      store: boltdb-shipper
      object_store: filesystem
      schema: v11
      index:
        prefix: index_
        period: 24h

ruler:
  alertmanager_url: http://localhost:9093
Şöyle yaparız
version: "3"

networks:
  loki:

services:
  app:
    image: quiz-server:latest
    container_name: 'quiz-server'
    ports:
    - '8080:8080'
  loki:
    image: grafana/loki
    volumes:
      - /home/sajith/Documents/personal/blogs/grafana-loki/loki:/etc/loki
    ports:
      - "3100:3100"
    command: -config.file=/etc/loki/config.yaml
    networks:
      - loki

  promtail:
    image: grafana/promtail
    volumes:
      - /var/lib/docker/containers:/var/lib/docker/containers
      - /home/sajith/Documents/personal/blogs/grafana-loki/promtail/config.yml:/etc/promtail/config.yml
    command: -config.file=/etc/promtail/config.yml
    networks:
      - loki

  grafana:
    image: grafana/grafana:master
    ports:
      - "3000:3000"
    networks:
      - loki
Influx Veri Tabanı
Influx ile ilişkisi şeklen şöyle



Hiç yorum yok:

Yorum Gönder