企业级高级监控系统-cacti

  1. 云栖社区>
  2. 博客>
  3. 正文

企业级高级监控系统-cacti

技术小阿哥 2017-11-27 14:23:00 浏览993
展开阅读全文

一、工作原理

管理服务器(nms)通过一种协议监控远程被监控主机状态,并将返回结果统计分析。并且可以通过设置阈值来通知管理员告警信息的软件系统,就称为监控系统。

常见的通信方式:

SNMP协议通信

command,命令方式

remote script(ssh)

二、常见工具

cacti

强大的绘图展示工具,它通过RRDtool来统计数据。它以时间轴为基准进行统计和展示。

nagios

监控系统状态、通知机制。

三、SNMP

1、版本介绍

snmp-v1版本:

nms通过snmp和被监控端进行通信,他们之间通过“社区(comminuty)“进行安全认证,这种认证是明文的,只需要在客户端设置comminuty为一个相同的字符串即可。

comminuty的工作方式有readonly(nms只能获取信息),read-write(NMS可以修改查询请求),trap(陷阱模式,被监控端可以主动发送告警信息)。

snmp-v2版本(snmpv2c)

区别不大,功能做了一些强化。

snmp-v3版本:

增强了认证机制,但是使用率上同样是v1版本。

2、centos服务器SNMP程序:

net-snmp(agent):被监控端程序

net-snmp-utils(nms):监控端程序

注意:如果nms端要启动trap工作模式,就需要安装net-snmp程序,并且启动snmptrapd服务。

[root@node6.dtedu.com /etc/puppetlabs/puppet]# yum install net-snmp net-snmp-utils


配置文件:

[root@node6.dtedu.com /etc/puppetlabs/puppet]# rpm -ql net-snmp

/etc/rc.d/init.d/snmpd

/etc/rc.d/init.d/snmptrapd

/etc/snmp

/etc/snmp/snmpd.conf agent配置文件

/etc/snmp/snmptrapd.conf

/etc/sysconfig/snmpd agent配置文件

/etc/sysconfig/snmptrapd trap配置文件


3、MIBS

SNMP的管理信息库。此数据库有些类似树状结构,依据被被监控对象分层细化标识名称(像域名结构),这种结构的使用,也有一个类似FQDN的名称,就是OID。

通常所有监控软件都会提供一个最基本的MIB库,就是MIB-II。

[root@node6.dtedu.com /etc/puppetlabs/puppet]# ls /usr/share/snmp/mibs/

AGENTX-MIB.txt                       IPV6-TC.txt                SNMP-FRAMEWORK-MIB.txt

BRIDGE-MIB.txt                       IPV6-UDP-MIB.txt           SNMP-MPD-MIB.txt

COROSYNC-MIB.txt                     KEEPALIVED-MIB.txt         SNMP-NOTIFICATION-MIB.txt

DISMAN-EVENT-MIB.txt                 LM-SENSORS-MIB.txt         SNMP-PROXY-MIB.txt

DISMAN-SCHEDULE-MIB.txt              MTA-MIB.txt                SNMP-TARGET-MIB.txt

DISMAN-SCRIPT-MIB.txt                NET-SNMP-AGENT-MIB.txt     SNMP-USER-BASED-SM-MIB.txt

EtherLike-MIB.txt                    NET-SNMP-EXAMPLES-MIB.txt  SNMP-USM-AES-MIB.txt

HCNUM-TC.txt                         NET-SNMP-EXTEND-MIB.txt    SNMP-USM-DH-OBJECTS-MIB.txt

HOST-RESOURCES-MIB.txt               NET-SNMP-MIB.txt           SNMPv2-CONF.txt

HOST-RESOURCES-TYPES.txt             NET-SNMP-PASS-MIB.txt      SNMPv2-MIB.txt

IANA-ADDRESS-FAMILY-NUMBERS-MIB.txt  NET-SNMP-TC.txt            SNMPv2-SMI.txt

IANAifType-MIB.txt                   NET-SNMP-VACM-MIB.txt      SNMPv2-TC.txt

IANA-LANGUAGE-MIB.txt                NETWORK-SERVICES-MIB.txt   SNMPv2-TM.txt

IANA-RTPROTO-MIB.txt                 NOTIFICATION-LOG-MIB.txt   SNMP-VIEW-BASED-ACM-MIB.txt

IF-INVERTED-STACK-MIB.txt            PCMK-MIB.txt               TCP-MIB.txt

IF-MIB.txt                           RFC1155-SMI.txt            TRANSPORT-ADDRESS-MIB.txt

INET-ADDRESS-MIB.txt                 RFC1213-MIB.txt            UCD-DEMO-MIB.txt

IP-FORWARD-MIB.txt                   RFC-1215.txt               UCD-DISKIO-MIB.txt

IP-MIB.txt                           RMON-MIB.txt               UCD-DLMOD-MIB.txt

IPV6-ICMP-MIB.txt                    SCTP-MIB.txt               UCD-IPFWACC-MIB.txt

IPV6-MIB.txt                         SMUX-MIB.txt               UCD-SNMP-MIB.txt

IPV6-TCP-MIB.txt                     SNMP-COMMUNITY-MIB.txt     UDP-MIB.txt


MIB下面的常用监控主机选项:

host:OID:1.3.6.1.2.1.25

hrsystem:主机系统状态信息,1

hrstorage:主机存储信息,2

hrdevice:主机设备信息,3

hrswrun:4,

hrswrunperf:主机性能信息,5

hrswinstalled:主机已安装软件,6

[root@node6.dtedu.com /etc/puppetlabs/puppet]# snmpwalk -v 2c -c public localhost 1.3.6.1.2.1.25.1

HOST-RESOURCES-MIB::hrSystemUptime.0 = Timeticks: (33931409) 3 days, 22:15:14.09

HOST-RESOURCES-MIB::hrSystemUptime.0 = No more variables left in this MIB View (It is past the end of the MIB tree)

[root@node6.dtedu.com /etc/puppetlabs/puppet]# 


282953.tmp472969.tmp

805140.tmp

4、基本配置

被监控端监控端口:UDP161

监控端端口:UDP 162(仅在使用trap模式时使用)

SNMP的操作

get:获取OID信息

getnext:获取指定节点下的所有OID信息

getbulk:v2或v3版本用

set:

getresponse:获取响应报文

trap:

notification

inform:

report:

修改配置文件的安全属性,comminuty。

#com2sec notConfigUser  default       public


com2sec notConfigUser  127.0.0.1       mypublic

com2sec notConfigUser  10.40.0         mypublic


四、RRDtool

轮转数据库,用于收集并存储snmp被监控端信息。以rrd文件名结尾。需要编译安装rrdtool工具。

314202.tmp

实例:

每个5秒钟生成一个随机数,并查看每5秒的平均值,50秒的平均值。并存储一天的统计信息。

24h*60*60=86400,86400/5=17280,表示存储在rrd数据库中的分区个数。

命令格式:

rrdtool create filename [—start|-b start time] [—step|-s step] [—no-overwrite] [DS:] [RRA:CF:cf arguments]

五、CACTI

1、简介:

将rrdtool通过命令行方式实现的数据统计制图工具,通过简单的窗口方式实现的工具。

支持模板工具,简化管理及编写脚本工作。

运行lnmp的前提是需要lnmp平台,并且php需要启用 --enable-sockets。

2、模板类型

图形模板:通过数据模板制作图形文件。

数据模板:用来定义cacti服务器从被监控主机上获取的数据的保存格式。

主机模板

3、安装

安装教程使用的0.8.8a,适用于yum安装的mysql5.1,这里我就图省事了。

首先是解压缩cacti.0.8.8a软件包,并复制到/var/www/html/cacti目录下。

修改httpd.conf的配置文件及创建cacti数据库,及相关账户。(用1.1.7相同)

修改cacti的配置文件/var/www/html/cacti/include/conf.php文件,将mysql相关信息添加进去。

$database_type = "mysql";

$database_default = "cacti";

$database_hostname = "localhost";

$database_username = "cactiuser";

$database_password = "123123";

$database_port = "3306";

$database_ssl = false;

$url_path = "/“; 修改url访问路径


注意:poller.php脚本用于实现定期执行收集数据的工作的,但是他适用于单线程工作,如果是多线程工作方式需要使用spine进行替换。

为cacti制作周期性计划:

[root@node6.dtedu.com /var/www/html/cacti]# echo '*/5 * * * * /usr/bin/php /var/www/html/cacti/poller.php &>/dev/null' >/var/spool/cron/cactiuser


可以通过登录cactiuser来验证计划执行情况,这个时候会有错误的,也就是需要配置php.ini文件修改时区了。重启mysql、php-fpm、httpd服务。

date.timezone = Asia/Shanghai



以下适用于通过yum安装cacti,并且版本为1.1.7。要求mysql使用5.6及以上版本。步骤是yum安装lamp平台,修改httpd.conf配置文件创建虚机主机(关闭documentroot)。创建mysql数据库cacti,并导入cacti.sql文件。

 <virtualhost *:80>

        servername cacti.dtedu.com

        documentroot /var/www/html/cacti/

        <directory "/var/www/html/cacti/">

                options indexes

                allowoverride none

                 Order allow,deny

                 Allow from all

                 directoryindex index.php

                #require all granted

        </directory>

        errorlog "/var/log/cacti/error.log"

        customlog "/var/log/cacti/access.log" common

 </virtualhost>


addtype application/x-httpd-php .php

addtype application/x-httpd-php-source .phps

directoryindex inex.php


[root@node6.dtedu.com ~]# rpm -ql cacti |grep .sql

/usr/share/doc/cacti-1.1.7/cacti.sql

/usr/share/doc/cacti-1.1.7/docs/html/check-mysql-updating.html

/usr/share/doc/cacti-1.1.7/docs/html/unix-configure-mysql.html

/var/lib/cacti/cli/sqltable_to_php.php

/var/lib/cacti/scripts/sql.php

/var/lib/cacti/scripts/ss_sql.php

[root@node6.dtedu.com ~]# mysql cacti < /usr/share/doc/cacti-1.1.7/cacti.sql 

[root@node6.dtedu.com ~]# 


[root@node6.dtedu.com ~]# mysql -e " GRANT  all ON cacti.* TO cactiuser@localhost IDENTIFIED BY '123123' "

[root@node6.dtedu.com ~]# mysqladmin flush-privileges

[root@node6.dtedu.com ~]# mysql -u cactiuser 

ERROR 1045 (28000): Access denied for user 'cactiuser'@'localhost' (using password: NO)

[root@node6.dtedu.com ~]# mysql -u cactiuser -p

Enter password: 


[root@node6.dtedu.com ~]# vim /etc/cacti/db.php 


<?php


$database_type     = 'mysql';

$database_default  = 'cacti';

$database_hostname = 'localhost';

$database_username = 'cactiuser';

$database_password = '123123';

$database_port     = '3306';

$database_ssl      = false;

$url_path = '/‘; 表示直接通过”/“来访问,根据需要设置。


修改log 和rra目录的属主和属组改成cactiuser。

[root@node6.dtedu.com /var/www/html/cacti]# chown cactiuser:cactiuser  /var/www/html/cacti/{log,rra} -R



485352.tmp

修改device选项卡的SNMP选项,并保证/etc/snmp/snmpd.conf的comminuty和其相同。

14513.tmp

模板也可以通过cacti的官网论坛下载。

http://forums.cacti.net/viewforum.php?f=12&sid=ca55172419984bfeef1e79a0fb559b2f

established:0[root@node6.dtedu.com /var/www/html/cacti]# vim scripts/enstablished.sh


#!/bin/bash

#total localhost established

# $1:hostname or IP

# $2:community


SNMPNETSTAT=/usr/bin/snmpnetstat


established=`$SNMPNETSTAT -v 2c -c $2 -Can -Cp  tcp $1 |grep -i 'established' |wc -l`

echo -n "established:$established"




本文转自 blackstome 51CTO博客,原文链接:http://blog.51cto.com/137783/1968811,如需转载请自行联系原作者

网友评论

登录后评论
0/500
评论
技术小阿哥
+ 关注