サーバー監視の勉強始めました。
collectd + graphiteでメトリクスデータを描画するところまでできた。 pic.twitter.com/UCjhZGwink
— tama (@mscle11) 2020年3月2日
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のデータベースのファイル形式