美文网首页运维监控
服务器监控netdata

服务器监控netdata

作者: 进击的阿黑 | 来源:发表于2020-05-31 22:38 被阅读0次

    什么是Netdata

    简单一句话,Netdata是一个分布式的实时健康监测系统。

    说明
    对象 针对系统和应用程序的分布式,实时,性能和运行状况监视
    可视化 Netdata使用高度互动的Web仪表板实时提供无与伦比的洞察力,以实时了解其运行的系统(包括Web服务器,数据库,应用程序)上发生的一切
    自动化与集成化 它可以自动运行,无需任何第三方组件,也可以集成到现有的监视工具链(Prometheus,Graphite,OpenTSDB,Kafka,Grafana等)
    高效 Netdata快速高效,旨在永久在所有系统(物理和虚拟服务器,容器,IoT设备)上运行,而不会中断其核心功能
    分布式 可以针对多个节点进行统一管理
    开源 Netdata是免费的开源软件,目前可在Linux,FreeBSD和MacOS上运行。

    Netdata诞生的背景,有兴趣的同学可以看看:使用Netdata重新定义监视

    快速启动

    参考:https://docs.netdata.cloud/zh/packaging/installer/#install-netdata-on-linux-manually

    Netdata插件

    以下插件,在安装时可以选择启用或禁用

    软件包名 描述
    bash 用于Shell插件和警报通知
    curl 用于Shell插件和警报通知
    iprouteiproute2 用于监控** Linux流量QoS **<br />如果iproute提示不可用或已过时,请使用iproute2
    python 这对于大多数外部插件来说都是必须的
    python-yaml 用于监控beanstalkd
    python-beanstalkc 用于监控beanstalkd
    python-dnspython 用于监控DNS的查询时间
    python-ipaddress 用于监控** DHCPd **<br />只有Python V2才需要此软件包。Python V3已经嵌入了此功能
    python-mysqldb<br />或<br />python-pymysql 用于监控mysqlmariadb 数据库<br />python-mysqldb会运行地更快,所以它是首选
    python-psycopg2 用于监控postgresql数据库
    python-pymongo 用于监控mongodb数据库
    nodejs 用于node.js插件来监控namedSNMP设备
    lm-sensors 用于监控hardware sensors
    libmnl 用于收集netfilter指标
    netcat 用于从远程系统中收集指标的Shell插件

    如果安装了上述软件包,Netdata功能将大大增加,但如果没有它们,Netdata仍然可以正常工作

    自动安装

    要在任何Linux系统(物理,虚拟,容器,IoT,边缘)上从源代码安装Netdata并使其与最新的版本自动保持最新,请运行以下命令

    # make sure you run `bash` for your shell
    bash
    
    # install Netdata directly from GitHub source
    bash <(curl -Ss https://my-netdata.io/kickstart.sh)
    

    自动安装后,netdata默认的配置文件放在/etc/netdata/netdata.conf

    如果自动安装不顺利的同学, 可以采用手动安装的方式。

    手动安装

    安装Netdata所需的软件包<br />

    基本安装

    系统监控和许多应用程序监控,它没有mysql /mariadb,postgres,named,硬件监控和SNMP。

    curl -Ss 'https://raw.githubusercontent.com/netdata/netdata-demo-site/master/install-required-packages.sh' >/tmp/kickstart.sh && bash /tmp/kickstart.sh -i netdata
    

    完整安装

    curl -Ss 'https://raw.githubusercontent.com/netdata/netdata-demo-site/master/install-required-packages.sh' >/tmp/kickstart.sh && bash /tmp/kickstart.sh -i netdata-all
    

    安装Netdata

    # 下载Netdata(同时创建netdata目录)
    git clone https://github.com/netdata/netdata.git --depth=1
    cd netdata
    
    # 运行具有root权限的脚本来编译安装Netdata并启动它
    ./netdata-installer.sh
    

    注意

    • 如果不想安装完后启动Netdata,加上--dont-start-it 参数
    • 如果不想安装在默认目录,则可以这样,./netdata-installer.sh --install /opt,即可安装到/opt/netdata
    • 安装完后, /opt/netdata/etc/netdata/netdata.conf配置文件会自动被创建,可以编辑此文件以更改设置首选项。一个最常见被调整选项是history,它控制Netdata将使用的内存数据库大小。其默认情况下应为“3600”秒(图表中一小时的数据),这使得Netdata将使用大约10-15MB的RAM(取决于系统检测到的图表数量)。请检查内存要求。 当修改配置后,需要重启

    相关命令

    启动,停止和重新启动Netdata

    service netdata start
    service netdata stop
    service netdata restart
    

    当使用service(系统首选基于系统启动或停止的方法)无法实现的时候,可以尝试对systemdinit.d使用等效命令

    systemctl start netdata
    systemctl stop netdata
    systemctl restart netdata
    
    /etc/init.d/netdata start
    /etc/init.d/netdata stop
    /etc/init.d/netdata restart
    

    访问Netdata仪表盘

    打开http://YOUR-HOST:19999<br />当出现无法访问的时候,检查下防火墙的状态,测试环境下将它关闭即可(生产环境不建议)。或者查看安全组是否屏蔽了该端口

    # 查看防火墙状态
    firewall-cmd --state
    # 关闭,或者指定开启某个端口的入站
    systemctl stop firewalld.service
    

    目录

    路径 所有者 权限 Netdata 注释
    /etc/netdata 用户 root<br />组 netdata 目录0755<br />文件0640 Netdata配置文件<br />可能包含敏感信息,因此netdata允许组读取它们。
    /usr/libexec/netdata 用户 root<br />组 root 任何人都可以执行<br />dirs 0755<br />文件06440755 执行 Netdata插件<br />权限取决于文件-并非所有插件都应具有可执行标志。<br />有一些带有升级权限(Linux功能或setuid)的插件-这些插件应该仅按组可执行netdata
    /usr/share/netdata 用户 root<br />组 netdata 任何人的<br />目录0755<br />文件都可读0644 通过网络读取和发送 Netdata Web静态文件<br />这些文件通过网络发送给有权访问Netdata Web服务器的任何人。Netdata会检查这些文件的所有权(使用的[web]部分的设置netdata.conf),如果文件所有权不正确,则拒绝提供这些文件。不支持符号链接。Netdata也拒绝提供..名称中的URL 。
    /var/cache/netdata 用户 netdata<br />组 netdata 目录0750<br />文件0660 读取,写入,创建,删除 Netdata临时数据库文件<br />Netdata在此处存储其临时实时数据库。
    /var/lib/netdata 用户 netdata<br />组 netdata 目录0750<br />文件0660 读取,写入,创建,删除 Netdata永久数据库文件<br />Netdata在此处存储注册表数据,运行状况警报日志db等。
    /var/log/netdata 用户 netdata<br />组 root 目录0755<br />文件0644 写,创造 Netdata日志记录<br />所有Netdata应用程序,将它们的错误或其他参考消息记录到此目录中的文件中。这些文件应进行日志轮换。

    <a name="wvtdc"></a>

    配置

    <a name="5aT8C"></a>

    netdata.conf

    参考https://docs.netdata.cloud/daemon/config/<br />可通过http://YOUR-HOST:19999/netdata.conf 查看netdata的配置信息,注释的配置使用对应的默认值<br />包含了很多配置项,如global、web、plugins、health、registry、cloud、backend、statsd等。每一个配置项下,有key-value的配置,通过key我们能比较快速地知道其含义。

    修改端口

    默认端口为19999

    [web]
            # default port = 19999
    

    修改左上角hostname

    image
    [global]
            hostname = localhost-1
    

    当配置多个节点后,修改注册节点的名称

    image
    [registry]
            registry hostname = local192.168.2.57
    

    修改内存使用

    Netdata使用history标签作为配置内存使用的key,默认为3996秒,即在图表中你能看到的条目数。

    参考以下估算标准,条目数与对应使用的内存

    • 3600秒(图表数据保留1小时)使用15 MB RAM
    • 7200秒(图表数据保留2小时)使用30 MB RAM
    • 14400秒(图表数据保留4小时)使用60 MB RAM
    • 28800秒(图表数据保留8小时)使用120 MB RAM
    • 43200秒(图表数据保留12小时)使用180 MB RAM
    • 86400秒(24小时图表数据保留)使用360 MB RAM

    假设我想让Netdata保留2个小时的图表数据,则可以配置为

    [global]
            history = 7200
    

    设置代理

    参考https://docs.netdata.cloud/docs/step-by-step/step-10/#required-before-you-start<br />为了提高性能和安全性,Netdata官方十分建议在Netdata前面添加一个代理。在这里,我们通常使用Nginx作为代理工具,并结合Cerbot来使用。

    什么是Cerbot?
    Certbot是一种工具,可帮助您为您的域创建和续订证书+密钥对,注意,它是免费的!

    Nginx

    怎么安装和配置Nginx就不说了,这里贴一下官方建议的代理Netdata的配置<br />创建一个文件/etc/nginx/sites-available/netdata,内容如下

    upstream backend {
        server 127.0.0.1:19999;
        keepalive 64;
    }
    
    server {
        listen 80;
    
        # Change `example.com` to match your domain name.
        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;
        }
    }
    

    运行测试配置文件是否正常

    sudo nginx -t
    

    如果没返回错误,再运行以下命令,在sites-enabled目录中创建软链接,重启以生效

    sudo ln -s /etc/nginx/sites-available/netdata /etc/nginx/sites-enabled/netdata
    

    Certbot

    Netdata还建议我们尽可能最大化地使用好代理:加密的HTTPS连接。所以Netdata给我们提供了一个免费的证书生成工具Certbot,使用它,我们将能自动生成证书,并能够支持自动地更新证书,运行以下命令

    sudo certbot --nginx
    

    系统会提示您一些问题。在Which names would you like to activate HTTPS for?提问时,点击 Enter。接下来是这个问题:

    Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    1: No redirect - Make no further changes to the webserver configuration.
    2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
    new sites, or if you're confident your site works on HTTPS. You can undo this
    change by editing your web server's configuration.
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    

    如果确定想要强制使用HTTPS的话,则选择2,并且确定。

    这样,我们就真正完成了代理的配置。

    密码保护

    当我们把代理设置完后,我们可能还需要一个密码验证,运行以下命令

    # 指定用户名为user,添加到.htpasswd文件中
    sudo sh -c "echo -n 'user:' >> /etc/nginx/.htpasswd"
    # 创建密码,系统将提示您创建一个密码
    sudo sh -c "openssl passwd -apr1 >> /etc/nginx/.htpasswd"
    

    打开Nginx配置文件,添加权限校验的配置吗,授权用户文件指向刚才创建的.htpasswd

    location / {
            auth_basic "Restricted Content";
            auth_basic_user_file /etc/nginx/.htpasswd;
            ...
    }
    

    接着再重启nginx,即可开启密码校验功能。

    使用

    仪表板区域

    Netdata的仪表板主要分为了三个区域:栏目、菜单、节点菜单

    栏目

    分为多个部分,例如系统概述,CPU,磁盘,内存等<br />例如下面的内存栏目


    image

    菜单

    菜单显示在标准仪表板的右侧,Netdata为每个部分生成一个菜单,菜单链接到它们所关联的部分。


    image

    节点菜单

    节点菜单出现在标准仪表板的左上角,并标有Netdata正在监视的系统的主机名。<br />单击它会显示一个下拉菜单,其中包含您可能已通过Netdata注册表连接的所有节点。<br />默认情况下,“我的节点”标题下没有任何内容,但是您可以尝试使用任何演示Netdata节点来查看节点菜单的工作方式。


    image

    通过Netdata Cloud或专用注册表添加节点后,您将看到它们出现在“我的节点”标题下。

    自定义仪表板

    Netdata将有关各个图表的信息存储在/netdata/web/dashboard_info.js文件中。<br />例如,以下是dashboard_info.js如何定义“系统概述”部分的方式。

    netdataDashboard.menu = {
      'system': {
        title: 'System Overview',
        icon: '<i class="fas fa-bookmark"></i>',
        info: 'Overview of the key system metrics.'
      },
    

    注意,不能直接更改dashboard_info.js,而是应另外新建一个文件,Netdata已经提供了一个示例文件:dashboard_info_custom_example.js

    cd /netdata/web/
    sudo cp dashboard_info_custom_example.js your_dashboard_info_file.js
    

    自定义文件编写完后,在/netdata/web的目录下使用新建自定义文件的名称即可。

    [web]
     custom dashboard_info.js = your_dashboard_info_file.js
    

    使用Netdata Cloud监视多个系统

    在第一个节点的仪表板上右上角点击登录按钮,此时Netdata将会发送一封验证邮件,点击链接后,该节点将自动链接到Netdata Cloud的账户,并重定向回仪表板。<br />其他节点也按同样的操作,即可。


    image

    特点

    核心功能

    无需配置

    长期指标存储

    使用我们的新数据库引擎,您可以存储每秒数天,数周或数月的历史指标。或者,您可以将指标归档到另一个数据库,例如MongoDB或Prometheus。

    分布式,按系统安装

    您无需将度量标准集中在一个位置,而是在每个系统上安装Netdata ,每个系统负责其度量标准。拥有分布式代理可以降低成本,并使Netdata可以在资源很少的设备(例如IoT和边缘设备)上运行,而不会影响其核心目的。

    完善的健康监控功能

    可确保您始终知道异常发生的时间

    高速,资源少的收集器

    每秒可以收集数千个指标,同时仅使用系统CPU资源的一小部分和少量MiB RAM。

    Netdata Cloud

    可帮助Netdata用户监视整个基础结构的运行状况和性能,无论它们是两千个(或两千个(或更多)!)系统。<br />如果使用Netdata监视多个系统,则Netdata Cloud可以提供集中监控解决方案的所有优势,同时又可以将工作负载分配给每个代理。<br />而且,更好的是,Netdata Cloud不存储系统的任何指标。它存储有关系统IP,主机名和随机创建的GUID的元数据,仅此而已。指标从系统直接流式传输到Web浏览器。<br />本质上,Web浏览器托管一个SaaS应用程序,并将Netdata Cloud的所有功能直接嵌入到仪表板中。<br />**

    安全性

    祥见:https://docs.netdata.cloud/zh/docs/netdata-security/

    数据安全性

    Netdata连接的数据源获取的原始数据只会保留在收集的主机,暴露出去的数据是图表元数据和度量标准值。

    系统安全性

    • Netdata守护程序,在收集系统以及因应用程序的各项指标时,以普通系统用户身份运行,没有构造特殊的特权。
    • 从Netdata插件到Netdata守护程序,是通讯单向的,原始数据的不会离开收集过程,不会被保存;

    只读收集指标

    Netdata只可以读取收集的指标,但是不能进行其他操作,也不会公开敏感信息和业务数据,如内核版本、O/S版本,应用程序版本等

    身份验证

    作为一个监视系统,查看者可以看到监视器上的所有的指标信息,此时应当受到保护,否则会出现

    • 根据视图内容,进行探索测试DDOS攻击的入口

    什么是DDOS攻击?
    分布式拒绝服务。短时间内发起大量请求,耗尽服务器的资源,无法响应正常的访问,造成网站实质下线

    • 使用Netdata本身来给服务器施加压力,尽管只具有最低的进程优先级,仍可以导致OOM

    github传送门

    Netdata中文汉化版

    相关文章

      网友评论

        本文标题:服务器监控netdata

        本文链接:https://www.haomeiwen.com/subject/acldzhtx.html