OSS Graphiteの利用

OSSの監視ツール「Graphite」をインストールする際によくある問題と回避策

Table of Contents

  • はじめに
  • Graphiteを設定するための最初のステップ
    • SQLite3の使用
    • 自動起動
    • ログローテーション
  • Graphiteインストールの際のトラブルシューティング
  • ホスト型Graphiteとセルフホスト型Graphite
    • 24/7オンコールサポート
    • セキュリティ
    • 自動的にアップデート
  • まとめ

はじめに

Graphiteは非常に人気のあるエンタープライズ用の監視ツールです。この記事では、Graphiteインスタンスのセットアップ中に発生する一般的な問題と、それらを回避する方法について説明します。読者はすでにGraphiteに精通していることを前提としていますが、Graphiteの基本について知りたい場合は、この記事を読む前に、Graphiteのアーキテクチャと概念およびインストールとセットアップに関する記事を確認してください。この記事において、事前に知っておく必要のある重要な用語は以下になりますので、ご確認ください。

  • Carbon

Graphiteのストレージサーバーです。 Graphiteは、単一ノードでCarbonの複数のインスタンスを実行して、着信負荷を処理できます。

  • Whisper

Graphiteがデータを保存するために使用するデータベース形式の名前です。
また、独自のGraphiteインスタンスを設定する場合と、MetricFireなどのHosted Graphiteサービスを使用する場合のメリットとコストをご紹介します。運用が拡大するにつれて、独自のGraphiteインスタンスを実行するのに時間がかかりすぎて、ホストされたバージョンがはるかに実現可能になる可能性があります。

この記事を読みながら、無料の試用アカウントで独自のHostedGraphiteを試してみてください。メトリックを直接送信し、それがどのように機能するかをテストすることができます。また、詳しく知りたい方はデモをご予約ください。

Graphiteを設定するための最初のステップ

インストールチュートリアルでは、GraphiteのDockerイメージを使用して、Graphiteアプリケーションを実行およびデモしました。 ただし、最高のパフォーマンスを実現するには、CentOS / Debianのいずれかを実行している実稼働マシンにGraphiteをインストールする必要があります。 これには、Graphiteを起動して実行するために、多くの手動の手順に行う必要があります。

それでは、ここから早速始めていきましょう。 この例では、Ubuntu18.04を使用してGraphiteを起動して実行します。

  1. 次のコマンドを実行して、ローカルパッケージを更新します。
sudo apt-get update
  1. GraphiteWebアプリケーションとGraphiteCarbonをインストールします。
sudo apt-get install graphite-web graphite-carbon
  1. インストールプロセス中に、アンインストールして再インストールすることにした場合に、Carbonデータベースを保持するかどうかを尋ねるプロンプトが表示されます。 このプロンプトには「No」を選択できます。

Graphiteのインストール

これで技術的にはGraphiteとCarbonをインストールしましたが、まだいくつかの壁が存在しています。これから1つずつ対処するさまざまな方法をご紹介していきます。

SQLite3の使用

Graphite Webアプリケーションは、デフォルトでSQLite3データベースファイルを使用してデータを保存します。 SQLite3は本格的なデータベースシステムではないため、これは本番システムにはまったくお勧めできません。 したがって、PostGreSQLをインストールして構成し、Graphiteがそこにデータを保存できるようにします。

sudo apt-get install postgresql libpq-dev python-psycopg2

これにより、Graphiteが接続してデータを保存するPostGreSQLがインストールされます。

次に、データベースにユーザーGraphiteとデータベースGraphiteを作成します。

madhur@madhur-Virtual-Machine:~$ sudo -u postgres psql
psql (10.12 (Ubuntu 10.12-0ubuntu0.18.04.1))
Type "help" for help.

postgres=# create user graphite with password 'password';
CREATE ROLE
postgres=# create database graphite with owner graphite;
CREATE DATABASE
postgres=# \q

次に、デフォルトのデータベースであるSQLiteの代わりに、新しいデータベースサーバー設定を使用するようにGraphiteに指示する必要があります。 /etc/graphite/local_settings.pyの値を、次のデフォルト値から作成したばかりの新しいデータベース設定に変更します。

古い値:

DATABASES = {
    'default': {
        'NAME': '/var/lib/graphite/graphite.db',
        'ENGINE': 'django.db.backends.sqlite3',
        'USER': '',
        'PASSWORD': '',
        'HOST': '',
        'PORT': ''
    }
}

新しい値:

DATABASES = {
    'default': {
        'NAME': 'graphite',
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'USER': 'graphite',
        'PASSWORD': 'password',
        'HOST': '127.0.0.1',
        'PORT': ''
    }
}

コマンド「sudographite-managemigrate」を実行して、Djangoが新しいデータベースにテーブルを作成できるようにします。 次の出力が表示されます。

madhur@madhur-Virtual-Machine:~$ sudo graphite-manage migrate
Operations to perform:
  Apply all migrations: admin, auth, contenttypes, sessions, tagging
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying auth.0008_alter_user_username_max_length... OK
  Applying sessions.0001_initial... OK
  Applying tagging.0001_initial... OK
  Applying tagging.0002_on_delete... OK
madhur@madhur-Virtual-Machine:~$ 

自動起動

何らかの理由で本番サーバーが再起動された場合、GraphiteとCarbonは自動的に起動しません。 自動的に開始するには、/ etc / default / graphite-carbonにいくつかの変更を加える必要があります。CARBON_CACHE_ENABLEDの値をtrueに変更します。

これにより、起動時にGraphiteとCarbonが自動的に起動します。

ログローテーション

デフォルトでは、カーボンはログローテーションを行いません。 つまり、ログファイルを手動でクリーンアップするか、ログローテーションを有効にしない限り、ハードディスクがいっぱいになるリスクがあります。

  1. ファイル/etc/carbon/carbon.confを編集します
  2. ENABLE_LOGROTATIONの値をTrueに変更します

Graphiteウェブインターフェースを稼働させるには、Apacheをインストールする必要があります

sudo apt-get install apache2 libapache2-mod-wsgi

Apache WebサーバーでGraphiteを有効にするには、次のコマンドを実行します

madhur@madhur-Virtual-Machine:~$ sudo a2dissite 000-default
Site 000-default disabled.
To activate the new configuration, you need to run:
  systemctl reload apache2
madhur@madhur-Virtual-Machine:~$ sudo cp /usr/share/graphite-web/apache2-graphite.conf /etc/apache2/sites-available/
madhur@madhur-Virtual-Machine:~$ sudo a2ensite apache2-graphite
Enabling site apache2-graphite.
To activate the new configuration, you need to run:
  systemctl reload apache2
madhur@madhur-Virtual-Machine:~$ sudo service apache2 reload

これが完了したら、http:// localhost にアクセスすると、最終的にGraphiteWebアプリケーションが表示されます。

Graphiteアプリ

Graphiteインストールの際のトラブルシューティング

Graphiteとカーボンを生産用にセットアップする際に問題が発生した場合:

  • RHEL、CentOS、Debian、Ubuntuなどのサポートされているオペレーティングシステムを使用していることを確認してください。

  • 正しいバージョンのPython、Django、Apache Webサーバー、およびデータベースエンジンが使用されていることを確認してください。 問題のほとんどは、これらの実行中のパーツ間の非互換性が原因で発生します。

  • 次のリポジトリで既存の問題を探します。

Issues · graphite-project/carbon
https://github.com
OSSの監視ツール「Graphite」をインストールする際によくある問題と回避策 - 1
Issues · graphite-project/graphite-web
https://github.com
OSSの監視ツール「Graphite」をインストールする際によくある問題と回避策 - 2

ほとんどの場合、あなたが直面している問題は、以前にも他の誰かが直面したことがあるはずですので、きっと役に立つ情報が見つかるでしょう。

ホスト型Graphiteとセルフホスト型Graphite

記事の最後に到達し、Graphiteを正常に実行できているようでしたら、おめでとうございます。 問題が発生した場合は、インターネット上に起動して実行するためのトラブルシューティングに関する記事が多数ありますが、ここでは説明を割愛させて頂きます。 MetricFireに連絡して、ホストされているバージョンのGraphiteがより適しているかどうかを確認することもできます。

この記事の残りの部分では、MetricFireなどのホステッドGraphiteを使用することと、独自のGraphiteを使用することの利点を分析します。 MetricFireは次の方法で役立ちます。

24/7オンコールサポート

ホスト型Graphiteは、世界中のどこでも一年中サポートと自動監視を提供します。

セキュリティ

ホスト型Graphiteは、HTTPSやTLSなどのプロトコルを使用してデータパケットを送信することで高いセキュリティを提供します。このようなセキュリティを提供するために自己ホスト型Graphiteを構成するには、それを起動して実行するために多くのカスタム構成が必要です。

自動的にアップデート

Graphiteは、Python、Django、Apache Webサーバー、データベースエンジンなどの多くの可動部分で構成されています。最適なレベルで実行するには、これらすべてのコンポーネントを定期的に更新する必要があります。 Hosted Graphiteは、これらのコンポーネントの最新の更新をバックグラウンドで適用することにより、これらの問題を解決します。

また、Hosted Graphiteの実際のテクノロジーは、通常のGraphiteとは少し異なります。開発者は、Hosted Graphiteをユーザーにとってさらに簡単にするために、Graphiteプロジェクトに追加しました。このトピックの概要は、【Hosted Graphite】Graphiteを進化させてしまった監視ツールの記事で説明しています。

まとめ

セルフホストのGraphiteをセットアップするプロセスを見てきました。 ただ、OSSのGraphiteの問題点としてスケーリング、セキュリティ、バックアップなどの高度なユースケースは対象外です。 このような機能は、ホストされているGraphiteによってのみ提供されております。 セルフホストのGraphiteには、Linux管理、Graphite、python、Django、Apache Webサーバー、PostGreSQLの専門家である管理エンジニアと専門エンジニアが必要です。 ほとんどのセットアップでは、自己ホスト型Graphiteを実行するコストは、SaaSのホスト型Graphiteを使用するコストを上回ってしまうのが現実です。

Hosted Graphiteを試すには、MetricFireのHosted Graphite無料トライアルにログインして、今日からメトリックの送信を開始してください。 デモをご予約してMetricFireに連絡、ご相談することができ、いつでも監視ニーズについて話し合うことができます。

You might also like other posts...
graphite Dec 17, 2024 · 4 min read

MetricFire add-on: Show Sentry Errors in Annotations

See how MetricFire can display annotations from Sentry directly in the Grafana graphs. Continue Reading

graphite Nov 18, 2024 · 10 min read

Monitoring Digital Ocean with Hosted Graphite and Telegraf

Explore detailed insights on how to effectively monitor your DigitalOcean environment using Hosted Graphite... Continue Reading

graphite Jun 14, 2024 · 10 min read

Back Up Your Graphite Cluster with Whisper: A Step-by-Step Guide

Protect your Graphite cluster's data! Learn how to backup with Whisper & ensure data... Continue Reading

header image

We strive for 99.999% uptime

Because our system is your system.

14-day trial 14-day trial
No Credit Card Required No Credit Card Required