2017-11-19 15 views
0

私のディスクの電源状態(スタンバイ、アクテイス)を収集するためのスクリプトを書きました。 これは、このスクリプトに基づいています/tmp/hddpwrstate.loghttps://github.com/collectd/collectd/blob/master/contrib/exec-smartctlcollectdのexecスクリプトをデバッグする方法

/usr/share/collectd/exec_hddpwrmode.sh

#!/bin/bash 
HOSTNAME="${COLLECTD_HOSTNAME:-$(hostname -f)}" 
INTERVAL="${COLLECTD_INTERVAL:-60}" 

while sleep "$INTERVAL" 
do 
    for disk in sda sdb sdc sdd sde sdf 
    do 
    STATE=$(sudo smartctl -i -n standby /dev/$disk | grep -e "Device is in STANDBY mode" -e "Power mode is: ACTIVE or IDLE" 2>/dev/null) 
    if [ "$STATE" = "Device is in STANDBY mode, exit(2)" ] 
     then 
     # STANBY 
     VALUE="0" 
     else 
     if [ "$STATE" = "Power mode is: ACTIVE or IDLE" ] 
      then 
      # ACTIVE or IDLE 
      VALUE="1" 
      else 
      # ERROR 
      VALUE="U" 
     fi 
    fi 
    echo "PUTVAL $HOSTNAME/disk-$disk/disk-state interval=$INTERVAL N:$VALUE" | tee -a /tmp/hddpwrstate.log 
    done 
done 

出力がよさそうです。私はアクセス許可の問題を持っていないことを意味

PUTVAL magneto/exec-smart/pwrstate_sdf interval=10.000 N:0 
PUTVAL magneto/exec-smart/pwrstate_sda interval=10.000 N:0 
PUTVAL magneto/exec-smart/pwrstate_sdb interval=10.000 N:1 
PUTVAL magneto/exec-smart/pwrstate_sdc interval=10.000 N:0 
PUTVAL magneto/exec-smart/pwrstate_sdd interval=10.000 N:0 
PUTVAL magneto/exec-smart/pwrstate_sde interval=10.000 N:0 
PUTVAL magneto/exec-smart/pwrstate_sdf interval=10.000 N:0 

は(スクリプトは、sudoを使用することができ、ユーザが実行する必要があります)。 それはcollectdによって実行されます

しかし、/var/lib/collectd/rrd/<hostname>に新しいrrdファイルがなく、InfluxDBに新しい測定値がありません。

> show measurements 
name: measurements 
name 
---- 
cpu_value 
df_value 
disk_io_time 
disk_read 
disk_value 
disk_weighted_io_time 
disk_write 
entropy_value 
interface_rx 
interface_tx 
irq_value 
load_longterm 
load_midterm 
load_shortterm 
memory_value 
processes_value 
rrdcached_value 
swap_value 
uptime_value 
users_value 

デバッグを有効にしようとしました。

<Plugin syslog> 
    LogLevel debug 
</Plugin> 

しかし、それは役に立ちません。

Nov 19 12:13:12 magneto collectd[30028]: Exiting normally. 
Nov 19 12:13:12 magneto collectd[30028]: collectd: Stopping 5 read threads. 
Nov 19 12:13:12 magneto collectd[30028]: exec plugin: Sent SIGTERM to 30042 
Nov 19 12:13:12 magneto collectd[30028]: collectd: Stopping 5 write threads. 
Nov 19 12:13:13 magneto collectd[31752]: Stopping statistics collection and monitoring daemon: collectd. 
Nov 19 12:13:13 magneto collectd[31767]: syslog: invalid loglevel [debug] defaulting to 'info' 
Nov 19 12:13:13 magneto collectd[31768]: syslog: invalid loglevel [debug] defaulting to 'info' 
Nov 19 12:13:13 magneto collectd[31769]: Initialization complete, entering read-loop. 
Nov 19 12:13:13 magneto collectd[31764]: Starting statistics collection and monitoring daemon: collectd. 

私のスクリプトはなぜ機能しませんか? 問題がここにありますか? または、問題を自分で見つけるためにどのようにデバッグできますか?

私のシステム:Debian 8 with OpenMediaVault。

+0

見てみてください。http://www.shellcheck.net/ – Cyrus

+0

感謝を。そのサイトを知らなかった。 スクリプトに残っている問題はありません。 まだcollectdで動作していません。 –

答えて

1

私はそれを働かせました。

私のPUTVALのようなLoksは正しくありませんでした。

これが今取り組んでいる:

echo "PUTVAL $HOSTNAME/exec-$disk/gauge-disk_state interval=$INTERVAL N:$VALUE" | tee -a /tmp/hddpwrstate.log 
関連する問題