メトリクス/ログの収集方法
本章ではDatadog、LogDNAでメトリクス/ログをどのような方法で収集しているか説明します。
Datadogでのメトリクスの収集方法
OSから見えるサーバのメトリクス
CPU使用率、ディスク使用率、メモリ使用率などの主要なサーバのメトリクスは、Datadogが用意しているDatadog Agentをサーバにインストールするだけで、自動的にDatadogに送信されます。
Datadog Agentで送信するメトリクスには自動的にホスト名などのタグが付与されるので、後々確認する時などに便利です。
DB(Mongo/Redis)のメトリクス
DBのメトリクスもDatadog Agentを用いてDatadogに送信します。KARTEで利用しているMongoDBやRedisはDatadogでは連携対象になっています。この対象になっていることで、以下のように接続情報を設定するだけでDBの主要なメトリクスが自動的に収集されることになります。
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 Agentを使うことで、HTTP/TCPのエンドポイントからのレスポンスのメトリクスを取得することが可能です。設定はDBのメトリクスと同じようにエンドポイントの情報を以下のようにConfigに記載するのみです。あとはDatadog Agentが定期的にそのエンドポイントにリクエストを投げ、Datadogにその情報を送信してくれます。
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にデータを投げるための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
