SolrとPrometheusとGrafanaをdocker-composeで抱き合わせ起動する

sinato.hatenadiary.com

つづき。こんな感じでyamlを書けばよさそう。

version: "3.9"
services:
  solr:
    image: "solr:9.2.1"
    container_name: solr
    ports:
      - "8983:8983"
    volumes:
      - data:/var/solr
    command:
      - solr-precreate
      - gettingstarted
  prometheus:
    image: prom/prometheus
    container_name: prometheus
    ports:
      - "9090:9090"
    environment:
      - DS_PROMETHEUS=Prometheus
    volumes:
      - ./prometheus.yml:/etc/prometheus/prometheus.yml
  solr-exporter:
    image: "solr:9.2.1"
    container_name: solr-exporter
    ports:
      - "8989:8989"
    environment:
      - SOLR_URL=http://solr:8983/solr
    command: /opt/solr/contrib/prometheus-exporter/bin/solr-exporter
    depends_on:
      - solr
  grafana:
    image: grafana/grafana
    container_name: grafana
    ports:
      - "3000:3000"
    volumes:
      - ./provisioning/dashboards:/etc/grafana/provisioning/dashboards
      - ./provisioning/datasources:/etc/grafana/provisioning/datasources

volumes:
  data:

ディレクトリ構成はこう。

# tree
.
├── docker-compose.yml
├── prometheus.yml
└── provisioning
    ├── dashboards
    │   ├── default.yaml
    │   └── grafana-solr-dashboard.json
    └── datasources
        └── datasource.yml

dashboard/default.yamldatasource.yml は以下のZennを参考にさせてもらった。

zenn.dev

grafana-solr-dashboard.jsonは以下のjson。

grafana.com

jsonはそのままだとデフォルトだとデータソースが ${DS_PROMETHEUS}になっていてうまく表示されなかったので、以下のissueを眺めながらjsonの ${DS_PROMETHEUS}Prometheus に一括置換した。 github.com

あまり見なさそうなメトリクスも結構多いので、ダッシュボードは自分で作ってもいいかもしれないと思った。