存档

‘5.综合内容’ 分类的存档

修改IE默认源代码查看程序

2010年3月30日 代码罐头 3 条评论

默认是NOTEPAD…
老外有做专门的修改工具
ViewSourceEditor

分类: HTML, 应用软件 标签:

zabbix(应用二)proxy分布式部署

2010年3月23日 Michael Field 5 条评论

一、zabbix server / agentd安装
zabbix安装文档网上到处都是,这里不再重复。
可以参考:
网络监控软件Zabbix详细安装步骤

zabbix proxy简单架构图如下:

二、proxy安装:
1、下载zabbix1.8.1解压后,需要net-snmp和libcurl支持

编译安装
./configure --enable-proxy --with-mysql --with-net-snmp –with-libcurl
make && make install
2、mysql设定
shell> mysql -u<username> -p<password>
mysql> create database zabbix character set utf8;
mysql> GRANT ALL ON zabbix.* TO zabbix@'localhost' IDENTIFIED BY 'zabbixpass';
mysql> flush privileges;
mysql> quit;
shell> cd create/schema
shell> cat mysql.sql | mysql -u<username> -p<password> zabbix

3、zabbix_proxy.conf配置文件设定:

Server=zabbix_server #zabbix server的ip地址或者域名
Hostname=Telcom_proxy #proxy主机名,在zabbix web会以这个名字为准

#DB 设定档
DBName=zabbix
DBUser=zabbix
DBPassword=zabbixpass

ProxyLocalBuffer=0            #设定为0小时,除非有其他第三方应用和插件需要调用
ProxyOfflineBuffer=1          #proxy或者server无法连接时,保留离线的监控数据的时间,单位小时

ConfigFrequency=600        #server和proxy配置修改同步时间间隔,设定5-10分钟即可。
DataSenderFrequency=10  #数据发送时间间隔,10-30s;
                                    #网络传输质量越好,可以设定间隔时间越短,监控效果也越迅速;

StartPollers=10                #开启多线程数,一般不要超过30个;
StartPollersUnreachable=1 #该线程用来单独监控无法连接的主机,1个即可;
StartTrappers=10             #trapper线程数
StartPingers=1                 #fping线程数
CacheSize=64M                #用来保存监控数据的缓存数,根据监控主机数量适当调整;
Timeout=10                     #超时时间,设定不要超过30s,不然会拖慢其他监控数据抓取时间;
TrapperTimeout=30           #同上
FpingLocation=/usr/sbin/fping  #配合simple check icmp检测使用,如不需要可关闭;

其他配置默认即可;

4、在zabbix web interface中添加proxy:
Administration -> GM -> proxies [create proxy]

这里主机名要和proxy配置文件中设定相同,区分大小写;

三、proxy下的被监控主机的zabbix_agentd.conf设定:
Server=Telcom_proxy #输入Telcom_proxy的IP地址
重启zabbix agentd服务;在日志中看到

zabbix_agentd active check started [Telcom_proxy:10051]

说明连接proxy成功;

四、添加proxy监控的主机
如下图:

五、检测代理是否正确使用
1、查看zabbix_proxy.log是否能看到被监控主机的错误报告信息;
2、在web中能看到主机的监控数据;

六、切换代理监控
需修改被监控主机的agentd 配置文件中的Server=切换的代理服务器ip,然后再web中修改主机为用其他代理服务器监控;
如不修改主机的agentd,及时修改用其他代理服务器监控也会被zabbix server自动改回原来的代理,这点请注意。

zabbix(应用一) 使用自动注册action批量添加主机

2010年3月18日 Michael Field 5 条评论

zabbix的 discovery功能可以很简单的实现批量添加主机的功能,但是默认添加的主机的hostname都是IP地址,这样不利于记忆和管理;
尤其当服务器数量庞大的时候,修改起来就非常的痛苦啦。

所以这里我推荐使用Configuration -> Actions -> auto registration,如图:

具体内容:

当安装完zabbix_agentd的服务器就会主动上报,加入到监控中。
需要在zabbix_agentd.conf中注明:

Hostname=hostserver-wwwXX
#无需开启active checks

批量修改主机名可以自制rpm包安装来解决。

在zabbix_rpm.spec加入
%post
        /bin/sed -i s/sedname/`/bin/hostname`/g /etc/zabbix/zabbix_agentd.conf

cacti rrdtool snmp 版本错误问题

2010年3月12日 Michael Field 没有评论

最近新安装了cacti 0.8.7e

发现了个很莫名的问题:无法画图并且主机检测snmp error

在Console -> Utilities -> Technical Support中发现:

snmp  Version:显示为空

RRDTool Version:ERROR: Installed RRDTool version does not match configured version.
Please visit the Configuration Settings and select the correct RRDTool Utility Version.

排查所有可能引起的问题。php 模块,rrdtool也从1.4换到1.3再到1.2.30搞郁闷啦。

最后到官网发现原来是0.8.7e的bug 打了官方补丁后ok啦。虽然Technical Support中还是显示错误,但可以画图和snmp检测主机啦。
以下脚本,大家如果发现有同样问题,可以复制保存为sh文件在cacti web目录中执行即可。

wget http://www.cacti.net/downloads/patches/0.8.7e/cli_add_graph.patch
wget http://www.cacti.net/downloads/patches/0.8.7e/snmp_invalid_response.patch
wget http://www.cacti.net/downloads/patches/0.8.7e/template_duplication.patch
wget http://www.cacti.net/downloads/patches/0.8.7e/fix_icmp_on_windows_iis_servers.patch
wget http://www.cacti.net/downloads/patches/0.8.7e/cross_site_fix.patch
patch -p1 -N < cli_add_graph.patch
patch -p1 -N < snmp_invalid_response.patch
patch -p1 -N < template_duplication.patch
patch -p1 -N < fix_icmp_on_windows_iis_servers.patch
patch -p1 -N < cross_site_fix.patch
分类: Cacti, RRDTool, 系统监控 标签:

分布式监控zabbix 99%汉化完成

2010年3月10日 Michael Field 15 条评论

最近改造公司监控环境,解决南北互通的带来数据延时而不能及时报警,所以选择分布式监控系统zabbix,使用下来感觉效能不错,功能齐全。

特别是开放团队以sa为基础,操作上带来极大的快捷。为了提高监控操作和方便推广,近日我自己改了汉化配置文件,先发出给大家下载试用;

有些不够精确的地方,请大家修正。

点击下载:cn_zh.inc.php.tar

解压后,复制到wwwroot/zabbix/include/locales/下覆盖原来的文件;

然后点击zabbix 首页右上角porfile,language 中选择Chinese(CN)即可。

等我文档整理完毕,在添加zabbix各项强大功能的安装和配置,以及分布式优化等文档。

利用taskset有效控制cpu资源

2009年10月12日 Michael Field 3 条评论

常常感觉系统资源不够用,一台机子上跑了不下3个比较重要的服务,但是每天我们还要在上面进行个备份压缩等处理,网络长时间传输,这在就很影响本就不够用的系统资源;

这个时候我们就可以把一些不太重要的比如copy/备份/同步等工作限定在一颗cpu上,或者是多核的cpu的一颗核心上进行处理,虽然这不一定是最有效的方法,但可以最大程度上利用了有效资源,降低那些不太重要的进程占用cpu资源;

查看系统下cpu信息:

#cat /proc/cpuinfo

taskset就可以帮我们完成这项工作,而且操作非常简单;

该工具系统默认安装,rpm包名util-linux

#taskset --help
taskset (util-linux 2.13-pre7)
usage: taskset [options] [mask | cpu-list] [pid | cmd [args...]]
set or get the affinity of a process

-p, –pid operate on existing given pid
-c, –cpu-list display and specify cpus in list format
-h, –help display this help
-v, –version output version information

举例:
1、开启一个只用0标记的cpu核心的新进程(job.sh是你的工作脚本)

#taskset -c 0 sh job.sh

2、查找现有的进程号,调整该进程cpu核心使用情况(23328举例用的进程号)

#taskset -pc 0 23328
pid 23328's current affinity list: 0-3  #0-3表示使用所有4核进行处理
pid 23328'
s new affinity list: 0 #调整后改为仅适用0标记单核处理

3、可在top中进行负载check

最后你可以在你的工作脚本中加入该指令来合理利用现有的cpu资源;

分类: Linux, 系统监控 标签:

Tomcat 并发测试

2009年8月4日 ready 7 条评论

工作需要测试了一下tomcat并发连接。
注:只是测试并发请求处理。业务、数据库相关均没有测试。

OS:CentOS 4.6 x64
CPU:Intel(R) Xeon(R) CPU           E5405  @ 2.00GHz x2
Mem: 8G
JDK:jdk-6u14-linux-i586i
Tomcat:apache-tomcat-6.0.20
测试工具:http_load

Tomcat中同一个应用开了8000~8005 一共6个端口。

测试的过程中为了能够让http_load尽可能的平均访问不同的端口,所以urls文件里面每个端口添加了10条记录。

测试1。
首先在urls文件里面添加10条8000端口的URL地址。

[root@localhost ~]# /usr/local/bin/http_load -parallel 200 -fetches 5000 urls

5000 fetches, 200 max parallel, 510000 bytes, in 1.0391 seconds
102 mean bytes/connection
4811.88 fetches/sec, 490811 bytes/sec
msecs/connect: 0.240075 mean, 0.68 max, 0.15 min
msecs/first-response: 40.4642 mean, 109.282 max, 0.452 min
HTTP response codes:
  code 200 -- 5000

[root@localhost ~]# /usr/local/bin/http_load -parallel 300 -fetches 5000 urls.txt
5000 fetches, 300 max parallel, 510000 bytes, in 3.0123 seconds
102 mean bytes/connection
1659.86 fetches/sec, 169306 bytes/sec
msecs/connect: 12.2703 mean, 3000.36 max, 0.16 min
msecs/first-response: 52.6458 mean, 239.945 max, 1.006 min
HTTP response codes:
  code 200 -- 5000

[root@localhost ~]# /usr/local/bin/http_load -parallel 300 -fetches 5000 urls.txt
5000 fetches, 300 max parallel, 510000 bytes, in 0.954591 seconds
102 mean bytes/connection
5237.85 fetches/sec, 534260 bytes/sec
msecs/connect: 0.279958 mean, 0.745 max, 0.155 min
msecs/first-response: 55.0805 mean, 113.472 max, 0.732 min
HTTP response codes:
  code 200 -- 5000

通过上面可以看出并发请求达到300的时候,msecs/connect、fetches/sec 已经开始变得不稳定。

[root@localhost ~]# /usr/local/bin/http_load -parallel 250 -fetches 5000 urls.txt
5000 fetches, 250 max parallel, 510000 bytes, in 3.00177 seconds
102 mean bytes/connection
1665.68 fetches/sec, 169900 bytes/sec
msecs/connect: 4.44925 mean, 2999.81 max, 0.148 min
msecs/first-response: 46.7389 mean, 112.785 max, 0.915 min
HTTP response codes:
  code 200 -- 5000

[root@localhost ~]# /usr/local/bin/http_load -parallel 250 -fetches 5000 urls.txt
5000 fetches, 250 max parallel, 510000 bytes, in 0.981205 seconds
102 mean bytes/connection
5095.78 fetches/sec, 519769 bytes/sec
msecs/connect: 0.255888 mean, 0.946 max, 0.142 min
msecs/first-response: 47.5066 mean, 108.264 max, 0.901 min
HTTP response codes:
  code 200 -- 5000

并发250和300存在同样的问题。这也就是说明tomcat一个端口处理200个并发比较正常。这个太让人失望了。

之后我按照上面的方法每次增加一个端口,增大parallel 进行测试。发现fetches/sec始终保持在4500+。不知道这个还能不能提升。

google搜索了一下Tomcat并发优化。好像有人可以让tomcat单端口并发达到1000。但是文章里面提到的优化方法我测试之前已经做过。-_-b

对Java的东西接触的不多,希望哪位大大可以指点指点。我的MSN:ready.king@hotmail.com。请注明“hiadmin”。谢谢~~

分类: 网站架构 标签:

linux下实现UDP端口映射

2009年3月13日 Michael Field 3 条评论

一、实际问题
snmp监听端口默认为UPD 161,当监控服务器无法直接访问时,就需要用到端口映射来解决!
同样问题还有dns服务器的UPD 53端口。

二、使用nc来映射UPD端口
假设被监控服务器的IP为192.168.1.1;用于端口映射的主机为某个公网IP如59.1.1.1;需要映射的端口为UDP 161转发端口设为1161(自定义建议1024以上端口)
在端口映射服务器上操作,要安装nc,一般系统都会安装;
【注:nc存在安全漏洞,一定要设定防火墙】

下载: code.txt
首先使用mkfifo建立管道文件
#mkfifo /tmp/snmpfifo
通过nc建立端口映射 -l为监听模式 -u为UDP -p为本地端口;将内网监控161端口映射到本地的1161端口上;
#nc -l -u -p 1161 < /tmp/snmpfifo | nc -u 192.168.1.1 161 > /tmp/snmpfifo
查看netstat 1161是否监听
#netstat -nlp |grep :1161
udp     0      0 0.0.0.0:1161       0.0.0.0:*          31472/nc

在监控服务器上进行测试是否能采集到数据:

下载: code.txt
#snmpwalk -c public -v2c 59.1.1.1:1161 if
IF-MIB::ifIndex.1 = INTEGER: 1
IF-MIB::ifIndex.2 = INTEGER: 2
IF-MIB::ifIndex.3 = INTEGER: 3
IF-MIB::ifIndex.4 = INTEGER: 4
IF-MIB::ifDescr.1 = STRING: lo
IF-MIB::ifDescr.2 = STRING: eth0
....

设定成功;这里存在一个问题就是nc监听的端口每次一连接就会挂起,采取一个比较笨的办法就是写个restart.sh脚本放在crontab中每分钟执行一次;
产生该问题的主要原因我在下面讲socat的时候会分析的;
针对snmp采集这样是没有问题,如果dns服务就不行啦!

三、采用nc升级版本的socat来实现UDP端口映射
软件包下载地址:http://www.dest-unreach.org/socat/download/
安装无非就是configure make make install
socat的主要特点就是在两个数据流之间建立通道;且支持众多协议和链接方式:ip, tcp, udp, ipv6, pipe,exec,system,open,proxy,openssl,socket等
这里不一一介绍啦!
有兴趣可以查看官方文档:http://www.dest-unreach.org/socat/doc/socat.html
我们说说如何使用socat建立UPD端口映射

下载: code.txt
#socat udp4-listen:11161,reuseaddr,fork UDP:[监控服务器IP]:161
udp4-listen:在本地建立的是一个udp ipv4协议的监听端口;
reuseaddr,绑定本地一个端口;
fork,设定多链接模式,即当一个链接被建立后,自动复制一个同样的端口再进行监听;

【注:nc就是因为缺少fork模式,所以每次监听只能处理一次连接】
socat是一个强大的软件,希望与有这方面需求的同仁一起学习这个好的工具!
ps:无论是nc方式还是socat方式,启动监听模式都是在前端占用一个shell,所以请在后台执行或者使用screen工具等等!

unetbootin-通用的u盘引导linux制作软件

2008年12月17日 Johnny Woo 4 条评论

标题已经说明一切了
如果你下载了iso
想做成U盘启动的系统
用这个就是了

分类: 应用软件 标签:

使用apachebench进行post压力测试

2008年12月3日 Johnny Woo 2 条评论

apachebench网上的资料很多
但是甚至包括国外的文章以及官方文档
出了help显示的内容之外就没有任何一丁点更详细些的内容了
要使用ab进行post数据测试.从help可以看出我们需要定义两个内容
一个是-p参数.指定需要post的数据
还有一个是-T参数,指定使用的content-type
我在服务器端简单的写了一个脚本.将获取到的post请求输出到文件

下载: code.txt
<?php
echo $_REQUEST['test'];
$file=fopen('/data/www/log.txt','a+');
fwrite($file,date("Y-m-d H:i:s"));
fwrite($file,$_REQUEST['test']);
fclose($file);
?>

然后在本地生成post.txt文件
内容为test=abc
使用ab进行测试
ab -n 1 -p post.txt http://192.168.0.2/test.php
发现服务器端接受到了请求,但是没有受到post的数据
使用类型之后.也还是不行
ab -n 1 -p post.txt -T ‘text/html’ http://192.168.0.2/test.php
使用get方式测试
ab -n 1 http://192.168.0.2/test.php?test=abc
服务器端则可以正常工作
和开始说的一样.翻烂了google也没有找到
最后只能用wireshark抓包
最后发现content-type一定要设置成为
application/x-www-form-urlencoded
最后如下测试.才最后通过
ab -n 1 -p post.txt -T ‘application/x-www-form-urlencoded’ http://192.168.0.2/test.php
还有postfile
如果有多条记录
内容可以写成

下载: code.txt
test1=a&test2=b

类似这样即可
这个也是文档中没有提及的,让我一开始以为postfile的格式有误.
网上有提到过一种格式

下载: code.txt
test1=a
test2=b

这种是不对的
这样的ab会把整个

下载: code.txt
a回车test2=b

当作test1这个field传送出去