Total Pageviews

Wednesday, 14 November 2012

Ubuntu 上使用 collected 和 Graphite 监控服务器

Graphite 只是一个数据绘图工具,安装 Graphite 完以后啥也不能干,需要其他工具喂它数据,所以具体的数据采集工作是由第三方工具完成,Graphite 的设计体现了 Unix 的思想:只做一件事,把事情做好。Graphite 支持的第三方工具很多,Bucky, collectd, Collectl, Charcoal, Diamond, Ganglia, Host sFlow, statsd, Tasseo 等等。这里 VPSee 选用 collected 来收集机器的各个性能参数,collected 安装在需要被监控的机器上。

安装 collected,创建一个 collected.d 目录便于存放稍后会遇到的插件配置文件 graphite.conf,并在 collectd.conf 包含这个目录 :

sudo apt-get install collected

sudo make /etc/collectd/collectd.d
sudo vi /etc/collectd/collectd.conf
...
Include      "/etc/collectd/collectd.d"

安装 git 并下载 collectd-carbon 插件:
sudo apt-get install git
sudo git clone https://github.com/indygreg/collectd-carbon.git /opt/collectd-plugins

修改插件的配置文件的 ModulePath 部分,指向 carbon_writer.py 文件所在目录,并且修改 LineReceiverHost 部分:

sudo vi /etc/collectd/collectd.d/graphite.conf

    Globals true

    # carbon_writer.py is at path /opt/collectd-plugins/carbon_writer.py
    ModulePath "/opt/collectd-plugins/"

    Import "carbon_writer"

        LineReceiverHost "monitor.vpsee.com"
        LineReceiverPort 2003
        DifferentiateCountersOverTime true
        LowercaseMetricNames true
        TypesDB "/usr/share/collectd/types.db"


修改好配置文件后重启服务:
sudo /etc/init.d/collectd restart

等着客户端的 collectd 收集数据发送给监控服务器的 carbon(监听端口为 2003),然后递交给 graphite 绘制图形.
-----------------------------------------------------------------

在 Ubuntu 12.04 上安装 Graphite 监控工具

Graphite 是监控工具里面的新秀,是一个(可运行在廉价硬件上的)企业级开源监控工具,用于采集服务器实时信息并进行统计,可采集 n 个服务器实时状态,如:用户请求消息,Memcached 命中率,RabbitMQ 消息服务器状态、操作系统负载、等等。Graphite 使用 Python 编写,采用 Django 框架,使用自己的简单文本协议通讯,服务平均每分钟有4800次更新操作,简单的文本协议和强大的绘图功能可以方便地扩展到任何需要监控的系统上。

和其他监控工具不同的是,Graphite 自己本身并不收集具体的数据,这些数据收集的具体工作通常由第三方工具或插件完成(如 Ganglia, collectd, statsd, Collectl 等,参考:使用 collected 和 Graphite 监控服务器)。所以上面说 “Graphite 是一个系统监控工具” 的说法不完全正确,更准确的说法应该是 “Graphite 是一个数据绘图工具”,得到数据后绘图,它并不关心具体数据,你甚至可以把每天收到的邮件数当作参数传给 Graphite 制成图,然后一段时间后就生产一个漂亮的邮件繁忙展示图,并可以看出趋势。

Graphite 做两件事:1、存储数据;2、按需绘图。

安装必要软件包:
sudo apt-get install apache2 libapache2-mod-wsgi python-django \
python-twisted python-cairo python-pip python-django-tagging


用 pip 安装 whisper (简单的存放和操作数据的库), carbon (监控数据的 Twisted 守护进程) 和 graphite-web (Django webapp):

sudo pip install whisper
sudo pip install carbon
sudo pip install graphite-web


初始化配置,直接用 example 文件里的默认配置就可以:

cd /opt/graphite/conf/

sudo cp carbon.conf.example carbon.conf
sudo cp storage-schemas.conf.example storage-schemas.conf
sudo cp graphite.wsgi.example graphite.wsgi

修改 apache 配置,增加一个 vhost 或者偷懒下载一个配置文件覆盖 default,覆盖后需要重新 reload 配置:

wget http://launchpad.net/graphite/0.9/0.9.9/+download/graphite-web-0.9.9.tar.gz
tar -zxvf graphite-web-0.9.9.tar.gz
cd graphite-web-0.9.9
sudo cp example-graphite-vhost.conf /etc/apache2/sites-available/default

sudo /etc/init.d/apache2 reload


初始化 graphite 需要的数据库,修改 storage 的权限,用拷贝的方式创建 local_settings.py 文件:

cd /opt/graphite/webapp/graphite/

sudo python manage.py syncdb
sudo chown -R www-data:www-data /opt/graphite/storage/
sudo cp local_settings.py.example local_settings.py

sudo /etc/init.d/apache2 restart

启动 carbon:
cd /opt/graphite/
sudo ./bin/carbon-cache.py start

浏览器访问 IP 地址后就可以看到 graphite web 界面.