プラスαなサーバ監視

投稿者: | 2014年2月3日


@mikeda


NaviPlusNagiosMunin使

HTTP






XXXX

使

DBXX



tmux


Nagios/Munin

ApacheOption Indexes


ApacheOption Indexes

NaviPlusApache
NameVirtualHost *:80

<VirtualHost *:80>
  ServerName sysadm

  ErrorLog  "/var/log/httpd/sysadm.error_log"
  CustomLog "|/usr/sbin/cronolog /var/log/httpd/sysadm.access_log.%Y%m%d" combined
  DocumentRoot /var/www/html

  <Directory "/var/www/html">
    Options Indexes FollowSymLinks  ### ←ここがポイント
    Order deny,allow
    Deny from all
    Include conf/extra/allow_from_naviplus.conf
  </Directory>
</VirtualHost>

OS


mon_alpha_01
使
HTML
WEBDAV便


Nagios調使

2ps aux


mon_alpha_02

mon_alpha_03
2
mon_alpha_04
ps aux
mon_alpha_05
cron
### 全サーバのプロセスリストを取得
*/2 * * * * /naviplus/cron/check_servers/ps.sh


#!/bin/bash
export PATH=/usr/local/bin:/bin:/usr/bin

# このファイルに監視対象サーバ名を並べてます
# 将来的には更新漏れの起こりづらい別の仕組みにするかも
# →構築/管理ツールと連携とか、各サーバからPUSH方式にするとか
server_list='/naviplus/sv.list'
DAY=`date +%Y%m%d`
MIN=`date +%H%M`
BASE_DIR=/var/www/html/check_servers/ps

cd $BASE_DIR || exit 1

# 1台ずつやると時間かかるから一気に実行
# サーバ台数ぶん一気はやりすぎ感あるw
while read host;do
  mkdir $host 2>/dev/null
  mkdir $host/$DAY 2>/dev/null
  ssh $host "ps aux" > $host/$DAY/${host}_${DAY}_${MIN}.txt &
done < $server_list
wait

使


使HTML

mon_alpha_11
使


cron
### サーバのリソース使用状況のサマリページを作成
0 7 * * * /naviplus/cron/check_servers/check_server_resource.rb > /var/www/html/check_servers/resource/resource_`date +\%Y\%m\%d`.html


MySQL


DB

mon_alpha_12
MySQL使
調



munin
muninRedmine


mon_alpha_13

mon_alpha_14
munin
mon_alpha_15

mon_alpha_16
Munin/var/www/html/munin

HTML

tmux


tmux

crontmux
tmux check

@xxx-app05
Mon Jan 27 11:21:06 2014 tmux new -s ikeda

@yyy-db01
Mon Jan 27 16:52:38 2014 tmux new -s yoshida


#!/bin/bash
PATH=/usr/local/bin:/bin:/usr/bin

mail_addr="xxx@example.jp"
server_list=/naviplus/sv.list
tmp_message=/tmp/check_tmux_message.$$

cnt=0
while read host;do
  output=`ssh -n $host "ps -o lstart=,cmd= -C tmux"`
  if [ $? -eq 0 ];then
    echo "@$host"
    echo "$output"
    echo
    cnt=$((cnt+1))
  fi
done < $server_list > $tmp_message

if [ "$cnt" -ne 0 ];then
  cat $tmp_message | mail -s "tmux check" $mail_addr
fi

/bin/rm $tmp_message

使


α




1


Fluentd/GrowthForecast/ElasticSearch+Kibana