LoginSignup
2
2

More than 3 years have passed since last update.

Prometheusでfederationを実現するまで(Prometheus federation設定編)

Last updated at Posted at 2020-05-06

まえがき

https://qiita.com/sinnsa233048/items/e6bcfa97660e38007a93
の続き

Prometheus構築/設定

  1. kube-prometheusのマニュフェストをk8sクラスタにデプロイ
  2. prometheus1サーバでのprometheusコンテナ作成
  3. prometheus1サーバでのgrafanaコンテナ作成

使用した環境

前回からprometheusノードが追加されています。

  • 使用OS: CentOS7.8
  • masterノード
    • ノード名: master1
    • ipアドレス: 192.168.10.11
  • wokerノード
    • ノード名: woker1
    • ipアドレス: 192.168.10.21
  • prometheusノード
    • ノード名: prometheus1
    • ipアドレス: 192.168.10.31

kube-prometheusのマニュフェストをk8sクラスタにデプロイ

https://github.com/coreos/kube-prometheus.git
のリポジトリのデプロイメントを使用します。

gitよりクローン

# yum -y install git
# git clone https://github.com/coreos/kube-prometheus.git

# cd kube-prometheus

マニュフェストをデプロイ

alartmanagerは今回用いないので別のディレクトリ等をを作成しておきます。

# mkdir manifests-not-deploy
# mv manifests/alertmanager*  manifests-not-deploy/

alartmanager以外のマニュフェストをデプロイ

# kubectl create -f manifests/setup
# kubectl create -f manifests

マニュフェストを修正

今回はprometheusのポートをNodePortで公開し、外部からアクセスを行います。
(grafanaについても今回は公開します。)

  • manifests/prometheus-service.yaml

type:NodePort
nodePort: 30090
を追加します。

apiVersion: v1
kind: Service
metadata:
  labels:
    prometheus: k8s
  name: prometheus-k8s
  namespace: monitoring
spec:
  type: NodePort
  ports:
  - name: web
    port: 9090
    targetPort: web
    nodePort: 30090
  selector:
    app: prometheus
    prometheus: k8s
  sessionAffinity: ClientIP
  • manifests/grafana-service.yaml

こちらも同様に
type:NodePort
nodePort: 30090
を追加します。

apiVersion: v1
kind: Service
metadata:
  labels:
    app: grafana
  name: grafana
  namespace: monitoring
spec:
  type: NodePort
  ports:
  - name: http
    port: 3000
    targetPort: http
    nodePort: 30080
  selector:
    app: grafana

prometheus1サーバでのprometheusコンテナ作成

dockerインストール

(k8sクラスタ構築編でも使用した)docker公式のインストールスクリプトを使用します。

$ curl https://get.docker.com | sh

# systemctl enable docker
# systemctl start docker

prometheus設定ファイル作成

k8sクラスタ内に構築したprometheusの情報をすべて取得します。

cat <<EOF > /tmp/prometheus.yml
scrape_configs:
  - job_name: 'federate'
    scrape_interval: 15s

    honor_labels: true
    metrics_path: '/federate'

    params:
      'match[]':
        - '{job=".+"}'
        - '{__name__=~".+"}'

    static_configs:
      - targets:
        - '192.168.10.11:30090'
EOF

prometheusコンテナ起動

# docker run -d -p 9090:9090 -v/tmp/prometheus.yml:/etc/prometheus/prometheus.yml 
 prom/prometheus

prometheus1サーバでのgrafanaコンテナ作成

コンテナ起動

docker run -d --name=grafana -p 3000:3000 grafana/grafana

datasource設定

prometheusを選択しURLにhttp://localhost:9090を指定

dashbord設定

k8sクラスタ内に構築したgrafanaにkubernetes-mixinのタグがつけられたdashbordを
エクスポートし、prometheus1サーバでのgrafanaにインポートして使用。

最後に

2回に渡ってPrometheusでfederationを実現するやり方を紹介させていただきました。
疑問点/ご指摘等は遠慮なくいただければと思います。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2