kubernetes上でprometheusとgrafanaを動かす

スポンサーリンク

はじめに

以前prometheusとgrafanaをdockerを使って構築しました。

さらにkubernetes(以下k8s)が動く環境も構築しました。

今回はこの2つを合体させて、kubernetes上でprometheusとgrafanaを動かしてみたいと思います。初めてなのでなるべく設定を少なくして少ない構成で動かそうと思います。

やることはkubernetesで動かすためのymlファイルを作るだけです。

参考サイト

こちらを大変参考にさせていただきました。コードもこちらのものを流用させていただきました。

prometheusのconfigは公式をもとに作成しました。公式が充実してる。

内部DNSを使ってドメインを指定することで解決しています。この部分はこちらを参考にさせていただきました。

使用した環境について

各versionはこちら

Ubuntu 16.04.4 LTS

docker:17.03.2-ce

kubectl:v1.10.1

prometheus:v2.2.1

grafana:5.1.3

windows10上でESXiを使って構築しています。

概要図はこちらです。

詳しくは過去の投稿をご覧ください。

各種ファイルについて

k8s上にアプリ(ここではprometheusやgrafana)を動かす場合、雑に言えばyml(yaml)ファイル作ってapplyすればおしまいです。

私はapply,deleteするときに楽したいのでymlファイルはアプリごと、もしくは機能ごとにまとめてます。以下それぞれのファイルごとに簡単に補足しています。

ちなみにkind:の部分で担う機能が大まかに違うのではじめはそこを中心に見ていくといいと思います。

prometheus.yml

●kind: Namespaceについて

namespace: monitoringを追加してます。

monitoringというNamespaceを作るのに必要です。

●kind: Serviceについて

L4ロードバランサーことServiceです。

namespace: monitoring以外は参考サイトまんまです。nodePort指定してprometheusにアクセスする際は30090にしてます。

selectorが肝で転送先のpodをここで指定しています。

●kind: Deploymentについて

podを作ってくれるDeploymentです。podは1つでいいのでreplicasは1です。

namespace: monitoringとargs部分をfork元から変えてます。

promtheus v2.0以降からconfig.fileの指定コマンドが変わったので。

●kind: ConfigMap

要は設定ファイルなConfigMap。

とりあえず動かすだけなので大半を削除してlocalhostだけ追加してます。

後々色々追加していきますが今回はこれだけ。

grafana.yml

こちらのほうが設定が少ない分わかりやすいかも

●kind: Serviceについて

外からアクセスしたいのでNodeportにしてます。

●kind: Deploymentについて
prometheusのところとあまり変わりません。grafanaになっただけです。

k8sへ適応(デプロイ)

それぞれファイルを作成したらk8sに適応させます。俗に言うデプロイです。

それぞれ以下のコマンドを打ちます。

kubectl apply -f promethus.yml

kubectl apply -f grafana.yml

結果はこちら

kubectl get pod --all-namespacesの結果を見るとmonitoringの箇所にgrafanaとprometheusがRunningになっていることがわかります。

動作確認

まずprometheusの管理画面にアクセスします。

http://192.168.0.14:30090

うまく動作しているとこちらのような画面になります。

Status→Targetsを選ぶとテスト用に用意したprometheusがupと表示されています。

graphに移動して- insert metric at cursor -という箇所がリストになっています。今回はテストなので適当に「up」という項目を選んでExecuteボタンを押します。その後下にあるGraphをクリックするとこんな感じのグラフが表示されます。

ちゃんとグラフが出来てますね。・・・あんま見栄えのあるグラフじゃないですがw

続いてgrafanaの管理画面にアクセスします。

http://192.168.0.14:30300

※2018/07/07修正:port番号が間違っていました。。30300です。

うまく動いているとこんな感じの画面が表示されます。

初期パスワードはadmin/adminです。

ログインするとこんな画面になるのでAdd data sourceを選択します。

設定は簡単にgrafanaのWeb設定のURLだけ注意
Nameは適当でOKです。今回はpromeとしてます。
TypeはPrometheusです。
HTTPのURLはドメインでhttp://prometheus.monitoring.svc.cluster.local:9090とします。k8sだと設定情報をnodeに置くわけにもいかないので(次起動したときそのnodeに行くかわからないから)、ドメインで設定します。

あとはさきほどのprometheusのクエリを使ってグラフを作ります。

こちら。

prometheusと同じグラフが出来ていればOKです。

Githubについて

今回から勉強のためGithubにも同様のものを置いております。

fork元はkkohtakaさんのkubernetes-metricsです。(kkohtaka/kubernetes-metrics)

最後に

とりあえず動かすところまででした。
これだけだと味気ないのでいろいろ追加していきますが、とりあえず動くというのが大事なのです。とりあえず動くまで長かった・・・

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする