JDK、JRE/JVM

MyApp.java -> Compile -> MyApp.class

Write once, run anywhere

ではjavaの基礎から行きます。

public class MyApp {

	public static void main(String[] args){
		System.out.println("Hello world");
	}
}

[vagrant@localhost java]$ javac MyApp.java
[vagrant@localhost java]$ ls
AdminUser.class MyApp.class MyInteger.class User.class
AmericanUser.class MyApp.java MyRunnable.class com
JapaneseUser.class MyData.class Printable.class java1
MyApp$1.class MyException.class Result.class
[vagrant@localhost java]$ java MyApp
Hello world

変数

public class MyApp {

	public static void main(String[] args){
		// 変数
		String msg;
		msg = "hello world again";

		System.out.println(msg);
	}
}
public class MyApp {

	public static void main(String[] args){

		char a = 'a';
		// 整数 byte short int long
		int x = 10;
		long y = 55555555L;
		double d = 23423.344;
		float f = 32.33F;
		boolean flag = true; // flase
		// \n, \t

		String msg = "hello w\norld a\tgain";

		System.out.println(msg);
	}
}

[vagrant@localhost java]$ javac MyApp.java
[vagrant@localhost java]$ java MyApp
hello w
orld a gain

public static void main(String[] args){

		int i;
		i = 10 / 3;
		System.out.println(i);
		i = 10 % 3;
		System.out.println(i);
		int x = 5;
		x++;
		System.out.println(x);

	}

[vagrant@localhost java]$ javac MyApp.java
[vagrant@localhost java]$ java MyApp
3
1
6

ほ~

zabbix, zabbix20, zabbix22 違い

zabbixはoss総合監視ツール ラトビアzabbixSIA社開発

linux, windows, nw
zabbix agent, snmp, ipmi, エージェントレス監視
リソース監視、死活監視(ICMPPing, プロセス)、web監視、ログ監視、HW監視、SQL監視

2.0系、2.2系、3.0系と、どんどん新しくなっている。
主に性能改善、機能拡充

監視ロジックの改善、メモリの改善、監視の幅、自動化

なるほど、当たり前だけど、バージョンが高い方がいいのね。
では入れていきましょう。
sudo yum install -y zabbix22.x86_64 zabbix22-server.noarch zabbix22-server-mysql.x86_64

エラー: パッケージ: zabbix22-server-mysql-2.2.21-1.el6.x86_64 (epel)
要求: libiksemel.so.3()(64bit)
問題を回避するために –skip-broken を用いることができません
これらを試行できます: rpm -Va –nofiles –nodigest

zabbix3にします。
yum install http://repo.zabbix.com/zabbix/3.0/rhel/6/x86_64/zabbix-release-3.0-1.el6.noarch.rpm

インストール:
zabbix-release.noarch 0:3.0-1.el6

完了しました!

yum -yの[-y]とは?

オプション -y は 問い合わせにすべて「y」と返答するオプション

$ man yum でマニュアルを見ると、

-y, –assumeyes
Assume yes; assume that the answer to any question which would
be asked is yes.
Configuration Option: assumeyes

なるほどね~

zabbixを使いたい

[vagrant@localhost dev]$ yum search zabbix
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
* remi-safe: ftp.riken.jp
============================= N/S Matched: zabbix ==============================
pcp-export-zabbix-agent.x86_64 : Module for exporting from PCP into a Zabbix
: agent daemon
python-pyzabbix.noarch : PyZabbix is a Python module for working with the Zabbix
: API
uwsgi-stats-pusher-zabbix.x86_64 : uWSGI – Zabbix Stats Pusher for uWSGI
zabbix-agent.x86_64 : Zabbix Agent
zabbix-proxy.x86_64 : Zabbix Proxy
zabbix-proxy-mysql.x86_64 : Zabbix proxy compiled to use MySQL
zabbix-proxy-pgsql.x86_64 : Zabbix proxy compiled to use PostgreSQL
zabbix-proxy-sqlite3.x86_64 : Zabbix proxy compiled to use SQLite
zabbix-server.x86_64 : Zabbix server common files
zabbix-server-mysql.x86_64 : Zabbix server compiled to use MySQL
zabbix-server-pgsql.x86_64 : Zabbix server compiled to use PostgresSQL
zabbix-server-sqlite3.x86_64 : Zabbix server compiled to use SQLite
zabbix-web.noarch : Zabbix Web Frontend
zabbix-web-mysql.noarch : Zabbix web frontend for MySQL
zabbix-web-pgsql.noarch : Zabbix web frontend for PostgreSQL
zabbix-web-sqlite3.noarch : Zabbix web frontend for SQLite
zabbix20-agent.x86_64 : Zabbix agent
zabbix20-proxy.noarch : Zabbix proxy common files
zabbix20-proxy-mysql.x86_64 : Zabbix proxy compiled to use MySQL
zabbix20-proxy-pgsql.x86_64 : Zabbix proxy compiled to use PostgreSQL
zabbix20-proxy-sqlite3.x86_64 : Zabbix proxy compiled to use SQLite
zabbix20-server.noarch : Zabbix server common files
zabbix20-server-mysql.x86_64 : Zabbix server compiled to use MySQL
zabbix20-server-pgsql.x86_64 : Zabbix server compiled to use PostgresSQL
zabbix20-web.noarch : Zabbix Web Frontend
zabbix20-web-mysql.noarch : Zabbix web frontend for MySQL
zabbix20-web-pgsql.noarch : Zabbix web frontend for PostgreSQL
zabbix22-agent.x86_64 : Zabbix Agent
zabbix22-dbfiles-mysql.noarch : Zabbix database schemas, images, data and
: patches
zabbix22-dbfiles-pgsql.noarch : Zabbix database schemas, images, data and
: patches
zabbix22-dbfiles-sqlite3.noarch : Zabbix database schemas and patches
zabbix22-proxy.noarch : Zabbix Proxy
zabbix22-proxy-mysql.x86_64 : Zabbix proxy compiled to use MySQL
zabbix22-proxy-pgsql.x86_64 : Zabbix proxy compiled to use PostgreSQL
zabbix22-proxy-sqlite3.x86_64 : Zabbix proxy compiled to use SQLite
zabbix22-server.noarch : Zabbix server common files
zabbix22-server-mysql.x86_64 : Zabbix server compiled to use MySQL
zabbix22-server-pgsql.x86_64 : Zabbix server compiled to use PostgreSQL
zabbix22-web.noarch : Zabbix Web Frontend
zabbix22-web-mysql.noarch : Zabbix web frontend for MySQL
zabbix22-web-pgsql.noarch : Zabbix web frontend for PostgreSQL
zabbix.x86_64 : Open-source monitoring solution for your IT infrastructure
zabbix20.x86_64 : Open-source monitoring solution for your IT infrastructure
zabbix22.x86_64 : Open-source monitoring solution for your IT infrastructure

随分入ってますな。

Zabbixとは

Zabbixとは、サーバ、ネットワーク、アプリケーションを集中監視するための統合監視ソフトウェア

– 統合監視に必要な監視、障害検知、通知機能を備えており、多数のプラットフォームに対応したZabbixエージェントとSNMPに対応しているため、システム全体をZabbixひとつで監視することが可能
– スクリプトを作成してアプリケーションの監視を独自に拡張できたり、障害検知時にもスクリプトを実行する、Zabbixエージェントにスクリプトを実行させるなど自由に拡張を行える
– ZabbixではWebインタフェースから設定を行い、収集データはMySQLに保存する
– 監視の設定はすべてWebインタフェースから行えるため比較的設定が容易であること、データベースに保存した収集データからグラフを作成し、リソース使用状況の傾向分析や障害分析に役立てることが可能
– Zabbixは、Zabbix SIA社が開発し、オープンソースソフトウェアとして公開されている

なるほど~

zabbix proxyとは

Zabbix Proxyとは?
⇒Zabbix Proxyとは、Zabbixサーバーの代わりに監視対象から監視データを収集し、Zabbixサーバーに情報を送信する。
zabbix proxyが収集したデータはローカルのデータベースにバッファリングされ、zabbixサーバーに転送

zabbix proxyの設定の一つに、プロキシモードという項目がある。zabbixサーバーから取得した設定情報を元に割り当てられた監視を実行する。
監視の設定情報をzabbixサーバーからzabbix proxyにpushする。

zabbix

zabbix って、インフラエンジニアの領域?

インフラエンジニアの仕事
-DB設計
-パッケージ管理
-Webサーバー構築
-DBサーバー構築
-DNSサーバー構築
-メールサーバー構築
-キャッシュサーバー
-ロードバランサー
-監視サーバー
-ログ管理
-AWS
-仮想化
-Docker
-Ansible
-ストレージ
-ネットワーク
-メモリ
-ラック

なるほどな~ インフラエンジニアか~ 点と線が少しづつ繋がりつつあります。

linuxのディレクトリ構造

/ ルートディレクトリ。全ての始まり。
/bin cpやchmodなどのシステムを管理する上で基本コマンド
/boot ブートに必要なファイル。ブートログやカーネルイメージ(Linuxカーネルを格納して圧縮したファイル)が保存されている。
/dev デバイスファイルが配置されている。デバイス(装置〈ハードウエア〉)をファイルとして扱うUNIXの設計思想からきています。
/etc ほとんどの設定ファイルが配置されます。カーネルだけでなく、追加された各ソフトの設定ファイル等が配置されているため、ファイル数が膨大で内容を把握するには骨が折れます。
⇒なるほど
/home 一般ユーザーのホームディレクトリ。通常ユーザーを追加するごとにユーザー名のディレクトリを追加します。
⇒vagrantは homeの中に入ってますね。
/lib /binや/sbinのコマンドを実行するのに必要なファイルが配置されています。基本的にユーザーが変更を加えることはありません。64bit用の共用ファイルは別途「lib64」というディレクトリにあります。
⇒/binは基本コマンド。libとbinは分けてるのですね。
/lost+found システムのバックアップや復元用のファイルが格納される。意図しない再起動やシャットダウン時に使われる。
⇒ すげー。人間の英知を感じずにはいられない。
/media リムーバブルメディアのマウントポイント。(floppy、CD、DVDなど)
⇒ 触ったことないな。
/mnt 一時的なマウントポイント。mediaとの違いは、一時的なファイルシステム(fstabなど)のマウントに使う点。
⇒ マウントの意味がわからん。。
/opt rpmなどパッケージ管理システムのインストール先。複数のユーザーで利用する場合追加したものをここに保存しておけば、変更点を把握しやすい。
⇒ /optは使用頻度が高いですね。
/proc プロセスのIDの付いたディレクトリが配置されています。プロセス独自の情報を格納することからプロセスディレクトリと呼ばれる。各種プロセスのステータスを確認する際に利用される。
/root rootユーザーのホームディレクトリ。homeがセキュリティ上の脅威にさらされてもこちらは大丈夫。という保険のディレクトリです。
⇒ 入れません。。。
/sbin 再起動やファイルシステムの操作などシステム管理者用のコマンドが配置されています。/bin同様、新しいコマンドの追加や変更は推奨されません。
/selinux セキュリティーを向上させるために利用する、Security-Enhanced Linux。rootへの権限が集中を分散することでセキュリティの向上を図る。ものらしい。CentOSではデフォルトで作成される。
/srv FTP、WWWなどで利用するユーザー用のスペース。/homeとも違う、FTP専用、WWW専用のユーザー用ディレクトリ。
/sys システム関連と思いきや、動作しているプロセスやドライバを/procで管理すると膨大になるため、/sysにドライバ関連のプロセスをまとめている。
/tmp テンポラリデータの保存場所。メモリ上の一時ファイルを保存します。ダウンロードフォルダとして利用することもあります。再起動時に消去されます。また通常はcronで定期的に消去されます。
⇒ なるほど、tmpにはおいては駄目なのね。
/usr 各ユーザーが共通して利用するプログラム・ライブラリのデータ。ソースからコンパイルしたソフトなどはこちらにインストールされます。通常パッケージの追加するこのディレクトリにインストールされることが多い。
⇒ インストールしたものは基本 /usrですな。
/var ログやキャッシュなど、可変的システムデータ(動的ファイル)。一時的なデータとしては/tmpと同じですが、こちらは再起動しても消去されずに残ります。
⇒ なるほど。ログはvarか。
/var/www Apacheのデフォルトデータ保存場所。インターネット関連のディレクトリはここに収めるのが普通。かつては/home/httpdディレクトリにあった。

ほう、使うものと使わないディレクトリがありますね。fluentdで使うvarはログだそうです。

fluentdをインストール

[vagrant@localhost ~]$ sudo rpm -Uvh http://www.city-fan.org/ftp/contrib/yum-repo/city-fan.org-release-1-13.rhel6.noarch.rpm
http://www.city-fan.org/ftp/contrib/yum-repo/city-fan.org-release-1-13.rhel6.noarch.rpm を取得中
curl: (22) The requested URL returned error: 404 Not Found
エラー: skipping http://www.city-fan.org/ftp/contrib/yum-repo/city-fan.org-release-1-13.rhel6.noarch.rpm – transfer failed

あれ、必要なかったか。fluentdを入れます。
sudo curl -L https://toolbelt.treasuredata.com/sh/install-redhat-td-agent2.sh | sh

完了しました!
Installation completed. Happy Logging!

happy loggingって。。。えらい陽気だな。
luentdは古橋貞之氏(写真)が開発を始めたOSS。
あ、tresure dataの人だ! マジすげー

とりあえず起動してみましょう。

[vagrant@localhost ~]$ sudo service td-agent start
td-agent td-agent: [ OK ]
おおおおおお、なんか感動した。

fluentdの動作テストを行います。
[vagrant@localhost ~]$ curl -X POST -d ‘json={“json”:”message”}’ http://localhost:8888/debug.test
[vagrant@localhost ~]$ tail -3 /var/log/td-agent/td-agent.log
2018-09-16 10:31:38 +0900 [info]: listening fluent socket on 0.0.0.0:24224
2018-09-16 10:31:38 +0900 [info]: listening dRuby uri=”druby://127.0.0.1:24230″ object=”Engine”
2018-09-16 10:32:17 +0900 debug.test: {“json”:”message”}

えーと、、読み方がわからん。
POSTリクエストを送るには、-X POST を付与します。
localhost:888/dubug.test に’json={“json”:”message”}’をpostしたってことかな。

続いてtailコマンド。
>tailはファイルの最終行から数行を表示するコマンドだ。
>標準では10行を表示
あ~ なるほど。 /var/log/td-agent/td-anget.logの最後の3行を読んでいるわけね。たしかに、tailはお尻って意味ですね。

はいはい、td-agent.logに入っています。

centosにfluentdを入れる準備をしよう

まず、ntpを入れます。
[vagrant@localhost ~]$ sudo yum install -y ntp
インストール:
ntp.x86_64 0:4.2.6p5-12.el6.centos.2

依存性関連をインストールしました:
ntpdate.x86_64 0:4.2.6p5-12.el6.centos.2

完了しました!

etcのntp.confを編集していきます。

[vagrant@localhost ~]$ yum info libcurl
読み込んだプラグイン:fastestmirror
Determining fastest mirrors
* remi-safe: ftp.riken.jp
bintray–sbt-rpm 33/33
epel 12520/12520
インストール済みパッケージ
名前 : libcurl
アーキテクチャ : x86_64
バージョン : 7.19.7
リリース : 53.el6_9
容量 : 339 k
リポジトリー : installed
提供元リポジトリー : updates
要約 : A library for getting files from web servers
URL : http://curl.haxx.se/
ライセンス : MIT
説明 : This package provides a way for applications to use FTP,
: HTTP, Gopher and other servers for getting files.

利用可能なパッケージ
名前 : libcurl
アーキテクチャ : i686
バージョン : 7.19.7
リリース : 53.el6_9
容量 : 176 k
リポジトリー : base
要約 : A library for getting files from web servers
URL : http://curl.haxx.se/
ライセンス : MIT
説明 : This package provides a way for applications to use FTP,
: HTTP, Gopher and other servers for getting files.