書籍概要

Mackerel サーバ監視[実践]入門

著者
発売日
更新日

概要

「Mackerel」は,サーバにおける各種ハードウェアやアプリケーションソフトウェアの性能をリアルタイムに監視できるSaaS型サーバ監視サービス。美麗なWebUIとエンジニア志向のカスタマブルなつくりが特徴です。「はてなブログ」「はてなブックマーク」を展開する株式会社はてなが,それら巨大Webサービスを支えるITインフラのために開発した社内システムがもとになっています。本書はそのMackerelの入門書ですが,Mackerelの使い方に限らず,サーバ監視の基本知識や,はてなのエンジニアが培ってきたインフラ管理全般のノウハウについても学べる1冊となっています。

こんな方におすすめ

  • これからサーバ監視を始めたい方,社内のサーバ監視システムを一本化したい方

サンプル

目次

1章 Mackerelとは何か

  • 1.1 Mackerelが目指すもの
    • クラウド時代を切り拓く
    • 普遍的なシステム監視の重要性
    • エンジニアをワクワクさせる
  • 1.2サーバ管理のアーキテクチャ
    • Push型とPull型
    • Mackerelのアーキテクチャ
  • 1.3Mackerelの特徴
  • 1.4動作環境

2章 Mackerelをはじめる

  • 2.1 ユーザ登録
    • ユーザを招待
  • 2.2 mackerel-agent
    • mackerel-agentのインストールと起動
  • 2.3Mackerelの画面の見方
    • オーガニゼーショントップ画面
    • ダッシュボード一覧画面
    • ホスト一覧画面
    • サービス一覧画面
    • 監視ルール一覧画面
    • アラート一覧画面
    • リソースグラフの使い方
  • 2.4 Mackerelが扱うメトリックの種類
    • ホストメトリック
    • サービスメトリック
  • 2.5 グラフの種類とインターフェース
    • グラフの種類
    • ホストメトリックグラフ
    • ロールグラフ
    • サービスメトリックグラフ
    • 式グラフ
    • 各種インターフェース

3章 監視する

  • 3.1 サーバ監視のいろは
    • なぜ監視が必要か
    • 何を監視するのか
    • どのように監視するのか
    • 監視ルール設定の考え方
    • お勧めの監視設定フロー
  • 3.2 サービスとロール
    • サービスとロールの指定
    • Mackerelのロールとは
    • Webシステムにおけるロール編成
  • 3.3 メトリック監視
    • サーバ監視とメトリック
    • システムメトリックを測定
    • カスタムメトリックを測定
    • サービスメトリックを測定
  • 3.4 監視ルールの設定
    • アラートの確認
    • 通知の設定
  • 3.5 チェック監視
    • チェックプラグインの共通仕様
    • Mackerelにおけるチェック監視の設定
    • チェック監視状況を確認
    • 公式チェックプラグイン集を活用
    • check-procsでプロセス監視
    • check-logでログ監視
    • check-tcpでTCP接続の監視
    • チェック監視のそのほかのオプション
  • 3.6 URL外形監視
    • URL外形監視のしくみ
    • URL外形監視を設定
    • より細やかな監視

4章 アラートを通知する

  • 4.1 各種チャンネル
  • 4.2 Slackチャンネルを設定
  • 4.3 PagerDutyチャンネルを設定
  • 4.4 Twilioチャンネルを設定
    • Twilioチャンネルの設定項目
    • 共通設定項目
    • 通知種別ごとの設定項目
  • 4.5 通知グループ
    • 通知グループの作り方
    • 通知グループの例
    • お勧めの通知設定

5章 プラグインを作る

  • 5.1 プラグインは3種類
  • 5.2 カスタムメトリックプラグインを作る
    • カスタムメトリックプラグインの仕様
    • 公式のヘルパーライブラリを使う
    • プラグイン作成時のファイル構成
    • カスタムメトリックプラグインをビルド
  • 5.3 チェックプラグインを作る
    • カスタムメトリックプラグインとの使い分け
    • チェックプラグインの仕様
    • 公式のヘルパーライブラリを使う
    • プラグイン作成時のファイル構成
    • チェックプラグインをビルド
  • 5.4 メタデータプラグインを作る
    • メタデータプラグインとは
    • メタデータプラグインの仕様
    • スクリプトを自作
    • メタデータ機能の今後
  • 5.5 プラグインをより洗練させる
    • テストを書く
    • 公式プラグイン集にcontributeするために

6章 各種ツール連携と運用の効率化

  • 6.1 Mackerel API
    • APIのルール
    • APIが提供している機能一覧
    • APIとmkr
  • 6.2 CLIツール「mkr」
    • mkrを導入する
    • mkrを使う
    • tmux-csshと組み合わせる
  • 6.3 Fluentdと連携
    • セットアップ
    • サービスメトリックを投稿
    • ホストのカスタムメトリックを投稿
    • Nginxのステータスコードごとリクエスト数をグラフ化
  • 6.4 Chefによるセットアップ
    • cookbook-mackerel-agent
    • 設定例
  • 6.5 Capistranoと連携
    • Capistranoを準備
    • Mackerel APIを利用
    • アプリケーションデプロイ時にアノテーションを投稿
  • 6.6 Serverspecと連携
    • インフラはコードで管理する時代
    • Serverspecとは
    • MackerelとServerspec

7章 クラウド環境におけるMackerel

  • 7.1 Amazon Web Services
    • EC2インスタンス情報の表示
    • AWSインテグレーション
    • EC2以外のクラウド製品との連携
  • 7.2 Microsoft Azure
    • Azureインテグレーション
  • 7.3 Heroku
  • Dynoを監視
  • サービスメトリックを投稿
  • 7.4 Docker
    • mackerel-plugin-dockerを利用
    • mackerel-agentのDockerイメージ
  • 7.5 オートスケールと自動退役
    • ホストステータスの自動変更や自動退役
    • OSシャットダウン時にホストを自動で退役させる
    • ホスト起動時・シャットダウン時にホストステータスを自動変更

8章 発展的な機能

  • 8.1 監視設定をコード化してGitHubで管理
    • mkr monitorsで監視ルールを操作
    • mkr monitorsコマンドの使い方
    • pullとpushを利用する
    • pushだけを利用する
    • CIでテストする
  • 8.2 式を使って柔軟なグラフを書く
    • メトリックを式で計算する
    • 具体例1:過去の値との比較
    • 具体例2:線形回帰によるディスク枯渇までの日数の将来予測
  • 8.3 セキュリティやユーザ権限への配慮
    • ユーザ権限
    • ログインプロバイダ制限
    • 二段階認証
    • IP制限
    • オーガニゼーションごとの分離

9章 付録

  • 9.1 Mackerelのアーキテクチャを知る
    • Mackerelの内部システム概要
    • Mackerelサーバ構成
    • Mackerelで使用しているミドルウェア
  • 9.2 Mackerelとオープンソース
  • 9.3 Mackerel活用事例―GMOペパボの場合
    • Fabricとの連携
    • hostsファイルの生成
    • “確認漏れ”を防ぐツールmalsh
    • 特定条件によるホストの検索
  • 9.4 Mackerel活用事例―ガイアックスの場合
    • Mackerelを導入するまで
    • PerlからMackerelを使う
    • 踏み台サーバでのホスト一覧表示
    • MackerelのWebhookを使う
  • 9.5 総論
    • 動的で複雑なインフラ環境
    • はてなのインフラ環境―自作サーバから自作コンテナまで
    • 効率的な管理を促進するサービス・ロール・ホストの概念
    • Mackerelの思想
    • Mackerelの今後

サポート

正誤表

本書の以下の部分に誤りがありました。ここに訂正するとともに,ご迷惑をおかけしたことを深くお詫び申し上げます。

(2017年8月24日最終更新)

2章 P.41


https://mackerel.io/orgs/<オーガニゼーション名
>/advanced-graph?query=group(alias(avg(role('grass-graph:webapp',
'loadavg5')), 'loadavg5'),alias(timeShift(avg(role('grass-graph:webapp',
'loadavg5')),  '1w'),  '1%20week%20ago'))&title=example:db:loadavg5


https://mackerel.io/orgs/<オーガニゼーション名
>/advanced-graph?query=group(alias(avg(role('example:db', 'loadavg5')),
'loadavg5 '),alias(timeShift(avg(role('example:db', 'loadavg5')), '1w'),
'1%20week%20ago'))&title=example:db:loadavg5

商品一覧