<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>System Clinic</title>
	<atom:link href="http://clinic.acc-s.com/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://clinic.acc-s.com</link>
	<description>　－　悩めるシステム運用に関するサイト　－</description>
	<lastBuildDate>Sun, 13 Dec 2015 06:05:15 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.4</generator>
		<item>
		<title>教育訓練①　2015.12.13</title>
		<link>http://clinic.acc-s.com/?p=851</link>
		<comments>http://clinic.acc-s.com/?p=851#comments</comments>
		<pubDate>Sun, 13 Dec 2015 06:01:14 +0000</pubDate>
		<dc:creator>所長</dc:creator>
				<category><![CDATA[教育訓練]]></category>

		<guid isPermaLink="false">http://clinic.acc-s.com/?p=851</guid>
		<description><![CDATA[セキュリティとその脆弱性について １．脆弱性とは何か。 不具合である。「不具合は、機械が作り出すものではない。人が作り出すものだ。」と言う先輩がいた。 設計者とプログラマ、設計者と管理者、開発者と運用者のようにシステムには、人の役割と目的が異なる人間関係にあり、 両者の誤認により、不具合は発生する。 たとえば、Apacheの脆弱性が発覚すると、管理コンソールをWEBで提供しているすべての機器に波及する。 Apacheは、管理コンソールを目的に作られたものではない。 まさしく、役割と目的の異なる人間関係であり、現在、最も多くの人が利用しているソフトウェアといえる。 誤認の種類 a. まさかそんな便利機能があったなんて。 b. その機能を使うつもりはないんだけど。 c. えっ、途中で断念したものも、組み込まれているの。 そして、ソースコードは公開されているのである。もちろん、提供製品において何を使って作られているかは非公開である。 ２．セキュリティ対策とは 誤認の中、埋もれている機能を利用しようとする悪意あるユーザからシステムを守る事である。 守り方は a. オリジナルソースコードで作成する。（公開されたソースコードのOS,ミドルウェア、ソフトウェアは利用しない） b. アプリレベルでガードする。アプリケーションに一枚かぶせて、利用する引数のみを宣言する。元のアプリは直接起動できないようにする。 c. 踏み台を利用した閉じた世界を作成する。利用できる端末（PC）を限定し、特定ユーザのみが端末にログインできる。 d. 利用サービスと利用者を限定するFeirewall機能を利用し、悪意あるユーザからの直接アクセスを防ぐ。 e. 被害のあった人から、ポイントを聞いて、バージョンアップやパッチを適用する。（セキュリティソフトウェアの利用） 顧客の予算と守るべき要求、守れないリスクを共有し、対策を講じる事がシステム提供者には求められる。 ちなみに、方法「a.」はjavaやapache、unixを使わず、オリジナルを作るという事なので、どれだけ高額なるかは想像できるだろう。 ３．セキュリティ対策対象 インターネットに接続しているすべての機器が対象となる。 現在はサービスへの直接攻撃から、事務所PCを介したサービスの管理機能への攻撃が主流になっている。 管理担当者や運用担当者による攻撃も、行われている昨今である為、セキュリティ製品、機能による防御には限界が来ているかもしれない。 究極の管理方法の一つとして、電子化しないという対策を講じている業種もある。 データの暗号化や、ネットワークケーブルの物理的なON,OFFスイッチを提供している製品もあるが、人が扱う以上、完ぺきとは言えないだろう。 ４．セキュリティ対策の検討タイミング システム提供時は当然である。対策内容によっては高額になる為、要件段階から確認する必要がある。 システム引き継ぎ時は要注意である。セキュリティ問題は、いつやってくるかわからないし、問題が発生してから、どうなっているかを 求められる為、引き継ぎ時に顧客とどのように合意されているかを把握する事は必要である。 保守しているのであれば、定期的に提案する事で、合意化していくことができる。合意文書がどこにもないシステムは多い。 ５．セキュリティ対策とはどのようなものか。 a. セキュリティソフトウェア。 あるユーザが、悪意のあるサイトにアクセスし、自身のPCに感染したと報告を受けると、対象アドレスを製品に提供し、アクセスさせないようにする機能である。 これは、メールも同様で本文に対象アドレスが記載されていると、削除するものである。 公開サイトからダウンロードしたソフトウェアに外部からの利用可能なプログラムが存在していた場合、スキャン機能でプログラムを探し、削除する機能も提供されている。 これらは世界のどこかで被害者がでないと防ぐ事ができない。 b. 暗号化 特定のPC,サーバ,ユーザ毎にデータに対し暗号化、複合化を行う機能である。 暗号には鍵が必要である。これは鍵を紛失すると2度と複合化できない事であり、鍵を盗まれると複合化されてしまう事である。 システムとして機能は提供できるが、鍵を管理している担当者の不正は防ぐ事はできない。 他にもあるが、脆弱性の性質上（皆が利用したい便利機能を低コストで利用する事を目的として広く普及している機能）、 [...]]]></description>
			<content:encoded><![CDATA[<p><strong>セキュリティとその脆弱性について</strong><br />
<strong> </strong></p>
<p><strong>１．脆弱性とは何か。</strong></p>
<blockquote><p>不具合である。「不具合は、機械が作り出すものではない。人が作り出すものだ。」と言う先輩がいた。<br />
設計者とプログラマ、設計者と管理者、開発者と運用者のようにシステムには、人の役割と目的が異なる人間関係にあり、<br />
両者の誤認により、不具合は発生する。<br />
たとえば、Apacheの脆弱性が発覚すると、管理コンソールをWEBで提供しているすべての機器に波及する。<br />
Apacheは、管理コンソールを目的に作られたものではない。<br />
まさしく、役割と目的の異なる人間関係であり、現在、最も多くの人が利用しているソフトウェアといえる。</p>
<p>誤認の種類<br />
<span style="text-decoration: underline;">a. まさかそんな便利機能があったなんて。</span><br />
<span style="text-decoration: underline;">b. その機能を使うつもりはないんだけど。</span><br />
<span style="text-decoration: underline;">c. えっ、途中で断念したものも、組み込まれているの。</span></p>
<p>そして、ソースコードは公開されているのである。もちろん、提供製品において何を使って作られているかは非公開である。</p></blockquote>
<p><strong>２．セキュリティ対策とは</strong></p>
<blockquote><p>誤認の中、埋もれている機能を利用しようとする悪意あるユーザからシステムを守る事である。<br />
守り方は<br />
<span style="text-decoration: underline;">a. オリジナルソースコードで作成する。（公開されたソースコードのOS,ミドルウェア、ソフトウェアは利用しない）</span><br />
<span style="text-decoration: underline;">b. アプリレベルでガードする。アプリケーションに一枚かぶせて、利用する引数のみを宣言する。元のアプリは直接起動できないようにする。</span><br />
<span style="text-decoration: underline;">c. 踏み台を利用した閉じた世界を作成する。利用できる端末（PC）を限定し、特定ユーザのみが端末にログインできる。</span><br />
<span style="text-decoration: underline;">d. 利用サービスと利用者を限定するFeirewall機能を利用し、悪意あるユーザからの直接アクセスを防ぐ。</span><br />
<span style="text-decoration: underline;">e. 被害のあった人から、ポイントを聞いて、バージョンアップやパッチを適用する。（セキュリティソフトウェアの利用）</span></p>
<p>顧客の予算と守るべき要求、守れないリスクを共有し、対策を講じる事がシステム提供者には求められる。<br />
ちなみに、方法「a.」はjavaやapache、unixを使わず、オリジナルを作るという事なので、どれだけ高額なるかは想像できるだろう。</p></blockquote>
<p><strong>３．セキュリティ対策対象</strong></p>
<blockquote><p>インターネットに接続しているすべての機器が対象となる。<br />
現在はサービスへの直接攻撃から、事務所PCを介したサービスの管理機能への攻撃が主流になっている。<br />
管理担当者や運用担当者による攻撃も、行われている昨今である為、セキュリティ製品、機能による防御には限界が来ているかもしれない。<br />
究極の管理方法の一つとして、電子化しないという対策を講じている業種もある。</p>
<p>データの暗号化や、ネットワークケーブルの物理的なON,OFFスイッチを提供している製品もあるが、人が扱う以上、完ぺきとは言えないだろう。</p></blockquote>
<p><strong>４．セキュリティ対策の検討タイミング</strong></p>
<blockquote><p>システム提供時は当然である。対策内容によっては高額になる為、要件段階から確認する必要がある。<br />
システム引き継ぎ時は要注意である。セキュリティ問題は、いつやってくるかわからないし、問題が発生してから、どうなっているかを<br />
求められる為、引き継ぎ時に顧客とどのように合意されているかを把握する事は必要である。<br />
保守しているのであれば、定期的に提案する事で、合意化していくことができる。合意文書がどこにもないシステムは多い。</p></blockquote>
<p><strong>５．セキュリティ対策とはどのようなものか。</strong></p>
<blockquote><p><span style="text-decoration: underline;">a. セキュリティソフトウェア。</span><br />
あるユーザが、悪意のあるサイトにアクセスし、自身のPCに感染したと報告を受けると、対象アドレスを製品に提供し、アクセスさせないようにする機能である。<br />
これは、メールも同様で本文に対象アドレスが記載されていると、削除するものである。<br />
公開サイトからダウンロードしたソフトウェアに外部からの利用可能なプログラムが存在していた場合、スキャン機能でプログラムを探し、削除する機能も提供されている。<br />
これらは世界のどこかで被害者がでないと防ぐ事ができない。</p>
<p><span style="text-decoration: underline;">b. 暗号化</span><br />
特定のPC,サーバ,ユーザ毎にデータに対し暗号化、複合化を行う機能である。<br />
暗号には鍵が必要である。これは鍵を紛失すると2度と複合化できない事であり、鍵を盗まれると複合化されてしまう事である。<br />
システムとして機能は提供できるが、鍵を管理している担当者の不正は防ぐ事はできない。</p>
<p>他にもあるが、脆弱性の性質上（皆が利用したい便利機能を低コストで利用する事を目的として広く普及している機能）、<br />
多くの人が利用している製品を使用し、多くの人が利用しているセキュリティ製品を利用して守る行為には疑問が残る。<br />
マイナーな機能を使用し、対策するべきではないかと思うが、マイナーな機能には不安定かつ、技術者不足というコスト上の問題はある。</p></blockquote>
<p>以上。</p>
<p>この訓練は2時間としている。<br />
下記、項目に関して整理し、突然の顧客からの質問の答えられるようにしましょう。</p>
<blockquote><p>質問１：最近のセキュリティ対策はどうなっているの？　（社内イントラサービスの場合と社外インターネットサービスの場合）<br />
質問２：PCへの感染はいいとしても、個人情報漏えいさせない方法はないですか。<br />
質問３：セキュリティ対策すると運用はどうなるの？</p></blockquote>
<p>回答１：PCソフトウェアからサーバ型のソフトウェアなど、多岐にわたる。0dayアタックに対応したものもアプライアンス製品として、<br />
提供されている。インターネット向けはFWによる通信制限からUNIX向けのソフトウェアも提供されているが、提供しているjavaやPHPへの攻撃が主流であり、この部分への製品はない。FWの通信制限もインターネット通信のみから社内PCからの通信制限にも利用してきている。</p>
<p>回答２：漏えいしづらい環境は構築できるが、社内の特定PC、特定ユーザからアクセス可能にする以上、完全な提供はできない。<br />
漏えいしづらくすればするほど、管理が面倒になっていく。容易な方法としては無人ルームに共有ディスクを配置し、必要に応じて、<br />
ネットワークケーブルを結線、抜線するのがわかりやすいが、どのように運用したいかの要件が必要である。</p>
<p>回答３：ユーザパスワード管理、鍵管理、ユーザ追加、削除、利用可能時間の制御、接続許可の払い出しと返却など、提供機能分の運用業務が増える。今の業務に対し、どのように追加し、月次、年次点検で何を確認するか、また、そのような業務がそもそも存在するかで運用コストが<br />
変わってくる。担当者の退職で運用できなくなるというのは少なくない。</p>
]]></content:encoded>
			<wfw:commentRss>http://clinic.acc-s.com/?feed=rss2&#038;p=851</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>VB6をASPにするには。。②</title>
		<link>http://clinic.acc-s.com/?p=845</link>
		<comments>http://clinic.acc-s.com/?p=845#comments</comments>
		<pubDate>Sat, 29 Mar 2014 13:55:26 +0000</pubDate>
		<dc:creator>所長</dc:creator>
				<category><![CDATA[未分類]]></category>

		<guid isPermaLink="false">http://clinic.acc-s.com/?p=845</guid>
		<description><![CDATA[手で行うには、さすがに辛いので、移行ツールを作成しよう。といいつつ、私が得意とするのは。。awk うーん、いいのかな。 移行ツール VB6の.frmの書式はこんな感じ       Begin VB.TextBox txt期間指定FROM          BackColor       =   &#38;H00FFFF80&#38;          BeginProperty Font             Name            =   &#8220;ＭＳ ゴシック&#8221;             Size            =   15.75             Charset         =   128             Weight          =   400             Underline       =   0   &#8216;False             Italic          =   0   &#8216;False             Strikethrough   =   0   &#8216;False          EndProperty          Height          =   360          IMEMode         [...]]]></description>
			<content:encoded><![CDATA[<p>手で行うには、さすがに辛いので、移行ツールを作成しよう。といいつつ、私が得意とするのは。。awk うーん、いいのかな。</p>
<h1>移行ツール</h1>
<p>VB6の.frmの書式はこんな感じ</p>
<blockquote><p>      Begin <span style="text-decoration: underline;"><strong>VB.TextBox </strong><strong><span style="text-decoration: underline;">txt</span>期間指定FROM</strong></span><br />
         BackColor       =   &amp;H00FFFF80&amp;<br />
         BeginProperty Font<br />
            <span style="text-decoration: underline;"><strong>Name            =   &#8220;ＭＳ ゴシック&#8221;</strong></span><br />
            Size            =   15.75<br />
            Charset         =   128<br />
            Weight          =   400<br />
            Underline       =   0   &#8216;False<br />
            Italic          =   0   &#8216;False<br />
            Strikethrough   =   0   &#8216;False<br />
         EndProperty<br />
         Height          =   360<br />
         IMEMode         =   3  &#8216;ｵﾌ固定<br />
         Left            =   180<br />
         <span style="text-decoration: underline;"><strong>MaxLength       =   10</strong></span><br />
        <span style="text-decoration: underline;"><strong> TabIndex        =   3</strong></span><br />
         Text            =   &#8220;2004/08/19&#8243;<br />
         Top             =   240<br />
         Width           =   1875<br />
      End</p></blockquote>
<ul>
<li>VB.TextBox　・・・これを引っ掛ければ、input text 変数とそのRequestに使えるな。</li>
<li>Name　・・・STYLESHEETで使用するには、ある程度設計しておいた方が、よさそう。</li>
<li>MaxLength ・・・ input maxlengthに使うか。</li>
<li>TabIndex　・・・ カーソルの移動順番でもあり、HTMLでの記述順番を考慮しよう。Tableタグで変わったりもするけど。。。</li>
</ul>
<p>そうそう、ボタンは「Begin VB.CommandButton」として宣言しているので、これにも対応しよう。</p>
]]></content:encoded>
			<wfw:commentRss>http://clinic.acc-s.com/?feed=rss2&#038;p=845</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>VB6をASPにするには。。①</title>
		<link>http://clinic.acc-s.com/?p=837</link>
		<comments>http://clinic.acc-s.com/?p=837#comments</comments>
		<pubDate>Sat, 29 Mar 2014 13:32:50 +0000</pubDate>
		<dc:creator>所長</dc:creator>
				<category><![CDATA[VB6のWEB化]]></category>

		<guid isPermaLink="false">http://clinic.acc-s.com/?p=837</guid>
		<description><![CDATA[お客様から依頼され、VB6のWEB化を検討する。。かなり前にそんなプロジェクトが多かったけど、このタイミングで考えることになってしまった。 ASPも古いもののVB2008とかだと、サーバーOSも変わるし、いろいろと悩みどころ。ただ、移行ツールはなかったか、あっても、大変というイメージがある。（備忘録として残しておこう。。） 考えること .frmをHTMLに変更する。デザインは、おいておいて、STYLESHEETを考えつつ、iput タグ(TEXT,BUTTON)を考えよう。 .frmの変数を宣言する。WEB化なので、requestして、変数に代入する必要があるな。 コーディング構造は、画面部品→処理なので、ファイルを分離しよう。結果として、処理→画面部品というか画面表示の順になる。 処理の切り分けが悩ましい。サーバサイドで行うか、クライアントサイドで行うか。まずはサーバサイドのASPで考えて、必要に応じてjavascript化しよう。 これで、いけるのか？？]]></description>
			<content:encoded><![CDATA[<p>お客様から依頼され、VB6のWEB化を検討する。。かなり前にそんなプロジェクトが多かったけど、このタイミングで考えることになってしまった。</p>
<p>ASPも古いもののVB2008とかだと、サーバーOSも変わるし、いろいろと悩みどころ。ただ、移行ツールはなかったか、あっても、大変というイメージがある。（備忘録として残しておこう。。）</p>
<h1><strong>考えること</strong></h1>
<ul>
<li>.frmをHTMLに変更する。デザインは、おいておいて、STYLESHEETを考えつつ、iput タグ(TEXT,BUTTON)を考えよう。</li>
<li>.frmの変数を宣言する。WEB化なので、requestして、変数に代入する必要があるな。</li>
<li>コーディング構造は、画面部品→処理なので、ファイルを分離しよう。結果として、処理→画面部品というか画面表示の順になる。</li>
<li>処理の切り分けが悩ましい。サーバサイドで行うか、クライアントサイドで行うか。まずはサーバサイドのASPで考えて、必要に応じてjavascript化しよう。</li>
</ul>
<p>これで、いけるのか？？</p>
]]></content:encoded>
			<wfw:commentRss>http://clinic.acc-s.com/?feed=rss2&#038;p=837</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Excelコピー</title>
		<link>http://clinic.acc-s.com/?p=825</link>
		<comments>http://clinic.acc-s.com/?p=825#comments</comments>
		<pubDate>Tue, 24 Dec 2013 11:35:51 +0000</pubDate>
		<dc:creator>所長</dc:creator>
				<category><![CDATA[Excel]]></category>

		<guid isPermaLink="false">http://clinic.acc-s.com/?p=825</guid>
		<description><![CDATA[いろいろサイトをみてみたら、Excelのワークシートを選択して、コピー。 投稿のビジュアル（エディター）にペースト。 ほぼいけるようだ。セルの結合は対応できていないので、HTML（エディター）で直すしかないかもしれない。 &#160; 上記のように選択して、下記にコピーしてみた。 No 項目コウモク 内容ナイヨウ 備考ビコウ 1 なまえ なかざわ 2 年齢ネンレイ ４５さい 3 住スまい 東京トウキョウ 4 趣味シュミ ばいく 以前イゼンは、DIY このようになります。 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;- 以下、身内用 Excelコピーのテスト① Excelコピーのテスト② Excelコピーのテスト③ &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-]]></description>
			<content:encoded><![CDATA[<p>いろいろサイトをみてみたら、Excelのワークシートを選択して、コピー。</p>
<p>投稿のビジュアル（エディター）にペースト。</p>
<p>ほぼいけるようだ。セルの結合は対応できていないので、HTML（エディター）で直すしかないかもしれない。</p>
<p>&nbsp;</p>
<p><a href="http://clinic.acc-s.com/wp-content/uploads/2013/12/a.png"><img class="alignnone size-medium wp-image-826" title="excelでコピー" src="http://clinic.acc-s.com/wp-content/uploads/2013/12/a-300x180.png" alt="" width="300" height="180" /></a></p>
<p>上記のように選択して、下記にコピーしてみた。</p>
<table border="0" cellspacing="0" cellpadding="0" width="288">
<colgroup>
<col span="4" width="72"></col>
</colgroup>
<tbody>
<tr height="18">
<td width="72" height="18">No</td>
<td width="72">項目コウモク</td>
<td width="72">内容ナイヨウ</td>
<td width="72">備考ビコウ</td>
</tr>
<tr height="18">
<td height="18" align="right">1</td>
<td>なまえ</td>
<td>なかざわ</td>
<td></td>
</tr>
<tr height="18">
<td height="18" align="right">2</td>
<td>年齢ネンレイ</td>
<td>４５さい</td>
<td></td>
</tr>
<tr height="18">
<td height="18" align="right">3</td>
<td>住スまい</td>
<td>東京トウキョウ</td>
<td></td>
</tr>
<tr height="18">
<td height="18" align="right">4</td>
<td>趣味シュミ</td>
<td>ばいく</td>
<td>以前イゼンは、DIY</td>
</tr>
</tbody>
</table>
<p>このようになります。</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</p>
<p>以下、身内用</p>
<p><a href="http://clinic.acc-s.com/?p=804">Excelコピーのテスト①</a></p>
<p><a href="http://clinic.acc-s.com/?p=810">Excelコピーのテスト②</a></p>
<p><a href="http://clinic.acc-s.com/?p=814">Excelコピーのテスト③</a></p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</p>
]]></content:encoded>
			<wfw:commentRss>http://clinic.acc-s.com/?feed=rss2&#038;p=825</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>保護中: Excel③</title>
		<link>http://clinic.acc-s.com/?p=814</link>
		<comments>http://clinic.acc-s.com/?p=814#comments</comments>
		<pubDate>Tue, 24 Dec 2013 11:09:30 +0000</pubDate>
		<dc:creator>所長</dc:creator>
				<category><![CDATA[Excel Test③]]></category>

		<guid isPermaLink="false">http://clinic.acc-s.com/?p=814</guid>
		<description><![CDATA[この投稿はパスワードで保護されているため抜粋文はありません。]]></description>
			<content:encoded><![CDATA[<form action="http://clinic.acc-s.com/wp-pass.php" method="post">
<p>この投稿はパスワードで保護されています。表示するにはパスワードを入力してください:</p>
<p><label for="pwbox-814">パスワード:<br />
<input name="post_password" id="pwbox-814" type="password" size="20" /></label><br />
<input type="submit" name="Submit" value="実行" /></p></form>
]]></content:encoded>
			<wfw:commentRss>http://clinic.acc-s.com/?feed=rss2&#038;p=814</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>保護中: Excel②</title>
		<link>http://clinic.acc-s.com/?p=810</link>
		<comments>http://clinic.acc-s.com/?p=810#comments</comments>
		<pubDate>Tue, 24 Dec 2013 11:04:59 +0000</pubDate>
		<dc:creator>所長</dc:creator>
				<category><![CDATA[Excel Test②]]></category>

		<guid isPermaLink="false">http://clinic.acc-s.com/?p=810</guid>
		<description><![CDATA[この投稿はパスワードで保護されているため抜粋文はありません。]]></description>
			<content:encoded><![CDATA[<form action="http://clinic.acc-s.com/wp-pass.php" method="post">
<p>この投稿はパスワードで保護されています。表示するにはパスワードを入力してください:</p>
<p><label for="pwbox-810">パスワード:<br />
<input name="post_password" id="pwbox-810" type="password" size="20" /></label><br />
<input type="submit" name="Submit" value="実行" /></p></form>
]]></content:encoded>
			<wfw:commentRss>http://clinic.acc-s.com/?feed=rss2&#038;p=810</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>保護中: Excel①</title>
		<link>http://clinic.acc-s.com/?p=804</link>
		<comments>http://clinic.acc-s.com/?p=804#comments</comments>
		<pubDate>Tue, 24 Dec 2013 10:38:09 +0000</pubDate>
		<dc:creator>所長</dc:creator>
				<category><![CDATA[Excel Test①]]></category>

		<guid isPermaLink="false">http://clinic.acc-s.com/?p=804</guid>
		<description><![CDATA[この投稿はパスワードで保護されているため抜粋文はありません。]]></description>
			<content:encoded><![CDATA[<form action="http://clinic.acc-s.com/wp-pass.php" method="post">
<p>この投稿はパスワードで保護されています。表示するにはパスワードを入力してください:</p>
<p><label for="pwbox-804">パスワード:<br />
<input name="post_password" id="pwbox-804" type="password" size="20" /></label><br />
<input type="submit" name="Submit" value="実行" /></p></form>
]]></content:encoded>
			<wfw:commentRss>http://clinic.acc-s.com/?feed=rss2&#038;p=804</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nagiosのお仕事（社内教育）</title>
		<link>http://clinic.acc-s.com/?p=784</link>
		<comments>http://clinic.acc-s.com/?p=784#comments</comments>
		<pubDate>Tue, 10 Dec 2013 10:39:13 +0000</pubDate>
		<dc:creator>所長</dc:creator>
				<category><![CDATA[Nagios]]></category>

		<guid isPermaLink="false">http://clinic.acc-s.com/?p=784</guid>
		<description><![CDATA[  nagiosとは監視のOSS（OpenSourceSoftware）になります。 本家ページは、http://www.nagios.org ﻿翻訳ページは、http://nagios.x-trans.jp/nagios/index.php 弊社デモサイト、http://acc-s.com/nagios/   （ユーザ：demo、パスワード：demoでログインできます。） ※弊社デモサイトはカスタマイズしていて、純粋なNagiosは、「Nagios画面」のページのみです。 ここでは、概要についてふれます。 監視とは サービスの正常運用を保つ為には以下のことが、重要です。 正常、異常の定義／境界 ステータスの読み方、正確な値の取り方 製品（Nagios）の特徴と理解 正常、異常は利用者が境界線を定義します。システムの特性により、どのような状況を警告とし、また異常と扱うか。提供サービスの負荷状況が徐々に変化するものであれば、90%で警告、95%で異常としてもいいかもしれない。突発的に変化するサービスであれば、50%警告、75%で異常とする必要があります。要は100%が来る前に何らかの回避策が必要で、手を打つまでの時間を作る事が目的です。 監視で取り扱うステータスは、取得方法は標準化されていますが、取得した値は機器によるばらつきがあります。また、メーカー側も主となるサービスには人員が確保されていますが、このステータスを理解している担当者が少なく、誤情報を提供されることもあります。システムを構成するファイアウォール、ロードバランサー、L3スイッチ、サーバ、ストレージ、データベースと複数の機器のステータスをみて、問題の機器のステータスが正しいかを見極める必要があり、疑問があれば、メーカー側に何度も問い合わせる必要があります。 監視製品はいくつも出回っています。どの製品を採用するかは、扱っているシステムの特徴や、監視の運用方針にかかわってきます。Nagiosの特徴は、下記でしょうか。  すべてのステータスが１ページ内で確認できる（次ページとか、子ページにいく必要がない） 技術者の好きな言語でカスタマイズできる（Shell、perl、C言語など）   システムに標準でついている機能では、特定の機器に対応できていない場合があります。あるいは、サービス障害により取得したステータスが違う事に気づく事があります。標準で対応できていないのであれば、容易にカスタマイズできるのは、Nagiosの特徴でしょう。   監視項目 とりあえず、列挙していきます。 FW（ファイアウォール）　－　ネットワーク機器 ネットワークトラフィック　・・・　100MBps、1GBpsという規格に対し、通信量を監視 アタック件数　・・・　分間や秒間における外部からの攻撃された件数を監視 CPU使用率　・・・　機器のCPU使用率を監視 メモリ使用率　・・・　機器の搭載メモリに対する使用率を監視　   LB（ロードバランサー）　－　ネットワーク機器  ネットワークトラフィック　・・・　1GBpsという規格に対し、通信量を監視 ネットワークトラフィック（仮想サーバ）　・・・ 仮想サーバ単位に通信量を監視 同時接続数　・・・　同時分秒内に接続しているユーザ数を監視 新規接続数(New Conn)　・・・ 分間、秒間での新規に接続してきたユーザ数を監視 CPU使用率 メモリ使用率   L3SW（L3コアスイッチ）　－　ネットワーク機器  ネットワークトラフィック　・・・　24ポート、48ポートと機器により変わり、利用中のポートに対し通信量を監視 CPU使用率 メモリ使用率   LINUXサーバ　－　サーバ機器  ネットワークトラフィック CPU使用率 メモリ使用率 ディスク使用率 プロセス数 ファイル数 時刻同期　・・・　時刻同期を設定しているが時刻提供サーバとの時刻差を監視   WINDOWSサーバ　－　サーバ機器  [...]]]></description>
			<content:encoded><![CDATA[<p> </p>
<p>nagiosとは監視のOSS（OpenSourceSoftware）になります。</p>
<ul>
<li>本家ページは、<a href="http://www.nagios.org">http://www.nagios.org</a></li>
<li>﻿翻訳ページは、<a href="http://nagios.x-trans.jp/nagios/index.php">http://nagios.x-trans.jp/nagios/index.php</a></li>
<li>弊社デモサイト、<a href="http://acc-s.com/nagios/">http://acc-s.com/nagios/</a>   （ユーザ：demo、パスワード：demoでログインできます。）</li>
</ul>
<p>※弊社デモサイトはカスタマイズしていて、純粋なNagiosは、「Nagios画面」のページのみです。</p>
<p>ここでは、概要についてふれます。</p>
<h1>監視とは</h1>
<p style="padding-left: 30px;">サービスの正常運用を保つ為には以下のことが、重要です。</p>
<ol>
<li>正常、異常の定義／境界</li>
<li>ステータスの読み方、正確な値の取り方</li>
<li>製品（Nagios）の特徴と理解</li>
</ol>
<p style="padding-left: 30px;">正常、異常は利用者が境界線を定義します。システムの特性により、どのような状況を警告とし、また異常と扱うか。提供サービスの負荷状況が徐々に変化するものであれば、90%で警告、95%で異常としてもいいかもしれない。突発的に変化するサービスであれば、50%警告、75%で異常とする必要があります。要は100%が来る前に何らかの回避策が必要で、手を打つまでの時間を作る事が目的です。</p>
<p style="padding-left: 30px;">監視で取り扱うステータスは、取得方法は標準化されていますが、取得した値は機器によるばらつきがあります。また、メーカー側も主となるサービスには人員が確保されていますが、このステータスを理解している担当者が少なく、誤情報を提供されることもあります。システムを構成するファイアウォール、ロードバランサー、L3スイッチ、サーバ、ストレージ、データベースと複数の機器のステータスをみて、問題の機器のステータスが正しいかを見極める必要があり、疑問があれば、メーカー側に何度も問い合わせる必要があります。</p>
<p style="padding-left: 30px;">監視製品はいくつも出回っています。どの製品を採用するかは、扱っているシステムの特徴や、監視の運用方針にかかわってきます。Nagiosの特徴は、下記でしょうか。 </p>
<ul>
<li>すべてのステータスが１ページ内で確認できる（次ページとか、子ページにいく必要がない）</li>
<li>技術者の好きな言語でカスタマイズできる（Shell、perl、C言語など）</li>
</ul>
<p> </p>
<p style="padding-left: 30px;">システムに標準でついている機能では、特定の機器に対応できていない場合があります。あるいは、サービス障害により取得したステータスが違う事に気づく事があります。標準で対応できていないのであれば、容易にカスタマイズできるのは、Nagiosの特徴でしょう。</p>
<p style="padding-left: 30px;"> </p>
<h1>監視項目</h1>
<p style="padding-left: 30px;">とりあえず、列挙していきます。</p>
<h2 style="padding-left: 30px;">FW（ファイアウォール）　－　ネットワーク機器</h2>
<ul>
<li>ネットワークトラフィック　・・・　100MBps、1GBpsという規格に対し、通信量を監視</li>
<li>アタック件数　・・・　分間や秒間における外部からの攻撃された件数を監視</li>
<li>CPU使用率　・・・　機器のCPU使用率を監視</li>
<li>メモリ使用率　・・・　機器の搭載メモリに対する使用率を監視　</li>
</ul>
<p> </p>
<h2 style="padding-left: 30px;">LB（ロードバランサー）　－　ネットワーク機器 </h2>
<ul>
<li>ネットワークトラフィック　・・・　1GBpsという規格に対し、通信量を監視</li>
<li>ネットワークトラフィック（仮想サーバ）　・・・ 仮想サーバ単位に通信量を監視</li>
<li>同時接続数　・・・　同時分秒内に接続しているユーザ数を監視</li>
<li>新規接続数(New Conn)　・・・ 分間、秒間での新規に接続してきたユーザ数を監視</li>
<li>CPU使用率</li>
<li>メモリ使用率</li>
</ul>
<p> </p>
<h2 style="padding-left: 30px;">L3SW（L3コアスイッチ）　－　ネットワーク機器 </h2>
<ul>
<li>ネットワークトラフィック　・・・　24ポート、48ポートと機器により変わり、利用中のポートに対し通信量を監視</li>
<li>CPU使用率</li>
<li>メモリ使用率</li>
</ul>
<p> </p>
<h2 style="padding-left: 30px;">LINUXサーバ　－　サーバ機器 </h2>
<ul>
<li>ネットワークトラフィック</li>
<li>CPU使用率</li>
<li>メモリ使用率</li>
<li>ディスク使用率</li>
<li>プロセス数</li>
<li>ファイル数</li>
<li>時刻同期　・・・　時刻同期を設定しているが時刻提供サーバとの時刻差を監視</li>
</ul>
<p> </p>
<h2 style="padding-left: 30px;">WINDOWSサーバ　－　サーバ機器 </h2>
<ul>
<li>ネットワークトラフィック</li>
<li>CPU使用率</li>
<li>メモリ使用率</li>
<li>ディスク使用率</li>
</ul>
<p> </p>
<h2 style="padding-left: 30px;">共有ストレージ　－　SAN、NASストレージ機器 </h2>
<ul>
<li>ネットワークトラフィック</li>
<li>CPU使用率</li>
<li>メモリ使用率</li>
<li>ディスク使用率</li>
<li>ディスクIO　・・・ 秒間のディスクI／O件数を監視</li>
</ul>
<p> </p>
<h2 style="padding-left: 30px;">データベース　－　ミドルウェア製品 </h2>
<ul>
<li> テーブルスペース使用率　・・・　データベース上のディスク使用率</li>
</ul>
<p> </p>
<h2 style="padding-left: 30px;">アプリサーバ　－　ミドルウェア製品 </h2>
<ul>
<li>javaヒープ使用率　・・・　（例：javaプロセスに割り当てたメモリの使用率）</li>
<li>javaスレッド件数　・・・　（例：javaプロセスに割り当てたスレッド数の件数）</li>
</ul>
<p> </p>
<h2 style="padding-left: 30px;">サービス　－　アプリケーション </h2>
<ul>
<li>発生件数　・・・　ユーザ操作によるデータの発生件数を秒間で監視　</li>
<li>処理時間　・・・　ユーザ操作によるデータの登録要求から完了までの時間を監視</li>
</ul>
<p> </p>
<p style="padding-left: 30px;">上記のような監視項目をNagiosに設定していきます。</p>
<p style="padding-left: 30px;"> </p>
<h1>Nagiosの構成</h1>
<p style="padding-left: 30px;">Nagiosは大きく２つの監視方法を持っています。</p>
<ol>
<li>snmpインタフェースを持つ機器にステータスを要求、取得</li>
<li>nagiosクライアントをインストールした機器にステータスを要求、取得</li>
</ol>
<p style="padding-left: 30px;">「１」はネットワーク機器で、サーバ機器は「１」と「２」の両方になります。いずれも、対象機器の接続許可の設定や、インストール作業が必要です。</p>
<p style="padding-left: 30px;">図解したいのですが、</p>
<ol>
<li>監視サーバ（Nagiosサーバ）　←(snmp)→　ネットワーク機器</li>
<li>監視サーバ(Nagiosサーバ）　←(nrpe)→　サーバ機器（Nagiosクライアント）</li>
</ol>
<p> </p>
<h2>Configの構成(Nagiosサーバ）</h2>
<p style="padding-left: 30px;">Nagiosのバージョンにより異なりますが、</p>
<p style="padding-left: 30px;">メインの設定ファイルは/etc/nagios.cfgで、このファイルから下記を読み込んでいます。</p>
<ul>
<li>commands.cfg　・・・ 監視で使用するコマンドの設定</li>
<li>contacts.cfg　・・・　ユーザ、グループ定義</li>
<li>localhost.cfg 　・・・　監視対象機器の定義</li>
<li>printer.cfg  ・・・　（使ったことがない）</li>
<li>switch.cfg  ・・・ ネットワーク機器の定義</li>
<li>templates.cfg  ・・・　他のcfgをテンプレートとして定義したもの</li>
<li>timeperiods.cfg  ・・・　監視間隔、監視曜日、監視時間帯の定義</li>
<li>windows.cfg　・・・　監視対象のWindowsサーバの定義</li>
</ul>
<p style="padding-left: 30px;">上記は、デフォルトかつサンプルの定義です。すべて名前を変えることができ、その場合、/etc/nagios.cfg に記載したファイルの名前を同様に変えます。</p>
<blockquote><p>（参考:抜粋）　$ more nagios.cfg<br />
##############################################################################<br />
#<br />
# NAGIOS.CFG &#8211; Sample Main Config File for Nagios 3.1.0<br />
#<br />
# Read the documentation for more information on this configuration<br />
# file.  I&#8217;ve provided some comments here, but things may not be so<br />
# clear without further explanation.<br />
#<br />
# Last Modified: 12-14-2008<br />
#<br />
##############################################################################<br />
# LOG FILE<br />
# This is the main log file where service and host events are logged<br />
# for historical purposes.  This should be the first option specified<br />
# in the config file!!!</p>
<p>log_file=/usr/local/nagios/var/nagios.log</p>
<p># OBJECT CONFIGURATION FILE(S)<br />
# These are the object configuration files in which you define hosts,<br />
# host groups, contacts, contact groups, services, etc.<br />
# You can split your object definitions across several config files<br />
# if you wish (as shown below), or keep them all in a single config file.</p>
<p># You can specify individual object config files as shown below:<br />
cfg_file=/usr/local/nagios/etc/objects/commands.cfg<br />
cfg_file=/usr/local/nagios/etc/objects/contacts.cfg<br />
cfg_file=/usr/local/nagios/etc/objects/timeperiods.cfg<br />
cfg_file=/usr/local/nagios/etc/objects/templates.cfg</p>
<p># You can also tell Nagios to process all config files (with a .cfg<br />
# extension) in a particular directory by using the cfg_dir<br />
# directive as shown below:</p>
<p>cfg_dir=/usr/local/nagios/etc/servers</p></blockquote>
<p> </p>
<blockquote><p>（参考:抜粋）　$ more command.cfg</p>
<p>################################################################################<br />
#<br />
# SAMPLE SERVICE CHECK COMMANDS<br />
#<br />
# These are some example service check commands.  They may or may not work on<br />
# your system, as they must be modified for your plugins.  See the HTML<br />
# documentation on the plugins for examples of how to configure command definitions.<br />
#<br />
# NOTE:  The following &#8216;check_local_&#8230;&#8217; functions are designed to monitor<br />
#        various metrics on the host that Nagios is running on (i.e. this one).<br />
################################################################################</p>
<p># &#8216;check_local_disk&#8217; command definition<br />
define command{<br />
        command_name    check_local_disk<br />
        command_line    $USER1$/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$<br />
        }<br />
# &#8216;check_local_load&#8217; command definition<br />
define command{<br />
        command_name    check_local_load<br />
        command_line    $USER1$/check_load -w $ARG1$ -c $ARG2$<br />
        }<br />
# &#8216;check_local_procs&#8217; command definition<br />
define command{<br />
        command_name    check_local_procs<br />
        command_line    $USER1$/check_procs -w $ARG1$ -c $ARG2$ -s $ARG3$<br />
        }<br />
# &#8216;check_local_users&#8217; command definition<br />
define command{<br />
        command_name    check_local_users<br />
        command_line    $USER1$/check_users -w $ARG1$ -c $ARG2$<br />
        }</p></blockquote>
<p> </p>
<blockquote><p>（参考:抜粋）　$ more XXXXXX.cfg</p>
<p>define contactgroup{<br />
        contactgroup_name       A07000009<br />
        alias                   Service User<br />
        members                 A07000009<br />
        }<br />
define contact{<br />
        contact_name            A07000009<br />
        use                     generic-contact<br />
        alias                   service user<br />
        email                   <a href="mailto:kei@acc-s.co.jp">kei@acc-s.co.jp</a><br />
        }<br />
define hostgroup{<br />
        hostgroup_name          group-A07000009<br />
        alias                   HTTP Servers<br />
        members                 <a href="http://www.google.com">www.google.com</a><br />
        }<br />
define host{<br />
        name                    group-A07000009<br />
        use                     generic-host<br />
        check_period            24&#215;7<br />
        check_interval          5<br />
        retry_interval          3<br />
        max_check_attempts      1<br />
        ;check_command          check-host-alive<br />
        check_command           check_http<br />
        ;notification_period    workhours<br />
        ;notification_period    24&#215;7<br />
        notification_interval   120<br />
        notification_options    d,u,r<br />
        contact_groups          admins,A07000009<br />
        register                0<br />
        }<br />
define service{<br />
        name                    services-A07000009<br />
        use                     generic-service<br />
        max_check_attempts      4<br />
        normal_check_interval   5<br />
        retry_check_interval    1<br />
        contact_groups          admins,A07000009<br />
        register                0<br />
        }</p></blockquote>
<p> </p>
<h2>Configの構成(Nagiosクライアント）</h2>
<p>クライアント側は下記のようになっています。</p>
<blockquote><p>（参考:抜粋）　$ more nrpe.cfg</p>
<p>command[check_load]=/usr/local/nagios/libexec/check_load -w 9.0,7.0,6.0 -c 10.0,8.0,7.0<br />
command[check_disk]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /<br />
command[check_mem]=/usr/local/nagios/libexec/check_mem.pl -f -w 20 -c 10　<br />
command[check_total_procs]=/usr/local/nagios/libexec/check_procs -w 250 -c 400 -s RSZDT<br />
command[check_users]=/usr/local/nagios/libexec/check_users -w 3 -c 5<br />
command[check_ssh]=/usr/local/nagios/libexec/check_ssh -H 127.0.0.1<br />
command[check_ntp]=/usr/local/nagios/libexec/check_ntp -H 外部NTPサーバーIPアドレス -w 1 -c 2<br />
command[check_http]=/usr/local/nagios/libexec/check_http -H 127.0.0.1<br />
command[check_smtp]=/usr/local/nagios/libexec/check_smtp -H 127.0.0.1<br />
command[check_amavisd]=/usr/local/nagios/libexec/check_tcp -H 127.0.0.1 -p 10024</p></blockquote>
<p>check_loadや、check_diskはC言語になり、標準でついています。check_mem.pl は perlプログラムです。ファイルに実行権限があれば、実行することができるので、カスタマイズする場合は、自身で作ったプログラムを上記、設定ファイルに追加します。</p>
<p>サーバ側の command.cfg の command_name　check_disk が、クライアント側のcommand[check_disk]になり、一連の設定の流れになります。</p>
<h1>Nagiosにないもの</h1>
<p>大方の監視は、実現できますが決定的に足りないものとして、下記があります。</p>
<ul>
<li>ログ監視</li>
<li>CPU使用率などの日、週、月のグラフ　・・・ 追加製品を公開している人がいたような気がします。</li>
</ul>
<p>ログ監視は、syslog とswatchというOSSを使用して実現したりします。</p>
<p>グラフ表示は、mrtg(OSS)や、munin(OSS)を使用して実現したりします。</p>
<p>ほかにも監視の製品はたくさんあります。結構、注目を浴びているのは ZABBIXですが、どの製品も１つで十分とは言い切れないのが現状でしょうか。</p>
<h1>Nagiosの感想</h1>
<p>製品自体は難しくはありません。ファイル数もアプリと比較すれば非常に少ないです。実際、やっている事もC言語で作られたコマンドを実行し、そのステータスを収集するものです。どちらかと言えば、監視対象機器の知識だったり、誰かが設定した各設定ファイルの誤りを見つける為に使用するサーバコマンドの知識が大切でしょう。</p>
<ul>
<li>現在の監視では不十分だから、○○を監視する項目を追加したい要望に応える。</li>
<li>新しい機器のMIB（snmpで取得したいステータスのID）がわからない。</li>
<li>標準の監視コマンドが、怪しいので調べる。</li>
</ul>
<p>上記のような技術があると、重宝されるのではないかと思います。ただ、この辺は、徐々に把握できればいいでしょう。昨今はサーバ増設が多いので、Nagiosサーバには既存の設定に監視項目を追加していき、増設サーバにはNagiosクライアントをインストールする作業が優先です。</p>
]]></content:encoded>
			<wfw:commentRss>http://clinic.acc-s.com/?feed=rss2&#038;p=784</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>リアルタイム分析</title>
		<link>http://clinic.acc-s.com/?p=775</link>
		<comments>http://clinic.acc-s.com/?p=775#comments</comments>
		<pubDate>Tue, 17 Sep 2013 10:50:55 +0000</pubDate>
		<dc:creator>所長</dc:creator>
				<category><![CDATA[未分類]]></category>

		<guid isPermaLink="false">http://clinic.acc-s.com/?p=775</guid>
		<description><![CDATA[BIGデータについて調べてみました。 ちまたでは、 大量データを貯めこんで高速検索では、既に古い情報 今注目されているのは、 リアルタイム分析 googleで検索してみると、下記のような製品がヒットしました。 【PFI】Sedue for BigData　～ Jubatus派生 ～ 【富士通】FUJITSU Software Interstage Terracotta BigMemory Max V4.0　～ Teracotta派生 ～ 【OSS】Jubatus（ユバタス） 【SoftwareAG】Software AG Presto Real-Time Analytics Add-On With Terracotta BigMemory ～ Teracotta連携 ～ 【IBM】IBM InfoSphere Streams 【HP】Vertica Analytics Platform &#160; ひととおり見てみて、リアルタイム分析システムの特徴は以下のようになる。（と言い切っていいのだろうか） ため込むのではなく、中継しながら分析する方式である。 並行分散可能なソフトウェアである。 大量データを扱う為、大量のメモリを消費する。 &#160; 分析機能としては、 大量データは試行錯誤したり、見方を変えながら分析をする事ができる。 １．のような分析をリアルタイムでする必要はない。 どのように事象が変化していくのかを分析する。 大量データの分析とリアルタイム分析は、異なるものととらえるべき &#160; もう少し踏み込む前にリアルタイム分析製品は、 Jubatus、Terracottaあたりが、主流のように見える。Jubatusはオープンソースという事もあり、ドキュメントが公開されている。 http://jubat.us/ja/index.html 上記サイトから [...]]]></description>
			<content:encoded><![CDATA[<p>BIGデータについて調べてみました。</p>
<p>ちまたでは、</p>
<blockquote><p><strong>大量データを貯めこんで高速検索では、既に古い情報</strong></p></blockquote>
<p>今注目されているのは、</p>
<blockquote><p><strong>リアルタイム分析</strong></p></blockquote>
<p>googleで検索してみると、下記のような製品がヒットしました。</p>
<ul>
<li>【PFI】Sedue for BigData　～ Jubatus派生 ～</li>
<li>【富士通】FUJITSU Software Interstage Terracotta BigMemory Max V4.0　～ Teracotta派生 ～</li>
<li>【OSS】Jubatus（ユバタス）</li>
<li>【SoftwareAG】Software AG Presto Real-Time Analytics Add-On With Terracotta BigMemory ～ Teracotta連携 ～</li>
<li>【IBM】IBM InfoSphere Streams</li>
<li>【HP】Vertica Analytics Platform</li>
</ul>
<p>&nbsp;</p>
<p>ひととおり見てみて、リアルタイム分析システムの特徴は以下のようになる。（と言い切っていいのだろうか）</p>
<ol>
<li>ため込むのではなく、中継しながら分析する方式である。</li>
<li>並行分散可能なソフトウェアである。</li>
<li>大量データを扱う為、大量のメモリを消費する。</li>
</ol>
<p>&nbsp;</p>
<p>分析機能としては、</p>
<ol>
<li>大量データは試行錯誤したり、見方を変えながら分析をする事ができる。</li>
<li>１．のような分析をリアルタイムでする必要はない。</li>
<li>どのように事象が変化していくのかを分析する。</li>
<li>大量データの分析とリアルタイム分析は、異なるものととらえるべき</li>
</ol>
<p>&nbsp;</p>
<p>もう少し踏み込む前にリアルタイム分析製品は、 Jubatus、Terracottaあたりが、主流のように見える。Jubatusはオープンソースという事もあり、ドキュメントが公開されている。</p>
<p><a href="http://jubat.us/ja/index.html">http://jubat.us/ja/index.html</a></p>
<p>上記サイトから</p>
<blockquote><p><strong>Jubatusの特徴</strong></p></blockquote>
<ul>
<li> 深い分析</li>
</ul>
<p>Jubatusは、分類、回帰、統計、推薦、グラフマイニングなど多くの深い分析を実現しています。またバッチ型機械学習と同程度の学習精度を実現しています。</p>
<ul>
<li>スケーラビリティ</li>
</ul>
<p>Jubatusは、廉価なコモディティサーバを多数並べた分散処理（スケールアウト）が可能です。理論的には100台程度までスケールアウトが可能です。Jubatusでは、コモディティサーバで10万qpsを超えるスケーラブルな機械学習を実現しています。</p>
<ul>
<li>リアルタイム</li>
</ul>
<p>Jubatusは、データをためることなく瞬時に学習を行います。</p>
<p>&nbsp;</p>
<blockquote><p><strong>Hadoopとの比較</strong></p></blockquote>
<p>Hadoop/MahoutとJubatusの間には多くの共通点があります。これらはスケーラブルで、コモディティサーバ上で動作します。</p>
<p>ストック型データに対する一括高速分析（バッチ処理）を得意とするHadoopは、機械学習がMapReduceパラダイムにあまり適合していないこともあり、洗練された機械学習機能を備えていません。Apache Mahout も Hadoop-based な機械学習プラットフォームですが、オンライン処理はスコープ外です。<br />
Jubatusは、データ分析に特化しています。 Jubatusは、すべてのデータをメモリ上で処理し、オンラインで処理し、高いスループットと低いレイテンシを実現します。 この機能を実現するために、Jubatusは分散環境におけるゆるいモデルの共有と同期というアーキテクチャを採用しているのです。</p>
<p>&nbsp;</p>
<blockquote><p><strong>最後に</strong></p>
<p>JubatusではHadoopでもおなじみのZookeeperを使用して分散化をしている。この辺の特徴から、Hadoop(BIGデータ分析）、Jubatas(リアルタイム分析）の棲み分けも面白いが、サーバは別々に用意する必要がある為、ハードウェアというよりシステム管理面で共有する事になる。(OSS＋java)</p>
<p>Jubatusを提案するには、オンライン連携（中継）の方式、オンラインデータのフォーマット機能、分析機能とメンテナンス方式を理解し、構成を提示する事になるだろう。他の製品を進めるにも、このあたりの知識をメーカー、顧客と調整する必要がありそうだ。</p></blockquote>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://clinic.acc-s.com/?feed=rss2&#038;p=775</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>hadoop 1.1.1 のインストール (CentOS5.3)</title>
		<link>http://clinic.acc-s.com/?p=766</link>
		<comments>http://clinic.acc-s.com/?p=766#comments</comments>
		<pubDate>Mon, 24 Dec 2012 14:55:22 +0000</pubDate>
		<dc:creator>所長</dc:creator>
				<category><![CDATA[未分類]]></category>

		<guid isPermaLink="false">http://clinic.acc-s.com/?p=766</guid>
		<description><![CDATA[&#8230;忘れかけているから抜けがありそうだけど、次回の為に残しておきます。 用意したもの jdk-6u38-linux-x64-rpm.bin rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm　　(必要なかったかも。。。） hadoop-1.1.1-1.x86_64.rpm　(本体) hadoop-1.1.1.tar.gz  (サンプルプログラムが欲しかった) インストール rpm はroot ユーザで rpm -ivh でインストールする。 hadoop-1.1.1.tar.gz は一般ユーザで解凍する。 ※誰でもいいのか不安だったので、上記で作成された mapred ユーザで解凍した。 月並みだけど、java のインストール後に JAVA_HOME の環境変数が必要です。私は面倒だったので、/etc/profile.d/java.sh を新規作成して、「export JAVA_HOME=/usr/java/latest」の１行のみ書いています。 hadoop-1.1.1-1.x86_64.rpm で作成されるもの コマンド hadoop                               hadoop-setup-conf.sh          hadoop-　　　validate-setup.sh hadoop-create-user.sh         hadoop-daemons.sh             hadoop-setup-hdfs.sh hadoop-daemon.sh              hadoop-setup-applications.sh  hadoop-setup-single-node.sh hadoop コマンドや設定ファイルを作成してくれるもの、デーモン起動に使用するものがある。/usr/sbin や /usr/local/bin に作成される。 環境ファイル /etc/hadoop が作成されます。よく解説にでてくる core-site.xml、hdfs-site.xml、mapred-site.xml がここに作成されます。 起動スクリプト /etc/init.d/に各起動スクリプトが作成される。 hadoop-datanode  hadoop-historyserver  hadoop-jobtracker   hadoop-namenode  　　　　　hadoop-secondarynamenode  hadoop-tasktracker [...]]]></description>
			<content:encoded><![CDATA[<p>&#8230;忘れかけているから抜けがありそうだけど、次回の為に残しておきます。</p>
<blockquote><p>用意したもの</p></blockquote>
<ul>
<li>jdk-6u38-linux-x64-rpm.bin</li>
<li>rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm　　(必要なかったかも。。。）</li>
<li>hadoop-1.1.1-1.x86_64.rpm　(本体)</li>
<li>hadoop-1.1.1.tar.gz  (サンプルプログラムが欲しかった)</li>
</ul>
<blockquote><p>インストール</p></blockquote>
<ul>
<li>rpm はroot ユーザで rpm -ivh でインストールする。</li>
<li>hadoop-1.1.1.tar.gz は一般ユーザで解凍する。 ※誰でもいいのか不安だったので、上記で作成された mapred ユーザで解凍した。</li>
</ul>
<p>月並みだけど、java のインストール後に JAVA_HOME の環境変数が必要です。私は面倒だったので、/etc/profile.d/java.sh を新規作成して、「export JAVA_HOME=/usr/java/latest」の１行のみ書いています。</p>
<blockquote><p>hadoop-1.1.1-1.x86_64.rpm で作成されるもの<strong> </strong></p></blockquote>
<p><strong> コマンド</strong></p>
<p>hadoop                               hadoop-setup-conf.sh          hadoop-　　　validate-setup.sh<br />
hadoop-create-user.sh         hadoop-daemons.sh             hadoop-setup-hdfs.sh<br />
hadoop-daemon.sh              hadoop-setup-applications.sh  hadoop-setup-single-node.sh</p>
<p>hadoop コマンドや設定ファイルを作成してくれるもの、デーモン起動に使用するものがある。/usr/sbin や /usr/local/bin に作成される。</p>
<p><strong> 環境ファイル</strong></p>
<p>/etc/hadoop が作成されます。よく解説にでてくる core-site.xml、hdfs-site.xml、mapred-site.xml がここに作成されます。</p>
<p><strong> 起動スクリプト</strong></p>
<p>/etc/init.d/に各起動スクリプトが作成される。</p>
<p>hadoop-datanode  hadoop-historyserver  hadoop-jobtracker   hadoop-namenode  　　　　　hadoop-secondarynamenode  hadoop-tasktracker</p>
<p>この辺を起動するのだけど、hadoop の通信は結構あるので、iptables は停止した方が良い。</p>
<blockquote><p>やったこと</p></blockquote>
<ul>
<li>hadoop-create-user.sh</li>
<li>hadoop-setup-single-node.sh</li>
<li>hadoop-setup-hdfs.sh</li>
</ul>
<p>上記を何も考えずに実行した。</p>
<ul>
<li>core-site.xml</li>
<li>hdfs-site.xml</li>
<li>mapred-site.xml</li>
</ul>
<p>上記のlocalhostを全て 192.168.0.xxx のIPアドレスに変更した。あとで思えば、localhost のままでもいいものも、あったように思う。</p>
<ul>
<li>hadoop サービスの再起動。</li>
</ul>
<p>順番は、/etc/rc3.d の記載順</p>
<p>/etc/rc3.d/S90hadoop-datanode start<br />
/etc/rc3.d/S90hadoop-jobtracker start<br />
/etc/rc3.d/S90hadoop-namenode start<br />
/etc/rc3.d/S90hadoop-tasktracker start</p>
<ul>
<li>サイトアクセス</li>
</ul>
<p>http://192.168.0.xxx:50070　　はHDS のWEBサービス</p>
<p><a href="http://clinic.acc-s.com/wp-content/uploads/2012/12/hadoop02.png"><img class="alignnone size-medium wp-image-768" title="hadoop02" src="http://clinic.acc-s.com/wp-content/uploads/2012/12/hadoop02-292x300.png" alt="" width="292" height="300" /></a></p>
<p>http://192.168.0.xxx:50030      は job tracker のWEBサービス</p>
<p><a href="http://clinic.acc-s.com/wp-content/uploads/2012/12/hadoop011.png"><img class="alignnone size-medium wp-image-770" title="hadoop01" src="http://clinic.acc-s.com/wp-content/uploads/2012/12/hadoop011-292x300.png" alt="" width="292" height="300" /></a></p>
<ul>
<li>テスト</li>
</ul>
<p>hadoop-1.1.1.tar.gz を展開すると、下記のようなサンプル(？)が、展開される。</p>
<p>hadoop-ant-1.1.1.jar<br />
hadoop-client-1.1.1.jar<br />
hadoop-core-1.1.1.jar<br />
hadoop-examples-1.1.1.jar<br />
hadoop-minicluster-1.1.1.jar<br />
hadoop-test-1.1.1.jar<br />
hadoop-tools-1.1.1.jar</p>
<p>とりあえず、hadoop-examples-1.1.1.jar を maperd ユーザで実行してみる。</p>
<p><strong>$ hadoop jar hadoop-examples-1.1.1.jar</strong><br />
An example program must be given as the first argument.<br />
Valid program names are:<br />
aggregatewordcount: An Aggregate based map/reduce program that counts the words in the input files.<br />
aggregatewordhist: An Aggregate based map/reduce program that computes the histogram of the words in the input files.<br />
dbcount: An example job that count the pageview counts from a database.<br />
grep: A map/reduce program that counts the matches of a regex in the input.<br />
join: A job that effects a join over sorted, equally partitioned datasets<br />
multifilewc: A job that counts words from several files.<br />
pentomino: A map/reduce tile laying program to find solutions to pentomino problems.<br />
pi: A map/reduce program that estimates Pi using monte-carlo method.<br />
randomtextwriter: A map/reduce program that writes 10GB of random textual data per node.<br />
randomwriter: A map/reduce program that writes 10GB of random data per node.<br />
secondarysort: An example defining a secondary sort to the reduce.<br />
sleep: A job that sleeps at each map and reduce task.<br />
sort: A map/reduce program that sorts the data written by the random writer.<br />
sudoku: A sudoku solver.<br />
teragen: Generate data for the terasort<br />
terasort: Run the terasort<br />
teravalidate: Checking results of terasort<br />
wordcount: A map/reduce program that counts the words in the input files.</p>
<p>親切ですね。コマンドに何があるか教えてくれているみたい。。。本にも紹介されていた wordcount が簡単そう。。</p>
<p><strong>$ hadoop jar hadoop-examples-1.1.1.jar wordcount</strong><br />
Usage: wordcount &lt;in&gt; &lt;out&gt;</p>
<p>さらなる引数を教えてくれた。INファイルをOUTディレクトリが必要らしい。INファイルはUNIXファイルシステムではない事に注意。</p>
<p>INファイルをアップします。</p>
<p><strong>$ hadoop dfs -ls /</strong><br />
Found 2 items<br />
drwxrwxrwx   &#8211; hdfs   supergroup          0 2012-12-24 22:25 /tmp<br />
drwxr-xr-x   &#8211; hdfs   supergroup          0 2012-12-24 20:31 /user</p>
<p>二つのディレクトリがHDS上に存在するらしい、dfs は -ls 以外に -mkdirなどいろいろあります。</p>
<p>UNIXファイルをアップします。</p>
<p><strong>$ hadoop dfs -put /etc/hosts /tmp/</strong><br />
-bash-3.2$ hadoop dfs -ls /tmp/<br />
Found 1 items<br />
-rw&#8212;&#8212;-   3 mapred supergroup        238 2012-12-24 23:29 /tmp/hosts</p>
<p>ファイルがアップできたので、再度コマンドを実行します。</p>
<p><strong>$ hadoop jar hadoop-examples-1.1.1.jar wordcount /tmp/hosts /tmp/output</strong><br />
12/12/24 23:32:13 INFO input.FileInputFormat: Total input paths to process : 1<br />
12/12/24 23:32:13 INFO util.NativeCodeLoader: Loaded the native-hadoop library<br />
12/12/24 23:32:13 WARN snappy.LoadSnappy: Snappy native library not loaded<br />
12/12/24 23:32:13 INFO mapred.JobClient: Running job: job_201212242215_0005<br />
12/12/24 23:32:14 INFO mapred.JobClient:  map 0% reduce 0%<br />
12/12/24 23:32:29 INFO mapred.JobClient:  map 100% reduce 0%<br />
12/12/24 23:32:36 INFO mapred.JobClient:  map 100% reduce 33%<br />
12/12/24 23:32:37 INFO mapred.JobClient:  map 100% reduce 100%<br />
12/12/24 23:32:38 INFO mapred.JobClient: Job complete: job_201212242215_0005<br />
12/12/24 23:32:39 INFO mapred.JobClient: Counters: 29<br />
12/12/24 23:32:39 INFO mapred.JobClient:   Job Counters<br />
12/12/24 23:32:39 INFO mapred.JobClient:     Launched reduce tasks=1<br />
12/12/24 23:32:39 INFO mapred.JobClient:     SLOTS_MILLIS_MAPS=13193<br />
12/12/24 23:32:39 INFO mapred.JobClient:     Total time spent by all reduces waiting after reserving slots (ms)=0<br />
12/12/24 23:32:39 INFO mapred.JobClient:     Total time spent by all maps waiting after reserving slots (ms)=0<br />
12/12/24 23:32:39 INFO mapred.JobClient:     Launched map tasks=1<br />
12/12/24 23:32:39 INFO mapred.JobClient:     Data-local map tasks=1<br />
12/12/24 23:32:39 INFO mapred.JobClient:     SLOTS_MILLIS_REDUCES=8831<br />
12/12/24 23:32:39 INFO mapred.JobClient:   File Output Format Counters<br />
12/12/24 23:32:39 INFO mapred.JobClient:     Bytes Written=285<br />
12/12/24 23:32:39 INFO mapred.JobClient:   FileSystemCounters<br />
12/12/24 23:32:39 INFO mapred.JobClient:     FILE_BYTES_READ=395<br />
12/12/24 23:32:39 INFO mapred.JobClient:     HDFS_BYTES_READ=338<br />
12/12/24 23:32:39 INFO mapred.JobClient:     FILE_BYTES_WRITTEN=58367<br />
12/12/24 23:32:39 INFO mapred.JobClient:     HDFS_BYTES_WRITTEN=285<br />
12/12/24 23:32:39 INFO mapred.JobClient:   File Input Format Counters<br />
12/12/24 23:32:39 INFO mapred.JobClient:     Bytes Read=238<br />
12/12/24 23:32:39 INFO mapred.JobClient:   Map-Reduce Framework<br />
12/12/24 23:32:39 INFO mapred.JobClient:     Map output materialized bytes=395<br />
12/12/24 23:32:39 INFO mapred.JobClient:     Map input records=7<br />
12/12/24 23:32:39 INFO mapred.JobClient:     Reduce shuffle bytes=395<br />
12/12/24 23:32:39 INFO mapred.JobClient:     Spilled Records=52<br />
12/12/24 23:32:39 INFO mapred.JobClient:     Map output bytes=343<br />
12/12/24 23:32:39 INFO mapred.JobClient:     CPU time spent (ms)=1900<br />
12/12/24 23:32:39 INFO mapred.JobClient:     Total committed heap usage (bytes)=265216000<br />
12/12/24 23:32:39 INFO mapred.JobClient:     Combine input records=27<br />
12/12/24 23:32:39 INFO mapred.JobClient:     SPLIT_RAW_BYTES=100<br />
12/12/24 23:32:39 INFO mapred.JobClient:     Reduce input records=26<br />
12/12/24 23:32:39 INFO mapred.JobClient:     Reduce input groups=26<br />
12/12/24 23:32:39 INFO mapred.JobClient:     Combine output records=26<br />
12/12/24 23:32:39 INFO mapred.JobClient:     Physical memory (bytes) snapshot=231952384<br />
12/12/24 23:32:39 INFO mapred.JobClient:     Reduce output records=26<br />
12/12/24 23:32:39 INFO mapred.JobClient:     Virtual memory (bytes) snapshot=2097623040<br />
12/12/24 23:32:39 INFO mapred.JobClient:     Map output records=27</p>
<p>期待どおりの動作？。。。動いてよかったよかった。</p>
<p>ついでにソースが見たくなります。</p>
<p><strong>$ jar tvf hadoop-examples-1.1.1.jar</strong><br />
0 Mon Nov 19 10:42:54 JST 2012 META-INF/<br />
156 Mon Nov 19 10:42:52 JST 2012 META-INF/MANIFEST.MF<br />
0 Mon Nov 19 10:42:54 JST 2012 org/<br />
0 Mon Nov 19 10:42:54 JST 2012 org/apache/<br />
0 Mon Nov 19 10:42:54 JST 2012 org/apache/hadoop/<br />
0 Mon Nov 19 10:42:54 JST 2012 org/apache/hadoop/examples/<br />
0 Mon Nov 19 10:42:54 JST 2012 org/apache/hadoop/examples/dancing/<br />
0 Mon Nov 19 10:42:54 JST 2012 org/apache/hadoop/examples/terasort/<br />
1995 Mon Nov 19 10:42:54 JST 2012 org/apache/hadoop/examples/AggregateWordCount$WordCountPlugInClass.class</p>
<p>（中略）</p>
<p>コンパイルされた class ファイルですかが、パスを確認できます。ソースコードは下記にあります。</p>
<p>個々の解説は。。。私が理解できたらですね。大きくいうと、標準クラスを利用している、オリジナルクラスを定義している、main で、引数の確認から Jobtracker への定義、処理の設定、ファイル入出力定義と実行の終了待ち「job.waitForCompletion()」といった感じでしょうか。この処理は、単純集計ですが、複雑な解析が必要になると、IntSumReducer()といった関数の中身が膨大になるでしょうね。また、集計方法に合わせて、Mapを変える必要があるでしょうし、Map、Reduce、In、Out、Map、Reduce、In、Out。。。とJobの設定が長くなっていく予感がします。</p>
<p><strong>$ cat  src/examples/org/apache/hadoop/examples/WordCount.java</strong><br />
package org.apache.hadoop.examples;</p>
<p>import java.io.IOException;<br />
import java.util.StringTokenizer;</p>
<p>import org.apache.hadoop.conf.Configuration;<br />
import org.apache.hadoop.fs.Path;<br />
import org.apache.hadoop.io.IntWritable;<br />
import org.apache.hadoop.io.Text;<br />
import org.apache.hadoop.mapreduce.Job;<br />
import org.apache.hadoop.mapreduce.Mapper;<br />
import org.apache.hadoop.mapreduce.Reducer;<br />
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;<br />
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;<br />
import org.apache.hadoop.util.GenericOptionsParser;</p>
<p>public class WordCount {</p>
<p>public static class TokenizerMapper<br />
extends Mapper&lt;Object, Text, Text, IntWritable&gt;{</p>
<p>private final static IntWritable one = new IntWritable(1);<br />
private Text word = new Text();</p>
<p>public void map(Object key, Text value, Context context<br />
) throws IOException, InterruptedException {<br />
StringTokenizer itr = new StringTokenizer(value.toString());<br />
while (itr.hasMoreTokens()) {<br />
word.set(itr.nextToken());<br />
context.write(word, one);<br />
}<br />
}<br />
}</p>
<p>public static class IntSumReducer<br />
extends Reducer&lt;Text,IntWritable,Text,IntWritable&gt; {<br />
private IntWritable result = new IntWritable();</p>
<p>public void reduce(Text key, Iterable&lt;IntWritable&gt; values,<br />
Context context<br />
) throws IOException, InterruptedException {<br />
int sum = 0;<br />
for (IntWritable val : values) {<br />
sum += val.get();<br />
}<br />
result.set(sum);<br />
context.write(key, result);<br />
}<br />
}</p>
<p>public static void main(String[] args) throws Exception {<br />
Configuration conf = new Configuration();<br />
String[] otherArgs = new GenericOptionsParser(conf, args).getRemainingArgs();<br />
if (otherArgs.length != 2) {<br />
System.err.println(&#8220;Usage: wordcount &lt;in&gt; &lt;out&gt;&#8221;);<br />
System.exit(2);<br />
}<br />
Job job = new Job(conf, &#8220;word count&#8221;);<br />
job.setJarByClass(WordCount.class);<br />
job.setMapperClass(TokenizerMapper.class);<br />
job.setCombinerClass(IntSumReducer.class);<br />
job.setReducerClass(IntSumReducer.class);<br />
job.setOutputKeyClass(Text.class);<br />
job.setOutputValueClass(IntWritable.class);<br />
FileInputFormat.addInputPath(job, new Path(otherArgs[0]));<br />
FileOutputFormat.setOutputPath(job, new Path(otherArgs[1]));<br />
System.exit(job.waitForCompletion(true) ? 0 : 1);<br />
}<br />
}</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://clinic.acc-s.com/?feed=rss2&#038;p=766</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
