記憶力が無い

プログラミングとランニングとカメラと何か

carbon-cacheの7002番ポートについて

サーバー監視の勉強始めました。

Graphiteの設定をしていたら、何に使われているのかわからない設定があったので調べてみました。

環境

  • CentOS 7.7
  • Graphite
    • python-carbon 0.9.16-1.el7@epel
    • python-whisper 0.9.16-1.el7@epel
    • graphite-web 0.9.16-1.el7@epel

※GraphiteはEPELに含まれるものを使用

CACHE_QUERY_PORT

python-carbonの設定( /etc/carbon/carbon.conf )の中に CACHE_QUERY で始まる次の二つの設定項目があります。

CACHE_QUERY_INTERFACE = 0.0.0.0
CACHE_QUERY_PORT = 7002

python-carbonの設定項目の説明は、設定ファイルにコメントで書かれているのですが、 この二つに関しては説明がありません。 この7002番ポートは何に使われているのでしょうか。

CARBONLINK_HOSTS

graphite-webの設定( /usr/lib/python2.7/site-packages/graphite/local_settings.py )を見てみると、7002番ポートを参照するような設定項目がありました。

# If you are running multiple carbon-caches on this machine (typically behind a relay using
# consistent hashing), you'll need to list the ip address, cache query port, and instance name of each carbon-cache
# instance on the local machine (NOT every carbon-cache in the entire cluster). The default cache query port is 7002
# and a common scheme is to use 7102 for instance b, 7202 for instance c, etc.
#
# You *should* use 127.0.0.1 here in most cases
#CARBONLINK_HOSTS = ["127.0.0.1:7002:a", "127.0.0.1:7102:b"]
#CARBONLINK_HOSTS = ["127.0.0.1:7002:a"]
#CARBONLINK_TIMEOUT = 1.0

説明に書かれている内容はよくわかりませんが、7002番ポートはcarbon-cacheとgraphite-webの間の通信に使われているようです。

7002番ポートを使わなくてもグラフの表示はできる

7002番ポートは、carbon-cache - graphite-web間でメトリクスの受け渡しをするために使われるのだろうと想像することができますが、 実際は7002番ポートを使わなくてもグラフは表示されます。

例えば次のように CACHE_QUERY_PORT の値を7001に変えてみます。

CACHE_QUERY_PORT = 7001

こうすることで、graphite-webはcarbon-cacheに接続できなくなるはずですが、実際にWeb画面を開くとグラフが表示されてしまいます。

graphite-webはwhisperファイル*1を参照している

次のコマンドでwhisperファイルの参照権限を奪うと、graphite-webでグラフが表示されなくなります。

chmod -R o-r /var/lib/carbon/whisper

carbon-cacheのポートを変更してもgraphite-webがグラフを表示できたのは、直接whisperファイルを参照していたからのようです。

結局7002番ポートは何のためのもの?

graphite-webの設定のドキュメントに、次のような記述があります。

https://graphite.readthedocs.io/en/latest/config-local-settings.html

CARBONLINK_HOSTS

Default: [127.0.0.1:7002]

If multiple carbon-caches are running on this machine, each should be listed here so that the Graphite webapp may query the caches for data that has not yet been persisted.

永続化(persisted)されていない...つまり、whisperファイルに書き出されてない、carbon-cacheのメモリ上に保持されているデータをクエリするために使われているようです(多分)。

*1:Graphiteのデータベースのファイル形式

Copyright © 2017 ttk1