前々回、監視対象ホストに仕掛けたcollectdで情報を収集してlogstashに送るのをやった。
今回はそのcollectdでNginxの情報を収集してウェブサーバの(ネットワーク的)使用状況をkibanaでデータ抽出する。(ついでにホストのロードアベレージも)
魔法じゃないので何のしかけも無しにcollectdがNginxの使用状況を取得するということはできない。collectdがNginxのステータス情報を見るための設定を追加する。ということはNginxでステータス情報を出してやるというのも必要。
以下、Nginxとcollectdの設定やコマンドはFreeBSD用に書く。
Nginxの設定
/usr/local/etc/nginx/nginx.conf1 2 3 4 5 | #前略
http {
#中略
include /usr/local/etc/nginx/vhosts/*.conf;
}
|
/usr/local/etc/nginx/vhostsにnginxのバーチャルホストの設定を置くとする。
そこで/usr/local/etc/nginx/vhosts/にある.conf設定ファイルをインクルードする設定を追加。
1 2 3 4 5 6 7 | server {
listen 127.0.0.1:80;
location /ngstat {
stub_status on;
access_log off;
}
}
|
Nginxのバーチャルホストの1つとして127.0.0.1:80で待ち受けるものを作成する。
その/ngstatにアクセスすることでNginxのステータスを取得する。
なので、Nginxのhttp_stub_statusモジュールが使える状態でないと当然動かない。
ローカルホスト専用なのでアクセス制限は考えなくてOK.
collectdの設定
/usr/local/etc/collectd.conf (既存の設定に追加)1 2 3 4 | LoadPlugin nginx
<Plugin "nginx">
URL "http://127.0.0.1/ngstat"
</Plugin>
|
Nginxプラグインの設定を追加。Nginxのステータスを取得するためのURLとして先に設定したバーチャルホストのURLを書く。
Nginxとcollectdを再起動(再読み込み)
# service nginx reload # service collectd restart
Nginxは再起動ではなく設定の再読み込みをする。collectdは普通に再起動。
Nginxのステータスが出力されていることを確認しておく。
% wget -q -O - http://127.0.0.1/ngstat
Active connections: 9
server accepts handled requests
12218 12218 26536
Reading: 0 Writing: 1 Waiting: 8
%
こんな感じで出力される。
collectdでNginxのステータス情報を受信できていることを確認する。方法はcollectdの設定の記事を参照。
これでNginxのステータス情報がcollectd経由でlogstashに集められてelasticserchデータベースに流れ込むようになった。
ここからが本題。
KibanaのSearchで抽出条件を作成する
画面1:
kibanaにアクセスし、左列のメニューからDiscoverをクリック。
Discoverの初期値はLast 15 minutesのようなので直近15分のlogstash-*の全データが表示される筈。
フィールド名のリストの項目は表示されているデータ(抽出されているデータ)に含まれる分だけなので、存在する筈なのに表示されないと言う場合は抽出の仕方を変えるなどしなければならない。
右列はデータソース。
画面2:
データの絞り込みを行う。特に決まりはない筈だか欲しいデータが得られるように抽出条件を追加する。
今回は先ず特定のホストだけを抽出させたい。
フィールド名のリストで[host]を押すと抽出範囲に含まれるホストのリストが表示される。
その中から「抽出したい」ホストを探し、ホスト名の右側の(抽出の追加)を押す。
画面3:
上部に抽出中の項目が表示されるようになった。
右列のデータソースも抽出したホストのデータだけになっている筈。
フィールド名リストの[host]の項目も抽出対象として選んだホストだけが表示されている。
さらに絞り込むため、[collectd_type]を押す。
collectd_typeに含まれる項目が表示される。(ここで注意としては項目名が多いと全てが表示されるとは限らないこと)
今回はNginxの接続ステータスに絞りたいと思うのでnginx_connectionsの右側の(抽出の追加)を押す。
ちなみにその下のconnectionsもNginxのステータス情報の一部。(今回は用は無し)
画面4:
上部の抽出中の項目の表示が増えた。
フィールド名リストの[collectd_type]がnginx_connectionsだけになった。
試しにデータソースの中の1つを開いてみる。Time列の時間の左側の(右向き三角)を押すとそのデータソースが展開される。
type_instanceがwaitingになっている。こういうのは他の種類のtype_instanceがある筈。
画面5:
フィールド名のリストから[type_inctance]を押す。
4種類のtype_instanceが見えている。(抽出した時間内に含まれるものだけなのでこれが全種類とは限らないし全種類かもしれない)
今回はwritingに絞りたいと思うのでwritingの右側の(抽出の追加)を押す。
画面6:
上部の抽出中の項目の表示が増えた。
取り敢えずこの抽出条件を保存したい。画面上部の[Save]を押す。
画面7:
わかりやすい名前を付けて[Save]を押す。
(個人的には抽出条件を並べた名前を付けるようにしている)
画面8:
上の画面5でtype_instanceをwritingで抽出したが、type_instanceの別のものも抽出したい。
そこで上部で現在抽出中の項目でtype_instance:"writing""になっている部分にマウスカーソルを合わせる。
幾つかアイコンが表示されるので(ゴミ箱)をクリック。
抽出状態としては画面5の状態になる。
今回はactiveに絞りたいと思うのでactiveの右側の(抽出の追加)を押す。
画面9:
現在抽出中の項目にtype_instance:"active"が追加される。この抽出条件を保存したいので最上部の[Save]を押す。
新しい名前を付け、Save as a new searchにチェックして[Save]を押す。このときSave as a new searchにチェックしないと画面6,7で保存した抽出条件が新しく指定した名前に変更になって上書き保存されてしまう。
画面10:
今度はロードアベレージ。
特定のホストに絞って、collectd_typeにloadを指定して更に絞った。
データソースを見るとlongterm, midterm, shorttermという項目にそれぞれ値が入っている。(こういうのは直感的に分かりやすくてある意味ありがたいがデータとしては汚い)
同じく名前を付けてこの条件で保存する。
(次回Visualizeで使う)
画面11:
ここまで抽出条件を作って保存したが、それの管理は左列メニューのManagementで行う。
左列の Managementをクリック。
Management画面で「Saved Object」をクリック。
画面12:
上部のタブがSaved Objectであること(赤色の破線四角部分)を確認してその少し下のタブから[Searches]をクリックする。
保存した抽出条件がリスト表示されるので、削除したい条件があればその条件の名前の左にあるチェックボックスにチェックして[Delete]ボタンを押す。
次は今回作成した抽出条件からVisualizeでグラフを作成する。
関連記事:- TelegrafでElasticsearchにメトリクス送信+Kibanaで可視化 (後編)
- TelegrafでElasticsearchにメトリクス送信+Kibanaで可視化 (中編)
- TelegrafでElasticsearchにメトリクス送信+Kibanaで可視化 (前編)
- Metricbeatで収集したメトリクスデータをKibanaで可視化する
- Kibanaを操作する前にユーザーを作成する
- Metricbeat 8.6.0のインストールと設定
- Elastic Stack 8系をFreeBSDにインストール
- Elastic Stack 6.4.2への更新 FreeBSD ports用メモ
- WinlogbeatでWindowsイベントログを可視化 後編
- WinlogbeatでWindowsイベントログを可視化 中編
- WinlogbeatでWindowsイベントログを可視化 前編
- Elastic Stackを6.3.2に更新する
- Elastic Stackでシステム監視 Heartbeatで収集した死活情報をKibanaで可視化
- Elastic Stackでシステム監視 Heartbeatを使う準備
- Elastic Stackでシステム監視 FreeBSDのportsで6.2.3に更新
- ELK Stackでシステム監視 Filebeatで収集したVolumioのログから時系列の再生曲名リストを表示
- ELK Stackでシステム監視 Rspamd 1.7系のElasticsearchモジュールを試す
- ELK Stackでシステム監視 FilebeatでNTP統計ログ取得 Logstashで加工
- ELK Stackでシステム監視 FilebeatでRaspberry Pi Zero WのVolumio楽曲再生ランキング
- ELK Stackでシステム監視 MeticbeatでRaspberry Pi Zero WのVolumioを監視
- ELK Stackでシステム監視 FilebeatでFreeBSDのCPU温度取得+Kibanaグラフ化
- ELK Stackでシステム監視 FilebeatでFail2banのBan情報+地図表示
- ELK Stackでシステム監視 MetricbeatでNginxのステータス情報を取得+グラフ化
- ELK Stackでシステム監視 FreeBSDのportsでELK Stack6系をインストール
- ELK Stackでシステム監視 FreeBSDにMetricbeatをインストールしてみる
- ELK Stackでシステム監視 elasticsearchインデックスのスキーマが勝手に変わる対処 テンプレート作成
- NanoPi NEO2(arm64)用にFilebeatをビルド
- ELK Stackでシステム監視 kibanaでDNSサーバの情報表示
- ELK Stackでシステム監視 kibanaのTimelion,Timeseriesでグラフ作成
- ELK Stackでシステム監視 collectdでDNSサーバの情報収集