ติดตั้ง Netdata เฝ้าดูทรัพยากรเซิร์ฟเวอร์แบบเรียลไทม์
เมื่อเซิร์ฟเวอร์มีอาการช้าเป็นช่วง ๆ การ SSH เข้าไปดู top ตอนที่รู้ตัวมักสายเกินไป เพราะช่วงที่มีปัญหาผ่านไปแล้ว สิ่งที่ต้องมีคือระบบที่เก็บข้อมูลไว้ตลอดเวลาเพื่อให้ย้อนดูได้ว่าตอนนั้นเกิดอะไรขึ้น
Netdata เหมาะกับงานนี้มากเพราะเก็บข้อมูลละเอียดระดับวินาที ติดตั้งจบใน 5 นาที และตรวจจับบริการที่ติดตั้งอยู่แล้วบนเครื่อง เช่น Nginx, MySQL และ Redis ให้เองโดยแทบไม่ต้องตั้งค่า
สิ่งที่ต้องเตรียม
- Ubuntu 22.04/24.04, Debian 11/12 หรือ AlmaLinux/Rocky Linux 8-9
- สิทธิ์
sudoและพื้นที่ดิสก์ว่างประมาณ 1 GB สำหรับเก็บข้อมูลย้อนหลัง - โดเมนย่อยและใบรับรอง SSL หากต้องการเปิดหน้าเว็บให้เข้าจากภายนอก
ขั้นตอนที่ 1: ติดตั้ง
wget -O /tmp/netdata-kickstart.sh https://get.netdata.cloud/kickstart.sh
sudo sh /tmp/netdata-kickstart.sh --stable-channel --disable-telemetry
ตัวติดตั้งจะถามยืนยันหนึ่งครั้ง เมื่อเสร็จให้ตรวจสถานะ
sudo systemctl status netdata --no-pager
sudo ss -tlnp | grep 19999
ค่าเริ่มต้นจะเปิดพอร์ต 19999 ให้ทุกเครือข่าย ซึ่งไม่ควรปล่อยไว้ เพราะหน้าเว็บนี้เปิดเผยรายละเอียดภายในของเครื่องทั้งหมดโดยไม่มีรหัสผ่าน ขั้นตอนถัดไปคือปิดให้เรียบร้อยก่อนทำอย่างอื่น
ขั้นตอนที่ 2: ปิดไม่ให้เข้าจากอินเทอร์เน็ตโดยตรง
sudo nano /etc/netdata/netdata.conf
[web]
bind to = 127.0.0.1
allow connections from = localhost
sudo systemctl restart netdata
sudo ss -tlnp | grep 19999
ตอนนี้เข้าได้เฉพาะจากตัวเครื่องเอง ทดสอบผ่าน SSH Tunnel จากเครื่องคุณ
ssh -L 19999:127.0.0.1:19999 [email protected] -N
แล้วเปิดเบราว์เซอร์ไปที่ http://127.0.0.1:19999 วิธีนี้ปลอดภัยที่สุดและไม่ต้องตั้งค่าอะไรเพิ่ม
ขั้นตอนที่ 3: เปิดผ่าน Nginx พร้อมรหัสผ่าน (ทางเลือก)
หากต้องการให้ทีมงานเข้าดูได้จากเบราว์เซอร์โดยไม่ต้องทำอุโมงค์ ให้ครอบด้วย Nginx และ Basic Auth
sudo apt install -y apache2-utils
sudo htpasswd -c /etc/nginx/.netdata-users admin
sudo nano /etc/nginx/sites-available/netdata
upstream netdata {
server 127.0.0.1:19999;
keepalive 64;
}
server {
listen 443 ssl;
server_name status.example.com;
ssl_certificate /etc/letsencrypt/live/status.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/status.example.com/privkey.pem;
auth_basic "Netdata";
auth_basic_user_file /etc/nginx/.netdata-users;
location / {
proxy_pass http://netdata;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
proxy_set_header Connection "keep-alive";
proxy_store off;
}
}
sudo ln -s /etc/nginx/sites-available/netdata /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
ขั้นตอนที่ 4: ตั้งระยะเวลาเก็บข้อมูลย้อนหลัง
ค่าเริ่มต้นเก็บย้อนหลังไม่นานนัก ปรับให้เหมาะกับดิสก์ที่มี
sudo nano /etc/netdata/netdata.conf
[db]
mode = dbengine
storage tiers = 3
# ข้อมูลละเอียดวินาทีต่อวินาที
dbengine tier 0 retention size = 512MiB
# ข้อมูลย่อรายนาที
dbengine tier 1 retention size = 256MiB
# ข้อมูลย่อรายชั่วโมง เก็บได้เป็นเดือน
dbengine tier 2 retention size = 256MiB
sudo systemctl restart netdata
โครงสร้างสามชั้นนี้ทำให้ดูรายละเอียดของเมื่อวานได้ละเอียดระดับวินาที และยังดูแนวโน้มย้อนหลังหลายเดือนได้ในเวลาเดียวกัน โดยใช้พื้นที่ไม่มาก
ขั้นตอนที่ 5: เปิดการเก็บข้อมูลของบริการที่ใช้อยู่
Netdata ตรวจพบบริการส่วนใหญ่ให้เอง แต่บางตัวต้องเปิดฝั่งบริการก่อน
Nginx
sudo nano /etc/nginx/sites-available/default
server {
listen 127.0.0.1:80;
server_name localhost;
location /stub_status {
stub_status;
allow 127.0.0.1;
deny all;
}
}
MySQL / MariaDB
sudo mysql -e "CREATE USER 'netdata'@'localhost';"
sudo mysql -e "GRANT USAGE, REPLICATION CLIENT, PROCESS ON *.* TO 'netdata'@'localhost';"
sudo mysql -e "FLUSH PRIVILEGES;"
รีสตาร์ต Netdata แล้วตรวจว่าตัวเก็บข้อมูลทำงาน
sudo systemctl restart netdata
sudo journalctl -u netdata -n 30 --no-pager | grep -i -E 'mysql|nginx'
ขั้นตอนที่ 6: ตั้งการแจ้งเตือนเข้าอีเมลหรือ Slack
sudo nano /etc/netdata/health_alarm_notify.conf
SEND_EMAIL="YES"
DEFAULT_RECIPIENT_EMAIL="[email protected]"
SEND_SLACK="YES"
SLACK_WEBHOOK_URL="https://hooks.slack.com/services/XXX/YYY/ZZZ"
DEFAULT_RECIPIENT_SLACK="#alerts"
ทดสอบการส่ง
sudo -u netdata /usr/libexec/netdata/plugins.d/alarm-notify.sh test
ปรับเกณฑ์เตือนได้ที่ /etc/netdata/health.d/ เช่น แก้เกณฑ์พื้นที่ดิสก์
sudo nano /etc/netdata/health.d/disk_space.conf
sudo netdatacli reload-health
ขั้นตอนที่ 7: ลดภาระของ Netdata เอง
บนเครื่องเล็กที่ทรัพยากรจำกัด ปิดตัวเก็บข้อมูลที่ไม่ได้ใช้
sudo nano /etc/netdata/netdata.conf
[plugins]
apps = yes
cgroups = no
charts.d = no
node.d = no
python.d = yes
sudo systemctl restart netdata
systemctl status netdata --no-pager | grep Memory
ปัญหาที่พบบ่อย
เปิดหน้าเว็บแล้วกราฟไม่ขึ้น
มักเกิดจาก Nginx ที่ครอบอยู่ไม่ส่งต่อ WebSocket หรือบีบอัดซ้ำ ตรวจว่ามี proxy_http_version 1.1 และ proxy_set_header Connection "keep-alive" ในคอนฟิก
Netdata กินดิสก์เพิ่มขึ้นเรื่อย ๆ
กำหนดเพดานด้วย retention size ของแต่ละ tier ตามขั้นตอนที่ 4 ตรวจพื้นที่ที่ใช้จริงด้วย sudo du -sh /var/cache/netdata /var/lib/netdata
ได้อีเมลแจ้งเตือนถี่เกินไป
ปรับเกณฑ์ในไฟล์ภายใต้ /etc/netdata/health.d/ หรือปิดการเตือนบางตัวโดยตั้ง to: silent อย่าปิดทั้งระบบเพราะจะพลาดเรื่องสำคัญ
เปิดพอร์ต 19999 ทิ้งไว้โดยไม่ได้ตั้งใจ
ตรวจด้วย sudo ss -tlnp | grep 19999 จากเครื่องอื่นในอินเทอร์เน็ตลอง nc -vz <ip> 19999 ถ้าเชื่อมต่อได้ให้กลับไปทำขั้นตอนที่ 2 ทันที
ต้องการระบบเฝ้าระวังที่มีทีมวิศวกรดูแลให้ตลอด 24 ชั่วโมง ติดต่อ THAI DATA CLOUD ได้ที่ https://thaidata.cloud/contact/
- Categories:
- Cloud
- Tags:
- Cloud
- Cloud Server
หมวดหมู่ที่น่าสนใจ
- Account Settings
- AD Server
- AI
- Alibaba Cloud
- Anti-Spam Gateway
- AWS Amazon Web Services
- Campaign
- CentOS/AlmaLinux
- Cloud
- Cloud Backup
- Cloud Communication
- Cloud Migration
- Cloud Security
- Cloud Server Management
- Cloud Solution
- Cloud Solution for Government
- Cloud Solutions by Industry
- Cloud Storage
- Cloud VPS App Plus +
- Cloud VPS DirectAdmin
- Cloud VPS Plesk
- CSR
- Cyber Security
- Cybersecurity
- Data Sovereignty
- Database Server
- DDoS
- Digital Tranformation
- Digital Transformation
- Direct Mail
- Directadmin
- Domainname
- Ecommerce
- ERP
- Generative AI
- Getting Started
- Google Cloud
- Google G Suite
- Huawei Cloud
- IT News
- Linux Server
- Managed Cloud Services
- Managed Service Provider
- Manual
- Microsoft
- Microsoft 365
- Microsoft Azure
- News
- On-premise
- Private Mail Server
- Promotion
- Recommend Solution (Enterprise)
- Server
- Sovereign Cloud
- THAI DATA CLOUD Platform
- Ubuntu
- Ubuntu
- Uncategorized
- VMware
- VPS Server
- Web Design
- Web Hosting
- Web Hosting (DirectAdmin)
- Web Hosting (Plesk)
- Web Technologies
- Windows Server
- Wordpress
- Zimbra
- เรื่องราวความประทับใจ
- โซลูชันสำหรับธุรกิจการผลิตและยานยนต์
- โซลูชันสำหรับธุรกิจการศึกษา
- โซลูชันสำหรับธุรกิจการเงิน
- โซลูชันสำหรับธุรกิจขนส่งและกระจายสินค้า
- โซลูชันสำหรับธุรกิจค้าปลีก
- โซลูชันสำหรับธุรกิจท่องเที่ยว
- โซลูชันสำหรับธุรกิจบริการสุขภาพและโรงพยาบาล
- โซลูชันสำหรับธุรกิจประกันภัย
- โซลูชันสำหรับธุรกิจพลังงานและสาธารณูปโภค
- โซลูชันสำหรับธุรกิจสื่อสารมวลชนและเอ็นเตอร์เทนเมนท์
- โซลูชันสำหรับธุรกิจอสังหาริมทรัพย์
- โซลูชันสำหรับธุรกิจเทคโนโลยี








