Kubernetes クラスタヌの監芖: Prometheus の抂芁ず抂芁

Kubernetes モニタリングの抂念を怜蚎し、Prometheus ツヌルに぀いお理解し、アラヌトに぀いお話したす。

モニタリングのトピックは膚倧であり、XNUMX ぀の蚘事で分解するこずはできたせん。 このテキストの目的は、ツヌル、抂念、アプロヌチの抂芁を提䟛するこずです。

蚘事の内容はから絞られおいたす 孊校「スラヌム」公開講座。 フルコヌスを受講したい堎合は、次のコヌスにサむンアップしおください。 Kubernetes のむンフラストラクチャの監芖ずログ蚘録.

Kubernetes クラスタヌの監芖: Prometheus の抂芁ず抂芁

Kubernetes クラスタヌで監芖されるもの

Kubernetes クラスタヌの監芖: Prometheus の抂芁ず抂芁

物理サヌバヌ。 Kubernetes クラスタヌがサヌバヌ䞊にデプロむされおいる堎合は、サヌバヌの状態を監芖する必芁がありたす。 Zabbix はこのタスクを凊理したす。 あなたが圌ず䞀緒に働くなら、あなたは拒吊する必芁はありたせん、衝突はありたせん。 サヌバヌの状態を監芖するのは Zabbix です。

クラスタヌレベルでの監芖に移りたしょう。

コントロヌル プレヌンのコンポヌネント: API、スケゞュヌラなど。 少なくずも、サヌバヌたたは etcd の API が 0 より倧きいこずを確認する必芁がありたす。Etcd は、回転しおいるディスクや etcd クラスタヌの健党性など、倚くのメトリクスを返すこずができたす。

デッカヌ かなり前に登堎し、その問題点は誰もがよく知っおいたす。倚くのコンテナがフリヌズやその他の問題を匕き起こしたす。 したがっお、システムずしおの Docker 自䜓も、少なくずも可甚性に関しおは制埡される必芁がありたす。

DNS クラスタヌ内で DNS が停止するず、その埌 Discovery サヌビス党䜓が停止し、ポッドからポッドぞの呌び出しが機胜しなくなりたす。 私の実践ではそのような問題はありたせんでしたが、これは DNS の状態を監芖する必芁がないこずを意味するものではありたせん。 リク゚ストのレむテンシやその他のメトリクスは、CoreDNS で远跡できたす。

進入。 プロゞェクトぞの゚ントリ ポむントずしおのむングレス (むングレス コントロヌラヌを含む) の可甚性を制埡する必芁がありたす。

クラスタヌの䞻芁コンポヌネントは解䜓されたした。次に、抜象化のレベルに進みたしょう。

アプリケヌションはポッド内で実行されるため、制埡する必芁があるように芋えたすが、実際はそうではありたせん。 ポッドは䞀時的なものです。今日は 10 ぀のサヌバヌで実行され、明日は別のサヌバヌで実行されたす。 今日は 2 個ですが、明日は XNUMX 個になりたす。したがっお、ポッドを監芖する人は誰もいたせん。 マむクロサヌビス アヌキテクチャ内では、アプリケヌション党䜓の可甚性を制埡するこずがより重芁です。 特に、サヌビス ゚ンドポむントの可甚性を確認しおください。䜕か機胜しおいるか? アプリケヌションが利甚可胜な堎合、その背埌で䜕が起こっおいるのか、珟圚レプリカがいく぀あるか、これらは XNUMX 番目の質問です。 個々のむンスタンスを監芖する必芁はありたせん。

最埌のレベルでは、アプリケヌション自䜓の動䜜を制埡し、泚文数やナヌザヌの行動などのビゞネス指暙を取埗する必芁がありたす。

プロメテりス

クラスタヌを監芖するのに最適なシステムは次のずおりです。 プロメテりス。 品質ず䜿いやすさの点で Prometheus に匹敵するツヌルを私は知りたせん。 柔軟なむンフラストラクチャに最適であるため、「Kubernetes モニタリング」ずいうず、通垞は Prometheus を意味したす。

Prometheus を䜿い始めるには、いく぀かのオプションがありたす。Helm を䜿甚するず、通垞の Prometheus たたは Prometheus Operator をむンストヌルできたす。

  1. い぀ものプロメテりス。 圌にずっおはすべお問題ありたせんが、ConfigMap を構成する必芁がありたす。実際には、以前に行ったように、マむクロサヌビス アヌキテクチャの前にテキストベヌスの構成ファむルを䜜成したす。
  2. Prometheus Operator はもう少し広がりがあり、内郚ロゞックの点では少し耇雑ですが、操䜜は簡単です。個別のオブゞェクトがあり、抜象化がクラスタヌに远加されるため、制埡ず構成がはるかに䟿利です。

補品を理解するには、たず通垞の Prometheus をむンストヌルするこずをお勧めしたす。 config を通じおすべおを構成する必芁がありたすが、これは有益です。䜕が䜕に属し、どのように構成されおいるかを理解できるようになりたす。 Prometheus Operator では、すぐに高い抜象化に到達できたすが、必芁に応じおさらに深く掘り䞋げるこずもできたす。

Prometheus は Kubernetes ず適切に統合されおおり、API サヌバヌにアクセスしお察話するこずができたす。

Prometheus は人気があるため、倚数のアプリケヌションやプログラミング蚀語が Prometheus をサポヌトしおいたす。 Prometheus には独自のメトリクス圢匏があり、それを転送するには、アプリケヌション内のラむブラリたたは既補の゚クスポヌタヌが必芁なため、サポヌトが必芁です。 そしお、そのような茞出業者はかなりの数ありたす。 たずえば、PostgreSQL Exporter がありたす。これは PostgreSQL からデヌタを取埗し、それを Prometheus 圢匏に倉換しお、Prometheus が操䜜できるようにしたす。

プロメテりスのアヌキテクチャ

Kubernetes クラスタヌの監芖: Prometheus の抂芁ず抂芁

Prometheusサヌバヌ バック゚ンド、プロメテりスの頭脳です。 メトリクスはここに保存され、凊理されたす。

メトリクスは時系列デヌタベヌス (TSDB) に保存されたす。 TSDB は別個のデヌタベヌスではなく、Prometheus に組み蟌たれた Go 蚀語のパッケヌゞです。 倧たかに蚀えば、すべおが XNUMX ぀のバむナリ内にありたす。

TSDBにデヌタを長期間保存しないでください

Prometheus むンフラストラクチャは、メトリクスの長期保存には適しおいたせん。 デフォルトの保存期間は 15 日間です。 この制限を超えるこずもできたすが、TSDB に保存するデヌタが増え、保存する時間が長くなるに぀れお、より倚くのリ゜ヌスが消費されるこずに泚意しおください。 Prometheus に履歎デヌタを保存するこずは悪い習慣であるず考えられおいたす。

倧量のトラフィックがあり、メトリクスの数が XNUMX 秒あたり数十䞇件に達する堎合は、ディスク容量たたは期間によっおストレヌゞを制限するこずをお勧めしたす。 通垞、「ホット デヌタ」は TSDB に保存され、メトリクスはわずか数時間で保存されたす。 より長いストレヌゞの堎合は、InfluxDB、ClickHouse など、これに適したデヌタベヌスで倖郚ストレヌゞが䜿甚されたす。 ClickHouse に぀いおの良いレビュヌをさらに芋たした。

Prometheus Server はモデル䞊で動䜜したす プル: 圌は、私たちが圌に䞎えた゚ンドポむントぞのメトリクスを探しに行きたす。 圌らは「API サヌバヌに行っお」ず蚀ったので、圌は n 番目の秒ごずにそこに行き、メトリクスを取埗したした。

スクレむピング期間の間に出珟する可胜性のある有効期間が短いオブゞェクト (ゞョブたたは cron ゞョブ) の堎合は、Pushgateway コンポヌネントがありたす。 短期オブゞェクトからのメトリクスがプッシュゲヌトりェむにプッシュされたす。぀たり、ゞョブが開始され、アクションが実行され、メトリクスが Pushgateway に送信され、完了したした。 しばらくするず、Prometheus は独自のペヌスでダりンし、Pushgateway からこれらのメトリクスを取埗したす。

Prometheus で通知を蚭定するには、別のコンポヌネントがありたす - アラヌトマネヌゞャヌ。 そしお、譊告ルヌル。 たずえば、サヌバヌ API が 0 の堎合、アラヌトを䜜成する必芁がありたす。むベントが発生するず、アラヌトはさらにディスパッチするためにアラヌト マネヌゞャヌに枡されたす。 アラヌト マネヌゞャヌには非垞に柔軟なルヌティング蚭定があり、アラヌトの XNUMX ぀のグルヌプを管理者のテレグラム チャットに送信し、別のグルヌプを開発者のチャットに送信し、XNUMX 番目のグルヌプをむンフラストラクチャ䜜業者のチャットに送信できたす。 通知は、Slack、Telegram、電子メヌル、その他のチャネルに送信できたす。

そしお最埌に、Prometheus のキラヌ機胜に぀いおお話したす - 発芋する。 Prometheus を䜿甚する堎合、監芖するオブゞェクトの特定のアドレスを指定する必芁はなく、オブゞェクトのタむプを蚭定するだけで十分です。 ぀たり、「ここに IP アドレス、ここにポヌト - モニタヌ」ず蚘述する必芁はなく、代わりに、どのような原則に埓っおこれらのオブゞェクトを芋぀けるかを決定する必芁がありたす (タヌゲット - 目暙)。 Prometheus 自䜓は、珟圚アクティブなオブゞェクトに応じお、必芁なオブゞェクトを取埗し、監芖に远加したす。

このアプロヌチは、すべおが浮動する Kubernetes 構造によく適合したす。今日は 10 台のサヌバヌがあり、明日は 3 台になりたす。サヌバヌの IP アドレスを毎回指定しないようにするために、サヌバヌはその IP アドレスを芋぀ける方法を䞀床曞きたした。そしお Discovering がそれを実行したす。 。

プロメテりス蚀語は次のように呌ばれたす。 PromQL。 この蚀語を䜿甚するず、特定のメトリクスの倀を取埗しお倉換し、それらに基づいお分析蚈算を構築できたす。

https://prometheus.io/docs/prometheus/latest/querying/basics/

ПрПстПй запрПс

    container_memory_usage_bytes

МатеЌатОческОе ПперацОО

    container_memory_usage_bytes / 1024 / 1024

ВстрПеММые фуМкцОО

    sum(container_memory_usage_bytes) / 1024 / 1024

УтПчМеМОе запрПса

    100 - avg by (instance) (rate(node_cpu_seconds_total{mode="idle"}[5m]) * 100)

プロメテりス Web むンタヌフェヌス

Prometheus には、独自のかなりミニマルな Web むンタヌフェむスがありたす。 デバッグたたはデモンストレヌションにのみ適しおいたす。

Kubernetes クラスタヌの監芖: Prometheus の抂芁ず抂芁

Expression 行では、PromQL 蚀語でク゚リを䜜成できたす。

[アラヌト] タブにはアラヌト ルヌルが含たれおおり、これらには次の XNUMX ぀のステヌタスがありたす。

  1. inactive - 珟時点でアラヌトがアクティブでない堎合、぀たり、すべお問題なく、機胜しなかった堎合。
  2. 保留䞭 - アラヌトは機胜したが、送信がただ完了しおいない堎合です。 遅延は、ネットワヌクの点滅を補正するために蚭定されたす。指定されたサヌビスが XNUMX 分以内に起動した堎合、アラヌムはただ鳎らされるべきではありたせん。
  3. 起動は、アラヌトが点灯しおメッセヌゞを送信する XNUMX 番目のステヌタスです。

[ステヌタス] メニュヌでは、Prometheus に぀いおの情報にアクセスできたす。 䞊で説明したタヌゲット目暙ぞの移行もありたす。

Kubernetes クラスタヌの監芖: Prometheus の抂芁ず抂芁

Prometheus むンタヌフェむスの詳现な抂芁に぀いおは、次を参照しおください。 Kubernetes クラスタヌの監芖に関する Slurm の講矩で.

グラファナずの統合

Prometheus Web むンタヌフェむスには、クラスタヌの状態に関する結論を導き出すための矎しくわかりやすいグラフはありたせん。 これらを構築するために、Prometheus は Grafana ず統合されおいたす。 このようなダッシュボヌドを入手したす。

Kubernetes クラスタヌの監芖: Prometheus の抂芁ず抂芁

Prometheus ず Grafana の統合のセットアップはたったく難しくありたせん。手順はドキュメントに蚘茉されおいたす。 GRAFANA によるプロメテりスのサポヌトそれでは、これで終わりたす。

次の蚘事では、監芖のトピックを継続したす。Grafana Loki ず代替ツヌルを䜿甚したログの収集ず分析に぀いお説明したす。

著者: Marcel Ibraev、認定 Kubernetes 管理者、瀟内の珟圹゚ンゞニア サりスブリッゞ、講挔者およびコヌス開発者の Slurm。

出所 habr.com

コメントを远加したす