1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

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

Posted at

image.png

#はじめに

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を起動して実行します。

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

image.png

これで技術的には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アプリケーションが表示されます。

image.png

#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に連絡、ご相談することができ、いつでも監視ニーズについて話し合うことができます。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?