Prometheusとは
オープンソースの監視,アラートツール.CNCFプロジェクトに参加している.
インストール
helmを使って自宅minikubeにインストールする.helm install
で直接k8sクラスタにapply
しても良いが,デフォルトではClusterIP Service
しか作成されないため,クラスタ内部からしかアクセスできない.そのため,helm template
でテンプレートを一回書き出してから,LoadBalancer Service
を作成する.
$ helm template --release-name promtest stable/prometheus > prometheus.yaml
prometheus.yaml
に以下を追記する.prometheus serverに対してLoadBalancerからフォワードを行っている.
--- apiVersion: v1 kind: Service metadata: name: lb-prom spec: type: LoadBalancer selector: component: "server" app: prometheus release: promtest ports: - name: "prom-port" port: 9090 protocol: "TCP" targetPort: 9090
起動
minikube tunnelを使ってホストマシンからアクセスできるようにする.
$ minikube tunnel $ kubectl apply -f prometheus.yaml $ kubectl get svc NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE lb-prom LoadBalancer 10.110.216.125 10.110.216.125 9090:32272/TCP 43m promtest-kube-state-metrics ClusterIP 10.107.10.161 <none> 8080/TCP 43m promtest-prometheus-alertmanager ClusterIP 10.97.171.3 <none> 80/TCP 43m promtest-prometheus-node-exporter ClusterIP None <none> 9100/TCP 43m promtest-prometheus-pushgateway ClusterIP 10.103.95.154 <none> 9091/TCP 43m promtest-prometheus-server ClusterIP 10.110.209.233 <none> 80/TCP 43m
作成したlb-prom
のEXTERNAL-IP
に接続できるようになっている.
$ curl -L 10.110.216.125:9090 <!DOCTYPE html> <html lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta name="robots" content="noindex,nofollow"> <title>Prometheus Time Series Collection and Processing Server</title> ...