rspamd の Web GUI にアクセスしてみる

rspamd をアップデートしたことで、使えるようなった機能があるので、いろいろと試してみよう

アップデートだけで結構な分量になってしまったので、フィルタについては別エントリーにて。バージョン上がったことで追加された機能もあるようなので、そのあたりの話もおいおい書いてきたいですね〜。

[From rspamd と rmilter をアップデート - Soukaku's HENA-CHOKO Blog]

ということで、まずは Web GUI から

Web GUI を有効にしてみる

と言っても、実際のところデフォルトの設定の状態でも、Web GUI は待受ポート 11334 で起動していて、下のような形で待ち受けしています。ただ、そのままでは localhost からの接続要求しか受け付けてくれないので、外部からも見れるように設定を変える必要があるというわけです。

root@vps2:~# lsof -i:11334
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
rspamd 13943 root 9u IPv4 905829 0t0 TCP localhost:11334 (LISTEN)
rspamd 13943 root 10u IPv6 905830 0t0 TCP localhost:11334 (LISTEN)
rspamd 13945 _rspamd 9u IPv4 905829 0t0 TCP localhost:11334 (LISTEN)
rspamd 13945 _rspamd 10u IPv6 905830 0t0 TCP localhost:11334 (LISTEN)
rspamd 13946 _rspamd 9u IPv4 905829 0t0 TCP localhost:11334 (LISTEN)
rspamd 13946 _rspamd 10u IPv6 905830 0t0 TCP localhost:11334 (LISTEN)
rspamd 13948 _rspamd 9u IPv4 905829 0t0 TCP localhost:11334 (LISTEN)
rspamd 13948 _rspamd 10u IPv6 905830 0t0 TCP localhost:11334 (LISTEN)
rspamd 13949 _rspamd 9u IPv4 905829 0t0 TCP localhost:11334 (LISTEN)
rspamd 13949 _rspamd 10u IPv6 905830 0t0 TCP localhost:11334 (LISTEN)

手っ取り早いのは、 rspamd 自身が待ち受けしている 11334/tcp を localhost 以外からアクセスできるよう設定することなんだけど、それはそれで芸がないし、無制限にアクセスを許可するのもよろしくないので、rspam の FAQ の中にある WebUI questions の部分に記述されている httpd からリダイレクトさせる方法で。

ところが、実際 Apache に対して設定してみたのだけど 500 Internel Server Error が出て上手く行かなかったので、結局 rspamd 側の設定でポート開放して、 iptables でアクセス元を絞る形に。

rspamd と rmilter をアップデート

ここ 2 年半ぐらい、rspamd を使い続けているサーバ、動作上特に不満があるわけでもなかったのだけど、

以前、インストールメモをエントリーとしてあげていた、 rspamdrmilter の組み合わせ、なかなか調子良く動作してくれている。

[From rspamd + rmiter の組み合わせに、ClamAV を連携させてみた - Soukaku's HENA-CHOKO Blog]

2週間ほど前から、そのサーバが受信・配送したメールに Spam がチラホラ紛れ込んでくるようになったので、「こりゃ自前でフィルタ書かんと駄目かな~」と思いつつ、公式サイトをチェックしてしてみたら…。

Rspamd is also available in some versions of Debian and Ubuntu. However, we are looking for an active maintainer for rspamd in these ‘official’ repos, as now rspamd is terribly outdated there.

Please DO NOT use those packages, as they are no longer supported.

[From Downloads]

「パッケージ、アップデートされねぇなぁ、 sid なのに…」とは感じてたんですけどね、「メンテナ探してるんだけど、 Debian/Ubuntu の公式サイトで配布してるのは古いんで使わないでね。」という状況だったはつゆ知らず…。

ということでフィルタを書く前に、公式サイトに書いてある手順を元に、最新バージョンの rspamd / rmilter にアップデートしてみた。

ということで、以下作業手順とログ

まず、現時点で、インストール済みのバージョンは、以下の通り。

root@vps2:~# dpkg -l rspamd rmilter
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name               Version        Architecture   Description
+++-==================-==============-==============-=========================================
hi  rmilter            1.6.3          amd64          Another sendmail milter for different mai
hi  rspamd             0.9.9+b1       amd64          Rapid spam filtering system

公式サイトで見ると、 rspamd は 1.4.4 、rmilter は 1.10 が最新のようなので、随分とバージョンが上がってますね…。

PIXEL for PC and Mac を HDD からブートさせてみた

PIXEL for PC and Mac を動かしてみました。
そもそもRaspbian 自体が Debian ベースなんで、x86 対応は技術的には難しことではなかったわけですから、 PIXEL for PC and Mac の登場はある意味自然な流れなのかな、という感じ。 Linux のディストリビューションの一つとしてみると、初学者向けのプログラミング学習に重点を置いたもの、という見方もできるかな、と。

同団体創設者のエベン・アプトンCEOは、PIXELを使ってもらうためにRaspberry Piを買ってもらわなくても、既に手元にあるx86マシンにインストールしてもらえばいいと思いつき、3カ月かけてx86版を開発したと語る。

[From Raspberry Piの「PIXEL」が旧型PCやMacで稼働可能に - ITmedia ニュース]

And bringing PIXEL to the PC and Mac keeps us honest. We don’t just want to create the best desktop environment for the Raspberry Pi: we want to create the best desktop environment, period. We know we’re not there yet, but by running PIXEL alongside Windows, Mac OS, and the established desktop GNU/Linux distros, we can more easily see where our weak points are, and work to fix them.

[From PIXEL for PC and Mac - Raspberry Pi]

累計出荷数が 1,000 万台越えたとはいえ、買わないと使うことの出来ない Raspberry Pi と同等なデスクトップ環境を、 PC でも気軽に試せるようになったというのは、良い話ではないかと思います。利用者が増えれば PIXEL の改良に役立つフィードバックが得られやすくなりますし、いわゆる「パソコン」としての利用を考えれば、 Raspberry Pi よりも PC プラットフォームの方がパフォーマンス的には優位性ありますしね。

Zabbix のダッシュボード代わりに grafana を使えるようにしてみる(その2)

ということで、前回からの続きです。

"Installed Apps" のところに、おなじみのアイコンと Zabbix と表示されていれば、プラグインのインストールも無事に完了しています。

[From Zabbix のダッシュボード代わりに grafana を使えるようにしてみる(その1) - Soukaku's HENA-CHOKO Blog]

とりあえず、インストールして Zabbix プラグインまでのインストールまで完了した状態になったわけですが、ここからもう少し設定をいじっていきます。

バックエンドのデータベースを MariaDB に変更

インストールした素のままだと、バックエンドに使っているデータベースは sqlite3 が使われるようになっているのですが、ここを MariaDB (or MySQL) に変更してみます。もちろん、必須ではないですけどね。

まず、 MariaDB に grafana 用の grafana というデータベースを作成。そこに、 session という名前のテーブルをひとつだけ作成します。

soukaku@vpsdb:~$ mysql -uroot -p
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 731303
Server version: 10.0.28-MariaDB-2 Debian unstable

Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> create database grafana character set utf8; Query OK, 1 row affected (0.01 sec)
MariaDB [(none)]> grant all privileges on grafana.* to grafana identified by '**********'; Query OK, 0 rows affected (0.01 sec)
MariaDB [(none)]> use grafana Database changed MariaDB [grafana]> create table `session` ( `key` char(16) not null, `data` blob, `expiry` int(11) unsigned not null, primary key (`key`) ) ENGINE=MyISAM default charset=utf8; Query OK, 0 rows affected (0.01 sec)
MariaDB [grafana]> show tables; +-------------------+ | Tables_in_grafana | +-------------------+ | session | +-------------------+ 1 row in set (0.01 sec)
MariaDB [grafana]> quit Bye

session テーブルを作る必要がある点は、ドキュメントに記載されてますので、それも参考に。データベースへのアクセス権の設定は、各自調べてください。
今回のうちの環境では、grafanaが稼働するサーバと、DB サーバを別にしているので、そのあたりにも注意。

Zabbix のダッシュボード代わりに grafana を使えるようにしてみる(その1)

Zabbix に関して言えば、このところずっと開発版を追っかけているわけですけど、ダッシュボードでグラフを表示させた後、グラフの自動再描画がかかっても、ずっと更新されずにいる、という状況が起きています。DB を MySQL から MariaDB に変えたタイミングぐらいから、のような気もするんですが、いまいち原因が判らずに困っているわけですが…。

それとは別に、 grafana というダッシュボードを統合できるツールがあるということで、コレを機会にちょっと使ってみようか思いまして、インストールしてみた次第。

kibana等でも使用されているOSSのダッシュボードツールです。zabbixだけでなく、ElasticsearchやGraphite、AWS CloudWatchなど複数のデータソースのものを可視化することができます。ライブデモもあるので、実際どういうものか気になったらまずは見てみてください。

[From grafanaを使用してzabbixのモダンなダッシュボードを簡単作成! - Catcher in the tech]

複数の Zabbix サーバのコンソールを統合できるようなので、そのあたりにも興味があったりしますし。

さくっとインストール

まず、 grafana 関連のパッケージがどれだけあるのか、チェック。

root@vps2:~# aptitude search grafana
p   grafana                                 - feature rich metrics dashboard and graph editor
p   grafana-data                            - feature rich metrics dashboard and graph editor -
p   grafana-zabbix                          - Zabbix datasource for Grafana

結果からみれば、 grafana-zabbix を指定してインストールすれば、依存関係の解消が行われるので、念のためシミュレーションモードで、どんなパッケージがインストールされるのかを確認。

root@vps2:~# aptitude -s install grafana-zabbix
以下の新規パッケージがインストールされます:
  adwaita-icon-theme{a} at-spi2-core{a} dconf-gsettings-backend{a} dconf-service{a}
  fonts-font-awesome{a} glib-networking{a} glib-networking-common{a}
  glib-networking-services{a} golang-1.7-go{a} golang-1.7-src{a} golang-go{a} golang-src{a}
  grafana{a} grafana-data{a} grafana-zabbix gsettings-desktop-schemas{a}
  gstreamer1.0-plugins-base{a} libatk-bridge2.0-0{a} libatspi2.0-0{a} libcairo-gobject2{a}
  libcdparanoia0{a} libcolord2{a} libdconf1{a} libepoxy0{a} libevdev2{a} libglew2.0{a}
  libgstreamer-plugins-base1.0-0{a} libgstreamer1.0-0{a} libgtk-3-0{a} libgtk-3-bin{a}
  libgtk-3-common{a} libgudev-1.0-0{a} libinput-bin{a} libinput10{a}
  libjs-jquery-metadata{a} libjs-jquery-tablesorter{a} libjs-twitter-bootstrap{a}
  libjson-glib-1.0-0{a} libjson-glib-1.0-common{a} libmtdev1{a} libproxy1v5{a}
  libqt5core5a{a} libqt5dbus5{a} libqt5gui5{a} libqt5network5{a} libqt5opengl5{a}
  libqt5printsupport5{a} libqt5qml5{a} libqt5quick5{a} libqt5sql5{a} libqt5sql5-sqlite{a}
  libqt5svg5{a} libqt5webkit5{a} libqt5widgets5{a} librest-0.7-0{a} libsoup-gnome2.4-1{a}
  libsoup2.4-1{a} libvisual-0.4-0{a} libwacom-bin{a} libwacom-common{a} libwacom2{a}
  libwayland-cursor0{a} libxcb-icccm4{a} libxcb-image0{a} libxcb-keysyms1{a}
  libxcb-render-util0{a} libxcb-util0{a} libxcb-xinerama0{a} libxcb-xkb1{a}
  libxkbcommon-x11-0{a} libxkbcommon0{a} mesa-utils{a} phantomjs{a}
  qt5-gtk-platformtheme{a} qttranslations5-l10n{a}
更新: 0 個、新規インストール: 75 個、削除: 0 個、保留: 96 個。
アーカイブの 79.5 MB を取得する必要があります。展開後に 346 MB のディスク領域が新たに消費されます。

注意: 'シミュレーション' モードを使用します。 先に進みますか? [Y/n/?] y パッケージのダウンロード/インストール/削除を行います。

今回、grafana のインストールを試みるサーバでは 75個のパッケージを追加することになるようですね。
あとは、シミュレーションモードを外して、"aptitude install grafana-zabbix" でインストール。

インストールが完了すると、grafana が自動的に起動、3000/tcp に web ブラウザでアクセスして、ログイン画面が表示されれば、まずは OK 。

ansible のお試しがてら、 Raspberry に Python MPI 環境を作ってみる

サーバを同一用途で複数台用意してある環境って、仕事関係ではフツーにある環境なわけですが、それらの設定変更となると、同じ手順を台数分だけ繰り返し。なるべく作業者のレベルに左右されないような手順を用意したとしても、稀に手順ミスってトラブルなんてことも起きちゃうわけですよ。
作業者しても、出来る限り楽したいですし、定型化可能な作業だったら、コマンド一発で対象全台に設定適用したり、必要なファイルを配布したり出来れば、余計な手順やミス発生のリスクも減らせて、万々歳。

というわけで、オープンソース界隈でも「構成管理ツール」と言われるものが、いくつか開発されているんですが、その中でも ansible が、最近はお薦めらしので、ちょっといじってみようかと思った次第。

Ansible seamlessly unites workflow orchestration with configuration management, provisioning, and application deployment in one easy-to-use and deploy platform.

[From Ansible Use Cases]

Ansible(アンシブル)は、レッドハットが開発するオープンソースの構成管理ツールである。構成管理に加え、オーケストレーションやソフトウェアデプロイメントの機能を持つ。

[From Ansible (ソフトウェア) - Wikipedia]

同じようなツールだと、 Chef や Puppet と言うものもあるようですが、

  • エージェントレスで、管理したい側へは ssh 接続出来れば良い

と、利用するまでの敷居が低い、というのもお薦めのポイントになっているようです。

とりあえず、ラズパイ Cluster (モドキ)を構成してみる準備

まずは構成

今のところ、Raspberry Pi3 は1台しかないので、それを管理対象に。それと別に管理サーバとして Debian sid を仮想マシンで準備して、ここに ansible をインストール、という非常にミニマムな構成です。

ansibleのテスト環境

図にも書いてある通り、ホントは何台も並べて、クラスタリングしたいんですけどね…。

これに関してはどっちかというと、親である自分のほうが複数台並べて Rasp Pi クラスタ組んでみたいという気持ちのほうが大きかったりしますけど、息子もプログラミング自体には興味があるようなので、作ったクラスタで一緒に遊ぶってのも出来るなぁ、とかとか。

[From 子供に PC を渡そうと思ってるんですけどね - Soukaku's HENA-CHOKO Blog]

ま、 ansible に慣れることが目的なので、このまま進めます。

HA8000の中古を手に入れるなど

ヤフオクも上手く立ち回れば、かなりの掘り出し物を手にすることが出来るわけですが、今回はホント上手くいったということで、HA8000/TS10 AK1 という日立の IA サーバの中古を入手することに成功しました。

2010 年後半に出たモデルですが、Xeon X3430 が載ってて、それに LSI Logic の MegaRAID SAS 2108 が載って RAID も組めるぜ〜、というのが、送料込みで 3,000 円以内で手に入ったんだから、これはもう小躍りするほかないという状況。あと、出品者側の説明にはなかった SCSI I/F と DAT72 ドライブが載ってたというオマケも付きましたし…。(ただ、媒体の容量的には DAT72 、微妙なんだよねぇ…。)

ここ二週ほど、ちまちまと動作の確認をしていたんですが、DVD-ROM ドライブが動作不良でメディアを認識出来ない状態だったこと以外は、特に問題なし。
USB - SATA 変換ケーブル経由で繋いだスーパードライブ使えば、OS インストールできるし、何故か余らせてた ECC 付き の DDR3 DIMM も難なく認識してくれたし、HDD もこれまた手持ちの SATA の 1TB のものをホットスワップベイに挿して問題なく認識してくれたので、手持ちのコマで通常利用可能な状態まで持っていけたというのも、(お財布的に)かなり助かったなぁ、と…。

この先、どうするか、ですが

そもそも、新しく機材を調達しようと思ったのは、 Mac mini や LIFEBOOK で動かしていた VirtualBox による実験環境を集約。これにより、 LIFEBOOK を用途的に浮かすことが出来れば、家族が使っている調子の悪い ThinkPad をそれで置き換えられるな、というのが発端。
そこになんともタイミング良く、今回入手した HA8000 がヤフオクに出品された、というわけ…。

結局、GoogleAnalyticsプラグインが悪さしていたようで

MySQL から MariaDB にリプレースしたら MovableType のダッシュボードにアクセスできなかった件、実際には管理画面だけでなく、ブログ内の記事検索なんかもうまく動かないという状況だったわけですが…。

"GoogleAnalytics::Provider" に対応する Perl モジュールは存在しているので、内部的に何か不整合があって、うまくアクセスできないという状況の模様。

MovableType と MariaDB の組み合わせでエラー? - Soukaku's HENA-CHOKO Blog

復旧させるために色々試行錯誤。仮想マシン上に Debian sid インストール。そこにトラブっているのとほぼ同等の環境準備して、新規に MovableType インストールしてみたり、テスト環境と本番の間で DB のエクスポート/インポート繰り返してみたり、とやっていたわけですが…。
ふと「MovableType を今とは別のディレクトリにインストールして、テンプレート類はコピー、設定ファイルの PATH だけ書き換えてみたら動くかも?」と思いついて、実際にやってみたところ、管理画面へのログイン成功!

MovableType と MariaDB の組み合わせでエラー?

MariaDB へリプレースして特に問題ないや~、と思っていたら、なぜか MovableType の管理画面へのアクセスができなくなった。

ブラウザでアクセスして、管理画面にログインしようとすると、

mt.cgi にアクセスするとエラー

Can't locate object method "is_ready" via package "GoogleAnalytics::Provider"
というエラーが出て先に進めない状態。

MovableType のインストールディレクトリのしたを探してみたら、

root@vps2:/var/www/MT5# find -name "*Provider*" -type f
./lib/MT/Stats/Provider.pm
./plugins/GoogleAnalytics/lib/GoogleAnalytics/Provider.pm

"GoogleAnalytics::Provider" に対応する Perl モジュールは存在しているので、内部的に何か不整合があって、うまくアクセスできないという状況の模様。

とりあえず、xmlrpc 経由で画像をアップロードしたり、エントリーを書いたりということは問題なく出来ているんで、mt.cgi だけの問題の模様。

さて、どうしたものかね…。
#切り分けのために、 MariaDB → MySQL という方向でのリプレースをやってみる、という手はあるが。

MySQL を MariaDB でリプレース

MySQL で不満があるわけじゃないんですけどね。MySQL からフォークした MariaDB の話を聞くことが多くなってきた。

MariaDBは、MySQL派生として開発されている、オープンソースの関係データベース管理システム (RDBMS) である。

[From MariaDB - Wikipedia]

互換性の面での問題もないようだし、Zabbix と組み合わせるデータベースとして使う事例も増えてきているいるようですけど、

Red Hatは次期メジャーアップグレードバージョンとなる「Red Hat Enterprise Linux 7」では、デフォルトで使われるリレーショナルデータベースが「MySQL」から「MariaDB」へ変更される見通しであることがRed Hatサミットで発表されたことを、ITWire.comの記事「Red Hat ditches MySQL, switches to MariaDB」が伝えている。

[From RHEL7、MySQLからMariaDBへ変更 | マイナビニュース]

RHEL 7 で MySQL から MariaDB へデフォルトが変更になっているとなると、今後お仕事で使う機会が確実に出てきそう。ということで、手元の環境でも試しておこうとリプレースしてみた次第。
#Oracle に買収されたことで、先行きが見えにくいというのも、 MySQL が使われなくなりつつある理由みたい。