自动化安装Cacti(1.0.1/2/3)脚本

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介:

自动化安装Cacti(1.0.1/2/3)脚本

一、目的

1.1 监控目的

目前我们已经有zabbix监控系统,但是有客户需求需要流量报表,因此应此类客户的需求,部署Cacti流量监控系统,来监控客户服务器或交换机端口,为客户提供流量报表截图。

1.2 本文目的

快速部署Cacti流量监控系统,为后期相关工程师部署此系统提供借鉴与参考。

二、理论基础

2.1 相关理论

Cacti是用php语言实现一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具snmp服务获取数据,然后用rrdtool储存和更新数据,当用户需要查看数据的时候用rrdtool生成图表呈现给用户。

2.2 拓扑架构

wKiom1ikUQjyLu8kAAHmsN1J2i8325.png

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
#!/bin/bash
#Date 2017/2/14
#mail xuel@51idc.com
[ $( id  -u) !=  "0"  ] &&  echo  "Error: You must be root to run this script"  &&  exit  1
export  PATH= /usr/local/sbin : /usr/local/bin : /sbin : /bin : /usr/sbin : /usr/bin
sed  -i  "s/SELINUX=enforcing/SELINUX=disabled/"   /etc/selinux/config
setenforce 0
which   ntpdate
if  [ $? - eq  0 ]; then
     /usr/sbin/ntpdate  time1.aliyun.com
     echo  "*/5 * * * * /usr/sbin/ntpdate -s time1.aliyun.com" >> /var/spool/cron/root   
else
     yum  install  ntpdate -y
     /usr/sbin/ntpdate  time1.aliyun.com
     echo  "*/5 * * * * /usr/sbin/ntpdate -s time1.aliyun.com" >> /var/spool/cron/root   
fi
clear
echo  "####################################################"
echo  "#       Auto Install Cacti.                       ##"
echo  "#       Press Ctrl + C to cancel                  ##"
echo  "#       Any key to continue                       ##"
echo  "####################################################"
echo  "(1) Install Cacti-1.0.1"
echo  "(2) Install Cacti-1.0.2"
echo  "(3)Install  Cacti-1.0.3"
echo  "(4) EXIT"
read  -p  "Please input your choice:"  NUM
case  $NUM  in 
1)
     URL= "http://www.cacti.net/downloads/cacti-1.0.1.tar.gz"
     VER=cacti-1.0.1
;;
2)
     URL= "http://www.cacti.net/downloads/cacti-1.0.2.tar.gz"
     VER=cacti-1.0.2
;;
3)
     URL= "http://www.cacti.net/downloads/cacti-1.0.3.tar.gz"
     VER=cacti-1.0.3
;;
4)
     echo  -e  "\033[41;37m You choice channel! \033[0m"  &&  exit  0
;;
*)
     echo  -e  "\033[41;37m Input Error! Place input{1|2|3} \033[0m"  &&  exit  1
;;
esac
clear
echo  -e  "\033[32m You choice install $VER.Install\033[0m"
echo  -e  "\033[5m Press any key to start install $VER... \033[0m"
read  -n 1
################################################################
TDIR= /tools
IP=` ifconfig  eth0 |  grep  "inet addr"  awk  -F "[: ]+"  '{print $4}' `
yum remove php* -y
rpm -Uvh http: //mirror .webtatic.com /yum/el6/latest .rpm
ls  /etc/yum .repos.d /webtatic .repo
if  [ $? - eq  0 ]; then
     yum -y  install  `yum list| grep  php55w| awk  '{printf ("%s ",$1)}' ` --skip-broken
fi
service php-fpm start  /tmp/php-install .log 2>&1
STAT=` echo  $?`
PORT=` netstat  -lntup| grep  php-fpm| wc  -l`
if  [ $STAT - eq  0 ] && [ $PORT - eq  1 ]; then
     echo  -e  "\033[32m PHP is install success! \033[0m"
else
     echo  -e  "\033[32m PHP install file.please check /tmp/php-install.log \033[0m"
fi
############################################################
yum  install  httpd net-snmp net-snmp-devel net-snmp-utils rrdtool -y
if  [ -d  /var/www/html  ]; then
     cd  /var/www/html
else
     mkdir  -p  /var/www/html  &&  cd  /var/www/html
fi
wget -c -O  /var/www/html/ $VER. tar .gz  http: //www .cacti.net /downloads/ $VER. tar .gz
tar  -zxvf $VER. tar .gz
mv  $VER cacti
cd  cacti
chown  -R apache.root *
useradd  cacti
echo  "cacti"  passwd  --stdin cacti
echo  "*/1 * * * * /usr/bin/php /var/www/html/cacti/poller.php >/dev/null 2>&1" >> /var/spool/cron/root
service httpd start 
chkconfig httpd on 
###################################################################
SNMPFILE= /etc/snmp/snmpd .conf
if  [ -f  "$SNMPFILE"  ]
         then
         cp  $SNMPFILE  /etc/snmp/snmpd .conf.bak
fi
cat  > $SNMPFILE << EOF
com2sec notConfigUser  default       public
group   notConfigGroup v1           notConfigUser
group   notConfigGroup v2c           notConfigUser
view    systemview    included   .1
view    systemview    included   .1.3.6.1.2.1.1
view    systemview    included   .1.3.6.1.2.1.25.1.1
access  notConfigGroup  ""       any       noauth    exact  all  none none
view all    included  .1                               80
syslocation Unknown (edit  /etc/snmp/snmpd .conf)
syscontact Root <root@localhost> (configure  /etc/snmp/snmp . local .conf)
dontLogTCPWrappersConnects  yes
proc mountd
proc ntalkd 4
nstall httpd mysql-server php php-mysql php-snmp mysql-devel httpd-devel net-snmp net-snmp-devel
  net-snmp-utils rrdtoolproc senmail 10 1
exec  echotest  /bin/echo  hello world
disk / 10000
EOF
###############################################################
rpm -ivh http: //repo .mysql.com //mysql57-community-release-el6-8 .noarch.rpm
if  [ -d  /scripts  ]; then
     cd  /scripts
else
     /bin/mkdir  /scripts  &&  cd  /scripts
fi
wget -r -np -nd -l1 -A.rpm http: //101 .227.67.205 /share/MySQL5 .7/
yum  install  mysql-community* -y
chkconfig mysqld on
service mysqld start
SQLPWD=` grep  'temporary password'  /var/log/mysqld .log| cut  -d " "  -f11| sed  s/[[:space:]] //g `
SQLNEW= "WWW.51idc.com"
echo  $SQLNEW
mysql -uroot  "-p$SQLPWD"  --connect-expired-password -e  "alter user 'root'@'localhost' identified by \"" $SQLNEW "\";"
mysql -uroot  "-p$SQLNEW"  -e  "create database cacti character set utf8;"
mysql -uroot  "-p$SQLNEW"  cacti< /var/www/html/cacti/cacti .sql
mysql -uroot  "-p$SQLNEW"  -e  "CREATE USER 'cacti'@'localhost' IDENTIFIEDBY \"" $SQLNEW "\";"
mysql -uroot  "-p$SQLNEW"  -e  "grant all privileges on cacti.* to cacti@'localhost' identified by \"" $SQLNEW "\";"
mysql -uroot  "-p$SQLNEW"  -e  "grant select on mysql.time_zone_name to 'cacti'@'localhost';"
mysql -uroot  "-p$SQLNEW"  -e  "flush privileges;"
/usr/bin/mysql_tzinfo_to_sql  /usr/share/zoneinfo |mysql -uroot -p "$SQLNEW"  mysql
cat >> /etc/my .cnf<<EOF
max_heap_table_size=100M
max_allowed_packet=16777216
tmp_table_size=64M
join_buffer_size=64M
innodb_buffer_pool_size=458M
innodb_doublewrite=OFF
innodb_flush_log_at_timeout=4
innodb_read_io_threads=32
innodb_write_io_threads=16
EOF
PHPCONF= /var/www/html/cacti/include/config .php
if  [ -f $PHPCONF ]; then
cat  >$PHPCONF<<EOF
<?php
\$database_type =  "mysql" ;
\$database_default =  "cacti" ;
\$database_hostname =  "localhost" ;
\$database_username =  "cacti" ;
\$database_password =  "$SQLNEW" ;
\$database_port =  "3306" ;
?>
EOF
fi
clear
service mysqld restart
#############################################################
/etc/init .d /iptables  status > /dev/null  2>&1
if  [ $? - eq  0 ]; then
     iptables -I INPUT -p tcp --dport 80 -j ACCEPT &&
#iptables -I INPUT -p tcp --dport 3306 -j ACCEPT && 
     service iptables save > /dev/null  2>&1
     /etc/init .d /iptables  restart
else
     echo  -e  "\033[32m iptables is stopd\033[0m"
fi
clear
echo  -e  "\033[42;37m MySql Username:root Password:$SQLNEW \033[0m"
echo  -e  "\033[42;37m URL:http://$IP/cacti \033[0m"
echo  -e  "\033[42;37m $VER is Install Success,Username:Admin Password:admin \033[0m"









本文转自 KaliArch 51CTO博客,原文链接:http://blog.51cto.com/kaliarch/1898212,如需转载请自行联系原作者
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
3天前
|
运维 监控 应用服务中间件
自动化运维:如何利用Python脚本提升工作效率
【10月更文挑战第30天】在快节奏的IT行业中,自动化运维已成为提升工作效率和减少人为错误的关键技术。本文将介绍如何使用Python编写简单的自动化脚本,以实现日常运维任务的自动化。通过实际案例,我们将展示如何用Python脚本简化服务器管理、批量配置更新以及监控系统性能等任务。文章不仅提供代码示例,还将深入探讨自动化运维背后的理念,帮助读者理解并应用这一技术来优化他们的工作流程。
|
5天前
|
运维 监控 Linux
自动化运维:如何利用Python脚本优化日常任务##
【10月更文挑战第29天】在现代IT运维中,自动化已成为提升效率、减少人为错误的关键技术。本文将介绍如何通过Python脚本来简化和自动化日常的运维任务,从而让运维人员能够专注于更高层次的工作。从备份管理到系统监控,再到日志分析,我们将一步步展示如何编写实用的Python脚本来处理这些任务。 ##
|
9天前
|
运维 Prometheus 监控
自动化运维之路:从脚本到DevOps
【10月更文挑战第25天】在数字化时代的浪潮中,运维不再是简单的服务器管理,而是成为了企业竞争力的核心。本文将带你走进自动化运维的世界,探索如何通过技术手段提升效率和稳定性,以及实现快速响应市场的能力。我们将一起学习如何从基础的脚本编写进化到全面的DevOps实践,包括工具的选择、流程的优化以及文化的建设。无论你是运维新手还是资深专家,这篇文章都将为你提供有价值的见解和实用的技巧。
14 3
|
10天前
|
JSON 测试技术 持续交付
自动化测试与脚本编写:Python实践指南
自动化测试与脚本编写:Python实践指南
16 1
|
26天前
|
人工智能 运维 Devops
自动化运维之路:从脚本到DevOps的转变
【10月更文挑战第7天】在这篇文章中,我们将一起探索自动化运维的演变历程,从最初的简单脚本到现代的DevOps实践。我们将深入理解自动化如何改变了运维工作的本质,并讨论实现这一转变的关键技术和策略。文章将不包含代码示例,而是聚焦于理念、工具和方法论的介绍,旨在为读者提供一个全面的自动化运维框架视图。
|
25天前
|
人工智能 运维 监控
自动化运维:从脚本到工具的演变之路
【10月更文挑战第8天】在数字化时代的浪潮中,运维不再是简单的硬件维护,它已经演变成一场关于效率、稳定性和创新的技术革命。本文将带您领略自动化运维的魅力,从最初的脚本编写到现代复杂的自动化工具,我们将一探究竟,看看这些工具如何帮助运维人员简化日常任务,提升工作效率,并最终推动业务发展。
|
21天前
|
监控 关系型数据库 MySQL
PowerShell 脚本编写 :自动化Windows 开发工作流程
PowerShell 脚本编写 :自动化Windows 开发工作流程
19 0
|
22天前
|
Web App开发 Java 测试技术
一、自动化:web自动化。Selenium 入门指南:从安装到实践
一、自动化:web自动化。Selenium 入门指南:从安装到实践
33 0
|
1月前
|
机器学习/深度学习 人工智能 运维
构建高效运维体系:从自动化到智能化的演进
本文探讨了如何通过自动化和智能化手段,提升IT运维效率与质量。首先介绍了自动化在简化操作、减少错误中的作用;然后阐述了智能化技术如AI在预测故障、优化资源中的应用;最后讨论了如何构建一个既自动化又智能的运维体系,以实现高效、稳定和安全的IT环境。
57 4
|
26天前
|
运维 Linux Apache
,自动化运维成为现代IT基础设施的关键部分。Puppet是一款强大的自动化运维工具
【10月更文挑战第7天】随着云计算和容器化技术的发展,自动化运维成为现代IT基础设施的关键部分。Puppet是一款强大的自动化运维工具,通过定义资源状态和关系,确保系统始终处于期望配置状态。本文介绍Puppet的基本概念、安装配置及使用示例,帮助读者快速掌握Puppet,实现高效自动化运维。
46 4