管理者blog

53記事
サムネイル

muninを使ったサーバ監視+Apacheの追加監視とWordPressの共存

安定したサーバの運用には、サーバの監視が欠かせません。とはいうものの、24時間サーバの様子を見続けることなど不可能なので、弊社では「munin」「awsの管理画面」「pingdom」の3つを使ってサーバの監視を行っています。 munin - サーバやネットワークの監視ツール。オープンソースである。 awsの管理画面 - 様々なリソースの状況を確認できる。 pingdom - 世界各地のデータセンタから死活確認をするサービス。 本記事ではmuninを使ってApacheを監視する方法、および、Wordpress等を運用している場合に発生する注意事項を紹介します。 前提条件 本記事は以下の環境にて動作確認を行っております。 Amazon Web Services の AmazonLinuxで、Apache2.4をインストール済 Muninのインストール Muninは以下の手順でインストールできます。 sudo yum install munin munin-node #インストール sudo chkconfig munin-node on #サービスを自動起動するように設定 sudo service munin-node start #サービスを起動 sudo htpasswd -c /etc/munin/munin-htpasswd admin #パスワードを設定します これで5分程度経過すると、/munin/にサーバの監視結果が表示されます。 監視結果が存在しない場合は以下のような画面が表示されます。(ディレクトリインデックス(=ディレクトリ内のファイル一覧表示)を許可している場合のみ) 監視結果が生成されると以下のような画面が表示されます。 これでmuninを使えるようになりましたが、先程設定したパスワードが無視され、誰でも監視結果が見える状態になっています。これはセキュリティー上の問題があります。(攻撃者に弱点がバレてしまいます) Apacheの再起動 Apacheを再起動するとMuninのログイン制限が有効化されます。これでmuninを使った基本的なサーバ監視の基本的な設定は完了です。 sudo service httpd restart 監視項目の追加 基本的なセットアップだけでも、サーバのかなり詳細情報が取れるようになりました。ディスク、ネットワーク、CPUなどOSレベルで気にするべき多くの項目は網羅されています。 バージョン2.0.20では、デフォルトで38の監視項目が有効化されています(1つの項目の中でも10程度の値をモニタリングしているものもあります)が、全体では232の監視項目が準備されています。 全て追加してしまえば良いように思うかもしれませんが、オススメしません。そんなことをすると、監視のための負荷が発生したり、監視結果の保存スペースが余分に必要になったり、そもそも、muninの画面に不要な項目が羅列され、目的の項目を探しづらくなってしまいます。 デフォルトで有効化されている監視項目 ls /etc/munin/plugins/ cpu diskstats fw_packets interrupts memory ntp_kernel_pll_freq ntp_states processes sendmail_mailstats threads vmstat df entropy if_err_eth0 irqstats netstat ntp_kernel_pll_off open_files proc_pri sendmail_mailtraffic uptime df_inode forks if_eth0 load ntp_kernel_err ntp_offset open_inodes sendmail_mailqueue swap users リンクするだけで直ぐに使える監視項目 ls /usr/share/munin/plugins/ acpi diskstat_ ip_ nfs4_client postgres_checkpoints snmp__cpuload snort_traffic amavis diskstats ipac-ng nfs_client postgres_connections_ snmp__df spamstats apache_accesses ejabberd_ ipmi_ nfsd postgres_connections_db snmp__df_ram squeezebox_ apache_processes entropy ipmi_sensor_ nfsd4 postgres_locks_ snmp__fc_if_ squid_cache apache_volume exim_mailqueue ircu nginx_request postgres_oldest_prepared_xact_ snmp__fc_if_err_ squid_icp apc_envunit_ exim_mailqueue_alt irqstats nginx_status postgres_prepared_xacts_ snmp__if_ squid_objectsize apc_nis exim_mailstats jmx_tomcat_dbpools nomadix_users_ postgres_querylength_ snmp__if_err_ squid_requests apt fail2ban load ntp_kernel_err postgres_scans_ snmp__if_multi squid_traffic apt_all files_ loggrep ntp_kernel_pll_freq postgres_size_ snmp__load surfboard asterisk_channels foldingathome lpar_cpu ntp_kernel_pll_off postgres_streaming_ snmp__memory swap asterisk_channelstypes foldingathome_rank lpstat ntp_offset postgres_transactions_ snmp__netapp_diskusage_ tcp asterisk_codecs foldingathome_wu mailman ntp_states postgres_tuples_ snmp__netapp_inodeusage_ threads asterisk_meetme forks mailscanner nut_misc postgres_users snmp__netstat tomcat_access asterisk_meetmeusers freeradius_acct mbmon_ nutups_ postgres_xlog snmp__print_pages tomcat_jvm asterisk_sipchannels freeradius_auth memcached_ nut_volts proc snmp__print_supplies tomcat_threads asterisk_sippeers freeradius_proxy_acct meminfo nvidia_ processes snmp__processes tomcat_volume asterisk_voicemail freeradius_proxy_auth memory open_files proc_pri snmp__rdp_users uptime bind9 fw_conntrack mhttping open_inodes proxy_plugin snmp__sensors_fsc_bx_fan users bind9_rndc fw_forwarded_local multiping openvpn ps_ snmp__sensors_fsc_bx_temp varnish_ bonding_err_ fw_packets multips perdition psu_ snmp__sensors_fsc_fan vlan_ buddyinfo haproxy_ multips_memory pgbouncer_connections qmailqstat snmp__sensors_fsc_temp vlan_inetuse_ cmc_tc_sensor_ haproxy_ng munin_stats pgbouncer_requests qmailscan snmp__sensors_mbm_fan vlan_linkuse_ courier_ hddtemp munin_update ping_ qmailscan-simple snmp__sensors_mbm_temp vmstat courier_mta_mailqueue hddtemp2 mysql_ plugin.sh quota_usage_ snmp__sensors_mbm_volt vserver_cpu_ courier_mta_mailstats hddtempd mysql_bytes plugins.history samba snmp__swap vserver_loadavg courier_mta_mailvolume hddtemp_smartctl mysql_innodb pm3users_ selinux_avcstat snmp__uptime vserver_resources cps_ hp2000_ mysql_isam_space_ pop_stats sendmail_mailqueue snmp__users yum cpu http_loadtime mysql_queries port_ sendmail_mailstats snmp__winload zimbra_ cpuspeed if_ mysql_slowqueries postfix_mailqueue sendmail_mailtraffic snmp__winmem cupsys_pages if_err_ mysql_threads postfix_mailstats sensors_ snort_alerts df ifx_concurrent_sessions_ named postfix_mailvolume slapd_ snort_bytes_pkt df_abs interrupts netopia postgres_autovacuum slapd_bdb_cache_ snort_drop_rate df_inode iostat netstat postgres_bgwriter slony_lag_ snort_pattern_match digitemp_ iostat_ios netstat_multi postgres_cache_ smart_ snort_pkts Apacheに対する監視項目を追加 では、Apacheに関する監視項目を追加してみましょう。 以下の3ステップで設定できます。(Wordpressがなければ2ステップの場合が多い) Apacheの拡張ステータス表示を有効化する .htaccessが悪さをしている場合は記述を修正する(必要な場合のみ) muninに監視対象を追加する Apacheの拡張ステータス表示を有効化 /etc/httpd/conf/httpd.conf の末尾に以下の設定を追加する。/server-statusにアクセスしたとき、server-statusハンドラで処理するように指定している。また、外部からアクセスできると、セキュリティー上問題があるので、ローカルホストからのアクセスしか許可していない。 <Location /server-status> SetHandler server-status Order Deny,Allow Deny from all Allow from localhost </Location> Allow from のlocalhostはmuninからのアクセスにつかう。 これで、/server-status にアクセスしてサーバステータスが取得できれば問題ない。 外部からのアクセスを許可していないので、 wget http://localhost/server-status などとして、アクセスできるか確認すること。 WordpressなどのCMSが入っている場合、それらの.htaccessが悪さをしている場合があるので修正する。 .htaccessを修正する(必要な場合のみ) /var/www/html/.htaccessに、URLのリライト設定がされていて、その設定が悪さをしている場合がある。「RewriteCond %{REQUEST_URI} !=/server-status」を追加することで、サーバのステータス取得URLをリライト対象外とする。 # BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} !=/server-status RewriteRule . /index.php [L] </IfModule> muninに監視対象を追加する シンボリックリンクを貼れば良い。以下のコピペでApacheに関する監視項目を追加できる。 sudo ln -s /usr/share/munin/plugins/apache_accesses /etc/munin/plugins/apache_accesses sudo ln -s /usr/share/munin/plugins/apache_processes /etc/munin/plugins/apache_processes sudo ln -s /usr/share/munin/plugins/apache_volume /etc/munin/plugins/apache_volume シンボリックリンクを追加したあとは必ず、munin-nodeをリスタートすること。 service munin-node restart 設定がうまくいっていれば、apacheの項目が追加され、グラフが描画され始めます。 まとめ muninを使えば手軽にサーバ監視を開始できます。今回の例ではApacheについて追加監視の指定を行いましたが、必要に応じて適切なプラグインを追加し、実用的なサーバ監視体制を構築しましょう。
サムネイル

メンバー管理・成績の保存が追加されたQuizGenerator(β)をリリース

この度、新たに「QuizGenerator(β)」をリリースしました! メンバー管理・成績の保存が追加されたサービスとなっております。 ▼learningBOXの4大機能  ・【問題回答】 ・・・問題を解く  ・【問題作成】 ・・・8種類の問題を作成/管理できる  ・【成績保存】 ・・・メンバーの成績を閲覧できる  ・【メンバー管理】 ・・・グループ/メンバーを作成/管理できる ▼概要 弊社は2011年からQuizGenerator(https://quizgenerator.net/)という、テキスト(.txt)ファイルから無料でクイズを作れるツールをWEBで公開しております。おかげさまでGoogle検索で『クイズ 作成』等のキーワードで1位を獲得し、以前にも増してお問い合わせいただくようになっていました。 ユーザー様にお使い頂けている理由は、商用無料かつテキストファイルで誰でも簡単に作成でき、穴埋めや並び替えなど8種類の出題形式に対応していることと考えております。 使用用途としては、 ・塾での生徒の復習教材に使いたい ・飲食店のマニュアルを覚えさせたい ・社内の新卒に基礎知識を覚えさせたい 等、小規模での活用がメインです。 お問い合わせの内容のひとつに、「生徒たちの成績は保存できるのですか?」というものがありました。従来QuizGeneratorは、クイズを作るソフトですので、単体では成績を保存できませんでした。 そこで、昨年の12月から、『小規模事業者様にも無理なく導入していただけるe-learningのWEBシステムに成長させよう』という方針のもと、QuizGeneratorの成績を保存できるサービス開発に着手しました。 拘ったのは価格です。 成績を保存するにあたり、サーバーの費用等どうしても発生してしまいます。通常e-learningシステムは、1アカウントあたり300~500円/月での提供が主流です。ただ、弊社としては、小規模事業者様(もしくは大企業の事業部単位)に使っていただけるサービスでなくてはなりません。 そこで、出題システムを単純化・簡素化しクイズ管理システムとして一本化することで、費用を抑え、11~100アカウントで2,500円/月(最安値1アカウント25円/月)での提供が可能となりました。 たとえ、従業員や生徒数が100名いても、月額2,500円で済むようにしたことで、今までe-learningに手の届かなかった企業様に愛されるシステムになればと考えています。 中小企業の教育システムとして、個人塾の学習管理システムとして、飲食店のマニュアル教材として、ご活用いただければ幸いです。 下記がlearningBOXサイトのURLです。お申し込みはこちらからどうぞ。  ⇒https://lms.quizgenerator.net/ ぜひご覧ください。 ご不明点やご質問等、お気軽にお問い合わせください。