centos部署Ganglia

发布在 Centos

Ganglia+RRDTool这对组合可以说是不错的机群监控软件了,在centos6下安装是十分简单的,服务端安装

1
2
3
yum install rrdtool-devel
yum install ganglia-gmetad
yum install ganglia-web

然后配置文件基本不用大量修改,位于/etc/ganglia/gmetad.conf

需要修改的就是添加客户端,比如:

1
2
3
data_source "proxy" 192.168.2.28:8749 192.168.2.36:8749 192.168.2.37:8749
data_source "dc" 192.168.2.45 192.168.2.44 192.168.2.43
data_source "v5" 192.168.2.32:8750 192.168.2.33:8750 192.168.2.62:8750 192.168.2.63:8750

不加端口则表示使用客户端默认的8649端口。

客户端安装:yum install ganglia-gmond即可,配置文件位于 /etc/ganglia/gmond.conf ,这里需要注意,如果需要分组管理的话,修改cluster name值和port值,同一分组中的机器的这两个值都必须一致,不同组的机器,这两个值不同。 cluster name的值要与gmetad.conf中的相应条目保持一致;port值的配置需要在udp_send_channel、udp_recv_channel和tcp_accept_channel三个部分同时设定,注间端口不要冲突。

最后,启动服务端和客户端的服务,web访问服务端的url(比如http://127.0.0.1/ganglia/ )就可以看到结果。

我遇到的问题就是某些客户端的内存读取不出来,重起客户端机器即可。原因未知。

评论和分享

iptables禁止某Ip

发布在 Centos

今天登录服务器一看,好家伙:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
tcp        0      0 198.74.121.150:80           38.103.160.12:33873         TIME_WAIT   -                   
tcp 0 0 198.74.121.150:80 38.103.160.12:45654 TIME_WAIT -
tcp 0 0 198.74.121.150:80 38.103.160.12:49337 TIME_WAIT -
tcp 0 0 198.74.121.150:80 38.103.160.12:35410 TIME_WAIT -
tcp 0 0 198.74.121.150:80 38.103.160.12:53982 TIME_WAIT -
tcp 0 0 198.74.121.150:80 38.103.160.12:55487 TIME_WAIT -
tcp 0 0 198.74.121.150:80 38.103.160.12:38964 TIME_WAIT -
tcp 0 0 198.74.121.150:80 38.103.160.12:39560 TIME_WAIT -
tcp 0 0 198.74.121.150:80 38.103.160.12:51861 TIME_WAIT -
tcp 0 0 198.74.121.150:80 38.103.160.12:60211 TIME_WAIT -
tcp 0 0 198.74.121.150:80 38.103.160.12:38490 TIME_WAIT -
tcp 0 0 198.74.121.150:80 38.103.160.12:48588 TIME_WAIT -
tcp 0 0 198.74.121.150:80 38.103.160.12:51625 TIME_WAIT -
tcp 0 0 198.74.121.150:80 38.103.160.12:47497 TIME_WAIT -
tcp 0 0 198.74.121.150:80 38.103.160.12:40164 TIME_WAIT -
tcp 0 0 198.74.121.150:80 38.103.160.12:42071 TIME_WAIT -
tcp 0 0 198.74.121.150:80 38.103.160.12:49687 TIME_WAIT -
tcp 0 0 198.74.121.150:80 38.103.160.12:59726 TIME_WAIT -
tcp 0 0 198.74.121.150:80 38.103.160.12:52097 TIME_WAIT -
tcp 0 0 198.74.121.150:80 38.103.160.12:46378 TIME_WAIT -

这尼玛绝对是非正常现象,想查看各个链接状态可以用下面的语句

1
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'

结果如下:

1
TIME_WAIT 10968

我就呵呵了,看了一下这个ip,米国的,发现blocklist上面这个IP也上榜了

1
2
3
4
5
6
7
8
9
10
11
12
Date +-1 Min +0100:	Host:	                    Service:	    On Server:	        to:	Status:
15.11.2014 15:00:54 cpanel2.ospdx.com bruteforcelogin hacked-joomla/brobot blocked
15.11.2014 12:00:51 cpanel2.ospdx.com bruteforcelogin hacked-joomla/brobot blocked
14.11.2014 21:07:00 cpanel2.ospdx.com bruteforcelogin hacked-joomla/brobot blocked
14.11.2014 18:05:50 cpanel2.ospdx.com bruteforcelogin hacked-joomla/brobot 1 x blocked
12.11.2014 06:04:33 cpanel2.ospdx.com bruteforcelogin hacked-joomla/brobot blocked
12.11.2014 03:07:11 cpanel2.ospdx.com bruteforcelogin hacked-joomla/brobot blocked
12.11.2014 00:10:14 cpanel2.ospdx.com bruteforcelogin hacked-joomla/brobot blocked
11.11.2014 21:10:53 cpanel2.ospdx.com bruteforcelogin hacked-joomla/brobot blocked
11.11.2014 18:09:53 cpanel2.ospdx.com bruteforcelogin hacked-joomla/brobot blocked
11.11.2014 15:05:37 cpanel2.ospdx.com bruteforcelogin hacked-joomla/brobot blocked
11.11.2014 12:08:18 cpanel2.ospdx.com bruteforcelogin hacked-joomla/brobot 1 x blocked

没啥说的,直接封IP吧,执行
iptables -I INPUT -s ***.***.***.*** -j DROP

如果想解封某ip,把I换成D即可。

最后,可以使用
iptables --list
查看当前规则列表。

评论和分享

一般情况下,python爬虫遇到ajax动态页面一般都是直接分析后模拟ajax请求获得数据。不过今天遇到个网站,由于某些原因不透露网址了,点击搜索按钮后,它先跳转到a页面,然后从a页面跳转到b页面,再由b页面跳回a页面。当完成这2次跳转后,ajax向a页面提交的请求才会返回结果。

也怀疑是不是cookie或者refenen的问题,但最终证实不是因为这个。即便伪造了请求头再访问a页面,返回的也不是真实的结果页面而是一段跳转到b页面的js代码。

既然不知道跳转过程中网站到底干了写什么,那就直接上大杀器吧。

phantomjs可以简单的理解为js解释器,selenium更不用多介绍了,用pip安装即可。
http://phantomjs.org/download.html 下载编译后的包(当然你可以自己下源码),解压后的bin目录中就是我们需要的东西。

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
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
import time
if __name__ == "__main__":
    dcap = dict(DesiredCapabilities.PHANTOMJS)
   dcap["phantomjs.page.settings.resourceTimeout"] = 5  # 超时
   dcap["phantomjs.page.settings.loadImages"] = False
   # 伪造ua信息
   dcap["phantomjs.page.settings.userAgent"] = ("myua")

# 添加头文件
   # dcap["phantomjs.page.customHeaders.Referer"] = (
   #    "https://www.google.com/"
   #)
   # 代理
   service_args = [
       '--proxy=127.0.0.1:8080',
       #'--proxy-type=http',
       #'--proxy-type=socks5',
       #'--proxy-auth=username:password'
   ]
    driver = webdriver.PhantomJS(
        executable_path='./phantomjs',
        service_args=service_args,
        desired_capabilities=dcap
   )
driver.get("http://www.xxx.cn/")
driver.find_element_by_id('kw').send_keys("xxx") #模仿填写搜索内容
driver.find_element_by_id("btn_ci").click() #模仿点击搜索按钮
time.sleep(7)#等待页面加载
page = driver.page_source
open("res.html","w").write(page)
driver.quit()

其中,我的源码直接放在了bin目录,所以executable_path直接指向当前目录,find_element_by_id这个查看目标网站源码就能知道,sleep的时间也要根据实际情况修改。这里也可以使用driver.implicitly_wait(30),不过这个网站的数据id都是随机生成的,所以我直接使用sleep了。

参考网站:

http://phantomjs.org/quick-start.html

http://blog.chinaunix.net/uid-22414998-id-3692113.html

http://blog.csdn.net/xiaoyao3857/article/details/9180989

https://realpython.com/blog/python/headless-selenium-testing-with-python-and-phantomjs/

评论和分享

  • 第 1 页 共 1 页
作者的图片

Roy

微信公众号:hi-roy


野生程序猿


China