GitLab システム管理者 - ハンズオンラボ: GitLab Kubernetes のロギングと監視
推定所要時間: 30 分
目的
このラボの目的は、ログ分析と監視のために Prometheus と Grafana を使用する方法を示すことです。
タスク A. Prometheus サービスへのアクセス
GitLab の Prometheus サーバーは TCP ポート 9090 経由で接続できます。このポートにアクセスするには、Kubernetes クラスターへのプロキシを作成する必要があります。次のコマンドで実行できます。
kubectl proxyPrometheus にアクセスするには、Pod 名を知る必要があります。これを見つけるには、
kubectl get podsコマンドを実行します。出力で Prometheus を探します。Web ブラウザーで
http://localhost:8001/api/v1/namespaces/default/pods/PROMETHEUS_POD_NAME:9090/proxy/に移動して、組み込み Prometheus サーバーを表示します。Prometheus で利用可能なメトリクスを表示するには、
http://localhost:8001/api/v1/namespaces/default/pods/PROMETHEUS_POD_NAME:9090/proxy/metricsに移動します。各メトリクスの詳細なリストについては、ドキュメントを参照してください。
タスク C. Prometheus メトリクスの表示
この例では、GitLab インスタンスに送信された HTTP リクエストを監視したいとします。これを実現するために、組み込みの GitLab メトリクスを使用できます。
http://localhost:8001/api/v1/namespaces/default/pods/PROMETHEUS_POD_NAME:9090/proxy/に移動します。虫眼鏡ボタンの横の入力欄に
http_requests_totalと入力します。Execute ボタンをクリックします。
Table をクリックして、クエリによって生成されたすべての結果のテーブルを表示します。
結果にさまざまな HTTP リクエストが表示される可能性があります。各リクエストの
job、instance、HTTP method、statusが確認できます。Graph をクリックしてデータのグラフを表示します。
グラフの左側に - と + ボタンがあります。これらのボタンをクリックしてグラフのスケールを変更できます。スケールを調整してデータへの影響を確認してみてください。
タスク D. アラート設定
Prometheus は特定のメトリクスに基づいて管理者にアラートを送信するために使用できます。GitLab には Prometheus の定義済みアラートセットが付属しています。
http://localhost:8001/api/v1/namespaces/default/pods/PROMETHEUS_POD_NAME:9090/proxy/に移動します。上部メニューで Alerts をクリックします。
GitLab と Node という 2 つのアラートルールセットがあることに注意してください。GitLab アラートは、サービスのダウン、Postgres のダウン、サービス内の高いキューイングなどのプラットフォームの問題に対応します。Node アラートは GitLab がデプロイされているサーバーに対応します。
Kubernetes デプロイメントでは、アラートルールはファイルベースのルールではなく、ConfigMap と Prometheus Helm チャート設定を通じて設定されることに注意してください。
管理者として、Kubernetes ConfigMap を通じて、または Prometheus Helm 値を更新してアラートルールを追加することでカスタムルールを定義できます。
タスク E. 一般的なパフォーマンスメトリクス
管理者が GitLab インスタンスのパフォーマンスを監視するために使用できるさまざまなメトリクスがあります。インスタンスを監視するために使用できる一般的なクエリをいくつか見てみましょう。
http://localhost:8001/api/v1/namespaces/default/pods/PROMETHEUS_POD_NAME:9090/proxy/に移動します。虫眼鏡ボタンの横の入力欄に、次のクエリを入力します。
sum(rate(gitlab_cache_misses_total[5m])) by (cache_key)このクエリにより、GitLab のキャッシュミス率が表示されます。これはパフォーマンスの問題を示している可能性があります。標準的なノードメトリクス(メモリ、CPU)は、Kubernetes クラスターに node-exporter や kube-state-metrics などの追加のエクスポーターをインストールする必要があることに注意してください。
Graph をクリックして、経時的なメモリの割合を表示します。
クエリ入力欄で前のクエリを削除し、次のクエリに置き換えます。
sum(rate(http_requests_total[5m])) by (job)このクエリにより、GitLab インスタンスのジョブごとの HTTP リクエスト率が表示されます。
Graph をクリックして、経時的な CPU 使用率を表示します。
これらのメトリクスや他の多くのメトリクスについて、特定の条件に対してアラートを設定することを検討することをお勧めします。例えば、CPU 使用率が継続的に 50% を超える場合にアラートを設定できます。これは問題の兆候である可能性があります。
ラボガイド完了
このラボ演習を完了しました。このコースの他のラボガイドを参照できます。
ご提案はありますか?
ラボに変更を加えたい場合は、マージリクエストを通じて変更内容を送信してください。
