見出し画像

Mimirを使い、メトリクスをGrafanaに表示させる

要件

  • Mimirを使い、メトリクスをGrafanaに表示させる

タスク

  • Mimirを使い、メトリクスをGrafanaに表示させる

  • 以下のようにgrafanaにメトリクスを表示させる

参考記事

▼prometheusとgrafanaの連携のやり方を動画で説明してくれる!


学べること

  • Mimirとgrafanaの連携の仕方

ハマりポイント

  • 以下がhelmで作られるnginxのconfファイルだが、ここに書いてあるパスを参考にprometheusのremote_writeの設定や、grafanaのdatasourceの設定を行う

/etc/nginx $ cat nginx.conf 
worker_processes  5;  ## Default: 1
error_log  /dev/stderr error;
pid        /tmp/nginx.pid;
worker_rlimit_nofile 8192;

events {
  worker_connections  4096;  ## Default: 1024
}

http {
  client_body_temp_path /tmp/client_temp;
  proxy_temp_path       /tmp/proxy_temp_path;
  fastcgi_temp_path     /tmp/fastcgi_temp;
  uwsgi_temp_path       /tmp/uwsgi_temp;
  scgi_temp_path        /tmp/scgi_temp;

  default_type application/octet-stream;
  log_format   main '$remote_addr - $remote_user [$time_local]  $status '
        '"$request" $body_bytes_sent "$http_referer" '
        '"$http_user_agent" "$http_x_forwarded_for"';
  access_log   /dev/stderr  main;

  sendfile     on;
  tcp_nopush   on;
  resolver kube-dns.kube-system.svc.cluster.local;

  # Ensure that X-Scope-OrgID is always present, default to the no_auth_tenant for backwards compatibility when multi-tenancy was turned off.
  map $http_x_scope_orgid $ensured_x_scope_orgid {
    default $http_x_scope_orgid;
    "" "anonymous";
  }

  server {
    listen 8080;

    location = / {
      return 200 'OK';
      auth_basic off;
    }

    proxy_set_header X-Scope-OrgID $ensured_x_scope_orgid;

    # Distributor endpoints
    location /distributor {
      set $distributor mimir-distributor-headless.default.svc.cluster.local;
      proxy_pass      http://$distributor:8080$request_uri;
    }
    location = /api/v1/push {
      set $distributor mimir-distributor-headless.default.svc.cluster.local;
      proxy_pass      http://$distributor:8080$request_uri;
    }
    location /otlp/v1/metrics {
      set $distributor mimir-distributor-headless.default.svc.cluster.local;
      proxy_pass      http://$distributor:8080$request_uri;
    }

    # Alertmanager endpoints
    location /alertmanager {
      set $alertmanager mimir-alertmanager-headless.default.svc.cluster.local;
      proxy_pass      http://$alertmanager:8080$request_uri;
    }
    location = /multitenant_alertmanager/status {
      set $alertmanager mimir-alertmanager-headless.default.svc.cluster.local;
      proxy_pass      http://$alertmanager:8080$request_uri;
    }
    location = /api/v1/alerts {
      set $alertmanager mimir-alertmanager-headless.default.svc.cluster.local;
      proxy_pass      http://$alertmanager:8080$request_uri;
    }

    # Ruler endpoints
    location /prometheus/config/v1/rules {
      set $ruler mimir-ruler.default.svc.cluster.local;
      proxy_pass      http://$ruler:8080$request_uri;
    }
    location /prometheus/api/v1/rules {
      set $ruler mimir-ruler.default.svc.cluster.local;
      proxy_pass      http://$ruler:8080$request_uri;
    }

    location /prometheus/api/v1/alerts {
      set $ruler mimir-ruler.default.svc.cluster.local;
      proxy_pass      http://$ruler:8080$request_uri;
    }
    location = /ruler/ring {
      set $ruler mimir-ruler.default.svc.cluster.local;
      proxy_pass      http://$ruler:8080$request_uri;
    }

    # Rest of /prometheus goes to the query frontend
    location /prometheus {
      set $query_frontend mimir-query-frontend.default.svc.cluster.local;
      proxy_pass      http://$query_frontend:8080$request_uri;
    }

    # Buildinfo endpoint can go to any component
    location = /api/v1/status/buildinfo {
      set $query_frontend mimir-query-frontend.default.svc.cluster.local;
      proxy_pass      http://$query_frontend:8080$request_uri;
    }

    # Compactor endpoint for uploading blocks
    location /api/v1/upload/block/ {
      set $compactor mimir-compactor.default.svc.cluster.local;
      proxy_pass      http://$compactor:8080$request_uri;
    }
  }
}

▼参考例

  • grafana

datasources:
  datasources.yaml:
    apiVersion: 1
    datasources:
    - name: mimir
      type: prometheus
      url: http://mimir-nginx/prometheus
  • prometheus

remote_write:
  # メトリクスの保存先mimirのsvcのエンドポイント
  - url: http://ac2e62c7ec03b4959b08442ade6ea5df-1997248699.ap-northeast-1.elb.amazonaws.com/api/v1/push
    remote_timeout: 30s


関連タグ

#Mimir #grafana #kubernetes #EKS #helm #aws

この記事が気に入ったらサポートをしてみませんか?