何千ものサービスとアプリケーションが複数のインフラストラクチャに展開されている世界では、高可用性環境での監視は、あらゆる開発プロセスに不可欠な部分になっています。 この記事では、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、クラウドネイティブをよりスムーズに実装するためのコンテナクラウド製品ファミリーをリリース
6月25日、筆者は「301リダイレクトを使用して404エラーをウェブサイトの外部リンクに変換する方法...
香港連邦データセンターの locvps の VPS が 30% オフ、生涯割引で販売されており、CN...
2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っています中国のブラ...
日常生活では、生産サプライチェーンと電子商取引サプライチェーンについて最もよく耳にします。同様に、巨...
ロシア系アメリカ人のフィル・リビン氏は、初めての中国訪問中に「包囲」された。 5月のGMICカンファ...
月給5,000~50,000のこれらのプロジェクトはあなたの将来です秋は天気が晴れて涼しいので、高い...
ウェブマスターは、ウェブサイトのページに対する検索エンジンのクロール メカニズムを詳細に研究する必要...
Luobo Dataは香港を拠点に運営している会社であると主張しています。主に香港国際回線(100M...
colocrossing.com のサーバープロモーションに関する公式情報を見ることはまれです。通常...
最近、権威ある情報機関IDCは「中国ビデオクラウド市場追跡(2020年下半期)」レポートを発表しまし...
最近、56.comのゼネラルマネージャーである張娟氏は、テンセントの技術記者との会話の中で、「動画サ...
ショートビデオ、セルフメディア、インフルエンサーのためのワンストップサービス新しいメディアマーケティ...
中国の検索市場では百度が唯一の支配的プレーヤーであるのに、なぜ360は検索市場に参入したいのでしょう...
Baidu検索エンジンは今年、頻繁にアルゴリズムを更新しました。インターネットの健全な発展を促進する...
かつて openvz が人気だった頃、securedspeed は優れた評判と技術で低価格 VPS ...