YANO's digital garage

Copyright ©YANO All rights reserved. https://www.bravotouring.com/~yano/

Last-modified: 2024-04-08 (月)


[一語一絵/IT系]

sensors再整備 / 2014-05-13 (火)

メディアサーバのUbuntu 10.04 LTS@GT110bからUbuntu 14.04 LTS@ProLiant ML110 G7への移行作業。apache2php5のバージョンアップが心配の種だったのだが、

$ sudo apt-get install apache2 apache2-utils libapache2-mod-php5 php5 php5-cli mysql-server mysql-client php5-mysql
$ sudo apt-get install yasm zlib1g-dev libfaac-dev libx264-dev
$ sudo apt-get install dovecot-core postfix nkf
あたりを入れた後、設定方法が若干異なったくらいでepgrecffmpeg 1.2.1も特に問題無く導入完了。

エンコードの確認もできたので、sensors関連ツールも再整備。

まずはcronな定期収集スクリプト/etc/cron.sh/sensors.cron。タイムスタンプとコア毎の温度を1行に出力するが、タイムスタンプはrsyslogと同じく「日付と時刻をTで繋ぐ」RFC3339形式で出力させる為、date"--rfc-3339=ns"を付与したのがポイント。

#!/bin/sh

LANG=C
LOGFILE=/var/log/sensors.log

TEMPERATURE=`/usr/bin/sensors | \
  awk '/Core /{i=substr($2,1,length($2)-1);temp[i]=$3;};END{for(j=0;j<=i;j++){printf "\\\t%s", temp[j]}print}' | \
    sed -e 's/\+//g'`

/bin/echo -e `date --rfc-3339=ns` ${TEMPERATURE} >> ${LOGFILE};
そして/etc/cron.d/sensorsで、cronから1分周期で起動し、温度をロギングするよう設定。
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

* * * * *   root        /etc/cron.sh/sensors.cron
続いて/etc/logrotate.d/sensorsでログファイルを月単位で分割し、12ヶ月分の履歴を保持する設定。
"/var/log/sensors.log" {
    monthly
    rotate 12
    missingok
    compress
}
最後に、分析スクリプト~/bin/logsensor.sh。コア毎の温度を集計し、最低、平均、最高温度を算出する。
#!/bin/bash

awk '
  BEGIN {
    min=999;max=0;sum=0;cnt=0;
  }
        {
    for (i = 3; i <= NF; i++ ){
      if($i < min){min=$i};
      if(max < $i){max=$i};
      sum += $i;
      cnt++;
    }

    date=$1;
    if(!length(start)){start=date;}
  }
  END     {
          printf "%s, %s, %f, %f, %f\n", start, date, min, sum/cnt, max;
  }
' $*
で、こんな風にやれば
$ logsensor.sh /var/log/sensors.log
2014-05-01, 2014-05-13, 29.750000, 39.770078, 59.500000
$ logsensor.sh /var/log/sensors.log.1 /var/log/sensors.log
2014-04-01, 2014-05-13, 25.750000, 38.719467, 59.500000
という具合にログ期間の最低、平均、最高温度を出力する。

【参照】
●UbuntuによるEco Linuxサーバ構築記 http://eco.senritu.net/
PT3 >> ubuntu13.10+pt3+epgrecの環境構築
●Ubuntu Wiki https://wiki.ubuntu.com/
Releases
LucidLynx 10.04
NattyNarwhal 11.04
PrecisePangolin 12.04
RaringRingtail 13.04
TrustyTahr 14.04
●Wikipedia http://ja.wikipedia.org/wiki/
Ubuntu
OpenStack