0102 | MRTG monitoring script for nginx
Tuesday, July 6th, 2010 Posted in IP Network, Web Server | 1 Comment »สร้างไฟล์ /root/bin/mrtg-nginx.pl ข้อมูลตามนี้
#!/usr/bin/perl # $Revision: 2 $ # $Date: 2008-09-12 15:11:40 +0300 (Fri, 12 Sep 2008) $ my %opt = ( # http link to nginx stub_status, be sure turn on stub_status in nginx conf nginx_status => 'http://localhost:80/status', # path for program what may dump web page, normaly lynx -dump # lynx => 'lynx -dump', lynx => 'wget -q -Y off -O -', ); $opt{var} = $ARGV[0] if $ARGV[0]; $opt{nginx_status} = $ARGV[1] if $ARGV[1] and $ARGV[1]=~/^http:\/\/\w+/; $opt{var} ||= ''; my $do = `$opt{lynx} $opt{nginx_status}`; if ($opt{var} eq 'req') { $do=~/^Active connections:\s*(\d+)\s*$/ms or warn "Error! Can't find data!\nIN :\n$do"; $opt{d2} = $opt{d1} = $1; } elsif ($opt{var} eq 'con') { $do=~/^\s*(\d+)\s+(\d+)\s+(\d+)\s*$/ms or warn "Error! Can't find data!\nIN :\n$do"; $opt{d2} = $opt{d1} = $3; } #elsif { $do=~/^Reading:\s+(\d+).*Writing:\s+(\d+).*Waiting:\s+(\d+)/; } else { $opt{var} = 'ERROR'; $opt{d2} = $opt{d1} = 0; warn "Error! Please read the help and set (req|con)\n"; } print "$opt{d1}\n"; print "$opt{d2}\n"; #print "$opt{up}\n" if $opt{up}; print "Nginx $opt{var}\n";
เสร็จแล้วสั่ง
chmod a+x /root/bin/mrtg-nginx.pl
ให้รันได้
แล้วเอาไอ้นี่ไปใส่ใน nginx.conf ส่วนของ vhost นะครับ
location /status { stub_status on; access_log off; }
แล้วก็… อันนี้เอาไปใส่ใน mrtg.cfg
Target[nginx.newconns]: `/root/bin/mrtg-nginx.pl con` Title[nginx.newconns]: NGINX Connections PageTop[nginx.newconns]: <H1>NGINX Connections</H1> MaxBytes[nginx.newconns]: 10000000000 ShortLegend[nginx.newconns]: c/s YLegend[nginx.newconns]: Conns / sec LegendI[nginx.newconns]: In LegendO[nginx.newconns]: Legend1[nginx.newconns]: New inbound connections Legend2[nginx.newconns]: Options[nginx.newconns]: growright,nopercent Target[nginx.requests]: `/root/bin/mrtg-nginx.pl req` Title[nginx.requests]: NGINX Requests PageTop[nginx.requests]: <H1>NGINX Requests</H1> MaxBytes[nginx.requests]: 10000000000 ShortLegend[nginx.requests]: req YLegend[nginx.requests]: Req LegendI[nginx.requests]: In LegendO[nginx.requests]: Legend1[nginx.requests]: New inbound connections Legend2[nginx.requests]: Options[nginx.requests]: growright,nopercent,gauge
0098 | ปิดงาน admission 2553
Friday, May 7th, 2010 Posted in Database, IP Network, PHP Coding, Web Server | 6 Comments »ปีนี้พิเศษนิดนึงที่ admissions.mxphone.com และเว็บประกาศผลในเครือ bodinzone ทั้งหมด
จะยิงมายัง server เดียวเพื่อทดสอบประสิทธิภาพระบบ cloud computing ครับ (แหม่ ใช้คำซะอินเทรนด์)
เอาจริงๆ มันก็ไม่เชิง cloud หรอก แค่เปลี่ยนระบบจัดการข้อมูลใหม่นิดหน่อยเพื่อให้แก้ไขระบบได้สะดวกขึ้น
และเสี่ยงต่อการถูกโจมตีจนระบบล่มใช้งานไม่ได้ (DDoS) น้อยลง เนื่องจากการเข้าใช้งานเป็นไปในลักษณะนั้น
ผลงานรอบนี้ ขอยกความดีความชอบให้ @rtsp ได้เลยครับ ส่วนความผิดพลาดทั้งหลายผมขอน้อมรับไว้เอง
เนื่องด้วยยังอ่อนประสบการณ์เรื่องนี้พอดี T_T ทำให้ระบบร่วงไปประมาณ 30 นาที (ช่วง 17.30 – 18.00 น.)
(มีเวลาเตรียมงาน นับเป็นชั่วโมงก็ราวๆ 4-5 ชั่วโมง แทบไม่ได้ทดสอบอะไรระบบใหม่นี้เลย)
แต่ดูแล้ว ผลเป็นที่น่าพอใจ และปีหน้าไม่พลาดแล้วครับ cloud computing จงเจริญ
สถิติ:
ปริมาณ bandwidth peak 11.6 Mbps เมื่อ 18.05 น.โดยประมาณ (แทบจะทันทีที่ระบบกลับมาใช้ได้)
ปริมาณการร้องขอเข้าใช้งานสูงสุด ณ เวลานั้น 1200 ครั้ง ต่อวินาที โดยประมาณ
CPU ช่วงจังหวะสูงสุดใช้ประมาณ 3 Core เต็มๆ (เทียบจาก Core 2 Quad ความเร็ว 2.53 GHz)
RAM ใช้ไปประมาณ 2GB
ข้อมูลเชิงเทคนิค
Web Server: lighttpd 1.4.19
Server-Side Scripting: PHP 5.2.6
Database: MySQL 5.0.51
IDC: ServeNet
ปีหน้าเอา atom server มารันดีมั้ยเนี่ย :D


