cacti收集到的数据放在哪个表里面?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cacti收集到的数据放在哪个表里面?相关的知识,希望对你有一定的参考价值。

我想明白Cacti通过net-snmp和被监控服务器的net-snmp建立通讯到传输数据后,Cacti服务器把收集到的数据放在哪里了?如果是放在mysql,那么是那个表?假如我想知道60.10.2.22这台机的传过来的信息,怎么查。请帮忙解答一下

snmp抓到数据不是存储在mysql中,而是存在rrdtool生成的rrd文件中(在cacti根目录的rrd文件夹下)。 参考技术A 为什么不看cacti的图呢,cacti在mysql里的表太多了,而且每个主机拉过来的数据是放在很多表里的,直接看mysql很麻烦,实在要看mysql,装个phpmyadmin看起来方便点。

你要看哪个主机的数据,就在cacti页面,在左边有个 Management---Data Sources 里看。

Cacti安装与配置简介

cacti是一款使用PHP语言开的发性能与流量检测软件,检测对象可以是Linux、Windows服务器,也可以是路由交换机等网络设备,主要基于SNMP(simple、Network、Management、Protocol,简单网络管理协议)来搜集CPU占用、内存使用、运行进程、网卡流量等数据

cacti的工作流程:

步骤一,snmp协议收集远程服务器的数据

步骤二,将snmp收集的数据内容保存到rrd数据库中

步骤三,若用户查看某台设备上的流量或其它状态信息

步骤四,在mysql数据库中查找该设备对应的rra数据库文件的名称

步骤五,通过rrdtool命令进行绘图即可

一、安装

1.构建cacti监控平台时要先进行LAMP架构
测试直接用yum一键安装、在生产环境中最好使用手工编译安装

yum -y install httpd
yum -y install mariadb mariadb-server
yum -y install php php-mysql

#编写php首页进行测试机
cd /var/www/html/
vim index.php
<?php
phpinfo();
?>

#关闭防火墙、SELinux
systemctl stop firewalld
setenforce 0

#启动服务
# systemctl start mariadb
# systemctl status mariadb
# systemctl enable mariadb

# systemctl status httpd 

测试效果:

技术图片

2.安装工具包,snmp协议,rrdtool

yum -y install zlib freetype libjpeg fontconfig gd libxml2 php-gd
yum -y install net-snmp net-snmp-utils
yum -y install rrdtool rrdtool-devel

3.安装cacti

#用wget下载最新的源码包
wget https://www.cacti.net/downloads/cacti-1.1.38.tar.gz

#解压到/var/www/html底下然后用mv重命名为cacti
tar zxvf cacti-1.1.38.tar.gz -C /var/www/html/
mv /var/www/html/cacti-1.1.38/ /var/www/html/cacti

#创建cacti管理用户
useradd -M -s /sbin/nologin cacti

#修改cacti属主和数组
chown -R cacti.cacti /var/www/html/cacti/

#修改cacti底下include底下config.php文件
vim /var/www/html/cacti/include/config.php
$database_type = "mysql";
$database_default = "cacti";        #修改数据库名称
$database_hostname = "localhost";
$database_username = "cacti";       #修改授权用户
$database_password = "cacti123";      #修改授权密码
$database_port = "3306";
$database_ssl = false;

4.创建数据库赋授予权限

# mysql -uroot -p
mysql> create database cacti default character set utf8;
Query OK, 1 row affected, 1 warning (0.63 sec)

mysql> grant all privileges on cacti.* to ‘cacti‘@‘localhost‘ identified by ‘cacti123‘;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘identified by ‘cacti123‘‘ at line 1  
#这个报错是因为在mysql8.0中,创建用户和授权不能一并执行。

mysql8.0中必须分开,先创建用户、再给用户赋值

mysql> create user ‘cacti‘@‘localhost‘ identified by ‘cacti123‘;
Query OK, 0 rows affected (0.09 sec)
mysql> grant all privileges on cacti.* to ‘cacti‘@‘localhost‘;
Query OK, 0 rows affected (0.09 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.02 sec)

PS:如果出现以下错误:

mysql> create user ‘cacti‘@‘localhost‘ identified by ‘cacti123‘;
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

#这个报错是因为自定义密码过于简单

对于自定义密码过于简单的,使用以下方法解决:

mysql> show variables like ‘validate_password%‘;

技术图片

mysql> set global validate_password.policy=LOW; 
Query OK, 0 rows affected (0.00 sec)

技术图片
如果不介意的话就不用修改了,按照通用的来讲,设置为 6 位的密码,设置 validate_password_length 的全局参数为 6 即可

mysql> set global validate_password.length=6;
Query OK, 0 rows affected (0.00 sec)

技术图片

5.导入cacti数据库
一、导出数据库
用mysqldump命令(注意mysql的安装路径,即此命令的路径):
1、导出数据和表结构:
mysqldump -u用户名 -p密码 数据库名 > 数据库名.sql
#/usr/local/mysql/bin/ mysqldump -uroot -p abc > abc.sql
2、只导出表结构
mysqldump -u用户名 -p密码 -d 数据库名 > 数据库名.sql
#/usr/local/mysql/bin/ mysqldump -uroot -p -d abc > abc.sql
注:/usr/local/mysql/bin/ ---> mysql的data目录

二、导入数据库
1、首先建空数据库
mysql>create database abc;
2、导入数据库
方法一:
(1)选择数据库
mysql>use abc;
(2)设置数据库编码
mysql>set names utf8;
(3)导入数据(注意sql文件的路径)
mysql>source /home/abc/abc.sql;
方法二:
mysql -h 主机地址(本机localhost) -u 用户名(root) -p 数据库名 < 要导入的数据文件
#mysql -uabc_f -p abc < abc.sql

#cd /var/www/html/cacti
# mysql -u cacti -p
mysql> use cacti;
mysql> source /var/www/html/cacti/cacti.sql;
Query OK, 0 rows affected (0.03 sec)
Query OK, 1 row affected (0.01 sec)

6.修改snmp协议的配置文件,开启snmp协议

在本机模拟作为被控端

vim /etc/snmp/snmpd.conf

set nu

 41 com2sec notConfigUser  192.168.42.128       public     #192.168.42.128表示监控主机,public表示监控项目,可以任意取。
 62 access  notConfigGroup ""      any       noauth    exact  all none none
 85 view all    included  .1                               80 #去掉前面的#号

 # systemctl start snmpd
 # systemctl enable snmpd

7.进入安装页面http://192.168.42.128/cacti

技术图片

技术图片
技术图片

1、解决PHP拓展模块

1:

安装ldap
yum install php-ldap
打开php.ini配置文件找到ldap那个区域模块添加
extension=ldap.so

2:

安装mbstring拓展模块
yum install php-mbstring
打开php.ini配置在配置文件最后一行添加
extension=mbstring.so

3:

安装posix模块
yum -y install php-process
查看验证是否安装成功
php -m|grep posix
posix
显示红色字体posix就表示安装成功

php -m|grep openssl

2.解决数据库时间问题

#进入数据库授权
GRANT SELECT ON mysql.time_zone_name TO cacti@localhost IDENTIFIED BY ‘cacti123‘;
#再把以下命令重新授权一下
grant all on cacti.* to cacti@localhost identified by ‘cacti123‘;
#刷新
flush privileges;

#又会出现下面报错
ERROR: Your MySQL TimeZone database is not populated. Please populate this database before proceeding.
#解决办法
mysql_tzinfo_to_sql /usr/share/zoneinfo/Asia/Shanghai Shanghai | mysql -u root -p mysql

#重启数据库
systemctl restart mariadb.service

#重启httpd服务
# systemctl restart httpd 

3、解决PHPTimezone Support

#打开php.ini配置文件找到date.timezone原本是注释状态需要去掉前面的;分号然后在=等于后面空格加上Asia/Chongqing
date.timezone = Asia/Chongqing
#重启httpd服务

技术图片
技术图片
默认账密admin/admin,登陆进去后会提示当前密码不安全重新设置密码,密码要求符合复杂性要求:大写字母加数字加特殊符号。至此,安装完成。
技术图片

二、Cacti的使用

Cacti的常用服务器的画图大部分都是使用模板的形式做的,而Cacti安装好之后本身自带了一部分模板,这些模板虽然可用,但是支持的项目太少,于是我们要寻求更多的模板以及更优化的内容。
Cacti的官方的模板库:http://docs.cacti.net/templates

1:cacti模板的一般加载方法:

一个Cacti的模板一般有两部分组成。一部分是xml模板文件,另一部分是xml的数据收集文件,虽然这两种文件都是xml格式的,但是你可以很显而易见的就能分出它们的不同。因为它们的文件大小一点都不相似。
举个简单的例子:
技术图片

这个是一个windows的监控模板,我们可以简单的根据文件的大小来看。

  • 大小大于10KB的,那就是xml模板文件。
  • 大小小于10KB的,那就是xml数据收集文件。
    Xml模板文件是要在cacti的Web页面的Console选项卡内Import Templates项进行添加:
    技术图片
    而xml数据收集文件,则是要放在Linux上Cacti的安装目录cacti/resource/snmp_queries中:
    技术图片

    只要将两种类型的xml正确的导入/放入到应有的位置,那么模板就添加成功了。

2:如何在Cacti上添加一个新主机并监控相关的内容:
(以添加Linux主机为例)

1.创建画图

a. 在Cacti的Web页面Console->Import Templates导入响应的xml模板文件。
b. 在Linux上cacti/resource/snmp_queries中放入模板相关的xml数据收集文件。并确保属主和属组均为cacti。
c. 点击Console->Devices,打开设备管理页面。
d. 点击右上角的add,添加一个新的机器
技术图片
e. 当主机的信息填好之后,点击Create
f. 此时你的页面左上角应该显示:Save Successful,并且已经显示出了主机信息和SNMP信息,如果SNMP信息显示 SNMP error,请查看最后的问题综述。
g. 这时我们就可以添加相应的监控项了,在页面最下方的Associated Graph Templates中添加图形模板,在Associated Data Queries中添加数据模板。
技术图片
h. 添加好相应的模板之后点击Save。此时左上角会出现Save Successful.
i. 点击右上角的Create Graphs for this Host(为这个主机增加监控图形),来为刚才通过模板所获得到的数据进行画图。
j. 选中需要画图的项,其中依然分为两部分:
通过Graph Templates中的内容都需要选中,而Data Query获取的内容比较详细,所以可以按需选择。
k. 选择好需要画图的项目后,点击右下角的Create,左上角会出现被创建出来的画图项。

2.在Graphs界面显示新添加主机。

a. 在Cacti Web界面Graph Trees中,选择相应的列(或者系统默认的Default Tree)。
b. 进去Tree之后,点击右上角的Add,添加一个新的显示项。
c. 在Tree Item Type中选择Host,然后在下面的Host中选择我们刚才创建的主机。点击Create。
d. 此时,再进入Graphs界面,就可以看到在Default Tree下加入了我们新创建的主机。

以上是关于cacti收集到的数据放在哪个表里面?的主要内容,如果未能解决你的问题,请参考以下文章

cacti

数据结构(背包队列和栈)

数据来源标记,让数据分析更容易

网络服务器监控

CACTI采集不到服务器的数据会都有哪些原因

Cacti安装与配置简介