Debian25周年
Debian/GNU Linux も25周年らしい。Linuxを使い始めたのは、0.98 の頃だったと思うけど フロッピーディスク 15枚ぐらいでインストールしてたと思う。途中からアップデートの容易さから、ディストリビューションを Debian に乗り換えたのは、Blog が残ってる 2003 年頃だと思う。Woody あたりか。potato も使った覚えが微妙にあるし、もう少し前かなぁ。
夜中にapacheが落ちる
php7.2→php7.0に戻す
色々と試すと、apache2 の reload 時に、”apache2ctl graceful” を実行すると、以下のようなエラーが出ている。Aug 9 18:48:39 perrine kernel: [xxx] apache2[xxx]: segfault at ... error 15 in mbstring.so[xxx]php7.x-mbstring が原因かと思い、消したりしたけど、別のエラーが出る。色々試しても改善せず、ひとまず、php7.2→php7.0 を行う。 そのくせ、php7.0 で動かなかった wordpress の 画像回転とかの php-gd 使ったのが動くようになってるし。
php7.0→php7.2
phpを、php5→php7.0 に更新してから、WordPress の画像回転編集ができなくなっていたが、php7.2 では、使っていた wordpress のプラグインで警告が表示されるのでやめていたけど、php7.2 に更新作業を行った。
警告がでるのが、php のコードを記述できる phpcode widget だった。この機能を使っていたのは、include( “…html” ) を使いたかったため。今回、include ではなく、iframe を使うようにすることで、phpcode を使わないようにした。
ただ、このphpcode のプラグインをアンインストールしようとすると、エラーがでてアンインストールが失敗する。しかたがないので、一時的に php7.2 → php7.0 に切り替えて、phpcode をアンインストールして、再び php7.0 → php7.2 に戻す必要があった。
www.googleapis.comの名前引き
自宅では、予定を google-home で自動で喋らせたりするために、gcalcli などのコマンドを使っている。しかし、最近エラーで予定取得に失敗することが増えた。python 関係のライブラリの更新の不整合かと思っていたが、どうも www.googleapis.com の問題のよう。
gcalcli がエラーになったり、成功したりと再現性がないので、エラーメッセージで www.googleapis.com に接続できないっていうし、”nslookup www.googleapis.com” を実行すると、名前引きに失敗する。しかしながら、”nslookup www.googleapis.com 8.8.8.8″ なら成功する。何度か調べていると、通常の nslookup でも名前がひけたりする。意味不明。
bind の設定は….以前、セキュリティ対策で導入した、”OpenDNS (Cisco Umbrella)”を使うようになっている。これが原因か…。bindの設定を修正して、安定して gcalcli が動くようになったかな。
# Cisco Umbrella は、怪しいサイトの可能性の場合、名前引きを失敗させる Open な DNS
Google API を使った攻撃があるのか? OpenDNS にグレー判定されてんの?
暑さの測定
以前購入した、Raspberry-Pi 内蔵の MZ-80C のミニチュアは、温度・湿度・気圧のセンサーを付けて、2Fのトイレに設置していたけど、WiFiが若干不安定だったので、常時サーバで記録はしていなかった。しかし、この暑さなので、エアコンの無い部屋の温度を測定したかったので、改めて設定してみた。
Raspberry-Pi の inetd の echo サーバの所に温度測定スクリプトを記載して、”/usr/bin/nc raspberry-pi 7″ で測定できるように設定し、munin 用のデータ取得スクリプトを書いて設定。このクソ暑い温度を測ってみた。
家の西側の2会のトイレに設置しているので、夕方が最高温度で、家の中でも34℃越え。湿度は、トイレのドアを開放すると、大きく変化するようだ。
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
dovecot 2.3 更新
dovecot を更新したら、2.2 → 2.3 で SSL 関連の設定が変更になったみたい。
以下の設定を追記
(( /etc/dovecot/conf.d/10-ssl.conf )) ssl_dh = </usr/share/dovecot/dh.pem ssl_min_protocol = TLSv1.2
XcXsrv の最新版を入れる
Bash on Windows やら、Linux 環境を Windows と絡めて使っていると、Windows 環境用の X Server が使いたくなる。以前は、Xming とか cygwin などを使っていたけど、設定などが大変なので、XcXsrv を使っていた。しかし、アプリによってはうまく動かず、tgif などはフォントが見つからないというエラーが出る。
調べると、gsfonts-x11 を入れるとか出てくるけど、ローカルサーバのお話。XcXsrv に gsfonts-x11 を入れるといいのだろうけど、これまた設定がややこしそう。
しかし、最新の XcXsrv-1.20 を入れたら、特にフォント入れなくても、問題なく動くじゃん。
DISPLAY環境変数の設定
そんなに X Server を使うわけじゃないけど、WSL環境と、Linuxサーバで DISPLAY 環境変数を設定する処理を .profile に書いとくか。
(( WSL環境の $HOME/.profile に追加 )) if [ -z "$DISPLAY" -a -n "$HOSTNAME" ]; then export DISPLAY=$HOSTNAME:0.0 fi (( Linuxの $HOME/.profile に追加 )) if [ -z "$DISPLAY" -a -n "$SSH_CLIENT" ]; then case $SSH_CLIENT in 192.168.*) export DISPLAY=`echo $SSH_CLIENT | cut -d' ' -f 1 `:0.0 ;; *) ;; esac fi
Windowsのwslコマンド
紹介記事で、最新のWindows での Windows Subsystem for Linux の使い方の説明があった。普通に bash.exe を起動する以外にも、wsl コマンドがあり、コマンド1つでも Linux の呼び出しができるんだ。
C:\User\foo> wsl ls -al Windows で ls -al を実行 -rwxr--r-- 1 foo foo 20 5月 1 06:05 ntuser.ini lrwxrwxrwx 1 foo foo 0 5月 1 05:40 スタート メニュー C:\User\foo> wsl vi test.c 普通にコーディングと実行もできる。 C:\User\foo> wsl gcc test.c C:\User\foo> wsl ./a.out C:\User\foo> type test.c | wsl grep "#" Windows と Linux 間でパイプをつなげることも可能
icinga の check_mailq が動かない
自宅サーバは、icinga で状態検知をしているけど、アップデートをしていたら、check_mailq が正常に動かなくなった。
動作確認のために、手作業で以下の命令を実行したけど、問題ない。
(( 手作業で確認 )) $ /usr/lib/nagios/plugins/check_mailq -w 2 -c 5 -M postfix OK: postfix mailq reports queue is empty|unsent=0;2;5;0 (( /var/log/icinga/icinga.log を確認 )) ... Warning: Check of service 'Postfix mailque' on host 'localhost' did not exit properly
icingaの組み込みPerl呼び出しが原因
icinga.log のメッセージをヒントに調べてみたら、icinga がプラグインの Perl Script を呼び出す時に、組み込み perl を使うことによって発生する。icinga は、定時処理の負荷低減のために、Perl で書かれたプログラムは、icinga に組み込まれた軽いPerl インタプリタを呼び出すが、これは簡易版Perlなので動かないプログラムもある。この場合、Perl Script の先頭に “# nagios: -epn” を入れることで、組み込みPerl呼び出しを抑止できる。
nagios-plugin の更新の中で、”-epn” が消されたのかな。