今からはじめるプログラミング48(本当は49?)システム監視①
システムが死んだら、仕事ができなくなる。
というわけで?
インフラ系のシステムの基本みたいなことを考えてみようというか参考になれば?
いいかな?前にも描いたか忘れてしまいましたが、まずオペレータさんみたいなところから入ることを考えて、パソコンとかが動いているかどうかを監視する、というシステムを考えましょう。
まぁ無料のソフトもあるので、実際はそれを利用してもらえばいいとして、
仕組みが理解できる手助けになれば?という感じ。
要はコマンドを実行して、その結果を表示するアプリを作れば、インフラ監視の基本というか導入というか、、、が身につく感じかな?
生き死に監視の基本といえば、pingコマンド?pingコマンド自体は実際はネットワークの確認コマンドなんですが、このコマンドの実行結果によって、ネットワーク上の機器の状態がある程度わかるわけです。パケット(データ)がきちんと送れているなら、生きている。timeout してしまうようなら、どこかおかしい(しんでいる、中継機器がおかしい、回線がおかしいなどなど)というわけで、障害を検知する草分け的な存在かもしれない。
というわけで、アプリケーションとしては、コマンドを入力する、実行するボタン、実行結果を表示する、という機能が基本的にあれば入門としてはいいのではないかな?ということで、ざっくり以下のようにコーディング。
SampleFrame
-----------------------------------------------
package sample30;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextField;
/**
* コマンドの実行確認画面
*
* @author ma2
*
*/
public class SampleFrame extends JFrame implements ActionListener {
/**
*
*/
private static final long serialVersionUID = 1L;
JTextField txt = null;
public SampleFrame() {
init();
}
/**
* 初期化
**/
private void init() {
this.setTitle("コマンドの実施");
this.setLayout(new BorderLayout());
txt = new JTextField("input command");
Container cont = this.getContentPane();
cont.add(txt, BorderLayout.NORTH);
JButton btnExec = new JButton("EXECUTE");
btnExec.setActionCommand("exec");
btnExec.addActionListener(this);
cont.add(btnExec, BorderLayout.EAST);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setSize(new Dimension(480, 600));
this.setVisible(true);
}
public static void main(String arguments[]) {
new SampleFrame();
}
@Override
public void actionPerformed(ActionEvent e) {
String command = e.getActionCommand();
System.out.println("command = " + command);
if ("exec".equals(command)) {
String input = this.txt.getText();
System.out.println("input = [" + input + "]");
}
}
}
--------------------------------------------------
とはいえ、この状態だとただ入力したテキストを表示しているだけなので、
次回、コマンドの実行と結果表示を実装します。
コマンドは以下みたいな本を1冊もっておくと便利です。