【Linux集群教程】09 集群监控 - 监控简介和Cacti搭建

1 监控简介

1.1 重要性

Windows 的任务管理器工作:监控CPU,内存的占用率,查看相关的进程管理(杀死进程)

很多人说监控,是运维的眼睛,是稳定性建设中最重要的一环,监控也是运维工程师必须要会的(无监控不运维)。

监控的主要职责

1、全天监控

  • 1)负责系统的实时监控、告警确认、处理及跟进工作;
  • 2)记录监控日志及故障记录;

2、故障的分析、判断及通知

  • 1)及时发现各种网络异常、故障及告警,可以进行故障的初步判断及分析;
  • 2)及时将问题反馈到技术负责人处理,并跟踪问题解决过程,形成闭环记录。

3、处理相关通知及报告

  • 故障发生前,通过监控的看图巡检,发现隐患;故障发生时,通过实时的告警,快速发现问题,定位问题所在;故障发生后,使用过去的历史数据图表,进行事后复盘,避免下次发生。

监控很重要,是必不可少的,运维最重要的就是监控和备份

宕机损失案例:美国呼叫中心 24000 美金/小时


需要数据

img

1.2 常用监控平台

1.2.1 Cacti

img

Cacti是 RRDtool 的前端应用程序(也可以基于命令行就是绘图的工具),RRDtool是一种用于存储实时变化数据的开源数据库工具,其使用SNMP作为其默认收集算法,但如果你喜欢本地Perl的PHP脚本,那么你也可以使用它们。Cacti 是一款开源的基于Web的网络监控和专为数据记录而设计的图形化工具。它可以用于实时显示网络数据,如CPU负载或带宽利用率。

官网:http://www.cacti.net/

软件设计目标: 流量与性能监测为主

数据展示平台: B/S

数据收集方式: SNMP(Simple Network Management Protocol,简单网络管理协议,监控最主流的协议)

1.2.2 Nagios

img

Nagios 是一款用于监控IT基础架构和查看当前状态、历史日志和基本报告的开源软件工具。 Nagios 用户可以监控系统指标,网络协议,应用程序,服务器,网络基础架构和接收故障警报。Nagios提供三种类型的网络管理工具,Nagios XL,Nagios日志服务器和Nagios网络分析器。其中 Nagios XL 最适合网络监控(尽管其他两种也提供网络监控服务)。

根据不同业务故障级别发出告警信息(邮件、微信、短信、语音报警、飞信、MSN)给管理员,当故障恢复时也会发出恢复消息给管理员。
Nagios服务端可以在Unix及类Unix系统上运行,目前无法运行在windows。Windows可以作为被监控的主机,但是无法作为监控服务器。

官网:http://www.nagios.org/

软件设计目标: 服务与性能监测为主

数据展示平台: B/S

数据收集方式: C/S(预定义/自定义脚本)

Nagios 的监控指标:OK(正常状态),WARNING(警告级别),CRITICAL(严重警告),UNKNOW(未知),PENGING(等待状态)

1.2.3 Zabbix

img

Zabbix 作为企业级的网络监控工具,通过从服务器,虚拟机和网络设备收集的数据提供实时监控,自动发现,映射和可扩展等功能。Zabbix的企业级监控软件为用户提供内置的Java应用服务器监控,硬件监控,VMware监控和CPU,内存,网络,磁盘空间性能监控。

无限扩展:从监控智能家居到多租户企业环境,Zabbix可扩展到任何基础设施

分布式监控:从中央Web UI部署和扩展分布式Zabbix基础架构,并在所有组件之间提供原生加密支持

安全可靠:将敏感信息存储在外部vault中,以确保其安全

高可用:使用Zabbix高可用性解决方案确保Zabbix基础架构7x24全天候正常运行并消除数据丢失的风险

足够灵活:Zabbix提供了许多不同的方法来收集数据、转换数据、分析数据并将其可视化,监控任何你想要的东西

合作伙伴支持:Zabbix可为全球客户提供企业级监控和支持,目前合作网络包含全球250多家合作伙伴和多家外部供应商

官网:http://www.zabbix.com/

软件设计目标: 全功能监控软件

数据展示平台: B/S

数据收集方式: C/S(官方客户端)

1.2.4 Prometheus

img

Prometheus是一个开源的系统监控和警报工具包,最初由SoundCloud开发的,社区活跃,2016年加入了云原生计算基金会成为继Kubernetes之后的第二个托管项目;普罗米修斯以时间序列数据的形式收集并存储度量值;大部分模块由Go语言编写的。

Prometheus 特性:

  • 多维数据模型,时间序列数据由指标名称和键/值对标识。
  • PromQL灵活的查询语言。
  • 不依赖于分布式存储,单个节点自治。
  • 时间序列收集通过拉模型基于HTTP。
  • 基于网关实现采集监控指标数据的推送。
  • 目标通过服务发现或静态配置。
  • 多种模式的图形化和仪表板支持。
  • 支持分层和水平联合。

官网:https://prometheus.io/

适合监控docker容器。因为kubernetes(俗称k8s)的流行带动了 prometheus的发展。

2 Cacti 监控服务器

2.1 组件组成

2.1.1 SNMP

img

(简单网络管理协议)用于收集设备内部发生的数据,如负载、磁盘状态、带宽之类

简单网络管理协议(Simple Network Management Protocol–SNMP)的原来名字叫做简单网关监控协议(Simple Gateway Monitoring Protocol-SGMP)。最早是IETF的研究小组提出来的,在SGMP协议的基础之上,加上新的管理信息结构和管理信息库,让SGMP更加全面。简单性和扩展性是SNMP所体现出来的,其中包含数据库类型(Database Schema),一个应用层协议(Application Layer Protocol)和一些资料文件。SNMP管理协议不光能够加强网络管理系统的效能,而且还可以用来对网络中的资源进行管理和实时监控。

SNMP 发展至今为止,可以监控众多的数据指标,例如ICMP,UDP,TCP,服务器性能,内存,磁盘等标准化的指标。SNMP 中会有使用到 OID(身份认证标识),它对信息的一个项目是一个独特的标识符,SNMP协议将设备的各种参数按树形结构进行分组,从树的根部开始,每一个层级节点会有一个编码,将这些层级编码以 “.” 作为分隔符,将其拼接起来所形成的一串编码就叫OID,通过OID可以对该OID表示的参数进行操作,SNMP监控的项目就是一个个的OID。

SNMP 常见的版本:

  • V1 简单 高效 不支持加密以及身份认证
  • V2 身份认证
  • V3 加密

SNMP 是 Cacti 用于收集监控指标的。

img

OID定位:Root用"."表示,

.1 即iso(1)→.1.3即org(3)→.1.3.6即dod(6)→.1.3.6.1即internet(1)→.1.3.6.1.2即mgmt(2)→.1.3.6.1.2.1即mid(1)→.1.3.6.1.2.1.6即TCP(6)。SNMP 就是找到TCP的性能指标。

2.1.2 RRDtool

img

官方定义: RRDtool 是开源行业标准,高性能的时间序列数据记录和绘图系统。RRDtool 可以很容易 地集成到 shell 脚本、perl、python、ruby、lua 或 tcl 应用程序中。RRDtools 是由 C 语言编写的,效率非常之高,性能非常之强悍。缺点就是由于RRDtool 过于灵活,导致RRDtool 使用起来过于复杂。

RRDtool (Round Robin Database Tool)就是一个强大的绘图的引擎,很多工具例如MRTG都可以调用rrdtool绘图。

RRDtool是由Tobias Oetiker 编写并由全球各地的许多人贡献的工具。本篇文档的作者是Alex van den Bogaerdt 主要是帮助你理解RRDtool是什么,它能够帮助你做些什么。 RRDtool的文档对于有些人来说过于技术化。

你可以一直往下走下去。RRDtool处理RRD数据库。它向RRD数据库存储数据、从RRD数据库中提取数据。

RRDtool 是 Cacti 中用于绘制图表的。

2.1.3 Apache

Apache(音译为阿帕奇)是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩充,将Perl / Python解释器编译到服务器中。

Apache 是 Cacti 的展示Web页面

2.1.4 Cacti 工作架构

C/S 模式:采集检测数据(由 SNMP 协议完成)

B/S 模式:管理检测数据,负责展示(由RRDtool绘制图表以后,在Apache将数据展示出来)

img

Cacti的工作过程

首先通过LAMP平台部署Cacti监控工具,之后通过客户端的web登录Cacti进行对其他客户端的设置,可以从下图看到Cacti采集数据时必须要使用SNMP协议来连接客户端进而能够采集数据,也就是说客户端必须支持SNMP协议,监控之后通过RRDtool来生成图表。

小总结:Apache需要构建比较复杂的网页的话,就需要PHP语言,PHP语言会插入和读取数据库的相关配置以及一些模板信息,RRDtool将SNMP收集到的数据绘制成图表,图表会被Apache分享给用户查看。

2.2 Cacti 监控组件安装配置

#两台服务器

10.10.10.11 Cacti 服务器端

10.10.10.12 客户端(被监控端)

#都需要将防火墙和SElinux功能关闭

配置本地 yum 源环境

(CentOS 6 系统和 CentOS 7.9.2009 系统),我使用的CentOS 7.9.2009系统,CentOS 6的系统也有展示。

其中CentOS 7的步骤会有些凌乱,需要仔细操作执行。

2.2.1 安装环境(10.10.10.11)

扩展:选择什么样的软件包是要考虑我们的目的,源码包经过测试会比RPM包提升20%的并发量。

但是在监控团队,可以使用RPM包进行部署即可,并发量不是特别大。

mount -t iso9660 /dev/cdrom /mnt/cdrom 
#挂载本地yum光盘
yum install -y httpd mysql mysql-server mariadb-server mysql-devel \
	libxml2-devel mysql-connector-odbc perl-DBD-MySQL unixODBC \
	php php-mysql php-snmp php-xml php-ldap php-gd php-pdo php-mbstring php-posix

#CentOS 6系统启动服务
service httpd start && chkconfig httpd on
#启动 Apache 
service mysqld start && chkconfig mysqld on
#启动 MySQL(使用CentOS6 YUM光盘默认的数据库是mysql)
service snmpd start && chkconfig snmpd on
#启动SNMP服务

#安装基础环境 LAMP 
mysqladmin -uroot password root
#设置mysql密码
yum install -y net-snmp net-snmp-utils net-snmp-libs lm_sensors 
yum install –y net-snmp net-snmp-libs net-snmp-utils net-snmp-devel net-snmp-perl
#安装SNMP、主板信息监控 所需软件包

#查看SNMP信息
$ snmpwalk -V
NET-SNMP version: 5.7.2
#查看是否由抓取一些指标
$ snmpwalk -v 2c -c public 10.10.10.11 tcp    #显示没有指标信息
$ snmpwalk -v 2c -c public 10.10.10.11 system #显示有指标信息
#需要修改配置文件
$ vim /etc/snmp/snmpd.conf 
#定义共同体名称
com2sec notConfigUser  default       public

#支持的SNMP版本
group   notConfigGroup v1           notConfigUser
group   notConfigGroup v2c           notConfigUser

#定义了视图
#       name           incl/excl     subtree         mask(optional)
view    systemview    included   .1.3.6.1.2.1.1
view    systemview    included   .1.3.6.1.2.1.25.1.1
#可以根据需求自行添加

#访问控制功能
#       group          context sec.model sec.level prefix read   write  notif
access  notConfigGroup ""      any       noauth    exact  all none none
#将 systemview 改为 all

#将 .1 isos 下的视图全部进行收集
##           incl/excl subtree                          mask
view all    included  .1                               80
#将 view all 的行取消注释

#重启SNMP服务
$ systemctl restart snmpd 
#再次收集TCP的指标
$ snmpwalk -v 2c -c public 10.10.10.11 tcp
$ snmpwalk -v 2c -c public 10.10.10.11 udp
#以上均有数据即可

###################################################################################################

#数据库可以正常登录即可
$ mysql -uroot -proot

img

img

2.2.2 安装RRDtool(10.10.10.11)

所需软件百度网盘
链接:https://pan.baidu.com/s/1wfgE3ISFsBddoO2JuMdRiA
提取码:ton9

### CentOS 6操作
#上传cacti.iso
$ yum -y install lrzsz 
#方便把软件直接拖到xshell里面
$ mkdir /iso
$ mount -o loop cacti.iso /iso
$ cp -a /iso/* .
$ tar -zxf rrdtool-1.4.5.tar.gz && cd rrdtool-1.4.5 
#源码编译安装 RRDTOOL 
$ ./configure --prefix=/usr/local 

#需要先执行以上操作,没有问题就可以跳过下面的步骤
#如出错,按以下步骤解决,解决源码编译报错依赖
#第 1 步:编译安装,将库文件存放到库环境变量中,方便调用
$ cd /root && tar zxvf cgilib-0.5.tar.gz && cd cgilib-0.5 && make 
$ cp libcgi.a /usr/local/lib && cp cgi.h /usr/include 
#第 2 步:安装相应的依赖包
$ yum -y install libart_lgpl-devel pango-devel* cairo-devel*

#重新执行./configure
$ cd /root/rrdtool-1.4.5
$ ./configure --prefix=/usr/local 
$ make && make install 

2.2.3 部署Cacti,设置数据库连接(10.10.10.11)

2.2.3.1 部署源码包,并安装补丁文件
#CentOS 6的操作
mkdir -pv /root/cacti ; cd /root/cacti
#wget http://www.cacti.net/downloads/cacti-0.8.7g.tar.gz
tar -zxf cacti-0.8.7g.tar.gz 
#解压 Cacti 网站 
mv cacti-0.8.7g/ /var/www/html/cacti 
#拷贝至 Apache 默认路径

#为 Cacti 代码进行补丁更新(需要使用到百度网盘的资源)
cd /var/www/html/cacti 
#数据源补丁
patch -p1 -N < /root/cacti/data_source_deactivate.patch 
#图像列表补丁
patch -p1 -N < /root/cacti/graph_list_view.patch
#输出补丁
patch -p1 -N < /root/cacti/html_output.patch 
#LDAP域补丁
patch -p1 -N < /root/cacti/ldap_group_authenication.patch
#脚本服务补丁
patch -p1 -N < /root/cacti/script_server_command_line_parse.patch
#ping补丁
patch -p1 -N < /root/cacti/ping.patch
#poller池补丁
patch -p1 -N < /root/cacti/poller_interval.patch
2.2.3.2 添加检测数据的用户账户,更改权限,保证读写数据正常
#CentOS 6的操作
cd /var/www/html/cacti 
useradd runct 
#添加 runct 用户,用于 RRDTOOL 运行 
chown -R root.root ./
#图片目录,日志目录
chown -R runct.runct rra/ log/
2.2.3.3 授权数据库用户,导入初始化数据
#CentOS 6的操作
$ mysql -u root -proot 
#创建 cactidb 数据库 
mysql> create database cactidb default character set utf8; 
#把 cactiuser 用 户赋予 cactidb 库的所有权限
mysql> grant all on cactidb.* to 'cactiuser'@'localhost' identified by 'pwd@123';  
mysql> quit 
#cacti 数据库导入
mysql -uroot -p cactidb < cacti.sql 
2.2.3.4 修改 Cacti 配置文件
#CentOS 6的操作
#配置 cacti 页面连接数据库的认证信息
$ vim /var/www/html/cacti/include/config.php  
/* make sure these values refect your actual database/host/user/password */
$database_type = "mysql";
$database_default = "cactidb";
$database_hostname = "localhost";
$database_username = "cactiuser";
$database_password = "pwd@123";
$database_port = "3306";
2.2.3.5 部署Spine(CentOS 7操作)

Cacti默认轮询器cmd.php执行效率有点低,spine为C语言编写的组件,性能要好许多。

#CentOS 7系统安装及配置spine 和 crond(spine的版本要和cacti版本一致,这两个都下载使用1.2.21,一般没问题,一般也是相互同步的)

#最新版本的1.2.22 会出现 ssl 头文件的编译安装错误,可能需要在 openssl 方面做功夫(CentOS 7.9.2009)

#选择性操作

#下载软件包
wget https://www.cacti.net/downloads/spine/cacti-spine-1.2.21.tar.gz
tar zxvf cacti-spine-1.2.21.tar.gz
mv cacti-spine-1.2.21 /usr/local/spine
cd /usr/local/spine
#安装相关依赖包
yum install -y net-snmp-devel mysql-devel openssl-devel dos2unix autoconf automake \
    binutils libtool gcc gcc-c++ cpp glibc-headers kernel-headers glibc-devel help2man
sh bootstrap
#进行源码编译安装(需要有GCC的编译环境)
#需要注意数据库的版本,根据数据库的版本进行选择性安装
./configure
make && make install
chown root:root /usr/local/spine/bin/spine
chmod +s /usr/local/spine/bin/spine 

img

#编辑spine/conf 配置文件

cp /usr/local/spine/etc/spine.conf.dist /etc/spine.conf

vim  /etc/spine.conf     
#修改如下部分,我全部使用默认参数,所以以下内容没有改动
DB_Host       localhost
DB_Database   cacti
DB_User       cactiuser
DB_Pass       cactiuser
DB_Port       3306

/usr/local/spine/bin/spine  
#执行此命令,成功后显示如下
SPINE: Using spine config file [/etc/spine.conf]
Version 1.2.21 starting
Time: 0.5283 s, Threads: 1, Devices: 1

img

#配置creond(crond一般都是默认安装好的,如果没装,就yum install crontabs -y 安装一下)

yum install -y crontabs
#如果不配置此功能,图形界面全部会显示The Cacti Poller has not run yet;
#使用crontab命令添加任务;
crontab -e
#添加以下任务,我这里配置成每五分钟运行一次
*/5 * * * * /usr/bin/php /var/www/html/cacti/poller.php > /dev/null 2>&1
#设置crontab自启动,添加好crontab计划任务后,验证下crond服务是否已经启动,并设置开机自启;
systemctl status crond
systemctl enable crond
2.2.3.6 调整 Http 配置
#CentOS 6的操作
$ vim /etc/httpd/conf/httpd.conf 
#配置 Apache 对 cacti 的用户权限
Listen 80
DocumentRoot "/var/www/html/cacti" 
#默认网站路径
<Directory "/var/www/html/cacti">
	options None 
	AllowOverride None 
	Order allow,deny 
	Allow from al
</Directory>

DirectoryIndex index.php index.html  
#默认主页
AddDefaultCharset utf-8 
#默认字符集

$ service httpd restart

浏览器输入 10.10.10.11 访问,账户名:admin,密码:admin。

第一次登录需要重新修改admin密码。

img

2.2.4 客户端配置(10.10.10.12)

#CentOS 6的操作
$ mount -t iso9660 /dev/cdrom /mnt/cdrom
#挂载本地yum光盘
$ yum -y install net-snmp net-snmp-utils lm_sensors
#安装 SNMP、主板信息监控所需软件包 
$ vim /etc/snmp/snmpd.conf
#41服务器地址 默认为 default 共同体名称 默认为 public 
#62开放所有的 SNMP 查询权限 all 默认为 SystemView 
#       group          context sec.model sec.level prefix read   write  notif
access  notConfigGroup ""      any       noauth    exact  all none none

view all    included  .1                               80

#85支持各种查询与访问 取消注释符号
$ service snmpd start && chkconfig snmpd on

#CentOS 7开启服务
$ /bin/systemctl start snmpd.service && /bin/systemctl enable snmpd.service

2.2.5 收集数据(10.10.10.11)

###用于RRDTool定时采集数据
#CentOS 6的操作
$ su - runct
$ snmpwalk -v 2c -c public 10.10.10.12 tcp
$ php /var/www/html/cacti/poller.php 
#生成对应的监控图表
$ crontab -e
*/5 * * * * /usr/bin/php /var/www/html/cacti/poller.php &>/dev/null 
#配置 RRDTOOL 的轮训任务 
#CentOS 6执行操作
$ service crond start
#CentOS 7执行操作
$ systemctl start crond
==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===
Authentication is required to manage system services or units.
Authenticating as: zzw
Password:
==== AUTHENTICATION COMPLETE ===

$ exit

img

2.3 Cacti 插件添加

如果管理员需要为 Cacti 附加一个复杂的功能的话,就需要使用到 Cacti 的插件功能。插件是需要插件管理器进行管理的。

#CentOS 6操作
$ mkdir /iso ; mkdir ~/cacti-plugin
$ mount -o loop cacti.iso /iso
$ cp /iso/cacti-plugin/* ~/cacti-plugin ; cd ~/cacti-plugin
$ tar -zxvf cacti-plugin-0.8.7g-PA-v2.8.tar.gz
$ cd cacti-plugin-arch/
#导入数据库信息
$ mysql -uroot -p cacti < pa.sql

#将补丁进行添加
$ cd /var/www/html/cacti/
$ patch -p1 -N < /root/cacti-plugin/cacti-plugin-arch/cacti-plugin-0.8.7g-PA-v2.8.diff

#CentOS 7自带有插件管理
Cacti 1.2.21版本

img

img

插件管理器就部署完成了。然后就是要进行部署插件了。

Cacti 全部插件下载地址:[ https://blog.51cto.com/wangsuisheng/827715 ]

$ cd /root/cacti-plugin
$ ls -l
total 544
-r-xr-xr-x 1 root root  207069 Sep  6 22:49 cacti-plugin-0.8.7g-PA-v2.8.tar.gz
drwxr-xr-x 3 zzw  users    109 Sep  6 22:52 cacti-plugin-arch
#使用 monitor 组件进行构建
-r-xr-xr-x 1 root root  241873 Sep  6 22:49 monitor-0.8.2.tar.gz
-r-xr-xr-x 1 root root   16823 Sep  6 22:49 settings-0.5.tar.gz
-r-xr-xr-x 1 root root   79586 Sep  6 22:49 thold-0.4.3.tar.gz
$ tar -zxvf monitor-0.8.2.tar.gz
#将组件移动到/var/www/html/cacti/plugins目录下
$ mv monitor /var/www/html/cacti/plugins
$ cd /var/www/html/cacti/plugins/monitor/
#导入数据库
$ mysql -uroot -proot cacti < monitor.sql
#就可以在浏览器上查看到,只是这里的我的Cacti版本过高,而monitor版本低造成的
#Monitor Cacit下载站点:https://docs.cacti.net/plugin:monitor
#在访问该站点的时候无法正常访问,就没有办法下载较新版本的monitor,若有同学下载到了,就可以重复以上的操作进行部署

img

这里就以Cacti官网的插件示例进行部署,演示出效果即可。

#选择插件(使用官网的示例操作)
yum install -y git
git clone https://github.com/Cacti/plugin_thold.git
mv plugin_thold /var/www/html/cacti/plugins
mv plugin_thold thold

点击绿色的启用按钮即可。就可以看到在最上面的选项卡中出现"阈值"的信息

img

img

根据自己的需要自行设置,和自行添加插件管理。

2.4 CentOS 7.9.2009 部署Cacti 1.2.21

官方站点:https://www.cacti.net/

#Cacti是一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具。
#我的安装环境如下
[root@localhost  ~]# uname -a 
Linux node1 3.10.0-1160.el7.x86_64 #1 SMP Mon Oct 19 16:18:59 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
[root@localhost  ~]# cat /etc/redhat-release 
CentOS Linux release 7.9.2009 (Core)

###一、准备工作
#更新系统软件;
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
yum update -y 
###二、安装相关的软件包
##2.1 安装httpd和php;
yum install -y httpd php

##2.2 安装php扩展;
yum install –y php-mysql php-snmp php-xml php-ldap php-gd php-mbstring php-posix

##2.3 设置php,据系统实际情况设定时区;
$ vim /etc/php.ini 
[PHP]
……
date.timezone = Asia/Shanghai

##2.4 启动httpd并设置开机启动;
systemctl start httpd && systemctl enable httpd

##2.5 安装MariaDB 10.3数据库;
yum -y install mariadb mariadb-server

##2.6 启动mysql数据库服务并设为开机启动;
systemctl start mariadb && systemctl enable mariadb

##2.7 配置MariaDB,初始化数据库,设定密码,除了开始直接回车,其他的选择都输入Y;
$ mysql_secure_installation

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!
......
Enter current password for root (enter for none):   //初始数据库密码为空,直接按回车键
OK, successfully used password, moving on...
......
Set root password? [Y/n] Y    //输入root管理员密码
New password:
Re-enter new password:
Password updated successfully!
......
Remove anonymous users? [Y/n] Y    //删除匿名账号
... Success!
......
Disallow root login remotely? [Y/n] Y   //禁止root管理员从远程登录
... Success!
.......
Remove test database and access to it? [Y/n] Y   //删除test数据库并取消对它的访问权限
......
Reload privilege tables now? [Y/n] Y   //刷新授权表,让初始化后的设定立即生效
... Success!

##2.8 修改MariaDB配置,指定编码为utf8,防止cacti监控在显示时不能显示中文,
##也可以在3.2的步骤中,创建cacti数据库时直接指定编码格式为utf8;
vim /etc/my.cnf.d/server.cnf
[server]
# this is only for the mysqld standalone daemon
character_set_server = utf8mb4
collation-server = utf8mb4_unicode_ci

##2.9 配置mysql相关参数,将参数设置为cacti安装时推荐的参数;
vim /etc/my.cnf
#在[mysql]下新增
skip-grant-tables
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
max_allowed_packet = 16777216
max_heap_table_size = 128M
tmp_table_size = 128M
join_buffer_size = 256M
innodb_file_per_table = ON
innodb_file_format = Barracuda
innodb_large_prefix = 1
innodb_buffer_pool_size = 445M
innodb_additional_mem_pool_size = 80M
innodb_flush_log_at_trx_commit  = 2

##2.10 安装net-snmp;
yum install –y net-snmp net-snmp-libs net-snmp-utils net-snmp-devel net-snmp-perl

##2.11 配置snmp;
vim /etc/snmp/snmpd.conf
#修改default为本机(cacti服务器)的ip或者127.0.0.1,修改public为自己的团体名(一般不改),42行
com2sec notConfigUser 127.0.0.1 public
#把systemview改成all ,供所有snmp 访问权限  64行
access notConfigGroup "" any noauth exact all none none
view all included .1 80 
# 去掉#号 85行

##2.12 启动snmp并设置开机启动;
systemctl start snmpd.service && systemctl enable snmpd.service

##2.13 安装RRDTool 绘图工具;
安装编译时可能使用到的软件;
yum -y install lm_sensors gcc gcc-c++ libart_lgpl-devel zlib-devel \
               libpng-devel freetype-devel gettext-devel glib2-devel pcre-devel \
               pango-devel cairo-devel \
               libxml2-devel perl-ExtUtils-CBuilder perl-ExtUtils-MakeMaker
##yum安装;
yum install -y rrdtool

###三、安装及配置cacti 1.2.21
##3.1 下载安装包;
cd /usr/local/src
wget https://www.cacti.net/downloads/cacti-1.2.21.tar.gz
tar -zxvf cacti-1.2.21.tar.gz
mv cacti-1.2.21 /var/www/html/cacti

##3.2 创建cacti数据库,创建数据库用户cactiuser,设置用户相关授权;
$ mysql -uroot -proot
MariaDB [(none)]> create database cacti;
#(可选:character set utf8 collate utf8_bin;)
MariaDB [(none)]> grant all on cacti.* to cactiuser@localhost  identified by 'cactiuser';
MariaDB [(none)]> grant select on mysql.time_zone_name to 'cactiuser'@'localhost' identified by 'cactiuser';
MariaDB [(none)]> flush privileges;

##3.3 导入 Cacti 默认数据库;
MariaDB [(none)]> use cacti;
MariaDB [cacti]> source /var/www/html/cacti/cacti.sql;
......
MariaDB [cacti]> flush privileges;
MariaDB [cacti]> quit

##3.4 配置数据库时区;
[root@localhost  ~]# mysql_tzinfo_to_sql /usr/share/zoneinfo/ | mysql -u root -p mysql 
Enter password:
Warning: Unable to load '/usr/share/zoneinfo//leapseconds' as time zone. Skipping it.
Warning: Unable to load '/usr/share/zoneinfo//tzdata.zi' as time zone. Skipping it.

##3.5 据实际情况配置cacti的config.php,我测试的所有按默认值,所以没改,一般是修改第2、4、5行;
[root@localhost  ~]# vim /var/www/html/cacti/include/config.php 
......
$database_type     = 'mysql';
$database_default  = 'cacti';
$database_hostname = 'localhost';
$database_username = 'cactiuser';
$database_password = 'cactiuser';
$database_port     = '3306';
$database_retries  = 5;
$database_ssl      = false;
$database_ssl_key  = '';
$database_ssl_cert = '';
$database_ssl_ca   = '';
......

##3.6 创建日志文件,后续安装时用的到;
touch /var/www/html/cacti/log/cacti.log
touch /var/www/html/cacti/log/cacti_stderr.log

##3.7 创建 cacti 系统用户,设置目录权限;
useradd cactiuser 
chown apache.apache /var/www/html/cacti/ -R 
chown cactiuser /var/www/html/cacti/{rra,log}/ -R 
chmod 777 /var/www/html/cacti/{rra,log}/ -R 

###四、安装及配置spine和crond
#(spine的版本要和cacti版本一致,这俩个我都下载的最新版,一般没问题);
##4.1 安装spine;
cd /usr/local/src
wget https://www.cacti.net/downloads/spine/cacti-spine-1.2.21.tar.gz
tar zxvf cacti-spine-1.2.21.tar.gz
mv cacti-spine-1.2.21 /usr/local/spine
cd /usr/local/spine
yum install -y net-snmp-devel mysql-devel openssl-devel dos2unix autoconf automake \
binutils libtool gcc cpp glibc-headers kernel-headers glibc-devel help2man
#编译安装
sh bootstrap
./configure --with-reentrant
make && make install
chown root:root /usr/local/spine/bin/spine
chmod +s /usr/local/spine/bin/spine

##4.2 编辑spine.conf;
$ cp /usr/local/spine/etc/spine.conf.dist /etc/spine.conf
$ vim  /etc/spine.conf
#修改如下部分,我全部使用默认参数,所以以下内容没有改动
DB_Host       localhost
DB_Database   cacti
DB_User       cactiuser
DB_Pass       cactiuser
DB_Port       3306

$ /usr/local/spine/bin/spine
##执行此命令,成功后显示如下
SPINE: Using spine config file [/etc/spine.conf]
Version 1.2.21 starting
Time: 0.5131 s, Threads: 1, Devices: 1

##4.3 配置creond (crond一般都是默认安装好的,如果没装,就 yum install crontabs -y 安装一下)
##如果不配置此功能,图形界面全部会显示The Cacti Poller has not run yet;
##使用crontab命令添加任务;
crontab -e
##添加以下任务,我这里配置成每五分钟运行一次
*/5 * * * * /usr/bin/php /var/www/html/cacti/poller.php > /dev/null 2>&1
#设置crontab自启动,添加好crontab计划任务后,验证下crond服务是否已经启动,并设置开机自启;
systemctl status crond
systemctl enable crond
###五、 关闭防火墙和selinux;
##5.1  禁用防火墙  (如果是跑在公网的建议放行相关端口,不禁用防火墙);
systemctl stop firewalld.service
systemctl disable firewalld

##5.2 禁用selinux;
vim /etc/sysconfig/selinux
#将SELINUX修改为=disabled,然后重启,该操作重启后才会生效,所以一定要重启系统;

##5.3 重启相关服务;
systemctl restart httpd.service \
&& systemctl restart mariadb.service \
&& systemctl restart snmpd.service \
&& service httpd restart \
&& service mariadb restart

##5.4 重启系统;
shutdown -r now

##5.6 cacti安装;
#浏览器中输入http://ip/cacti进入安装界面,
#初始账号密码为admin/admin,首次登录需要修改密码,密码有复杂性要求,后面基本就是下一步下一步,直到安装完成;
#安装完成后修改poller参数,cacti默认使用cmd.php,我装了spine,所以改成spine;

浏览器输入 10.10.10.11 访问,账户名:admin,密码:admin。

第一次登录需要重新修改admin密码。

img

根据向导一步一步进行操作完成

img

更改为Spine采集类型

img

客户端配置 和 2.2.4客户端配置 步骤一致。

2.4.1 收集数据

###用于RRDTool定时采集数据
#CentOS 6的操作
$ su - runct
$ snmpwalk -v 2c -c public 10.10.10.12 tcp
$ php /var/www/html/cacti/poller.php 
#生成对应的监控图表
$ crontab -e
*/5 * * * * /usr/bin/php /var/www/html/cacti/poller.php &>/dev/null 
#配置 RRDTOOL 的轮训任务 
#CentOS 6执行操作
$ service crond start

#CentOS 7执行操作
#收集数据的步骤在 2.4 CentOS 7.9.2009部署Cacti中已经完成
$ systemctl start crond
==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===
Authentication is required to manage system services or units.
Authenticating as: zzw
Password:
==== AUTHENTICATION COMPLETE ===

$ exit

img

2.4.2 访问测试

Cacti 新版本是支持中文界面,但在 Cacti 旧版本中是并不支持中文显示。

img

添加Linux主机

img

根据情况选择设备模板,这里我选择"Net-SNMP Device"

img

添加Linux主机的监控图像

img

img

img

img

添加一棵树

管理 → 树 → "+"添加树 → “根据向导进行添加”

img

编辑树的可用站点(自定义,根据环境不同而不同),可用设备(选择10.10.10.12),可用的图形(选择全部),并点击发布按钮,后保存

img

img

注意:若发现没有数据的展示,那么就要执行2.4.1收集数据以及2.2.5收集数据,两个步骤一样。用于RRDtool来绘制图表的功能。

2.4.3 Cacti 插件添加

这里就以Cacti官网的插件示例进行部署,演示出效果即可。

#选择插件(使用官网的示例操作)
yum install -y git
git clone https://github.com/Cacti/plugin_thold.git
mv plugin_thold /var/www/html/cacti/plugins
#重命名(Cacti v1.2.22版本不需要进行重命名)
mv plugin_thold tholdcv 

点击绿色的启用按钮即可。就可以看到在最上面的选项卡中出现"阈值"的信息

img

img

CentOS 7.9.2009 的Cacti 部署部分就告一段落了。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dark_Ice_

你的支持是我创作的核动力。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值