ラベル Ganglia の投稿を表示しています。 すべての投稿を表示
ラベル Ganglia の投稿を表示しています。 すべての投稿を表示

2024-12-12

iCalendar形式ファイルを使ってGoogleカレンダーに一括登録したいが、アラームが設定されてしまう

Windows上でSchedule Watcherというスケジュール管理アプリケーションを利用しています。これで登録してあるスケジュールをGoogleカレンダーにも一括して登録したいと思います。iCalendar形式ファイルを使えば、Schedule Watcher側でエクスポートしたファイルをGoogleカレンダー側でインポートできましたので、これで解決かと思いました。

 

問題なのは、Googleカレンダー側で勝手にアラーム設定されてしまうことです。Googleカレンダーの設定にある「通知設定」で「通知」を「OFF」にしてあるのですが、iCalendarファイルを読み込む際にアラームが設定されてしまうようです。Schedule Watcherが出力したiCalendarファイルには「アラーム」に関する情報は入っていないので、Googleカレンダー側で親切に(?)アラームを設定しているようです。

 

Googleカレンダーのようなアプリケーションを操作するために「Google Apps Script」というものがあるようです。これを使えば、おそらく対処できるのでしょう。これまでGASを利用したことがないので、ちょっと敷居が高いです。


Googleカレンダー側からiCalendarファイルをエクスポートしてみると、「アラーム設定」の情報は「BEGIN:VALARM」から「END:VALARM」の間にあるようです。このような情報は、もちろん、Schedule Watcher側でエクスポートしたiCalendarファイルには入っていません。Googleカレンダーが出力したファイルには「ACTION:DISPLAY」とあり、その他にも「TRIGGER」なども指定されています。もしかすると、Schedule Watcherが出力したiCalendarファイルを加工して、無理矢理「BEGIN:VALARM」~「END:VALARM」を付け加えれば、Googleカレンダーにインポートしても、勝手にアラームが追加されることはないかもしれません。

 

それでは「ACTION」に何を設定すれば良いのでしょうか。参照できる資料がわかりませんが、「ACTION:NONE」とかではどうでしょうか。試しに、Schedule WatcherがエクスポートしたiCalendarファイルをエディタで編集し、次のようなものを付け加えてみました。これをGoogleカレンダーでインポートしてみましたが、エラーが出ることもなく、勝手にアラームが設定されることもないようです。

BEGIN:VALARM

ACTION:NONE

END:VALARM


ワークフローとしては、次のようになると思います。この方法なら、スケジュールをSchedule WatcherとGoogleカレンダーで同期できそうです。GoogleカレンダーからSchedule Watcherへの同期は考えていないのですが、スケジュールを変更した際には再同期が必要になります。ただし以前にGoogleカレンダーに登録したスケジュールが残っていると、再同期することで重複が生じてしまうので、この問題を解決しておかなければなりません。これはGASを使わないと解決できなさそうです。

  1. Schedule Watcher側でエクスポート
  2. iCalendar形式ファイルを加工(WSL2のUbuntu上でsedでも使おうかと思います。)
  3. Googleカレンダー側でインポート

2023-08-08

Ubuntu 22.04でGanglia Webが動かない

サーバの情報をモニタする「Ganglia」というパッケージがあります。これをUbuntu 22.04環境にインストールしようとしたら、gmondやgmetadなどのデーモンは動いたのですが、Webフロントエンドが動きませんでした。原因は、Ubuntu 22.04でインストールされるPHP8.1にGanglila-webfrontendが対応していないためです。

 

Webを検索すると、PHP7やPHP8でGanglia-webfrontendが動作しないという訴えが見つかりますし、部分的なパッチも見つかります。しかしPHP8の下でGangalia-webfrontendが動作しているという報告は見つかりませんでした。PHP8は過去バージョンとの互換性がないところがあるようです。そこを手作業で修正して動くのであれば良いのですが、どうも手強そうです。

 

ならばUbuntu 22.04にPHP5をインストールすれば良いかもしれません。Webには「UbuntuでPHP5と7を共存(同居)させてみた」のような情報がありますから、なんとかなりそうです。Ubuntuの公式リポジトリにはPHP8.1しかありませんが、PHPの過去バージョンを持っているPPAリポジトリを使えるようにすれば、PHP5.6をインストールできました。

 

Apacheから参照されるモジュールが、PHP8.1用とPHP5.6用がインストールされることになるので、PHP5.6用を有効にしておきます。もちろんPHP8.1用は無効にします。そしてApacheを再起動させると、無事にGanglia-webfrontendが動きました。

2021-01-28

/self/proc/mountstats

CentOS 7.4でGangliaを利用しています。Pythonでスクリプトを組むとグラフ表示できるメトリックを追加できるので、NFS操作で使われるRPCに関する情報をファイル「/proc/self/mountstats」から取得してみました。


作成したPythonスクリプトをGangliaの所定のディレクトリに配置して動かしてみました。ごころがログ「/var/log/messages」に次のようなエラーが記録されます。

centos74 /usr/sbin/gmond: [PYTHON] Can't call the metric handler function for [get_delta] in the python module [nfsiostat].


このエラーメッセージだけでは、何か問題があるのだろう、ということはわかりますが、何が悪いのか分かりません。そこで設定ファイル「/etc/ganglia/gmond.conf」でプロパティ「debug_level」に設定値「1」を指定して再起動したら、より詳しい情報が記録されました。それによるとファイル「/proc/self/mountstats」を読もうとして「許可がありません」というエラーになっています。特殊ファイルシステム「/proc」において、「self」というのは自プロセスの事である筈なので、許可がなくて読めないというのは解せません。


念のために確認してみました。するとプロセスの所有者が「ganglia」で、ファイルの所有者が「root」でした。なぜプロセスとファイルの所有者が異なるのかわかりませんが、「許可がありません」というエラーになることはわかります。

[root@centos74 ~]# ps auxww | grep gmond

ganglia   1237  0.3  0.5 291312 10588 ?        Ssl  15:32   0:04 /usr/sbin/gmond

[root@centos74 ~]# ls -l /proc/1237/mountstats 

-r--------. 1 root root 0 Jan 28 15:33 /proc/1237/mountstats

[root@centos74 ~]# ls -ld /proc/1237

dr-xr-xr-x. 9 ganglia ganglia 0 Jan 28 15:32 /proc/1237


デーモンプロセス「/usr/sbin/gmond」を起動するのは管理者「root」だとおもいます。しかしプロセスの所有者が「ganglia」になっているということは、起動後の何らかのタイミングで所有者を変更したのでしょう。ところがファイル「/proc/1237/mountstats」 の所有者が「root」のままになっている(「ganglia」に変更されていない)のが原因だろうと思います。何故かディレクトリ「/proc/1237」は所有者「ganglia」になっているのですが・・・