參考教程:http://www.netkiller.cn/monitoring/zabbix/zabbix-agent.html#idp135
1具被、準(zhǔn)備工作:
安裝Zabbix-server循头、Zabbix-agent和Mongodb忿等,安裝過(guò)程省略誊役。
2篙议、導(dǎo)入Mongodb模板至Zabbix-server
下載模板:https://github.com/oscm/zabbix/blob/master/mongodb/zbx_export_templates.xml
在Zabbix-server主頁(yè)癞松,依次點(diǎn)擊【配置】峦嗤、【模板】、【選擇文件】腊徙,然后選擇剛才下載的模板简十,點(diǎn)擊【導(dǎo)入】即可
3、創(chuàng)建mongodb監(jiān)控用戶
> use admin
switched to db admin
> db.createUser(
{
user: "monitor",
pwd: "******",
roles: [ "clusterMonitor"]
}
)
Successfully added user: { "user" : "monitor", "roles" : [ "clusterMonitor" ] }
可以通過(guò)下列命令測(cè)試是否創(chuàng)建成功
db.auth("monitor", "******")
4昧穿、安裝jq
由于Zabbix-agent采集腳本需要使用強(qiáng)大的jq解析json數(shù)據(jù)勺远,安裝jq教程可參考官網(wǎng)。
本人由于主機(jī)不能訪問(wèn)yum源时鸵,采用離線安裝二進(jìn)制文件的形式胶逢。
下載二進(jìn)制文件后,給予執(zhí)行權(quán)限即可
chmod +x jq-linux64
5饰潜、 Zabbix agentd 配置
編輯文件/etc/zabbix/zabbix_agentd.d/userparameter_mongodb.conf初坠,添加以下內(nèi)容
# MongoDB - statistics
#
# Author: Neo Chen <netkiller@msn.com>
# Website: http://www.netkiller.cn
############################################################
# Discovery
# Return Redis statistics
UserParameter=mongodb.status[*],/usr/local/bin/mongodb.sh $1 $2 $3 $4 $5
根據(jù)userparameter_mongodb.conf的內(nèi)容,可知采集腳本在/usr/local/bin/mongodb.sh彭雾,所以新建文件/usr/local/bin/mongodb.sh碟刺,并添加以下內(nèi)容。
#!/bin/bash
##################################################
# Description: zabbix mongodb monitor
# Note: Zabbix 3.2
# Date: Fri Apr 21 2017
# Verion: 1.0
# Requirments: mongo, jq, sudo access to mongo_conf.sh
#
# Based on Noe <netkiller@msn.com> script
#
# Change log:
# Mon Apr 24, 2017
# - Added checks for mongo and jq
# - User --eval to fectch data
# - fixed json output to comform
# - Use jq to parse json https://stedolan.github.io/jq/
# - upated index to handle space or comma betwee values
#
##################################################
DB_HOST=HOST
DB_PORT=PORT
DB_USERNAME=monitor
DB_PASSWORD=******
MONGO=/data/mongodb/mongodb-linux-x86_64-rhel70-3.4.7/bin/mongo
JQ=/data/jq-linux64
EXIT_ERROR=1
EXIT_OK=0
if [ ! -x "$MONGO" ] ; then
echo "mongo not found"
exit $EXIT_ERROR
elif [ ! -x "$JQ" ] ; then
echo "jq not found"
exit $EXIT_ERROR
elif [ $# -eq 0 ] ; then
echo "No values pass"
exit $EXIT_ERROR
fi
index=.$(echo $@ | sed 's/[ ,]/./g')
MONGO_CMD="$MONGO --host ${DB_HOST:-localhost} --port ${DB_PORT:-27017} --authenticationDatabase admin --quiet"
[[ "$DB_USERNAME" ]] && MONGO_CMD="${MONGO_CMD} --username ${DB_USERNAME}"
[[ "$DB_PASSWORD" ]] && MONGO_CMD="${MONGO_CMD} --password ${DB_PASSWORD}"
output=$(
$MONGO_CMD <<< "db.runCommand( { serverStatus: 1} )" |\
sed -e 's/NumberLong(\(.*\))/\1/
s/ISODate(\(.*\))/\1/
s/ObjectId(\(.*\))/\1/
s/Timestamp(.*)/"&"/
s/"\([0-9]*\)"/\1/'
)
mongo_status=${PIPESTATUS[0]}
if [ $mongo_status -ne $EXIT_OK ] ; then
echo "mongo exec error"
exit $EXIT_ERROR
fi
value=$(echo $output | jq $index)
jq_status=$?
echo $value
備注:由于沒(méi)有設(shè)置mongodb和jq腳本至環(huán)境變量薯酝,所以在采集腳本中設(shè)置兩者執(zhí)行腳本的路徑半沽。
6、啟動(dòng)(重啟)Zabbix-agent
service zabbix-agent start
7吴菠、在Zabbix服務(wù)端主機(jī)測(cè)試是否配置有效者填,可通過(guò)腳本
zabbix_get -s HOST -k mongodb.status[version]