カテゴリー: Network

  • zabbix 1.6.8 から 1.8.3にアップデートしたときに発生したエラーの回避方法

    yum を使って、プログラム自体は、1.8.3に簡単にアップデートすることができた。その後のDB(MySQL)へのパッチでエラーが発生した。このエラーを回避する方法を探すのに、ちょっと手間取ったので書いておく。

    発生したエラー

     [root@your-0bb7513658 mysql]# mysql -u root zabbix < /usr/share/doc/zabbix-server-1.8.3/db
     patches/1.8/mysql/patch.sql
     ERROR 1061 (42000) at line 1: Duplicate key name 'actions_1'
    

    対応方法

    先にIndexを削除する。MySQLでZabbixのデータベースに対して以下のコマンドを入力する。

     alter table dhosts drop index dhosts_1;
     alter table dservices drop index dservices_1;
     alter table httptest drop index httptest_2;
     alter table httptest drop index httptest_3;
     alter table history_log drop index history_log_2;
     alter table history_text drop index history_text_2;
     alter table actions drop index actions_1;
     alter table escalations drop index escalations_2;
     alter table graphs_items drop index graphs_items_1;
     alter table graphs_items drop index graphs_items_2;
     alter table services drop index services_1; 
    

    参考:http://www.zabbix.com/documentation/1.8/manual/installation/upgrading

    Index削除後に、もう一度、patch.sqlを当ててやれば、今度は成功する。このパッチは時間がかかるので要注意。

  • tweetnestのアーカイブを日本語(2byte文字)対応させる

    tweetnestでつぶやきをアーカイブしていたのだが、長いつぶやきのアーカイブが途中で切れていた。いろいろと調べてみると、ある一定の文字数を超えると、途中できれたり化けたりしていた。

    原因を探ってみると、tweetnestでつぶやきを格納しているDBの絡むがvarchar(255)で設定されていた。varchar(255)だと、日本語で140文字も格納できない。そのため、途中でデータが切れていたようである。他のカラムの設定を見てみると、text型で設定されているところもあるので、少々アバウトだが、対象のカラムをtext型に変換してみた。変換に使ったSQL文は以下。

    mysql> alter table tn_tweets modify text text not null;
    

    これで拡張は終了。次のつぶやき取得から、日本語で140文字あってもちゃんとアーカイブされる。

    おまけ。
    通しで作業をするとこんな感じ。

    mysql> use tweetnest;
    mysql> desc tn_tweets;
    +--------------+---------------------+------+-----+---------+----------------+
    | Field        | Type                | Null | Key | Default | Extra          |
    +--------------+---------------------+------+-----+---------+----------------+
    | id           | int(10) unsigned    | NO   | PRI | NULL    | auto_increment |
    | userid       | int(10) unsigned    | NO   |     |         |                |
    | tweetid      | bigint(20) unsigned | NO   |     |         |                |
    | type         | tinyint(4)          | NO   |     | 0       |                |
    | time         | int(10) unsigned    | NO   |     |         |                |
    | text         | varchar(255)        | NO   | MUL |         |                |
    | source       | varchar(255)        | NO   |     |         |                |
    | favorite     | tinyint(4)          | NO   |     | 0       |                |
    | extra        | text                | NO   |     |         |                |
    | coordinates  | text                | NO   |     |         |                |
    | geo          | text                | NO   |     |         |                |
    | place        | text                | NO   |     |         |                |
    | contributors | text                | NO   |     |         |                |
    +--------------+---------------------+------+-----+---------+----------------+
    13 rows in set (0.07 sec)
    
    mysql> alter table tn_tweets modify text text not null;
    Query OK, 1287 rows affected (0.28 sec)
    Records: 1287  Duplicates: 0  Warnings: 0
    
    mysql> desc tn_tweets;
    +--------------+---------------------+------+-----+---------+----------------+
    | Field        | Type                | Null | Key | Default | Extra          |
    +--------------+---------------------+------+-----+---------+----------------+
    | id           | int(10) unsigned    | NO   | PRI | NULL    | auto_increment |
    | userid       | int(10) unsigned    | NO   |     |         |                |
    | tweetid      | bigint(20) unsigned | NO   |     |         |                |
    | type         | tinyint(4)          | NO   |     | 0       |                |
    | time         | int(10) unsigned    | NO   |     |         |                |
    | text         | text                | NO   | MUL |         |                |
    | source       | varchar(255)        | NO   |     |         |                |
    | favorite     | tinyint(4)          | NO   |     | 0       |                |
    | extra        | text                | NO   |     |         |                |
    | coordinates  | text                | NO   |     |         |                |
    | geo          | text                | NO   |     |         |                |
    | place        | text                | NO   |     |         |                |
    | contributors | text                | NO   |     |         |                |
    +--------------+---------------------+------+-----+---------+----------------+
    13 rows in set (0.00 sec)
    
    mysql>
    

  • Apacheのログにレスポンスタイムを記録する

    httpd.conf にあるログ設定を変更することで、ログにレスポンスタイムを記録するようにできる。

    1ページあたりのレスポンスタイムを調べることにより、どのURLで動作が鈍くなっているのか、あたりをつけることが可能になる。問題は、一度、サーバが負荷で遅くなってしまうと後に続くレスポンスの反応も悪くなってしまう。そのため、レスポンスタイムだけでは、どのページが遅いのかを判断できない。レスポンスの悪化の原因は、レスポンスが悪くなり始めた最初のアクセスをログから探し出すと良い。

    • 変更前
      LogFormat “%h %l %u %t \”%r\” %>s %b \”%{Referer}i\” \”%{User-Agent}i\”” combined

    • 変更後
      LogFormat “%h %l %u %t \”%r\” %>s %b \”%{Referer}i\” \”%{User-Agent}i\” %D” combined

    %Dを足すことにより、レスポンスタイムをマイクロ秒で記録することができる(Apache2.0以降)

    %Tを足すことにおり、レスポンスタイムを秒単位で記録することができる。

    ■参考URL
    http://httpd.apache.org/docs/2.0/mod/mod_log_config.html

  • iStumbler

    部屋でiPhoneを使っていると他人の無線LANを多数検出してしまう。ネットも開通したので、うちの無線LANのAPを設定するために空チャネルを調べてみた。無線LANのチャネル検出に使ったのは iStumblerというツール。これで、無線LANのAP検出とチャネルとシグナルの強度が検出できる。使い方は簡単、ダウンロードして起動するだけ。これだけで、現在いる場所の無線LANの状況をみることができる。他にもベンダーもみることができて楽しい。

    iStumbler;http://www.istumbler.net/

    iStumblerで検出してみたところ、IEEE802.11b/g/nの主要なチャネルである、1,6,11は使われている。特にチャネル1に至っては、そこそこの強度で3つも見えている。ベンダーが同じであることとMAC Addressが下1桁しか変わらないのでバーチャルAPだろうか。現状で同じ電波帯域を使うならば、チャネル6なのだが・・・多すぎて干渉が怖い。おとなしく2.4GHz帯を捨てて、5GHz帯で802.11nを使用するべきだろうか。

  • 開発者のためのActive Directory講座

    面白い資料を発見。Power Shellを使うと、Active Directoryの管理が楽になりそうだ。コマンドから、いろいろな情報を引き出せるので、簡単なスクリプトを組むだけで、処理を簡単にできそうだ。

    http://www.slideshare.net/junichia/active-directory-2562729

    問題は、このモジュールの対応OSが2008R2というあたりか。

  • Hyper-V勉強中

    現在、Hyper-Vを勉強中。

    VMware ESX系は、結構前から試して実際に使っているが、Hyper-Vは使ったことが無かった。今度、本格的に構築・運用を行う可能性が高いので勉強中。VMware ESXと基本的な設計思想がかなり違う。今調べているかぎりだと、どっちがいいということはない。ぜんぜん別物なので、上に構築する仮想マシンとOSの性質によって、下のプラットフォームを選ぶのが良い。

    Hyper-Vは、あまり安定性がないみたいだが、安いのが特徴だ。やたらと高いVMwareに比べて、ここはかなりおいしいところ。Hyper-Vで見えてこないのは、管理性だ。実際にインストールして使い勝手と安定性や癖を確認するしかない。問題は、どのエディションをインストールするか。ハイパーバイザーだけのHyper-Vサーバが一番、コストがかからないように思えるが、管理用Vista以上のWindows が必要。Vistaは持っていないので、却下。次はWindows Server 2008 のServer Core上に構築するパターン。この組み合わせが一番安定しているようだが、これも単体で管理ができないようなので却下。(一番、試したいパターンなんだけど。)最後は、一番インストールや検証が楽なWindows Server 2008 上のHyper-Vだ。とりあえず、これで試す。Hyper-Vはバイザー型の仮想化環境のはずなんだが、このパターンだとホストOSの上で動いている感じしかしないため、Virtual Serverと何が違うのだろうか考えてしまう。実際、VMからの命令もホストになっているWindows経由になる。これは、マイクロカーネル型ハイパーバイザーというタイプで、ハイパーバイザーの層から物理ハードウェアとの命令に必要なドライバを排除しているため。インストールした時の感覚としては、ハイパーバイザーに見えないがちゃんとしたハイパーバイザーである。

    とりあえず、明日、Windows Server 2008をインストールして試してみる。

  • M16-PWRの検証

    機会があったので、松下のM16-PWRというPoEスイッチの借りて検証してみた。

    製品のスペック自体はスペックシートをみればわかるのだが、使ってみないと設定のしやすさとか、製品の癖はわからない。それに、日頃はCiscoのスイッチかH3Cのスイッチしか使っていないのでほかの世界を知らない。検証として借りられると、別の製品やOSに触れられるので意外とわかっていない自分の知識に気がつく。

    このM16-PWRを触ってみて思った率直な感想は・・・よくわからん!ってこと。

    基本の設定とかは、ウェブ画面がやっていくのがベターらしくCLIの使い勝手がとっても悪い。シリアルで接続したときも、ウィザード形式のメニューがでて最初はCLIの起動方法がわからなくて何回かリブートをさせた。対話型で設定をしていく方が、初心者などには便利だとは思う。でも、大量に設定をしないといけないときや、別の場所で作ったコンフィグを簡単に投入しようと思うとCLIが充実していたほうが楽だ。それに、なにかトラブルがあったときにCLIからシステム情報を引き出したりとか、通信状況を見れると便利。負荷が高い状況やトラブル時には、ウェブインターフェースはまともに動作しないことが多いからね。

    あとは、CLIのときのコマンドが若干Ciscoと似ている。が、ヘルプコマンドの使い勝手悪い。コマンドの途中からヘルプを起動させても、全体のヘルプが出てしまうため、その中から選ぶのが大変。コマンドのシンタックスしかないので、コマンドの名前から機能を推測しないといけないため、ある程度設定を知っていないとつらい。(まぁ、ウェブインターフェースが全体なんだろうし、当然か。)

    それに今回、気がつかれされたのは自分がCisco語に使っているってことだ。例えば、Trunkのコマンドを探していたり、実際には802.1Qで規定されている通信方式なのでTrunkじゃなくて、そっちで探さないといけないとか。あとは、VLANインターフェースごとにIPアドレスを持てると思って調べていたら、どうやら、その機能はないようで、管理用にIPアドレスを一つ持てるだけとか。スイッチなのにいろいろとできてしまうCisco製品になれてしまったため他の製品を使ってみたときのギャップに驚く。コマンドや用語の違いがわからないと、そもそも設定できないとかね。1つの製品に固執しておくと、スキルは高まっていくけど、ほかの製品も見ておくと世界が広がっていい。自分のかけている部分にも気がつくしね。

    いろいろと試したけど、そんなに悪いスイッチではないと思う。大量のVLANやVoice用のVLANが同じラインに流れているところはかなりきついと思うけど、PoEが必要なエッジスイッチとしては使えるはず。ポート数も8ポートとか、16ポートの製品があるので微妙なかゆいところに手が届くって感じだね。今回、検証しきれなかったのはCiscoのIPフォンとCUCMとつないでレジストされるかどうかを調べきれなかった。1つは、PoEの形式が旧方式であるCiscoの独自タイプに対応していないので、IPフォンが起動しない。あとは、Tag付きの設定はできたけど上位スイッチとの接続で戸惑ってしまったこと。ウェブで公開されているマニュアルを見たけれど、いまいちよくわからなかった。

    こういうことをしているとまだまだだねって感じがする。もう少し勉強をがんばらないと。あとは、がんばって勉強する時間も確保しないとね。いろいろといい勉強になった。

  • バージョン 2.2.1

    iPhone のOSバージョン 2.2.1にあげて見た。あげてから、数日使っているけど、たしかにSafariがさらに安定した感じ。数日使っているけど、落ちたのは2,3回だし。2.2に比べれば安定性が増しているようだ。

    あと、バージョンアップ前からだけど、iPhoneの動作がやたらと、もっさりしている・・・。曲もビデオも増やしていないし、アプリも1つくらいしか増やしていない。考えれる原因は、Exchangeと同期するメールの数を最新の100件に増やしたくらい。その程度で、遅くなるのか?メモリ?でも、これってHDDじゃないから影響はなさそうだが。じゃあ、CPUとか?なんでだろ。使っていくと、動作が鈍くなっていくのだろうか。

    余談だが・・・
    iPhoneはバージョンアップで安定性があがっていくからいいよね。なんとかMoblieは、バージョンアップをしようとするとめちゃくちゃ敷居が高いから。

  • 【FreeBSD 7.1】sshdの設定

    FreeBSD 7.1 (7系、6系も?)では、sshdのセキュリティ設定が高く、デフォルトの設定ではパスワード認証が禁止されている。そのため、パスワード認証でログインするためには/etc/ssh/sshd_configを修正する必要がある。

    最低限、必要な設定は3行。

    PasswordAuthentication yes
    PermitEmptyPasswords no
    PermitRootLogin no
    

    PasswordAuthentication がパスワード認証によるログインを許可するかどうかの設定。yes を設定することで、パスワードログインを許可する。

    PermitEmptyPasswords が空パスワードを許可するかどうかの設定。通常は許可しないので、noを指定。デフォルトの設定も no になっているため、実際には設定をしなくても問題はないが念のため。

    PermitRootLogin がrootによる直接ログインを許可するかどうかの設定。通常は許可しないので、noを指定。どうしても、rootによるログインが必要な場合にだけ、yesを指定する。※ 普通は何の制限もなく設定はしない。

    設定が終わったら、sshdをkill -HUPで再起動させて設定を読み込ませる。

    kill -HUP sshdのプロセスID
    

    SSHクライアントから、接続テストをしてみる。これでSSHによるログインができる。

  • メール:554エラー

    エラーメッセージが帰ってくる類いのエラーは簡単だと思うのだが、世の中のエンジニアには難しい人もいるようだ。この手のエラーは、発生した問題に対して、リプライするエラーコードが決っている。エラー内容をググったら、いろいろな情報がでてくるので、適切なものを選べば終わり。実際に発生したメールのエラーは下記のエラーコード

     554 TRANSACTION FAILED (in reply to end of DATA command)
    

    この場合は、エラーコードが554でTRANSACTION FAILEDと書いてあるので、処理失敗。後方のメッセージをみると、メールのデータに問題があることがわかる。このエラーが発生する場合は、添付ファイルを付けて、相手先にメールを送った時に多い。添付ファイルの処理がうまく行かず、不正なデータ形式と判断されるため。添付ファイルを付けていない場合は、HTMLメール形式でのメール送信を疑うとよい。HTMLメールの場合も本文に、HTMLデータを添付しているので、処理がうまく行かない場合にはエラーになる。

    こういう場合は、メールを送信しているメールクライアントを調べてみる。ウェブメールやシステムから送信されている場合には、データ形式が不正である可能性が高い。あとは、何回もメールをやり取りしている相手の場合には、メールクライアントかHTML形式のメールを疑う。例外は・・・AOL宛のメールでこのメッセージが帰ってきた場合。AOL宛のメールの場合は、上記の方法で対処できないため、注意が必要。

    http://postmaster.info.aol.com/errors/554rlyir.html