服务器监控netdata

什么是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中文汉化版

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,684评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,143评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,214评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,788评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,796评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,665评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,027评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,679评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,346评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,664评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,766评论 1 331
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,412评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,015评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,974评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,073评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,501评论 2 343