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.

td-agent, fluentd

ログの収集、集約やデータの収集、集約、プラグインを利用した集計などログやデータの収集にまつわるものならなんでも出来るツール。

サービス用のサーバー群
– ログ収集の設定がされたFluentd
ログ集約サーバー
ーログ集約用の設定がされたFluentd

公式
https://www.fluentd.org/
Syslog, apache/nginx logs, mobile/web app logs, sensor/iot

Fluentd is an open source data collector for unified logging layer.
Fluentd allows you to unify data collection and consumption for a better use and understanding of data.

Fluentd is an open source data collector, which lets you unify the data collection and consumption for a better use and understanding of data.

Unified Logging with JSON
Pluggable Architecture
Minimum Resources Required
Built-in Reliability

あと重要そうなところでいくと、list of Data Sources
application logs: java, ruby, python, php, perl, node.js, scala, .net
network protocols: syslog, http, tcp, udp, unix domain soket, snmp, scribe protocol, mqtt
iot devices: rasperryPi
others: docker, twitter, mysql slow query log, postgresql slow query log, gluster fs, kafka, kestrel, munin, dstat, windows event log, netflow, postfix, aws cloud watch, aws elb log, aws sqs

List of data outputs
log management: elasticsearch + kibana, splunk
dig data: hadoop DFS, treasure data, mongoDB
data archiving: file, aws s3
pub sub: aws kinesis, kafka, amqp, rabbitMQ
data warehouse: bigquery, mysql, postgresql, sqlserver, vertica, aws redshift
monitoring system: datadog, librato, ganglia, graphite, growthforecast, stasd, zabbix, macherel, riemann, sentry
Middleware: norikra, couchdb, couchbase, riak, hbase, opentsdb, zeromq
notification system: email, slack, hipchat, irc, twillo, aws sns

なるほど、give & takeか。

アジャイルとウォーターフォール

開発の性格や規模によって、どちらが適している、いないなどがある

ウォーターフォール
– 正確性、信頼性が求められる場合は適している
– 要件定義に時間をかける
– 出戻りがない想定

アジャイル
– スピード重視
– ドキュメントに時間をかけない
– 少人数で回す
– PDCAを回して改善していく
– 仕様変更にも柔軟に対応する

phpのリダイレクト処理

	header('Location: https://www.cyberagent.co.jp/');
	exit();

ヘッダーで飛ばします。飛ばし先はスクランブルスクウェア サイバーエージェント!
まー30階でも40階でも特に何とも思わないですが、響きがいいですね。

<head>
<script>
setTimeout("link()", 0);
function link(){
	location.href="https://mixi.co.jp/";
}
</script>
</head>

jsによるリダイレクト。location.hrefで飛ばす。

<head>
<meta http-equiv="refresh" content="1;url=https://mixi.co.jp/">
</head>

.htaccessによるリダイレクト

RewriteEngine on
RewriteRule ^test.html$ https://mixi.co.jp/ [L,R=301]

Devopsとは何か?

DevOps(デブオプス)は、ソフトウェア開発手法の一つ。開発 (Development) と運用 (Operations) を組み合わせたかばん語であり、開発担当者と運用担当者が連携して協力する(さらに両担当者の境目もあいまいにする)開発手法

来型のソフトウェア開発と、インフラストラクチャ管理プロセスを使用するよりも速いペースで製品の進歩と向上を達成し、企業がアプリケーションやサービスを高速で配信できるように、文化的な基本方針、プラクティス、ツールが組み合わされている。

アジャイルみたいなものか。

AWSメンテナンス

-フェイルオーバーとは、稼働中のシステムで問題が生じてシステムやサーバーが停止してしまった際に、自動的に待機システムに切り替える仕組み

-HA機能ともいわれ、システムの可用性を高めるための冗長化.

Requiredなイベントについて、事前に知る必要がある。

RDSの詳細設計をしていこう

なるほど、ここでサブネットとavailability zoneをchoiceするのね。

メンテナンスウィンドウの設定

なるほど♪

おおおおお、すげー

やけに時間かかるじゃねーか

ステータス バックアップ中 ってどういうことだ??
とりあえずこれ、vagrantから接続できるんだろうか。。。

vagrantからはつながらないようです。
[vagrant@localhost aws]$ mysql -u root -p -h rds-mysql-server.hoge.ap-northeast-1.rds.amazonaws.com
Enter password:
ERROR 2003 (HY000): Can’t connect to MySQL server on ‘rds-mysql-server.c7fqvxerfcrm.ap-northeast-1.rds.amazonaws.com’ (110)

>EC2インスタンスのセキュリティグループには、Amazon RDS for MySQLインスタンスのセキュリティグループ[example-rds-mysql-server]に対するMySQL接続許可を追加した[example-server]セキュリティグループを割り当てます。
これか!

インバウンドルール
そのセキュリティグループに関連付けられたインスタンスにアクセスできるトラフィックを規制するルール

[ec2-user@ip-hoge ~]$ mysql -u root -p -h rds-mysql-server.hoge.ap-northeast-1.rds.amazonaws.com
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 13
Server version: 5.7.22-log Source distribution

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.

mysql>

おおおおおおおおおおおおおおおおおおお、きたきたきたーーーーーーーーーー
セキュリティグループで若干手間取りましたがwww

RDS for MySQLインスタンスに紐づけるパラメーター

サブネットグループの次はパラメーターグループをつくります。

パラメーターグループできました。

DBインスタンス

Amazon Aurora, MySQL, MariaDB, PostgreSQL, Oracle, Microsoft SQL Serverがあります。なるほど。

ユースケース 開発/テストを選択する

DBインスタンスのクラス
db.t2.micro – 1 vCPU, 1 GiB RAM
20 GiB
概算月間コスト
21.74 USD

たけーな、なんでLinuxのEC2よりDBエンジンのコストの方が高くなるのかわからん。