Status: Deprecated

This article is deprecated and no longer maintained.

Reason

The TOBS installer has been deprecated upstream.

See Instead

The official TOBS documentation.

序章

TOBS は、Observability Stackの略で、既存のKubernetesクラスターにインストールできる監視ツールとダッシュボードインターフェイスのパッケージ済みのディストリビューションです。 これには、Promlens、TimescaleDB、Alertmanagerなど、PrometheusとGrafanaをベースラインとする最も人気のあるオープンソースの可観測性ツールの多くが含まれています。 これらを組み合わせることで、サーバートラフィックを分析し、非常に大規模な展開で発生する可能性のある問題を特定するための、簡単で保守可能なソリューションが提供されます。

TOBSは、デプロイメントを構成および更新するために、標準のKubernetesヘルムチャートを利用します。 これは任意のKubernetesクラスターにインストールできますが、実行している場合はより効果的にデモンストレーションできます。 kubectl リモートノードではなくローカルマシンからクラスターを管理します。 DigitalOceanのManagedKubernetes は、デフォルトでこのような構成を提供します。

このチュートリアルでは、TOBSを既存のKubernetesクラスターにインストールし、そのコンポーネントダッシュボードを更新、構成、参照する方法を学習します。

前提条件

このチュートリアルに従うには、次のものが必要です。

ステップ1—Kubernetes構成を確認する

TOBSをインストールするには、最初に有効なKubernetes構成を設定する必要があります kubectl そこからワーカーノードにpingを実行できます。 を実行してこれをテストできます kubectl get nodes:

  1. kubectl get nodes

もしも kubectl はKubernetesクラスタに接続でき、期待どおりに稼働しています。このコマンドは、ノードのリストを返します。 Ready 状態:

Output
NAME STATUS ROLES AGE VERSION pool-uqv8a47h0-ul5a7 Ready <none> 22m v1.21.5 pool-uqv8a47h0-ul5am Ready <none> 21m v1.21.5 pool-uqv8a47h0-ul5aq Ready <none> 21m v1.21.5

これが成功した場合は、ステップ2に進むことができます。 そうでない場合は、問題がないか構成の詳細を確認する必要があります。

デフォルトでは、 kubectl でファイルを探します ~/.kube/config あなたの環境を理解するために。 このファイルが存在し、有効なYAML構文が含まれていることを確認するために、次のコマンドを実行できます。 head 最初の数行を表示するには、次のようにします。

  1. head ~/.kube/config
Output
apiVersion: v1 clusters: - cluster: certificate-authority-data: …

ファイルが存在しない場合は、Kubernetesを設定したのと同じユーザーとしてログインしていることを確認してください。 ~/ パスは個々のユーザーのホームディレクトリを反映し、Kubernetes構成はデフォルトでユーザーごとに保存されます。

DigitalOceanのマネージドKubernetesを使用している場合は、 doctl kubernetes cluster kubeconfig save クラスタを設定した後、ローカルマシンがクラスタに対して認証できるようにコマンドを実行します。 これにより、 ~/.kube/config ファイル:

  1. doctl kubernetes cluster kubeconfig save your-cluster-name

このマシンを使用して複数のクラスターにアクセスしている場合は、競合を回避するために、環境変数と複数の構成ファイルの使用に関するKubernetesドキュメントを確認する必要があります。 設定後 kubectl 環境の場合、次のステップでTOBSのインストールに進むことができます。

ステップ2—TOBSのインストールとエンドポイントのテスト

TOBSには、次のコンポーネントが含まれています。

  • Prometheus は、時系列データベースおよび監視ツールであり、メトリックエンドポイントをポーリングし、これらのエンドポイントによって公開されたデータをスクレイピングおよび処理することで機能します。 時系列データクエリ言語であるPromQLを使用してこのデータをクエリできます。
  • Alertmanager は、通常Prometheusと一緒にデプロイされ、スタックのアラートレイヤーを形成し、Prometheusによって生成されたアラートを処理し、それらを重複排除、グループ化して、電子メールやPagerDutyなどの統合にルーティングします。 Alertmanagerの詳細については、アラートに関するPrometheusのドキュメントを参照してください。
  • Grafana は、データの視覚化および分析ツールであり、メトリックデータのダッシュボードとグラフを作成できます。
  • kube-state-metrics は、Kubernetes APIサーバーをリッスンし、デプロイやポッドなどのKubernetesオブジェクトの状態に関する指標を生成するアドオンエージェントです。 これらのメトリックは、HTTPエンドポイントでプレーンテキストとして提供され、Prometheusによって使用されます。
  • 最後に、 node-exporter は、クラスターノードで実行され、CPUやメモリ使用量などのOSおよびハードウェアメトリックをPrometheusに提供するPrometheusエクスポーターです。 これらのメトリックは、HTTPエンドポイントでプレーンテキストとしても提供され、Prometheusによって使用されます。

TOBSをインストールするには、最初にコントロールプレーンでTOBSインストーラーを実行する必要があります。 これにより、 tobs コマンドおよび構成ディレクトリ。 前提条件で述べたように、 tobs コマンドはLinux/macOS / BSDシステム(公式のKubernetesバイナリなど)でのみ機能するように設計されているため、これまでWindowsを使用している場合は、 Windows Subsystem forLinux環境で作業する必要があります。

TOBSインストーラーを取得して実行します。

  1. curl --proto '=https' --tlsv1.2 -sSLf https://tsdb.co/install-tobs-sh |sh
Output
tobs 0.7.0 was successfully installed 🎉 Binary is available at /root/.local/bin/tobs.

これで、TOBSをKubernetesクラスターにプッシュできます。 これは、新しく提供されたものを使用してワンライナーによって行われます tobs 指図:

  1. tobs install

これにより、数行の出力が生成され、しばらく時間がかかる場合があります。 Kubernetesの正確なバージョンによっては、出力にいくつかの警告が表示される場合がありますが、最終的に Welcome to tobs メッセージ:

Output
WARNING: Using a generated self-signed certificate for TLS access to TimescaleDB. This should only be used for development and demonstration purposes. To use a signed certificate, use the "--tls-timescaledb-cert" and "--tls-timescaledb-key" flags when issuing the tobs install command. Creating TimescaleDB tobs-certificate secret Creating TimescaleDB tobs-credentials secret skipping to create TimescaleDB s3 backup secret as backup option is disabled. 2022/01/10 11:25:34 Transport: unhandled response frame type *http.http2UnknownFrame 2022/01/10 11:25:35 Transport: unhandled response frame type *http.http2UnknownFrame 2022/01/10 11:25:35 Transport: unhandled response frame type *http.http2UnknownFrame Installing The Observability Stack 2022/01/10 11:25:37 Transport: unhandled response frame type *http.http2UnknownFrame W0110 11:25:55.438728 75479 warnings.go:70] policy/v1beta1 PodSecurityPolicy is deprecated in v1.21+, unavailable in v1.25+ W0110 11:25:55.646392 75479 warnings.go:70] policy/v1beta1 PodSecurityPolicy is deprecated in v1.21+, unavailable in v1.25+ … 👋🏽 Welcome to tobs, The Observability Stack for Kubernetes …

この時点以降の出力には、ブラウザでPrometheus、TimescaleDB、PromLens、およびGrafanaの各Webエンドポイントに接続するための手順が含まれます。 参考までに、以下に完全に再現されています。

Output
############################################################################### 🔥 PROMETHEUS NOTES: ############################################################################### Prometheus can be accessed via port 9090 on the following DNS name from within your cluster: tobs-kube-prometheus-prometheus.default.svc.cluster.local Get the Prometheus server URL by running these commands in the same shell: tobs prometheus port-forward The Prometheus alertmanager can be accessed via port 9093 on the following DNS name from within your cluster: tobs-kube-prometheus-alertmanager.default.svc.cluster.local Get the Alertmanager URL by running these commands in the same shell: export POD_NAME=$(kubectl get pods --namespace default -l "app=alertmanager,alertmanager=tobs-kube-prometheus-alertmanager" -o jsonpath="{.items[0].metadata.name}") kubectl --namespace default port-forward $POD_NAME 9093 WARNING! Persistence is disabled on AlertManager. You will lose your data when the AlertManager pod is terminated. ############################################################################### 🐯 TIMESCALEDB NOTES: ############################################################################### TimescaleDB can be accessed via port 5432 on the following DNS name from within your cluster: tobs.default.svc.cluster.local To get your password for superuser run: tobs timescaledb get-password -U <user> To connect to your database, chose one of these options: 1. Run a postgres pod and connect using the psql cli: tobs timescaledb connect -U <user> 2. Directly execute a psql session on the master node tobs timescaledb connect -m ############################################################################### 🧐 PROMLENS NOTES: ############################################################################### PromLens is a PromQL query builder, analyzer, and visualizer. You can access PromLens via a local browser by executing: tobs promlens port-forward Then you can point your browser to http://127.0.0.1:8081/. ############################################################################### 📈 GRAFANA NOTES: ############################################################################### 1. The Grafana server can be accessed via port 80 on the following DNS name from within your cluster: tobs-grafana.default.svc.cluster.local You can access grafana locally by executing: tobs grafana port-forward Then you can point your browser to http://127.0.0.1:8080/. 2. The 'admin' user password can be retrieved by: tobs grafana get-password 3. You can reset the admin user password with grafana-cli from inside the pod. tobs grafana change-password <password-you-want-to-set>

これらのそれぞれには、クラスター内部にDNS名が付けられているため、どのワーカーノードからでもアクセスできます。 tobs-kube-prometheus-alertmanager.default.svc.cluster.local プロメテウスのために。 さらに、ローカルWebブラウザからアクセスできるようにそれぞれに設定されたポート転送コマンドがあります。

新しいターミナルで、 tobs prometheus port-forward:

  1. tobs prometheus port-forward

これは、ポート転送プロセスがアクティブである限り、端末を占有します。 押すことができます Ctrl+C ポートの転送を停止する場合は、このようなブロッキングプロセスを正常に終了します。 次に、Webブラウザーで、URLに移動します http://127.0.0.1:9090/. 完全なPrometheusインターフェースが実行され、クラスターからメトリックを生成していることがわかります。

Grafanaについても同じことができます。Grafanaには次のURLからアクセスできます。 http://127.0.0.1:8080/ ポートフォワーディングが別のプロセスでアクティブである限り。 まず、を使用する必要があります get-password インストーラーの出力によって提供されるコマンド:

  1. tobs grafana get-password
Output
your-grafana-password

次に、このパスワードを使用して、ポート転送コマンドを実行して開くことにより、Grafanaインターフェースにログインできます。 http://127.0.0.1:8080/ ブラウザで。

  1. tobs grafana port-forward

これで、Kubernetesクラスターで動作するTOBSスタックが実行されます。 それぞれの機能については、個々のコンポーネントのドキュメントを参照してください。 このチュートリアルの最後のステップでは、TOBS構成自体を更新する方法を学習します。

ステップ3—TOBS構成の編集とアップグレード

TOBSの構成には、スタック内の個々のアプリケーションのいくつかのパラメーターと、TOBSデプロイメント自体のいくつかのパラメーターが含まれています。 Kubernetesヘルムチャートとして生成および保存されます。 を実行して現在の構成を出力できます tobs helm show-values. ただし、これにより、長い構成全体が端末に出力されるため、読みにくくなる可能性があります。 代わりに、出力をファイルにリダイレクトできます。 .yaml Helmチャートはすべて有効なYAML構文であるため、拡張機能:

  1. tobs helm show-values > values.yaml

ファイルの内容は次のようになります。

〜/ values.yaml
2022/01/10 11:56:37 Transport: unhandled response frame type *http.http2UnknownFrame
# Values for configuring the deployment of TimescaleDB
# The charts README is at:
#    https://github.com/timescale/timescaledb-kubernetes/tree/master/charts/timescaledb-single
# Check out the various configuration options (administration guide) at:
#    https://github.com/timescale/timescaledb-kubernetes/blob/master/charts/timescaledb-single/admin-guide.md
cli: false

# Override the deployment namespace
namespaceOverride: ""
…

TOBSドキュメントを読むと、TOBSの構成に使用できる追加のパラメーターを確認できます。

デプロイメントを更新するためにこのファイルを変更した場合は、更新された構成を使用して、TOBSをそれ自体に再インストールできます。 ただ渡す -f オプション tobs install 追加の引数としてYAMLファイルを使用するコマンド:

  1. tobs install -f values.yaml

最後に、次のコマンドを使用してTOBSをアップグレードできます。

  1. tobs upgrade

これは、 helm upgrade 最新のアップストリームチャートを取得します。

結論

このチュートリアルでは、既存のKubernetesクラスターにTOBS、TheObservabilityStackをデプロイして設定する方法を学びました。 TOBSは、クラスターで実行されているアプリケーションの標準化された監視を提供しながら、これらの各アプリの構成の詳細を個別に維持する必要がないため、特に役立ちます。

次に、Cert-Managerを使用してKubernetesクラスターへのHTTPS入力を処理する方法を学習することをお勧めします。