LevelUp! Studio » newrelic https://blog.levelup.in.th Experience the new world. Fri, 26 May 2017 10:06:07 +0000 th hourly 1 http://wordpress.org/?v=3.8.1 การแก้ปัญหาขณะติดตั้ง PHP Agent ของ Newrelic https://blog.levelup.in.th/2016/09/05/%e0%b8%81%e0%b8%b2%e0%b8%a3%e0%b9%81%e0%b8%81%e0%b9%89%e0%b8%9b%e0%b8%b1%e0%b8%8d%e0%b8%ab%e0%b8%b2%e0%b8%82%e0%b8%93%e0%b8%b0%e0%b8%95%e0%b8%b4%e0%b8%94%e0%b8%95%e0%b8%b1%e0%b9%89%e0%b8%87-php-agent/ https://blog.levelup.in.th/2016/09/05/%e0%b8%81%e0%b8%b2%e0%b8%a3%e0%b9%81%e0%b8%81%e0%b9%89%e0%b8%9b%e0%b8%b1%e0%b8%8d%e0%b8%ab%e0%b8%b2%e0%b8%82%e0%b8%93%e0%b8%b0%e0%b8%95%e0%b8%b4%e0%b8%94%e0%b8%95%e0%b8%b1%e0%b9%89%e0%b8%87-php-agent/#comments Mon, 05 Sep 2016 09:43:20 +0000 http://blog.levelup.in.th/?p=5816 วันก่อนผมเจอปัญหา process newrelic ส่วนของ PHP Monitoring ไม่ทำงาน ไม่มี Process สร้างขึ้นมาเลย และพอไปดู log ก็พบ error ดังนี้

errno=ECONNREFUSED. Failed to connect to the newrelic-daemon

ตอนสั่ง start newrelic PHP Agent แล้วปรากฏว่ารันไม่ขึ้น ซึ่งไม่เคยเจอปัญหานี้มาก่อน เลยไปค้นหาวิธีแก้ พบว่ามีทางแก้สองแบบ

แบบแรก

แก้ไขไฟล์ 20-newrelic.ini จาก

newrelic.daemon.port = "/tmp/.newrelic.sock"

เป็น

newrelic.daemon.port = "@newrelic-daemon"

แล้วสั่ง


service php5-fpm restart
service newrelic-daemon restart

แต่ผมลองแล้วไม่ได้ผล เลยต้องหาวิธีใหม่ได้แบบที่สองคือ

แบบที่สอง

1. พิมพ์ 

getent group newrelic

จะได้ผลลัพธ์ประมาณ newrelic:x:GroupID: ออกมา ให้จำค่า GroupID ไว้สำหรับใช้ต่อไป

2. แก้ไขไฟล์ /etc/sysctl.conf โดยเพิ่ม ข้อมูลดังนี้เข้าไป

fs.proc_can_see_other_uid = 0
fs.proc_super_gid = GroupID

ข้อควรระวังคือ fs.proc_super_gid สามารถใส่ GroupID ได้เพียงอันเดียว ถ้ามี fs.proc_super_gid อยู่ก่อนแล้วให้คุณสร้าง group ใหม่ขึ้นมาแล้วใส่ users ที่ต้องการใช้งานเข้าไปใน group ให้ครบทุก user แล้วใช้ group ใหม่นั้นแทนไปเลย แต่ถ้าไม่เคยสั่ง fs.proc_super_gid มาก่อนก็ไม่ต้องสนใจส่วนนี้

3. 

sysctl -p

4. 

service php5-fpm restart
service newrelic-daemon restart

5. เสร็จเรียบร้อย

]]>
https://blog.levelup.in.th/2016/09/05/%e0%b8%81%e0%b8%b2%e0%b8%a3%e0%b9%81%e0%b8%81%e0%b9%89%e0%b8%9b%e0%b8%b1%e0%b8%8d%e0%b8%ab%e0%b8%b2%e0%b8%82%e0%b8%93%e0%b8%b0%e0%b8%95%e0%b8%b4%e0%b8%94%e0%b8%95%e0%b8%b1%e0%b9%89%e0%b8%87-php-agent/feed/ 0
Newrelic – Cloud Server Monitoring https://blog.levelup.in.th/2013/08/31/newrelic-server-monitoringnewrelic-cloud-server-monitoring/ https://blog.levelup.in.th/2013/08/31/newrelic-server-monitoringnewrelic-cloud-server-monitoring/#comments Sat, 31 Aug 2013 10:00:00 +0000 http://blog.levelup.in.th/?p=2889 ผมได้เคยเขียนบทความเกี่ยวกับตัว Newrelic เครื่องมือสำหรับ monitor server บน Cloud ขั้นเทพ ไปเมื่อ 2 ปีที่แล้ว ซึ่งส่วนนั้นจะเน้นการ monitor ที่ตัว application level แต่ครั้งนี้เราจะมาดูที่ส่วนของ server ด้านหลังกันบ้างเช่น CPU, RAM, Disk I/O ต่างๆ ซึ่งเดี๋ยวนี้ Newrelic ก็ได้พัฒนาขึ้นไปมากกว่าเก่ามากแล้ว และผมเองก็ยังคงใช้งานมาอย่างต่อเนื่อง มาลองดู Feature ด้าน server กันบ้างซึ่งส่วนนี้เหมาะสำหรับ System Engineer ที่ปกตินั่งดูแต่ shell ดำๆ ซึ่งดูได้แค่ข้อมูลปัจจุบัน หากเกิดอะไรขึ้นขณะที่นอนอยู่ จะมาดูย้อนหลัง บางคนอาจเลือกที่จะติดตั้ง Cacti, MRTG, Zabbix แต่ก็จะยุ่งยากเพราะต้องมี server เอาไว้เก็บข้อมูล stat ย้อนหลังต่างๆ เอง ขั้นตอนการติดตั้งก็ต่างๆ กันไป วันนี้ลองมาดู Newrelic บ้าง อาจจะเปลี่ยนใจทำให้คุณชอบขึ้นมาบ้างก็ได้ :)

Newrelic ตอนนี้ขยายบริการใหญ่โตมาก แบ่งการ Monitor หลักๆ ได้ออกเป็น

  1. Web App Monitoring – ซึ่งมันคือบริการแรกเริ่มของ New Relic ที่ผม Review ไปเมื่อ 2 ปีที่แล้ว
  2. Mobile App Monitoring – ตรงนี้ผมยังไม่เคยใช้บริการ แต่เข้าใจว่าเน้นการ monitor ด้านข้อมูล Network ที่ส่งเข้าออกจากตัวมือถือ
  3. Server Monitoring – ตัวนี้คือที่ผมจะพูดถึงวันนี้

lvp1

สิ่งแรกที่ต้องมี แน่นอนคือ CPU และ Memory ที่ใช้งานไปของเครื่อง (ในรูปปรับให้แสดง 24 ชม. ซึ่งจริงๆ สามารถปรับเป็น 30 นาทีแล้วดูผลได้เกือบ Real time)

lvp2

อันนี้ Disk I/O และ Network I/O ซึ่งจะแยก disk เป็นลูกๆ ให้เห็นอย่างชัดเจน

lvp3

เกิด Event อะไรอันตรายไหมในช่วงเวลาที่ผ่านมา เช่น Mem เต็ม CPU ทะลัก disk ระเบิด บลาๆ

lvp4

รูปนี้แสดงให้เห็นว่า process อะไรกิน Memory กิน CPU มากที่สุด ในช่วงเวลาต่างๆ เห็นกันชัดๆ ไปเลยว่าใครเป็นตัวปัญหาของ server เช่นในรูปผมสั่ง backup database ช่วงตี 4 จะเห็นว่า process lbzip2 (บีบอัดไฟล์ backup) ทำงานหนักที่สุด (นอกนั้น node กินเรียบ 55+)

lvp5

ตัวนี้แสดงกราฟเป็นราย process อย่างในรูปคือ php-fpm process ที่ใช้รับ Frontend หน้าเว็บ ซึ่งมี Running instance count หรือก็คือมีจำนวน process นี้กี่ตัวให้ดูด้วย ตรงนี้เอาไว้ Monitor การ spawn children ของ php-fpm ได้เป็นอย่างดี

lvp6

รูปนี้เป็น Disk I/O ที่ละเอียดขั้นว่าในช่วงเวลาต่างๆ มีอัตราการอ่านเขียนที่กี่ MB/S และยังดูค่า IOPS ได้อีกด้วย!! (ใครใช้ AWS จะเอามาคำนวณดูสถิติย้อนหลังเพื่อช่วยสร้างเครื่องที่เหมาะสมได้ดีมาก!)

lvp7

รายชื่อ server หลายๆ เครื่องเท่าที่มีทั้งหมด ดูภาพรวมอาณาจักรของเราได้ตรงนี้ :P

lvp8

และนี่เป็นหนึ่งใน Feature ที่ผมชอบมากที่สุดครับ อีเมล์แจ้งเตือนเราเมื่อ CPU, Mem, Disk I/O เกินกี่ % ซึ่งเราตั้งค่าที่ต้องการให้เตือนได้เองอย่างอิสระ :D เมื่อเราได้รับการแจ้งเตือนถึงปัญหาที่กำลังจะเกิดแต่เนิ่นๆ เราก็จะสามารถเตรียมรับมือและรีบตรวจหาสิ่งผิดปกติในเวลานั้นได้ทันท่วงทีก่อนที่เครื่องจะระเบิดได้ :P

lvp9

เอ๋? ยังไม่พอใจอีกเหรอ? เค้ามี Plugin ให้ install ใช้ฟรีตามแต่ application ที่ใช้เลยนะเออ! พวกนี้จะเป็นบริษัทอื่น Third Party ที่มาร่วมแจมพัฒนาตัวส่งข้อมูลมายิงเข้า Newrelic แล้วทาง Newrelic จะช่วยเก็บข้อมูลสถิติกราฟย้อนหลังให้ นั่นหมายความว่าอนาคต เราอาจจะ Monitor ได้ทุกโปรแกรมบนโลกใบนี้ด้วยพลังของ Third Party Plugin! และน่าจะฟรีทั้งหมดด้วย!

lvp10

ตัวอย่างในรูปผม Install Plugin Monitor Memcached ครับ ทำให้ผมทราบสถิติการใช้งานคำสั่งภายใน Memcached ดังรูปเลย (set, get,delete มากี่รอบต่อนาที)

lvp11

และสุดท้ายก็คือการดูข้อมูลย้อนหลังครับ ตรงนี้จะเป็นจุดแตกต่างที่สำคัญที่สุดระหว่างการใช้ฟรีและจ่ายเงิน เพราะใช้ฟรีจะดูย้อนหลังได้แค่ 1 วัน หากเสียเงินจะดูได้ 7 วัน หรือ 3 เดือนตามแต่ package ซึ่ง Feature ที่ว่ามาตั้งแต่ต้นทั้งหมดสามารถใช้ได้ฟรี! แค่จะดูได้แค่ 1 วัน ซึ่งเอาเข้าจริงก็เพียงพอต่อการแก้ปัญหาเฉพาะหน้าได้มากแล้ว

hero_phones

แถมอีกนิด เค้ามี app มือถือให้โหลดมาใช้ฟรีด้วยเช่นกัน หากอยู่นอกสถานที่ก็ยังดูข้อมูล Server ได้ตลอดเวลา :D ที่สำคัญเวลามีอะไรพังขึ้นมาก็มี Push Notification แจ้งเตือนอีกต่างหาก พระเจ้าจอร์จ มันยอดมาก!

ใครน้ำลายไหล อยากจะได้ก็จิ้มเลยครับ http://www.newrelic.com สมัครวันนี้แม้จะ package ฟรีจะแถมเสื้อฟรีและคอปเตอร์วิทยุบังคับฟรี! ส่งไปรษณีข้ามโลกมาเลยทีเดียว (ทำไมต้องคอปเตอร์ฟะ) เอ๊ะ! ผมเป็น Sale ให้ Newrelic ตั้งแต่เมื่อไหร่ 55+

]]>
https://blog.levelup.in.th/2013/08/31/newrelic-server-monitoringnewrelic-cloud-server-monitoring/feed/ 1
ทดสอบประสิทธิภาพเครื่องด้วย apachebench + newrelic https://blog.levelup.in.th/2011/07/31/test-web-performance-with-apachebench-newrelic%e0%b8%97%e0%b8%94%e0%b8%aa%e0%b8%ad%e0%b8%9a%e0%b8%9b%e0%b8%a3%e0%b8%b0%e0%b8%aa%e0%b8%b4%e0%b8%97%e0%b8%98%e0%b8%b4%e0%b8%a0%e0%b8%b2%e0%b8%9e/ https://blog.levelup.in.th/2011/07/31/test-web-performance-with-apachebench-newrelic%e0%b8%97%e0%b8%94%e0%b8%aa%e0%b8%ad%e0%b8%9a%e0%b8%9b%e0%b8%a3%e0%b8%b0%e0%b8%aa%e0%b8%b4%e0%b8%97%e0%b8%98%e0%b8%b4%e0%b8%a0%e0%b8%b2%e0%b8%9e/#comments Sun, 31 Jul 2011 14:41:14 +0000 http://blog.levelup.in.th/?p=1159 ช่วงนี้กำลังทดสอบประสิทธิภาพ server เลยต้องใช้งาน apachebench (ขอเรียกสั้นๆ ว่า ab) เป็น tools ในการทดสอบประสิทธิภาพ server อย่างหนึ่ง หลังจากลงโปรแกรมแล้ว เราสามารถทดสอบการใช้งานได้ดังนี้

ลองพิมพ์คำสั่งด้านล่างกัน โดย -n คือจำนวน request ทั้งหมดที่จะยิง และ -c คือจำนวน concurrent connection ที่จะใช้ (คือจำลองว่ามีผู้ใช้เข้าใช้งานพร้อมกันกี่คนนั่นเอง) โดยเวลาพิมพ์ชื่อเว็บอย่าลืมพิมพ์ / ต่อท้ายด้วยไม่งั้นจะยิงไม่ได้ ผลจะเป็นดังนี้

ab -n 100 -c 10 http://www.sanook.com/

This is ApacheBench, Version 2.3 <$Revision: 655654 $>

Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/

Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking www.sanook.com (be patient)…..done

Server Software:        Apache

Server Hostname:        www.sanook.com

Server Port:            80

Document Path:          /

Document Length:        154040 bytes

Concurrency Level:      10

Time taken for tests:   2.523 seconds

Complete requests:      100

Failed requests:        0

Write errors:           0

Total transferred:      15435200 bytes

HTML transferred:       15404000 bytes

Requests per second:    39.64 [#/sec] (mean)

Time per request:       252.255 [ms] (mean)

Time per request:       25.225 [ms] (mean, across all concurrent requests)

Transfer rate:          5975.49 [Kbytes/sec] received

Connection Times (ms)

min  mean[+/-sd] median   max

Connect:        2    3   1.5      2      16

Processing:    43  222 180.5    154     885

Waiting:        2   11  40.4      3     210

Total:         45  225 181.0    156     891

Percentage of the requests served within a certain time (ms)

50%    156

66%    275

75%    294

80%    313

90%    494

95%    542

98%    707

99%    891

100%    891 (longest request)

จากผลลัพท์นี้จะเห็นว่าได้ sanook.com รับได้ 39.64 Request/sec และใช้เวลาตอบสนองคือ min 45, mean 225, max 891 millisec ซึ่งเราสามารถทดลองเพิ่มค่า -n และ -c เพื่อเพิ่มขนาดจำนวน load ที่จะยิงได้ตามใจ โดยผมลองยิง server ตัวเอง (ควรจะยิงจากเครื่องอื่นที่ไม่ใช่ webserver เพราะ ab นั้นกินพลัง cpu ด้วยเช่นกัน จะทำให้ค่าที่วัดคลาดเคลื่อนได้ถ้ารันในเครื่องเดียวกับ webserver) ด้วยค่า -n 1000 – c 100 (มีคนเข้าพร้อมกัน 100 คน ทดสอบเมื่อคนเข้าเยอะมากๆ นั่นเอง) และเว็บผมได้ติด Newrelic ดู performance อยู่กรณีมีคนเข้าเยอะผลจะเป็นอย่างไร ได้ผลเป็น 40.20 Request/sec ใช้เวลาตอบสนอง min 215, mean 2313, max 3877 (ยิงด้วยเครื่องที่อยู่ในวง network เดียวกัน) และได้ผลจาก newrelic ออกมาดังรูป

จากรูปก็จะเห็นว่าเมื่อมี Request เพิ่มมากขึ้นแล้ว จะทำให้ php ช้าขึ้นมากอย่างเห็นได้ชัด(กราฟที่แสดงส่วนของ php นี้รวมเวลาทั้ง webserver และ php ไว้ด้วยกัน) ส่วน Database ของผมแม้จะมี Request มากขึ้น แต่ก็ไม่ส่งผลให้ช้าลงมากนัก จึงเป็นอันสรุปได้ง่ายๆ เลยว่า Bottleneck ของ application ตัวนี้เวลาคนเข้าเยอะๆ อยู่ที่ php/webserver นั่นเอง โดยสามารถตัดประเด็นเรื่อง Database ออกไปได้เลย มา optimize ที่ตัว code php และการ set ค่าต่างๆ ของตัว server เองต่อไป ซึ่งตัวผมเองได้ใช้เอามาเปรียบเทียบการเปลี่ยน webserver จาก apache เป็น nginx ก็เห็นผลได้ค่อนข้างชัดเจนเช่นกัน จะเห็นได้ว่า ab มีประโยชน์มากจริงๆ ครับ :)

]]>
https://blog.levelup.in.th/2011/07/31/test-web-performance-with-apachebench-newrelic%e0%b8%97%e0%b8%94%e0%b8%aa%e0%b8%ad%e0%b8%9a%e0%b8%9b%e0%b8%a3%e0%b8%b0%e0%b8%aa%e0%b8%b4%e0%b8%97%e0%b8%98%e0%b8%b4%e0%b8%a0%e0%b8%b2%e0%b8%9e/feed/ 0