分类目录归档:zabbix

zabbix distrubuted monitor

zabbix 分布式监控

2种模式

1.node模式
2.proxy模式

PS: node模式官方在2.4版本之后已经弃用,重点讨论proxy模式

## proxy 模式
Zabbix proxy可以代替Zabbix服务器收集性能和可用性数据,一个代理可以承担一些收集数据的负载。使用代理是实现集中式和分布式监控的最简单方法。proxy需要使用单独的数据库来缓存agent数据,在发给server防止出现因网络问题造成的数据丢失。zabbix proxy只是一个数据收集组件,不会触发任何trigger/alert.

### 使用场景

- Monitor remote locations
- Monitor locations having unreliable communications
- Offload the Zabbix server when monitoring thousands of devices
- Simplify the maintenance of distributed monitoring

### 安装配置

同安装zabbix server 类似,不赘述,需要其他功能也可以在编译时自行开启。

./configure --prefix=/opt/zabbix_proxy/ --enable-proxy --with-mysql --with-libcurl
make install

create databases zabbix
grant all to zabbix.* to zabbix@'%' identified by "zabbix";
导入schema.sql

配置文件中hostname需要和zabbix上添加的保持一致
其它参考server设置参数

ps:设置适当的配置同步时间,默认一小时。建议设置短一点,这样如果有新机器加入配置修改都可以快速同步并监控。
ConfigFrequency=600

zabbix server 配置

添加主机时选择指定的proxy

zabbix监控mongo

1.脚本
cat mongo.sh

#!/bin/bash

case $1 in 
#  use_memory)
#    used_memory=`echo "db.serverStatus().mem"|mongo admin|grep resident|awk -F':' '{print $2}'|tr -d " ,"`
#    echo $used_memory
#    ;;
#  
#  use_vmemory)
#    used_vmemory=`echo "db.serverStatus().mem"|mongo admin|grep virtual|awk -F':' '{print $2}'|tr -d " ,"`
#    echo $used_vmemory
#    ;;
#  
#  used_conn)
#    used_conn=`echo "db.serverStatus().connections"|mongo admin|grep current|awk -F':' '{print $2}'|tr -d ' ,'`
#    echo $used_conn
#    ;;
#  
#  available_conn)
#    available=`echo "db.serverStatus().connections"|mongo admin|grep available|awk -F':' '{print $2}'|tr -d ' ,'`
#    echo $availabe
#  ;;
  
  insert)
    insert=`mongostat -n1 | tail -n 1|awk '{print $1}'|tr -d ' *,'`
    echo $insert
    ;;
  
  query)
    query=`mongostat -n1 | tail -n 1|awk '{print $2}'|tr -d ' *,'`
    echo $query
    ;;
  
  update)
    update=`mongostat -n1 | tail -n 1|awk '{print $3}'|tr -d ' *,'`
    echo $update
    ;;
  
  delete)
    delete=`mongostat -n1 | tail -n 1|awk '{print $4}'|tr -d ' *,'`
    echo $delete
    ;;
  getmore)
    getmore=`mongostat -n1 | tail -n 1|awk '{print $5}'|tr -d ' *,'`  
    echo $getmore
    ;;
  command)
    command=`mongostat -n1 | tail -n 1|awk '{print $6}'|awk -F'|' '{print $1}'|tr -d ' *,'`
    echo $command
    ;;
  vsize)
    vsize=`mongostat -n1 | tail -n 1|awk '{print $10}'|tr -d ' *,G'`
    echo $vsize
    ;;
  res)
    res=`mongostat -n1 | tail -n 1|awk '{print $11}'|tr -d ' *,G'`
    echo $res
    ;;
  qr)
    qr=`mongostat -n1 | tail -n 1|awk '{print $12}'|awk -F'|' '{print $1}'|tr -d ' *,'`
    echo $qr
    ;;
  qw)
    qw=`mongostat -n1 | tail -n 1|awk '{print $12}'|awk -F'|' '{print $2}'|tr -d ' *,'`
    echo $qw
    ;;
  ar)
    ar=`mongostat -n1 | tail -n 1|awk '{print $13}'|awk -F'|' '{print $1}'|tr -d ' *,'`
    echo $ar
    ;;
  aw)
    aw=`mongostat -n1 | tail -n 1|awk '{print $13}'|awk -F'|' '{print $2}'|tr -d ' *,'`
    echo $aw
    ;;
  conn)
    conn=`mongostat -n1 | tail -n 1|awk '{print $16}'|tr -d ' *,'`
    echo $conn
    ;;

  *)
    echo "please input  insert|query|update|delete"
    ;;
esac


2.conf配置文件
cat zabbix_mongo.conf
UserParameter=mongo[*],/opt/script/zabbix/mongo.sh $1