ご注意 perev。 :記事の著者であるGiancarlo Rubioは、ITリソースLINKIT (オランダ)のDevOpsエンジニアで、オンラインリソースITNEXTを通じて、Prometheusオペレーターを使用してKubernetesのPrometheusでモニタリングをセットアップするための簡潔なレシピを共有しています。 この指示は、プロジェクトがベアメタルからクラウドインフラストラクチャに移行した後、プロアクティブな監視システムの選択と実装に関する最近の経験の結果として登場しました。 このレシピは、理論上(記事の前半)および実用的(後半)の知り合いに最適です。 一部のチームでは、URLが修正されましたが、これは元の素材では、おそらく中型エンジンによって変換されていました。 K8sクラスターモニタリングは、チームの実装に役立ちます。
- 積極的な監視
- クラスターの可視性を表示し、その雇用/パフォーマンスを計画します。
- トリガーとアラート(アラート)のトリガーに関する通知、
- メトリックのあるパネル。
少し前、CoreOSが
Prometheus Operatorを立ち上げました。これは私のニーズに完全に一致し、初期構成全体を簡素化しました。
Kubernetesオペレーター
「演算子、私たちはソフトウェアの新しいクラスを呼び出します。 オペレーターは、Kubernetes APIを拡張し、複雑なステートフルアプリケーションのインスタンスを作成および構成し、Kubernetesユーザーに代わってそれらを管理する機能を備えたアプリケーション固有のコントローラーです。 オペレーターはKubernetesのリソースとコントローラーの概念に基づいており、特定の分野またはアプリケーション固有の知識を追加して、基本的なタスクを自動化します。
-CoreOSのブランドンフィリップス。
Kubernetesのオペレーターは2016年
に導入され、アプリケーションの展開と構成を抽象化する機能を提供します。 私自身は、
elasticsearch-operatorおよび
prometheus-operatorと積極的に連携することができました。 Kubernetesの演算子の詳細な説明はこの記事の目的には含まれていません。興味のある方は
ここで他の利用可能な演算子のリストを読むことをお勧めし
ます 。
ご注意 perev。 :Kubernetesの演算子と、ステートフルアプリケーションを操作するための使用について、 この記事で詳しく説明しました 。プロメテウス
Prometheusは、
Google Borg Monitorに触発された、監視と通知(アラート)用のオープンソースユーティリティのセットです。 その開発はSoundCloudで始まり、その後CNCF基金に移されました。
( translに注意してください 。 この記事では、最近プロメテウスの歴史について書いています 。)プロメテウスは、
多くのプログラミング
言語のアプリケーションをサポートしています。 インフラストラクチャとアプリケーションを監視するための優れたソリューションであり、有名なアプリケーション(PostgreSQL、MySQL、AWS Cloudwatchなど、K8など)を
輸出業者として接続するための既製の統合も提供します。
プロメテウス演算子
「プロメテウスオペレーターの使命は、設定可能性を維持し、Kubernetesにネイティブ形式で設定しながら、Kubernetes上でPrometheusをできるだけ簡単に起動できるようにすることです。」
-プロメテウスオペレーターによる入門ガイド 。
Prometheusオペレーターは、K8でのサービスと展開の簡単な監視を提供し、Prometheus、Alertmanager、およびGrafanaの設定を管理します
(詳細については以下を参照) 。
どのように機能しますか?
アーキテクチャプロメテウスオペレーター。 ソース: GitHubアプリケーションの新しいバージョンをデプロイすると、K8sは新しいバージョンを作成し、このバージョンが準備できたら古いバージョンを破棄します。 Prometheus
は Kubernetes APIを常に
監視し、変更を検出すると、サービスの変更(サブ)に基づいて新しいPrometheus構成を作成します。
サービスモニター
Prometheusオペレーターは、
ServiceMonitorと呼ばれる
カスタムリソース定義 (CRD)を使用して構成を抽象化します。 以下の例では、ServiceMonitorを使用してnginxで監視する方法を確認できます。 ServiceMonitorは、
matchLabelsセレクターを使用してnginxで
underを選択します。 Prometheusオペレーターは、ラベルセレクターに一致するポッドを探し、Prometheusがメトリックを収集するターゲットを作成します。
apiVersion: monitoring.coreos.com/v1 kind: ServiceMonitor metadata: name: nginx spec: selector: matchLabels: app: nginx namespaceSelector: matchNames: - default endpoints: - port: web interval: 30s
私たちは自分でやってみます
次の手順を既にお持ちの場合、15分以内に完了できます。
- Kubernetesクラスターを起動して動作させます。
- Helmがインストールされ、動作しています。
helm list
。
設置
1.名前空間を作成し、prometheus-operator Gitリポジトリのクローンを作成します。
$ kubectl create ns monitoring $ git clone https://github.com/coreos/prometheus-operator.git $ cd prometheus-operator
2. prometheus-operatorデプロイメントをインストールします。
$ helm install --name prometheus-operator \ --set rbacEnable=true --namespace=monitoring helm/prometheus-operator
3. PrometheusとAlertmanagerの仕様、およびGrafanaの展開をインストールします。
$ helm install --name prometheus --set serviceMonitorsSelector.app=prometheus \ --set ruleSelector.app=prometheus --namespace=monitoring helm/prometheus $ helm install --name alertmanager --namespace=monitoring helm/alertmanager $ helm install --name grafana --namespace=monitoring helm/grafana
4. kube
-prometheusをインストールして、事前定義されたk8sエクスポーターとserviceMonitorをダウンロードします。
$ helm install --name kube-prometheus --namespace=monitoring helm/kube-prometheus
すべてがうまくいった場合は、このコマンドを実行してアプリケーションをリストできます。
$ kubectl get pods -n monitoring NAME READY STATUS RESTARTS AGE alertmanager-alertmanager-0 2/2 Running 0 3m grafana-grafana-3066287131-brj8n 2/2 Running 0 4m kube-prometheus-exporter-kube-state-2696859725-s8m56 2/2 Running 0 3m kube-prometheus-exporter-node-029w0 1/1 Running 0 3m kube-prometheus-exporter-node-n3txz 1/1 Running 0 3m kube-prometheus-exporter-node-q2rk3 1/1 Running 0 3m prometheus-operator-prometheus-operator-514889780-qm3fp 1/1 Running 0 4m prometheus-prometheus-0 2/2 Running 0 3m
プロメテウス
Prometheusサーバーをコンピューターに転送して、
http://localhost:9090
からパネルにアクセスします。
$ kubectl port-forward -n monitoring prometheus-prometheus-0 9090

Prometheusパネルでは、メトリックの照会、事前定義された通知およびPrometheusターゲットの表示ができます。
注 :ターゲットが使用不可エラーを返す場合は、セキュリティグループとファイアウォールルールを確認してください。 上記のスクリーンショットに示されている目標がない場合は、K8の囲炉裏ラベルを確認してください。 クラスターをデプロイするために使用されるユーティリティがインストールしない場合があります。
注意事項(No. 2) :プロメテウス演算子プロジェクトでは、ヘルムチャートでのK8の標準通知のパッキングに取り組んでいます。 ただし、それらをロードするには、以下の一連のコマンドを実行する必要があります(将来、この必要性はなくなります)。
$ sed -ie 's/role: prometheus-rulefiles/app: prometheus/g' contrib/kube-prometheus/manifests/prometheus/prometheus-k8s-rules.yaml $ sed -ie 's/prometheus: k8s/prometheus: prometheus/g' contrib/kube-prometheus/manifests/prometheus/prometheus-k8s-rules.yaml $ sed -ie 's/job=\"kube-controller-manager/job=\"kube-prometheus-exporter-kube-controller-manager/g' contrib/kube-prometheus/manifests/prometheus/prometheus-k8s-rules.yaml $ sed -ie 's/job=\"apiserver/job=\"kube-prometheus-exporter-kube-api/g' contrib/kube-prometheus/manifests/prometheus/prometheus-k8s-rules.yaml $ sed -ie 's/job=\"kube-scheduler/job=\"kube-prometheus-exporter-kube-scheduler/g' contrib/kube-prometheus/manifests/prometheus/prometheus-k8s-rules.yaml $ sed -ie 's/job=\"node-exporter/job=\"kube-prometheus-exporter-node/g' contrib/kube-prometheus/manifests/prometheus/prometheus-k8s-rules.yaml $ kubectl apply -n monitoring -f contrib/kube-prometheus/manifests/prometheus/prometheus-k8s-rules.yaml
グラファナ
デバッグのために、Prometheusには
式ブラウザがあります。 美しいダッシュボードを取得するには、Prometheusでリクエストを処理する機能が組み込まれたGrafanaを使用します。
注 :prometheus-operatorプロジェクトでは、おそらく新しい
CRDを使用して、Grafanaの
単純なデプロイメントの作成に取り組んでいます。 現時点では、構成するには、次のコマンドを実行する必要があります(将来、この必要性はなくなります)。
$ sed -ie 's/grafana-dashboards-0/grafana-grafana/g' https://raw.githubusercontent.com/coreos/prometheus-operator/master/contrib/kube-prometheus/manifests/grafana/grafana-dashboards.yaml $ sed -ie 's/prometheus-k8s.monitoring/prometheus-prometheus.monitoring/g' https://raw.githubusercontent.com/coreos/prometheus-operator/master/contrib/kube-prometheus/manifests/grafana/grafana-dashboards.yaml $ kubectl apply -n monitoring -f https://raw.githubusercontent.com/coreos/prometheus-operator/master/contrib/kube-prometheus/manifests/grafana/grafana-dashboards.yaml $ kubectl port-forward -n monitoring $(kubectl get pods --selector=app=grafana-grafana -n monitoring --output=jsonpath={.items..metadata.name}) 3000
Grafanaがデータをロードするまで数秒待ってから、
http://localhost:3000
をブラウザーで開き、素晴らしいグラフィックを学びましょう!
Grafana:Kubernetes用の手頃な価格のダッシュボード
Grafana:Kubernetesの雇用/パフォーマンス計画チャートアラートマネージャー
Alertmanagerは、Prometheusサーバーなどのクライアントアプリケーションによって送信される通知を提供します。 重複の除去、グループ化、電子メール、PagerDuty、OpsGenieなどの正しい受信者サービスへの送信を提供します。 また、彼は
沈黙を担当し
、通知を
抑制します。
上記のコマンドで既にAlertmanagerをインストールしました。サービスポートをコンピューターに転送するために残ります。その後、Webブラウザーで
http://localhost:9093
を開くことができます。
$ kubectl port-forward -n monitoring alertmanager-alertmanager-0 9093
完了
すべてのK8sコンポーネントが監視に追加されます。 プロメテウス演算子がどのように機能するかをよりよく理解するために、YouTubeで
このビデオを見ることもお勧めします。
翻訳者からのPS
著者は、Alertmanagerを使用した通知の設定に関する次の記事でも伝えることを約束します。 彼女の姿は
ここで期待でき
ます 。
ブログもご覧ください。