zoukankan      html  css  js  c++  java
  • zabbix的安装部署及自定义监控的实现

    此篇感谢我的小师傅。

    1. Zabbix主要功能和优劣势说明

    1. Zabbix主要功能和优劣势说明

    1.1 Zabbix主要功能:

    1Application monitoring 应用监控

    数据库/SSH/Apache/Nginx等应用程序的监控。

    2)Server monitoring 服务器监控

    CPU,内存,SWAP,磁盘空间,网卡流量的监控等,可以通过浏览器实时查看Grafana。

    3)Network monitoring 网络设备监控

    支持Cisco, Juniper, 3Com等网络设备,网络设备通过SNMP(SNMP (v1,v2,v3) devices)协议进行监控。

    4)添加自定义监控,对于Zabbix无法满足的监控,可以添加自定义监控。

    1.2 Zabbix 主要优势:

    1)安装配置简单,支持多种语言,包括中文。

    2)系统自带多种监控模板,可以直接使用,能够满足企业大多数需求。

    3)支持分布式部署和WEB集中管理(通过WEB页面设置或查看报警结果)。

      4)自动发现主机和网络设备(discovery of file systems,network interfaces,hosts and netwrok devices)。

      5)WEB监控:可以监控WEB下载速度,返回码及响应时间。

    6)提供实时和历史的监控分析数据,可自定义数据存储时长,方便调用可查看。

      7)EMAIL报警,按照故障级别|服务器类型|业务类型发送EMAIL邮件到相关负责人。

    8)数据可视化,以图形的方式展示出来,而不是一大堆代码。

    9)报警后可自动在agent端运行一些命令,这些命令可以使获取运维人员需要的信息,也可以是自动修复,比如重启服务等----触发报警后可以远程执行命令。

    1.3 Zabbix主要劣势:

    1)需要在被监控机器上面安装agent。

    2)All configuration information都存储在数据库里面,数据库是整个监控平台的瓶颈。

    1.3.1 Zabbix部分名词的定义:

    l Zabbix ServerZabbix的控制中心收集数据写入数据库都是它的工作

    l Zabbix Agent部署在被监控服务器上的一个进程负责和Zabbix Server交互执行命令

    l Host:广义上的服务器,大多数指代的是刀片机这类,在少部分时间会指代包括交换机在内的,被Zabbix监控的实体。

    l Item对于某一个指标的监控对应的是Item英文原意是“物品”。比如某台服务器的CPU负债就是一个Item

    l Trigger一些逻辑规则的组合他有三个值正常异常未知

    l ActionTrigger符合某个值的时候Zabbix会进行的操作比如最常见的发邮件

    2. Zabbix分布式部署需求分析

    目前最新版本为3.2,以3.0为例说明:

    官方推荐的软件配置:

    Name

    平台

    CPU /内存

    数据库

    监控主机

    小型规模

    CentOS

    虚拟设备

    MySQLInnoDB引擎

    100

    中型规模

    CentOS

    2CPU核心/ 2GB

    MySQLInnoDB引擎

    500

    大型规模

    红帽企业版Linux

    4CPU核心/ 8GB

    RAID10MySQLInnoDBPostgreSQL

    > 1000

    很大型

    红帽企业版Linux

    8CPU内核/ 16GB

    快速RAID10MySQLInnoDBPostgreSQL

    > 10000

     

    Software

    Version

    Comments

    MySQL

    5.0.3 or later

    Required if MySQL is used as Zabbix backend database. InnoDB engine is required.

    3.1分布式部署拓扑图

    补充说明:

    proxy部署为主动模式(Active)时,Zabbix Server的负载最小。

     1)Server:负责把数据写入到数据库,然后通过Apache|Nginx +php在WEB前端显示。

     2)Proxy:帮助server采集被监控端的数据,并把采集到的数据主动传送给Server,proxy只负责数据收集。

     3)Database:所有的配置信息都存储在数据库里面,Zabbix server数据库和proxy数据库必须独立。

     4)Agent:agent的作用就是获取host数据,然后将收集到的数据发送给server(主动模式),或者是server主动来拿取数据(被动模式)。

     5)Email:通过Qmail|postfix的SMTP负责报警邮件的发送(故障邮件和故障恢复邮件)。

    效果预览图:

    3.2 Zabbix分布式安装部署:

    安装服务端:

    Server

    下载yum源

    #cd /etc/yum.repos.d/

    #rpm -ivh http://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm

    #yum clean all

    #yum check-update

     #yum install zabbix-server-mysql zabbix-web zabbix-agent  zabbix-web-mysql zabbix-sender zabbix-get  -y

     对服务器端来说,如果自己不监控自己zabbix-agentzabbix-sender可以不装

     

     安装web GUI

    ~]# yum install httpd php php-mysql php-mbstring php-gd php-bcmath php-ldap php-xml

    ~]# yum install zabbix-web zabbix-web

     

     安装数据库

     ~]#yum install mariadb-server.x86_64

     创建Zabbix使用的数据库

     ~]#mysql -uroot -p

     MariaDB [(none)]>create database zabbix default charset utf8;

     

     授权Zabbix连接的账号密码

     MariaDB [(none)]> grant all on zabbix.* to USERNAME@'X.X.X.X' identified by 'PASSWORD'; (最大权限有点危险)

    grant all on zabbix.* to zabbix@"localhost" identified by "zabbix";

    grant all on zabbix.* to zabbix@"%" identified by "zabbix";

    MariaDB [(none)]> flush privileges;

     

     Server端数据库初始化

    2.x版本:三个sql脚本;

    3.x版本:一个sql脚本;

    ~]# cd /usr/share/doc/zabbix-server-mysql-3.0.2/

    ~]# gzip  -d  create.sql.gz

    ~]# mysql –hx.x.x.x  -uUSERNAME -p PASSWORD < create.sql(如果有报错写成-h127.0.0.1

     

    zabbix server配置启动

    配置文件:/etc/zabbix/zabbix_server.conf

    配置段:

    ~]# grep "^#####" zabbix_server.conf

    ############ GENERAL PARAMETERS #################

    ############ ADVANCED PARAMETERS ################

    ####### LOADABLE MODULES #######

    ####### TLS-RELATED PARAMETERS #######

    通用参数:

    ListenPort=10051(无需修改,默认就行)

    SourceIP=

    LogType=file

    LogFile=/var/log/zabbix/zabbix_server.log

    LogFileSize=0

    DebugLevel=3

    (以上默认都不需要改,按需求)

    DBHost=localhost

    DBName=zabbix(默认数据库名字就是zabbix,可以不改,看你的数据库名字)

    DBUser=zabbix

    DBPassword=zabbix

    DBSocket=/tmp/mysql.sock(如果默认安装在同一台服务器此路径在/var/lib/mysql/mysql.sock下,就不会用到下面的3306端口了,基于127.0.0.1访问的)

    DBPort=3306

    启动

    ~]#systemctl start zabbix-server.service

     
    配置zabbix-web:

    配置php的时区设定:

    (1) /etc/php.ini (对全局都生效)

    (2) /etc/httpd/conf.d/zabbix.conf(只对zabbix生效) 

    改为  php_value date.timezone Asia/Shanghai

     

     systemctl restart httpd

    Agent

    ~]# yum install zabbix-agent zabbix-sender –y

     配置文件:/etc/zabbix/zabbix_agentd.conf

    ############ GENERAL PARAMETERS #################

    ##### Passive checks related

    被动监控相关配置,agent要等待server主动过来拉取数据;

    ##### Active checks related

    主动监控相关配置,agent端主动向server周期性发送数据;

    ############ ADVANCED PARAMETERS #################

    ####### USER-DEFINED MONITORED PARAMETERS #######

    用户自定义参数

    ####### LOADABLE MODULES #######

    ####### TLS-RELATED PARAMETERS #######                        

     

    ##### Passive checks related

    Server=IP1, IP2, ...(指的是定义了允许哪些地址的主机过来获取数据,授权哪些服务器获取数据 

    ListenPort=10050

    ListenIP=0.0.0.0 

    StartAgents=3(启动的agent进程数量)

     

    ##### Active checks related

    ServerActive=IP1[:port], IP2[:port], ...(发送到哪台主机,即代理服务器或zabbix-server ip)

    Hostname=Unique_HOSTNAME(用来向服务器端表明当前主机的识别名,至关重要)

    必须与服务器配置的监控主机的主机名称保持一致;

     

    启动服务:

    systemctl start zabbix-agent.service

    zabbix的web页面访问:

    ip:80/zabbix

    端口都不需要改,0代表默认。zabbix server detail里的Name也不需要填

    用户名密码默认为:Admin / zabbix

    -----------------------------------------------------------------------------------

    zabbix 自定义脚本监控的实现

    1.监控oracle的进程数:

    zabbix-agent端:

    使用脚本获取oracle的进程数

     vim /etc/zabbix/bash/oracle_session.sh(权限)

    #!/bin/bash

    source /home/oracle/.bash_profile#查询使用的数据库的账户/密码

    sqlplus -s zibbix/密码 <<EOF  

    set heading off

    set feedback off

    set pagesize 0

    set verify off

    select count(*) from v$session;

    EOF

    vim /etc/zabbix/zabbix_agentd.conf

    UserParameter=oracle_session[*],sudo /bin/bash /etc/zabbix/bash/oracle_session.sh | /bin/sed  's/[[:space:]]*//g'

    #因为取出的数据前边有空格,故sed去掉空格。

    vim /etc/sudoers

    # Defaults    requiretty

    zabbix ALL=(ALL) NOPASSWD: ALL

    重启服务:

     service zabbix-agent restart

     再配置web界面对应的监控项。见下有例子

    在zabbix-server的命令行查看数据获取:

    zabbix_get  -s agentip  -p 监听端口 -k  “监控项对应的key”

    zabbix_get  -s  10.100.x.x  -p  10050  -k  "orabbix-sessions"

    2.监控日志的交易平均返回时间(步骤同上)

     脚本获取agent上日志中的交易平均返回时间

    vim /etc/zabbix/bash/channel_ARTime.sh

    #!/bin/bash

    dir=$1

    DAY=`date +'%d'`

    TRC=/home/$1/trc/$DAY

    FILE=`ls $TRC/$2`

    tail -n 1000 $FILE | grep -a connector | tail -n 30 | awk -F '|' '{print $5}' | awk '{sum+=$1} END {printf "%d ",sum/NR}'

    vim /etc/zabbix/zabbix_agentd.conf  

    UserParameter=muniefsbart[*],sudo /bin/bash /etc/zabbix/bash/channel_ARTimeTime.sh $1 muniefsb_*.trc

    UserParameter=tpospay1art[*],sudo /bin/bash /etc/zabbix/bash/channel_ARTime.sh $1 tpospay1_*.trc

    UserParameter=tposmsg1art[*],sudo /bin/bash /etc/zabbix/bash/channel_ARTime.sh $1 tposmsg1_*.trc

    UserParameter=tposfne1art[*],sudo /bin/bash /etc/zabbix/bash/channel_ARTime.sh $1 tposfne1_*.trc

    #以上$1zabbix-server web界面配置监控项的key[]括号中输入值(此处为用户)。 xxx.trc为不同服务对应的不同日志

     

     

  • 相关阅读:
    bug_ _ 常见的bug1
    键盘-App监听软键盘按键的三种方式
    listview--记录ListView滚动停止位置与设置显示位置
    android shape的使用
    转-android图片降低图片大小保持图片清晰的方法
    转-Android SHA1与Package获取方式
    Android listview中使用checkbox
    保存恢复临时信-Android 中使用onSaveInstanceState和onRestoreInstanceState
    转-Android客户端和服务端如何使用Token和Session
    转-Activity中使用orientation属性讲解及需注意的问题
  • 原文地址:https://www.cnblogs.com/huandada/p/9415647.html
Copyright © 2011-2022 走看看