自動化安裝Cacti(1.0.1/2/3)腳本
一、目的
1.1 監控目的
目前我們已經有zabbix監控系統,但是有客戶需求需要流量報表,是以應此類客戶的需求,部署Cacti流量監控系統,來監控客戶伺服器或交換機端口,為客戶提供流量報表截圖。
1.2 本文目的
快速部署Cacti流量監控系統,為後期相關工程師部署此系統提供借鑒與參考。
二、理論基礎
2.1 相關理論
2.2 拓撲架構
<a href="https://s3.51cto.com/wyfs02/M00/8D/A4/wKiom1ikUQjyLu8kAAHmsN1J2i8325.png" target="_blank"></a>
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
<code>#!/bin/bash</code>
<code>#Date 2017/2/14</code>
<code>#mail [email protected]</code>
<code>[ $(</code><code>id</code> <code>-u) != </code><code>"0"</code> <code>] && </code><code>echo</code> <code>"Error: You must be root to run this script"</code> <code>&& </code><code>exit</code> <code>1</code>
<code>export</code> <code>PATH=</code><code>/usr/local/sbin</code><code>:</code><code>/usr/local/bin</code><code>:</code><code>/sbin</code><code>:</code><code>/bin</code><code>:</code><code>/usr/sbin</code><code>:</code><code>/usr/bin</code>
<code>sed</code> <code>-i </code><code>"s/SELINUX=enforcing/SELINUX=disabled/"</code> <code>/etc/selinux/config</code>
<code>setenforce 0</code>
<code>which</code> <code>ntpdate</code>
<code>if</code> <code>[ $? -</code><code>eq</code> <code>0 ];</code><code>then</code>
<code> </code><code>/usr/sbin/ntpdate</code> <code>time1.aliyun.com</code>
<code> </code><code>echo</code> <code>"*/5 * * * * /usr/sbin/ntpdate -s time1.aliyun.com"</code><code>>></code><code>/var/spool/cron/root</code>
<code>else</code>
<code> </code><code>yum </code><code>install</code> <code>ntpdate -y</code>
<code>fi</code>
<code>clear</code>
<code>echo</code> <code>"####################################################"</code>
<code>echo</code> <code>"# Auto Install Cacti. ##"</code>
<code>echo</code> <code>"# Press Ctrl + C to cancel ##"</code>
<code>echo</code> <code>"# Any key to continue ##"</code>
<code>echo</code> <code>"(1) Install Cacti-1.0.1"</code>
<code>echo</code> <code>"(2) Install Cacti-1.0.2"</code>
<code>echo</code> <code>"(3)Install Cacti-1.0.3"</code>
<code>echo</code> <code>"(4) EXIT"</code>
<code>read</code> <code>-p </code><code>"Please input your choice:"</code> <code>NUM</code>
<code>case</code> <code>$NUM </code><code>in</code>
<code>1)</code>
<code> </code><code>URL=</code><code>"http://www.cacti.net/downloads/cacti-1.0.1.tar.gz"</code>
<code> </code><code>VER=cacti-1.0.1</code>
<code>;;</code>
<code>2)</code>
<code> </code><code>URL=</code><code>"http://www.cacti.net/downloads/cacti-1.0.2.tar.gz"</code>
<code> </code><code>VER=cacti-1.0.2</code>
<code>3)</code>
<code> </code><code>URL=</code><code>"http://www.cacti.net/downloads/cacti-1.0.3.tar.gz"</code>
<code> </code><code>VER=cacti-1.0.3</code>
<code>4)</code>
<code> </code><code>echo</code> <code>-e </code><code>"\033[41;37m You choice channel! \033[0m"</code> <code>&& </code><code>exit</code> <code>0</code>
<code>*)</code>
<code> </code><code>echo</code> <code>-e </code><code>"\033[41;37m Input Error! Place input{1|2|3} \033[0m"</code> <code>&& </code><code>exit</code> <code>1</code>
<code>esac</code>
<code>echo</code> <code>-e </code><code>"\033[32m You choice install $VER.Install\033[0m"</code>
<code>echo</code> <code>-e </code><code>"\033[5m Press any key to start install $VER... \033[0m"</code>
<code>read</code> <code>-n 1</code>
<code>################################################################</code>
<code>TDIR=</code><code>/tools</code>
<code>IP=`</code><code>ifconfig</code> <code>eth0 | </code><code>grep</code> <code>"inet addr"</code> <code>| </code><code>awk</code> <code>-F</code><code>"[: ]+"</code> <code>'{print $4}'</code><code>`</code>
<code>yum remove php* -y</code>
<code>rpm -Uvh http:</code><code>//mirror</code><code>.webtatic.com</code><code>/yum/el6/latest</code><code>.rpm</code>
<code>ls</code> <code>/etc/yum</code><code>.repos.d</code><code>/webtatic</code><code>.repo</code>
<code> </code><code>yum -y </code><code>install</code> <code>`yum list|</code><code>grep</code> <code>php55w|</code><code>awk</code> <code>'{printf ("%s ",$1)}'</code><code>` --skip-broken</code>
<code>service php-fpm start </code><code>/tmp/php-install</code><code>.log 2>&1</code>
<code>STAT=`</code><code>echo</code> <code>$?`</code>
<code>PORT=`</code><code>netstat</code> <code>-lntup|</code><code>grep</code> <code>php-fpm|</code><code>wc</code> <code>-l`</code>
<code>if</code> <code>[ $STAT -</code><code>eq</code> <code>0 ] && [ $PORT -</code><code>eq</code> <code>1 ];</code><code>then</code>
<code> </code><code>echo</code> <code>-e </code><code>"\033[32m PHP is install success! \033[0m"</code>
<code> </code><code>echo</code> <code>-e </code><code>"\033[32m PHP install file.please check /tmp/php-install.log \033[0m"</code>
<code>############################################################</code>
<code>yum </code><code>install</code> <code>httpd net-snmp net-snmp-devel net-snmp-utils rrdtool -y</code>
<code>if</code> <code>[ -d </code><code>/var/www/html</code> <code>];</code><code>then</code>
<code> </code><code>cd</code> <code>/var/www/html</code>
<code> </code><code>mkdir</code> <code>-p </code><code>/var/www/html</code> <code>&& </code><code>cd</code> <code>/var/www/html</code>
<code>wget -c -O </code><code>/var/www/html/</code><code>$VER.</code><code>tar</code><code>.gz http:</code><code>//www</code><code>.cacti.net</code><code>/downloads/</code><code>$VER.</code><code>tar</code><code>.gz</code>
<code>tar</code> <code>-zxvf $VER.</code><code>tar</code><code>.gz</code>
<code>mv</code> <code>$VER cacti</code>
<code>cd</code> <code>cacti</code>
<code>chown</code> <code>-R apache.root *</code>
<code>useradd</code> <code>cacti</code>
<code>echo</code> <code>"cacti"</code> <code>| </code><code>passwd</code> <code>--stdin cacti</code>
<code>echo</code> <code>"*/1 * * * * /usr/bin/php /var/www/html/cacti/poller.php >/dev/null 2>&1"</code><code>>></code><code>/var/spool/cron/root</code>
<code>service httpd start </code>
<code>chkconfig httpd on </code>
<code>###################################################################</code>
<code>SNMPFILE=</code><code>/etc/snmp/snmpd</code><code>.conf</code>
<code>if</code> <code>[ -f </code><code>"$SNMPFILE"</code> <code>]</code>
<code> </code><code>then</code>
<code> </code><code>cp</code> <code>$SNMPFILE </code><code>/etc/snmp/snmpd</code><code>.conf.bak</code>
<code>cat</code> <code>> $SNMPFILE << EOF</code>
<code>com2sec notConfigUser default public</code>
<code>group notConfigGroup v1 notConfigUser</code>
<code>group notConfigGroup v2c notConfigUser</code>
<code>view systemview included .1</code>
<code>view systemview included .1.3.6.1.2.1.1</code>
<code>view systemview included .1.3.6.1.2.1.25.1.1</code>
<code>access notConfigGroup </code><code>""</code> <code>any noauth exact all none none</code>
<code>view all included .1 80</code>
<code>syslocation Unknown (edit </code><code>/etc/snmp/snmpd</code><code>.conf)</code>
<code>syscontact Root <root@localhost> (configure </code><code>/etc/snmp/snmp</code><code>.</code><code>local</code><code>.conf)</code>
<code>dontLogTCPWrappersConnects </code><code>yes</code>
<code>proc mountd</code>
<code>proc ntalkd 4</code>
<code>nstall httpd mysql-server php php-mysql php-snmp mysql-devel httpd-devel net-snmp net-snmp-devel</code>
<code> </code><code>net-snmp-utils rrdtoolproc senmail 10 1</code>
<code>exec</code> <code>echotest </code><code>/bin/echo</code> <code>hello world</code>
<code>disk / 10000</code>
<code>EOF</code>
<code>###############################################################</code>
<code>rpm -ivh http:</code><code>//repo</code><code>.mysql.com</code><code>//mysql57-community-release-el6-8</code><code>.noarch.rpm</code>
<code>if</code> <code>[ -d </code><code>/scripts</code> <code>];</code><code>then</code>
<code> </code><code>cd</code> <code>/scripts</code>
<code> </code><code>/bin/mkdir</code> <code>/scripts</code> <code>&& </code><code>cd</code> <code>/scripts</code>
<code>wget -r -np -nd -l1 -A.rpm http:</code><code>//101</code><code>.227.67.205</code><code>/share/MySQL5</code><code>.7/</code>
<code>yum </code><code>install</code> <code>mysql-community* -y</code>
<code>chkconfig mysqld on</code>
<code>service mysqld start</code>
<code>SQLPWD=`</code><code>grep</code> <code>'temporary password'</code> <code>/var/log/mysqld</code><code>.log|</code><code>cut</code> <code>-d</code><code>" "</code> <code>-f11|</code><code>sed</code> <code>s/[[:space:]]</code><code>//g</code><code>`</code>
<code>SQLNEW=</code><code>"WWW.51idc.com"</code>
<code>echo</code> <code>$SQLNEW</code>
<code>mysql -uroot </code><code>"-p$SQLPWD"</code> <code>--connect-expired-password -e </code><code>"alter user 'root'@'localhost' identified by \""</code><code>$SQLNEW</code><code>"\";"</code>
<code>mysql -uroot </code><code>"-p$SQLNEW"</code> <code>-e </code><code>"create database cacti character set utf8;"</code>
<code>mysql -uroot </code><code>"-p$SQLNEW"</code> <code>cacti<</code><code>/var/www/html/cacti/cacti</code><code>.sql</code>
<code>mysql -uroot </code><code>"-p$SQLNEW"</code> <code>-e </code><code>"CREATE USER 'cacti'@'localhost' IDENTIFIEDBY \""</code><code>$SQLNEW</code><code>"\";"</code>
<code>mysql -uroot </code><code>"-p$SQLNEW"</code> <code>-e </code><code>"grant all privileges on cacti.* to cacti@'localhost' identified by \""</code><code>$SQLNEW</code><code>"\";"</code>
<code>mysql -uroot </code><code>"-p$SQLNEW"</code> <code>-e </code><code>"grant select on mysql.time_zone_name to 'cacti'@'localhost';"</code>
<code>mysql -uroot </code><code>"-p$SQLNEW"</code> <code>-e </code><code>"flush privileges;"</code>
<code>/usr/bin/mysql_tzinfo_to_sql</code> <code>/usr/share/zoneinfo</code><code>|mysql -uroot -p</code><code>"$SQLNEW"</code> <code>mysql</code>
<code>cat</code><code>>></code><code>/etc/my</code><code>.cnf<<EOF</code>
<code>max_heap_table_size=100M</code>
<code>max_allowed_packet=16777216</code>
<code>tmp_table_size=64M</code>
<code>join_buffer_size=64M</code>
<code>innodb_buffer_pool_size=458M</code>
<code>innodb_doublewrite=OFF</code>
<code>innodb_flush_log_at_timeout=4</code>
<code>innodb_read_io_threads=32</code>
<code>innodb_write_io_threads=16</code>
<code>PHPCONF=</code><code>/var/www/html/cacti/include/config</code><code>.php</code>
<code>if</code> <code>[ -f $PHPCONF ];</code><code>then</code>
<code>cat</code> <code>>$PHPCONF<<EOF</code>
<code><?php</code>
<code>\$database_type = </code><code>"mysql"</code><code>;</code>
<code>\$database_default = </code><code>"cacti"</code><code>;</code>
<code>\$database_hostname = </code><code>"localhost"</code><code>;</code>
<code>\$database_username = </code><code>"cacti"</code><code>;</code>
<code>\$database_password = </code><code>"$SQLNEW"</code><code>;</code>
<code>\$database_port = </code><code>"3306"</code><code>;</code>
<code>?></code>
<code>service mysqld restart</code>
<code>#############################################################</code>
<code>/etc/init</code><code>.d</code><code>/iptables</code> <code>status ></code><code>/dev/null</code> <code>2>&1</code>
<code> </code><code>iptables -I INPUT -p tcp --dport 80 -j ACCEPT &&</code>
<code>#iptables -I INPUT -p tcp --dport 3306 -j ACCEPT && </code>
<code> </code><code>service iptables save ></code><code>/dev/null</code> <code>2>&1</code>
<code> </code><code>/etc/init</code><code>.d</code><code>/iptables</code> <code>restart</code>
<code> </code><code>echo</code> <code>-e </code><code>"\033[32m iptables is stopd\033[0m"</code>
<code>echo</code> <code>-e </code><code>"\033[42;37m MySql Username:root Password:$SQLNEW \033[0m"</code>
<code>echo</code> <code>-e </code><code>"\033[42;37m URL:http://$IP/cacti \033[0m"</code>
<code>echo</code> <code>-e </code><code>"\033[42;37m $VER is Install Success,Username:Admin Password:admin \033[0m"</code>
本文轉自 KaliArch 51CTO部落格,原文連結:http://blog.51cto.com/kaliarch/1898212,如需轉載請自行聯系原作者