そば打ちをはじめて7回目で細く長いそばが打てるようになるまでの試行錯誤の記録
江戸東京そばの会のそば打ち体験コースでそばを習ってから、いつかやろうやろうと思っていたがなかなか取り組めていなかったそば打ちを始めた。
jippahitokarage.hatenablog.com
最近話題になっていた記事、
男性は一定の年齢になるとなぜ「蕎麦打ち」にはまってしまうのか?「男性は蕎麦打ち、女性はパン焼きのイメージ」 - Togetterまとめ
我が家は私がそばを打ち、嫁がパンを焼いている。完全にうちのことを言っているのかと思った。
さて、7回そばを打ってみた中で学んだことや初心者がハマりやすいポイントをどうクリアしてきたのかを記録しておく。7回目でようやく細く長いそばが打てるようになり、自分で作って楽しめて、食感も喉越しも良い。そばの香りが楽しめる美味しい蕎麦が食べられる。目に見えてレベルアップしているときがやはり一番楽しい。
しかし、ここに至るまでには試行錯誤の連続だった。
一度に作る量はそば150g, 強力粉37.5gで2人前からでOK
初めて打ったそば。
全然思い通りにいかない。そばなの?うどんなの?
そば打ちのためにとりあえず、めん棒だけ購入して打ってみた。
ゆであげた結果、ぶつぶつちぎれて長さ5cm程度のうどんの山。しかも美味しくない。ごにゅごにゅした歯ごたえのなにか。はっきり言ってこの時期の美味しくないそばが打ち上がったあと、それを食べるというのが一番きつい。それに付き合わされる家族はあなたのそば打ちを呪術かなにかでも見るように恐れ、寄り付かなくなることだろう。ただでさえ上手にできないのに、打ちのめすようにまずいそばが襲ってくる。
そば打ち入門をうたうレシピでは400gや500g打つ物が多いのでそれにならってそば粉150gの袋を2袋使って300gにつなぎの強力粉75gで二八そばを作っていた。江戸東京そばの会でも体験コースは500gのそばを打つ。失敗すると4〜5人前くらいのまずいそばが出来上がることになる。まずいそばを打つと家族からも不評なので、練習では最小構成で望むのが良い。
二八そばは(つなぎ:そば粉)が(2:8)である。水の量は「加水率」と表現されつなぎとそば粉を合わせた粉の総量に対しての比率を百分率で表すことが多い。
強力粉 37.5g
そば粉 150g
水 75g(はっきり言ってこねる時間や湿度によるので最終的には調整が必要)
このケースでは、そば粉150g 一袋が固定なので、強力粉はその1/4で37.5g。水は粉やその日の室温・湿度にもよるが加水率40%〜50%程度とされる。今回は40%として75gとしている。実際には打っているときに過不足を調整することになる。
二八そばの加水率を40%とすると、(強力粉:水:そば粉)の比が(2:4:8)つまり(2^1 : 2^2 : 2^3)になって気持ち良い。
これくらいの最小構成なら、失敗してもせいぜい2人前程度なのでダメージが小さい。
なぜうどんのようなそばになってしまうのか
うどんのように太くなってしまう原因はただ一つ。これは腕のせいではなく道具のせいと言って良い。一般的な包丁でそばを切るには限界がある。そもそも刃渡りが短く、まっすぐ上から均一に力を入れて下までおろす作業は専門の包丁が必要である。 そば打ちにおいて、麺切り包丁とこま板は必須アイテムといって良い。
そば打ちに限ったことではないが、私はなにか買い物をしようというときに、いきなり便利な道具をそろえないようにしている。いきなり便利なものに触れると、なぜそれが必要なのかというところがわからなくなってしまうからだ。ないならないなりに、まずはあるもので頑張ってみて、これは専門の道具が必要だなと自分自身がその価値を感じたら買うようにしている。
麺切り包丁とこま板を使って切ったそばはこのように均一で 美しい。均一に切れると湯で時間も均一になり、食感も少しずつ良くなってくる。
見た目はきれいだけどボソボソとちぎれるときは霧吹きチート
いわゆる水回しがうまくいっていない。江戸東京そばの会でそば打ちを習ったときは、水回しの重要性を説かれたが、そんなものこねこねしたら一緒だろとその時は思っていた。しかし、実際に何度かそばを打っていると、つなぎによってしっとりとつながっている部分と、水分が足りなくてパサパサしている部分があることがわかる。なるほどこれが水回しがきちんとできている部分とできていない部分の差なのかとここで初めて気がついた。
誰に教わったわけでもないが、私なりに均一に水を回すチートを思いついた。霧吹きでシュッシュと水を回すこれがかなり有効だ。
霧吹きをシュッシュして、
はしでかき混ぜることを繰り返す。
手打ちそば界隈の人々はこの水回しのテクニックを身につけるのにかなり苦労しているようだが、この世の中には100円ショップで手に入る霧吹きという便利アイテムがある。一気に水を入れてしまい、ダマになり、全体に水が回らないのであれば均一に吹き付ければ良いとう発想である。400gや500gひいてはプロのように1kgのそばを打つというレベルであれば流石に霧吹きでシュッシュというわけには行かないかもしれないが、たかだか200g程度の粉であれば霧吹き吹き付けながら水回しをしてもそれほど負荷ではない。
しっかりと水回しをしてできあがったそばのツルツルとしたゆであがりと喉越しを感じられたら初級者から中級者への階段を登り始めたと言って良い。
ゆでるとちぎれて短いそばになる
江戸東京そばの会のそば打ち体験コースは、「ゆで」はレッスンメニューにない。打ったそばは先生が試食用にゆでてくれて出してくれるので、ゆで方についてはまったくノーマークだった。試行錯誤していくなかで、ゆで方がいかに重要であるかに気付かされる。
どんなに美しくそばが打てるようになっても、ゆで方一つでそばは台無しになる。せっかくきれいに打てたのに、ゆでるとちぎれて短いそばになってしまう。そこで私は考えた。理屈の上でいえば、極端な話、丁寧に麺を1本ずつ鍋にいれて湯で上げればちぎれるはずはない。そう、一気にたくさんゆでようとするから麺同士がくっついてしまう心配をしてはしでかきまわして自ら麺をちぎってしまうのである。そこで、麺をちぎらないために守らなければならないことは、以下の通り。
・大きな鍋に多量のお湯で
・少量のそばを
・はしでかきまわし過ぎないようにゆでて
・取り出すときは網ですくう(はしで持ち上げない)
これを守らないとどんなに美しいそばもブチブチとちぎれてしまう。はしでかきまわさなくてもそば同士がくっつかないように、そばが沸騰するお湯の中で踊るようなゆで方をイメージして欲しい。これをまもればはしでかきまわす回数も少なくて済む。
少量ずつそばをゆでるので、ゆであがったらそばを鍋から引き上げて、次のそばを入れるという流れになる。このとき、ゆであがったそばをはしでつまみあげてはならない。はしで持ち上げようとした瞬間にそばがちぎれる。ここで覚えておいてほしいのは、「そばはゆであがったあと、冷水で洗ったときに初めて麺として成立する」ということである。ゆであがったばかりのあつあつのそばは、はしでつまみ上げるといとも簡単にちぎれてしまう。はしは鍋の中でそばを集めるために使うにとどめて、あつめたそばを網を使ってすくいあげる。
一定の年齢になるとなぜかハマっていくという、手打ちそばの世界へどうぞお越しくださいませ。
学習コストが低い 片手キーボード入力方式「片手ミラー配列(one hand mirror)」を考えたので製品化して欲しい。
Frogpadという製品を知ってから片手キーボードに憧れを持ち続けている。初代Frogpadは触ったことはないが、数年前にFrogpad2が発売されると聞いてウキウキしたものだ。*1
Frogpad2は開発中の段階からずっと情報を追い続けていて、いざ予約開始となったら先行予約してお金も入金したのに、結局Frogpad社の開発資金がショートして完成しなかった。払ったお金は結局戻ってきたけれど、片手キーボードへの思いは未だに捨てきれていない。
ないものは、自分でつくるしかない。
調べてみると、いろいろな方式が提唱されているようであるが、片手で入力できるようにチューニングするあまり、ショートカットを作りまくりということになると、覚えるのに時間がかかって使う気にはなれない。入力を重視するあまり、かな入力を採用して英語が打てないというのもいやだ。そこで、日本語も英語も入力でき、学習コストはできるだけ抑えた片手入力方式を考えた。
名付けて「片手ミラー配列(one hand mirror) 」
片手で操作する以上は打てるキーが約半分になる。その半分になったキーからCtrlやShiftのような修飾キーの「押しながら」を使って補完する。補完の仕方として、左手で操作できる範囲(赤枠)をちょうど鏡に写したように線対称になるキー(青枠)を補完する。
例えばこのような形である。
・左手の小指「q」で右手の小指「p」を補完する。
・左手の薬指「w」で右手の薬指「o」を補完する。
・左手の中指「e」で右手の小指「i」を補完する。
(以下省略)
今回は検証用としてMacBookの日本語キーボードの「英数」を修飾キーとしてカスタマイズした。カスタマイズにはKeyhacを利用している。Keyhacの設定ファイルconfig.pyはこちらを参照(GitHub - watchan/one-hand-mirror)。
「"英数"+q」で「p」を入力
「"英数"+w」で「o」を入力
「"英数"+e」で「i」を入力
このように鏡になっているので、正しいタッチタイピングができている人であれば学習コストがおさえられる。
ただし、左手では絶対に届かないReturnやDeleteについては、
「"英数"+Ctrl+Tab」で「Return」
「"英数"+Ctrl+R」で「Delete」
と言った形で一部、鏡の構成に対して例外を許容せざるを得ない部分もある。
この入力方式の優れているところは、今現在、正しい指でタッチタイピングをしている人はすでにキー配列を覚えたことになるという点である。「あれはどうやって打つんだっけ?」ということがない分、学習コストが低いと言える。
実際に打っている様子はこちら。実装してから30分ほど練習すればこの程度は打てるようになる。もう少し練習すれば実用レベルになるかもしれない。
片手タイピング One hand typing (one hand mirror)
細かいところはGithubの設定ファイルを見て欲しい。目下の課題は、鏡の構成をとったときにあふれてしまう右側のキーをどうするのかである。
とりあえず、左側に寄せた形で「"英数"+Ctrl+各種キー」でなんとかやりくりしているが、左手と右手の対応がとれる鏡になっていないのでこればかりは覚えておくか、脳内で連想するか、キーボードの字を目で確認するしか無い。
このあたりをもう少しブラッシュアップすれば、学習コストが少ない片手キーボード方式が確立できると思う。
甘く煮るだけでは能がない 金時豆に新たな活路を からうまチリコンカルネの作り方
メキシカンチリコンカルネのスープパスタという名前のカップスープが好きで、家に常備するほどだった。メキシカンチリコンカルネってなんだかよくわからないけどうまい。
そういえばチリコンカルネってなんだ。
検索すればレシピが山ほど出てくる。アメリカのメキシコ風料理、テクス・メクス料理の一つで、ひき肉と玉ねぎを炒めて、トマトと水煮した金時豆を入れて煮込んだ料理である。
ここで紹介しておきたいのは、何が何gで、なにをきつね色にになるまで炒めてという類の話ではない。あの甘く煮て提供されるあの金時豆をトマトと煮込んで辛くして旨いというこの逆引きをぜひ知ってほしい。
ひき肉と玉ねぎを炒める。
トマト缶を入れ、香り付けにローレルの葉を入れる。
ここであらかじめ水煮しておいた金時豆を投入。コンソメを入れて塩コショウとケチャップで味をととのえる。
カイエンヌペッパーで辛味を、クミンシードでさらに香りをつける。クミンシードこそがメキシカンな香りを放つ。これが入った瞬間に急にチリコンカルネになる。
金時豆たっぷりのチリコンカルネの出来上がり。
基本的にはミートソーススパゲティのソースを作る要領で、豆と辛さをつけるカイエンヌペッパーとクミンシードが入ればチリコンカルネに派生するという認識で良いと思う。
金時豆にもあらたな活路を。
スマートフォンでの動画撮影にこり始めたらDJI OSMO Mobileで映画のワンシーンのような撮影にも挑戦して欲しい
そもそもDJI OSMO Mobileとは一体なんなのか
2016年9月に発売された直後に旅行を予定していたので、スマホでの動画撮影用に発売されてすぐに購入した。
まず、DJIというのは民生用ドローンシェア70%を誇る中国の会社で*1、「回転を制御する」ことに対するソリューションを提供している会社である。
2016年9月に発売されたこのDJI OSMO Mobileは、OSMOシリーズのスマートフォンに特化したスタビライザーである。OSMOシリーズは手持ち撮影用を揃えており、これまではカメラとスタビライザーがセットになった製品が中心だった。そこに新たに加わったDJI OSMO Mobileは自分の手持ちのスマートフォンを取り付けて利用できるタイプのスタビライザーでカメラが装置についていない分、これまでの体化したものよりも安価に手に入るようになった。
DJIの公式プロモーションをみていただけるとその効果がよくわかる。スタビライザーによる手ブレのないドラマや映画でみたようなタッチの動画が、自分のスマートフォンで撮影できるのである。
最近は、Google Photosの自動バックアップが非常に便利なので、スマートフォンでは写真だけでなく動画をよく撮影する。最近のスマートフォンはもうHDはもちろんのこと、4Kが撮れるものまで出ていて、撮影には十分すぎるスペックである。
適当に動画を撮りためておけば、Google Photosのアシスタント機能が、その時、その場所で撮影した動画よろしくくっつけて1つの作品として提案してくれるのだ心地よい。アシスタントに提案してもらった動画はスマートフォン1つで人差し指でポチポチ編集し直すこともできるので、動画におけるもっとも負荷の高い編集作業が簡単になる。
撮って、Google Photosにアップロードして(自動)、作品にして(半自動)、作品をGoogle Photosにアップロード(自動)したら、ローカルの動画を一括削除。この流れでスマートフォンの容量が逼迫することもない。
Google Photosによる動画編集についてはこちらを参照*2してほしい。
買う前に思っていた疑問と使ってみてわかったこと
そもそもどうやって向きをキープしているのか?
OSMO Mobileに内蔵されたモータ制御によってロール・ピッチ・ヨーの3軸をフィードバック制御してくれる。OSMO Mobileは電源OFF状態だと首がだらりん、とした状態になってしまうが電源をONにするとシャキっ前を向いて向きをキープし始める。もちろんモータ音が動画に入ってしまうようなことはない。モータ音は聞こえないほど静かでスムーズな動きでカメラの向きを固定してくれる。
とりつけるスマートフォンはユーザによって姿・形がさまざまであるため、取り付けるスマートフォンを決めたら最初にOSMO Mobile自身に取り付けられた重りで左右のバランスを取る校正作業が必要である。私はGlaxy Note 5という大きめのスマートフォンを使っているが、それでもしっかり固定して使える。
もちろん、同じスマートフォンを何度も利用するのであれば、最初に一度重りの位置を決めてしまえば次からの付け外しで重りの位置を変更する必要はない。
スマートフォンとOSMO Mobileの連携はどうなっているのか?
本来の目的であるOSMO Mobileのスタビライザーの機能を利用して、「カメラの向きをキープするだけ」であれば、実はスマートフォンとOSMO Mobileの接続は必要ない。何を言っているのかというと、例えばスマートフォンの電源OFFの状態でOSMO MobileにとりつけてOSMO Mobileの電源を入れれば、モータによる制御が始まりカメラの向きがキープされる。つまり、OSMO Mobileのスタビライザーとしての3軸制御はスマートフォンからは独立しており、スマートフォンとの連携がなくても機能するのである。上記チュートリアルにもあるように、専用アプリの存在を見せられるとどうしてもそれと連携しなければ機能しないような気になってしまうが、そんなことはない。OSMO Mobile自身は電源さえ入れれば、その先になにがついていようがその向きをキープしようとするのである。
では、なんのためにBluetoothによる連携ができるようになっているのかというと、主にOSMO Mobileを握ったときに親指で操作できる物理ボタンのためである。わざわざスマートフォンの画面を操作せずとも親指一つでシャッターを切ったり、動画撮影の開始・終了を操作するためである。
バッテリーはどの程度持つのか?
公式FAQ*3によると、以下の通り。
Osmo Mobileは、Osmo専用のバッテリーを使用しています。Osmo Mobileは、Osmoと同じバッテリー(980 mAh)を使用しています。
バッテリーは3時間でフル充電できます。バッテリーの駆動時間は3時間~4.5時間です。
ただ、3時間も駆動するといってもHDや4Kで3時間も撮影すれば、撮影以外でもバッテリを消耗するスマートフォンのほうが先に死ぬので、OSMO Mobileのバッテリよりも、どちらかというとスマートフォンのバッテリのケアのほうが重要である。旅行で使用したときは、スマートフォンを使っていない時間にモバイルバッテリーで充電しながらだましだまし使っていた。
操作方法はどんなかんじか?
大前提として、カメラの動きには「回転」と「平行移動」がある。スタビライザーはこの2つの動きのうち「回転」を制御することで「向き」をキープしていることを頭に入れておいて欲しい。「回転」はOSMO Mobileによって自在に固定できるが、平行移動は自分自身の手で吸収するしかない。
自動的にカメラの向きをキープされるとなると、逆に、向きをキープしたくないときに自在に動かせないのでは?という疑問を持っていたが、この「キープしたいとき」と「キープしたくないとき」はOSMO Mobileを握ったときの人差し指にあたるボタンでON/OFFが可能である。
<人差し指をONにしているとき>
ロール・ピッチ・ヨーがいずれも固定され、手元をいくらグリグリまわしても向きが変わらない。向きをキープしたいときに使う。
<人差し指をOFFにしているとき>
ロール・ピッチ・ヨーは手元の向きにゆっくりと追随する。
このON/OFFを使い分けることで、いかにも映画のワンシーンのような撮影ができる。撮影の仕方はこちらの公式チュートリアルが参考になる。このON/OFFの操作ばかりは習うより慣れよと考えるのが良い。触ってみるとOSMO Mobileがどのように機能するのかを理解し、すぐにその感覚をつかむことが出来る。
これは純粋に楽しい。スマートフォンとOSMO Mobileの組み合わせでカッコイイ映像が撮影できると撮影するのが楽しくなる。スマートフォンの動画撮影にこり始めたらDJI OSMO Mobileで動画素材のレベルをあげることに挑戦して欲しい。
OSMO Mobileの残念なこと
公式アプリのカメラのオートフォーカスがイマイチ
DJIが提供している公式のAndroidアプリ(iPhoneアプリは触っていません)を使うことで、シャッターや動画撮影の開始・終了をOSMO Mobileの親指で操作できるのは便利だが、動画撮影時のオートフォーカスが意図した通りに動いてくれない。このあたりは個人の感想に寄るところなので、良し悪しというわけではなく、私の意図通りの動きをしないという意味である。
今後のアップデートで動きが変わる可能性はあるが、Galaxy Note 5で利用している私の感覚で言えば、DJIの公式アプリよりもAndroidのデフォルトのカメラアプリの方が意図した通りにオートフォーカスしてくれるので、DJIの公式アプリは使っていない。公式アプリを使わないということは、スマートフォンとOSMO MobileをBluetoothで連携しないことを意味しており、動画の撮影開始・停止はスマートフォンの画面をポチポチさわるしかない。といっても、動画は写真とは違い、撮影した素材をあとから編集することになるので撮影開始時・終了時は編集時に切れ端として処理されるので作品自体に影響することはない。今後のアップデートでオートフォーカスが改善されることを期待している。
カメラの性能はスマートフォンに依存する
どんなスマートフォンでも取り付けられることを売りにしているOSMO Mobileに対して、これを残念と言ってしまうのはあまり正しくないのは理解している。しかし、このことは忘れてはならないという意味で一言付け加えておく。OSMO Mobileにはカメラがついていない。OSMO Mobileが制御するのはあくまでも「回転」だけである。
私が購入を決めたのは、Galaxy Note 5でなにげなくとったHD動画が思いの外きれいで、スマートフォンだけで撮影できる動画に可能性を感じたことがきっかけである。Galaxy Note 5自身の手ぶれ補正も非常に優秀だったが、これに加えて「回転」を制御できればもうこれは動画撮影用のカメラとして成立する、そう感じてOSMO Mobileを購入した。OSMO Mobileのその機能は期待通りで「回転」を制御した結果、格段に動画のクオリティが上がったと感じている。現状スマートフォンの動画撮影を活用している人はあまり多くないと思うので、スマートフォンで動画撮影をしてみて、そこで少しでもスマートフォン動画に面白さを感じたらOSMO Mobileは買いだと思う。
Hinemos 5.0であそぼう!
運用監視ツールはOSSで置き換えできるのかといった議論が出てくるほど、OSS運用監視が注目されてきている*1。シェアの高いJP1はサポートが手厚いので、ビジネスにおいて止められない仕組みがJP1で動いているところをあえてOSSに置き換えて攻めようという力がはたらかない。
ジョブ管理について言えば、はっきり言っていまさらもう変えられないというのが正直なところだろう。でもきっとこれらは、さわったことがない漠然とした不安からくるものであって、使ってみればなんということはない。と感じられる部分もきっと多いはず。むしろ、OSSを使い倒して「運用監視ツールはわしらが育てた」といえるくらいになりたいものだ。
置き換えという観点で考えると、運用ツールのトップシェアを誇るJP1シリーズがフォローしているであろう①死活監視・通知、②稼働状況可視化、③ジョブ実行制御を実現できそうなHinemosをさわってみる。
実際に検証済み!OSS徹底比較(2)運用監視編【後編】:OSS運用監視ソフト 注目の10製品徹底比較 2016年版 (1/6) - @IT
Hinemosは3.xのときにさわったことがあったが、エンタープライズオプションは使ったことがない。最近洗練されてきたエンタープライズオプションを使うことでジョブフローがグラフィカルに見られたり、少しずつJP1に近づいているようである。
3 前提条件
3.1 システム構成
リリース 11_hinemos_documents_japanese 5.0_20160805 - Hinemos - OSDN
<構成>
- マネージャ(jm01) 192.168.100.31
- Webクライアント(wb01) 192.168.100.41
- バッチサーバ (bt01) 192.168.100.51
ジョブマネージャ 兼 監視としてjm01、管理・監視の対象(エージェント)としてのバッチサーバbt01、Hinemosマネージャを操作するためのHinemos Webクライアントwb01の3台を構築する。
MacBookPro上でCentOS 7をここからダウンロードしてそれぞれの仮想マシンを立てる。Vagrantの導入についてはここでは言及しない。
$ vagrant box add CentOS7.0 https://github.com/tommy-muehle/puppet-vagrant-boxes/releases/download/1.1.0/centos-7.0-x86_64.box
ここからはHinemosの公式ドキュメント*2 のinstall.pdfに従う。手順書上は、マネージャ、エージェント、Webクライアントの幅優先探索で進んでいくが、便宜上、深さ優先探索に置き換えて説明する。
Hinemosマネージャの構築
3.2 マネージャサーバ
前提となるパッケージを確認する。
[root@jm01] # rpm -qa | grep java-1.7.0-openjdk
[root@jm01] # rpm -qa | grep rsyslog
rsyslog-7.4.7-7.el7_0.x86_64[root@jm01] # rpm -qa | grep vim-common
vim-common-7.4.160-1.el7.x86_64[root@jm01] # rpm -qa | grep net-snmp-utils
[root@jm01] # rpm -qa | grep sblim-wbemcli
足りないパッケージをインストールする。
[root@jm01] # yum install java-1.7.0-openjdk
(省略)[root@jm01] # yum install java-1.7.0-openjdk-devel
(省略)[root@jm01] # yum install net-snmp-utils
(省略)[root@jm01] # yum install sblim-wbemcli
(省略)
もう一度、パッケージがインストールされていることを確認する。
[root@jm01] # rpm -qa | grep java-1.7.0-openjdk
java-1.7.0-openjdk-headless-1.7.0.121-2.6.8.0.el7_3.x86_64
java-1.7.0-openjdk-devel-1.7.0.121-2.6.8.0.el7_3.x86_64
java-1.7.0-openjdk-1.7.0.121-2.6.8.0.el7_3.x86_64
[root@jm01] # rpm -qa | grep net-snmp-utils
net-snmp-utils-5.7.2-24.el7_2.1.x86_64
[root@jm01] # rpm -qa | grep sblim-wbemcli
sblim-wbemcli-1.6.2-10.el7.x86_64
4 マネージャサーバ
4.1 Hinemosマネージャのインストール
4.1.1インストーラの実行
インストール前にロケールを確認。
[root@jm01] # locale | grep LANG
LANG=ja_JP.UTF-8
Hinemosマネージャのインストーラをダウンロードしてインストールする。
[root@jm01] # cd /tmp/
[root@jm01] # wget https://ja.osdn.net/dl/hinemos/hinemos-manager-5.0.3-1.el7.x86_64.rpm[root@jm01] # rpm -ivh hinemos-manager-5.0.3-1.el7.x86_64.rpm
準備しています... ################################# [100%]
更新中 / インストール中...
1:hinemos-manager-0:5.0.3-1.el7 ################################# [100%]
Redirecting to /bin/systemctl restart rsyslog.service
ln -s '/usr/lib/systemd/system/hinemos_manager.service' '/etc/systemd/system/multi-user.target.wants/hinemos_manager.service'
ln -s '/usr/lib/systemd/system/hinemos_pg.service' '/etc/systemd/system/multi-user.target.wants/hinemos_pg.service'
意図した通りの言語設定になっていることを確認する。
[root@jm01] # cat /opt/hinemos/etc/hinemos.cfg | grep LANG
export LANG=ja_JP.UTF-8
4.2 Hinemoマネージャの起動
4.2.1 起動方法
Hinemos Managerのサービスを起動してみる。CentOS 7からはserviceコマンドではなくsystemctlコマンドに置き換わっているが、公式手順ではserviceコマンドで書かれているのでその通りに従う。
[root@jm01] # service hinemos_manager start
Redirecting to /bin/systemctl start hinemos_manager.service
Hinemos5.0.2の場合は何もエラーが出なければ起動OK。
4.2.2 起動の確認
Activeの行にactive(running)になっていること、Main PID行にjavaのプロセスIDとjavaのメッセージが表示されることを確認する。
<JVMの起動確認>
[root@jm01] # service hinemos_manager status
Redirecting to /bin/systemctl status hinemos_manager.service
● hinemos_manager.service - Hinemos Manager
Loaded: loaded (/usr/lib/systemd/system/hinemos_manager.service; enabled; vendor preset: disabled)
Active: active (running) since 月 2017-01-02 10:01:06 JST; 3min 32s ago
Process: 21305 ExecStop=/opt/hinemos/bin/jvm_stop.sh (code=exited, status=0/SUCCESS)
Process: 21400 ExecStart=/opt/hinemos/bin/jvm_start.sh -W (code=exited, status=0/SUCCESS)
Main PID: 21461 (java)
CGroup: /system.slice/hinemos_manager.service
└─21461 java -Djdk.xml.entityExpansionLimit=0 -javaagent:/opt/hinemos/lib...1月 02 10:01:05 jm01 systemd[1]: Starting Hinemos Manager...
1月 02 10:01:05 jm01 jvm_start.sh[21400]: waiting for Java Virtual Machine startup...
1月 02 10:01:06 jm01 jvm_start.sh[21400]: Java Virtual Machine started (with -W ...n)
1月 02 10:01:06 jm01 systemd[1]: Started Hinemos Manager.
Hint: Some lines were ellipsized, use -l to show in full.
<PostgreSQLの起動確認>
Activeの行にactive(running)になっていること、Main PID行にpostgreSQLのプロセスIDとpostgresのメッセージが表示されることを確認する。
[root@jm01] # service hinemos_pg status
Redirecting to /bin/systemctl status hinemos_pg.service
● hinemos_pg.service - Hinemos PostgreSQL
Loaded: loaded (/usr/lib/systemd/system/hinemos_pg.service; enabled; vendor preset: disabled)
Active: active (running) since 月 2017-01-02 10:01:05 JST; 11min ago
Process: 21350 ExecStop=/opt/hinemos/postgresql/bin/pg_ctl stop -w -t ${PGTIMEOUT} -s -D ${PG_DATA} -m ${PGSHUTDOWNMODE} (code=exited, status=0/SUCCESS)
Process: 21388 ExecStart=/opt/hinemos/postgresql/bin/pg_ctl start -w -t ${PGTIMEOUT} -s -D ${PG_DATA} -l ${PGLOGFILE} (code=exited, status=0/SUCCESS)
Main PID: 21391 (postgres)
CGroup: /system.slice/hinemos_pg.service
├─21391 /opt/hinemos/postgresql/bin/postgres -D /opt/hinemos/var/data
├─21392 postgres: logger process
├─21394 postgres: checkpointer process
├─21395 postgres: writer process
├─21396 postgres: wal writer process
├─21397 postgres: autovacuum launcher process
├─21398 postgres: stats collector process
├─21486 postgres: hinemos hinemos 127.0.0.1(45457) idle
├─21488 postgres: hinemos hinemos 127.0.0.1(45458) idle
├─21490 postgres: hinemos hinemos 127.0.0.1(45459) idle
├─21492 postgres: hinemos hinemos 127.0.0.1(45460) idle
├─21494 postgres: hinemos hinemos 127.0.0.1(45461) idle
├─21496 postgres: hinemos hinemos 127.0.0.1(45462) idle
├─21498 postgres: hinemos hinemos 127.0.0.1(45463) idle
├─21500 postgres: hinemos hinemos 127.0.0.1(45464) idle
├─21502 postgres: hinemos hinemos 127.0.0.1(45465) idle
├─21504 postgres: hinemos hinemos 127.0.0.1(45466) idle
├─21506 postgres: hinemos hinemos 127.0.0.1(45467) idle
├─21508 postgres: hinemos hinemos 127.0.0.1(45468) idle
├─21510 postgres: hinemos hinemos 127.0.0.1(45469) idle
├─21512 postgres: hinemos hinemos 127.0.0.1(45470) idle
├─21514 postgres: hinemos hinemos 127.0.0.1(45471) idle
├─21516 postgres: hinemos hinemos 127.0.0.1(45472) idle
├─21518 postgres: hinemos hinemos 127.0.0.1(45473) idle
├─21520 postgres: hinemos hinemos 127.0.0.1(45474) idle
├─21522 postgres: hinemos hinemos 127.0.0.1(45475) idle
├─21524 postgres: hinemos hinemos 127.0.0.1(45476) idle
├─21526 postgres: hinemos hinemos 127.0.0.1(45477) idle
├─21528 postgres: hinemos hinemos 127.0.0.1(45478) idle
├─21530 postgres: hinemos hinemos 127.0.0.1(45479) idle
├─21532 postgres: hinemos hinemos 127.0.0.1(45480) idle
├─21534 postgres: hinemos hinemos 127.0.0.1(45481) idle
├─21536 postgres: hinemos hinemos 127.0.0.1(45482) idle
├─21538 postgres: hinemos hinemos 127.0.0.1(45483) idle
├─21540 postgres: hinemos hinemos 127.0.0.1(45484) idle
├─21542 postgres: hinemos hinemos 127.0.0.1(45485) idle
├─21544 postgres: hinemos hinemos 127.0.0.1(45486) idle
├─21546 postgres: hinemos hinemos 127.0.0.1(45487) idle
├─21548 postgres: hinemos hinemos 127.0.0.1(45488) idle
├─21550 postgres: hinemos hinemos 127.0.0.1(45489) idle
├─21552 postgres: hinemos hinemos 127.0.0.1(45490) idle
├─21554 postgres: hinemos hinemos 127.0.0.1(45491) idle
├─21556 postgres: hinemos hinemos 127.0.0.1(45492) idle
├─21558 postgres: hinemos hinemos 127.0.0.1(45493) idle
├─21560 postgres: hinemos hinemos 127.0.0.1(45494) idle
├─21562 postgres: hinemos hinemos 127.0.0.1(45495) idle
├─21564 postgres: hinemos hinemos 127.0.0.1(45496) idle
├─21566 postgres: hinemos hinemos 127.0.0.1(45497) idle
├─21568 postgres: hinemos hinemos 127.0.0.1(45498) idle
├─21570 postgres: hinemos hinemos 127.0.0.1(45499) idle
├─21572 postgres: hinemos hinemos 127.0.0.1(45500) idle
├─21574 postgres: hinemos hinemos 127.0.0.1(45501) idle
├─21576 postgres: hinemos hinemos 127.0.0.1(45502) idle
├─21578 postgres: hinemos hinemos 127.0.0.1(45503) idle
├─21580 postgres: hinemos hinemos 127.0.0.1(45504) idle
├─21582 postgres: hinemos hinemos 127.0.0.1(45505) idle
├─21584 postgres: hinemos hinemos 127.0.0.1(45506) idle
├─21586 postgres: hinemos hinemos 127.0.0.1(45507) idle
├─21588 postgres: hinemos hinemos 127.0.0.1(45508) idle
├─21590 postgres: hinemos hinemos 127.0.0.1(45509) idle
├─21592 postgres: hinemos hinemos 127.0.0.1(45510) idle
├─21594 postgres: hinemos hinemos 127.0.0.1(45511) idle
├─21596 postgres: hinemos hinemos 127.0.0.1(45512) idle
├─21598 postgres: hinemos hinemos 127.0.0.1(45513) idle
├─21600 postgres: hinemos hinemos 127.0.0.1(45514) idle
├─21602 postgres: hinemos hinemos 127.0.0.1(45515) idle
├─21604 postgres: hinemos hinemos 127.0.0.1(45516) idle
├─21606 postgres: hinemos hinemos 127.0.0.1(45517) idle
├─21608 postgres: hinemos hinemos 127.0.0.1(45518) idle
├─21610 postgres: hinemos hinemos 127.0.0.1(45519) idle
├─21612 postgres: hinemos hinemos 127.0.0.1(45520) idle
├─21614 postgres: hinemos hinemos 127.0.0.1(45521) idle
├─21616 postgres: hinemos hinemos 127.0.0.1(45522) idle
├─21618 postgres: hinemos hinemos 127.0.0.1(45523) idle
├─21620 postgres: hinemos hinemos 127.0.0.1(45524) idle
├─21622 postgres: hinemos hinemos 127.0.0.1(45525) idle
├─21624 postgres: hinemos hinemos 127.0.0.1(45526) idle
├─21626 postgres: hinemos hinemos 127.0.0.1(45527) idle
├─21628 postgres: hinemos hinemos 127.0.0.1(45528) idle
├─21630 postgres: hinemos hinemos 127.0.0.1(45529) idle
├─21632 postgres: hinemos hinemos 127.0.0.1(45530) idle
├─21634 postgres: hinemos hinemos 127.0.0.1(45531) idle
├─21636 postgres: hinemos hinemos 127.0.0.1(45532) idle
├─21638 postgres: hinemos hinemos 127.0.0.1(45533) idle
├─21640 postgres: hinemos hinemos 127.0.0.1(45534) idle
├─21642 postgres: hinemos hinemos 127.0.0.1(45535) idle
├─21644 postgres: hinemos hinemos 127.0.0.1(45536) idle
├─21646 postgres: hinemos hinemos 127.0.0.1(45537) idle
├─21648 postgres: hinemos hinemos 127.0.0.1(45538) idle
├─21650 postgres: hinemos hinemos 127.0.0.1(45539) idle
├─21652 postgres: hinemos hinemos 127.0.0.1(45540) idle
├─21654 postgres: hinemos hinemos 127.0.0.1(45541) idle
├─21656 postgres: hinemos hinemos 127.0.0.1(45542) idle
├─21658 postgres: hinemos hinemos 127.0.0.1(45543) idle
├─21660 postgres: hinemos hinemos 127.0.0.1(45544) idle
├─21662 postgres: hinemos hinemos 127.0.0.1(45545) idle
├─21664 postgres: hinemos hinemos 127.0.0.1(45546) idle
├─21666 postgres: hinemos hinemos 127.0.0.1(45547) idle
├─21668 postgres: hinemos hinemos 127.0.0.1(45548) idle
├─21670 postgres: hinemos hinemos 127.0.0.1(45549) idle
├─21672 postgres: hinemos hinemos 127.0.0.1(45550) idle
├─21674 postgres: hinemos hinemos 127.0.0.1(45551) idle
├─21676 postgres: hinemos hinemos 127.0.0.1(45552) idle
├─21678 postgres: hinemos hinemos 127.0.0.1(45553) idle
├─21680 postgres: hinemos hinemos 127.0.0.1(45554) idle
├─21682 postgres: hinemos hinemos 127.0.0.1(45555) idle
├─21684 postgres: hinemos hinemos 127.0.0.1(45556) idle
├─21686 postgres: hinemos hinemos 127.0.0.1(45557) idle
├─21688 postgres: hinemos hinemos 127.0.0.1(45558) idle
├─21690 postgres: hinemos hinemos 127.0.0.1(45559) idle
├─21692 postgres: hinemos hinemos 127.0.0.1(45560) idle
├─21694 postgres: hinemos hinemos 127.0.0.1(45561) idle
├─21696 postgres: hinemos hinemos 127.0.0.1(45562) idle
├─21698 postgres: hinemos hinemos 127.0.0.1(45563) idle
├─21700 postgres: hinemos hinemos 127.0.0.1(45564) idle
├─21702 postgres: hinemos hinemos 127.0.0.1(45565) idle
├─21704 postgres: hinemos hinemos 127.0.0.1(45566) idle
├─21706 postgres: hinemos hinemos 127.0.0.1(45567) idle
├─21708 postgres: hinemos hinemos 127.0.0.1(45568) idle
├─21710 postgres: hinemos hinemos 127.0.0.1(45569) idle
├─21712 postgres: hinemos hinemos 127.0.0.1(45570) idle
├─21714 postgres: hinemos hinemos 127.0.0.1(45571) idle
├─21716 postgres: hinemos hinemos 127.0.0.1(45572) idle
├─21718 postgres: hinemos hinemos 127.0.0.1(45573) idle
├─21720 postgres: hinemos hinemos 127.0.0.1(45574) idle
├─21722 postgres: hinemos hinemos 127.0.0.1(45575) idle
├─21724 postgres: hinemos hinemos 127.0.0.1(45576) idle
├─21726 postgres: hinemos hinemos 127.0.0.1(45577) idle
├─21728 postgres: hinemos hinemos 127.0.0.1(45578) idle
├─21730 postgres: hinemos hinemos 127.0.0.1(45579) idle
├─21732 postgres: hinemos hinemos 127.0.0.1(45580) idle
├─21734 postgres: hinemos hinemos 127.0.0.1(45581) idle
├─21736 postgres: hinemos hinemos 127.0.0.1(45582) idle
├─21738 postgres: hinemos hinemos 127.0.0.1(45583) idle
├─21740 postgres: hinemos hinemos 127.0.0.1(45584) idle
├─21742 postgres: hinemos hinemos 127.0.0.1(45585) idle
├─21744 postgres: hinemos hinemos 127.0.0.1(45586) idle
├─21746 postgres: hinemos hinemos 127.0.0.1(45587) idle
├─21748 postgres: hinemos hinemos 127.0.0.1(45588) idle
├─21750 postgres: hinemos hinemos 127.0.0.1(45589) idle
├─21752 postgres: hinemos hinemos 127.0.0.1(45590) idle
├─21754 postgres: hinemos hinemos 127.0.0.1(45591) idle
├─21756 postgres: hinemos hinemos 127.0.0.1(45592) idle
├─21758 postgres: hinemos hinemos 127.0.0.1(45593) idle
├─21760 postgres: hinemos hinemos 127.0.0.1(45594) idle
├─21762 postgres: hinemos hinemos 127.0.0.1(45595) idle
├─21764 postgres: hinemos hinemos 127.0.0.1(45596) idle
├─21766 postgres: hinemos hinemos 127.0.0.1(45597) idle
├─21768 postgres: hinemos hinemos 127.0.0.1(45598) idle
├─21770 postgres: hinemos hinemos 127.0.0.1(45599) idle
├─21772 postgres: hinemos hinemos 127.0.0.1(45600) idle
├─21774 postgres: hinemos hinemos 127.0.0.1(45601) idle
├─21776 postgres: hinemos hinemos 127.0.0.1(45602) idle
├─21778 postgres: hinemos hinemos 127.0.0.1(45603) idle
├─21780 postgres: hinemos hinemos 127.0.0.1(45604) idle
├─21782 postgres: hinemos hinemos 127.0.0.1(45605) idle
├─21784 postgres: hinemos hinemos 127.0.0.1(45606) idle
├─21786 postgres: hinemos hinemos 127.0.0.1(45607) idle
├─21788 postgres: hinemos hinemos 127.0.0.1(45608) idle
├─21790 postgres: hinemos hinemos 127.0.0.1(45609) idle
├─21792 postgres: hinemos hinemos 127.0.0.1(45610) idle
├─21794 postgres: hinemos hinemos 127.0.0.1(45611) idle
├─21796 postgres: hinemos hinemos 127.0.0.1(45612) idle
├─21798 postgres: hinemos hinemos 127.0.0.1(45613) idle
├─21800 postgres: hinemos hinemos 127.0.0.1(45614) idle
├─21802 postgres: hinemos hinemos 127.0.0.1(45615) idle
├─21804 postgres: hinemos hinemos 127.0.0.1(45616) idle
├─21868 postgres: hinemos_quartz hinemos 127.0.0.1(45617) idle
├─21869 postgres: hinemos_quartz hinemos 127.0.0.1(45618) idle
└─21870 postgres: hinemos_quartz hinemos 127.0.0.1(45619) idle1月 02 10:01:04 jm01 systemd[1]: Starting Hinemos PostgreSQL...
1月 02 10:01:05 jm01 systemd[1]: Started Hinemos PostgreSQL.
<psでのプロセス確認>
2つのプロセスが起動していることを確認する。
- /opt/hinemos/postgresql/bin/postgres -D /opt/hinemos/var/data
- java (中略) com.clustercontrol.HinemosManagerMain
[root@jm01] # ps -ef | grep /opt/hinemos/
hinemos 21391 1 0 10:01 ? 00:00:00 /opt/hinemos/postgresql/bin/postgres -D /opt/hinemos/var/data
root 21461 1 2 10:01 ? 00:00:19 java -Djdk.xml.entityExpansionLimit=0 -javaagent:/opt/hinemos/lib/eclipselink.jar -Dsun.net.inetaddr.ttl=0 -Dsun.net.inetaddr.negative.ttl=1 -XX:-OmitStackTraceInFastThrow -server -Dprogram.name=hinemos_manager -Dhinemos.manager.hostname=jm01 -Dhinemos.manager.home.dir=/opt/hinemos -Dhinemos.manager.etc.dir=/opt/hinemos/etc -Dhinemos.manager.log.dir=/opt/hinemos/var/log -Xms512m -Xmx512m -XX:NewSize=160m -XX:MaxNewSize=160m -XX:MaxPermSize=192m -Xss256k -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+UseParNewGC -XX:+DisableExplicitGC -XX:SurvivorRatio=3 -XX:MaxTenuringThreshold=32 -XX:TargetSurvivorRatio=90 -Xloggc:/opt/hinemos/var/log/gc.log -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=20M -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintClassHistogram -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=7100 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=true -Dcom.sun.management.jmxremote.password.file=/opt/hinemos/etc/jmxremote.password -Dcom.sun.management.jmxremote.access.file=/opt/hinemos/etc/jmxremote.access -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/opt/hinemos/var/log -cp /opt/hinemos/etc:/opt/hinemos/lib/HinemosCommon.jar:/opt/hinemos/lib/HinemosManager.jar:/opt/hinemos/lib/HinemosModel.jar:/opt/hinemos/lib/c3p0-0.9.1.1.jar:/opt/hinemos/lib/commons-codec-1.9.jar:/opt/hinemos/lib/commons-logging-1.2.jar:/opt/hinemos/lib/commons-net-3.3.jar:/opt/hinemos/lib/dsn-1.5.2.jar:/opt/hinemos/lib/eclipselink.jar:/opt/hinemos/lib/httpclient-4.3.3.jar:/opt/hinemos/lib/httpclient-cache-4.3.3.jar:/opt/hinemos/lib/httpcore-4.3.2.jar:/opt/hinemos/lib/httpmime-4.3.3.jar:/opt/hinemos/lib/imap-1.5.2.jar:/opt/hinemos/lib/intel-wsman-1.0.1-mod.jar:/opt/hinemos/lib/javax.mail-1.5.2.jar:/opt/hinemos/lib/javax.mail-api-1.5.2.jar:/opt/hinemos/lib/javax.persistence_2.1.0.v201304241213.jar:/opt/hinemos/lib/jmockit.jar:/opt/hinemos/lib/jpasecurity-core-0.4.0.jar:/opt/hinemos/lib/jsch-0.1.51.jar:/opt/hinemos/lib/log4j-1.2.17.jar:/opt/hinemos/lib/pop3-1.5.2.jar:/opt/hinemos/lib/postgresql-9.4.1208.jre7.jar:/opt/hinemos/lib/quartz-2.2.1.jar:/opt/hinemos/lib/quartz-jobs-2.2.1.jar:/opt/hinemos/lib/sblim-cim-client-1.3.9.1.jar:/opt/hinemos/lib/slf4j-api-1.6.6.jar:/opt/hinemos/lib/slf4j-log4j12-1.6.6.jar:/opt/hinemos/lib/smtp-1.5.2.jar:/opt/hinemos/lib/snmp4j-2.3.1-sources.jar:/opt/hinemos/lib/snmp4j-2.3.1.jar com.clustercontrol.HinemosManagerMain
root 21954 19318 0 10:15 pts/0 00:00:00 grep --color=auto /opt/hinemos/
これでHinemosマネージャの構築は完了。そして、お決まりの流れで起動したら止めましょう。
4.3 Hinemoマネージャの停止
4.3.1 停止方法
[root@jm01] # service hinemos_manager stop
Redirecting to /bin/systemctl stop hinemos_manager.service
なにもエラーがでなければOK.
4.3.2 停止の確認
<JVMの停止確認>
Activeの行にinactive (dead)になっていること、Main PID行に"code=exited"が表示されていることを確認する。
[root@jm01] # service hinemos_manager status
Redirecting to /bin/systemctl status hinemos_manager.service
● hinemos_manager.service - Hinemos Manager
Loaded: loaded (/usr/lib/systemd/system/hinemos_manager.service; enabled; vendor preset: disabled)
Active: inactive (dead) since 月 2017-01-02 10:22:22 JST; 2min 18s ago
Process: 21994 ExecStop=/opt/hinemos/bin/jvm_stop.sh (code=exited, status=0/SUCCESS)
Process: 21400 ExecStart=/opt/hinemos/bin/jvm_start.sh -W (code=exited, status=0/SUCCESS)
Main PID: 21461 (code=exited, status=143)1月 02 10:01:06 jm01 jvm_start.sh[21400]: Java Virtual Machine started (with -W ...n)
1月 02 10:01:06 jm01 systemd[1]: Started Hinemos Manager.
1月 02 10:22:18 jm01 systemd[1]: Stopping Hinemos Manager...
1月 02 10:22:18 jm01 jvm_stop.sh[21994]: waiting for Java Virtual Machine shutdown...
1月 02 10:22:18 jm01 jvm_stop.sh[21994]: Thread Dump 1
1月 02 10:22:19 jm01 jvm_stop.sh[21994]: Thread Dump 2
1月 02 10:22:20 jm01 jvm_stop.sh[21994]: Thread Dump 3
1月 02 10:22:22 jm01 jvm_stop.sh[21994]: .done
1月 02 10:22:22 jm01 jvm_stop.sh[21994]: Java Virtual Machine stopped
1月 02 10:22:22 jm01 systemd[1]: Stopped Hinemos Manager.
Hint: Some lines were ellipsized, use -l to show in full.
<PostgreSQLの停止確認>
Activeの行にinactive (dead)になっていること、Main PID行に"code=exited"が表示されていることを確認する。
[root@jm01] # service hinemos_pg status
Redirecting to /bin/systemctl status hinemos_pg.service
● hinemos_pg.service - Hinemos PostgreSQL
Loaded: loaded (/usr/lib/systemd/system/hinemos_pg.service; enabled; vendor preset: disabled)
Active: inactive (dead) since 月 2017-01-02 10:22:23 JST; 6min ago
Process: 22040 ExecStop=/opt/hinemos/postgresql/bin/pg_ctl stop -w -t ${PGTIMEOUT} -s -D ${PG_DATA} -m ${PGSHUTDOWNMODE} (code=exited, status=0/SUCCESS)
Process: 21388 ExecStart=/opt/hinemos/postgresql/bin/pg_ctl start -w -t ${PGTIMEOUT} -s -D ${PG_DATA} -l ${PGLOGFILE} (code=exited, status=0/SUCCESS)
Main PID: 21391 (code=exited, status=0/SUCCESS)1月 02 10:01:04 jm01 systemd[1]: Starting Hinemos PostgreSQL...
1月 02 10:01:05 jm01 systemd[1]: Started Hinemos PostgreSQL.
1月 02 10:22:22 jm01 systemd[1]: Stopping Hinemos PostgreSQL...
1月 02 10:22:23 jm01 systemd[1]: Stopped Hinemos PostgreSQL.
<psコマンドでの確認>
JVMとPostgreSQLのプロセスが存在しないことを確認する。
[root@jm01] # ps -ef | grep /opt/hinemos/
root 22077 19318 0 10:30 pts/0 00:00:00 grep --color=auto /opt/hinemos/
Hinemosエージェントの構築
※手順書上の順序が前後するが、マネージャはマネージャ、エージェントはエージェントで構築する順序で記載している。
ここからは管理対象となるバッチサーバ(bt01)にエージェントをインストールする。
3 前提条件
3.3 管理対象ノード
前提となるパッケージの有無を確認する。
[root@bt01]# rpm -qa | grep java-1.7.0-openjdk
[root@bt01]# rpm -qa | grep net-snmp
[root@bt01]# rpm -qa | grep tog-pegasus
[root@bt01]# rpm -qa | grep sblim-wbemcli
[root@bt01]# rpm -qa | grep sblim-cmpi-base
[root@bt01]# rpm -qa | grep sblim-cmpi-fsvol
[root@bt01]# rpm -qa | grep openlmi-storage
Hinemosエージェントのインストーラをダウンロードしてインストールする。
[root@bt01]# yum install java-1.7.0-openjdk
(省略)
[root@bt01]# yum install net-snmp
(省略)[root@bt01]# yum install tog-pegasus
(省略)
[root@bt01]# yum install sblim-wbemcli
(省略)
[root@bt01]# yum install sblim-cmpi-base
(省略)
[root@bt01]# yum install sblim-cmpi-fsvol
(省略)
[root@bt01]# yum install openlmi-storage
(省略)
もう一度パッケージを確認する。
[root@bt01]# rpm -qa | grep java-1.7.0-openjdk
java-1.7.0-openjdk-headless-1.7.0.121-2.6.8.0.el7_3.x86_64
java-1.7.0-openjdk-1.7.0.121-2.6.8.0.el7_3.x86_64[root@bt01]# rpm -qa | grep net-snmp
net-snmp-libs-5.7.2-24.el7_2.1.x86_64
net-snmp-5.7.2-24.el7_2.1.x86_64
net-snmp-agent-libs-5.7.2-24.el7_2.1.x86_64[root@bt01]# rpm -qa | grep tog-pegasus
tog-pegasus-libs-2.14.1-3.el7.x86_64
tog-pegasus-2.14.1-3.el7.x86_64[root@bt01]# rpm -qa | grep sblim-wbemcli
sblim-wbemcli-1.6.2-10.el7.x86_64[root@bt01]# rpm -qa | grep sblim-cmpi-base
sblim-cmpi-base-1.6.2-8.el7.x86_64[root@bt01]# rpm -qa | grep sblim-cmpi-fsvol
sblim-cmpi-fsvol-1.5.1-11.el7.x86_64[root@bt01]# rpm -qa | grep openlmi-storage
openlmi-storage-0.8.0-2.el7.noarch
6 管理対象ノード(Linux版エージェント)
6.1 Linux版エージェントのインストール
6.1.1 インストーラの実行
インストール前にロケールを確認する。
[root@wb01]# locale | grep LANG
LANG=ja_JP.UTF-8
Hinemosエージェントをダウンロードしてインストールする。インストールするとき、マネージャのホスト名またはIPアドレスを指定する。この時点でマネージャが決まっていない場合は省略可。あとから設定もできる。
[root@bt01]# cd /tmp/
[root@bt01]# wget https://ja.osdn.net/dl/hinemos/hinemos-agent-5.0.2-1.el.noarch.rpm[root@bt01]# HINEMOS_MANAGER=192.168.100.31 rpm -ivh hinemos-agent-5.0.2-1.el.noarch.rpm
準備しています... ################################# [100%]
更新中 / インストール中...
1:hinemos-agent-0:5.0.2-1.el ################################# [100%]
Redirecting to /bin/systemctl status rsyslog.service
Redirecting to /bin/systemctl restart rsyslog.service情報:'systemctl enable snmpd.service'へ転送しています。
Created symlink from /etc/systemd/system/multi-user.target.wants/snmpd.service to /usr/lib/systemd/system/snmpd.service.
Redirecting to /bin/systemctl start snmpd.service
ここで指定したHINEMOS_MANAGERは、ここに反映される。あとで変更したい場合はこのファイルを編集すれば良い。
[root@bt01]# cat /opt/hinemos_agent/conf/Agent.properties | grep managerAddress
managerAddress=http://192.168.100.31:8081/HinemosWS/
6.2 Linux版エージェントの起動と停止
6.2.1 Hinemosエージェントの起動
例によって手順書通り serviceコマンドで起動する。
[root@bt01]# service hinemos_agent start
Starting hinemos_agent (via systemctl): [ OK ]
6.2.2 NET-SNMPの起動
手順では、ここでsnmpdをstartさせることになっているがデフォルトで起動しているのでステータスを確認するだけ。
[root@bt01]# service snmpd status
Redirecting to /bin/systemctl status snmpd.service
● snmpd.service - Simple Network Management Protocol (SNMP) Daemon.
Loaded: loaded (/usr/lib/systemd/system/snmpd.service; enabled; vendor preset: disabled)
Active: active (running) since 月 2017-01-02 11:47:50 JST; 1min 6s ago
Main PID: 1316 (snmpd)
CGroup: /system.slice/snmpd.service
└─1316 /usr/sbin/snmpd -LS0-6d -f1月 02 11:47:49 bt01 systemd[1]: Starting Simple Network Management Protocol (S......
1月 02 11:47:50 bt01 snmpd[1316]: NET-SNMP version 5.7.2
1月 02 11:47:50 bt01 systemd[1]: Started Simple Network Management Protocol (SN...n..
Hint: Some lines were ellipsized, use -l to show in full.
6.2.3 Hinemosエージェントの停止
例によって、起動したら停止方法を確認。
[root@bt01]# service hinemos_agent stop
Stopping hinemos_agent (via systemctl): [ OK ]
Hinemos Webクライアントの構築
さて、最後にHinemos Webクライアントを構築。これまではHinemosクライアントはWindowsアプリしかなかったが、Webクライアントで操作できるようになっている。かつてのWindowsアプリをリッチクライアントと呼び、いずれかの方法でHinemosマネージャを操作できる。
今回は、MacBookProからHinemosマネージャを操作したいので、Webクライアントサービスを提供するWebクライアントのサーバを構築する。また、手順書は前後するが、前提条件でWebクライアントのサーバの前提確認しておく。
3 前提条件
3.3 管理対象ノード
前提となるパッケージの有無を確認する。
[root@wb01]# rpm -qa | grep java-1.7.0-openjdk
[root@wb01]# rpm -qa | grep unzip
[root@wb01]# rpm -qa | grep vlgothic-p-fonts
[root@wb01]# rpm -qa | grep java-1.7.0-openjdk-devel
不足しているパッケージをインストールする。
[root@wb01]# yum install java-1.7.0-openjdk
(省略)
[root@wb01]# yum install unzip
(省略)[root@wb01]# yum install vlgothic-p-fonts
(省略)
[root@wb01]# yum install java-1.7.0-openjdk-devel
(省略)
もう一度パッケージの有無を確認する。
[root@wb01]# rpm -qa | grep java-1.7.0-openjdk
java-1.7.0-openjdk-headless-1.7.0.121-2.6.8.0.el7_3.x86_64
java-1.7.0-openjdk-1.7.0.121-2.6.8.0.el7_3.x86_64
java-1.7.0-openjdk-devel-1.7.0.121-2.6.8.0.el7_3.x86_64
[root@wb01]# rpm -qa | grep unzip
unzip-6.0-16.el7.x86_64
[root@wb01]# rpm -qa | grep vlgothic-p-fonts
vlgothic-p-fonts-20130607-2.el7.noarch
[root@wb01]# rpm -qa | grep java-1.7.0-openjdk-devel
java-1.7.0-openjdk-devel-1.7.0.121-2.6.8.0.el7_3.x86_64
8 Webクライアント
8.1 Hinemos Webクライアントのインストール
8.1.1 全体構成
ブラウザ(MacBookPro)からWebクライアント(wb01)にアクセスしてマネージャを操作する。
リリース 11_hinemos_documents_japanese 5.0_20160805 - Hinemos - OSDN
8.1.2 インストーラの実行
インストール前にロケールを確認する。
[root@wb01]# locale | grep LANG
LANG=ja_JP.UTF-8
Webクライアントをダウンロードしてインストールする。
[root@wb01]# cd /tmp/
[root@wb01]# wget https://ja.osdn.net/dl/hinemos/hinemos-web-5.0.2-1.el7.x86_64.rpm
[root@wb01]# rpm -ivh hinemos-web-5.0.2-1.el7.x86_64.rpm
準備しています... ################################# [100%]
更新中 / インストール中...
1:hinemos-web-0:5.0.2-1.el7 ################################# [100%]
意図した通りの言語が設定されていることを確認する。
[root@wb01]# cat /opt/hinemos_web/conf/hinemos_web.cfg | grep LANG
export LANG=ja_JP.UTF-8
8.2 Hinemos Webクライアントの起動
8.2.1 起動方法
Hinemos Webクライアントを起動する。
[root@wb01]# service hinemos_web start
Starting hinemos_web (via systemctl): [ OK ]
内側からアクセスしてみる。いけたっぽい。
[root@wb01]# curl localhost
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Hinemos クライアント</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="viewport" content="initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0" >
(後略)
外からアクセスしてみる。どうやらCentOS 7のデフォルトのfirewalldに止められている様子。
firewalldを止めて、ファイアウォールを無効化する。
[root@wb01]# systemctl stop firewalld
[root@wb01]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: inactive (dead) since 月 2017-01-02 12:56:56 JST; 4s ago
Process: 4734 ExecStart=/usr/sbin/firewalld --nofork --nopid $FIREWALLD_ARGS (code=exited, status=0/SUCCESS)
Main PID: 4734 (code=exited, status=0/SUCCESS)1月 02 12:47:51 wb01 systemd[1]: Starting firewalld - dynamic firewall daemon...
1月 02 12:47:51 wb01 systemd[1]: Started firewalld - dynamic firewall daemon.
1月 02 12:56:56 wb01 systemd[1]: Stopping firewalld - dynamic firewall daemon...
1月 02 12:56:56 wb01 systemd[1]: Stopped firewalld - dynamic firewall daemon.
もう一度外からアクセスしてみると、Hinemos Webクライアントの画面にアクセスできた。接続先URLにHinemosマネージャのホストを指定してログインする。デフォルトでユーザIDはhinemos パスワードもhinemos。
ログインしてみるもログインに失敗。jm01もfirewalldで止められている様子。
Hinemosマネージャに入り、こちらもfirewalldを止める。
[root@jm01 ~ 2017/01/02 13:02:09]# systemctl stop firewalld
もう一度ログインしてみると、
か、かわいい…。なにこのキャラクター。
Hinemos公認キャラクター「もにた」らしい。まあ、Monitoringのモニタなんでしょう。では、さっそくHinemos WebクライアントでHinemosマネージャを操作してみるもに!
ここで手順書は終わりなので、 Hinemos ver.5.0 入門編① Hinemos ver.5.0を使ってみよう | Hinemos | クラウド時代の統合運用管理 に従って実際にHinemosであそんでみる。
リポジトリパースペクティブを開き、Hinemosマネージャの監視対象にbt01(192.168.100.51)を追加する。またしてもfirewalldに止められたので、bt01のfirewalldも止める。最初から全部止めておけばよかった。
もう一度bt01(192.168.100.51)をSearchすると各種属性が自動的に入力されるので「登録」をクリックする。
リポジトリ(監視対象)にbt01が追加された。
次に、監視パースペクティブでPING監視を追加する。
監視項目ID(システム内でユニークの監視ID)、スコープ(監視の対象範囲)、条件、通知ID(検知したときに、どこに通知するのか)、アプリケーション(運用用文字列。運用上検知したメッセージがわかるような文字列を設定)を定義してOKをクリック。
監視項目が作成されたことを確認し、OKをクリックする。
また、ここで通知ID STATUS_FOR_POLLINGのステータス通知の種類に「情報」を追加しておく。これを追加しておかないと、PING監視に失敗してステータスが「危険」になった後、再びPING監視に成功したときにステータスが「危険」になったまま戻らなくなってしまう。
監視履歴パースペクティブを確認する。PING_TEST_001の監視によりbt01にPINGが通ることが確認されている。
ここで、bt01を落としてみる。
[root@bt01]# shutdown -h now
PING監視によって危険を検知して「ステータス」と「イベント」に通知される。「ステータス」に出すのか、「イベント」に出すのか、あるいは「メールで通知」するのかは通知IDによって設定を変更できる。
今回設定した通知ID「EVENT_FOR_POLLING」と「STATUS_FOR_POLLING」では、1分間隔でPINGして結果が変わってから2回同じ結果担った場合にそれぞれ「監視履歴 (ステータス)」と「監視履歴(イベント)」に通知するようになっている。
bt01のダウンをPING監視によって検知できたので、bt01をもう一度起動して、Hinemosエージェントを起動してみる。もちろんfirewalldも止めておく。(実運用ではHinemosエージェントの自動起動、firewalldのを起動しない設定を入れ込んでおくべき)
PING監視を再開し、PINGが通ったのでbt01の復活が確認されステータスが「情報」に更新された。
Hinemosではその他、ログ監視、プロセス監視、リソース監視、ディスク監視などシステム運用上必要とされる監視は一揃えあるので、Hinemosだけ入れておけば監視まわりは十分と言って良い。もっと言うと、任意のSQLを投げて、その結果を監視するSQL監視も作り込めるようになっているので、DBの中の監視もHinemosに任せて良い。
バッチサーバでCPUフル回転で使用率が正しく100%になっているものまでアラートが上がってしまうなど、拾わなくても良いアラートについては、時間であったり、何分間隔で、何回検知したときにアラートとして上げるのかなど多少テクニックはいるが、監視のチューニングをすることで、欲しいアラートだけ拾うということもそれなりにできる。
ジョブも動かしてみよう。
お試しジョブとして、日付と時刻を出力するシェルを用意する。
[root@bt01]# cat /tmp/hello-world.sh
echo `date +%Y-%m-%d\ %H:%M:%S` Hello World ! >> /tmp/result.txt
echo OK
exit 0
ジョブ設定パースペクティブを開く。
ジョブユニットを作成する。
ジョブIDとジョブ名を定義する。
作成済みのジョブユニット内にジョブネットを作成する。
ジョブIDとジョブ名を定義する。
コマンドジョブを作成する。
ジョブIDとジョブ名を定義し、コマンドタブを開く。
実行するホストをスコープで定義し、実行するシェルのパスを起動コマンドに定義してOKをクリックする
登録アイコンをクリックして、ジョブの設定を登録する。ここで登録しなければ編集した内容はなかったことになるので注意。
ジョブ登録して良いか確認されるのでYesをクリック。
ジョブの登録成功のメッセージが表示されたらOKをクリックする。
登録した「お試しジョブ」を実行する。
実行の仕方を確認されるので何もチェックを入れずに「実行」をクリックする。
ジョブ履歴パースペクティブを開き、右上の更新アイコンをクリックすると実行されたジョブが履歴に表示される。指定したジョブが実行され正常終了していることを確認する。
実際にbt01にログインし、ファイルに結果が出力されていることを確認する。
[root@bt01]# cat /tmp/result.txt
2017-01-02 17:08:31 Hello World !
試しに、「お試しジョブ」をもう一度実行してみる。
同様の手順で、チェックをせずに「実行」をクリック。
もう一度実行されたことを確認する。
bt01上ではもう一度ジョブが実行されていることを確認する。
[root@bt01]# cat /tmp/result.txt
2017-01-02 17:08:31 Hello World !
2017-01-02 17:09:40 Hello World !
過去にHinemos 3.xのときにリッチクライアントを触っていたが、Webクライアントでできることとリッチクライアントでできることに差がないように感じた。わざわざ端末ごとにインストールが必要なリッチクライアントを入れるくらいなら、Webクライアントを用意したほうが運用上楽ができると思う。
とりあえず、監視できること、ジョブを動かせることまで確認したので今度はエンタープライズオプションも試してみたい*3。
Galaxyの電源が入らなくなったら焦らずに「電源ボタン」+「ボリューム下げるボタン」長押しで強制再起動を
昨晩まで使えていたGalaxy Note 5が2017年元旦の朝からうんともすんとも言わなくなってしまった。電源ボタンを長押して再起動を試みるもまったく反応せず。USBを挿して充電してみても画面はおろかLEDすら光らない。いやいや、待て、これまで使ってきた初代Galaxy Note、Glaxy Note 3はとりあえずバッテリを抜き差しすれば、この手のハードウェアっぽい問題はなんとかなってきた。それと同じだ。そう思ってバッテリを外そうとしたが、どうやらGalaxy Note 5ではバックパネルがかなり頑丈な接着剤でついているため、取り外すにはかなりハードルが高い。これまでは簡単に手ではずせて、むしろ着せ替えを楽しんでくれといわんばかりの仕様だったのに。
接着剤をドライヤーで高温にして、吸盤でパネルを吸い付けて引き上げてできた隙間にギターのピックを入れ込んで少しずつ少しずつ接着剤を外しながら…
パキッミシッ。嫌な音がした。
終わった。慎重に慎重にはがしていたのだが、ある点に力がかかった途端にヒビがバックパネル全面にビッシリ。2017年一発目からやっちまった。
やれやれ、わざわざ2016年1月ごろに輸入してまで買った*1 Galaxy Note 5を2017年元旦から破壊することになろうとは。きっと交換部品商の在庫も少ないだろうからパーツを手に入れるのも面倒なんだろうな…。
といろいろ調べていると、Galaxyを強制再起動の仕方が存在することに気づいてしまった。電源ボタンを長押しすると、OSが再起動されることは知っていたが、「強制再起動」なるものはOSよりも下のレイヤではたらくようである。
「電源ボタン」+「ボリューム下げるボタン」長押し。*2
なんということはなかった。強制再起動によってGalaxy Note 5は復活した。わざわざ開ける必要などなかった。ただただ焦って、ただただバックパネルを破壊しただけの2017年最初のできごとだった。
*1:Galaxy Note 5(SM-N9200)を輸入してdocomo SIMからOCN SIMに乗り換えた話 - じっぱひとからげ
*2:Galaxy Note 5でしか試していないが、おそらくGalaxyシリーズ共通仕様だと思う
兄の後ろから見るゲームのおもしろさ、あのワクワク感を少し思い出した。
ドラゴンクエスト30周年ということで企画されたドラゴンクエスト30th ~そして新たな伝説へ~ を見た。31歳の私にとってのドラゴンクエストは初めてのプレイは3だったと思う。どちらかというと私が熱狂的にプレイしていたというよりは、5つ上の兄がど真ん中でプレイしていたというのが正しいと思う。
当時、まだ幼かった私は当然ゲームを上手に進められないので、いつも兄がプレイする画面を後ろから見ていた。高橋名人のことはよく知らなかったが、家庭内ルールとして「ゲームは1日1時間」と決められていたこともプレイを後ろからみるきっかけになっていたかもしれない。
ゲームが上手な兄はどんどんゲームを進めていく。キャラクターはどんどんレベルが上がり、新しい呪文を覚える。新しい武器を、防具を買う。そして新しい街へと冒険していく。すっかり気持ちは一緒に冒険しているような、そんな気持ちになっていた。
ボス戦でのハラハラも兄の後ろから手に汗握って見ていた。船を手に入れて大海原に出たり、ラーミアや気球で大空に飛び立つ瞬間には世界が大きく広がっていくところも後ろからワクワクしながら見ていた。これまで聞いたことのなかったフィールドの音楽が目の奥から流れ出てくるようなゾクゾク感を兄の後ろから楽しんだものだった。
私が自分自身がプレイしてど真ん中でどっぷりRPGを楽しんだのは、1995年発売のクロノトリガーだ。テレビCMではDREAM PROJECTと銘打たれ、坂口博信、鳥山明、堀井雄二が参画する夢の共演であると世間でも騒がれていた。当時一世を風靡していたドラゴンクエストとファイナルファンタジーの夢のコラボレーションであると。まさか、SQUAREとENIXが一つの会社になるなんて誰も想像はしていなかっただろう。クロノトリガーの当時の価格は1万円を超えていた。大金を握りしめておもちゃ屋さんに買いに行ったことを覚えている。
クロノトリガーでは新しい土地、新しい武器・防具、新しい仲間という従来のRPG要素加えて、時を越えるタイムマシン シルバードの登場に心躍らせた。ただ、この頃になると兄はもう中学生になっていて部活動や受験勉強に勤しんでいた。プレイする時間がたっぷりある私のほうがゲームのシナリオを先に進めていた。この頃から、兄の後ろからゲームを見ることはなくなっていた。
テトリスをやっても、ドクターマリオをやっても、ストIIをやっても、ぷよぷよをやっても、なにをやってもかなわなかった兄が少しずつゲームをやらなくなった。
私は中学生になり、さらにゲームに熱狂した。ファイナルファンタジー7, 8, 9と我先にと発売日に購入してプレイしていた。この頃は「ゲーム買うならセブンイレブン」とセブンイレブンでファイナルファンタジーを予約すれば間違いなく発売日に手に入るとうたわれていたのも懐かしい。
もちろん、自分自身でプレイする楽しさはあるけれど、昔見た、兄がプレイする画面を後ろから見るあの楽しさとはまた少し違っていたと今でも思う。兄の後ろから見るゲームのおもしろさは、同世代で兄のいる人ならきっと共感してもらえると思う。
高校受験を控える中学3年生になったこの年に、ファイナルファンタジー10がPS2で発売されたことが重なり、これを境にゲームをほとんどやらなくなってしまった。結局、高校生になってからもPS2を買うことはなく、兄と同じようにゲームから少しずつはなれていってしまった。