Hello Zabbix Community. Here is a handy bash script I create for CentOS 5.6 and Zabbix 1.8.5. Automatically installs and configures the zabbix agent from repo. Prompts user for a few responses and creates the host in zabbix frontend. This was written for a 3 node distributed monitoring setup so you will need to adjust it to fit your environment.
Code:
#==============================================================
# Zabbix-Create - Automated Agent/Host Install - (c) Travis Mathis - Millicorp 2011
# Version 2
# Change Log: 6/20/11 Finished Host Creation
#==============================================================
# VARIABLES
HOSTNAME=''
SERVER=''
IP=''
API=''
# CONSTANT VARIABLES
ERROR='0'
ZABBIX_USER='user'
ZABBIX_PASS='pass'
# Create zabbix.repo file in /etc/yum.repos.d/zabbix.repo
echo "[zabbix]" > /etc/yum.repos.d/zabbix.repo
echo "name=Zabbix (CentOS_5)" >> /etc/yum.repos.d/zabbix.repo
echo "type=rpm-md" >> /etc/yum.repos.d/zabbix.repo
echo "baseurl=http://download.opensuse.org/repositories/home:/ericgearhart:/zabbix/CentOS_CentOS-5/" >> /etc/yum.repos.d/zabbix.repo
echo "gpgcheck=1" >> /etc/yum.repos.d/zabbix.repo
echo "gpgkey=http://download.opensuse.org/repositories/home:/ericgearhart:/zabbix/CentOS_CentOS-5/repodata/repomd.xml.key" >> /etc/yum.repos.d/zabbix.repo
echo "enabled=1" >> /etc/yum.repos.d/zabbix.repo
# Find out where the server is located and store it as 2 variables.
# Edit Your information below
while [ $ERROR = 0 ]
do
read -p "What DATACENTER is this server located at?(MIA, FMY, LAX) " RESP
if [ "$RESP" != "MIA" ] && [ "$RESP" != "LAX" ] && [ "$RESP" != "FMY" ]; then
echo "That is not a valid option, please try again!"
echo ""
else
ERROR='1'
fi
done
if [ "$RESP" = "MIA" ]; then
SERVER='192.168.1.99'
API='http://192.168.1.99/zabbix/api_jsonrpc.php'
fi
if [ "$RESP" = "FMY" ]; then
SERVER='192.168.5.99'
API='http://192.168.5.99/zabbix/api_jsonrpc.php'
fi
if [ "$RESP" = "LAX" ]; then
SERVER='192.168.9.99'
API='http://192.168.9.99/zabbix/api_jsonrpc.php'
fi
# Request the Hostname of the server
echo ""
read -p "What is the HOSTNAME of the server? " RESP2
HOSTNAME="$RESP2"
# Request IPADDRESS of the server
echo ""
read -p "What is the IP ADDRESS of the server? " RESP3
IP="$RESP3"
# Install zabbix-agent
yum -y install zabbix-agent
create config file in /etc/zabbix/zabbix_agentd.conf
rm -rf /etc/zabbix/zabbix_agentd.conf
echo "LogFile=/tmp/zabbix_agentd.log" > /etc/zabbix/zabbix_agentd.conf
echo "Server=$SERVER" >> /etc/zabbix/zabbix_agentd.conf
echo "Hostname=$HOSTNAME" >> /etc/zabbix/zabbix_agentd.conf
# start zabbix agent
chkconfig --level 2345 zabbix-agentd on
service zabbix-agentd start
# Authenticate with Zabbix API
authenticate() {
curl -i -X POST -H 'Content-Type: application/json-rpc' -d "{\"params\": {\"password\": \"$ZABBIX_PASS\", \"user\": \"$ZABBIX_USER\"}, \"jsonrpc\": \"2.0\", \"method\": \"user.authenticate\",\"auth\": \"\", \"id\": 0}" $API | grep -Eo 'Set-Cookie: zbx_sessionid=.+' | head -n 1 | cut -d '=' -f 2 | tr -d '\r'
}
AUTH_TOKEN=$(authenticate)
# Give user HostGroup option list to choose from
get_host_groups() {
curl -i -X POST -H 'Content-Type: application/json-rpc' -d "{\"params\": {\"output\": \"extend\", \"sortfield\": \"name\"}, \"jsonrpc\": \"2.0\", \"method\": \"hostgroup.get\",\"auth\": \"$AUTH_TOKEN\", \"id\": 0}" $API | sed -e 's/[{}]/''/g' | awk -v RS=',"' -F: '/^name/ {print $2}' | sed 's/\(^"\|"$\)//g'
}
HOST_GROUPS=$(get_host_groups)
echo ""
echo "Please select a HOSTGROUP"
echo ""
select HOST in $HOST_GROUPS
do
echo ""
break;
done
# Give user Template option list to choose from
get_templates() {
curl -i -X POST -H 'Content-Type: application/json-rpc' -d "{\"params\": {\"output\": \"extend\", \"sortfield\": \"template\"}, \"jsonrpc\": \"2.0\", \"method\": \"template.get\",\"auth\": \"$AUTH_TOKEN\", \"id\": 0}" $API | sed -e 's/[{}]/''/g' | awk -v RS=',"' -F: '/^host"/ {print $2}' | sed 's/\(^"\|"$\)//g'
}
TEMPLATES=$(get_templates)
echo ""
echo "Please select a TEMPLATE"
echo ""
select TEMP in $TEMPLATES
do
echo ""
break;
done
# Get Host_Group and Template ID's for host creation
get_host_group_id() {
curl -i -X POST -H 'Content-Type: application/json-rpc' -d "{\"jsonrpc\":\"2.0\",\"method\":\"hostgroup.get\",\"params\":{\"output\": \"extend\",\"filter\":{\"name\":[\"$HOST\"]}},\"auth\":\"$AUTH_TOKEN\",\"id\":0}" $API | sed -e 's/[{}]/''/g' | sed -e 's/[""]/''/g' | grep -Eo groupid:[0-9]* | cut -d":" -f2;
}
get_template_id() {
curl -i -X POST -H 'Content-Type: application/json-rpc' -d "{\"jsonrpc\":\"2.0\",\"method\":\"template.get\",\"params\":{\"output\": \"extend\",\"filter\":{\"host\":[\"$TEMP\"]}},\"auth\":\"$AUTH_TOKEN\",\"id\":0}" $API | sed -e 's/[{}]/''/g' | awk -v RS=',"' -F: '/^templateid/ {print $2}' | sed 's/\(^"\|"$\)//g' | sed -e 's/["]]/''/g'
}
HOSTGROUPID=$(get_host_group_id)
TEMPLATEID=$(get_template_id)
# Create Host
create_host() {
curl -i -X POST -H 'Content-Type: application/json-rpc' -d "{\"jsonrpc\":\"2.0\",\"method\":\"host.create\",\"params\":{\"host\":\"$HOSTNAME\",\"ip\":\"$IP\",\"port\":10050,\"useip\":1,\"groups\":[{\"groupid\":$HOSTGROUPID}],\"templates\":[{\"templateid\":$TEMPLATEID}]},\"auth\":\"$AUTH_TOKEN\",\"id\":0}" $API
}
I do not work with zabbix anymore, but I am trying to bring it into my new job.. look for more stuff if i do
Comment