<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>2014/05/13 on Yano&#39;s digital garage</title>
    <link>https://www.bravotouring.com/~yano/archives/2014/05/13/</link>
    <description>Recent content in 2014/05/13 on Yano&#39;s digital garage</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Tue, 13 May 2014 23:53:01 +0900</lastBuildDate>
    <atom:link href="https://www.bravotouring.com/~yano/archives/2014/05/13/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>sensors再整備</title>
      <link>https://www.bravotouring.com/~yano/diary/it/20140513sensors.htm</link>
      <pubDate>Tue, 13 May 2014 23:53:01 +0900</pubDate>
      <guid>https://www.bravotouring.com/~yano/diary/it/20140513sensors.htm</guid>
      <description>&lt;p&gt;メディアサーバのUbuntu 10.04 LTS＠&lt;span class=&#34;Host&#34;&gt;GT110b&lt;/span&gt;からUbuntu 14.04 LTS＠&lt;a href=&#34;https://www.bravotouring.com/~yano/diary/it/20130223ml110g7.htm&#34;&gt;ProLiant &lt;span class=&#34;Host&#34;&gt;ML110 G7&lt;/span&gt;&lt;/a&gt;への移行作業。&lt;span class=&#34;Software&#34;&gt;apache2&lt;/span&gt;や&lt;span class=&#34;Software&#34;&gt;php5&lt;/span&gt;のバージョンアップが心配の種だったのだが、&#xA;&lt;blockquote class=&#34;Log&#34;&gt;$ sudo apt-get install apache2 apache2-utils libapache2-mod-php5 php5 php5-cli mysql-server mysql-client php5-mysql&lt;br/&gt;$ sudo apt-get install yasm zlib1g-dev libfaac-dev libx264-dev&lt;br/&gt;$ sudo apt-get install dovecot-core postfix nkf&lt;/blockquote&gt;あたりを入れた後、設定方法が若干異なったくらいで&lt;span class=&#34;Software&#34;&gt;epgrec&lt;/span&gt;や&lt;span class=&#34;Software&#34;&gt;ffmpeg&lt;/span&gt; 1.2.1も特に問題無く導入完了。&lt;/p&gt;&#xA;&lt;p&gt;エンコードの確認もできたので、&lt;a href=&#34;https://www.bravotouring.com/~yano/diary/it/20130517backport.htm&#34;&gt;sensors&lt;/a&gt;関連ツールも再整備。&lt;/p&gt;&#xA;&lt;p&gt;まずは&lt;span class=&#34;Software&#34;&gt;cron&lt;/span&gt;な定期収集スクリプト&lt;span class=&#34;Path&#34;&gt;/etc/cron.sh/sensors.cron&lt;/span&gt;。タイムスタンプとコア毎の温度を1行に出力するが、タイムスタンプは&lt;span class=&#34;Software&#34;&gt;rsyslog&lt;/span&gt;と同じく「日付と時刻をTで繋ぐ」RFC3339形式で出力させる為、&lt;span class=&#34;Software&#34;&gt;date&lt;/span&gt;に&lt;span class=&#34;Strong&#34;&gt;&#34;--rfc-3339=ns&#34;&lt;/span&gt;を付与したのがポイント。&#xA;&lt;blockquote cite=&#34;/etc/cron.sh/sensors.cron&#34; class=&#34;Log&#34;&gt;&#xA;#!/bin/sh&lt;br/&gt;&#xA;&lt;br/&gt;&#xA;LANG=C&lt;br/&gt;&#xA;LOGFILE=&lt;span class=&#34;Path&#34;&gt;/var/log/sensors.log&lt;/span&gt;&lt;br/&gt;&#xA;&lt;br/&gt;&#xA;TEMPERATURE=`/usr/bin/sensors | \&lt;br/&gt;&#xA;  awk &#39;/Core /{i=substr($2,1,length($2)-1);temp[i]=$3;};END{for(j=0;j&lt;=i;j++){printf &#34;\\\t%s&#34;, temp[j]}print}&#39; | \&lt;br/&gt;&#xA;    sed -e &#39;s/\+//g&#39;`&lt;br/&gt;&#xA;&lt;br/&gt;&#xA;/bin/echo -e `date --rfc-3339=ns` ${TEMPERATURE} &gt;&gt; ${LOGFILE};&lt;/blockquote&gt;そして&lt;span class=&#34;Path&#34;&gt;/etc/cron.d/sensors&lt;/span&gt;で、&lt;span class=&#34;Software&#34;&gt;cron&lt;/span&gt;から1分周期で起動し、温度をロギングするよう設定。&#xA;&lt;blockquote cite=&#34;/etc/cron.d/sensors&#34; class=&#34;Log&#34;&gt;SHELL=/bin/sh&lt;br/&gt;PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin&lt;br/&gt;&lt;br/&gt;&#xA;* * * * *   root        /etc/cron.sh/sensors.cron&lt;/blockquote&gt;&#xA;&lt;p&gt;続いて&lt;span class=&#34;Path&#34;&gt;/etc/logrotate.d/sensors&lt;/span&gt;でログファイルを月単位で分割し、12ヶ月分の履歴を保持する設定。&lt;/p&gt;&#xA;&lt;blockquote cite=&#34;/etc/logrotate.d/sensors&#34; class=&#34;Log&#34;&gt;&#34;/var/log/sensors.log&#34; {&lt;br/&gt;&#xA;    monthly&lt;br/&gt;&#xA;    rotate 12&lt;br/&gt;&#xA;    missingok&lt;br/&gt;&#xA;    compress&lt;br/&gt;&#xA;}&lt;/blockquote&gt;&#xA;最後に、分析スクリプト&lt;span class=&#34;Path&#34;&gt;~/bin/logsensor.sh&lt;/span&gt;。コア毎の温度を集計し、最低、平均、最高温度を算出する。&#xA;&lt;blockquote cite=&#34;~/bin/logsensor.sh&#34;&gt;&#xA;#!/bin/bash&lt;br/&gt;&#xA;&lt;br/&gt;&#xA;awk &#39;&lt;br/&gt;&#xA;  BEGIN {&lt;br/&gt;&#xA;    min=999;max=0;sum=0;cnt=0;&lt;br/&gt;&#xA;  }&lt;br/&gt;&#xA;        {&lt;br/&gt;&#xA;    for (i = 3; i &lt;= NF; i++ ){&lt;br/&gt;&#xA;      if($i &lt; min){min=$i};&lt;br/&gt;&#xA;      if(max &lt; $i){max=$i};&lt;br/&gt;&#xA;      sum += $i;&lt;br/&gt;&#xA;      cnt++;&lt;br/&gt;&#xA;    }&lt;br/&gt;&#xA;&lt;br/&gt;&#xA;    date=$1;&lt;br/&gt;&#xA;    if(!length(start)){start=date;}&lt;br/&gt;&#xA;  }&lt;br/&gt;&#xA;  END     {&lt;br/&gt;&#xA;          printf &#34;%s, %s, %f, %f, %f\n&#34;, start, date, min, sum/cnt, max;&lt;br/&gt;&#xA;  }&lt;br/&gt;&#xA;&#39; $*&lt;/blockquote&gt;&#xA;で、こんな風にやれば&lt;blockquote class=&#34;Log&#34;&gt;$ logsensor.sh /var/log/sensors.log&lt;br/&gt;2014-05-01, 2014-05-13, 29.750000, 39.770078, 59.500000&lt;br/&gt;$ logsensor.sh /var/log/sensors.log.1 /var/log/sensors.log&lt;br/&gt;2014-04-01, 2014-05-13, 25.750000, 38.719467, 59.500000&lt;/blockquote&gt;という具合にログ期間の最低、平均、最高温度を出力する。&#xA;&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
