🕌
Local MacのMinikubeでPrometheusとGrafana
概要
RustのDocumentもサクッと読んだのでなんか作るぞ!という気持ち
privtateで作るので使いたいものは全部入れていこうの精神で
インフラはKubernetesを取り入れたい
ので、まずはMinikube, Promethus, Grafana使ってMac Book Proにローカル環境作ってみる
Minikube起動
$ minikube start
😄 Darwin 11.3.1 上の minikube v1.22.0
✨ dockerドライバーが自動的に選択されました。他の選択肢: hyperkit, ssh
👍 コントロールプレーンのノード minikube を minikube 上で起動しています
🚜 イメージを Pull しています...
> gcr.io/k8s-minikube/kicbase...: 361.09 MiB / 361.09 MiB 100.00% 11.70 Mi
🔥 docker container (CPUs=2, Memory=7914MB) を作成しています...
🐳 Docker 20.10.7 で Kubernetes v1.21.2 を準備しています...
▪ 証明書と鍵を作成しています...
▪ Control Plane を起動しています...
▪ RBAC のルールを設定中です...
🔎 Kubernetes コンポーネントを検証しています...
▪ イメージ gcr.io/k8s-minikube/storage-provisioner:v5 を使用しています
🌟 有効なアドオン: storage-provisioner, default-storageclass
🏄 完了しました! kubectl が「"minikube"」クラスタと「"default"」ネームスペースを使用するよう構成されました
helmでPrometheusとGrafanaインストール
monitoring用のnamespace作成
kubectl create ns monitoring
Prometheusインストール
$ helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
"prometheus-community" has been added to your repositories
$
$ helm repo list
NAME URL
prometheus-community https://prometheus-community.github.io/helm-charts
$
$ helm search repo prometheus-community
NAME CHART VERSION APP VERSION DESCRIPTION
prometheus-community/alertmanager 0.12.1 v0.22.1 The Alertmanager handles alerts sent by client ...
...
prometheus-community/prometheus 14.4.1 2.26.0 Prometheus is a monitoring system and time seri...
...
$
$ helm install -n monitoring prometheus prometheus-community/prometheus
NAME: prometheus
LAST DEPLOYED: Wed Jul 21 22:35:42 2021
NAMESPACE: monitoring
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
The Prometheus server can be accessed via port 80 on the following DNS name from within your cluster:
prometheus-server.monitoring.svc.cluster.local
Get the Prometheus server URL by running these commands in the same shell:
export POD_NAME=$(kubectl get pods --namespace monitoring -l "app=prometheus,component=server" -o jsonpath="{.items[0].metadata.name}")
kubectl --namespace monitoring port-forward $POD_NAME 9090
The Prometheus alertmanager can be accessed via port 80 on the following DNS name from within your cluster:
prometheus-alertmanager.monitoring.svc.cluster.local
Get the Alertmanager URL by running these commands in the same shell:
export POD_NAME=$(kubectl get pods --namespace monitoring -l "app=prometheus,component=alertmanager" -o jsonpath="{.items[0].metadata.name}")
kubectl --namespace monitoring port-forward $POD_NAME 9093
#################################################################################
###### WARNING: Pod Security Policy has been moved to a global property. #####
###### use .Values.podSecurityPolicy.enabled with pod-based #####
###### annotations #####
###### (e.g. .Values.nodeExporter.podSecurityPolicy.annotations) #####
#################################################################################
The Prometheus PushGateway can be accessed via port 9091 on the following DNS name from within your cluster:
prometheus-pushgateway.monitoring.svc.cluster.local
Get the PushGateway URL by running these commands in the same shell:
export POD_NAME=$(kubectl get pods --namespace monitoring -l "app=prometheus,component=pushgateway" -o jsonpath="{.items[0].metadata.name}")
kubectl --namespace monitoring port-forward $POD_NAME 9091
For more information on running Prometheus, visit:
https://prometheus.io/
Grafanaインストール
$ helm repo add grafana https://grafana.github.io/helm-charts
"grafana" has been added to your repositories
$
$ helm repo list
NAME URL
prometheus-community https://prometheus-community.github.io/helm-charts
grafana https://grafana.github.io/helm-charts
$
$ helm search repo grafana
NAME CHART VERSION APP VERSION DESCRIPTION
grafana/grafana 6.14.1 8.0.5 The leading tool for querying and visualizing t...
...
$
$ helm install -n monitoring grafana grafana/grafana
W0722 09:35:52.635048 594 warnings.go:70] policy/v1beta1 PodSecurityPolicy is deprecated in v1.21+, unavailable in v1.25+
W0722 09:35:52.640954 594 warnings.go:70] policy/v1beta1 PodSecurityPolicy is deprecated in v1.21+, unavailable in v1.25+
W0722 09:35:52.744382 594 warnings.go:70] policy/v1beta1 PodSecurityPolicy is deprecated in v1.21+, unavailable in v1.25+
W0722 09:35:52.747272 594 warnings.go:70] policy/v1beta1 PodSecurityPolicy is deprecated in v1.21+, unavailable in v1.25+
NAME: grafana
LAST DEPLOYED: Thu Jul 22 09:35:52 2021
NAMESPACE: monitoring
STATUS: deployed
REVISION: 1
NOTES:
1. Get your 'admin' user password by running:
kubectl get secret --namespace monitoring grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo
2. The Grafana server can be accessed via port 80 on the following DNS name from within your cluster:
grafana.monitoring.svc.cluster.local
Get the Grafana URL to visit by running these commands in the same shell:
export POD_NAME=$(kubectl get pods --namespace monitoring -l "app.kubernetes.io/name=grafana,app.kubernetes.io/instance=grafana" -o jsonpath="{.items[0].metadata.name}")
kubectl --namespace monitoring port-forward $POD_NAME 3000
3. Login with the password from step 1 and the username: admin
#################################################################################
###### WARNING: Persistence is disabled!!! You will lose your data when #####
###### the Grafana pod is terminated. #####
#################################################################################
GrafanaのDashboard設定
事前準備
- adminのパスワード取得
- port-forwardしてブラウザからアクセスできるようにする
$ kubectl get secret --namespace monitoring grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo
password
$
$ export POD_NAME=$(kubectl get pods --namespace monitoring -l "app.kubernetes.io/name=grafana,app.kubernetes.io/instance=grafana" -o jsonpath="{.items[0].metadata.name}")
$
$ kubectl --namespace monitoring port-forward $POD_NAME 3000
Forwarding from 127.0.0.1:3000 -> 3000
Forwarding from [::1]:3000 -> 3000
DataSourceにPrometheusを設定
Grafanaにアクセス
http://localhost:3000/datasources
PromethuesをDatasourceに追加
(Defaultで選ばれてるかも?
URLにhttp://prometheus-server
を指定
Dashboardをimport
DatasourceのDashboardタブで3つ全部import
Dashboard表示してみる
Searchクリックすると
importしたDashboard出てくるのでクリック
そうするとそれっぽいDashboardが出てくるぞ!!!
まとめ
完全に作業ログになった。
4連休だし次はistioとか入れてみよう🤹♂️
Discussion