NetData搭建 -- Linux效能实时监测工具
从Github上能够看到netdata的主要功能,主要有几点:
interactive bootstrap dashboards, 酷炫所有请求每个metreic都在0.5ms内响应,即便是一台烂机器非常高效,每秒采集数千个指标,但仅占cpu单核1%,少量MB的内存以及完全没有磁盘IO提供复杂的、各种型别的告警,支援动态阈值、告警模板、多种通知方式等可扩充套件,使用自带的外挂API(比如bash, python, perl, node.js, java, go, ruby等)来收集任何可以衡量的资料零配置:安装后netdata会自动的监测一切零依赖:netdata有自己的web server, 提供静态web档案和web API零维护:只管跑上!支撑多种时间序列后端服务,比如graphite, opentsdb, prometheus, json document DBs
NetData工作界面
系统环境:
Centos7下载安装netData
# 下载专案程式码➜ git clone https://github.com/firehol/netdata.git
# 安装变异所需要的包
➜ yum -y install zlib-devel libuuid-devel libmnl-devel gcc make git autoconf autogen automake pkgconfig
# 执行自带的安装启动指令码
➜ cd ./netdata
➜ ./netdata-installer.sh
安装启动指令码时,提示netData安装的详细目录,按下Enter键执行。

安装启动指令码
启动和配置
安装完成后,指令码输出一段资讯,包括:KSM、埠、启动命令开启 KSM 以节省储存占用
如果有下列资讯,说明你的系统有 KSM,但是未启用,可以按照说明执行两句echo命令,节省 40-60% 的储存空间。
--- Check KSM (kernel memory deduper) ---
Memory de-duplication instructions
You have kernel memory de-duper (called Kernel Same-page Merging,
or KSM) available, but it is not currently enabled.
To enable it run:
echo 1 >/sys/kernel/mm/ksm/run
echo 1000 >/sys/kernel/mm/ksm/sleep_millisecs
If you enable it, you will save 40-60% of netdata memory.
web埠配置
预设的web访问埠为19999。
netdata by default listens on all IPs on port 19999,
so you can access it with:
http://this.machine.ip:19999/
如果修改埠,需要编辑配置档案/etc/netdata/netdata.conf 中的 # default port = 19999。去掉注释符号#,埠尽量改掉预设的19999 !!!修改埠后重启生效。如果有防火墙,需开放埠(CentOS7使用firewalld)。
修改web埠
启动/关闭netData
# 停止
➜ systemctl stop netdata
# 启动
➜ systemctl start netdata
# 重启
➜ systemctl restart netdata
# 开机启动
➜ systemctl enable netdata
# 解除安装
➜ ./netdata-uninstaller.sh --force
至此,NetData安装启动完毕,可以通过http://host_ip:port 进行访问,无需账号密码。
下面将结合Nginx设定账号密码。
使用Nginx配置域名访问,设定账号密码授权
由于netdata没有账号密码体系,为保护服务器隐私,我们要使用nginx反向代理配置域名访问,并使用账号密码授权。事先准备:
如果服务器没有Nginx,安装: yum install nginxnetdata的域名,如: netdata.example.com生成Nginx密码档案
# 密码档案存放位置自定义,路径需记录下来,放在Nginx配置中。
➜ printf "netdata:$(openssl passwd -apr1)" > /usr/local/nginx/conf/htpasswd
配置nginx.conf
在 ...nginx/conf.d 中建立netdata.conf档案,写入如下内容,适当修改埠号、域名、auth_basic_user_file。
upstream backend {
# the netdata server,请修改具体埠号
server 127.0.0.1:19999;
keepalive 64;
}
server {
# nginx listens to this
listen 80;
# the virtual host name of this,请求改具体域名
server_name netdata.example.com;
# auth password
auth_basic "netdata Login";
# 上一步生成的密码档案路径
auth_basic_user_file /usr/local/nginx/conf/htpasswd;
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
# 密码档案存放位置自定义,路径需记录下来,放在Nginx配置中。
➜ systemctl reload nginx
重启Nginx后,可以直接通过域名netdata.example.com访问,并且需要输入账号和密码。但是依然可以通过http://IP:Port的方式访问,接下来禁用IP访问。
NetData禁用外部IP请求
开启NetData配置档案:/etc/netdata/netdata.conf,web项的 bind to修改如下:[web]
bind to = 127.0.0.1 ::1
重启NetData: systemctl restart netdata