| Subcribe via RSS

squid在cacti中监控的问题

十二月 23rd, 2008 | No Comments | Posted in Cacti, Squid < by Michael Field >

被监控的为squid cache服务器squid中设定acl

  1. acl monitor src X.X.X.X/32
  2. acl snmppublic snmp_community public
  3. snmp_access allow snmppublic monitor
  4. snmp_access deny all

其中monitor设定的cacti服务器ip。
cacti中监控squid和host项都正常!所有绘图都没有问题;

在我修改acl后:

  1. snmp_access deny monitor

不但squid项监控没有数据,就连原本snmp也读取不到数据啦!
squid的设定能影响到snmpget采集数据?阻挡了snmp采集?

cacti日志报错:
WARNING: SNMP timeout detected [1000 ms], ignoring host
错误。

阅读内文 Tags:

SQUID动态URL日志不完整的问题

十月 17th, 2008 | 2 Comments | Posted in Squid < by ready >

SQUID 2.6.STABLE6

logformat combined %>a %ui %un [%tl] "%rm %ru  HTTP/%rv" %Hs %<st "%{Referer}>h" "%{User-Agent}>h" %Ss:%Sh %tr
access_log /home/squid/log/access.log combined

问题:
当访问的URL为:http://www.hiadmin.com/xxx.php?codetin=pig时:
日志为:

222.68.179.90 - - [18/Oct/2008:00:52:00 +0800] "GET http://www.hiadmin.com/xxx.php?  HTTP/1.1" 304 299 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)" TCP_IMS_HIT:NONE 0

URL后面的:codetin=pig 丢失了。

解决方法:
在squid.conf中添加:

strip_query_terms off

重新reload squid,日志正常。

strip_query_terms
默认为开启。是为了保护用户的隐私,而不在日志中记录“?”后面的参数。

阅读内文

Squid日志拆分shell

九月 9th, 2008 | 4 Comments | Posted in Linux, Squid, shell < by ready >

vi split_log.sh

#!/bin/sh
count=$#
if [ $count -le 0 ]
then
echo “please input date”
exit
fi
filename=”access.log”

cd ~weblog/

if [ ! -d ./$1 ]
then
mkdir ./$1
fi

cd ./$1

rm * -f

zcat ../$filename.$1.gz | gawk -F ‘[ /]‘ ‘ {dom=$11;print $0 >> dom}’

for file in ./*
do
if [ -s $file ]
then
gzip $file
else
rm $file -f
fi
done

参数使用的是长格式日期
例如:
./split_log.sh 20080909

在产生的日志中会出现一些莫名其妙的域名日志,这是由于有人非法使用squid做代理造成的。这样的情况在配置禁止非法代理也一样会发生。

阅读内文

一次网上面试经历

九月 7th, 2008 | 20 Comments | Posted in Squid, 生活随笔 < by Martian Guo >

应朋友介绍,有幸在网上接受了一家国内比较著名的网络公司的面试,其实这家公司之前已经接触过两次,对于这次面试,和上两次一样,至少自己是不满意的,感觉自己仍旧欠缺很多东西,先把这次面试的问题说一下

  • 你认为组成web站点体系有哪些元素?
  • 这样的配置,在apache起来后会有几个子进程? (别把这个问题想的简单化)
    <IfModule mpm_prefork_module>
    StartServers 5
    MinSpareServers 50
    MaxSpareServers 100
    MaxClients 150
    MaxRequestsPerChild 0
    </IfModule>
  • 在apache的worker MPM中,为什么ServerLimit要放到配置段最前面?
  • 千兆网卡的极限pps是多少?是如何算出来的?
  • 为什么lighttpd,nginx的并发性能比apache要高?
  • top命令里running的值表示什么意思?这个值和CPU数有什么关系?
  • 在http header头里看到的:Last-Modified,Expires,max-age,etag这四者有什么关系?
  • 一个web站点,如何计算所需要的带宽?公式是什么?
  • 如何看http的并发连接数的?
  • FIN_WAIT2是在什么状态?
    iostat看到的:
    wsec/s = 600
    那么wKB/s = ?
  • 当打开apache的mod_status后,可以通过http://ip/server-status看到相关的状态值,那么Srv, Acc, M,SS,Req各表示什么含义?
  • 如何计算客户端到服务器段的带宽?

对于上面这些问题,也说不上有多难,很多问题google上都能够找到,而且对于系统运维人员来说这些内容是必须了解的,但是你说仅仅是了解,恐怕也不够,其实很多东西不是说没接触过,而是都做过和接触过,但没有深入的去研究过,只知其然 而不知其所以然,感觉做我们这行的,需要掌握的知识面是相当广泛的,大到网络应用架构到,小到一个命令的参数,一个脚本编写,你都要知道,知识是需要积累的,但也需要你怎么运用他,我们很多时候所做的仅仅是如何用,而没有去考虑为什么要这样用,比如说技术文档,有多少人会仔细的查看MAN帮助,有多少人去研究过RFC文档?再比如说简单的iptables应用,一般很少会过多的去考虑当使用了iptables 后会对tcp连接产生多大的影响,可能在等到出现 “ip_conntrack: table full, dropping packet.”的情况下才会去检查问题的所在,很多人会觉得这些东西都是需要经验的,你碰到过这个问题就知道,没有碰到过就不知道,就如上面的问题,假如你的服务器每天就几千连接,恐怕你是一辈子都不会碰到这个问题的。道理是这样,但我们是不是也应该多了解一下这么做合理性,可能会出现什么问题。一个架构的实施一个软件的应用,不是简单的把它部署运行起来,我们应该考虑更多的问题。像我们blog的Johnny Woo同学,他考虑的问题就比我要深入的多,比如说他经常会做一些测试,各种WEB服务器,缓存服务器的性能测试,一些架构技术的研究,我想知识的积累就是如此,不是等待问题的出现,而是自己去找出可能会出现问题,GOOGLE提供给了我们一个非常巨大的知识库,我们如何把别人共享的知识转化成我们自己掌握的知识,关键还是在于实践,在于自己去找问题。还有一点,环境因素,就如上面说的,如果你的环境是每天只有几千人的访问量,你可能不会太多的去关注性能方面的问题,而即使关注,也仅仅是靠自己做一些实验测试而不能真正在生产环境下检验,这也是其中的一个问题,但关键一点还是在于自己,一个问题,一个技术是否是想继续深入的去了解呢,还是仅仅满足现在的要求而不考虑其他方面了。我想,我现在所欠缺的应该就是这些了。

另外再讨论一个问题:我们每天接触的最多的是自由软件,在感叹全世界那么多无私的开发者贡献出那么多完美的软件的同时,对于我们能做的难道仅仅是使用这些软件吗?我是相当佩服国内外一些做系统运维的牛人,他们是相当优秀的系统架构师,另外同时也是相当优秀的软件工程师。使用者最了解自己需要什么样的软件,那么对于系统运维,有谁比我们更了解我们需要什么吗?一个好的环境,再加上一份激情,你会有很多事情要做。

以上内容只是我个人的一些感受,希望经常关注我们blog的朋友能提供一些建议,非常感谢。

阅读内文

squid 2.6 round-robin分发后无法限制域名

八月 14th, 2008 | No Comments | Posted in Squid < by Johnny Woo >

原有的配置文件如下

cache_peer 10.11.12.51 parent 80 0 no-query originserver round-robin name=web1
cache_peer 10.11.12.52 parent 80 0 no-query originserver round-robin name=web2
cache_peer 10.11.12.53 parent 80 0 no-query originserver round-robin name=web3
cache_peer 10.11.12.54 parent 80 0 no-query originserver round-robin name=web4
cache_peer 10.11.12.160 parent 80 0 no-query originserver name=content
cache_peer 10.11.12.150 parent 80 0 no-query originserver name=bbs
cache_peer 172.16.10.140 parent 80 0 no-query originserver round-robin name=game1
cache_peer 172.16.10.141 parent 80 0 no-query originserver round-robin name=game2

cache_peer_domain contentchina content.web.com
cache_peer_domain bbs  bbs.web.com
cache_peer_domain game1 game2 game.web.com
cache_peer_domain web1 web2 web3 web4  .web.com
cache_peer_domain web1 web2 web3 web4   web.com

设定不同的二级域名分发到不同的服务器上.
www.web.com能够正确访问.
查看后台链接.每次访问时squid也会正常去连parent服务器,每次都轮询访问
测试game.web.com
返回有很多内容都是404
但是单独访问140以及141都是没有问题
然后发现很多链接分发到了其他web服务器上
看了说明.里面提到round-robin参数会设置一组随机的访问
感觉是写了round-robin的都是一个组
所以将game的去掉round-robin参数

cache_peer 172.16.10.140 parent 80 0 no-query originserver name=game1
cache_peer 172.16.10.141 parent 80 0 no-query originserver name=game2

访问后仍旧发现还是有分发错误的情况
再次查看squid.conf.default
里面的cache_peer_domain的语法如下

#       cache_peer_domain cache-host domain [domain ...]
#       cache_peer_domain cache-host !domain

感觉是否是因为cache-host这里只能写一台服务器而非一组的关系
随将配置文件修改

cache_peer 10.11.12.51 parent 80 0 no-query originserver round-robin name=web1
cache_peer 10.11.12.52 parent 80 0 no-query originserver round-robin name=web2
cache_peer 10.11.12.53 parent 80 0 no-query originserver round-robin name=web3
cache_peer 10.11.12.54 parent 80 0 no-query originserver round-robin name=web4
cache_peer 10.11.12.160 parent 80 0 no-query originserver name=content
cache_peer 10.11.12.150 parent 80 0 no-query originserver name=bbs
cache_peer 172.16.10.140 parent 80 0 no-query originserver round-robin name=game1
cache_peer 172.16.10.141 parent 80 0 no-query originserver round-robin name=game2

cache_peer_domain contentchina content.web.com
cache_peer_domain bbs  bbs.web.com
cache_peer_domain game1 game.web.com
cache_peer_domain game2 game.web.com
cache_peer_domain web1 .web.com
cache_peer_domain web2 .web.com
cache_peer_domain web3 .web.com
cache_peer_domain web4 .web.com
cache_peer_domain web1 web.com
cache_peer_domain web2 web.com
cache_peer_domain web3 web.com
cache_peer_domain web4 web.com

修改后访问game.web.com
问题解决.没有出现404
后台的分发很正常
可能由于cache-host这里写了一组
导致squid并无法辨识进行针对性的分发
随即将所有的分发都分发到所有round-robin服务器上.
因为www.web.com后端的服务器较多.命中的概率较大.
而命中后第二次取出文件即是squid中的缓存文件,所以访问www.web.com时没有发现问题
而game.web.com因为真实服务器比例较小
分发时很多链接分发到其他web服务器.
导致反馈回很多404

阅读内文 Tags: ,