yum部署、使用 zabbix监控,yum部署zabbix监控

最近在review一些基础监控项,发现有部分基础的监控缺失,比如disk
usage,network
card相关的监控。因为机器的配置不同,不太好配置一个统一的模板,不过在新版本的zabbix中有个功能Low-level
discovery,可以根据主机的配置自动生成需要的监控,只需要传入宏变量即可。比如监控每个网卡的出流量net.if.out[{#IFNAME}],监控网卡的speed
os.get[NetworkCardSpeed,{#IFNAME}]有些情况下网卡会从1000M变成100M,因此添加了相关的trigger:
{os.get[NetworkCardSpeed,{``#IFNAME}].last(0)}<1000
这里有两个细节的问题:1)新版本的network card
speed的item是os.get[NetworkCardSpeed,xxxx],在网卡的speed为unknown时,其结果是0。
zabbix_get -s 127.0.0.1 -k``'os.get[NetworkCardSpeed,eth2]'``0为了排除这种情况,更改trigger为如下规则:
{os.get[NetworkCardSpeed,{``#IFNAME}].last(0)}<1000 &``{os.get[NetworkCardSpeed,{``#IFNAME}].last(0)}#0可以通过如下sql查看speed
为100M的机器:
select``distinct(a.host),c.ip,b.name,b.lastvalue from hosts a,items b,``interface c where a.hostid=c.hostid and a.hostid=b.hostid and``b.key_ like``'os.get[NetworkCardSpeed%'``and b.lastvalue=``'1000'``;2)关于bonding由于datanode的shuffle阶段需要大量的网络操作,很容易出现网卡瓶颈,因此datanode一般会做网卡的bonding,常用的模式是6,根据原理来看outgoing和incoming的流量大致应该是相同的,但实际情况下看到,outgoing的流量一般是比较平均,而incoming的流量相差很大,下面是一个sar的结果:
14时24分28秒 IFACE rxpck``/s``txpck``/s``rxbyt``/s``txbyt``/s``rxcmp``/s``txcmp``/s``rxmcst``/s``14时24分29秒 eth0 6.93 28139.60 473.27 41837599.01 0.00 0.00 6.93``14时24分29秒 eth1 29448.51 31732.67 1929669.31 47286517.82 0.00 0.00 6.93``14时24分29秒 bond0 29455.45 59872.28 1930142.57 89124116.83 0.00 0.00 13.86另外,如果一个网卡由1000M变为100M也不会出现短板效应(之前一直以为会出现短板效应),而是根据speed的情况来做流量分发,speed大的流量大,speed小的流量小。另外注意bonding配置中miimon参数的含义,它是检测的server到switch的直连链路问题,如果switch的上层链路出问题是不会work的。交换机链路的ha就需要考虑以太通道等技术了。。

yum部署、使用 zabbix监控,yum部署zabbix监控

 

zabbix监控安装,zabbix监控

1、关闭iptables和selinux

# systemctl stop firewalld
# systemctl disable firewalld
# setenforce 0

2、安装yum源

# cd /etc/yum.repos.d
# yum -y install wget
# wget http://mirrors.163.com/.help/CentOS7-Base-163.repo
# yum clean all 
# yum makecache

3、安装LAMP

3.1、安装MySQL

# yum -y install mariadb mariadb-server
# systemctl start mariadb
# systemctl enable mariadb
# mysql_secure_installation

3.2、安装apache

# yum -y install httpd
# systemctl start httpd
# systemctl enable httpd

3.3、安装PHP

# yum -y install php php-mysql

4、安装zabbix

# rpm -ivh http://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm
# yum -y install zabbix-server-mysql zabbix-web-mysql
# yum -y install zabbix-agent
# mysql -uroot -p
mysql>create database zabbix character set utf8 collate utf8_bin;
mysql>grant all privileges on zabbix.* to [email protected] identified by 'zabbix';
# cd /usr/share/doc/zabbix-server-mysql-3.2.1
# zcat create.sql.gz | mysql -uroot -p zabbix

5、修改配置文件

# vim /etc/php.ini
        php_value max_execution_time 300
        php_value memory_limit 128M
        php_value post_max_size 16M
        php_value upload_max_filesize 2M
        php_value max_input_time 300
        php_value date.timezone Asia/Shanghai    
# systemctl restart httpd

6、登陆zabbix,账号Admin,密码zabbix

http://IP/zabbix
http://IP/zabbix/setup.php

 

1、关闭iptables和selinux # systemctl stop firewalld# systemctl disable
firewalld# setenforce 0 2、安装yum源 # cd /etc/ yum .repos.d# yum
-…

MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB
应用提供可扩展的高性能数据存储解决方案。

usage,network
card相关的监控。因为机器的配置不同,不太好配置一个统一的…

yum部署zabbix监控

 

第1章 yum部署zabbix服务端… 1

1.1 命令行部署… 1

*  1.1.1 yum源配置-解释… 2*

*  1.1.2 MariaDB 与 mysql 3*

1.2 zabbix-web界面设置… 3

*  1.2.1 web图文过程详解… 3*

1.3 添加被监控主机… 6

*  1.3.1 zabbix-web界面操作… 7*

*  1.3.2 字符集优化… 7*

MongoDB
是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。

第1章 yum部署zabbix服务端

Mongodb如今越来越火,要做好对mongodb的监控就需要从它的安装配置,到简单的command语句使用,再到对它运行机制以及状态获取方法的掌握。

1.1 命令行部署

#自己搭建的yum仓库(推荐-因为局限于网络-很坑)

[[email protected]
~]# tail -1 /etc/hosts

192.168.19.200 repo.zabbix.com mirrors.aliyun.com

 

获取yum源(只提供安装zabbix的源)

rpm -ivh

 

# 安装zabbix,httpd,php(依赖中有httpd和php)

yum install zabbix-server-mysql zabbix-web-mysql

 

# 安装、启动 mariadb (mysql被oracle甲骨文公司收购)

yum -y install mariadb-server

systemctl start mariadb.service

 

# 创建数据库,权限

mysql

create database zabbix character set utf8 collate utf8_bin;

grant all privileges on zabbix.* to
[email protected]
identified by ‘zabbix’;

flush privileges;

exit

 

# 导入数据库sql文件(安装server时下载的)

zcat /usr/share/doc/zabbix-server-mysql-3.0.13/create.sql.gz|mysql
-uzabbix -pzabbix zabbix

 

# 配置zabbix Server连接mysql(yum安装时,大部分不需要修改)

sed -i.ori ‘115a DBPassword=zabbix’ /etc/zabbix/zabbix_server.conf

 

# 修改apache-php配置 (yum安装时,大部分不需要修改)

sed -i.ori ’18a php_value date.timezone  Asia/Shanghai’
/etc/httpd/conf.d/zabbix.conf

 

#启动 zabbix-server httpd

systemctl start zabbix-server

systemctl start httpd

#=======至此,进入web界面进行操作=====

 

    mongodb有三种基本的状态获取方式:

1.1.1 yum源配置-解释

  推荐自己搭建yum仓库,安装会很顺利,不局限于网络yum源的各种安装不上的问题。(特别全的需要50G以上)

#先准备yum源

[[email protected]
~]# rpm -ql zabbix-release-3.0-1.el7.noarch

/etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX

/etc/yum.repos.d/zabbix.repo

/usr/share/doc/zabbix-release-3.0

/usr/share/doc/zabbix-release-3.0/GPL

#方法一:网上直接下载(网上安装)

rpm -ivh

#方法二:先自行下载此rpm包,再上传,最后安装(网上安装)

 图片 1

 [[email protected]
~]# rpm -ivh zabbix-release-3.0-1.el7.noarch.rpm

#方法三:自己搭建本地yum仓库,(推荐-下载速度更快)

 

 

 

    1.mongostat

1.1.2 MariaDB 与 mysql

  MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可。开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避开这个风险。

  MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。

    2.开启28017的监听端口,curl

1.2 zabbix-web界面设置

   3.进入mongo执行db.serverStatus命令

1.2.1 web图文过程详解

 

 

 

 

 

    我用的是第三种方法:

1.3 添加被监控主机

# 所有需要被监控的服务器都要执行

#更新yum源

rpm -ivh

#安装zabbix-agent

yum install zabbix-agent

#配置文件

sed -i.ori ‘s#Server=127.0.0.1#Server=172.16.1.61#’
/etc/zabbix/zabbix_agentd.conf

#启动

systemctl start zabbix-agent.service

echo "db.serverStatus()" |/usr/local/mongodb/bin/mongo 192.168.1.123:27017/foo --quiet
{
    "host" : "TENCENT64.site", --server的hostname
    "version" : "2.0.5", --mongo版本
    "process" : "mongod", --进程名
    "uptime" : 1238418, --启动时间(单位:S)
    "uptimeEstimate" : 1230730, --基于MongoDB内部粗粒度定时器的运行时间
    "localTime" : ISODate("2012-09-14T09:09:52.657Z"), --server的本地时间
    "globalLock" : {
        "totalTime" : 1238418105923, --全局锁创建的时间(单位:ms 微秒)
        "lockTime" : 75055831911, --全局锁保持的时间(单位:ms 微秒)
        "ratio" : 0.06060621332329477, --lockTime和totalTime的比
        "currentQueue" : {
            "total" : 0, --等待全局锁的队列中操作数目
            "readers" : 0, --等待读锁的队列中操作数目
            "writers" : 0 --等待写锁的队列中操作数目
        },
        "activeClients" : {
            "total" : 1, --连接到server的当前活动client数目
            "readers" : 1, --执行读操作的当前活动client数目
            "writers" : 0 --执行写操作的当前活动client数目
        }
    },
    "mem" : {
        "bits" : 64, --64位机器
        "resident" : 18363, --占用物理内存量。
        "virtual" : 478810, --占用的虚拟内存量
        "supported" : true, --是否支持扩展内存
        "mapped" : 233311, --映射到内存的数据文件大小,很接近于你的所有数据库大小。
        "mappedWithJournal" : 466622,
        "note" : "virtual minus mapped is large. could indicate a memory leak"
    },
    "connections" : {
        "current" : 737, --当前活动连接量。连接到server的当前活跃连接数目
        "available" : 82 --剩余空闲连接量。剩余的可用连接数目
    },
    "extra_info" : {
        "note" : "fields vary by platform",
        "heap_usage_bytes" : 3838448, --此过程中所有的堆字节数目。仅适用于Linux
        "page_faults" : 31058356 --此过程中访问内存中页面失败的总次数。仅适用于Linux
    },
    "indexCounters" : {
        "btree" : {
            "accesses" : 68229146, --Btree索引的访问次数(索引被访问量)
            "hits" : 68229146, --内存中的Btree页的数目。(索引命中量)
            "misses" : 0, --内存中不存在的Btree也数目。(索引偏差量)(索引内存访问失败次数)
            "resets" : 0, --索引计数器被重置为0的次数
            "missRatio" : 0 --索引偏差率(未命中率)
        }
    },
    "backgroundFlushing" : {
        "flushes" : 20640, --数据库刷新写到磁盘的次数
        "total_ms" : 2453287, --数据库刷新数据到磁盘花费的微秒数
        "average_ms" : 118.8608042635659, --执行单次刷新花费的平均微秒数
        "last_ms" : 1, --最后一次执行完成刷新数据到磁盘花费的微秒数
        "last_finished" : ISODate("2012-09-14T09:09:35.656Z") --当最后一次刷新数据完成时的时间戳
    },
    "cursors" : {
        "totalOpen" : 0, --server为client保持的游标(cursor)总数
        "clientCursors_size" : 0, --
        "timedOut" : 24 --server启动以来游标(cursor)超时的总数
    },
    "network" : {
        "bytesIn" : NumberLong("1929833164782"), --发送到数据库的数据总量(bytes)
        "bytesOut" : 553137147925, --数据库发出的数据总量(bytes)
        "numRequests" : 2475184328 --发送到数据库的请求量
    },
    "opcounters" : {
        "insert" : 687531883, --server启动以来总的insert数据量
        "query" : 711010343, --server启动以来总的query数据量
        "update" : 0, --server启动以来总的update数据量
        "delete" : 0, --server启动以来总的delete数据量
        "getmore" : 6484, --server启动以来调用任何游标的getMore总次数
        "command" : 1287537 --server启动以来执行其他命令的总次数
    },
    "asserts" : {
        "regular" : 0, --server启动以来抛出正规断言(assert 类似于异常处理的形式)总数目
        "warning" : 1, --server启动以来抛出的告警总数目
        "msg" : 0, --消息断言数目。服务器内部定义的良好字符串错误
        "user" : 4, --用户断言数目。用户产生的错误,譬如:磁盘空间满;重复键。
        "rollovers" : 0 --server启动以来,assert counters have rolled over的次数
    },
    "writeBacksQueued" : false, --是否有从mongos执行的retry操作
    "dur" : {
        "commits" : 30, --上一间隔journal日志发生commit的次数
        "journaledMB" : 0, --上一间隔写到journal日志的数据量(单位:MB)
        "writeToDataFilesMB" : 0, --上一间隔journal日志写到数据文件的数据量(单位:MB)
        "compression" : 0, --
        "commitsInWriteLock" : 0, --写锁期间发生commits的次数
        "earlyCommits" : 0, --schedule时间前请求commit的次数
        "timeMs" : {
            "dt" : 3064,
            "prepLogBuffer" : 0, --准备写journal日志花费的时间
            "writeToJournal" : 0, --写journal日志花费的实际时间
            "writeToDataFiles" : 0, --journal日志后写数据文件花费的时间
            "remapPrivateView" : 0 --The amount of time spent remapping copy-on-write memory mapped views
        }
    },
    "ok" : 1 --serverStatus是否返回正确
}

1.3.1 zabbix-web界面操作

 

    以上,我们把所需要的参数抽取出来就可以做成监控项了。

1.3.2 字符集优化

#安装 “文泉驿-微米黑字体”

yum -y install wqy-microhei-fonts

#替换原有字体

\cp /usr/share/fonts/wqy-microhei/wqy-microhei.ttc
/usr/share/fonts/dejavu/DejaVuSans.ttf

#刷新web页面即可

 

 

 

zabbix监控,yum部署zabbix监控
yum部署zabbix监控 第1章 yum部署zabbix服务端… 1 1.1 命令行部署… 1
1.1.1 yum源配置-解释… 2 1.1.2 Ma…

先定义键值:

#mongodb.conf
UserParameter=mongodb_port_discovery,/usr/local/zabbix/exec/mongo_discovery.py
UserParameter=mongodb_stats[*],/usr/local/zabbix/exec/mongo_status.sh $1 $2 $3 $4 $5

写mongo_discovery.py脚本(用于端口发现)

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import json
import subprocess
json_data = {"data":[]}
net_cmd = '''sudo netstat -nlpt|awk '/mongo/{print $4}'
'''
p = subprocess.Popen(net_cmd, shell=True, stdout=subprocess.PIPE)
net_result = p.stdout.readlines()
for server in net_result:
  dic_content = {
   "{#MONGO_PORT}" : server.split(':')[1].strip(),
   "{#MONGO_IPADDR}" : server.split(':')[0].strip()
   }
  json_data['data'].append(dic_content)
result = json.dumps(json_data,sort_keys=True,indent=4)
print result

写mongo_status.sh状态检测脚本

#!/bin/bash
##mongo_status.sh##
##wuhf##
case $# in
 3)
  output=$(/bin/echo "db.serverStatus().$3" |/usr/local/mongodb/bin/mongo $1:$2/foo --quiet)
  ;;
 4)
  output=$(/bin/echo "db.serverStatus().$3.$4" |/usr/local/mongodb/bin/mongo $1:$2/foo --quiet)
  ;;
 5)
  output=$(/bin/echo "db.serverStatus().$3.$4.$5" |/usr/local/mongodb/bin/mongo $1:$2/foo --quiet)
  ;;
esac
if [[ "$output" =~ "NumberLong"  ]];then
 echo $output|sed -n 's/NumberLong(//p'|sed -n 's/)//p'
else 
 echo $output
fi

权限设置

chmod 755 /usr/local/zabbix/exec/*
chown zabbix.zabbix /usr/local/zabbix/exec/*
chown zabbix.zabbix /usr/local/zabbix/etc/zabbix_agentd.conf.d/*
echo "zabbix ALL=(root) NOPASSWD:ALL" >> /etc/sudoers
sed -i 's/^Defaults.*.requiretty/#Defaults  requiretty/' /etc/sudoers

做MongoDB模板

定义自动发现规则

图片 2

定义监控项

图片 3

最后添加触发器和图就完成了

注意:在mongodb.conf配置文件里定义了键值对应关系后要重启zabbix服务才能生效

您可能感兴趣的文章:

  • 基于Docker安装与部署Zabbix
  • Zabbix监控交换机设置方法
  • Zabbix监控Linux主机设置方法
  • 什么是zabbix(高度集成的监控集成方案)
  • zabbix监控docker容器状态【推荐】

相关文章