服务器监控工具-netdata-搭建

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/

    1
    git clone https://github.com/firehol/netdata.git
  • 安装

    1.安装编译所需要的包

    1
    yum -y install zlib-devel libuuid-devel libmnl-devel gcc make git autoconf autogen automake pkgconfig

    2.运行自带的安装启动脚本

    1
    ./netdata-installer.sh

    完事你会看到如下提示:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    It 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/netdata
    This 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。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    [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 = 3
    default port = 123232
    bind to = 10.xx.yy.zz:123232

    可以看到最后两项是我自己修改的内容,内网的IP,通过ifconfig可以方便地看到,eth0 对应的inet addr就是。
    修改好了,需要重启一下netdata服务,方法有几种,安装成功注册到service的,可以通过service netdata restart来重启,也可以直接killall netdata, 然后 netdata启动。

    这四个步骤重复在所有的服务器上搞一遍,那么基本安装配置就好了,接下来配置Nginx

  • 访问接口配置

    我使用nginx来配置对外提供的监控访问接口,我选择一台测试服务器,安全要求较低的服务器作为了跳板监控机。Nginx安装此处不细说,介绍一下我配置的内容:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    server {
    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上搜索解决方案,你遇到的问题别人早就遇到过了,而且已经解决了。

分享到 评论