300Mのメモリ制限と CPU-1 コアでデプロイされた Docker コンテナがあります。コンテナが起動してプログラムが実行されると、メモリ制限が 300M に、CPU が 1 番目の CPU コアに適用されます。
ただし、コンテナー内で実行される collectd は、制限されたコンテナー (300MB RAM) ではなく、実際のボックス ( 16 GB RAM ) のメモリとスワップ メモリのメトリックをプッシュします。
不足している構成はありますか?
Docker 実行コマンド:
docker run -e CONTAINER_NAME='sample_docker_container' -m 300M --memory-swap=300M --cpuset-cpus="1" --net=host --name=sample_docker -p 4000:4000 -p 4001:4001 -p 4002:4002 sample_docker
グラファイト メトリック:
グラフに見られるように、メトリクスは 300MB を超える RAM に対してプッシュされています。実際のボックスで (4 GB を超える RAM を使用する) 高性能コードを実行すると、コンテナー内の collectd も使用される RAM を急増させます。
そのため、docker コンテナー内からメトリックを収集してプッシュすることはありません。
collectd.conf:
Hostname sample_docker_container
Interval 60
LoadPlugin logfile
<Plugin logfile>
LogLevel info
File STDOUT
Timestamp true
PrintSeverity false
</Plugin>
Include "/opt/comp/indis-docker/collectd/conf/collectd.d/*"
collectd_perf.conf:
LoadPlugin disk
LoadPlugin load
LoadPlugin memory
LoadPlugin swap
LoadPlugin vmem
LoadPlugin interface
<Plugin interface>
Interface "lo"
Interface "eth0"
Interface "eth1"
IgnoreSelected false
</Plugin>
LoadPlugin df
<Plugin df>
MountPoint "/dev"
MountPoint "/run"
MountPoint "/run/lock"
MountPoint "/run/shm"
IgnoreSelected true
ValuesPercentage true
</Plugin>
LoadPlugin cpu
LoadPlugin "aggregation"
<Plugin "aggregation">
<Aggregation>
Plugin "cpu"
Type "cpu"
SetPlugin "cpu"
SetPluginInstance "%{aggregation}"
GroupBy "Host"
GroupBy "TypeInstance"
CalculateMinimum true
CalculateMaximum true
CalculateAverage true
</Aggregation>
</Plugin>
LoadPlugin "match_regex"
PostCacheChain "Cpumetrics"
<Chain "Cpumetrics">
<Rule>
<Match "regex">
Plugin "^cpu$"
PluginInstance "^[0-9]+$"
</Match>
<Target write>
Plugin "aggregation"
</Target>
Target stop
</Rule>
Target "write"
</Chain>