ry's Tech blog

Cloud Native技術などについて書いていきます。

Kubenews #44

2021-01-21

How to Monitor Endpoints in Kubernetes using Blackbox Exporter (click here to source)

WhiteBox vs BlackBox monitoring

ホワイトボックスの監視とは、アプリケーションログ、ハンドラーからのメトリックなど、システムの内部を監視することです。

ブラックボックスの監視には、サーバーのダウン、ページが機能しない、サイトのパフォーマンスの低下など、ユーザーに影響を与える外部からの動作の監視が含まれます。

What is Blackbox Exporter?

Blackbox Exporterは、HTTPS、HTTP、TCPDNS、ICMPなどのエンドポイントをプローブするために使用されます。

エンドポイントを定義した後、BlackboxExporterはGrafanaなどのツールを使用して視覚化できるメトリックを生成します。

Install

$ helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
$ helm repo update
$ helm install prometheus-blackbox prometheus-community/prometheus-blackbox-exporter -f values.yaml

Metrics

以下のようなメトリクスが取得できます。

メトリック名 関数
probe_duration_seconds プローブが完了するまでにかかった時間を秒単位で返します
probe_http_status_code 応答HTTPステータスコード
probe_http_version プローブ応答のHTTPのバージョンを返します
probe_success プローブが成功したかどうかを表示します
probe_dns_lookup_time_seconds プローブDNSルックアップにかかった時間を秒単位で返します
probe_ip_protocol プローブIPプロトコルがIP4またはIP6のどちらであるかを指定します
probe_ssl_earliest_cert_expiryメトリック unixtimeで最も早いSSL証明書の有効期限を返します
probe_tls_version_info 使用されるTLSバージョンが含まれています
probe_failed_due_to_regex 正規表現が原因でプローブが失敗したかどうかを示します
probe_http_content_length HTTPコンテンツ応答の長さ
probe_http_version プローブ応答のHTTPのバージョンを返します

用途の例としては以下などがある。

  • probe_http_duration_secondsメトリックを使用して応答時間を測定することで、Webサイトのパフォーマンスを監視し、サービスAとBの遅延の原因となった外部ターゲットの急増を探すことができる

  • probe_ssl_earliest_cert_expiryメトリックを使用して、ドメイン証明書の有効期限がいつ切れるのかを監視する

  • probe_http_status_codeメトリックを使用して、/ healthエンドポイントでポッドをプローブする

Continuous Profiling in Kubernetes Using Pyroscope (click here to source)

What is profiling?

プロファイリングは、メモリ、プログラムの時間計算量、または関数呼び出しの頻度と期間を測定するプログラム分析です。

プロファイリングツールを使用してアプリケーションのコードを調べると、パフォーマンスのボトルネックを見つけて修正するのに役立ちます。

Continuous profiling

比較について書いてくれた記事もある。

Pyroscope, datadog, google cloud profilerの比較

Pyroscopeは、データの保存とクエリの両方を可能な限り効率的に行うためにデータをプロファイリングするために特別に構築されたストレージエンジンの構築に重点を置いています。

エージェントサーバーモデルを使用して、アプリケーションからPyroscopeサーバーにプロファイルを送信します。

Pyroscopeは言語固有のプロファイラーとeBPFプロファイリングの両方をサポートしています。

一方、Parcaは少し異なるアプローチを取り、現状はC、C ++、Goなどのコンパイル言語に対してのみeBPFを用いてプロファイリングする。

How to install Pyroscope?

$ helm repo add pyroscope-io https://pyroscope-io.github.io/helm-chart

$ helm install pyroscope pyroscope-io/pyroscope --set service.type=NodePort

そのほか、「Integrating Google microservices demo with Pyroscope」というデモについても説明があるので、ぜひ試してみてください。

Securing a Kubernetes pod with Regula and Open Policy Agent (click here to source)

regulaについて

Regulaは、TerraformファイルとCloudFormationファイルのセキュリティとコンプライアンス違反をチェックできるだけでなく、KubernetesYAMLマニフェストもチェックできるようになった。