线上的Nagios Client端的监控脚本因为业务需求又发生改动了,某业务集群差不多就有23台(下面的list只列出了8台),而且其中的一个业务需求脚本前前后后改动了4次,如果手动操作的话会累死人,幸亏有Fabric这个轻量级的自动化运维工具,代码如下:
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
<code>#!/usr/bin/python2.6</code>
<code>from</code> <code>fabric.api </code><code>import</code> <code>*</code>
<code>from</code> <code>fabric.colors </code><code>import</code> <code>*</code>
<code>from</code> <code>fabric.context_managers </code><code>import</code> <code>*</code>
<code>user </code><code>=</code> <code>'ec2-user'</code>
<code>hosts </code><code>=</code> <code>[</code><code>'bidder1'</code><code>,</code><code>'bidder2'</code><code>,</code><code>'bidder3'</code><code>,</code><code>'bidder4'</code><code>,</code><code>'bidder5'</code><code>,</code><code>'bidder6'</code><code>,</code><code>'bidder7'</code><code>,</code><code>'bidder8'</code><code>]</code>
<code># hosts = ['bidder1',]</code>
<code>@task</code>
<code>def</code> <code>put_task():</code>
<code> </code><code>print</code> <code>yellow(</code><code>"Put Local File to remote"</code><code>)</code>
<code> </code><code>with settings(warn_only</code><code>=</code><code>True</code><code>):</code>
<code> </code><code>put(</code><code>"/home/ec2-user/check_cpu_utili.sh"</code><code>,</code><code>"/home/ec2-user/check_cpu_utili.sh"</code><code>)</code>
<code> </code><code>sudo(</code><code>"cp /home/ec2-user/check_cpu_utili.sh /usr/local/nagios/libexec"</code><code>)</code>
<code> </code><code>sudo(</code><code>"chown nagios:nagios /usr/local/nagios/libexec/check_cpu_utili.sh"</code><code>)</code>
<code> </code><code>sudo(</code><code>"chmod +x /usr/local/nagios/libexec/check_cpu_utili"</code><code>)</code>
<code> </code><code>sudo(</code><code>"kill -9 `ps aux | grep nrpe | head -n1 | awk '{print $2}' `"</code><code>)</code>
<code> </code><code>sudo(</code><code>"/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d"</code><code>)</code>
<code> </code><code>print</code> <code>green(</code><code>"Put File success and restart nagios nrpe service!"</code><code>)</code>
<code>for</code> <code>host </code><code>in</code> <code>hosts:</code>
<code> </code><code>env.host_string </code><code>=</code> <code>host</code>
<code> </code><code>put_task()</code>
<code>#put_task()</code>
本文转自 抚琴煮酒 51CTO博客,原文链接:http://blog.51cto.com/yuhongchun/1681291,如需转载请自行联系原作者