マイクロサービスモニタPrometheusのインストール導入

8304 ワード

本稿では、k 8 sの下でPrometheus+grafanaの監視環境を構築する方法について説明します.
基本概念
Prometheusは、コンテナとクラウドのオリジナル分野のデータ収集、ストレージ、処理、可視化、アラートの完全なソリューションを提供しています.最初はSoundCloud社が開発しました.2012年のオープンソース以来、コミュニティのメンバーは増加しています.現在のPrometheusはKubernetesに続いて2番目にCNCF財団に正式に加入するプロジェクトに発展している.
Prometheusの特徴は?
  • 多次元データモデル(時間系列に基づくk/vキー値対).
  • 柔軟なクエリーおよび集約文(PromQL).
  • は分散型ストレージに依存せず、ノードが自治している.
  • HTTPのpullモードに基づいて時系列データを収集する.
  • はpushgateway(prometheusのオプションミドルウェア)を使用してpushモードを実現することができる.
  • は、動的サービス発見または静的構成を使用して収集されたターゲットマシンを構成することができる.
  • は、さまざまなグラフィックおよびダッシュボードをサポートします.

  • Prometheusは何を監視できますか?
  • k 8 s、docker、mysql、redis、es、consul、rabbitmq、zabbixなど
  • Prometheusアーキテクチャ図
    Prometheusインストールの導入
    Helmインストール
    Helmはコマンドラインの下にあるクライアントツールです.主にKubernetesアプリケーションChartの作成、パッケージング、パブリッシュ、ローカルおよびリモートのChartウェアハウスの作成および管理に使用されます.
    1
    2
    3
    4
    5
    6
    
    [root@syj ~]# wget https://storage.googleapis.com/kubernetes-helm/helm-v2.13.1-rc.2-linux-amd64.tar.gz
    [root@syj ~]# tar -zxvf helm-v2.14.0-rc.2-linux-amd64.tar.gz
    [root@syj ~]# cp linux-amd64/helm /usr/local/bin/
    [root@syj ~]# helm version
    Client: &version.Version{SemVer:"v2.13.1-rc.2", GitCommit:"05811b84a3f93603dd6c2fcfe57944dfa7ab7fd0", GitTreeState:"clean"}
    Error: could not find tiller
    

    Tillerサーバのインストール
    TillerはHelmのサービス・エンドであり、Kubernetesクラスタに配備されています.TillerはHelmの要求を受信し、Chartに従ってKubernetesの配置ファイル(HelmはReleaseと呼ぶ)を生成し、Kubernetes作成アプリケーションにコミットするために使用されます.Tillerはまた、Releaseのアップグレード、削除、ロールバックなどの一連の機能を提供しています.
    rbac-configを作成する.yaml
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    
    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: tiller
      namespace: kube-system
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    metadata:
      name: tiller
    roleRef:
      apiGroup: rbac.authorization.k8s.io
      kind: ClusterRole
      name: cluster-admin
    subjects:
      - kind: ServiceAccount
        name: tiller
        namespace: kube-system
    

    開始
    1
    2
    3
    
    [root@syj ~]# kubectl apply -f rbac-config.yaml 
    serviceaccount/tiller created
    clusterrolebinding.rbac.authorization.k8s.io/tiller created
    

    アリクラウドミラーを使用したインストール
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    
    [root@syj ~]# helm init --service-account tiller --upgrade -i registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.13.1 --stable-repo-url https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
    
    Creating /root/.helm
    Creating /root/.helm/repository
    Creating /root/.helm/repository/cache
    Creating /root/.helm/repository/local
    Creating /root/.helm/plugins
    Creating /root/.helm/starters
    Creating /root/.helm/cache/archive
    Creating /root/.helm/repository/repositories.yaml
    Adding stable repo with URL: https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
    Adding local repo with URL: http://127.0.0.1:8879/charts
    $HELM_HOME has been configured at /root/.helm.
    Tiller (the Helm server-side component) has been installed into your Kubernetes Cluster.
    Please note: by default, Tiller is deployed with an insecure 'allow unauthenticated users' policy.
    To prevent this, run `helm init` with the --tiller-tls-verify flag.
    For more information on securing your installation see: https://docs.helm.sh/using_helm/#securing-your-helm-installation
    Happy Helming!
    

    結果の表示
    1
    2
    3
    4
    5
    6
    7
    
    [root@syj ~]# helm version
    Client: &version.Version{SemVer:"v2.13.1", GitCommit:"05811b84a3f93603dd6c2fcfe57944dfa7ab7fd0", GitTreeState:"clean"}
    Server: &version.Version{SemVer:"v2.13.1", GitCommit:"05811b84a3f93603dd6c2fcfe57944dfa7ab7fd0", GitTreeState:"clean"}
    [root@syj ~]# helm repo list
    NAME    URL                                                   
    stable  https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
    local   http://127.0.0.1:8879/charts
    

    Prometheus Operatorの配備
    ネームスペースの作成
    1
    
    [root@syj ~]# kubectl create namespace monitoring
    

    Prometheus Operatorのダウンロード
    1
    
    [root@syj ~]# wget https://github.com/coreos/prometheus-operator/archive/release-0.29.zip
    

    ダウンロードした依存パッケージを解凍してprometheus-operatorと名前を変更し、cdこのディレクトリにprometheus関連コンテンツをインストールします.
    1
    2
    3
    
    helm install --name prometheus-operator --set rbacEnable=true --namespace=monitoring helm/prometheus-operator
    helm install --name prometheus --set serviceMonitorsSelector.app=prometheus --set ruleSelector.app=prometheus --namespace=monitoring helm/prometheus
    helm install --name alertmanager --namespace=monitoring helm/alertmanager
    

    検証#ケンショウ#
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    [root@syj ~]# kubectl get pod -n monitoring
    NAME                                   READY   STATUS    RESTARTS   AGE
    alertmanager-alertmanager-0            2/2     Running   0          58s
    prometheus-operator-545b59ffc9-6g7dg   1/1     Running   0          6m32s
    prometheus-prometheus-0                3/3     Running   1          3m31s
    [root@syj ~]# kubectl get svc -n monitoring
    NAME                    TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)             AGE
    alertmanager            ClusterIP   10.98.237.7              9093/TCP            87s
    alertmanager-operated   ClusterIP   None                     9093/TCP,6783/TCP   87s
    prometheus              ClusterIP   10.104.185.104           9090/TCP            4m
    prometheus-operated     ClusterIP   None                     9090/TCP            4m
    

    kube-prometheusのインストール
    1
    2
    3
    4
    
    [root@syj ~]# mkdir -p helm/kube-prometheus/charts
    [root@syj ~]# helm package -d helm/kube-prometheus/charts helm/alertmanager helm/grafana helm/prometheus  helm/exporter-kube-dns \
    > helm/exporter-kube-scheduler helm/exporter-kubelets helm/exporter-node helm/exporter-kube-controller-manager \
    > helm/exporter-kube-etcd helm/exporter-kube-state helm/exporter-coredns helm/exporter-kubernetes
    

    検証#ケンショウ#
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    [root@syj ~]# kubectl get svc -n monitoring
    NAME                                  TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)             AGE
    alertmanager                          ClusterIP   10.98.237.7              9093/TCP            34m
    alertmanager-operated                 ClusterIP   None                     9093/TCP,6783/TCP   34m
    kube-prometheus                       ClusterIP   10.101.249.82            9090/TCP            29s
    kube-prometheus-alertmanager          ClusterIP   10.100.29.63             9093/TCP            29s
    kube-prometheus-exporter-kube-state   ClusterIP   10.98.91.146             80/TCP              29s
    kube-prometheus-exporter-node         ClusterIP   10.98.34.11              9100/TCP            29s
    kube-prometheus-grafana               ClusterIP   10.108.208.247           80/TCP              29s
    prometheus                            ClusterIP   10.104.185.104           9090/TCP            36m
    prometheus-operated                   ClusterIP   None                     9090/TCP            36m
    

    grafanaのサービスタイプをNodePortに変更
    1
    
    kubectl patch svc kube-prometheus-grafana -p '{"spec":{"type":"NodePort"}}' -n monitoring
    

    grafanaのデフォルトポート31106にアクセスします.
    1
    
    http://ip:31106
    

    インストール手順のリファレンス:https://blog.csdn.net/wangzan18/article/details/85270816
    grafanaの各種テンプレートは参考になりますhttps://grafana.com/dashboards
     
    おすすめ読書
     
  • SpringCloudラーニングシリーズまとめ
  • どうして一線の大工場の面接は必ずredisに聞いて、何か聞きたいことがありますか?
  • マルチスレッド面接に必要な基礎知識の要約
  • Java集合ソース分析要約-JDK 1.8
  • Linux常用コマンド速報-要約編
  • JVMシリーズ記事要約
  •  
    ブログのすべての文章は公衆番号《Java学習録》に初発して転載してコードをスキャンして公衆番号に注目して2000 GJava学習資源を受け取ることができます