Windows 的任务管理器工作:监控CPU,内存的占用率,查看相关的进程管理(杀死进程)
很多人说监控,是运维的眼睛,是稳定性建设中最重要的一环,监控也是运维工程师必须要会的(无监控不运维)。
监控的主要职责
1、全天监控
2、故障的分析、判断及通知
3、处理相关通知及报告
监控很重要,是必不可少的,运维最重要的就是监控和备份
宕机损失案例:美国呼叫中心 24000 美金/小时
需要数据
Cacti是 RRDtool 的前端应用程序(也可以基于命令行就是绘图的工具),RRDtool是一种用于存储实时变化数据的开源数据库工具,其使用SNMP作为其默认收集算法,但如果你喜欢本地Perl的PHP脚本,那么你也可以使用它们。Cacti 是一款开源的基于Web的网络监控和专为数据记录而设计的图形化工具。它可以用于实时显示网络数据,如CPU负载或带宽利用率。
官网:http://www.cacti.net/
软件设计目标: 流量与性能监测为主
数据展示平台: B/S
数据收集方式: SNMP(Simple Network Management Protocol,简单网络管理协议,监控最主流的协议)
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(等待状态)
Zabbix 作为企业级的网络监控工具,通过从服务器,虚拟机和网络设备收集的数据提供实时监控,自动发现,映射和可扩展等功能。Zabbix的企业级监控软件为用户提供内置的Java应用服务器监控,硬件监控,VMware监控和CPU,内存,网络,磁盘空间性能监控。
无限扩展:从监控智能家居到多租户企业环境,Zabbix可扩展到任何基础设施
分布式监控:从中央Web UI部署和扩展分布式Zabbix基础架构,并在所有组件之间提供原生加密支持
安全可靠:将敏感信息存储在外部vault中,以确保其安全
高可用:使用Zabbix高可用性解决方案确保Zabbix基础架构7x24全天候正常运行并消除数据丢失的风险
足够灵活:Zabbix提供了许多不同的方法来收集数据、转换数据、分析数据并将其可视化,监控任何你想要的东西
合作伙伴支持:Zabbix可为全球客户提供企业级监控和支持,目前合作网络包含全球250多家合作伙伴和多家外部供应商
官网:http://www.zabbix.com/
软件设计目标: 全功能监控软件
数据展示平台: B/S
数据收集方式: C/S(官方客户端)
Prometheus是一个开源的系统监控和警报工具包,最初由SoundCloud开发的,社区活跃,2016年加入了云原生计算基金会成为继Kubernetes之后的第二个托管项目;普罗米修斯以时间序列数据的形式收集并存储度量值;大部分模块由Go语言编写的。
Prometheus 特性:
官网:https://prometheus.io/
适合监控docker容器。因为kubernetes(俗称k8s)的流行带动了 prometheus的发展。
(简单网络管理协议)用于收集设备内部发生的数据,如负载、磁盘状态、带宽之类
简单网络管理协议(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 常见的版本:
SNMP 是 Cacti 用于收集监控指标的。
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的性能指标。
官方定义: 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 中用于绘制图表的。
Apache(音译为阿帕奇)是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩充,将Perl / Python等解释器编译到服务器中。
Apache 是 Cacti 的展示Web页面
C/S 模式:采集检测数据(由 SNMP 协议完成)
B/S 模式:管理检测数据,负责展示(由RRDtool绘制图表以后,在Apache将数据展示出来)
Cacti的工作过程
首先通过LAMP平台部署Cacti监控工具,之后通过客户端的web登录Cacti进行对其他客户端的设置,可以从下图看到Cacti采集数据时必须要使用SNMP协议来连接客户端进而能够采集数据,也就是说客户端必须支持SNMP协议,监控之后通过RRDtool来生成图表。
小总结:Apache需要构建比较复杂的网页的话,就需要PHP语言,PHP语言会插入和读取数据库的相关配置以及一些模板信息,RRDtool将SNMP收集到的数据绘制成图表,图表会被Apache分享给用户查看。
#两台服务器
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的步骤会有些凌乱,需要仔细操作执行。
扩展:选择什么样的软件包是要考虑我们的目的,源码包经过测试会比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
所需软件百度网盘
链接: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
#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
#CentOS 6的操作
cd /var/www/html/cacti
useradd runct
#添加 runct 用户,用于 RRDTOOL 运行
chown -R root.root ./
#图片目录,日志目录
chown -R runct.runct rra/ log/
#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
#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";
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
#编辑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
#配置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
#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密码。
#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
###用于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
如果管理员需要为 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版本
插件管理器就部署完成了。然后就是要进行部署插件了。
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,若有同学下载到了,就可以重复以上的操作进行部署
这里就以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
点击绿色的启用按钮即可。就可以看到在最上面的选项卡中出现"阈值"的信息
根据自己的需要自行设置,和自行添加插件管理。
官方站点: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密码。
根据向导一步一步进行操作完成
更改为Spine采集类型
客户端配置 和 2.2.4客户端配置 步骤一致。
###用于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
Cacti 新版本是支持中文界面,但在 Cacti 旧版本中是并不支持中文显示。
添加Linux主机
根据情况选择设备模板,这里我选择"Net-SNMP Device"
添加Linux主机的监控图像
添加一棵树
管理 → 树 → "+"添加树 → “根据向导进行添加”
编辑树的可用站点(自定义,根据环境不同而不同),可用设备(选择10.10.10.12),可用的图形(选择全部),并点击发布按钮,后保存
注意:若发现没有数据的展示,那么就要执行2.4.1收集数据以及2.2.5收集数据,两个步骤一样。用于RRDtool来绘制图表的功能。
这里就以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
点击绿色的启用按钮即可。就可以看到在最上面的选项卡中出现"阈值"的信息
CentOS 7.9.2009 的Cacti 部署部分就告一段落了。