夜间模式暗黑模式
字体
阴影
滤镜
圆角
主题色
使用Netdata监控VPS

前言

原本以为安装netdata是比较容易的,不料却有一堆坑。首先摆上官网和Github:

官方文档语言选项中有中文,但是实测有翻译的章节不多 (2019-10-07)

教程中的实验环境为Ubuntu 18.04, 不保证本教程在其他系统也能成功运行.

安装Netdata

在使用netdata的安装脚本之前,建议先更新一下:

sudo apt update
sudo apt upgrade -y # -y 选项可以不加

然后使用脚本:

bash <(curl -Ss https://my-netdata.io/kickstart.sh)

跟随脚本提示(其实就是不停按Enter, y和输密码)安装完成后, 便可执行下一步.

验证安装成功

使用浏览器访问以下网址, 如果能够打开并看到类似以下画面则表示安装成功:

http://<your ip>:19999

注意把your ip改为你的vps的IP地址.

更改配置(可选)

安装完成后,配置文件默认放在/etc/netdata/目录, 建议使用该目录下的edit-config编辑配置文件.

更改系统默认编辑器

edit-config会使用系统默认编辑器编辑配置文件, 如果你偏爱vim而系统默认的编辑器是nano的话, 你可能需要进行这一步操作:

sudo update-alternatives --config editor

然后会出现一段类似这样的文字:

There are 4 choices for the alternative editor (providing /usr/bin/editor).

  Selection    Path                Priority   Status
------------------------------------------------------------
* 0            /bin/nano            40        auto mode
  1            /bin/ed             -100       manual mode
  2            /bin/nano            40        manual mode
  3            /usr/bin/vim.basic   30        manual mode
  4            /usr/bin/vim.tiny    15        manual mode

Press <enter> to keep the current choice[*], or type selection number:

*的那一行表示当前的系统默认编辑器, 输入vim对应的那个数字即可. 如果你发现这上面并没有vim, 那么可能是你还没有安装.

更改默认端口

edit-config的用法是:

sudo ./edit-config FILENAME # FILENAME 为要编辑的配置文件名

使用下面的命令可以获得所有netdata的配置文件名:

sudo ./edit-config

在使用上述命令时需保证已经进入/etc/netdata目录:

cd /etc/netdata

并且保证每次使用都加上sudo以获得编辑权限.

使用以下命令编辑netdata.conf:

sudo ./edit-config netdata.conf

[web]标签下找到port选项, 把他改成你想要的值, 但是切记这个值的更改会影响后面的配置, 更改需慎重.

配置域名

通常我们都不想访问netdata的时候要使用IP并且带上端口号, 如果能直接用域名访问就好了. 我们可以使用nginx反向代理来实现这一功能. 以下内容均假设需要配置的域名是netdata.domain.com, 请自行替换成自己的域名.

使用 Nginx

本节内容可参照: https://docs.netdata.cloud/docs/running-behind-nginx/

首先自然是要安装nginx:

sudo apt install nginx

然后在/etc/nginx/sites-available中新建一个配置文件:

cd /etc/nginx
sudo vim sites-avaliable/netdata.conf

输入以下内容:

upstream netdata {
    server 127.0.0.1:19999;
    keepalive 64;
}

server {
    listen 80;
    server_name netdata.domain.com;

    location / {
        proxy_pass http://netdata;
        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_http_version 1.1;
        proxy_pass_request_headers on;
        proxy_set_header Connection "keep-alive";
        proxy_store off;
    }
}

然后保存, 退出, 让nginx重新载入配置文件:

sudo systemctl reload nginx

访问你的域名, 看到如下画面表示成功:

netdata dashboard

netdata dashboard after installation

监控多台设备

本节可参考: https://docs.netdata.cloud/streaming/#monitoring-ephemeral-nodes

之前的设置只能让netdata监控单台设备, 如何让它监控多台呢?

我们把刚刚安装的那一台主机叫做master, 其他主机叫slaves, 此时我们需要在slaves上安装netdata, 方法和上面的一样, 不过不需要配置nginx.

注: 如果你只需要在单台设备上安装, 那么你已经成功了!

配置stream

首先使用uuidgen命令获取一个uuid作为api key:

uuidgen

记录输出, 输出应该是类似d1b69115-ce04-4c88-aa7a-4287fdb58222的一个字符串.

使用edit-config编辑stream.conf:

cd /etc/netdata # 进入netdata配置目录
sudo ./edit-config stream.conf

[stream]下的选项改为以下的设置:

[stream]
    # stream metrics to another Netdata
    enabled = yes

    # the IP and PORT of the master
    destination = 10.11.12.13:19999

    # the API key to use
    api key = 11111111-2222-3333-4444-555555555555

其中:

  • api key: 是刚刚生成的uuid
  • destination: master主机的IP和端口号(默认是19999)

重新启动netdata:

sudo systemctl restart netdata

禁用本地存储(可选)

以上设置已经能让master拿到slave的数据了, 但是以下设置可以更好地利用slave主机的空间.

打开/etc/netdata/netdata.conf文件并把以下的设置改为对应值:

[global]
    # disable the local database
    memory mode = none

[health]
    # disable health checks
    enabled = no

记得重启netdata:

sudo systemctl restart netdata

主机设置

编辑/etc/netdata/stream.conf:

cd /etc/netdata
sudo ./edit-config stream.conf

/etc/netdata/stream.conf中更改以下配置:

[API_KEY]
    # enable/disable this API key
    enabled = yes

    # one hour of data for each of the slaves
    default history = 3600

    # do not save slave metrics on disk
    default memory = ram

    # alarms checks, only while the slave is connected
    health enabled by default = auto

建议找到API_KEY这一部分然后更改有差异的选项. 然后把API_KEY(中括号里的内容)改为之前生成的uuid.

记得重启netdata:

sudo systemctl restart netdata

注: 貌似每新增一台新的slaves就需要重启一次

验证

如果你在masternetdata上看到一个新的节点就表示成功了(如图)

Nginx代理stream

之前我们在slave上配置destinaiton的时候使用的是IP地址, 不利于迁移(如果想把master变成另外一台主机, 那就需要把所有slaves的配置都改一遍).

我们可以使用域名来解决这一问题. 首先先新增一条A记录, 把一个域名指向master主机. 切记不能有Web Proxy, 如果你使用的是cloudflare作为DNS服务器, 请保证域名旁边的云是灰色的(橙色代表启用proxy).

配置主机Nginx

Ubutnu默认安装并启用了nginxstream模块, 检测步骤为:

  • 查看/etc/nginx/modules-enabled/里面是否有类似50-mod-stream.conf的模块
  • /etc/nginx/nginx.conf中是否包含include /etc/nginx/modules-enabled/*相关载入stream模块的语句

/etc/nginx/nginx.conf中加入以下语句:

stream {
    upstream netdata {
        server 127.0.0.1:19999;
    }

    server {
        listen 9898;
        proxy_pass netdata;
    }
}

其中, server里面的listen需要和slaves配置中的端口对应(默认应为19999)

重启nginx:

sudo nginx -t # 检查配置文件有无错误
sudo systemctl reload nginx

评论

  1. gaocegege

    不错,写的很赞

    4 months前
    2020-9-16 11:02:12

发送评论 编辑评论


				
上一篇