何千ものサービスとアプリケーションが複数のインフラストラクチャに展開されている世界では、高可用性環境での監視は、あらゆる開発プロセスに不可欠な部分になっています。 この記事では、Thanos を使用して EKS マルチクラスター アーキテクチャ上の複数のクラスターの Prometheus メトリクスを保存する際の思考プロセスと学んだ教訓について説明します。 導入HiredScore の製品と顧客基盤が拡大するにつれ、当社にとって最も大きなハードルの 1 つであり、おそらく監視インフラストラクチャの最大の部分である Kubernetes への移行と急速な導入が始まりました。当社は Prometheus / Grafana スタックを使用した監視の経験があり、実現可能でコスト効率の高いデータ保持機能を備えた、より優れた高可用性と回復力のあるインフラストラクチャを構築したいと考えていました。また、これにより HiredScore の急成長に備えることができることもわかりました。 CNCF は、これらの監視の問題点に対処し、高可用性、データ保持、コスト効率を備えた監視を可能にするさまざまなインフラストラクチャを推進しています。 必要とする
私たちは、Bitnami の Kube-Prometheus ソリューションと Thanos-io の Kube-Thanos ソリューションを選択しました。このソリューションは非常にうまく機能し、私たちのニーズをすべて満たしました。 プレイヤーたちを紹介します:
どのように機能しますか?図からわかるように、各 EKS クラスターには同じ名前空間内に 2 つの Prometheus ポッドがあり、クラスターの動作をスクレイピングして監視します。各 Prometheus ポッドは、最後の数時間を専用の PVC に保存し、指定された保持時間が経過すると、データは Thanos サイドカーを介して S3 バケットに送信されます。この方法により、少量のローカル ストレージにかかるコストを節約し、他のすべてのストレージを 1 か所 (S3) に集中させることができます。 k8s クラスターから Grafana データを表示するために、thanos-sidecar コンテナー (デフォルトではポート 10901 で公開) に接続された GRPC を使用して各クラスターからすべてのリアルタイム (過去 2 時間) データを直接収集し、S3 バケット (構成ストレージ) からリモート データを取得する専用クラスターを作成しました。 実装の詳細を見てみましょう。
それは素晴らしいですね。では、実際にどのように行うのでしょうか? フェーズ1ここでは、監視する各クラスターに Prometheus と Thanos サイドカーをデプロイして構成する方法に焦点を当てます。各クラスターに、monitoring という名前空間を作成します。 kubectl ns モニタリングを作成する Prometheus が日付を保持できるようにストレージクラスを作成する apiバージョン: ストレージ。 k8s 。 io / v1 kubectl apply -f prometheus - ストレージクラス。 yaml - n モニタリング kube-prometheus をインストールします。 helm リポジトリにbitnami を追加しますhttps://charts.bitnami.com/bitnami 設定する関連値をローカル フォルダーにコピーします。値に適用する必要があるいくつかの変更: ステップ 1: Prometheus を高可用性にする: Prometheus レプリカ数を設定します (必要な Prometheus レプリカの数 (2 以上))
## @ パラメータprometheus 。 replicaCount 必要なPrometheus レプリカの数 ステップ 2: ポッド リソース制限を定義する Prometheus リソース - Prometheus がすべてのサービス リソースを消費しないようにするためにこれを定義します。 リソース: ステップ3: Thanosサイドカーの作成を有効にする サノス: ステップ 4: Thanos サイドカー サービスのタイプを ClusterIP から LoadBalancer に変更します。これにより、AWS クラシック ロード バランサー エンドポイントが作成され、GRPC ポート (10901) でサイドカーが公開されます。その後、このエンドポイントを使用して、route53 経由で DNS 名 thanos-prometheus-(cluster_name) にルーティングできます。独自のクラスターで Thanos エンドポイント prometheus.thanos.service を公開します。 https://github.com/bitnami/charts/blob/46afe376ae87a5af32504bc230a25d9c7e4522e2/bitnami/kube-prometheus/values.yaml#L1034 サービス: CLB を作成したら、それを kube-thanos マニフェストに実装する必要があります。これについては、フェーズ 2 で後ほど説明します。 ステップ 5: 圧縮を無効にして保持を定義する - これは、Thanos サイドカー経由でデータをアップロードするための非常に重要なステップです。 https://prometheus.io/docs/prometheus/latest/storage/#operational-aspects Thanos サイドカーアップロードを使用するには、これら 2 つの値が --storage.tsdb.min-block-duration、--storage.tsdb.max-block-duration と等しくなければなりません。デフォルトでは 2 時間に設定されています。 Prometheus の推奨保持時間は、最小ブロック期間の 3 倍以上、つまり 6 時間です。追加の手順については、こちらをご覧ください: https://thanos.io/tip/components/sidecar.md/ 保持時間: 12 時間 ステップ 6: 構成キーを有効にする – オブジェクト ストレージ構成を有効にすると、S3 またはその他のサポートされている BlockDevice にデータを書き込むことができます。長期データの永続性を確保するため。 ## @ パラメータprometheus 。 サノス。 objectStorageConfig sideCar コンテナのobjectStorageConfig の Secret のマウントをサポートします。 ソースファイルthanos-storage-config.yamlはこの形式である必要がありますが、 タイプ: s3 現時点では、次のコマンドを使用してキーを作成するために使用できるのは単一の S3 バケット (ObjectStore) のみであることに注意してください。 kubectl -n モニタリングは、 ジェネリックのthanos -objstore -config --from -file = thanos というシークレットを作成します。 yaml = thanos - storage - config 。 ヤム ステップ 7: これで、関連するカスタマイズを使用して Helm チャートをインストール/アップグレードできます。 helm install kube - prometheus - f 値.yaml bitnami / kube - prometheus - n モニタリング または helm アップグレードkube - prometheus - f 値.yaml bitnami / kube - prometheus - n モニタリング ここまでの作業が完了したら、Thanos サイドカー コンテナを備えた実行中の Prometheus ポッドが作成され、一方ではスクレイピングされたデータが GRPC 経由でマニフェストに送信され、他方では同じサイドカーが (約 2 時間後に) データを S3 バケット (構成ストレージ) に送信しているはずです。おめでとう! フェーズIIメインの可観測性クラスターに Thanos をデプロイして構成する方法に焦点を当てます。前述したように、これは第 1 フェーズで展開したすべてのクラスターからすべてのデータを収集する役割を担います。 このために、kube-thanos マニフェストを使用します。私たちの目的には、クエリとストレージ部分のみを実装する必要があることがわかりました。 ステップ 1: kube-thanos をインストールしてカスタマイズします。メインの可観測性クラスターに thanos という名前空間を作成します。 kubectl ns サノスを作成 kube-thanos リポジトリをクローンしてマニフェスト フォルダーを使用するか、kube-thanos マニフェストを自分でコンパイルするかを選択できます。最後の方法では、リポジトリ全体をコピーする必要はなく、マニフェスト ファイルだけをコピーします。 ステップ 2: 最初のステージに合格すると、最初のステージの thanos-query-deployment.yaml と他のクラスター間の通信が処理されます。これを行うには、以下を追加する必要があります。 -- ストア= dnssrv + _grpc 。 _tcp 。 thanos - prometheus - < クラスター名> 。 < ドメイン名> : 10901 上記で公開および定義した Thanos サイドカー GRPC エンドポイントの args セクションを入力します (手順 4)。 -引数: ステップ 3: ここで、最初のステージからデータを送信するように構成した thanos-store と S3 バケット (ObjectStore) 間の通信を処理します。したがって、最初のステップで行ったように、注入された環境 thanos-store-statefulSet.yaml の部分で、Thanos ストレージ ポッドに要求される名前を構成する必要があります。 環境: その後、最初のステージから同じソース ファイルを再利用し、thanos-storethanos-storage-config.yaml のシークレットを作成できます。 kubectl -n thanos は、 汎用のthanos -objectstorage --from -file = thanos というシークレットを作成します。 yaml = thanos - storage - config 。 ヤム ステップ 4: インストール チェックリスト: kubectl apply -f マニフェスト-n thanos これでループは閉じられるはずです。 Thanos は、thanos-query デプロイメントを介して他のクラスターからリアルタイム データを受信し、thanos-store-statefulSet を介して S3 バケット (ObjectStore) からデータを永続化します。 結論はThanos は、Prometheus の可用性、耐久性、コスト効率を向上することで、Prometheus に対する考え方を変えました。多くの Kubernetes クラスターに Thanos と Prometheus を実装するには多大な労力が必要ですが、高可用性の Prometheus を確保することに関心がある場合は、その価値はあります。 |
<<: Boyun、クラウドネイティブをよりスムーズに実装するためのコンテナクラウド製品ファミリーをリリース
今日、大規模なハードウェアを購入したり維持したりする必要がないため、コスト、拡張性、効率性の利点を享...
序文: 1. トラフィック収益化とコンバージョン率の研究に注力しており、1~2年ごとにトラフィック収...
クラウドコンピューティングの発展の歴史は、仮想化技術の発展の歴史でもあります。過去 20 年間、クラ...
インターネットには、数え切れないほどのウェブマスターが夢を抱いていた時代がありました。地域性と専門性...
まずタイトルの質問に答えましょう: 間違いです!完全に間違っています!私たちが本当に必要としているの...
VMware (NYSE: VMW) は本日、2023 年度第 4 四半期および通年の業績を発表しま...
desivps は 年に設立され、検証可能な資格を有し、インドのムンバイに登録され、そこで事業を展開...
2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っています今日に至る...
SEO 最適化を行うには、最適化する価値のあるサイトが必要です。Web サイトのアーキテクチャは骨組...
私は長年 SEO に取り組んでおり、さまざまな規模の SEO フォーラムやウェブマスター フォーラム...
最近、国家ラジオ映画テレビ総局は TV ボックスとスマート TV にさまざまな制限を課しており、その...
Tudcloud はウェブサイトの改訂を完了し、現在香港 VPS の優待プロモーションを実施していま...
コードレビューは、ソフトウェア開発でよく使用される方法です。QA テストと比較すると、アーキテクチャ...
私は湖北省の山奥出身の負け犬です。武漢で5年間働き、インターネットの経験は4年、ウェブマスターとして...
[[431029]]分散データベース システムは論理的には完全なシステムとみなすことができ、ユーザー...