Carpe Diem

備忘録

Kubernetes のRBACを理解する

概要

KubernetesではRBACという、各種リソースへのアクセス権限を管理する仕組みが用意されてます。

たとえばPrometheusのようにKubernetesAPIを叩く場合、各リソースへアクセスするための権限が必要になります。

今回はそれの基本的な仕組みや設定方法を説明します。

環境

Service Account

KubernetesにはUserAccountとServiceAccountがあります。大きな違いとしては以下です。

UserAccount ServiceAccount
対象 プロセス
権限範囲 グローバル。
GCPのアカウントや
AWSのIAMとリンクする。
namespace区切り。
Kubernetesの世界で完結する。

ref: Managing Service Accounts - Kubernetes

Pod起動時には必ずServiceAccountを1つ割り当てる必要があります。
指定しない場合はdefault ServiceAccountが割り当てられます。

続きを読む

Prometheus でNodeのモニタリング

概要

christina04.hatenablog.com

でNode exporterを使った基本的な監視方法を説明しましたが、今回は具体的にどんな項目をどう監視すべきかを説明します。

USEメソッド

サーバの監視すべき項目の指標としてUSEメソッドというものがあります。

項目 説明
Utilization リソースの使用率
Saturation リソースを割けずキューで処理待ちになっている仕事の量
Errors エラーイベントの数

各リソース(CPU、ディスク、メモリ、ネットワークなど)で↑の項目をチェックすべき、という指標です。

※とはいうもののリソースによって計測できないものも多々あります

続きを読む

GitHubを使った開発であると便利なツール

概要

GitHubを使った開発で使ってるツールを紹介していきます。
どれもあると無いとでは開発スピードが大きく変わります。

Fork

GUIのGitクライアントです。

git-fork.com

以前はSourcetreeを使っていましたが管理するファイルが増えると非常に重くなったのでリプレースしました。

メリット

  • とにかく軽い
  • タブ型なので複数リポジトリ見ても散乱しない
  • 対話型のリベース・コンフリクト修正機能がある
  • リポジトリの追加しやすい
  • 無料
  • 複数ブランチ扱ってる時に、取り込んでないコミットが非アクティブだから見やすい
続きを読む

Prometheus の監視対象を ServiceDiscovery で動的に設定する

概要

PrometheusはPull型の監視ツールであるため、監視対象がどれかを教えてあげなければいけません。
これまでの記事は全てstatic_configsを用いた静的な値で、スケールした時やサービスが増減した時に柔軟性がありません。

PrometheusはServiceDiscoveryを指定することで動的にターゲットを検知できるのでそれを用います。

環境

利用できるService Discoveryは?

Configuration | Prometheus に対応しているSD一覧があります。
主に使いそうなのは以下でしょうか。

続きを読む

Prometheus でAPIサーバの監視【gRPC】

概要

前回はHTTPのAPIサーバの監視の仕方を説明しました。

christina04.hatenablog.com

今回はgRPCでのメトリクスの作り方を説明します。

環境

  • Prometheus 2.11.1
  • Golang 1.12.7
  • Grafana 6.2.5
  • prometheus/client_golang 1.0.0
  • go-grpc-prometheus 1.2.0

メトリクスの追加

実際の処理をするServer側と、コールするClient側の両方にメトリクスを追加していきます。

サンプルコードは

github.com

にあります。

続きを読む

Prometheus でAPIサーバの監視【HTTP】

概要

前回は既存のexporterを利用せず、自分でメトリクスを生成する方法を説明しました。

christina04.hatenablog.com

その方法を使って実際にAPIサーバ(HTTP)のメトリクスを生成し、可視化してみます。

環境

  • Ubuntu 18.04
  • Prometheus 2.11.1
  • Golang 1.12.7
  • Grafana 6.2.5

The Four Golden SignalsとREDメソッド

分散システムで何をモニタリングすべきかについては、The Four Golden Signalsが有名です。

それを踏まえてマイクロサービスではREDメソッドという指標があります。

項目 説明
Rate リクエスト数/sec
Errors エラー数
Duration リクエスト毎のduration

今回はこのREDメソッドに基づいて可視化できるようにします。

続きを読む

Prometheus で独自メトリクスを用意する

概要

Metric types | Prometheus で定義されているようにPrometheusでは大きく4つのメトリクスタイプがあります。

  • Counter
  • Gauge
  • Summary
  • Histogram

今回はGoのPrometheusクライアントライブラリを用いて各メトリクスを独自で用意する方法を説明します。

環境

  • Prometheus 2.11.1
  • Golang 1.12.7
  • prometheus/client_golang 1.0.0

expose

まずはPrometheusが監視対象のメトリクスをPullできるよう/metricsのエンドポイントを用意します。
公式クライアントとしてpromhttpというライブラリが提供されているのでそれを使います。

package main

import (
    "log"
    "net/http"

    "github.com/prometheus/client_golang/prometheus/promhttp"
)

func main() {
    http.Handle("/metrics", promhttp.Handler())
    log.Fatal(http.ListenAndServe(":8080", nil))
}
続きを読む