#はじめに
Graphiteは非常に人気のあるエンタープライズ用の監視ツールです。この記事では、Graphiteインスタンスのセットアップ中に発生する一般的な問題と、それらを回避する方法について説明します。読者はすでにGraphiteに精通していることを前提としていますが、Graphiteの基本について知りたい場合は、この記事を読む前に、Graphiteのアーキテクチャと概念およびインストールとセットアップに関する記事を確認してください。この記事において、事前に知っておく必要のある重要な用語は以下になりますので、ご確認ください。
- Carbon
Graphiteのストレージサーバーです。 Graphiteは、単一ノードでCarbonの複数のインスタンスを実行して、着信負荷を処理できます。
- Whisper
Graphiteがデータを保存するために使用するデータベース形式の名前です。
また、独自のGraphiteインスタンスを設定する場合と、MetricFireなどのHostedGraphiteサービスを使用する場合のメリットとコストをご紹介します。運用が拡大するにつれて、独自のGraphiteインスタンスを実行するのに時間がかかりすぎて、ホストされたバージョンがはるかに実現可能になる可能性があります。
この記事を読みながら、無料の試用アカウントで独自のHostedGraphiteを試してみてください。メトリックを直接送信し、それがどのように機能するかをテストすることができます。また、詳しく知りたい方はデモをご予約ください。
#Graphiteを設定するための最初のステップ
インストールチュートリアルでは、GraphiteのDockerイメージを使用して、Graphiteアプリケーションを実行およびデモしました。 ただし、最高のパフォーマンスを実現するには、CentOS / Debianのいずれかを実行している実稼働マシンにGraphiteをインストールする必要があります。 これには、Graphiteを起動して実行するために、多くの手動の手順に行う必要があります。
それでは、ここから早速始めていきましょう。 この例では、Ubuntu18.04を使用してGraphiteを起動して実行します。
- 次のコマンドを実行して、ローカルパッケージを更新します。
sudo apt-get update
- GraphiteWebアプリケーションとGraphiteCarbonをインストールします。
sudo apt-get install graphite-web graphite-carbon
- インストールプロセス中に、アンインストールして再インストールすることにした場合に、Carbonデータベースを保持するかどうかを尋ねるプロンプトが表示されます。 このプロンプトには「No」を選択できます。
これで技術的には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が自動的に起動します。
###ログローテーション
デフォルトでは、カーボンはログローテーションを行いません。 つまり、ログファイルを手動でクリーンアップするか、ログローテーションを有効にしない限り、ハードディスクがいっぱいになるリスクがあります。
- ファイル/etc/carbon/carbon.confを編集します
- 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とカーボンを生産用にセットアップする際に問題が発生した場合:
-
RHEL、CentOS、Debian、Ubuntuなどのサポートされているオペレーティングシステムを使用していることを確認してください。
-
正しいバージョンのPython、Django、Apache Webサーバー、およびデータベースエンジンが使用されていることを確認してください。 問題のほとんどは、これらの実行中のパーツ間の非互換性が原因で発生します。
-
次のリポジトリで既存の問題を探します。
ほとんどの場合、あなたが直面している問題は、以前にも他の誰かが直面したことがあるはずですので、きっと役に立つ情報が見つかるでしょう。
#ホスト型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に連絡、ご相談することができ、いつでも監視ニーズについて話し合うことができます。