macOS Mojaveでmrtg

  • 投稿日:
  • カテゴリ:

macOSでmrtgを動かし、システム温度の記録を取る作業記録。

(1) macOSでウェブサーバーを動かします
(2) mrtgをインストール
(3) iStatsをインストール
(4) データを取得し、mrtgに渡す

(1) macOSでウェブサーバーを動かします
macOSにはウェブサーバーが内蔵されています。この作業はネット上にたくさん情報があるので、ここでは説明を省略します。

(2) mrtgをインストール
MacPortsやHomebrewなどでインストール可能です。

MacPortsなら、管理者権限で
port install mrtg
とします。
(3) iStatsをインストール
ターミナルで、
gem install iStats
でインストールできるはずなのですが、majaveではdarwinのバージョンが異なるため、エラーが出ます。そこでシステム整合性保護を解除してから、特定のフォルダをコピーする必要があります。「システム整合性保護の無効化」で検索すると解除方法が図入りで解説されているサイトがあります。 解除したあと、コピー作業をします。
cd /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/include/ruby-2.3.0/
cp -R universal-darwin17 universal-darwin18
これでiStatsのインストールが成功するはずです。 改めて
gem install iStats
を実行。

(4) データを取得し、mrtgに渡す
rootのホームフォルダにmrtgというフォルダを作ります。
/var/root/mrtg となります。ここにある程度必要なスクリプトをまとめたいと思います。

mkdir /var/root/mrtg
cd /var/root/mrtg
vi getcputemp.sh
/usr/bin/istats cpu --value-only
/usr/bin/istats scan TCGc --value-only
echo
echo
vi getfanspeed.sh
/usr/bin/istats fan speed --value-only
echo 0
echo
echo
vi gethddtemp.sh ←istatsの機能ではなく、smartmontoolから取得
#/bin/sh
/usr/local/sbin/smartctl -a /dev/disk0 | grep Temperature_Celsius | awk '{print $10}'
/usr/local/sbin/smartctl -a /dev/disk1 | grep Temperature_Celsius | awk '{print $10}'
echo
echo
echo
vi /usr/local/mrtg/mrtg.cfg
WorkDir: /Library/WebServer/Documents/mrtg
Options[_]: growright, noinfo

### System Temperature ###
Target[cputemp]: `/var/root/mrtg/getcputemp.sh`
MaxBytes[cputemp]:100
WithPeak[cputemp]: ymw
Options[cputemp]:  gauge, growright, noinfo , nopercent, absolute
Title[cputemp]: System Temperature
PageTop[cputemp]: <H1>System Temperature</H1>
ShortLegend[cputemp]: C
YLegend[cputemp]: Temperature
LegendI[cputemp]: CPU
LegendO[cputemp]: GPU
Legend1[cputemp]: CPU(Celsius)
Legend2[cputemp]: GPU(Celsius)


### HDD Temperature ###
Target[hddtemp]: `/var/root/mrtg/gethddtemp.sh`
MaxBytes[hddtemp]: 100
Title[hddtemp]: HDD Temperature
PageTop[hddtemp]: <h1>HDD Temperature</h1>
Options[hddtemp]: growright,absolute,gauge,nopercent,noinfo
WithPeak[hddtemp]: ymw
YLegend[hddtemp]: Temperature
ShortLegend[hddtemp]: C
LegendI[hddtemp]: Temperature(Disk0)
LegendO[hddtemp]: Temperature(Disk1)
Legend1[hddtemp]: HDD Temperature in Degrees Celcius(Disk0)
Legend2[hddtemp]: HDD Temperature in Degrees Celcius(Disk1)

### FAN Speed ###
Target[fan]: `/var/root/mrtg/getfanspeed.sh`
MaxBytes[fan]: 5000
Title[fan]: FAN Speed
PageTop[fan]: <h1>FAN Speed</h1>
Options[fan]: nopercent, gauge, absolute, withzeroes, noinfo, growright
WithPeak[fan]: ymw
YLegend[fan]: rpm
ShortLegend[fan]: rpm
LegendI[fan]: Fan Speed 1
LegendO[fan]: Fan Speed 2
Legend1[fan]: Fan Speed 1
Legend2[fan]: Fan Speed 2
vi make_index.sh
#/bin/sh
/opt/local/bin/indexmaker --addhead="<META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=euc-jp\">" /usr/local/mrtg/mrtg.cfg > /Library/WebServer/Documents/mrtg/index.html

作ったスクリプトには、実行権を与えておきます。

これをcronで5分おきに回します。ただ、最近はlaunchdを使うことが推奨されているようです。とりあえずcronで。

crontab -e
*/5 * * * * env LANG=C /opt/local/bin/mrtg /usr/local/mrtg/mrtg.cfg

リンクソース

  • 記事用リンクソース:
  • Wiki用リンクソース(PukiWiki):
  • Wiki用リンクソース(MediaWiki):
  • SNS投稿用: