- 论坛徽章:
- 5
|
本帖最后由 274920831 于 2017-12-22 11:11 编辑
环境:
将亚马迅云上的cloudwatch的监控信息传给zabbix Server,使用网络上的这个插件:
https://github.com/omni-lchen/zabbix-cloudwatch
当我按照上面的步骤把配置文件弄好后,使用插件中的这个脚本zabbixCloudWatch.py,即可将cloudwatch的数据发送到zabbix server.
下面是这个执行这个脚本所需要带的options:
[root@redhat cloudwatch]# /usr/bin/python zabbixCloudWatch.py --help
Usage: zabbixCloudWatch.py [options]
Options:
--version show program's version number and exit
-h, --help show this help message and exit
-z ZABBIX, --zabbix=ZABBIX
zabbix server name
-x HOST, --host=HOST zabbix host name
-a ACCOUNT, --account=ACCOUNT
account name
-r REGION, --region=REGION
aws region
-s SERVICE, --service=SERVICE
aws service (ELB, SQS, DynamoDB, etc...)
-d DIMENSIONS, --dimensions=DIMENSIONS
Dimensions split with comma (LoadBalancerName=,
etc...)
-p PERIOD, --period=PERIOD
Period
-f STARTTIME, --starttime=STARTTIME
Start Time
-t ENDTIME, --endtime=ENDTIME
End Time
我先来解释一下:
-z 是zabbix server
-x 是被监控的服务器
-a 是在AWS云上建的一个帐户,赋予它一定的权限
-r 是指的云服务器所在的地理区域,像中国北京,就是cn-north-1
-s 是指的AWS上的服务,像EC2,RDS,ELB之类的
-d 是指的维度,AWS上的每个服务都有自己特定的维度
-p 是指的时间区域
-f 从什么时间
-t 到什么时间
当我直接执行下面的py脚本时,数据会把AWS云上的EC2主机的cloudwatch信息发送到zabbix server :
[root@redhat cloudwatch]# /usr/bin/python zabbixCloudWatch.py -x "54.212.211.137" -z "superman-zabbix.man-webplatform.com" -a "CloudWatch-test" -r "cn-north-1" -s "EC2" -d "InstanceId=i-0d3138e5be40eft01" -p "300" -f "2017-12-22 01:40:00" -t "2017-12-22 01:45:00"
如图1所示,是有数据的图
而当我使用shell脚本 AWSINSTANCE.sh 来调用这个python脚本时,shell脚本的内容如下所示:
#!/bin/bash
# Date: 08/08/2015
# Author: Long Chen
# Description: A script to bulk send RDS cloudwatch data to zabbix server
PATH=$PATH:/opt/zabbix/cloudwatch
export PATH
# EC2 instance indentifier
ID=$1
echo "$ID"
# Zabbix Host
ZABBIX_HOST=$2
echo "$ZABBIX_HOST"
# Zabbix Server
ZABBIX_SERVER=$3
echo "$ZABBIX_SERVER"
# AWS Account
ACCOUNT=$4
echo "$ACCOUNT"
# AWS Region
REGION=$5
echo "$REGION"
# Collecting 5-minute data from cloudwatch
PERIOD="300"
# Set start time and end time for collecting cloudwatch data
ENDTIME=$(date -u "+%F %H:%M:00")
STARTTIME=$(date -u "+%F %H:%M:00" -d "5 minutes ago")
# Send cloudwatch data of a table to Zabbix Server
/usr/bin/python /opt/zabbix/cloudwatch/zabbixCloudWatch.py -z "$ZABBIX_SERVER" -x "$ZABBIX_HOST" -a "$ACCOUNT" -r "$REGION" -s "EC2" -d "InstanceId=$ID" -p "$PERIOD" -f "$STARTTIME" -t "$ENDTIME
当我执行AWSINSTANCE.sh脚本带上这些参数时:
[root@redhat cron.d]# ./AWSINSTANCE.sh "i-0d3138e5be40eft01" "54.212.211.137" "superman-zabbix.man-webplatform.com" "CloudWatch-test" "cn-north-1" &>/dev/null
我对上面这个命令执行了20次,有16次是cloudwatch的信息无法传到zabbix-server,有4次是cloudwatch的信息传到zabbix-server。
我想问一下,是上面shell脚本有误吗?
上面的脚本实际上起到的作用就是把这个脚本后面跟的这些参数传到python脚本里面去,如果有误的话,应该如何来修改?
|
|