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.

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]