ラズベリーパイのグラファナ監視


あなたが私の最後の数つのポストから見たかもしれないように、私は私のラズベリーパイの上でかなりたくさん走っています.
私は現在ラズベリーパイ2 Bを使用していますが、大きなデバイスであるが、1 GBのRAMと900 MHzのCPUしか持っていません.それで、時々私は私がそれを実行しているすべてのDockerサービスでそれを過負荷するつもりであることを少し心配しています.
私は仕事でGrafanaを大いに使います、そして、私はそれが私のラズベリーパイをモニターするためにそれを使うのが良いと思いました.

モニタリング目標


任意のモニタリングでは、あなたが目を維持したいものを知ることが重要です.
私の場合は次のことに興味があります.
  • CPU - CPUが100 %多くの時間で実行を終了するなら、私はそれを実行しているサービスを縮小する必要があるかもしれません
  • メモリ- 1 GBのメモリだけで、私はそれをどれだけ動かすかについて注意を払う必要があります.
  • ハードディスクスペース-私は私のパイで32ギガバイトのSDカードを持っているが、私は1つ前にいっぱいになっているすべてのものは反応しない.
  • コンテナデータ-どのコンテナが高いCPUとメモリ使用を引き起こしているか知りたいです.
  • 何が必要


    Grafanaを使って監視するサービスはおそらくいくつかあります.しかし、私は以下を使います.
  • グラファナ-明らかに!
  • プロメテウス-時系列データを収集するため.
  • CAdvisor -コンテナによって使用されるリソースを監視するためにGoogleからのコンテナモニター.
  • ハードウェアとOSメトリックのための
  • ノード輸出者-プロメテウス輸出者
  • Docker -明らかに
  • Traefik -私は、あなたが私の前のポスト(Traefik vs Nginx for Reverse Proxy with Docker on a Raspberry Piに続くことができる)をセットアップする逆のプロキシを持っていないならば、私は私の逆プロキシとしてこれを使用します.
  • ドッキング構成


    あなたが必要とするDockerの作成ファイルにまっすぐに行き、セットアップに変更する必要があるものを説明します.
    version: '3.4'
    
    services:
      prometheus:
        image: prom/prometheus:latest
        container_name: monitoring_prometheus
        restart: unless-stopped
        volumes:
          - ./data/prometheus/config:/etc/prometheus/
          - ./data/prometheus/data:/prometheus
        command:
          - '--config.file=/etc/prometheus/prometheus.yml'
          - '--storage.tsdb.path=/prometheus'
        expose:
          - 9090
        links:
          - cadvisor:cadvisor
          - node-exporter:node-exporter
        networks:
          - pi
    
      node-exporter:
        image: prom/node-exporter:latest
        container_name: monitoring_node_exporter
        restart: unless-stopped
        expose:
          - 9100
        networks:
          - pi
    
      cadvisor:
        image: braingamer/cadvisor-arm:latest
        container_name: monitoring_cadvisor
        privileged: true
        restart: unless-stopped
        volumes:
          - /:/rootfs:ro
          - /var/run:/var/run:rw
          - /sys:/sys:ro
          - /var/lib/docker/:/var/lib/docker:ro
        devices:
          - /dev/kmsg
        expose:
          - 8080
        networks:
          - pi
    
      grafana:
        image: grafana/grafana:latest
        container_name: monitoring_grafana
        restart: unless-stopped
        links:
          - prometheus:prometheus
        volumes:
          - ./data/grafana:/var/lib/grafana
        environment:
          - GF_USERS_ALLOW_SIGN_UP=false
          - GF_SERVER_DOMAIN=yourdomain.com
          - GF_SERVER_ROOT_URL=https://yourdomain.com/grafana/
          - GF_SERVER_SERVE_FROM_SUB_PATH=true
        labels:
          - 'traefik.enable=true'
          - 'traefik.http.routers.grafana.rule=PathPrefix(`/grafana{regex:$$|/.*}`)'
          - 'traefik.http.services.grafana.loadbalancer.server.port=3000'
          - 'traefik.frontend.headers.customRequestHeaders=Authorization:-'
        networks:
          - pi
    
    networks:
      pi:
        external: true
    
    次の環境変数を変更して、raspberry piのドメインと一致させる必要があります.ローカルで走っているなら、localhosthttp://localhost/grafanaを使うことができます.
    - GF_SERVER_DOMAIN=yourdomain.com
    - GF_SERVER_ROOT_URL=https://yourdomain.com/grafana/
    
    あなたは、私がCAdapsorのためにbraingamer/cadvisor-arm:latestを使っているのに気付きます.これは公式GoogleイメージがARMをサポートしていないため、推奨されないマークされます.もちろん、あなたがしたい場合は、独自のDocker画像を構築することができます.
    これは私が使っているprometheus設定ファイルです.
    # my global config
    global:
      scrape_interval: 120s # By default, scrape targets every 15 seconds.
      evaluation_interval: 120s # 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"
    
    # 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: 120s
    
        # metrics_path defaults to '/metrics'
        # scheme defaults to 'http'.
    
        static_configs:
          - targets: ['localhost:9090', 'cadvisor:8080', 'node-exporter:9100']
    

    ダッシュボードセット


    これは私のGrafanaダッシュボードのようです.あなたが類似した何かを望むならば、あなたはcopy my dashboard jsonでありえます.

    他のメトリックはnode-exportercAdvisorから入手できます.何か役に立つものを見つけるならば、コメントで知らせてください.