基于ubuntu的mrtg配置,实现监控多台服务器系统资源

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于ubuntu的mrtg配置,实现监控多台服务器系统资源相关的知识,希望对你有一定的参考价值。

文章是参考他人博客整合、改动得出!!


实验结果为监控两台虚拟机的cpu、内存、流量、nginx,简称server端,client端。(为了省事,只用两个,实际操作完成后,会发现数量上的增加很简单)


安装包 server端 mrtg snmp sysstat curl nginx  

     client端 snmp sysstat curl        

server端配置

编辑server端/etc/snmp/snmpd.conf (可以直接将原配置替换,记得备份原文件)

com2sec notConfigUser  localhost       public

group   notConfigGroup v1           notConfigUser

group   notConfigGroup v2c           notConfigUser

view    systemview    included   .1.3.6.1.2.1.1

view    systemview    included   .1.3.6.1.2.1.25.1.1

access  notConfigGroup ""      any       noauth    exact all none none

view all    included  .1      80

syslocation Unknown (edit /etc/snmp/snmpd.conf)

syscontact Root


shell脚本存放目录/home/mrtg (路径可选,和后边保持一致)

mrtg.ram

#!/bin/bash 

# run this script to check the mem usage. 

swapmem=`/usr/bin/free |grep Swap |awk ‘{print $3}‘`

usedmem=`/usr/bin/free |grep Mem |awk ‘{print $3}‘`

UPtime=`/usr/bin/uptime | awk ‘{print $3""$4""$5}‘`

echo $usedmem 

echo $swapmem 

echo $UPtime 

hostname


mtrg.cpu

#!/bin/bash 

cpuusr=`/usr/bin/sar -u 1 3 | grep Average | awk ‘{print $3}‘`

cpusys=`/usr/bin/sar -u 1 3 | grep Average | awk ‘{print $5}‘`

UPtime=`/usr/bin/uptime | awk ‘{print $3""$4""$5}‘`

echo $cpuusr 

echo $cpusys 

echo $UPtime 

hostname


nginx_status

curl http://localhost/nginx_status | grep Active | awk ‘{print $3 }‘  > /home/mrtg/ngx.active

curl http://localhost/nginx_status | grep Waiting | awk ‘{print $6 }‘ > /home/mrtg/ngx.waiting


mrtg.ngx

#!/usr/bin/perl -W

`/home/mrtg/nginx_status`;

$hostname=`hostname`;

$hostname=~s/\s+$//;

$nginx_active_conn=`tail /home/mrtg/ngx.active`;

$nginx_waiting_conn=`tail /home/mrtg/ngx.waiting`;  

$nginx_active_conn=~s/\n$//;

$nginx_waiting_conn=~s/\n$//;

$nginx_active_conn=~s/^\s+|\s+$//;

$nginx_waiting_conn=~s/^\s+|\s+$//;

$gettime=`uptime|awk ‘{print \$1" "\$3" "\$4}‘`;

$gettime=~s/\,|\n$//g;

print("$nginx_active_conn\n");

print("$nginx_waiting_conn\n");

print("$gettime\n");

print("$hostname\n");


在nginx中添加模块 (nginx配置目录中,/sites-enabled/default,包含在server中,否则会报错)

location ~ ^/nginx_status {

    stub_status on;

    access_log off;

  }

重启nginx


生成配置文件

cfgmaker [email protected] --output /root/mrtg.cfg


修改配置

WorkDir: /home/mrtg/mrtg (工作目录)

并向其添加内容

Target[cpu]: `/home/mrtg/mrtg.cpu`

MaxBytes[cpu]: 100

Options[cpu]: gauge, nopercent, growright

YLegend[cpu]: CPU loading (%)

ShortLegend[cpu]: %

LegendO[cpu]:   CPU us; 

LegendI[cpu]:   CPU sy; 

Title[cpu]: CPU Loading

PageTop[cpu]: <H1>CPU Loading</H1>


Target[ram]: `/home/mrtg/mrtg.ram`

#Unscaled[ram]: dwym 

MaxBytes[ram]:  1642472   #这里的数值为服务器内存的最大值,可通过free命令查看。

Title[ram]:Memory

ShortLegend[ram]: &

kmg[ram]:kB,MB

kilo[ram]:1024

YLegend[ram]:   Memory Usage :

Legend1[ram]:   Swap Memory :

Legend2[ram]:   Used Memory :

LegendI[ram]:   Swap Memory :

LegendO[ram]:   Used Memory :

Options[ram]: growright,gauge,nopercent

PageTop[ram]:<H1>Memory</H1>


Target[nginx_conn]: `/home/mrtg/mrtg.ngx`

Options[nginx_conn]: gauge,nopercent,growright

Directory[nginx_conn]: nginx_conn

MaxBytes[nginx_conn]: 8000

YLegend[nginx_conn]: nginx_conn

ShortLegend[nginx_conn]:

LegendI[nginx_conn]: Active connections:

LegendO[nginx_conn]: Waiting:

Title[nginx_conn]: Nginx

PageTop[nginx_conn]:<h1>nginx</h1>





接着配置client端

编辑/etc/snmp/snmpd.conf

将agentAddress udp:127.0.0.1:161注释掉

将#agentAddress udp:161,udp6:[::1]:161去掉注释

这样便可以实现snmp的远程监听。

但修改后服务器还是无法监测到CPU、内存、流量的数据,所以需要再做如下修改:

找到下面的内容

view   systemonly  included   .1.3.6.1.2.1.1

view   systemonly  included   .1.3.6.1.2.1.25.1

在下面加上一行

view   systemonly  included   .1   80

这样就允许监听所有设备。

完成所有修改后,重启snmp

service snmpd restart

本地测试SNMP是否监测各类指标的方法:运行如下命令

snmpwalk -v 2c -c public localhost  

如果有很多内容输出,代表成功。


然后在server端生成client的配置文件

建立client的目录 /home/mrtg1   (在server端执行)

将/home/mrtg内的文件拷至/home/mrtg1

cfgmaker [email protected] --output /root/mrtg1.cfg (192.168.51.236为client端ip)

同样将上边的添加内容加入配置文件,但会报错,提示有同样的名字,修改下即可,例如:

Target[cpu]: `/home/mrtg/mrtg.cpu`    → Target[cpu1]: `/home/mrtg1/mrtg.cpu`

建立client端的目录 /home/mrtg1

将/home/mrtg内的文件拷至/home/mrtg1


将配置文件合并

cat  mrtg.cfg mtrg1.cfg > mrtg.cfg

并移至/etc


分别在mrtg mrtg1中建立子文件夹mrtg

生成mrtg首页

indexmaker /etc/mrtg.cfg > /home/mrtg/mrtg/index.html


绘制图表

env LANG=C mrtg /etc/mrtg.cfg


配置cron计划执行任务,每分钟采集一次 /etc/crontab


*/1 * * * * env LANG=C /usr/bin/mrtg /etc/mrtg.cfg

重启cron服务


在nginx中添加模块

location ~ ^/mrtg {

        root /home/mrtg;

  }

重启nginx


访问http://serverIP/mrtg


以上是关于基于ubuntu的mrtg配置,实现监控多台服务器系统资源的主要内容,如果未能解决你的问题,请参考以下文章

MRTG FOR WINDOWS 安装指南

zabbix监控系统

在RedHa上安装MRTG监控网卡流量

企业监控利器nagios应用开篇

centos6.7上面MRTG的部署。

使用Flask结合python实现多台服务的内存监控