使用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键开始构建和安装。

netdata ubuntu

安装后,应自动启动并在系统启动时启用自动启动。 如您所见,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地址可以访问。

Linux服务器性能监控NetData仪表板

Netdata仪表板

设置Nginx反向代理

要通过域名而不是IP地址和端口号访问Web界面,我们可以将Nginx设置为netdata的反向代理。 首先在Linux服务器上安装Nginx。

Debian / Ubuntu

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使用率

netdata监视器CPU使用率

RAM使用

Linux服务器性能监视RAM使用情况

磁盘I / O

Linux服务器性能监视磁盘io

网络流量

Linux服务器性能监视网络流量

内存重复数据删除

如果系统上有内核内存重复数据删除程序(称为内核同一页合并,或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

Sidebar