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クラスターにインストールし、そのコンポーネントダッシュボードを更新、構成、参照する方法を学習します。
前提条件
このチュートリアルに従うには、次のものが必要です。
-
ロールベースのアクセス制御(RBAC)が有効になっているKubernetesクラスター。 このセットアップではDigitalOceanKubernetes クラスターを使用しますが、別の方法を使用してクラスターを自由に作成できます。 Kubernetesのバージョンは、でサポートされているTOBSバージョンと一致している必要があります。
-
The
kubectl
ローカルマシンにインストールされ、クラスターに接続するように構成されたコマンドラインツール。 インストールについてもっと読むことができますkubectl
公式ドキュメント。 DigitalOcean Kubernetesクラスターを使用している場合は、 DigitalOcean Kubernetesクラスターへの接続方法を参照して、を使用してクラスターに接続する方法を確認してください。kubectl
.
ステップ1—Kubernetes構成を確認する
TOBSをインストールするには、最初に有効なKubernetes構成を設定する必要があります kubectl
そこからワーカーノードにpingを実行できます。 を実行してこれをテストできます kubectl get nodes
:
- kubectl get nodes
もしも kubectl
はKubernetesクラスタに接続でき、期待どおりに稼働しています。このコマンドは、ノードのリストを返します。 Ready
状態:
OutputNAME 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
最初の数行を表示するには、次のようにします。
- head ~/.kube/config
OutputapiVersion: v1
clusters:
- cluster:
certificate-authority-data:
…
ファイルが存在しない場合は、Kubernetesを設定したのと同じユーザーとしてログインしていることを確認してください。 ~/
パスは個々のユーザーのホームディレクトリを反映し、Kubernetes構成はデフォルトでユーザーごとに保存されます。
DigitalOceanのマネージドKubernetesを使用している場合は、 doctl kubernetes cluster kubeconfig save
クラスタを設定した後、ローカルマシンがクラスタに対して認証できるようにコマンドを実行します。 これにより、 ~/.kube/config
ファイル:
- 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インストーラーを取得して実行します。
- curl --proto '=https' --tlsv1.2 -sSLf https://tsdb.co/install-tobs-sh |sh
Outputtobs 0.7.0 was successfully installed 🎉
Binary is available at /root/.local/bin/tobs.
これで、TOBSをKubernetesクラスターにプッシュできます。 これは、新しく提供されたものを使用してワンライナーによって行われます tobs
指図:
- tobs install
これにより、数行の出力が生成され、しばらく時間がかかる場合があります。 Kubernetesの正確なバージョンによっては、出力にいくつかの警告が表示される場合がありますが、最終的に Welcome to tobs
メッセージ:
OutputWARNING: 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
:
- 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
インストーラーの出力によって提供されるコマンド:
- tobs grafana get-password
Outputyour-grafana-password
次に、このパスワードを使用して、ポート転送コマンドを実行して開くことにより、Grafanaインターフェースにログインできます。 http://127.0.0.1:8080/
ブラウザで。
- tobs grafana port-forward
これで、Kubernetesクラスターで動作するTOBSスタックが実行されます。 それぞれの機能については、個々のコンポーネントのドキュメントを参照してください。 このチュートリアルの最後のステップでは、TOBS構成自体を更新する方法を学習します。
ステップ3—TOBS構成の編集とアップグレード
TOBSの構成には、スタック内の個々のアプリケーションのいくつかのパラメーターと、TOBSデプロイメント自体のいくつかのパラメーターが含まれています。 Kubernetesヘルムチャートとして生成および保存されます。 を実行して現在の構成を出力できます tobs helm show-values
. ただし、これにより、長い構成全体が端末に出力されるため、読みにくくなる可能性があります。 代わりに、出力をファイルにリダイレクトできます。 .yaml
Helmチャートはすべて有効なYAML構文であるため、拡張機能:
- tobs helm show-values > 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ファイルを使用するコマンド:
- tobs install -f values.yaml
最後に、次のコマンドを使用してTOBSをアップグレードできます。
- tobs upgrade
これは、 helm upgrade
最新のアップストリームチャートを取得します。
結論
このチュートリアルでは、既存のKubernetesクラスターにTOBS、TheObservabilityStackをデプロイして設定する方法を学びました。 TOBSは、クラスターで実行されているアプリケーションの標準化された監視を提供しながら、これらの各アプリの構成の詳細を個別に維持する必要がないため、特に役立ちます。
次に、Cert-Managerを使用してKubernetesクラスターへのHTTPS入力を処理する方法を学習することをお勧めします。