Mackerelで3分で始める簡単サーバー監視~apache,mysql,redisとか監視~
前回に引き続きMackerel的なアレを。
Mackerelで3分で始める簡単サーバー監視 - 恥知らずのウェブエンジニア
今回は監視対象にapache,mysqlなどのミドルウェアの状況を監視対象にしてみます。
手順は簡単でメジャーなミドルウェアであれば、公式のプラグインがあるので、
それをインストールして、ちょっぴり設定を修正するだけです。
公式プラグインインストール
まるっとyumでインストール
yum install mackerel-agent-plugins
ソースもgithubで公開されています。
mackerelio/mackerel-agent-plugins · GitHub
apache
mackerel-agent-plugins/README.md at master · mackerelio/mackerel-agent-plugins · GitHub
公式の通りにserver-statusにアクセスできるようapacheのconfを修正します。
Listen 1080 ExtendedStatus On <VirtualHost 127.0.0.1:1080> <Location /server-status> SetHandler server-status </Location> </VirtualHost>
/etc/mackerel-agent/mackerel-agent.confに下記のように追記します。
/usr/local/bin/mackerel-plugin-apache2 -p 1080を直接実行することで結果等も確認できます
[plugin.metrics.apache2] command = "/usr/local/bin/mackerel-plugin-apache2 -p 1080" type = "metric"
mysql
mackerel-agent-plugins/mackerel-plugin-mysql at master · mackerelio/mackerel-agent-plugins · GitHub
デフォルトだとrootで実行されるので、専用のユーザを一応作りました。
GRANT ALL PRIVILEGES ON *.* TO mackerel@localhost IDENTIFIED BY '****' WITH GRANT OPTION GRANT ALL PRIVILEGES ON *.* TO mackerel@127.0.0.1 IDENTIFIED BY '****' WITH GRANT OPTION FLUSH PRIVILEGES
またまた/etc/mackerel-agent/mackerel-agent.confに下記のように追記します。
[plugin.metrics.mysql] command = "/usr/local/bin/mackerel-plugin-mysql -username=mackerel -password=****" type = "metric"
redisとか
同じ要領で/etc/mackerel-agent/mackerel-agent.confに下記追記しました。というかコメントアウトを解除。
# Plugin for Linux [plugin.metrics.linux] command = "/usr/local/bin/mackerel-plugin-linux" # Plugin for Redis # By default, the plugin accesses Redis on localhost. # Currently AUTH password has not been supported yet. [plugin.metrics.redis] command = "/usr/local/bin/mackerel-plugin-redis"
でこれらが終わったらmackerel-agentを再起動。
sudo /etc/init.d/mackerel-agent restart
もし失敗した際は、/var/log/mackerel-agent.logを確認してください。
またApikeyがconfの下に書いてある場合は、上部に持ってくる必要があるみたいです。
これだけでリソースなど下記のようにグラフ化されます。
開発サーバーなので、動きがなくてアレですがちゃんとモニタリングできているようです。
なんて簡単・・・
ありがたいです。
感謝致します。
Mackerelで3分で始める簡単サーバー監視
会社などでは、サーバーの監視でzabbixやnagios、muninなどが使われているかと思いますが、
個人や小さいプロジェクトでは特にサーバー監視などしてないことも多いのはないでしょうか。
自分も個人のはサーバー監視していない状態でした。
特に必要が出たわけでもないのですが、Mackerelで簡単に監視できるそうなのでやってみました。
Mackerel(マカレル)とは
サーバーの監視やアラート、グラフ化をしてくれるサービスです
Mackerel: 新しいアプリケーションパフォーマンスマネジメント
手順
- Mackerel登録
- mackerel-agentをインストール
- サービスとかロールを設定
Mackerel登録
何はともあれ登録します。
普通に登録するだけです。
Mackerel: 新しいアプリケーションパフォーマンスマネジメント
mackerel-agentをインストール
監視対象のサーバーにmackerel-agentをインストールします。
mackerel-agentが定期的に諸々の情報をMackerelに送るようです。
スタートガイドのままです。
//リポジトル追加 curl -fsSL https://mackerel.io/assets/files/scripts/setup-yum.sh | sh //yumでインストール sudo yum install -y mackerel-agent //設定ファイルにapikey追記 sudo sh << SCRIPT cat >>/etc/mackerel-agent/mackerel-agent.conf <<'EOF'; apikey = "***********************" EOF SCRIPT //agent起動 sudo /etc/init.d/mackerel-agent start
サービスとかロールを設定
サービスはそのままサービスやプロダクト単位のもを設定
ロールはwebとかdbなどサーバー単位の役割を登録します
そしてそれらをサーバーに紐付けます。
これだけで完了・・・
これだけで↑的な基本的なサーバーリソースの監視とアラートの設定等ができます。
会社的にやるとなるとセキュリティ的なアレですんなり行かないかもしれないですが、
個人の場合はありがたく使わせて頂きたいですね!
通知もメールやhipchat,slackにも送れるとのこと。
またプラグインを入れることでapacheやmysqlの監視もできる模様。
データをAPIに送ることで任意のデータの監視等も可能だそうです。
監視といえばコレ
Denki Groove - Nothing Gonna Change [Berlin ...
感謝致します。
jenkinsでLDAP認証とジョブごとの権限設定
jenkinsは便利ですが、最初の「とりあえずやってみようぜ」的な流れのまま、
そこそこ危険なジョブも誰でも実行できたりと権限周りがアレな状態なので整理してみました。
なので、認証はLDAPを使い、LDAPのグループで大まかな権限設定行い、
細かいのはジョブごとに権限設定してみました。
バージョン
Jenkins 1.598
LDAP Plugin 1.11
LDAP認証設定
普通にGUIから設定
設定項目 | 内容 | 例 |
サーバー | LDAPサーバー(必要あればポートも) | 10.9.**.*** |
root DN | 検索するroot | dc=hoge_ldap |
Group search base | 検索対象のグループ | ou=hoge_Group |
Group search filter | 検索グループフィルター | cn=*_hoge |
※最初は権限管理を「全員に許可」にしておいてから、LDAPログインできるか確認する。
もし設定に不備があると、ログインできなくなる可能性があります。
その場合、/var/lib/jenkins/config.xmlを直接修正する必要があります。
グループごとの権限設定
グループごとの権限設定は、Jenkins -> Jenkinsの管理 -> グローバルセキュリティの設定から行います
- 権限管理 -> 行列による権限設定(プロジェクト単位)にチェックを入れる
- 対象のグループごとに権限を設定(ここの設定でおおまかな設定を行い、後述のジョブごとの設定で細かい設定を行う)
ジョブごとの権限設定
- 各ジョブの設定 -> 権限設定(プロジェクト単位)の有効化をチェックする
- ここでジョブごとにグループの権限を設定します。
これで取り急ぎ、誰でも何でもできるとかjenkinsだけユーザ作るとかは必要なくなりそうです。
感謝致します。
logmonでログをリアルタイム監視
サービスを運用しているとどうしても不具合が出てしまいます。
出た不具合はできるだけ早く察知したいです。
ということでlogmonを使ってログをリアルタイムに監視して、
致命的なエラーが出たら、メールなりチャットなりで通知するようにしてみました。
インストール
wget http://www-06.ibm.com/jp/linux/tech/doc/attachments/00057580_logmon_20100411.tgz tar zxvf 00057580_logmon_20100411.tgz cd logmon_20100411/ sh setup.sh
設定ファイル作成
今回はとりまapacheのerror_logにFatal errorが出たら、通知します。
vi /etc/logmon/logmon.conf #監視対象ログファイル :/var/log/httpd/error_log #検索文字列 (.*Fatal.*) #検索後の実行コメンド <%%%%>は検索した行 php ~/send_mail.php "<%%%%>"
起動
/etc/init.d/logmon start #設定変更後は /etc/init.d/logmon restart
なんて簡単!
感謝致します。
今年買ってよかったもの~2014~
なんか年末ということもあり、よく見るので自分も書いてみる。
THERMOS 真空断熱タンブラー2個セット シルバー 400ml
THERMOS 真空断熱タンブラー2個セット シルバー 400ml JMO-GP2
- 出版社/メーカー: THERMOS (サーモス)
- メディア: ホーム&キッチン
- 購入: 35人 クリック: 265回
- この商品を含むブログ (20件) を見る
お酒はもちろんあったかいのも冷たいもの全部OK。
もう全ての飲み物はこれで飲んでます。
サイズ的にも缶ビール全部入りますし、洗うのも簡単なのでこのサイズでちょうど良かったです。
Raspberry Pi Type B 512MB
- 出版社/メーカー: RS Components Ltd (ソースマーキング及び販売 Umemoto LLP)
- メディア: エレクトロニクス
- この商品を含むブログ (12件) を見る
転職の間の暇つぶしで買ってみたのですが、色々勉強になりました。
電子工作とか全くやったことなかった自分としては、LEDを光らせただけでけっこう感動しました。
まだまだ使いこなせていないので、ネタ見つけて色々やってみたいです。
今は新しいモデルも出てます。
- 出版社/メーカー: raspberrypi.org
- メディア: エレクトロニクス
- この商品を含むブログ (2件) を見る
シュノーケルグッズ
Masks : M-212QB / Morbi|GEARカタログ|TUSA
Snorkels:SP-175 / PLATINA2 Hyperdry|GEARカタログ|TUSA
Fins : SF-5 / PLATINA Plus|GEARカタログ|TUSA
もともとはスキューバ用に買ったのですが、
やはりスキューバだと諸々費用なり、準備なりかかってしまうのであまり頻繁には行けそうにないです。
でもシュノーケルならさくっと行って潜れるので、来年の夏は伊豆とか行って潜りたいと思ってます。
Kindlle Fire
- 出版社/メーカー: Amazon
- 発売日: 2014/10/16
- メディア: エレクトロニクス
- この商品を含むブログ (11件) を見る
自分が買ったのはこれの一つ前のモデルですが、電子書籍見る用で買ってみました。
正直タブレットとして使うには色々難ありだと思うのですが、電子書籍専用なら十分だと思います。
これを購入してからはもはや、物理的な本を買う気がなくなっちゃいました。
スーパーソニックスクラバー
- 出版社/メーカー: ジャパン・インターナショナル・コマース
- メディア: ホーム&キッチン
- この商品を含むブログを見る
台所周りの掃除用に買ってみました。
けっこう音がうるさいし、宣伝動画みたいには、
きれいには取れませんが、洗剤とかと合わせれば十分油汚れが取れます。
この値段なら十分だと思います。
宇宙柄iPhoneケース
宇宙柄iPhoneケース | AKUTSU YURIE's SHOP
もう販売してないようです・・・
宇宙柄といい、「Why so serious?」といい、フォントといいかなり気に入っています。
酔っ払って落として割れたので2個目買いました。
家デスク用に買ったやーつ
BenQ 24型ワイドディスプレイ(5ms/フルHD/HDMI×1) GL2460HM
- 出版社/メーカー: ベンキュージャパン
- 発売日: 2013/06/21
- メディア: Personal Computers
- この商品を含むブログ (2件) を見る
ディスプレイは特に写りにこだわりがないというか、
違いがわからない男なので、これで必要十分でした。
デスクはikeaのやつ。
あまりスペースがないので、コンパクトなやつは欲しかったのでこれにしました。
デザインもシンプルでいい感じ。
これの上にbenqのディスプレイ+mac bookと、mac miniとHDDを引き出し?的なとこに置いてます。
LENNART 引き出しユニット - IKEA
あと引き出しの下にこれがちょうどはまるので合わせてオススメです。
以上でーす。
感謝致します。
我が家を支えるChatOps
この記事はHubot Advent Calendar 2014 - Adventarの15日目です。
我が家でやり始めたchatopsのことを書こうと思います。
家族構成
- 私、嫁の二人暮らし
- 共働き
- 私:めんどくさがり
- 嫁:めんどくさがり
巻き起こる問題
- どっちがゴミ捨てる問題
- どっちが洗濯、掃除するか問題
- どっちがシャンプーとか詰め替えるか問題
お互いめんどくさがりなので、
毎回、ギリギリまで耐えて相手にやらせようと戦っています
その結果
- 貯まるゴミ、洗濯モノ・・・
これはイカン!
ということで、
家庭内問題解決のためChatOpsやってみました。
ゴミ出しBot作った
毎日夕方に明日出すゴミとその担当をチャットに流します。
って感じでゴミ出し当番を回すようにしています。
毎回この通りにやっているわけではないですが、以前よりはよくなったような。
ソースはこんな感じです。
persons = ['夫','嫁'] week = ["日","月","火","水","木","金","土"] garbage_config = ["燃えるゴミ","ビン缶ペットボトル","燃えるゴミ","燃えないゴミ","燃えるゴミ","燃えるゴミ","燃えないゴミ"] module.exports = (robot) -> #gabage new cron cronTime: "0 0 21 * * *" start: true timeZone: "Asia/Tokyo" onTick: -> now = new Date() target_day = now.getDay() + 1 rand_num = (Math.floor(Math.random() * 100) + 1) % persons.length if target_day > week.length target_day = 0 winner = persons[rand_num] robot.send {room: "xxxxxxx@conf.hipchat.com"}, "明日の#{week[target_day]}曜は#{garbage_config[target_day]}の日ですー!\n担当は#{winner}ですん"
チーム運用の改善に利用されるChatOpsですが、
今回は家庭運用に使ってみました。
家族も重要なチームと捉えれば色々改善できそうなとこありそうですね!
同じネタで社内LTをやったので、
その時のスライドも貼っておきます!
感謝致します。
hubot×hipchatでcron的な定期スクリプトをつくる
またまた前回に引き続きChatOps系を。
hubot×hipchatでJenkinsのジョブを実行する - 恥知らずのウェブエンジニア
今回はcron的な定期スクリプトをつくってみます。
朝10時になったら、朝会を通知してくれるようにしてみます。
さっそく。
必要モジュールインストール
cd BOT_DIR npm install cron --save npm install time --save
スクリプト作成
cd BOT_DIR vi scripts/my_cron.coffee cron = require('cron').CronJob module.exports = (robot) -> robot.enter -> new cron cronTime: "0 58 9 * * 1-5" start: true timeZone: "Asia/Tokyo" onTick: -> robot.send {room: "xxxxxx_hoge@conf.hipchat.com"}, "朝会はーじまーるよー"
roomのところには発言させたいroomのXMPP JIDを指定します。
hipchatのroomsから確認できます。
スクリプト作成後、hubotを再起動します。
よさげです。
通知だけじゃなく、普通に定時処理とかもbot経由でやってみようと思います。
感謝致します。