简介

在企业网络运维过程中,管理员必须时刻关注服务器的运行状态,如CPU、内存、磁盘空间使用情况等。为了能够及时的发现问题,尽量减少故障的发生。当网络中的设备,服务器等数量较多时,可以部署一套监控系统来实时跟踪服务器,我们通常会借助一些软件来实现

今天我们就以Cacti套件为例,介绍服务器集中监测体系的构建和使用

一、Cacti基本监测体系概述

Cacti是一款使用PHP语言开发的性能与流量监测工具,监测的对象可以使linux或windows服务器也可以是路由交换等网络设备,主要是基于SNMP(Simple Network Management Protocol 简单网络管理协议)来搜集CPU、占用、内存使用、运行进程数以及磁盘使用空间、网卡流量等各种数据。说白了就是监控服务器状态。

实际上Cacti本身只是一个Web界面的管理套件,通过调用Net-SNMP工具来采集检测数据 并结合RRDtool(Round Robin Database tool 轮询数据库工具)记录数据并绘制图片。如图1所示

图1

Cacti提供了优秀的整合和协调能力,充分利用LAMP技术平台、SNMP协议工具以及RRDtool数据引擎、不仅配置简单、直观、而且支持插件和数据模板,使用时非常整洁,便于扩展。

实际上Cacti可以从逻辑上分为三个部分、第一部分:被检测的对象,也就是客户端。第二部分:检测平台,也就是服务器端。第三部分:管理平台。Cacti采用了两种结构实现功能,一种是C/S结构主要是实现服务器到客户端监控另外一种就是B/S主要完成对Cacti平台的管理。从图1我们可以看出,管理端是在Web上对Cacti进行管理。

简单的整理一下Cacti的工作过程。

首先通过LAMP平台部署Cacti监控工具,之后通过客户端的web登录Cacti进行多其他客户端的设置,可以从图1看到Cacti采集数据时必须要使用SNMP协议来连接客户端进而能够采集数据吗,也就是说客户端必须支持SNMP协议。监控之后通过RRDtool来生成图表,其实这个图表是静态的,经过频繁的数据采集,我们也可以认为是动态的,也就是说Cacti是基于某段时间的监控。

二、服务器配置(控制端——client)

实验拓扑

主机

操作系统

IP地址

主要软件

centos1

CentOS 7 x86_64

192.168.92.130

Cacti-0.8.8b.tar.gz

Rrdtool-1.4.8.tar.gz

centos2

CentOS 7 x86_64

192.168.1.132

Mysql.5.5.tar.gz

构建Cacti集中监测平台的服务器端时,应提前安装好LAMP或者是LNMP平台,以及Net-SNMP和RRDtool等软件支持,然后下载Cacti源码包

1、安装Net-SNMP、RRDtool软件支持

(1)构建数据库及Web平台

前面已经学习过了如何部署源码包的LAMP或LNMP平台,为了方便演示这里直接以RPM包的LAMP平台为基础搭建Cacti。所需安装包如下所述。若还提示缺少一些包请在以YUM的方式进行安装即可。

# yum -y install httpd
# yum -y install mariadb mariadb-server
# yum -y install zlib freetype libjpeg fontconfig gd libxml2 libxml2-devel php-gd
 //安装PHP需要的库文件
# yum -y install php php-mysql
# systemctl start httpd.service
# chkconfig httpd on
# systemctl start mariadb
# chkconfig mariadb on
# setenforce 0
# iptables -I INPUT -p tcp --dport 80 -j ACCEPT
# iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
# mysqladmin -u root -p password '123.abc'
Enter password: (此处直接回车即可) 

服务启动之后我们可以编写测试页来验证LAMP平台的协同工作

# cat /var/www/html/test.php
<?php
$link=mysql_connect('localhost','root','123.abc');
if ($link) echo "mysql connect is ok!!";
mysql_close();
phpinfo();
?>

访问页面测试

经过测试LAMP平台已经能够完全的结合在一起并运行。

之后在客户端进行访问

(2)安装net-snmp-utils软件包

Cacti平台通过SNMP协议采集检测数据,这些工具由net-snmp-utils软件包提供,所需安装的软件包如下所示。

# yum -y install net-snmp net-snmp-utils

(3)安装rrdtool软件包

下载rrdtool软件到/root目录下

通过YUM确认并安装相关软件包 

# yum -y install cairo-devel zlib libxml2 libxml2-devel glib2 glib2-devel libpng libpng-devel freetype freetype-devel libart_lgpl pango pango-devel perl-CPAN

如果提示需要其他软件包,在另行安装。

安装rddtool源码包

# tar -xvf rrdtool-1.4.5.tar.gz
# cd rrdtool-1.4.5/
# ./configure --prefix=/usr/local && make && make install

2、部署Cacti、设置数据库连接

(1)部署Cacti源码包

下载到root目录下

将下载的源码包解压到root下并移动到网页文档根目录下改名为cacti

# wget http://www.cacti.net/downloads/cacti-0.8.8b.tar.gz
# tar -xvf cacti-0.8.8b.tar.gz
# mv cacti-0.8.8b /var/www/html/cacti

添加一个用户,用来读写检测数据的用户账户(如cacti),并调整期目录的属主,以便正常读取以及写入数据

# useradd cacti
# chown -R cacti:cacti /var/www/html/cacti/

(2)建立数据库,表结构

先创建一个用于cacti检测平台的数据库,并授权一个用户cactiuser然后使用cacti源码目录下的cacti.sql脚本,导入预设的各种数据表 

# mysql -uroot -p123.abc
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 6
Server version: 5.5.56-MariaDB MariaDB Server

Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> create database cacti default character set utf8;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> grant all on cacti.* to cactiuser@'localhost' identified by '123.abc';
Query OK, 0 rows affected (0.11 sec)

MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.16 sec)

导入

# cd /var/www/html/cacti/
# mysql -u cactiuser -p cacti < cacti.sql
Enter password:   //输入密码
[root@localhost cacti]# mysql -uroot -p123.abc
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 8
Server version: 5.5.56-MariaDB MariaDB Server

Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> use cacti;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
MariaDB [cacti]> show tables;    //验证是否导入表到cacti库中
+---------------------------+
| Tables_in_cacti           |
+---------------------------+
| cdef                      |
| cdef_items                |
| colors                    |
| data_input                |
| data_input_data           |
| data_input_fields         |
| data_local                |
| data_template             |
| data_template_data        |
| data_template_data_rra    |
| data_template_rrd         |
| graph_local               |
| graph_template_input      |
| graph_template_input_defs |
| graph_templates           |
| graph_templates_gprint    |
| graph_templates_graph     |
| graph_templates_item      |
| graph_tree                |
| graph_tree_items          |
| host                      |
| host_graph                |
| host_snmp_cache           |
| host_snmp_query           |
| host_template             |
| host_template_graph       |
| host_template_snmp_query  |
| plugin_config             |
| plugin_db_changes         |
| plugin_hooks              |
| plugin_realms             |
| poller                    |
| poller_command            |
| poller_item               |
| poller_output             |
| poller_reindex            |
| poller_time               |
| rra                       |
| rra_cf                    |
| settings                  |
| settings_graphs           |
| settings_tree             |
| snmp_query                |
| snmp_query_graph          |
| snmp_query_graph_rrd      |
| snmp_query_graph_rrd_sv   |
| snmp_query_graph_sv       |
| user_auth                 |
| user_auth_perms           |
| user_auth_realm           |
| user_log                  |
| version                   |
+---------------------------+
52 rows in set (0.00 sec) 

上诉操作中,创建Cacti库时,指定默认的编码字符集为utf8,便于中文支持,导入预设库时最好是使用cactiuser导入。最后验证一下是否导入。

3)调整cacti配置文件

cacti的配置文件位于源码目录下的include/目录下,名称为config.php,要使Cacti系统能够正常访问并使用数据库,必须修改config.php文件,却保数据库连接参数正确。

# vim include/config.php
$database_type = "mysql";			 //指定连接的类型
$database_default = "cacti";			 //连接的库
$database_hostname = "localhost";        //登录源
$database_username = "cactiuser";        //用户名
$database_password = "123.abc";         //用户密码
$database_port = "3306";			//连接的端口
$database_ssl = false;				//不启用ssl
$url_path = "/";					//指定cacti的根目录,这个目录是cacti的文件目录下,我们后面还需要修改httpd的主配置文件。

  3、Cacti的初始化安装

(1)调整httpd配置

修改httpd的主配置文件,设置好网页文档根目录、自动索引页

# vim /etc/httpd/conf/httpd.conf

DocumentRoot "/var/www/html/cacti"
<Directory "/var/www/html/cacti">
    Options Indexes none
 	 AllowOverride None
	 Order allow,deny
    Allow from all
</Directory>
DirectoryIndex  index.php  index.html index.html.var
AddDefaultCharset UTF-8						

 重启服务

# systemctl restart httpd

(2)初始化Cacti系统

在游览器中访问Cacti服务器的Web服务,如http://192.168.1.1,除此访问时会自动跳转至安装指南界面如图3所示

以上就是安装界面,内容是一些欢迎信息,直接点击下一步继续

选择新的安装,点击Next继续

以上信息必须全部都为绿色,如果出现红色,请检查相关步骤。点击Finish完成安装

 

只要看到了这个登录界面,那么我们今天的Cacti就部署完成了,默认的用户名和密码都是admin,首次登录之后需要修改密码。个人建议先不要进行登录,先进行一下操作,之后在进行登录。

三、客户端的配置

无论是路由器、交换机、还是linux或windows服务器,只要正确支持SNMP协议,并允许Client服务器采集数据,就能够对其进行监测。下面仅介绍在linux服务器中启用SNMP支持并设置共同体名的简单方法

ps:共同体名,值的是一种验证机制,所有的client都必须使用同一个共同体名,就像我们之前学习的hsrp的组一样,只有组号相同才能是一个组的,这里也是如此,只有共同体名相同的时候,Cacti才能通过这个共同体名对client进行监控。

需要安装net-snmp、lm_sensors软件包,然后通过修改其配置文件/etc/snmp/snmpd.conf,并启动snmpd服务,并建立规则,默认监听UDP的161号端口。

# yum -y install net-snmp lm_sensors
# vim /etc/snmp/snmpd.conf

com2sec notConfigUser  192.168.90.130       public
access  notConfigGroup ""      any       noauth    exact  all none none
view all    included  .1                               80

192.168.92.130 指的是Cacti的服务器IP(默认是default),表示允许其查询本机数据,public指的就是共同体名,用来识别及验证

all表示开放所有的SNMP查询权限(默认是 SystemView)

去掉注释之后,以便支持各种查询。

# systemctl start snmpd
# iptables -I INPUT -p udp --dport 161 -j ACCEPT

四、使用Cacti的Web控制台

配置好Cacti的主控端、被控端之后,就可以设置集中监测任务了。下面讲学习在Cacti系统的Web控制台的基本操作,以及如何通过添加插件来扩展集中监测功能。

在游览器中访问Cacti系统,如http://192.168.1.1,输入用户和密码,即可登录到Web控制台界面

 

未完待续。。。

  

 

  

centos7上安装cacti监控的更多相关文章

  1. 在centos7上安装Jenkins

    在centos7上安装Jenkins 安装 添加yum repos,然后安装 sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins ...

  2. 在 CentOS7 上安装 zookeeper-3.4.9 服务

    在 CentOS7 上安装 zookeeper-3.4.9 服务 1.创建 /usr/local/services/zookeeper 文件夹: mkdir -p /usr/local/service ...

  3. 在 CentOS7 上安装 MongoDB

    在 CentOS7 上安装 MongoDB 1 通过 SecureCRT 连接至 CentOS7 服务器: 2 进入到 /usr/local/ 目录: cd /usr/local 3 在当前目录下创建 ...

  4. 在 CentOS7 上安装 MySQL5.7

    在 CentOS7 上安装 MySQL5.7 1 通过 SecureCRT 连接到阿里云 CentOS7 服务器: 2 进入到目录 /usr/local/ 中: cd /usr/local/ 3 创建 ...

  5. 在 CentOS7 上安装 Tomcat9

    在 CentOS7 上安装 Tomcat9 1 通过 SecureCRT 连接到阿里云 CentOS7 服务器: 2 进入到目录 /usr/local/ 中: cd /usr/local/ 3 创建目 ...

  6. 在CentOS7上安装JDK1.8

    在CentOS7上安装JDK1.8 1 通过 SecureCRT 连接到阿里云 CentOS7 服务器: 2 进入到目录 /usr/local/ 中: cd /usr/local/ 3 创建目录 to ...

  7. 在Centos7上安装漏洞扫描软件Nessus

    本文摘要:简单叙述了在Centos7上安装Nessus扫描器的过程   Nessus 是目前全世界最多人使用的系统漏洞扫描与分析软件,Nessus的用户界面是基于Web界面来访问Nessus漏洞扫描器 ...

  8. 如何在centos7上安装源码包

    在我们使用linux的过程中,有很多程序是通过红帽官网给的系统中安装的,但是一般来说,系统更新的速度比较慢,如果这个时候我们又想用最新版的该怎么办呢?总不能一直等系统升级吧╮(╯﹏╰)╭所以,我们可以 ...

  9. centos7上安装0penStack

    centos7上安装0penStack author:headsen chen 2017-10-09  20:41:54 个人原创,欢迎转载,请注明作者,出去,否则依法追究责任 一,准备工作(配置ip ...

随机推荐

  1. install oracle 12c on redhat

    ---恢复内容开始--- 1.  确定VM的硬盘空间是否够  df- h, 硬盘空间free disk 15G 比较稳妥 2. 确定好网络,需要remote connect   ifconfig 3. ...

  2. Python中的logging模块【转】https://www.cnblogs.com/yelin/p/6600325.html

    [转]https://www.cnblogs.com/yelin/p/6600325.html 基本用法 下面的代码展示了logging最基本的用法. 1 # -*- coding: utf-8 -* ...

  3. 《深入理解JAVA虚拟机》----------第二章 JAVA内存区域与内存溢出异常,笔记(下)

    2. HotSpot虚拟机对象探秘 2.1 对象的创建 虚拟机遇到一条New指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已被加载.解析和初 ...

  4. sed 笔记

    sed是一个非交互式文本编辑器,他可以对文本文件和标准输入进行编辑,标准输入可以是来自键盘,文件重定向,字符串,变量甚至来自于管道的文本.sed适用于以下三种场合: 编辑相对交互式文本编辑器而言太大的 ...

  5. 测验2: Python基础语法(上) (第4周)

    快乐的数字 描述 编写一个算法来确定一个数字是否“快乐”. 快乐的数字按照如下方式确定:从一个正整数开始,用其每位数的平方之和取代该数,并重复这个过程,直到最后数字要么收敛等于1且一直等于1,要么将无 ...

  6. django mysql 数据库配置

    在settings.py中保存了数据库的连接配置信息,Django默认初始配置使用sqlite数据库. DATABASES = { 'default': { 'ENGINE': 'django.db. ...

  7. 556. Next Greater Element III下一个更大的数字

    [抄题]: Given a positive 32-bit integer n, you need to find the smallest 32-bit integer which has exac ...

  8. Linux驱动之异步OR同步,阻塞OR非阻塞概念介绍

    链接:https://www.zhihu.com/question/19732473/answer/20851256 1.同步与异步同步和异步关注的是消息通信机制 (synchronous commu ...

  9. 19. pt-query-digest

    慢查询参数 slow_query_log=1slow_query_log_file=/mysql3306/log/slow.log 记录的是查询语句,而非管理语句.除非启用 los_slow_admi ...

  10. SpringMvc在返回数据之前进行统一处理

    这里其实有多种解决方案 如果你不需要获取request对象 可以采用aop(环绕通知)的方式来统一修改 如果你需要获取request对象,那么就需要采用下面的方式 0自己定义一个注解,内容如下 @Ta ...