使用Netdata监视Linux服务器性能
Netdata是具有漂亮Web前端的开源实时Linux服务器性能监视工具。 使用netdata,您可以监视CPU,RAM使用率,磁盘I / O,网络流量,Postfix等。 使用C语言编写的netdata超级快速且资源高效。
Netdata功能:
- 它通过成千上万的指标,交互式可视化和有见地的健康警报,可帮助您立即诊断基础架构中的速度下降和异常。
- 1s粒度 – Netdata每秒更新一次系统统计信息。
- 快速轻巧–默认情况下,它仅使用单个内核的1%CPU和25 MB RAM。
- 它收集了数千个指标。
在本教程中,我们将研究如何在Debian / Ubuntu和Redhat / CentOS / Fedora服务器上安装netdata。 我们还将讨论如何在netdata Web界面上启用密码身份验证,以便只有授权用户才能访问它。
在Linux服务器上安装netdata
Netdata已包含在许多Linux发行版的存储库中。 但是,它可能已经过时了。 要获取最新版本,可以使用官方脚本进行安装。 只需在Linux系统上运行以下命令。
bash <(curl -Ss https://my-netdata.io/kickstart.sh)
如果您不是root用户,它可能会要求您输入密码。
然后,如果系统上尚未安装依赖项,它将尝试安装依赖项。 接下来,它为您提供了有关将文件安装到系统的位置的不错提示。 按Enter键开始构建和安装。
安装后,应自动启动并在系统启动时启用自动启动。 如您所见,systemctl状态。
systemctl status netdata
样本输出:
● netdata.service - Real time performance monitoring Loaded: loaded (/lib/systemd/system/netdata.service; enabled; vendor preset: enabled) Active: active (running) since Fri 2019-11-22 09:52:13 CET; 2min 21s ago Process: 23647 ExecStartPre=/bin/chown -R netdata:netdata /var/run/netdata (code=exited, status=0/SUCCESS) Process: 23646 ExecStartPre=/bin/mkdir -p /var/run/netdata (code=exited, status=0/SUCCESS) Process: 23645 ExecStartPre=/bin/chown -R netdata:netdata /var/cache/netdata (code=exited, status=0/SUCCESS) Process: 23644 ExecStartPre=/bin/mkdir -p /var/cache/netdata (code=exited, status=0/SUCCESS) Main PID: 23648 (netdata)
默认情况下,Netdata侦听端口19999。现在输入 server-ip/19999
在浏览器地址栏中访问netdata Web界面。 它没有身份验证机制。 任何人都知道您的IP地址可以访问。
Netdata仪表板
设置Nginx反向代理
要通过域名而不是IP地址和端口号访问Web界面,我们可以将Nginx设置为netdata的反向代理。 首先在Linux服务器上安装Nginx。
sudo apt install nginx
Redhat / CentOS / Fedora
sudo yum install nginx
OpenSUSE
sudo zypper install nginx
Arch Linux / Manjaro
sudo pacman -S nginx
安装nginx后,在下面的netdata中创建虚拟主机配置文件 /etc/nginx/conf.d/
目录。
sudo nano /etc/nginx/conf.d/netdata.conf
将以下文本放入文件中。 用您的实际域名替换红色文本,并且不要忘记为此子域设置DNS A记录。
upstream backend { server 127.0.0.1:19999; keepalive 64; } server { listen 80; server_name netdata.example.com; location / { proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://backend; proxy_http_version 1.1; proxy_pass_request_headers on; proxy_set_header Connection "keep-alive"; proxy_store off; } }
保存并关闭此文件。 然后测试Nginx配置。
sudo nginx -t
如果配置测试成功,请重新加载Nginx。
sudo service nginx reload
要么
sudo systemctl reload nginx
现在可以在以下位置使用netdata Web界面 http://netdata.example.com
。
仅在Localhost上收听
默认情况下,netdata侦听公共IP地址。 现在可以通过Nginx反向代理访问netdata了,这是使netdata仅在以下情况下侦听的一种很好的安全措施: 127.0.0.1
。 打开netdata配置文件。
sudo nano /etc/netdata/netdata.conf
转到 [web]
部分并找到以下行:
# bind to = *
除掉 #
签名并将其值设置为 127.0.0.1
。
bind to = 127.0.0.1
保存并关闭文件。 然后重新启动netdata以使更改生效。
sudo systemctl restart netdata
请注意,如果您将 bind to
值到IPv6地址 ::1
。 然后在Nginx虚拟主机配置文件中。 您还应该在上游部分中指定一个IPv6地址,如下所示。
upstream backend { server [::1]:19999; keepalive 64; }
启用HTTPS
强烈建议您使用TLS加密HTTP通信。 我们可以通过安装由Let’s Encrypt发行的免费TLS证书来启用HTTPS。 运行以下命令在Ubuntu 18.04服务器上安装Let’s Encrypt客户端(certbot)。
sudo apt install certbot
如果使用Nginx,则还需要安装Certbot Nginx插件。
sudo apt install python3-certbot-nginx
接下来,运行以下命令以获取并安装TLS证书。
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d netdata.example.com
哪里
--nginx
:使用nginx插件。--agree-tos
:同意服务条款。--redirect
:通过301重定向强制HTTPS。--hsts
:将Strict-Transport-Security标头添加到每个HTTP响应。 强制浏览器始终对域使用TLS。 防御SSL / TLS剥离。--staple-ocsp
:启用OCSP装订。 有效的OCSP响应被装订到服务器在TLS期间提供的证书。
现在应该获得证书并自动安装。
启用密码验证
如果在生产Linux服务器上安装了netdata,则启用访问控制很重要,这样只有授权用户才能看到系统上正在运行的应用程序。
使用以下命令生成密码文件。 用您喜欢的用户名和密码替换红色文本。 密码将在以下位置创建 /etc/nginx/password
。
printf "yourusername:$(openssl passwd -crypt 'yourpassword')" | sudo tee -a /etc/nginx/passwords
然后编辑netdata的Nginx虚拟主机配置文件。
sudo nano /etc/nginx/conf.d/netdata.conf
在服务器部分添加auth指令。 auth_basic
启用基本密码验证。 auth_basic_user_file
伪指令指定密码文件。
server { ..... auth_basic "Protected"; auth_basic_user_file /etc/nginx/passwords; ....
保存并关闭文件。 然后重新加载Nginx。
sudo systemctl reload nginx
现在,浏览器将要求您输入用户名和密码。
Netdata Linux服务器性能监视屏幕快照
CPU使用率
RAM使用
磁盘I / O
网络流量
内存重复数据删除
如果系统上有内核内存重复数据删除程序(称为内核同一页合并,或KSM),则可以启用它来节省40-60%的netdata内存。 要启用KSM,请以root用户身份运行以下命令(sudo将不起作用)。
echo 1 >/sys/kernel/mm/ksm/run echo 1000 >/sys/kernel/mm/ksm/sleep_millisecs
如何卸载Netdata
卸载脚本位于: /usr/libexec/netdata/netdata-uninstaller.sh
。
如何更新Netdata
更新脚本位于: /usr/libexec/netdata/netdata-updater.sh
。 和一个cron工作(/etc/cron.daily/netdata-updater
)被添加以每天更新Netdata。
包起来
希望您喜欢这个Linux服务器性能监视工具。 总是欢迎提出意见,问题或建议。 与往常一样,如果您发现此帖子有用,请订阅我们的免费新闻通讯以获取更多提示和技巧trick