<?xml version="1.0" encoding="UTF-8" ?>
<rss version="0.91">
  <channel>
    <title>技ブロ</title>
    <description></description>
    <link>http://sarahetmoi.take-uma.net/</link>
    <language>ja</language>
    <copyright>Copyright (C) NINJATOOLS ALL RIGHTS RESERVED.</copyright>

    <item>
      <title>NAT越しにMySQLでレプリケーションすると接続が切れる</title>
      <description>DCとＡＷＳ間で、MySQLのレプリケーションを試してみたら、レプリケーションがうまくいかなかった。無通信状態が1時間続くと接続がきれてしまいます。&lt;br /&gt;
現象発生時にマスター側、スレーブ側で以下のような確認をしましたが、正常そうに見えました。&lt;br /&gt;
&lt;br /&gt;

&lt;div class=&quot;EntryInnerTitle&quot;&gt;確認内容&lt;/div&gt;
・マスター側でshow slave hostsを実行すると、1時間経過した時点でエントリーが消える。&lt;br /&gt;
・この時 スレーブ側でshow slave statusを実行すると、IOスレッドの稼働状況はYesになっている。&lt;br /&gt;
・両方でnetstat -atnを実行すると、スレーブ側ではEstablishedになっているが、マスター側には対応するセッションがない。&lt;br /&gt;
&lt;br /&gt;
最後のnetstatsの結果から途中経路にあるNW機器が原因かと辺りをつけて、両方のMySQLサーバでパケットキャプチャしてみると、30分おきにマスターから スレーブに対してpushフラグのついたパケットが投げられていましたが、途中経路にあるYamaha RTX1200がリセットフラグのついた応答を返していました。&lt;br /&gt;
どうやら、RTX1200のNatテーブル保持期間がデフォルトで900秒だったため、Natテーブルからレコードが消えていたため通信に失敗していました。&lt;br /&gt;
このため、マスターからスレーブへパケットを投げる間隔を60秒にしてやったところ、問題は解決しました。&lt;br /&gt;
&lt;br /&gt;
変更するためには、&amp;nbsp; スレーブ側で以下のコマンドを実行します。&lt;br /&gt;

&lt;pre&gt;mysql&amp;gt; change master to MASTER_HEARTBEAT_PERIOD=60;&lt;/pre&gt;</description> 
      <link>http://sarahetmoi.take-uma.net/mysql/nat%E8%B6%8A%E3%81%97%E3%81%ABmysql%E3%81%A7%E3%83%AC%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%99%E3%82%8B%E3%81%A8%E6%8E%A5%E7%B6%9A%E3%81%8C%E5%88%87%E3%82%8C%E3%82%8B</link> 
    </item>
    <item>
      <title>Fedora19のコンソール設定</title>
      <description>Fedora19をvirt-installでKVM上にインストールしたら、コンソールが表示されなかった。しかもgrub2に代わってコンソール設定も迷ったので対処方法のメモ。&lt;br /&gt;
&lt;br /&gt;
(1)/etc/default/grubに以下の行を追加する。&lt;br /&gt;

&lt;pre&gt;GRUB_TERMINAL_OUTPUT=serial
GRUB_SERIAL_COMMAND=&quot;serial --unit=0 --speed=115200 --word=8 --parity=no --stop=1&quot;
&lt;/pre&gt;
(2)grub.cfgの再作成
&lt;pre&gt;# grub2-mkconfig -o /boot/grub2/grub.cfg
&lt;/pre&gt;
GRUB_TERMINAL_OUTPUTがないと、シリアルに関する設定がgrub.cfgに入らないところで、少し戸惑った。</description> 
      <link>http://sarahetmoi.take-uma.net/fedora/fedora19%E3%81%AE%E3%82%B3%E3%83%B3%E3%82%BD%E3%83%BC%E3%83%AB%E8%A8%AD%E5%AE%9A</link> 
    </item>
    <item>
      <title>Glassfishインスタンスリソース監視テンプレ</title>
      <description>今までTomcatを複数台用意して運用していましたが、はっきりいって管理が面倒でした。&lt;br /&gt;
そこで代替品を探していたら、Glassfishというフリーのアプリケーションサーバに出会いました。&lt;br /&gt;
こいつがまた、管理用Webから一元管理ができて、クラスターの拡張も簡単という、とてもイカす奴でした。&lt;br /&gt;
&lt;br /&gt;
運用するからには監視が必要ということで、ZabbixでGlassfishクラスタの各インスタンスのリソース監視をするためのPythonスクリプトを作りました。&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://file.sarahetmoi.take-uma.net/zabbix_server.tgz&quot;&gt;これ　→　zabbix_server.tgz&lt;/a&gt;
&lt;br /&gt;&lt;br /&gt;
【環境】&lt;br /&gt;
　・監視サーバ　　Zabbix　1.8系&lt;br /&gt;
　・監視対象　　CentOS6　Python2.6系　Zabbix　1.8系（Zabbix-JP配布のRPM）&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;EntryInnerTitle&quot;&gt;
	使用方法&lt;/div&gt;
&lt;br /&gt;
■Glassfish管理ノード側作業&lt;br /&gt;
(1)pythonスクリプトをGlassfish管理ノードに配置する。&lt;br /&gt;
　　配置先　/etc/zabbix/customscripts/glassfish_monitor.py&lt;br /&gt;
　　実行権限をつけ忘れないように。&lt;br /&gt;
(2)pythonスクリプトの編集&lt;br /&gt;
　　・das_userにDASのログインユーザ、パスワードを記述する。&lt;br /&gt;
　　　　デフォルトだと、admin:admin&lt;br /&gt;
　　・zabbix_serverにZabbixサーバのDNS名を記述する。&lt;br /&gt;
(3)userparameter_glassfish.confを/etc/zabbix/zabbix_agentd.dに配置し、zabbix_agenを再起動する。&lt;br /&gt;
■Zabbixサーバ側作業&lt;br /&gt;
(1)テンプレートをZabbixサーバにインポートする。&lt;br /&gt;
(2)監視したいインスタンス（Javaプロセスのこと）をZabbixサーバに登録する。&lt;br /&gt;
　　登録する際、以下のように入力する。&lt;br /&gt;
　　　DNS名：Glassfish　DASのサーバ名&lt;br /&gt;
　　　接続方法：DNS名&lt;br /&gt;
　　　マクロ：{$node}　=&amp;amp;gt;　インスタンス名　(クラスタに定義されているインスタンス名)&lt;br /&gt;
&lt;br /&gt;
JDKのバージョンによって、GCの種類が変わってくるので、スクリプト中の以下の箇所を編集する必要があるかもしれません。&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;
menu={&amp;quot;os&amp;quot;:&amp;quot;/jvm/operating-system&amp;quot;,&amp;quot;compiler&amp;quot;:&amp;quot;/jvm/compilation-system&amp;quot;,&amp;quot;runtime&amp;quot;:&amp;quot;/jvm/runtime&amp;quot;,&amp;quot;thread&amp;quot;:&amp;quot;/jvm/thread-system&amp;quot;,&amp;quot;memory&amp;quot;:&amp;quot;/jvm/memory&amp;quot;,&amp;quot;majorgc&amp;quot;:&amp;quot;/jvm/garbage-collectors/&lt;span style=&quot;color:#FF0000;&quot;&gt;PS%20MarkSweep&lt;/span&gt;&amp;quot;,&amp;quot;minorgc&amp;quot;:&amp;quot;/jvm/garbage-collectors/&lt;span style=&quot;color:#FF0000;&quot;&gt;PS%20Scavenge&lt;/span&gt;&amp;quot;,&amp;quot;class&amp;quot;:&amp;quot;/jvm/class-loading-system&amp;quot;}&lt;/pre&gt;
GlassfishのRESTチャネルを使って値をとってきているので、https://hoge.glassfish.manage.server:4848/monitoring/domain/　にブラウザでアクセスすれば何に変更すればいいかわかると思います。</description> 
      <link>http://sarahetmoi.take-uma.net/zabbix/glassfish%E3%82%A4%E3%83%B3%E3%82%B9%E3%82%BF%E3%83%B3%E3%82%B9%E3%83%AA%E3%82%BD%E3%83%BC%E3%82%B9%E7%9B%A3%E8%A6%96%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC</link> 
    </item>
    <item>
      <title>systemctlによるサービス管理でつまづいた</title>
      <description>仕事で使ってるサーバの大半はCentOSなんですが、たまにFedoraが混じってたりします。&lt;br /&gt;
Fedoraの場合、サービス管理にはsystemdを経由しますが、こいつがたまに思った通りに動いてくれません。&lt;br /&gt;
&lt;br /&gt;
CentOS用に作ったkyototycoonのRPMパッケージを、Fedora用にパッケージし直し、いざ起動するとすぐ停止してしまいます。&lt;br /&gt;
kyototycoonのログを見ると、起動した形跡はあるが、直後にシャットダウンされている模様。&lt;br /&gt;
起動直後に、ステータスみると確かに殺されている。&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;# /etc/init.d/ktserver status
ktserver.service - LSB: KyotoTycoon Server
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Loaded: loaded (/etc/rc.d/init.d/ktserver)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Active: deactivating (stop) since Fri, 07 Dec 2012 12:03:05 +0900; 1s ago
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Process: 32573 ExecStart=/etc/rc.d/init.d/ktserver start (code=exited, status=0/SUCCESS)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Main PID: 32578 (code=exited, status=0/SUCCESS); Control: 32581 (ktserver)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CGroup: name=systemd:/system/ktserver.service
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; t 32580 /usr/bin/ktserver -port 1978 -dmn -li -log /var/log/ktserver.log -pid /var/run/ktserver.pid -th 64 -sid 2 -mhost taudience01.hogehoge.com -mport 1978 -rts /data/ktser...
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; t 32581 /bin/bash /etc/rc.d/init.d/ktserver stop
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m 32650 sleep 1
&lt;/pre&gt;
同じパッケージを入れている別のサーバではおきなかったりして、今のところ原因不明です。&lt;br /&gt;
&lt;br /&gt;
とりあえず回避方法として、systedを経由せずに起動させています。&lt;br /&gt;
やり方は簡単で、起動スクリプト中に以下のシェル変数を定義すればOKです。&lt;br /&gt;
&lt;br /&gt;
【変数】&lt;br /&gt;
　　SYSTEMCTL_SKIP_REDIRECT=yes&lt;br /&gt;
&lt;br /&gt;
値は便宜上yesにしましたが、何でもOKです。&lt;br /&gt;
　&lt;br /&gt;</description> 
      <link>http://sarahetmoi.take-uma.net/fedora/systemctl%E3%81%AB%E3%82%88%E3%82%8B%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%E7%AE%A1%E7%90%86%E3%81%A7%E3%81%A4%E3%81%BE%E3%81%A5%E3%81%84%E3%81%9F</link> 
    </item>
    <item>
      <title>ZABBIXとnscd</title>
      <description>ZABBIXサーバってエージェントに接続する度に、DNSに問い合わせを投げてるみたいです。&lt;br /&gt;
1年以上ZABBIXを運用していて、今まで気づかなかったのは恥ずかしい限りです。&lt;br /&gt;
障害対応の際にZABBIXサーバのプライマリDNSを切り替えた前後のトラフィックが、劇的に変化したので気づきました。&lt;br /&gt;
内部ホストのレコードなんてそうそう変わらないので、DNSキャッシュを立てたら帯域の節約になる、ってことでnscdを起動したら、こんなに変わりました。&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://file.sarahetmoi.take-uma.net/DNS.png&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://file.sarahetmoi.take-uma.net/Img/1348832000/&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;

</description> 
      <link>http://sarahetmoi.take-uma.net/zabbix/zabbix%E3%81%A8nscd</link> 
    </item>
    <item>
      <title>fluentdを使ってzabbixでログ監視</title>
      <description>うちの会社ではzabbixを使ってサーバの監視をしていますが、リソースの使用率のグラフ化やアラートの設定条件など、おおむねその機能に満足しています。しかし唯一不満な部分があります。それは、ログ監視。&lt;br /&gt;
&lt;br /&gt;
たとえばTomcatのCatalina.logを監視していて、OutOfMemoryが出力されたらアラートを上げるように設定すると、出力行数だけ障害メールが飛んできて、さらにすぐさまリカバリーが来るという、なんともいただけない仕様なのです。&lt;br /&gt;
ひどいときは、それで200通以上のメールが携帯に届くこともあります。&lt;br /&gt;
&lt;br /&gt;
最近fluentdを導入したこともあり、ログの集計結果を監視に利用できないかと考えたら、意外とすんなりできたのでご紹介します。&lt;br /&gt;
&lt;br /&gt;
【監視対象サーバに必要なもの】&lt;br /&gt;
　fluentd&lt;br /&gt;
　fluent-plugin-zabbix&lt;br /&gt;
　fluent-plugin-datacounter&lt;br /&gt;
　fluent-plugin-forest&lt;br /&gt;
&lt;br /&gt;
(1)監視対象サーバに必要なものをインストール&lt;br /&gt;
&lt;br /&gt;
(2)fluentd.confに以下の設定をする。&lt;br /&gt;
　　以下の設定では、/opt/tomcat7/logs/catalina.out　にOutofMemoryErrorが出ていないか監視します。&lt;br /&gt;
　　これにより毎分、OutOfMemoryErrorが難行出力されているかカウントし、結果をzabbixサーバに送るようになります。&lt;br /&gt;
　　&lt;br /&gt;
【fluentd.conf】&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; type tail&lt;br /&gt;
&amp;nbsp;&amp;nbsp; path /opt/tomcat7/logs/catalina.out&lt;br /&gt;
&amp;nbsp;&amp;nbsp; tag java.tomcat.hoge&lt;br /&gt;
&amp;nbsp;&amp;nbsp; format /^(?&amp;lt;message&amp;gt;.*)$/&lt;br /&gt;
&amp;nbsp;&amp;nbsp; rotate_wait 60&lt;br /&gt;
&amp;nbsp;&amp;nbsp; pos_file /var/lib/fluentd/catalina.out.pos&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;match java.tomcat.**&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; type forest&lt;br /&gt;
&amp;nbsp;&amp;nbsp; subtype datacounter&lt;br /&gt;
&amp;nbsp;&amp;nbsp; remove_prefix java.tomcat&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;lt;template&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; count_key message&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; outcast_unmatched true&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; aggregate all&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tag javalog.__TAG__&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pattern1 oom ^.*OutOfMemoryError.*$&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;lt;/template&amp;gt;&lt;br /&gt;
&amp;lt;/match&amp;gt;&lt;br /&gt;
&amp;lt;match javalog.**&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; type forest&lt;br /&gt;
&amp;nbsp;&amp;nbsp; subtype zabbix&lt;br /&gt;
&amp;nbsp; remove_prefix javalog&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;lt;template&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; zabbix_server zabbix01.fuga.com&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; host __TAG__&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; name_key_pattern .*_count&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;lt;/template&amp;gt;&lt;br /&gt;
&amp;lt;/match&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(3)zabbixサーバにホスト、キー、トリガーを追加&lt;br /&gt;
　ホスト名　hoge&lt;br /&gt;
　キー　　　oom_count&lt;br /&gt;
　トリガー　　&lt;span style=&quot;color: rgb(0, 0, 0); font-family: verdana, arial, helvetica, sans-serif; font-size: 11.111111640930176px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 15.981481552124023px; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: nowrap; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(221, 221, 221); display: inline !important; float: none; &quot;&gt;{&lt;/span&gt;&lt;a class=&quot;disabled&quot; href=&quot;http://central02.sv.infra/zabbix/items.php?form=update&amp;amp;itemid=100776&amp;amp;sid=ed9dd8d4e25a9ddb&quot; style=&quot;font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11.111111640930176px; text-decoration: underline; color: rgb(170, 0, 0); font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 15.981481552124023px; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: nowrap; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; &quot;&gt;Template:oom_count&lt;/a&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-family: verdana, arial, helvetica, sans-serif; font-size: 11.111111640930176px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 15.981481552124023px; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: nowrap; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(221, 221, 221); display: inline !important; float: none; &quot;&gt;.&lt;/span&gt;&lt;strong style=&quot;color: rgb(0, 0, 0); font-family: verdana, arial, helvetica, sans-serif; font-size: 11.111111640930176px; font-style: normal; font-variant: normal; letter-spacing: normal; line-height: 15.981481552124023px; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: nowrap; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; &quot;&gt;count(&lt;/strong&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-family: verdana, arial, helvetica, sans-serif; font-size: 11.111111640930176px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 15.981481552124023px; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: nowrap; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(221, 221, 221); display: inline !important; float: none; &quot;&gt;300,0,&amp;quot;gt&amp;quot;&lt;/span&gt;&lt;strong style=&quot;color: rgb(0, 0, 0); font-family: verdana, arial, helvetica, sans-serif; font-size: 11.111111640930176px; font-style: normal; font-variant: normal; letter-spacing: normal; line-height: 15.981481552124023px; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: nowrap; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; &quot;&gt;)&lt;/strong&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-family: verdana, arial, helvetica, sans-serif; font-size: 11.111111640930176px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 15.981481552124023px; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: nowrap; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(221, 221, 221); display: inline !important; float: none; &quot;&gt;}&amp;gt;0&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
以上でほかの監視と同じように、ログ監視にいろいろなトリガー条件を使うことができるようになります。&lt;br /&gt;
また、ほかの文字列を監視したい場合は、pattern1 oom ^.*OutOfMemoryError.*$　の下に、同じようにpattern2を書いてあげて、zabbixサーバにキー、トリガーを追加すればOK。&lt;br /&gt;
ログ形式をパースしていないので、どんなログにも使えます。&lt;br /&gt;
&lt;br /&gt;
また、上の設定ではfluent-plugin-forestを使ってますが、中継fluentdサーバを使わないのであればいりません。&lt;br /&gt;
中継サーバがある場合は、fluent-plugin-forestを使ったほうが断然設定が短くなります。&lt;br /&gt;
上の設定だと、&amp;lt;source&amp;gt;で定義しているタグ中にホスト名を入れているので、ほかのサーバで同じことをしたい場合に中継サーバの設定をいじらなくて済みます。&lt;br /&gt;
&lt;br /&gt;
fluentdはまだ使い始めたばかりですが、今後もちょっと便利な使い方を見つけたら、書いていきます。
&lt;div style=&quot;clear:both&quot;&gt;
	&amp;nbsp;&lt;/div&gt;
</description> 
      <link>http://sarahetmoi.take-uma.net/fluentd/fluentd%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6zabbix%E3%81%A7%E3%83%AD%E3%82%B0%E7%9B%A3%E8%A6%96</link> 
    </item>
    <item>
      <title>CentOS6.3の罠</title>
      <description>CentOS6.3がでたので、さっそくインストールして使おうと思ったら、通信できない。&lt;br /&gt;
bonding＋VLAN　という環境で使ってるので、設定ミスかと色々悩んだ結果、バグでした。&lt;br /&gt;
&lt;br /&gt;
カーネル：　2.6.32-279.el6.x86_64&lt;br /&gt;
&lt;a href=&quot;http://bugs.centos.org/view.php?id=5816&quot;&gt;http://bugs.centos.org/view.php?id=5816&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
カーネルパニックに出会って、まわりに言ったらあっさりこんな情報を送ってくれました。orz&lt;br /&gt;
&lt;br /&gt;
ちなみに、以下の手順でパニックが発生しました。&lt;br /&gt;
&lt;br /&gt;
(1)　bondingインターフェースをダウン&lt;br /&gt;
　　# ifdown bond0&lt;br /&gt;
(2)　bondingインターフェースをアップ&lt;br /&gt;
　　# ifup bond0&lt;br /&gt;
　　ここで、突然通信できるようになりました。&lt;br /&gt;
(3)　ネットワークスクリプトの再起動&lt;br /&gt;
　　# /etc/init.d/network restart&lt;br /&gt;
&lt;br /&gt;
&lt;font style=&quot;font-size:medium;&quot;&gt;&lt;strong&gt;パニック発生&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;
&lt;div&gt;
	&lt;br /&gt;
	&lt;span style=&quot;border-collapse: separate; color: rgb(0, 0, 0); font-family: 'MS Mincho'; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium;&quot;&gt;general protection fault: 0000 [#1] SMP&lt;br /&gt;
	last sysfs file: /sys/devices/virtual/net/bond0.31/broadcast&lt;br /&gt;
	CPU 1&lt;br /&gt;
	Modules linked in: bonding 8021q garp stp llc ipv6 dcdbas microcode serio_raw iTCO_wdt iTCO_vendor_support tg3 sg i3200_edac edac_core ext4 mbcac]&lt;br /&gt;
	&lt;br /&gt;
	Pid: 27521, comm: pidof Not tainted 2.6.32-279.1.1.el6.x86_64 #1 Dell Inc. PowerEdge R200/0FW0G7&lt;br /&gt;
	RIP: 0010:[&amp;lt;ffffffff8143cc83&amp;gt;]&amp;nbsp; [&amp;lt;ffffffff8143cc83&amp;gt;] dev_gro_receive+0x33/0x290&lt;br /&gt;
	RSP: 0018:ffff880028283cb0&amp;nbsp; EFLAGS: 00010282&lt;br /&gt;
	RAX: 677568097665646f RBX: ffff880229176480 RCX: ffff880229176480&lt;br /&gt;
	RDX: 0000000000000608 RSI: ffff880229176480 RDI: ffff880228c8a760&lt;br /&gt;
	RBP: ffff880028283ce0 R08: ffff880228d83020 R09: 0000000000000000&lt;br /&gt;
	R10: fffffffffffffff0 R11: 0000000000000040 R12: ffff880228c8a760&lt;br /&gt;
	R13: ffff880229176480 R14: ffff8802291764b8 R15: 000000000000001f&lt;br /&gt;
	FS:&amp;nbsp; 00007eff3549a700(0000) GS:ffff880028280000(0000) knlGS:0000000000000000&lt;br /&gt;
	CS:&amp;nbsp; 0010 DS: 0000 ES: 0000 CR0: 0000000080050033&lt;br /&gt;
	CR2: 00007eff354a1000 CR3: 00000002277f4000 CR4: 00000000000406e0&lt;br /&gt;
	DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000&lt;br /&gt;
	DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400&lt;br /&gt;
	Process pidof (pid: 27521, threadinfo ffff880229382000, task ffff880227e8eae0)&lt;br /&gt;
	Stack:&lt;br /&gt;
	ffff880028283cc0 000000000000001f ffff880228c8a760 ffff880229176480&lt;br /&gt;
	&amp;lt;d&amp;gt; ffff880229176480 000000000000001f ffff880028283d00 ffffffff814d7af8&lt;br /&gt;
	&amp;lt;d&amp;gt; ffff880028283d20 ffff880229176480 ffff880028283d30 ffffffff814d7d7a&lt;br /&gt;
	Call Trace:&lt;br /&gt;
	&amp;lt;IRQ&amp;gt;&lt;br /&gt;
	[&amp;lt;ffffffff814d7af8&amp;gt;] vlan_gro_common+0x188/0x230&lt;br /&gt;
	[&amp;lt;ffffffff814d7d7a&amp;gt;] vlan_gro_receive+0x7a/0xa0&lt;br /&gt;
	[&amp;lt;ffffffffa0250172&amp;gt;] tg3_poll_work+0x612/0xe30 [tg3]&lt;br /&gt;
	[&amp;lt;ffffffff8110dc28&amp;gt;] ? perf_event_task_tick+0xa8/0x2f0&lt;br /&gt;
	[&amp;lt;ffffffffa025807b&amp;gt;] tg3_poll+0x7b/0x440 [tg3]&lt;br /&gt;
	[&amp;lt;ffffffff8143f1a3&amp;gt;] net_rx_action+0x103/0x2f0&lt;br /&gt;
	[&amp;lt;ffffffff81073ec1&amp;gt;] __do_softirq+0xc1/0x1e0&lt;br /&gt;
	[&amp;lt;ffffffff810db810&amp;gt;] ? handle_IRQ_event+0x60/0x170&lt;br /&gt;
	[&amp;lt;ffffffff81073f1f&amp;gt;] ? __do_softirq+0x11f/0x1e0&lt;br /&gt;
	[&amp;lt;ffffffff8100c24c&amp;gt;] call_softirq+0x1c/0x30&lt;br /&gt;
	[&amp;lt;ffffffff8100de85&amp;gt;] do_softirq+0x65/0xa0&lt;br /&gt;
	[&amp;lt;ffffffff81073ca5&amp;gt;] irq_exit+0x85/0x90&lt;br /&gt;
	[&amp;lt;ffffffff81505b05&amp;gt;] do_IRQ+0x75/0xf0&lt;br /&gt;
	[&amp;lt;ffffffff8100ba53&amp;gt;] ret_from_intr+0x0/0x11&lt;br /&gt;
	&amp;lt;EOI&amp;gt;&lt;br /&gt;
	[&amp;lt;ffffffff8112afc8&amp;gt;] ? release_pages+0x48/0x250&lt;br /&gt;
	[&amp;lt;ffffffff811403a9&amp;gt;] ? get_user_pages+0x49/0x50&lt;br /&gt;
	[&amp;lt;ffffffff8150327e&amp;gt;] ? do_page_fault+0x3e/0xa0&lt;br /&gt;
	[&amp;lt;ffffffff8116b680&amp;gt;] ? mem_cgroup_get_reclaim_stat_from_page+0x20/0x70&lt;br /&gt;
	[&amp;lt;ffffffff8112b517&amp;gt;] ____pagevec_lru_add+0x167/0x180&lt;br /&gt;
	[&amp;lt;ffffffff8112b69b&amp;gt;] lru_add_drain+0x9b/0xa0&lt;br /&gt;
	[&amp;lt;ffffffff811448ee&amp;gt;] unmap_region+0x4e/0x130&lt;br /&gt;
	[&amp;lt;ffffffff81144ff6&amp;gt;] do_munmap+0x2b6/0x3a0&lt;br /&gt;
	[&amp;lt;ffffffff81145136&amp;gt;] sys_munmap+0x56/0x80&lt;br /&gt;
	[&amp;lt;ffffffff8100b0f2&amp;gt;] system_call_fastpath+0x16/0x1b&lt;br /&gt;
	Code: 48 89 5d d8 4c 89 65 e0 4c 89 6d e8 4c 89 75 f0 4c 89 7d f8 0f 1f 44 00 00 48 8b 46 20 0f b7 56 7e 49 89 fc 48 89 f3 4c 8d 76 38 &amp;lt;f6&amp;gt; 40 71&lt;br /&gt;
	RIP&amp;nbsp; [&amp;lt;ffffffff8143cc83&amp;gt;] dev_gro_receive+0x33/0x290&lt;br /&gt;
	RSP &amp;lt;ffff880028283cb0&amp;gt;&lt;br /&gt;
	BUG: scheduling while atomic: swapper/0/0x10000100&lt;br /&gt;
	---[ end trace fc3a501a071deef7 ]---&lt;br /&gt;
	Kernel panic - not syncing: Fatal exception in interrupt&lt;br /&gt;
	Pid: 27521, comm: pidof Tainted: G&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; D&amp;nbsp;&amp;nbsp;&amp;nbsp; ---------------&amp;nbsp;&amp;nbsp;&amp;nbsp; 2.6.32-279.1.1.el6.x86_64 #1&lt;br /&gt;
	Call Trace:&lt;br /&gt;
	&amp;lt;IRQ&amp;gt;&amp;nbsp; [&amp;lt;ffffffff814fd12a&amp;gt;] ? panic+0xa0/0x168&lt;br /&gt;
	[&amp;lt;ffffffff815012d2&amp;gt;] ? oops_end+0xf2/0x100&lt;br /&gt;
	[&amp;lt;ffffffff8100f26b&amp;gt;] ? die+0x5b/0x90&lt;br /&gt;
	[&amp;lt;ffffffff81500e32&amp;gt;] ? do_general_protection+0x152/0x160&lt;br /&gt;
	[&amp;lt;ffffffff8142fb82&amp;gt;] ? kfree_skb+0x42/0x90&lt;br /&gt;
	[&amp;lt;ffffffff81500605&amp;gt;] ? general_protection+0x25/0x30&lt;br /&gt;
	[&amp;lt;ffffffff8143cc83&amp;gt;] ? dev_gro_receive+0x33/0x290&lt;br /&gt;
	[&amp;lt;ffffffff814d7af8&amp;gt;] ? vlan_gro_common+0x188/0x230&lt;br /&gt;
	[&amp;lt;ffffffff814d7d7a&amp;gt;] ? vlan_gro_receive+0x7a/0xa0&lt;br /&gt;
	[&amp;lt;ffffffffa0250172&amp;gt;] ? tg3_poll_work+0x612/0xe30 [tg3]&lt;br /&gt;
	[&amp;lt;ffffffff8110dc28&amp;gt;] ? perf_event_task_tick+0xa8/0x2f0&lt;br /&gt;
	[&amp;lt;ffffffffa025807b&amp;gt;] ? tg3_poll+0x7b/0x440 [tg3]&lt;br /&gt;
	[&amp;lt;ffffffff8143f1a3&amp;gt;] ? net_rx_action+0x103/0x2f0&lt;br /&gt;
	[&amp;lt;ffffffff81073ec1&amp;gt;] ? __do_softirq+0xc1/0x1e0&lt;br /&gt;
	[&amp;lt;ffffffff810db810&amp;gt;] ? handle_IRQ_event+0x60/0x170&lt;br /&gt;
	[&amp;lt;ffffffff81073f1f&amp;gt;] ? __do_softirq+0x11f/0x1e0&lt;br /&gt;
	[&amp;lt;ffffffff8100c24c&amp;gt;] ? call_softirq+0x1c/0x30&lt;br /&gt;
	[&amp;lt;ffffffff8100de85&amp;gt;] ? do_softirq+0x65/0xa0&lt;br /&gt;
	[&amp;lt;ffffffff81073ca5&amp;gt;] ? irq_exit+0x85/0x90&lt;br /&gt;
	[&amp;lt;ffffffff81505b05&amp;gt;] ? do_IRQ+0x75/0xf0&lt;br /&gt;
	[&amp;lt;ffffffff8100ba53&amp;gt;] ? ret_from_intr+0x0/0x11&lt;br /&gt;
	&amp;lt;EOI&amp;gt;&amp;nbsp; [&amp;lt;ffffffff8112afc8&amp;gt;] ? release_pages+0x48/0x250&lt;br /&gt;
	[&amp;lt;ffffffff811403a9&amp;gt;] ? get_user_pages+0x49/0x50&lt;br /&gt;
	[&amp;lt;ffffffff8150327e&amp;gt;] ? do_page_fault+0x3e/0xa0&lt;br /&gt;
	[&amp;lt;ffffffff8116b680&amp;gt;] ? mem_cgroup_get_reclaim_stat_from_page+0x20/0x70&lt;br /&gt;
	[&amp;lt;ffffffff8112b517&amp;gt;] ? ____pagevec_lru_add+0x167/0x180&lt;br /&gt;
	[&amp;lt;ffffffff8112b69b&amp;gt;] ? lru_add_drain+0x9b/0xa0&lt;br /&gt;
	[&amp;lt;ffffffff811448ee&amp;gt;] ? unmap_region+0x4e/0x130&lt;br /&gt;
	[&amp;lt;ffffffff81144ff6&amp;gt;] ? do_munmap+0x2b6/0x3a0&lt;br /&gt;
	[&amp;lt;ffffffff81145136&amp;gt;] ? sys_munmap+0x56/0x80&lt;br /&gt;
	[&amp;lt;ffffffff8100b0f2&amp;gt;] ? system_call_fastpath+0x16/0x1b&lt;br /&gt;
	Modules linked in: bonding 8021q garp stp llc ipv6 dcdbas microcode serio_raw iTCO_wdt iTCO_vendor_support tg3 sg i3200_edac edac_core ext4 mbcach&lt;br /&gt;
	panic occurred, switching back to text console&lt;br /&gt;
	dm_log dm_mod [last unloaded: scsi_wait_scan]&lt;br /&gt;
	CPU 2&lt;br /&gt;
	Modules linked in: bonding 8021q garp stp llc ipv6 dcdbas microcode serio_raw iTCO_wdt iTCO_vendor_support tg3 sg i3200_edac edac_core ext4 mbcac]&lt;br /&gt;
	&lt;br /&gt;
	Pid: 0, comm: swapper Tainted: G&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; D&amp;nbsp;&amp;nbsp;&amp;nbsp; ---------------&amp;nbsp;&amp;nbsp;&amp;nbsp; 2.6.32-279.1.1.el6.x86_64 #1 Dell Inc. PowerEdge R200/0FW0G7&lt;br /&gt;
	RIP: 0010:[&amp;lt;ffffffff81014877&amp;gt;]&amp;nbsp; [&amp;lt;ffffffff81014877&amp;gt;] mwait_idle+0x77/0xd0&lt;br /&gt;
	RSP: 0018:ffff88022ae51ee8&amp;nbsp; EFLAGS: 00000246&lt;br /&gt;
	RAX: 0000000000000000 RBX: ffff88022ae51ef8 RCX: 0000000000000000&lt;br /&gt;
	RDX: 0000000000000000 RSI: ffff88022ae51fd8 RDI: ffffffff81dda228&lt;br /&gt;
	RBP: ffffffff8100ba4e R08: 0000000000000000 R09: 0000000000000002&lt;br /&gt;
	R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000002&lt;br /&gt;
	R13: ffff88022ae51e78 R14: ffffffff81099015 R15: ffff88022ae51e68&lt;br /&gt;
	FS:&amp;nbsp; 0000000000000000(0000) GS:ffff880028300000(0000) knlGS:0000000000000000&lt;br /&gt;
	CS:&amp;nbsp; 0010 DS: 0018 ES: 0018 CR0: 000000008005003b&lt;br /&gt;
	CR2: 0000000000481046 CR3: 0000000001a85000 CR4: 00000000000406e0&lt;br /&gt;
	DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000&lt;br /&gt;
	DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400&lt;br /&gt;
	Process swapper (pid: 0, threadinfo ffff88022ae50000, task ffff88022ae26040)&lt;br /&gt;
	Stack:&lt;br /&gt;
	ffff88022ae51fd8 ffffffff81c017c0 ffff88022ae51f28 ffffffff81009e06&lt;br /&gt;
	&amp;lt;d&amp;gt; ffff88022ae51f18 cf1d5955c0b9d404 0000000000000000 0000000000000000&lt;br /&gt;
	&amp;lt;d&amp;gt; ffff88022ae51f48 ffffffff814f6cef 0000000000000000 00000002814f6ac5&lt;br /&gt;
	Call Trace:&lt;br /&gt;
	[&amp;lt;ffffffff81009e06&amp;gt;] ? cpu_idle+0xb6/0x110&lt;br /&gt;
	[&amp;lt;ffffffff814f6cef&amp;gt;] ? start_secondary+0x22a/0x26d&lt;br /&gt;
	Code: d2 65 48 8b 34 25 c8 cb 00 00 48 89 d1 48 8d 86 38 e0 ff ff 0f 01 c8 0f ae f0 48 8b 86 38 e0 ff ff a8 08 75 24 31 c0 fb 0f 01 c9 &amp;lt;5b&amp;gt; 41 5c&lt;br /&gt;
	Call Trace:&lt;br /&gt;
	[&amp;lt;ffffffff8150339a&amp;gt;] ? atomic_notifier_call_chain+0x1a/0x20&lt;br /&gt;
	[&amp;lt;ffffffff81009e06&amp;gt;] ? cpu_idle+0xb6/0x110&lt;br /&gt;
	[&amp;lt;ffffffff814f6cef&amp;gt;] ? start_secondary+0x22a/0x26d&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
</description> 
      <link>http://sarahetmoi.take-uma.net/centos/centos6.3%E3%81%AE%E7%BD%A0</link> 
    </item>
    <item>
      <title>stunnelを使った通信経路の暗号化</title>
      <description>外部に借りているVPSを、zabbixで監視したいけど、平文でやり取りするのは不安・・・&lt;br /&gt;
そんなとき、stunnelを使ってみませんか。&lt;br /&gt;
&lt;br /&gt;
自分もどうしようかと悩んでいた時、&lt;a class=&quot;account-group js-account-group js-action-profile js-user-profile-link&quot; data-user-id=&quot;5598992&quot; href=&quot;https://twitter.com/BlueSkyDetector&quot;&gt;&lt;span class=&quot;username js-action-profile-name&quot;&gt;&lt;s&gt;@&lt;/s&gt;&lt;b&gt;BlueSkyDetector&lt;/b&gt;&lt;/span&gt;&lt;/a&gt;氏の「そういえばZabbixの通信暗号化ってStunnelを使えいいじゃん。あとで試そう。」ってつぶやきを見つけて、挑戦してみました。&lt;br /&gt;
しかもstunnelって、実はcentosを最小インストールしても入ってくる身近な存在だったのです。&lt;br /&gt;
&lt;br /&gt;
やりたいことをまとめると、&lt;br /&gt;
　１　zabbixサーバ－zabbixエージェント間の通信を暗号化したい。&lt;br /&gt;
　２　第三者がzabbixエージェントに接続できないようにしたい。&lt;br /&gt;
&lt;br /&gt;
さて構成ですが、こんな感じです。&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://file.sarahetmoi.take-uma.net/stunnel.png&quot; target=&quot;_blank&quot;&gt;&lt;img alt=&quot;stunnel.png&quot; src=&quot;http://file.sarahetmoi.take-uma.net/Img/1339152253/&quot; style=&quot;float: left; border-width: 0px; border-style: solid; width: 400px; height: 194px;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
紺色の矢印が、平文でながれるところです。&lt;br /&gt;
さて方法ですが、まず以下の証明書を用意してください。&lt;br /&gt;
　１　サーバの秘密鍵&lt;br /&gt;
　２　サーバ証明書&lt;br /&gt;
　３　サーバ証明書に署名したオレオレCAの証明書&lt;br /&gt;
&lt;br /&gt;
このうち　３　の証明書が、第三者を締め出す肝になります。&lt;br /&gt;
&lt;br /&gt;
以下、証明書は、/etc/stunnel　配下に配置、設定ファイルは　/etc/stunnel.conf　とします。&lt;br /&gt;
&lt;br /&gt;
【zabbixエージェント側の作業】&lt;br /&gt;
　zabbixサーバからの接続を受け付けるので、stunnelはサーバモード(デフォルト動作)で動作させます。&lt;br /&gt;
&lt;br /&gt;
　１　証明書の配置&lt;br /&gt;
　　　上記１～３の証明書を、配置します。&lt;br /&gt;
&lt;br /&gt;
　２　CA証明書の名前をハッシュ化&lt;br /&gt;
　　　CA証明書の指定の仕方は二通りあって、CApathでディレクトリを指定するか、CAfileでファイル名を直接指定します。&lt;br /&gt;
　　　CApathを使う場合、配下のCA証明書の名前はハッシュ化されていないといけないので、以下のコマンドを実行してください。&lt;br /&gt;
　　　　　　＃c_rehash /etc/stunnel&lt;br /&gt;
&lt;br /&gt;
　　　ちなみにc_rehashコマンドは、CentOSだと、openssl-perl　パッケージに入っています。&lt;br /&gt;
&lt;br /&gt;
　３　設定ファイルの記述&lt;br /&gt;
　　　[/etc/stunnel.conf]&lt;br /&gt;
　　　&lt;br /&gt;
　　　pid = /var/run/stunnel.pid&lt;br /&gt;
&lt;br /&gt;
　　　cert = /etc/stunnel/server.crt&lt;br /&gt;
　　　key = /etc/stunnel/server.key&lt;br /&gt;
&lt;br /&gt;
　　　[zabbix]&lt;br /&gt;
　　　accept = 10058&lt;br /&gt;
　　　connect = 10050&lt;br /&gt;
　　　verify = 2&lt;br /&gt;
　　　CApath = /etc/stunnel&lt;br /&gt;
　　　;CAfile = /etc/stunnel/cacert.pem&lt;br /&gt;
&lt;br /&gt;
　　　acceptで待ち受けポート、connectで接続先サーバを指定しています。&lt;br /&gt;
　　　これだと、すべてのローカルアドレス:10050　で待ち受け、localhost:10050　に転送することになります。&lt;br /&gt;
　　　また、verifyでクライアント認証を有効にしています。&lt;br /&gt;
　　　&lt;br /&gt;
　４　プログラムの起動&lt;br /&gt;
　　　#　stunnel /etc/stunnel.conf&lt;br /&gt;
&lt;br /&gt;
【zabbixサーバ側の作業】&lt;br /&gt;
　zabbixサーバからエージェントに対して接続にいくので、stunnelはクライアントモードで動作させます。&lt;br /&gt;
&lt;br /&gt;
　１　証明書の配置&lt;br /&gt;
　　　上記１～２の証明書を、配置します。&lt;br /&gt;
　　　面倒なので、同じ証明書を使っちゃいます。&lt;br /&gt;
&lt;br /&gt;
　２　　３　設定ファイルの記述&lt;br /&gt;
　　　[/etc/stunnel.conf]&lt;br /&gt;
　　　pid = /var/run/stunnel.pid&lt;br /&gt;
&lt;br /&gt;
　　　key = /etc/stunnel/sakura.shinobi.jp.key&lt;br /&gt;
　　　cert = /etc/stunnel/sakura.shinobi.jp.crt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
　　　[zabbix_client]&lt;br /&gt;
　　　client = yes&lt;br /&gt;
　　　accept = 127.0.0.1:10060&lt;br /&gt;
　　　connect = zabbix-agent.hogehoge.com:10055&lt;br /&gt;
&lt;br /&gt;
　３　プログラムの起動&lt;br /&gt;
　　　#　stunnel /etc/stunnel.conf&lt;br /&gt;
&lt;br /&gt;
これで、zabbixサーバのlocalhost:10060　に接続すると、zabbixエージェントから応答が返ってきます。&lt;br /&gt;
また、openssl s_clientコマンドで、直接zabbixエージェントのstunnelに接続しようとすると、怒られますので、クライアント認証も機能しているようです。&lt;br /&gt;
&lt;br /&gt;
なお通信経路の暗号化だけであれば、zabbixサーバ側のstunnelにkey、certで証明書を指定する必要はありません。&lt;br /&gt;
&lt;br /&gt;
これでVPSにいたずらされることもなくなって、めでたしめでたし&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;clear:both&quot;&gt;
	&amp;nbsp;&lt;/div&gt;
</description> 
      <link>http://sarahetmoi.take-uma.net/stunnel/stunnel%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%9F%E9%80%9A%E4%BF%A1%E7%B5%8C%E8%B7%AF%E3%81%AE%E6%9A%97%E5%8F%B7%E5%8C%96</link> 
    </item>
    <item>
      <title>systemdにjettyを登録する</title>
      <description>fedora15になってサービス管理がガラッとかわり、/etc/init.d/の下の起動スクリプトではなく、systemctlコマンドでサービスの操作を行うようになった。&lt;br /&gt;
今回、jettyをサービスとしてfedoraに登録した際に手間取ったので、ここにメモしておく。&lt;br /&gt;
使用したjettyのバージョンは、jetty-hightide-8.1.3.v20120416&lt;br /&gt;
&lt;br /&gt;
まず、fedora15になってサービスに関する情報は、/lib/systemd/system　配下に集められた。&lt;br /&gt;
サービスを登録する場合、今までどおり起動スクリプトを/etc/init.d配下に置き、chkconfig --addで登録することも可能だが、せっかくだからsystemdの作法に従って登録したい。&lt;br /&gt;
そのためには、以下のような設定ファイルを書かなければいけない。&lt;br /&gt;
&lt;br /&gt;
【jetty.service】&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Jetty Application Containar&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=simple&lt;br /&gt;
EnvironmentFile=-/opt/jetty/etc/jetty-env&lt;br /&gt;
PIDFile=/var/run/jetty.pid&lt;br /&gt;
User=jetty&lt;br /&gt;
Group=jetty&lt;br /&gt;
ExecStart=/usr/bin/java $RUN_ARGS&lt;br /&gt;
&lt;br /&gt;
StandardOutput=null&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target&lt;br /&gt;
&lt;br /&gt;
そのうえで、systemctl --system daemon-reload　をすれば完了。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
上の設定ファイルで、EnvironmentFileにより環境変数を定義したファイルを読み込んでいるが、環境変数はExecStartでの定義にのみ使えるようだ。&lt;br /&gt;
User、Groupで使ってみたら、エラーになった。&lt;br /&gt;
&lt;br /&gt;
なおsystemdの設定ファイルに関する情報はまだまだ少なく、結局man systemd.serviceと既存の設定ファイルが一番役に立った。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
</description> 
      <link>http://sarahetmoi.take-uma.net/fedora/systemd%E3%81%ABjetty%E3%82%92%E7%99%BB%E9%8C%B2%E3%81%99%E3%82%8B</link> 
    </item>
    <item>
      <title>fluentのRPMパッケージを作ろう</title>
      <description>巷で話題のfluentを、導入してみることにした。&lt;br /&gt;
だが、gem install fluent　ってやるのはいかがなものか。&lt;br /&gt;
rubyのバージョンもあるが、いろいろなパッケージが勝手に入って、精神衛生上よろしくない。&lt;br /&gt;
fedoraをつかってるので、できればRPMにしたい。&lt;br /&gt;
でもSPECファイル書くの面倒くさいなぁと思っていたら、意外にも簡単にできました。&lt;br /&gt;
&lt;br /&gt;
ざっくり流れを書くと&lt;br /&gt;
　(1)td-agentのSRPMをもってくる。&lt;br /&gt;
　(2)fluentの最新ソースをダウンロード&lt;br /&gt;
　(3)td-agentパッケージを解凍して、SPECファイルを編集&lt;br /&gt;
　(4)td-agentにはいっているautogen.sh、Makefile.amをfluentdのディレクトリにコピーし、編集&lt;br /&gt;
　(5)fluentdをtarでアーカイブ&lt;br /&gt;
　(6)ビルドに必要なライブラリ（libyaml-devel）をインストール&lt;br /&gt;
　(7)rpmbuildでパッケージ化&lt;br /&gt;
ってなもんです。&lt;br /&gt;
他人のふんどしで相撲を取ってるようなもんですけど、以下に詳細な手順を記します。&lt;br /&gt;
&lt;br /&gt;
【パッケージ作成手順】&lt;br /&gt;
　(1)td-agentのSRPMSをもってくる。&lt;br /&gt;
　　　&lt;a href=&quot;http://packages.treasure-data.com/redhat/source/&quot;&gt;ここ&lt;/a&gt;　からパッケージをもってくる。（今回は、td-agent-1.1.3.1　を使いました。）&lt;br /&gt;
　　　ちなみに、rpmパッケージは以下のコマンドで解凍できます。&lt;br /&gt;
&lt;br /&gt;
　　　　　# rpm2cpio td-agent-1.1.3.1-0.src.rpm | cpio -id&lt;br /&gt;
&lt;br /&gt;
　(2)fluentの最新ソースをダウンロード&lt;br /&gt;
　　　&lt;a href=&quot;https://github.com/fluent/fluentd.git&quot;&gt;ここ&lt;/a&gt;から最新のfluentのソースをもってきます。&lt;br /&gt;
　　　開発が活発なので、ひと月もたつとすっかり古くなります。&lt;br /&gt;
&lt;br /&gt;
　(3)td-agentパッケージを解凍して、SPECファイルなどを編集&lt;br /&gt;
　　　SRPMを解凍して中身を修正します。&lt;br /&gt;
　　　1　SPECファイルの編集&lt;br /&gt;
　　　　　文字列&amp;quot;td-agent&amp;quot;を&amp;quot;fluentd&amp;quot;に置換します。&lt;br /&gt;
&lt;br /&gt;
　　　　　　　　# sed -i s/td-agent/fluentd/g td-agent.spec&lt;br /&gt;
&lt;br /&gt;
　　　　　また、Version:を今回入れるfluentdのバージョンにします。&lt;br /&gt;
&lt;br /&gt;
　　　2　ファイル名変更&lt;br /&gt;
　　　　　td-agent.init　&amp;rarr;　fluentd.init&lt;br /&gt;
　　　　　td-agent.spec　&amp;rarr;　fluentd.spec&lt;br /&gt;
　　　&lt;br /&gt;
　(4)td-agent-xx.xx.xx.tar.gzにはいっている以下のファイルをfluentdのディレクトリにコピーし、編集&lt;br /&gt;
　　　・autogen.sh&lt;br /&gt;
　　　　一緒にコンパイルするruby、その他モジュールのバージョンを変更します。&lt;br /&gt;
　　　　せっかくなので、新しいバージョンでパッケージ。&lt;br /&gt;
&lt;br /&gt;
　　　　　　download &amp;quot;http://ftp.ruby-lang.org/pub/ruby/1.9&amp;quot; &amp;quot;ruby-1.9.3-p125.tar.bz2&amp;quot;&lt;br /&gt;
　　　　　　download &amp;quot;http://rubygems.org/downloads&amp;quot; &amp;quot;json-1.6.6.gem&amp;quot;&lt;br /&gt;
　　　　　　download &amp;quot;http://rubygems.org/downloads&amp;quot; &amp;quot;msgpack-0.4.6.gem&amp;quot;&lt;br /&gt;
　　　　　　download &amp;quot;http://rubygems.org/downloads&amp;quot; &amp;quot;iobuffer-0.1.3.gem&amp;quot;&lt;br /&gt;
　　　　　　download &amp;quot;http://rubygems.org/downloads&amp;quot; &amp;quot;cool.io-1.1.0.gem&amp;quot;&lt;br /&gt;
　　　　　　download &amp;quot;http://rubygems.org/downloads&amp;quot; &amp;quot;http_parser.rb-0.5.3.gem&amp;quot;&lt;br /&gt;
　　　　　　download &amp;quot;http://rubygems.org/downloads&amp;quot; &amp;quot;yajl-ruby-1.1.0.gem&amp;quot;&lt;br /&gt;
　　　　　　download &amp;quot;http://rubygems.org/downloads&amp;quot; &amp;quot;jeweler-1.8.3.gem&amp;quot;&lt;br /&gt;
　　　　　　download &amp;quot;http://rubygems.org/downloads&amp;quot; &amp;quot;psych-1.3.2.gem&amp;quot;&lt;br /&gt;
&lt;br /&gt;
　　　・Makefile.am&lt;br /&gt;
　　　　一緒にパッケージ化したいプラグインを追加します。&lt;br /&gt;
&lt;br /&gt;
　　　　　　PLUGINS = \&lt;br /&gt;
　　　　　　&amp;nbsp; fluent-plugin-td-0.10.6.gem \&lt;br /&gt;
　　　　　　&amp;nbsp; fluent-plugin-hoop-0.1.2.gem \&lt;br /&gt;
　　　　　　&amp;nbsp; fluent-plugin-zabbix-0.0.1.gem \&lt;br /&gt;
　　　　　　&amp;nbsp; fluent-plugin-scribe-0.10.7.gem \&lt;br /&gt;
　　　　　　&amp;nbsp; fluent-plugin-hipchat-0.1.0.gem \&lt;br /&gt;
　　　　　　&amp;nbsp; fluent-plugin-forest-0.1.0.gem \&lt;br /&gt;
　　　　　　&amp;nbsp; fluent-plugin-cassandra-0.0.2.gem \&lt;br /&gt;
　　　　　　&amp;nbsp; fluent-plugin-mongo-0.6.7.gem&lt;br /&gt;
&lt;br /&gt;
　　　　また、td-agentという文字列をfluentdに一括置換します。&lt;br /&gt;
　　　　　　# sed -i -e s/td-agent/fluentd/g Makefile.am&lt;br /&gt;
&lt;br /&gt;
　　　・td-agent.prelink.conf&lt;br /&gt;
　　　　ファイル名を、fluentd.prelink.confに変更します。&lt;br /&gt;
&lt;br /&gt;
　　　・configure.in&lt;br /&gt;
　　　　そのままコピーします。&lt;br /&gt;
&lt;br /&gt;
　　　・td-agent.conf&lt;br /&gt;
　　　　fluentd.confとしてコピーします。&lt;br /&gt;
&lt;br /&gt;
　(5)fluentdをtarでアーカイブ&lt;br /&gt;
　　　ディレクトリ名をfluentd-0.10.18　のような名前にして、fluentd-0.10.18.tar.gzのように&lt;br /&gt;
　　　アーカイブします。&lt;br /&gt;
　　　これを、td-agent-xx.xx.xx.tar.gzと入れ替えます。&lt;br /&gt;
&lt;br /&gt;
　(5)ビルドに必要なライブラリ（libyaml-devel）をインストール&lt;br /&gt;
　　　fedoraだと、標準のリポジトリにあるので、yum install　libyaml-devel　すればよいです。&lt;br /&gt;
　　　CentOSだと用意されていないので、&lt;a href=&quot;http://fedoraproject.org/wiki/EPEL&quot;&gt;EPEL&lt;/a&gt;から持ってきてください。&lt;br /&gt;
　　　　&amp;rarr;td-agent-1.1.4では、BuildRequiresにlibyaml-develが追加されたようで、ないと先に進めません。&lt;br /&gt;
　　　　　　1.1.3ではエラーは出るがとりあえずコンパイルが走った。&lt;br /&gt;
&lt;br /&gt;
　(6)rpmbuildでパッケージ化&lt;br /&gt;
　　　あとは、各ファイルを所定の位置に配置して、コマンドを実行です。&lt;br /&gt;
&lt;br /&gt;
　　　# rpmbuild -ba fluentd.spec　　（ポチっとな）&lt;br /&gt;
&lt;br /&gt;
これで完了。&lt;br /&gt;
やっぱり　SRPMがあると、パッケージ化が楽ですね。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
　　</description> 
      <link>http://sarahetmoi.take-uma.net/fluentd/fluent%E3%81%AErpm%E3%83%91%E3%83%83%E3%82%B1%E3%83%BC%E3%82%B8%E3%82%92%E4%BD%9C%E3%82%8D%E3%81%86</link> 
    </item>

  </channel>
</rss>