1

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

グラファイト メトリック:

コンテナの Collectd メトリクス

グラフに見られるように、メトリクスは 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>
4

0 に答える 0