Carpe Diem

備忘録

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))
}
続きを読む

Grafanaのパネルの作り方

概要

Prometheus + GrafanaではPromQLを使って柔軟なパネルが作成できる一方、作り方が複雑になりがちです。

今回は基本的なパネルの作り方を説明します。

環境

  • Grafana 6.2.5
  • Prometheus 2.11.1

パネル

Grafanaのダッシュボードのパネルは大きく10あります。

  • グラフ
  • シングルスタット
  • ゲージ
  • バーゲージ
  • テーブル
  • テキスト
  • ヒートマップ
  • アラートリスト
  • ダッシュボードリスト
  • プラグインリスト

今回はよく使う

  • グラフ
  • シングルスタット

の2つを説明します。

続きを読む

Prometheus の基本的な使い方【Grafana】

概要

christina04.hatenablog.com

の続きです。

今回はGrafanaを使ってメトリクスの可視化をします。

環境

  • Ubuntu 18.04
  • Prometheus 2.11.1
  • Grafana 6.2.5

構成

引き続きVMで行います。

VM IP
Prometheus 192.168.33.10
Node 192.168.33.11
Grafana 192.168.33.12
続きを読む