SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

大規模解析サービスを支えるGCP活用事例

大規模解析サービスを支える監視サービスと監視構成のポイント

大規模解析サービスを支えるGCP活用事例 第5回

メトリクス/ログの収集方法

 本章ではDatadog、LogDNAでメトリクス/ログをどのような方法で収集しているか説明します。

Datadogでのメトリクスの収集方法

OSから見えるサーバのメトリクス

 CPU使用率、ディスク使用率、メモリ使用率などの主要なサーバのメトリクスは、Datadogが用意しているDatadog Agentをサーバにインストールするだけで、自動的にDatadogに送信されます。

 Datadog Agentで送信するメトリクスには自動的にホスト名などのタグが付与されるので、後々確認する時などに便利です。

DB(Mongo/Redis)のメトリクス

 DBのメトリクスもDatadog Agentを用いてDatadogに送信します。KARTEで利用しているMongoDBやRedisはDatadogでは連携対象になっています。この対象になっていることで、以下のように接続情報を設定するだけでDBの主要なメトリクスが自動的に収集されることになります。

yaml
init_config:

instances:
      -   server: mongodb://db_name:password@localhost:27016
          tags:
              - mytag1
              - mytag2
      -   server: mongodb://db_name:password@localhost:27017
          tags:
              - mytag1
              - mytag2

 また、連携対象になっているDBはワンクリックでそのメトリクスを利用したダッシュボードを作成できます。このダッシュボードをテンプレートにして、自分でカスタマイズもできるのでとても便利です。

DatadogでのMongoDBとの連携例(出典:Datadog公式サイト)
DatadogでのMongoDBとの連携例(出典:Datadog公式サイト

エンドポイントからのレスポンスのメトリクス

 Datadog Agentを使うことで、HTTP/TCPのエンドポイントからのレスポンスのメトリクスを取得することが可能です。設定はDBのメトリクスと同じようにエンドポイントの情報を以下のようにConfigに記載するのみです。あとはDatadog Agentが定期的にそのエンドポイントにリクエストを投げ、Datadogにその情報を送信してくれます。

yaml
init_config:

instances:
      -  name: My_first_service
      	 url: http://someurl
      	 username: user
      	 password: pass
      	 timeout: 1

      -  name: My_second_service
      	 url: http://otherurl
      	 norify:
      	    - user2@myorg
      	    - pagerduty

クラウドサービスのメトリクス

 DatadogではGCP/AWSなどが提供するさまざまなクラウドサービスも連携先として用意されています。

 この連携機能はDatadogをクラウドプロバイダー上で認証させる形式が多く、認証完了後はDatadogが自動的かつ定期的にメトリクスを取得してくれます。

 もちろん連携したクラウドサービスに対してもワンクリックでダッシュボードを作成することが可能です。

 各クラウドプロバイダーの監視サービスにもダッシュボード機能は存在しますが、ワンクリックで作成できるDatadogのダッシュボードは利用者目線で使い勝手が良いものが多いと感じています。

 それは、日々の運用に必要になりそうなメトリクスのみが、トップリスト、折れ線グラフ、棒グラフ、全体を俯瞰してみれるホストマップなど効果的な方法で表現されるからです。

アプリケーション内のメトリクス

 Datadogではアプリケーション内の情報もカスタムメトリクスとして送信することができます。初めにも説明しましたがこの機能を使って、細かくアプリケーションの状態を監視するのがKARTEの監視における肝になります。

 Datadog AgentにはDogStatsDというStatsDプロトコルをサポートするDatadog用のメトリクス集約サーバが内包されており、このサーバにStatsDの形式でデータを投げるとDatadogにデータが送信されます。

DogStatsDを使ったカスタムメトリクスのグラフ化までの構成図(Datadogのドキュメント掲載の図より作成)
DogStatsDを使ったカスタムメトリクスのグラフ化までの構成図(Datadogのドキュメント掲載の図より作成)

 DogStatsDにデータを投げるためのSDKは色々と存在するので、それを使ってアプリケーションの中にコードを埋め込む形となります。

 Node.jsであれば、弊社のエンジニアが作成したlibs-dogstatsdを利用することで、以下のように簡単にカスタムメトリクスを投げることができます。

  const dogstatsd = require('libs-dogstatsd');
  dogstatsd.increment('admin.timeout.rpc', 1, 1, ['pid:' + process.pid]);

 この機能を利用することで

  • 処理の実行完了時間のmax/min/95percentile/average
  • 特定の関数の呼び出し回数
  • 解析データ量

などを計測することができます。

 カスタムメトリクスの変化を監視したことで、クラウドプラットフォームの障害をそのクラウドプラットフォームより先に気づくことができ、問題を最小限に抑えられたこともあります。

 ちなみにこのカスタムメトリクスもメトリクス名のPrefixによってワンクリックでダッシュボード作成が可能です。

LogDNAでのログの収集方法

 LogDNAにもDatadogと同様にエージェントが用意されており、それをサーバにインストールするだけでログをLogDNAへ送信することができます。

 特定のディレクトリ以下のログの収集、特定のファイルを非対象にするというような柔軟な設定が可能で、デフォルトでは/var/log 以下のログ全てを収集するようになっています。

 設定はDatadogと同様、以下のようにConfigに記載します。

  logdir = /var/log
  key = {{api_key}}
  exclude = /var/log/test.log
  tags = admin, production

次のページ
監視のポイント

この記事は参考になりましたか?

大規模解析サービスを支えるGCP活用事例連載記事一覧

もっと読む

この記事の著者

竹村尚彦(株式会社プレイド)(タケムラ ナオヒコ)

 株式会社プレイド エンジニア 2014年からプレイドで、インフラを中心にKARTEの裏側を全般的に担当。 プレイド入社前はNECにてクラウドサービスの立ち上げにエンジニアとして従事。 2011年、同志社大学工学部を卒業。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/10674 2018/03/07 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー