ホーム » コンピュータ » icingaからgoogle-home-notifierで警告

サーバ⚙

アーカイブ

カテゴリー

icingaからgoogle-home-notifierで警告

あまりにも暑い日が続くなか、夜は涼しくなるかとエアコンを控えめにすると、暑さで目が覚めることもある。部屋の温度は、温度・湿度センサーで測っているし、google-home-notifier を使って暑さの警告をしゃべらせてみる。単純に温度が設定温度を越えたら…なんてプログラムだと、頻繁に喋られてもうるさいし、icinga から呼び出させてみた。

警告時にプログラムを起動

## /etc/icinga/commands.cfg 追記 ##
# 'notify-host-by-program' command definition
define command{
   command_name  notify-host-by-program
   command_line  /etc/icinga/commands-host.sh \
      "$HOSTNAME$" "$NOTIFICATIONTYPE$" \
      "$HOSTSTATE$" "$HOSTOUTPUT$"
   }

# 'notify-service-by-program' command definition
define command{
   command_name  notify-service-by-program
   command_line  /etc/icinga/commands-service.sh \
      "$HOSTNAME$" "$SERVICESESC$" "$NOTIFICATIONTYPE$" \
      "$SERVICESTATE$" "$SERVICEOUTPUT$"
   }
## /etc/icinga/objects/contacts_icinga.cfg 追記 ##
define contact{
   contact_name                    notifyProgram
   alias                           NotifyProgram
   service_notification_period     24x7
   host_notification_period        24x7
   service_notification_options    w,u,c,r
   host_notification_options       d,r
   service_notification_commands   notify-service-by-program
   host_notification_commands      notify-host-by-program
   email                           foobar@example.com
   }
define contactgroup{
   contactgroup_name       adminsProgram
   alias                   Administrators and Notify Program
   members                 root,notifyProgram
   }

温度センサーの設定

## /etc/icinga/objects/localhost_icinga.cfg ##
# USBRH
define service{
   use                    generic-service
   host_name              localhost
   service_description    USBRH
      check_command       check_usbrh2!32!35!81!85
      contact_groups      adminsProgram
   }
## /etc/icinga/commands-service.sh ##
#!/bin/bash
# icinga からプログラムにより警告
#    ((commands.cfg を参照))
#    /etc/icinga/commands-service.sh
#       "$HOSTNAME$" "$SERVICESESC$" "$NOTIFICATIONTYPE$"
#       "$SERVICESTATE$" "$SERVICEOUTPUT$"
case "$2-$3" in
  USBRH-PROBLEM )
    case "$4" in
      WARNING | CRITICAL )
        if [ "$4" == "CRITICAL" ]; then
          MESS="部屋の温度が危険です。"
        else
          MESS="部屋の温度に注意してください。"
        fi
        /usr/bin/printf "%s %.1f 度 %.1f %%" "$MESS" \
           `温度と湿度を取得するスクリプト` \
           | 標準入力をgoogle-home-notifierに送るスクリプト
        ;;
    esac
    ;;
esac

検索 🔎

  My Google     Yahoo

便利サイト

%d人のブロガーが「いいね」をつけました。