2017-03-15 9 views
6

docker statsを使用すると、時間の経過とともにコンテナのメモリ使用量を確認できます。ドッカーの統計情報からMAXメモリを見つける方法は?

docker statsの実行中にメモリ使用量の最高値を確認する方法はありますか?それはコンテナによって最高のメモリを与える

docker stats --no-stream | awk '{ print $3 }' | sed '1d'|sort | tail -1 

答えて

0

次のコマンドを使用することができます。

は私がコマンドを説明してみましょう:

--no-stream :   Disable streaming stats and only pull the first result 
awk '{ print $3 }' : will print MEM USAGE 
sed '1d' :    will delete first entry that is % 
sort :     it will sort the result 
tail -1 :    it will give last entry that is highest. 
+2

私はこれが何であれ、コンテナの現在の値が瞬時チェックで最もメモリを使用していることを教えてくれますね。私の質問は、ドッカーの統計情報が稼働している間に(非瞬間的に)すべてのコンテナの中で最高の記憶を探していることです。 – BMitch

+0

申し訳ありませんが、私はより具体的であったはずです。私は長時間にわたって単一のコンテナに対してドッカー統計を実行し、その時間に使用された最大メモリを把握したいと考えています。たぶん "時計"ドッカーの統計情報のようなものです。CONTAINER --no-stream | ????? – grayaii

0

私は@pl_rockによってhereと集約されたデータからサンプリングスクリプトを取りました。しかし、注意してください。sortコマンドは文字列の値を比較するだけなので、結果は通常間違っています(ただし私にとっては問題ありません)。 また、ドッカーが間違った番号を報告していることに気付くこともあります(つまり、物理RAMよりも多く割り当てられたmem)。ここで

はスクリプトです:

#!/bin/bash 

"[email protected]" & # Run the given command line in the background. 
pid=$! 

echo "" > stats 

while true; do 
    sleep 1 
    sample="$(ps -o rss= $pid 2> /dev/null)" || break 

    docker stats --no-stream --format "{{.MemUsage}} {{.Name}} {{.Container}}" | awk '{ print strftime("%Y-%m-%d %H:%M:%S"), $0 }' >> stats 
done 

for containerid in `awk '/.+/ { print $7 }' stats | sort | uniq` 
do 
    grep "$containerid" stats | sort -r -k3 | tail -n 1 
done 
関連する問題