Table of Contents
Great systems are not just built. They are monitored.
MetricFire runs Graphite and Grafana as a fully managed service for growing engineering teams, taking care of storage, scaling, and version updates so your team doesn't have to. Plans start at $19/month, billed per metric namespace rather than per host, and include engineer-staffed support. Integrations work natively with Heroku, AWS, Azure, and GCP, and data is stored with 3× redundancy in SOC2- and ISO:27001-certified data centres.
はじめに
Redisインスタンスの監視は、パフォーマンス、信頼性、およびセキュリティを維持するために不可欠です。これにより、問題の早期検出、リソースの最適化が可能となり、開発者とエンドユーザーの両方にシームレスな体験を提供できます。データベースを監視することで、メモリ使用量、CPU使用率、クエリの応答時間などの主要なパフォーマンス指標の追跡が実現します。これらの指標を分析することで、パフォーマンスのボトルネックを特定し、クエリを最適化し、Redisが効率的に動作することを保証できます。また、Redisの監視は、問題や異常をリアルタイムで検知・診断するのにも役立ちます。トラフィックの急激な増加、メモリリーク、ネットワークの問題など、どのような状況であっても、監視によって早期の警告が得られ、問題の迅速な解決が可能になります。
本記事では、Telegrafエージェントを使用してRedisのパフォーマンス統計情報を収集し、それをデータソースに転送する方法について詳しく解説します。
Telegrafエージェントの導入
Telegrafは、InfluxDBをベースに構築されたプラグイン駆動型のサーバーエージェントであり、データベース、システム、プロセス、デバイス、アプリケーション、その他サードパーティサービスからメトリクスやイベントを収集して送信します。TelegrafはGo言語で記述されており、外部依存関係のない単一バイナリとしてコンパイルされ、必要なメモリ使用量も最小限です。ほとんどのオペレーティングシステムに対応しており、さまざまなシステムパフォーマンスメトリクスを収集・転送するための便利な出力プラグインおよび入力プラグインを多数備えています。
Telegrafのインストール(Linux/RedHat)
Telegrafをダウンロードして解凍します(最新バージョンや各種OS向けのインストールコマンドについては、Telegraf公式ドキュメントをご確認ください)。パッケージおよびファイルは通常、/etc ディレクトリにインストールされます。
wget https://dl.influxdata.com/telegraf/releases/telegraf_1.21.2-1_amd64.deb
sudo dpkg -i telegraf_1.21.2-1_amd64.deb
RedHat/CentOS
wget https://dl.influxdata.com/telegraf/releases/telegraf-1.21.4-1.x86_64.rpm
sudo yum localinstall telegraf-1.21.4-1.x86_64.rpm
出力先の設定
Telegrafは、Kafka、Graphite、InfluxDB、Prometheus、SQL、NoSQLなど、さまざまな出力先へデータを送信するよう設定できます。
この例では、TelegrafをGraphite出力で設定します。現在データソースをホスティングしていない場合は、次の手順を進めるために、MetricFireのHosted Graphite無料トライアルを開始できます。
Hosted Graphiteアカウントを利用することで、データソースに加え、アラート機能や可視化ツールであるHosted Grafanaも利用できます。
Graphite出力を設定するには、ダウンロードしたTelegraf設定ファイル /etc/telegraf/telegraf.conf を任意のテキストエディタで開きます。その後、以下の変更を加えてください。
以下の行を探してコメントアウトします。
# [[outputs.influxdb]]
次に、以下の行のコメントを解除します。
[[outputs.graphite]]
続いて、server行のコメントを解除し、以下のように編集します。
servers = ["carbon.hostedgraphite.com:2003"]
最後に、prefix行のコメントを解除し、以下のように編集します。
prefix = "<YOUR_API_KEY>.telegraf"
Telegraf Redis入力プラグインの設定
Telegrafには、多くの一般的な技術やサードパーティソースから幅広いデータを収集できる入力プラグインが多数用意されています。この例では、Redisデータベースからメトリクスを収集し、転送する方法を紹介します。
まず、telegraf.confファイル内で inputs.redis セクションを検索し、[[inputs.redis]] 行のコメントを解除します。
[[inputs.redis]]
次に、servers 行のコメントを解除します(デフォルトではlocalhostの6379ポートが設定されています)。
servers = ["tcp://localhost:6379"]
必要に応じて、redis.conf ファイルを開き、localhostへのbind設定をコメントアウトしたうえで、すべてのIPアドレスからの接続を受け付けるために bind 0.0.0.0 を追加できます。
# bind 127.0.0.1 ::1
bind 0.0.0.0
最後に、変更内容を保存し、Redisサービスを再起動した後、以下のコマンドでtelegrafデーモンを実行します。これにより、出力内容から設定エラーがないか確認できます。
telegraf --config telegraf.conf
これでTelegrafは、設定したデータソースへインスタンスごとにおよそ150種類のメトリクスを転送します。TelegrafのGraphite出力を使用している場合、メトリクスは以下の形式になります。
telegraf.<host>.<db_port>.<db_replication_role>.<db_server>.redis.<metric>
これにより、CPU、メモリ、クライアント数、キー数、オペレーション、エラー、デフラグ、Publish/Subscribeなど、Redisのパフォーマンスメトリクスを受信できるようになります。
Redisプラグインに関する追加情報や設定オプションについては、公式GitHubリポジトリをご確認ください。
MetricFireのHosted Graphiteでカスタムダッシュボードとアラートを作成
MetricFireは、サーバー、データベース、ネットワーク、プロセス、デバイス、アプリケーションからメトリクスやデータを収集・可視化・分析できる監視プラットフォームです。MetricFireを利用することで、インフラ内の問題を容易に特定し、リソースを最適化できます。MetricFireのHosted Graphiteを利用すれば、監視ソリューションを自前でホスティングする負担がなくなり、より重要な作業に時間を割くことができます。
Hosted Graphiteのアカウントを作成し、前述の手順でTelegrafエージェントをサーバーへ設定すると、メトリクスはHosted Graphiteバックエンドへ転送・タイムスタンプ付与・集約されます。
-
メトリクスは、次のGraphite形式で送信・保存されます:metric.name.path <numeric-value> <unix-timestamp>
-
ドット区切りの記法はツリー構造のデータ形式を提供するため、効率的なクエリが可能です。
-
メトリクスはHosted Graphiteアカウント内に2年間保存され、それらを利用してカスタムアラートやGrafanaダッシュボードを作成できます。
Hosted GraphiteのHosted Grafanaでダッシュボードを構築
Hosted Graphite UIで、Dashboards => Primary Dashboardsへ移動し、「+」ボタンを選択して新しいパネルを作成します。
その後、クエリUIを使用してGraphiteメトリクスパスを選択できます(Hosted Graphiteアカウント経由でGrafanaへアクセスしている場合、デフォルトのデータソースはHosted Graphiteバックエンドになります)。
注:Hosted Graphiteデータソースは、指定したパスに一致するすべてのメトリクスを取得するためのワイルドカード(*)検索にも対応しています。
さらに、summarize()のようなGraphite関数を適用し、10分、1時間、24時間単位で値を集計できます。
Grafanaには、さまざまな可視化設定、表示のカスタマイズ、単位設定に加え、ダッシュボード変数やイベントアノテーション設定などの高度な機能も多数用意されています。
上記の例では、メトリクスシリーズのインデックス4に対して「instance」というダッシュボード変数が設定されています。詳細についてはHosted Graphiteのダッシュボードドキュメントをご確認ください。
Graphiteアラートを作成
Hosted Graphite UIで、Alerts => Graphite Alertsへ移動し、新しいアラートを作成します。アラート名を設定し、alerting metricフィールドへクエリを追加し、このアラートが何を監視するものか説明文を入力します。
次に、Alert Criteriaタブを選択してしきい値を設定し、通知チャネルを選択します。デフォルトの通知チャネルは、Hosted Graphiteアカウント登録時に使用したメールアドレスです。ただし、Slack、PagerDuty、Microsoft Teams、OpsGenie、カスタムWebhookなどの通知チャネルも簡単に設定できます。通知チャネルの詳細についてはHosted Graphiteの公式ドキュメントをご確認ください。
まとめ
データベース監視は、最適なパフォーマンスの維持、問題の早期検知と対処、そしてデータ整合性の維持を実現するために、企業にとって非常に重要です。メモリ使用量、レスポンスタイム、セキュリティイベントなどの主要メトリクスを追跡することで、企業はリソース使用率を最適化し、ダウンタイムを防止し、Redisインフラ全体の信頼性を向上させることができます。効果的な監視により、適切な意思決定、迅速な問題解決、優れたユーザー体験が可能となり、ビジネス運営の成功と効率化につながります。
ダッシュボードやアラートなどのツールは、リアルタイムの可視化、問題のプロアクティブな特定、過去トレンドの分析、そして情報に基づく意思決定を支援することで、データをさらに有効活用できるようにします。これらは、堅牢で効率的なインフラを維持するうえで欠かせない要素です。
無料トライアルに登録して、今すぐRedisインスタンスの監視をお試しください。また、デモを予約し、監視ニーズについてMetricFireチームへ直接ご相談いただくことも可能です。