openwrt squid怎么openwrt 添加开机启动动

最近搞了个openwrt的router,以往都用代理来上网,但是代理每次都要设置端口啊,代理IP这些,觉得很心烦。现在好了,用openwrt搭建一个透明代理,让所有接上这个router的人都通过代理上网,还可以对他们监控和进行一些规则设定: )
我的Local proxy是这样的,如图:
我的squid版本为2.7
非常多的电脑接入我的openwrt,我用的是淘宝买的DB120。感觉还不错,然后我ssh进入openwrt。
1 ssh 192.168.8.1 &l root
随后输入密码,进入登陆界面,先安装squid。
1 opkg update
2 opkg install squid
安装完后,和对PC机Linux的squid操作一样,编辑squid.conf
1 vim /etc/squid/squid.conf
按照另一篇我的另一篇《Linux network proxy and route》里边对squid.conf的配置后,要多添加点东东。首先说一些相关的语法:
cache_peer [上层proxy主机名] [proxy角色] [proxy port] [icp port] [额外参数]
& 上层proxy主机名:其实就是上层proxy的IP,我的就是172.16.54.159
&Proxy角色:这部proxy是我们的上层(parent),还是邻居sibling的协作proxy?在这里,我们要向parent proxy拿数据,所以肯定是parent啦: )
Proxy port:当然就是端口号啦,一般都是3128. 因为我比较懒,所以不改设置&
Icp port:通常是3130
额外参数:针对parent proxy,想要对它操作的行为设定。主要有:
Proxy-only:向parent proxy要数据不会存储到本地proxy的服务器,降低本地proxy的负担。
Weight=n:权重,因为可以指定多部上层的proxy服务器,所以可以设定哪个比较重要。N越大表示这部proxy越重要!
no-query:向上层proxy需要拿数据,可以不发送icp封包,以降低主机的负担。
no-digest:表示不向附近主机要求建立digest记录表格
no-netdb-exchange:表示不向附近的proxy主机送出imcp封包要求。
cache_peer_access [上层proxy主机名] [allow|deny] [acl名称]
主要是用acl设计一个名称后,再以cache_peer_access去放行或者拒绝读取。
好了,我的上层proxy是172.16.54.159,所以在squid.conf里边添加:
1 cache_peer 172.16.54.159 parent 3128 3130 proxy-only no-query no-digest
这样就成功设置了上层proxy,下面如何强制所有在192.168.8.x网段的人都一定要用我的proxy上网呢?也就是说每台机不用设置proxy也可以直接使用openwrt的proxy上网。其实很简单,继续在squid.conf里边的http_port中添加:
1 http_port 3128 transparent
保存后退出,启动squid就可以了,很简单吧?当然这里只是简单的配置了,如果还想要更多的功能,需要自己去了解下squid.conf就可以了,我比较懒,就做到这么多了: &
还有一些问题需要注意,怎么知道自己的squid.conf启动了呢?
ps &aux 看看是否有squid的进程
netstat &an 看是否有用户连接到squid所监听的ip及端口
但是只是做了squid.conf的配置还不行呢,必须把端口80重定向到3128才可以哦,不然用了透明代理也上不了网呀:&
网上有些人是这么做的,所以在终端输入:
1 opkg install iptables-utils iptables-mod-nat-extra
2 iptables-save & iptables.org
3 iptables &t nat &A PREROUTING &i br-lan &p tcp --dport 80 &j REDIRECT --to-ports 3128
第1行是openwrt安装iptables的一些工具,第2行是保存现在的iptalbes设置,如果以后不想用透明代理,就可以直接在终端输入:
1 iptables-restore iptables.org
这样就恢复原状了嘛J
第三行是用iptables重定向80到3128,网上好多人好像都可以,但是我遇到一个问题,就是我输入这个命令以后,出现:
iptables: No chain/target/match by that name
我到现在还没弄清楚怎么回事呢,在网上也找了好久,好像是某些模块没编译进内核,但是根据openwrt官网上说的,我应该编译进去了。我后来用了另一个命令来redirect,现在也运行得不错,凑合着用吧。
我这么做的,在终端输入了:
1 iptables &t nat &A PREROUTING &i br-lan &p tcp --src 192.168.8.0/24 --dport 80 &j DNAT --to 192.168.8.1:3128
结果成功运行了,可以访问网站,我对iptables也不是很熟悉,等熟悉了再分析吧:&
阅读(...) 评论()查看: 2334|回复: 5
求HG255d openwrt Squid安装以及配置教程。
公司宿舍的网路使用Squid 做代理服务器,每次上网的时候都要在IE里面设置代理才可以上。能不能在OPENWRT路由器上面安装SQUID,然后免去每次上网要设置IE代理的过程呢?求各位高手给个方案。谢谢!!
期待高手出现......
座等高手出现。。。。。
顶上去》。。。。。。
Powered by3346人阅读
Linux(116)
操作系统的版本为Red Hat AS4 update5版本。
系统选择最小安装。开启防火墙,防火墙开启ssh及www两项服务端口,在安装系统的时候关掉SEL
系统分区时创建三个交换分区,每个交换分区的大小为实际物理内存的2倍,三个交换分区的优先级相同。
# more /var/log/messages //检查有无系统内核级错误信息
# demesg //检查硬件设备是否有错误信息
# ifconfig //检查网卡设置是否正确
// 检查网络是否正常
# setup //选择启动的服务
进入system service 选项。以space 键选定所需服务。以下仅列出需要启动的服务,未列出的服务一律关闭:
microcode_ctl
# crontab –e
0 4 * * * /usr/sbin/ntpdate 210.72.145.44
以上命令设置好后存盘。
# /sbin/service crond reload
机器将在每天的4:00根据中国国家授时中心的NTP服务器时间自动校准时间。
服务器Apache选择2.2版,2.2版的Apache能在混合多进程、 多线程模式下运行,使很多配置的可扩缩性得到改善。
默认情况下,apache安装完以后,是不允许被cache的。如果外接了cache或squid服务器要求进行web加速的话,就需要在httpd.conf里进行设置,当然前提是在安装apache的时候要激活mod_cache的模块。&
安装与配置的步骤
apache 编译配置:
# ./buildconf
./configure \
--with-mpm=worker \
--enable-cache --enable-disk-cache --enable-mem-cache --enable-file-cache \
--enable-mods=max \
--enable-mod-share=most
参数 -with-mpm={prefork,worker},这个是设置Apache的多任务处理的。prefork是指每个连接一个进程,也就是多进程并行处理;而worker是多线程并行处理。支持多线程处理是apache 2的一大改进。
#make install
检验是否安装了cache模块:
/usr/local/apache2/bin/apachectl –l
如果有mod_cache.c
mod_disk_cache.c
mod_mem_cache.c
这3个模块,说明该apache已经可以支持cache。
更改httpd.conf的设置
vi /usr/local/apache2/conf/httpd.conf
在末尾添加上:
# 启用有效期控制
expiresactive on
ExpiresByType text/html A1800&&&&&&&&& # html 文件有效期为30分钟
ExpiresByType text/htm A1800&&&&&&&&&&&&& # htm 文件有效期为30分钟
ExpiresByType text/shtml A1800&&&&&&&& # shtml 文件有效期为30分钟
ExpiresByType image/gif A86400 &&&&&&& # gif文件有效期为一天
ExpiresByType image/jpeg A86400 &&&&&& # jig 文件有效期为一天
ExpiresByType image/png A86400&&& &&&& # png文件有效期为一天
ExpiresByType text/css A86400&&&&&&&&& # css文件有效期为一天
ExpiresByType text/js A86400&&&&&&&&&&&&& # js文件有效期为一天
设置虚拟目录&
然后保存退出。
启动apache&
参数的解释:&
ExpiresByType 在apache应答时在网页文件添加http头,以控制文档的有效性和持久性。
# 启用有效期控制&
ExpiresActive On
# GIF有效期为1个月
ExpiresByType image/gif A2592000
# HTML文档的有效期是最后修改时刻后的一星期
ExpiresByType text/html M
&M&表示源文件的最后修改时刻,&A&表示客户端对源文件的访问时刻。
如果使用&M&,所有缓存服务器中的当前同一文档副本都将在同一时刻过期。
如果使用&A&,则每个客户端所得到的有效期是不一样的,如果设定文件过期时间为10分钟,当地一个用户在早上8点访问该文件,该文件被缓存后,默认十分钟过期,即该文件将在8:10过期,第二个用户于8:09访问该文件,那么该文件的过期时间将从8:09分开始计算,文件缓存十分钟,文件将在8:19分过期。
使用了“A”,表明Apache控制文件过期采用了客户端访问该文件最后的时间加上文件的有效期作为过期时间。
的安装和设置
本方案选则squid的版本为squid-2.6.STABLE17,并采用二进制包安装。
的编译安装
解压缩squid源码包,并进行编译安装:
#tar xzvf squid-2.6.tar.gz
#cd squid-2.6
./configure --prefix=/usr/local/squid --enable-dlmalloc --with-pthreads --enable-poll \ --disable-internal-dns & --enable-stacktrace --enable-removal-policies=&heap,lru& \ --enable-delay-pools --enable-storeio=&aufs,coss,diskd,ufs& --enable-arp-acl \ --enable-err-language=&Simplify_Chinese&--enable-underscore--enable-snmp
\ --enable-default-err-languages=&Simplify_Chinese&&&& --enable-linux-netfilter \ --disable-ident-lookups --enable-async-io=80
编译参数解释:
--enable-cache-digests 使用缓存摘要,此项目的是为了在Squid集群服务之间迅速发现缓存对象,在本地使用,可以加快请求时,检索缓存内容的速度。
--enable-cahce-digests& :加快请求时检索缓存内容的速度。
--enable-snmp 使Squid支持SNMP接口
&--enable-async-io=80 :这个主要是设置使用异步模式来运行squid,--enable-icmp& :加入icmp支持&
--enable-kill-parent-hack :关掉suqid的时候,要不要连同父进程一起关掉
--enable-poll& :应启用Poll (轮询)函数而不是select函数
--enable-linux-netfilter :可以支持透明代理&
--enable-underscore& :允许解析的URL中出现下划先,因为默认squid会认为带下划线的URL地址是非法的,并拒绝访问该地址。
#make install
Squid安装完成了。
参数配置  
#&vi& squid.conf&&代码如下:
#监听服务器的80端口,反向代理,支持域名和IP的虚拟主机
http_port 219.234.80.151:80 vhost vport&&&&
#将icp通讯端口设置为3130
icp_port 3130&&&&&
#设置源Web服务器的ip和端口
cache_peer 219.234.80.141 parent 80 0 no-query originserver no-digest name=cache0&&&
#设置web服务器优先级第二的源地址及端口
cache_peer 219.234.80.142parent 80 0 no-query originserver no-digest name=cache1&&&&
#设置web服务器优先级第三的源地址及端口
#配置本机squid允许接受访问的域名,请注意name的对应
cache_peer 219.234.80.143 parent 80 0 no-query originserver no-digest name=cache2&
注:以上源服务器优先级配置为cache1的优先级配置,cache2上的优先级配置如下:
cache_peer 219.234.80.142& parent 80 0 no-query originserver no-digest name=cache0
cache_peer 219.234.80.143& parent 80 0 no-query originserver no-digest name=cache1
cache_peer 219.234.80.141& parent 80 0 no-query originserver no-digest name=cache2
以下参数为共同参数:
#允许以下端口的代理
acl Safe_ports port 80
acl Safe_ports port 3130
#Squid信息设置
visible_hostname
#squid使用的用户组和用户名
cache_effective_user nobody
cache_effective_group nobody
#tcp receive buffer size
tcp_recv_bufsize 65535 bytes
client_persistent_connections off
server_persistent_connections on
#for security set half_closed_clients off
half_closed_clients off
#设置Squid所能使用的内存共1024MB,这个值因人而异,缓存设置应为物理缓存的25%,当缓存空间使用达到95%时新的内容将取代旧的而不直接添加到目录中,直到空间又下降到90%才停止这一活动
cache_mem 1024MB
cache_swap_low 90
cache_swap_high 95
#设置缓存服务器中缓存文件的大小,在设定数值范围外的文件将不被缓存。
maximum_object_size 4096 KB
minimum_object_size 0 KB&&
maximum_object_size_in_memory 4096 KB& #设定缓存服务器中内存中可以缓存的文件最大值
ipcache_size 1024
ipcache_low 90
ipcache_high 95
cache_replacement_policy lru& #磁盘缓存置换策略使用最近最少使用
memory_replacement_policy lru &#内存置换策略使用最近最少使用算法
#磁盘缓存的类型和目录,大小,一二级目录的设置,这里磁盘缓存大小是10240MB,都是 16* 256 级子目录
cache_dir ufs& /cache0
cache_dir ufs& /cache1
#这个设置是不记录store.log (记录储存管理的活动)
cache_store_log none
#日志保留最近30个文件,每天轮询三次,即保留最近十天的内容.
logfile_rotate& 30
#设置默认刷新规则,关于refresh_pattern参数的解释见备注
refresh_pattern -i .html 080 reload-into-ims
refresh_pattern -i .htm 080 reload-into-ims
refresh_pattern -i .shtml 080 reload-into-ims
refresh_pattern -i .png 160 reload-into-ims
refresh_pattern -i .gif 160 reload-into-ims
refresh_pattern -i .bmp 160 reload-into-ims
refresh_pattern -i .jpg 160 reload-into-ims
refresh_pattern -i .js 160 reload-into-ims
refresh_pattern -i .css 160 reload-into-ims
refresh_pattern -i .swf 160 reload-into-ims
#不要相信ETag 因为有gzip
acl apache rep_header Server ^Apache
broken_vary_encoding allow apache
#设置超时策略以节省服务器资源
#设置squid多长时间为请求寻找转发的路径,超过设定时间放弃转发.
forward_timeout 20 seconds
#设置squid多长时间等待TCP连接到请求服务器或者邻居服务器,时间超过此值Squid试图寻找转发请求的路径.
connect_timeout 15 seconds
#应用于服务器端连接,每次成功读取数据之后,timeout就设置为这个值.如果这个设置时间之后在所设定的时间内没有数据再被读,请求就中止.
read_timeout 3 minutes
#初始化连接建立后,多长时间去等待HTTP请求.
request_timeout 1 minutes
#先前的请求完成后,在一个持续的连接中多长时间去等待下一个HTTP请求
persistent_request_timeout 15 seconds
#允许一个客户保持连接到缓存进程的最大保留时间值.
client_lifetime 15 minutes
#关闭squid时,缓存程序处于关闭等待状态,当接收到关闭命令后,在设定的时间过后向用户返回超时信息。
shutdown_lifetime 5 seconds
#设置网页错误信息在缓存中的保留时间
negative_ttl 10 seconds
#打开emulate_httpd_log选项,将使Squid仿照Aapche的日志格式
emulate_httpd_log on
#日志格式combined的设置
logformat combined %&a %ui %un [%tl] &%rm %ru HTTP/%rv& %Hs %&st &%{Referer}&h& &%{User-Agent}&h& %Ss:%Sh
#这里是设置pid和日志文件的位置,因人而异,同时日志格式是combined,awstats可以直接调用分析了
pid_filename /usr/local/squid/var/squid.pid
cache_log /usr/local/squid/var/logs/cache.log
access_log /usr/local/squid/var/logs/access.log combined
#设置不想缓存的目录或者文件类型
acl all src 0.0.0.0/0.0.0.0
acl QUERY& urlpath_regex cgi-bin .php .cgi .avi .wmv .rm .ram .mpg .mpeg .zip.exe
.aspx .asp
cache deny QUERY
error_directory /usr/local/squid/share/errors/Simplify_Chinese
#允许没有被明确禁止的客户进行访问。
http_access allow all
保存配置文件退出。初始化和启动squid
# /usr/local/squid/sbin/squid -z
# /usr/local/squid/sbin/squid -NCd1
第一条命令是先初始化squid缓存哈希子目录,只需执行一次即可。
启动squid:./bin/RunCache &
使用squid附带的启动脚本来启动squid,有个好处就是,如果squid的进程死了的话,这个脚本会自动启动squid,对于运行在线上的服务器来说,这点很重要了。
开机自动运行squid
&&& 修改开机自动运行文件,将 /usr/local/squid/bin/RunCache & 加进开机自动执行的程序中。
第一次是以 root 身份启动,所以,/usr/local/squid/var/squid.out 及 /usr/local/squid/var/squid.pid 的拥有者是 root ,这会造成下列以 nobody 身份启动 squid 时,会有错误出现,所以,必须在第二次由 rc.local 启动前,先行将 squid.out 及 squid.pid 两个文件的所有者(owner)改为 nobody,即是
chown nobody:nobody /usr/local/squid/var/squid.out
chown nobody:nobody /usr/local/squid/var/logs/squid.pid
&&& 在 /etc/rc.d/rc.local 中加入 /usr/local/squid/bin/RunCache &
第二机房缓存服务器配置文件与第一机房缓存服务器配置文件基本相同,只需修改如下参数:
#设置源Web服务器的ip和端口
cache_peer源服务器地址parent 80 0 no-query originserver no-digest name=cache0
#连接B服务器的Squid工作在sibling模式并指定其端口
cache_peer 第二机房主缓存服务器地址 sibling 80 3130 name=cache1&&&&
缓存服务器之间的连接工作在Sibling模式,当Squid Server工作在Sibling模式时。当Squid Server没有资料时会先向Sibling连接的Squid Server要资料,如果Sibling没资料,就跳过它直接到internet 源服务器去获取。
参数选项值
默认参数值
建议参数值
建议参数选项值
设置端口是因为服务器要提供加速,使用、使缓存服务器支持域名及地址访问。
缓存服务器之间的通讯协议为,通讯端口为,设置缓存服务器间互相通信
本地没有缓存对象时可以到服务器获取缓存对象本地缓存服务器不会向子级服务器提出查询请求设置从源服务器获取数据。不再从内存摘要中查询其他缓存服务器。
指定访问域名,对该域名的访问,都将从所设定的服务器上读取源文件
连接接收缓冲区大小,控制服务器的连接数。
不保持客户端与缓存服务器链路层的长时间链接,节省服务器资源。
保持缓存服务器与源服务器链路层的长时间链接,方便缓存服务器读取数据。
为安全和节省资源关闭客户端的半连接
设置缓存内存大小为物理内存大小的,根据缓存服务器的配置设置为,设置过大容易造成服务器当机。
当缓存内容低于在此设定的数值时,文件直接添加到缓存中,而不是取代缓存中的旧文件。
当缓存空间达到设定的数值后,新内容将取代旧的内容,而不直接添加到缓存中。
设定磁盘缓存文件的最大值,大于该数值的文件不会被缓存
设定磁盘缓存文件的最小值,小于该数值的文件不会被缓存
设定内存中缓存单个文件的最大值,如果大于设定值,文件不会被缓存。
磁盘文件格式
的磁盘空间约需要内存作内存交换,根据网站现有文件大小,确保能保存天缓存的内容。建议设定的磁盘空间作为磁盘缓存,使用级子目录,目录位于下
缓存服务器存储频繁,记录存储管理的日志庞大且对管理员无意义,所以我们选择不记录缓存服务器存储管理的活动
(参数详细解释见备注)
为没有明确过时期限的响应设置过期规则,使用参数时在转发请求之前,先发送头部到原服务器判断文件是否修改过,根据返回值确定是否重新加载数据。
设置多长时间为请求寻找转发的路径超过设定时间放弃转发
设置多长时间等待连接到请求服务器或者邻居服务器时间超过此值试图寻找转发请求的路径
应用于服务器端连接每次成功读之后就设置为这个值如果这个设置时间之后没有数据再被读请求就中止
初始化连接建立后多长时间去等待请求
先前的请求完成后在一个持续的连接中多长时间去等待下一个请求
客户连接到缓存服务器后,缓存服务器保留该进程的最大时间,从第一次链接开始计时。
关闭时,缓存程序处于关闭等待状态,当接收到关闭命令后,在设定的时间过后向用户返回超时信息。
设置网页错误信息在缓存中的保留时间。
设置日志格式与日志格式一致
允许没有被明确禁止的客户进行访问
实时监控程序主要为三部分:第一部分为流量统计,对当天日志进行分析,获得用户访问的流量统计图表以web方式输出。第二部分为流量监控,主要监控机器的性能,主要包括cpu,mem,swap,disk等。第三部分为squid实时监控.监控squid运行的状态信息,包括如当前内存缓存信息,磁盘缓存信息,服务请求统计,资源使用,存储目录统计监控,源服务器状态等。
Systat&&&&&&&&&&&& 内存状态统计
gd-1.8.4-4&&&&&&&& 图形支持包
gd-devel-1.8.4-4
perl-5.6.0-17&&&&& perl的语言支持
mod_perl-1.24_01-3
libpng-1.0.12-2&&&& png图形支持库
libpng-devel-1.0.12-2
gcc-2.96-98&&&&&&&& c编译器
gcc-g77-2.96-98
gcc-c++-2.96-98
zlib-1.1.3-24
zlib-devel-1.1.3-24
httpd(apache)
net-snmp&&&&&&&&&& snmp协议
squid配置的日志为apache的格式,所以用awstats分析。
2.1.1.&Awstats编译安装与配置:
?&&&&&&& 下载awstats-6.5-1.tar.gz
?&&&&&&& 解压安装Tar zxvf& awstats-6.5-1.tar.gz –C /usr/local
Cd& !$/awstats-6.5-1/tools
./awstats_configure.pl
?&&&&&&& 修改配置文件vi /etc/awstats/awstats.192.168.6.67.conf
LogFile=&/usr/local/squid/var/logs/access.log& 配置要统计的日志文件
LogType=W要分析的日志格式与Apache相同
DirData=&/var/lib/awstats&设置数据的存储目录
?&&&&&&& 每天生成当日的统计分析
02 5 * * *& /usr/local/awstats/tools/awstats_updateall.pl
?&&&&&&& 配置认证与授权
&& &Location “/awstats/&
&AuthType Basic
&AuthName “admin”
&&& & AuthUserFile /usr/local/apache/htdocs/awstats.pwd
Require valid-user
&/Location&
?&&&&&&& 创建口令文件,并添加用户
Cd /usr/local/apache/htdocs/
Htpasswd –c awstats.pwd admin
Chown apache.apache swstats.pwd
?&&&&&&& 测试
&&&&& http://192.168.6.67/awstats/awstats.pl?config=192.168.6.67
2.2.1.&rpm –ivh mrtg.*.rpm
配置SNMP 让他可以配合MRTG工作。
?&&&&&&& 编辑/etc/snmp/snmpd.conf
把下面的#号去掉
#view mib2 included .iso.org.dod.internet.mgmt.mib-2 fc #在89行
把下面的语句#在62行
access notConfigGroup && any noauth exact systemview none none
access notConfigGroup && any noauth exact mib2 none none
改完重启一下snmp
Service snmpd restat
?&&&&&&& 生成一个配置文件把配置文件放在apache默认目录下:
Cfgmaker –output=/usr/local/apache/htdocs/mrtg/mrtg.cfg&
修改配置文件,添加对/opt/mrtg目录下cpu.sh& df.pl& diskio.sh& diskperf.sh& mem.sh&& space.sh& swap.sh等脚本的调用以收集信息。
?&&&&&&& 修改配置文件Vi /usr/local/apache/htdocs/mrtg/mrtg.cfg
WorkDir: /usr/local/apache/htdocs/mrtg设置mrtg的主目录
Options[_]: growright, bits把注释去掉
?&&&&&&& 生成主页,把生成的主页放到指定的mrtg主目录下。
/usr/bin/indexmaker –output=/usr/local/apache/htdocs/mrtg/index.html –titile=& /usr/local/apache/htdocs/mrtg/mrtg.cfg
?&&&&&&& 在/opt/下建立mrtg目录,分别建立程序cpu.sh& df.pl& diskio.sh& diskperf.sh& mem.sh&& space.sh& swap.sh,让mrtg配置文件每5分钟调用一次所有这些脚本以收集系统运行的状态信息。(详细代码见附脚本文件)
?&&&&&&& 手工建立一个配置文件,让所有用户可以访问vi /usr/local/apache/conf/mrtg.cfg
Alias /mrtg /usr/local/apache/htdocs/mrtg
&Location /mrtg&
& & &&& &&Order deny,allow
& &&&& &&Allow from all
&&& &/Location&
?&&&&&&& 配置认证与授权
&& &Location “/mrtg/&
&AuthType Basic
&AuthName “admin”
&&& & AuthUserFile /usr/local/apache/htdocs/mrtg.pwd
Require valid-user
&/Location&
?&&&&&&& 创建口令文件,并添加用户
Cd /usr/local/apache/htdocs/
Htpasswd –c mrtg.pwd admin
Chown apache.apache mrtg.pwd
?&&&&&&& 设置计划任务每天收集日志分析
&&& */5& *& *& *& *& env LANG=C /usr/bin/mrtg /usr/local/apache/htdocs/mrtg/mrtg.cfg&& 每五分钟收集一次状态信息。
02 4 * * * /usr/bin/indexmaker --output=/usr/local/apache/htdocs/mrtg/index.html --title= /usr/local/apache/htdocs/mrtg/mrtg.cfg
?&&&&&&& 测试
&& 访问:&
?&&&&&&& 将脚本复制到web站点的CGI目录
Cp /usr/local/squid/cachemgr.cgi /usr/local/apache/htdocs/cgi-bin
?&&&&&&& 配置对cgi的支持
Vi /usr/local/apache/conf/httpd.conf
ScriptAlias /cgi-bin/ “/usr/local/apache/htdocs/cgi-bin”
&Directory “/usr/local/apache/htdocs/cgi-bin”&
AllowOverride None
Option None
Order allow,deny
Allow from all
&/Directory&
AddHandler cgi-script .cgi .pl
Chmod 755 /usr/local/apache/htdocs/cgi-bin/cachemgr.cgi
?&&&&&&& 配置授权认证,只有管理员可以查看
&Location “/cgi-bin/cachemgr.cgi&
&AuthType Basic
&AuthName “admin”
&AuthUserFile /usr/local/squid/etc/squid.pwd
&Require valid-user
&/Location&
?&&&&&&& 创建口令文件,并添加用户
Cd /usr/local/squid/etc/
Htpasswd –c squid.pwd admin
Chown apache.apache squid.pwd
?&&&&&&& 测试
/usr/local/apache/bin/apachectl –k restart
在客户端的浏览器中:
主要实时监控如下参数:
内存使用监控
&IP缓存统计(IP缓存的个数,命中率等)
&缓存运行状态监控
平均5分钟的缓存访问统计
平均60分钟的缓存访问统计、
缓存使用监控
&源服务器统计
存储目录和文件使用监控
请求转发统计监控
以及其它方面的参数等。
把以上参数采集统计,分析。
点击尽可能所有的网页,
注意:1、400,403,500等错误情况。
&&&&& 2、内存池状态,确定磁盘使用的极限周期。
&&&&& 3、是否发现磁盘收发队列及其情况
[root@lotour67 mrtg]# cat cpu.sh
#!/bin/bash
cpuusr=`/usr/bin/sar -u 1 3 |grep Average |awk '{print $3}'`
cpusys=`/usr/bin/sar -u 1 3 |grep Average |awk '{print $5}'`
UPtime=`/usr/bin/uptime |awk '{print $3&&$4&&$5}'`
echo $cpuusr
echo $cpusys
echo $UPtime
[root@lotour67 mrtg]# cat df.pl
#!/usr/bin/perl
foreach $filesystem (`df -kl | grep -v &Filesystem&`)
& @df = split(/\s+/,$filesystem);
& $total += $df[1];
& $usage += $df[2];
print &$total\n&;
print &$usage\n&;
[root@lotour67 mrtg]# cat diskperf.sh
#!/bin/bash
disk=/dev/$hd
KBread_sec=`iostat -x $disk|grep $hd |awk '{print $8}'`
KBwrite_sec=`iostat -x $disk|grep $hd |awk '{print $9}'`
echo &$KBread_sec&
echo &$KBwrite_sec&
[root@lotour67 mrtg]# cat mem.sh
#!/bin/bash
# This script to monitor the mem usage.
totalmem=`/usr/bin/free |grep Mem |awk '{print $2}'`
usedmem=`/usr/bin/free |grep Mem |awk '{print $3}'`
echo &$totalmem&
echo &$usedmem&
[root@lotour67 mrtg]# cat swap.sh
#!/bin/bash
# This script to monitor the swap usage.
totalswap=`/usr/bin/free |grep Swap |awk '{print $2}'`
usedswap=`/usr/bin/free |grep Swap |awk '{print $3}'`
echo &$totalswap&
echo &$usedswap&
refresh_pattern的作用:
用于确定一个页面进入cache后,它在cache中停留的时间。
refresh_pattern [-i] regexp min percent max [options]
resource age =对象进入cache的时间-对象的last_modified
response age&&=当前时间-对象进入cache的时间
LM-factor=(response age)/(resource age)
举个例子,这里只考虑percent, 不考虑min&&和 max
例如:refresh_pattern& &20%&
假设源服务器上/index.htm&&---last-modified
squid上&/index.htm&& index.htm进入cache的时间
1)如果当前时间& & 03:00:00
resource age =3点-2点=60分钟
response age =0分钟
index.htm还可以在cache停留的时间(resource age)*20%=12分钟
也就是说,index.htm进入cache后,可以停留12分钟,才被重新确认。
2)如果当前时间&& 03:05:00
resource age =3点-2点=60分钟
response age =5分钟
index.htm还可以在cache中停留的时间(resource age)*20%=12 -5 =7分钟 LM-factor=5/60=8.3%&20%
& & 一直到 03:12:00& &LM-factor=12/60=20% 之后,cache中的页面index.htm终于stale。
& & 如果这时没有index.htm的请求,index.htm会一直在缓存中,如果有index.htm请求,squid收到该请求后,由于已经过期, squid会向源服务器发一个index.htm是否有改变的请求,源服务器收到后,如果index.htm没有更新,squid就不用更新缓存,直接把 缓存的内容放回给客户端,同时,重置对象进入cache的时间为与源服务器确认的时间,比如 03:13:00,如果正好在这个后重新确认了页面。重置后,resource age变长,相应在cache中存活的时间也变长。
& &如果有改变则把最新的index.htm返回给squid,squid收到会更新缓存,然后把新的index.htm返回给客户端,同时根据新页面中的Last_Modified和取页面的时间,重新计算resource age,进一步计算出存活时间。
& &实际上,一个页面进入cache后,他的存活时间就确定了,即 (resource age) * 百分比,一直到被重新确认。
& &squid收到一个页面请求时:
1、计算出response age,
2、如果response age&min 则 fresh&&如果response age&max 则 stale
3、如果response age在之间,如果response时间&存活时间,fresh,否则stale
#crontab –e
#mrtg每五分钟收集监控的数据
*/5 *& *&& *&& *&& env LANG=C /usr/bin/mrtg usr/local/apache/htdocs/mrtg/mrtg.cfg
#每天凌晨4点与中国标准时间池进行时间同步
0 4 * * * /usr/sbin/ntpdate 210.72.145.44
#每天12:01分进行第一次日志轮询,并运行日志拷贝脚本处理.
01 12&& *& *& *& /usr/local/squid/sbin/squid -k rotate
20 12&& *& *&& *& /bin/bash& /cachelog/chlog.sh
#每天18:01分进行第二次日志轮询,并运行日志拷贝脚本和屏幕共享日志处理
01 18&& * * * /usr/local/squid/sbin/squid -k rotate
20 18& *& *& *& /bin/bash& /cachelog/chlog1.sh
22 18& *& *& *& /bin/bash& /cachelog/clear.sh
#mrtg每天23:58进行更新首页.
58& 23& *&& *&& *&& /usr/bin/indexmaker --output=/usr/local/apache/htdocs/mrtg/index.html&&& --title=&Cache2 Monitor& /usr/local/apache/htdocs/mrtg/mrtg.cfg
#每天凌晨00:01进行第三次日志轮询,并运行日志拷贝脚本
01& 0&& * * * /usr/local/squid/sbin/squid -k rotate
20& 0&& *& *& *& /bin/bash& /cachelog/chlog2.sh
#每天01:01开始分别进行日志分割分步处理,sortlogX.sh完成轮询的三个日志按站点排序.
01& 1& *& *& * /bin/bash& /cachelog/sortlog.sh
02& 1& *& *& * /bin/bash& /cachelog/sortlog1.sh
03& 1& *& *& * /bin/bash& /cachelog/sortlog2.sh
#日志排序后,在2:01进行获取各站点在日志文件中的记录数
01& 2& *& *& *& /bin/bash& /cachelog/get_record_number.sh
02& 2& *& *& * &/bin/bash& /cachelog/get_record_number1.sh
03& 2& *& *& *& /bin/bash& /cachelog/get_record_number2.sh
#根据上一步各站点获得的记录数,stat_number.sh生成各站点记录范围
08& 2& *& *& *& /bin/bash& /cachelog/stat_number.sh
09& 2& *& *& *& /bin/bash& /cachelog/stat_number1.sh
10& 2& *& *& *& /bin/bash& /cachelog/stat_number2.sh
#对上一步进行优化,读取统计站点,去掉不需要统计的站点.
12& 2& *& *& *& /bin/bash& /cachelog/stat.sh
13& 2& *& *& *& /bin/bash& /cachelog/stat1.sh
14& 2& *& *& *& /bin/bash& /cachelog/stat2.sh
#根据最后生成的各站点在日志文件中的记录范围,实现日志分割.
21& 2& *& *& *& /bin/bash& /cachelog/get.sh
22& 2& *& *& *& /bin/bash& /cachelog/get1.sh
23& 2& *& *& *& /bin/bash& /cachelog/get2.sh
#每天生成昨天总的日志文件
30& 4& *& *& *& /bin/bash&& /cachelog/entirelog/cpentirelog.sh
&&相关文章推荐
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:249166次
积分:3298
积分:3298
排名:第9257名
原创:67篇
转载:113篇
评论:16条
(1)(1)(1)(4)(9)(1)(3)(2)(4)(3)(2)(2)(1)(1)(1)(3)(1)(1)(3)(8)(8)(4)(11)(1)(4)(11)(20)(35)(11)(1)(13)(10)

我要回帖

更多关于 openwrt 开机启动项 的文章

 

随机推荐