netdata简介
这是个开源项目,项目介绍WIKI:https://github.com/firehol/netdata/wiki
我已经使用这套监控系统一段时间了,感觉很不错,监控指标丰富,界面美观,能监控集群下的所有节点服务器,它是个什么东东呢?
”netdata is a scalable, distributed, real-time, performance and health monitoring solution for Linux, FreeBSD and MacOS. It is open-source too.”
netdata是一个可扩展的,分布式的,实时的,为Linux, FreeBSD和MacOS性能及健康状态监控的解决方案,当然它也是开源的。
它可以监控服务器的健康运行参数及状态,包括CPU,内存,网络,磁盘等常用的监控指标,以及自己配置扩展监控项,如,redis, tomcat, mysql, nginx, elasticsearch等,是不是已经觉得很不错了?那接下来我说说我是怎么安装的,怎么配置的吧。
安装配置
下载
由于开源项目,直接克隆一套源代码到YOUR_SERVER/path/to/
1git clone https://github.com/firehol/netdata.git安装
1.安装编译所需要的包
1yum -y install zlib-devel libuuid-devel libmnl-devel gcc make git autoconf autogen automake pkgconfig2.运行自带的安装启动脚本
1./netdata-installer.sh完事你会看到如下提示:
12345678910111213It will be installed at these locations:- the daemon at /usr/sbin/netdata- config files in /etc/netdata- web files in /usr/share/netdata- plugins in /usr/libexec/netdata- cache files in /var/cache/netdata- db files in /var/lib/netdata- log files in /var/log/netdata- pid file at /var/run/netdata.pid- logrotate file at /etc/logrotate.d/netdataThis installer allows you to change the installation path.Press Control-C and run the same command with --help for help.Press ENTER to build and install netdata to your system >这些是告诉你,所涉及的文件都安装在哪个目录下,到时配置或修改的时候直接去这些地方找就好了,当然自己也可以仔细看看这些配置文件,了解各个参数的含义。
那么这个时候其实就可以通过提示的URL http://this.machine.ip:19999/ 开始监控当前服务器了, 没错,正如访问地址,默认WEB使用的端口为19999.
看看netdata监控界面长啥样儿吧~3.修改默认端口和限制仅内网访问
为了安全,特别是在生产服务器上,尽量修改掉默认端口,而且我也不想把我的所有服务器的公网IP都公开暴露,所以我会找一个跳板机来监控它们,而且我还限制了netdata的数据只有通过跳板机提供的接口能才访问监控WEB页面,保护集群服务器各个节点,具体修改其实很简单,修改配置文件即可,/etc/netdata/netdata.conf。123456789101112131415[web]# web files owner = netdata# web files group = netdata# listen backlog = 100# default port = 19999# bind to = *# mode = multi-threaded# disconnect idle clients after seconds = 60# respect do not track policy = no# x-frame-options response header =# enable gzip compression = yes# gzip compression strategy = default# gzip compression level = 3default port = 123232bind to = 10.xx.yy.zz:123232可以看到最后两项是我自己修改的内容,内网的IP,通过ifconfig可以方便地看到,eth0 对应的inet addr就是。
修改好了,需要重启一下netdata服务,方法有几种,安装成功注册到service的,可以通过service netdata restart来重启,也可以直接killall netdata, 然后 netdata启动。这四个步骤重复在所有的服务器上搞一遍,那么基本安装配置就好了,接下来配置Nginx
访问接口配置
我使用nginx来配置对外提供的监控访问接口,我选择一台测试服务器,安全要求较低的服务器作为了跳板监控机。Nginx安装此处不细说,介绍一下我配置的内容:
123456789101112131415161718192021222324252627282930313233server {listen 80;server_name www.jinsk.vip;location /m/1/ {proxy_pass http://10.xx.yy.z1:port/;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}location /m/2/ {proxy_pass http://10.xx.yy.z2:port/;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}location /m/3/ {proxy_pass http://10.xx.yy.z3:port/;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}location /m/4/ {proxy_pass http://10.xx.yy.z4:port/;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}....}基本监控功能模块安装和配置就已经好了,就可以让开发运维的小伙伴们定期的去遛一遍服务器,当然netdata身也是带有提醒功能的,只要你开启着监控页面,就会在设定的预警参数触发和恢复时在浏览器右上角提醒您。
配置redis监控
按照官方提供的方法,分为Python版和shell版,官方推荐使用python版,所以我按照python版本的方法进行配置的。
- 1.启用redis监控功能,默认是没有启用的
修改/etc/netdata/python.d.conf配置文件中的redis启动项,即去掉注释 #redis: yes
redis: yes - 2.配置redis的地址,端口,用户名,密码
修改/etc/netdata/python.d/redis.conf配置文件
支持socket, ipv4, ipv6方式,参考已有配置格式进个添加修改即可,先定义个标签,如”basedata_ipv4:”,然后包含四个参数可配置,name,host,port,pass,name就是在监控面板中看到的名称,便于区分多个redis节点,host,port,pass一看就明白分别对应的是什么了,不多说了。
配置mysql监控
有了上面的redis插件配置方法,配置mysql就是依葫芦画瓢了,先去掉#mysql:yes的注释,然后配置mysql.conf中的连接参数。
配置tomcat监控
目前我是还没有配置,因为,我生产应用的tomcat改造过,并且移除了status模块,所以暂时还没有配置集中监控功能。
配置nginx监控
目前我也还没有配置,网上资料挺多的,安装相应模块,并配置相应的参数即可应用了。
总结
- 优点
1.极大的方便了监控服务器的操作,可以让团队的小伙伴们一起来做这事,而且还可以在家里做,随时随地做,再也不需要指定小伙伴登录CRT去逐个服务器检查了。
2.由于本身提供的监控指标够多,也有相对较合理的预警值提醒,因此,只要打开着监控页面,看到有报警去对应处理就可以了,提高了工作效率。 - 建议
1.配置需要仔细小心,当时绑定内网IP的时候,我就不小心小手一抖把bind to 写成了 bing to, 因此而测试了好久没找到原因,一度还怀疑netdata功能有问题,于是乎,我还去github提了issue。
2.观察日志,有没有出现异常。
3.去github上搜索解决方案,你遇到的问题别人早就遇到过了,而且已经解决了。