设为首页 收藏本站
查看: 842|回复: 0

[经验分享] 开源企业级监控系统

[复制链接]

尚未签到

发表于 2019-1-20 09:39:52 | 显示全部楼层 |阅读模式
  cacti和nagios是比较常用的监控系统,比较适合中小规模的网络监控,zabbix是一个基于WEB界面的提供分布式网络监视功能的企业级的开源解决方案。相对于cacti和nagios而言,zabbix最大的特点是分布式监控,自动发现,自定义监控项目。
  一、监控系统所具备的四个要素:
  1、数据采集
  zabbix采集数据的手段有SNMP、zabbix的Agent、IPMI agent、web monitoring、database monitoring,Internal check、calculated monitoring、custom command monitoring、ping或端口检查等。
  2、数据存储
  zabbix将数据存储在RDBMS中。
  3、数据展示
  zabbix使用php开发的程序进行绘图。
  4、事件报警
  zabbix通知机制有:E-mail、SMS、Jabber、Chat message、Command execution。
  
  二、为什么要选择zabbix:
  可以监控多达100,000台设备
  分布式监控
  支持多种检测方式
  真正的开源软件
  

  三、Zabbix组件概述:
  zabbix-serve:负责接收agent发送的报告信息,所有配置、统计数据及操作数据都有此组件组织进行;
  database:用于存储配置信息和zabbix收集的数据
  web-interface:zabbix的GUI接口,通常与server运行在同一台主机上;
  proxy:可选组件,常用于分布式监控环境中,代替server收集其他被监控端的监控数据,并统一发送到server端。
  Agent:部署在被监控主机上,负责收集本地数据发往server或proxy端。
  

  zabbix的术语:
  主机(host):要监控的网络设备统称;
  主机组(host group):主机的逻辑容器,可以包含主机和模板;
  监控项(item):一个特定监控指标和对应的数据,每个item由key进行标示;
  trigger(触发器):一个表达式,用于评估某监控对象的某个特定的item所接收的数据是否在合理范围内
  ,即阈值,状态分为“OK”和“problem”。
  事件(event):发生的一个值得关注的事情,如:触发器的状态转变,新的agent上线或自动发现等操作。
  动作:对于指定的event发生以后所采定义的处理方法,如发送通知或报警;
  报警升级(escalation):发送警告信息的方案,如果在定义内的警告次数之内没有处理,将向上级发送报警短信;
  媒介(media):发送通知的手段,如Email、SMS、Jabber等。
  通知(notification):通过媒介向用户发送某事件的信息。
  

  zabbix配置演示:
  本案例使用CentOS 6.4 x86_64 系统。
  zabbix-2.0.8-3.el6.x86_64.rpm # zabbix基础服务
  zabbix-get-2.0.8-3.el6.x86_64.rpm # zabbix获取agent信息的工具之一
  zabbix-server-2.0.8-3.el6.x86_64.rpm # zabbix服务主程序
  zabbix-server-mysql-2.0.8-3.el6.x86_64.rpm # zabbix 服务器工具之一
  zabbix-web-2.0.8-3.el6.noarch.rpm # web管理界面
  zabbix-web-mysql-2.0.8-3.el6.noarch.rpm  #数据存储介质
  zabbix-agent-2.0.8-3.el6.x86_64.rpm # zabbix 代理(受监控端程序)
  zabbix-sender-2.0.8-3.el6.x86_64.rpm # 支持zabbix自动发现的组件
  

  可以到相关站点下载合适的安装包
  http://www.zabbix.com/download.php
  

  一、安装:
  服务器端:
[root@localhost ~]# yum -y localinstall zabbix-2.0.8-3.el6.x86_64.rpm zabbix-get-2.0.8-3.el6.x86_64.rpm zabbix-server-2.0.8-3.el6.x86_64.rpm zabbix-server-mysql-2.0.8-3.el6.x86_64.rpm zabbix-web-2.0.8-3.el6.noarch.rpm zabbix-web-mysql-2.0.8-3.el6.noarch.rpm
#
#安装包有些依赖epel源,所以请自行添加epel到本机的repo文件,下面提供一个互联网的yum源:针对centos6.X系列
#
[Mirror.sohu]
name=Mirror.sohu.com
baseurl=http://mirror.sohu.com/centos/6/os/$basearch/
enabled=1
gpecheck=0
[fedora-epel]
name=fedora-epel
baseurl=http://mirror.sohu.com/fedora-epel/6/$basearch/
enabled=1
gpgcheck=0
#
#安装包所依赖的包有:
Installing:
zabbix                          x86_64   2.0.8-3.el6     /zabbix-2.0.8-3.el6.x86_64           
zabbix-get                      x86_64   2.0.8-3.el6     /zabbix-get-2.0.8-3.el6.x86_64      
zabbix-server                   x86_64   2.0.8-3.el6     /zabbix-server-2.0.8-3.el6.x86_64   
zabbix-server-mysql             x86_64   2.0.8-3.el6     /zabbix-server-mysql-2.0.8-3.el6.x86_64
zabbix-web                      noarch   2.0.8-3.el6     /zabbix-web-2.0.8-3.el6.noarch      
zabbix-web-mysql                noarch   2.0.8-3.el6     /zabbix-web-mysql-2.0.8-3.el6.noarch
Installing for dependencies:
OpenIPMI-libs                   x86_64   2.0.16-14.el6          base                                 
apr                             x86_64   1.3.9-5.el6_2          base                                 
apr-util                        x86_64   1.3.9-3.el6_0.1        base                                 
apr-util-ldap                   x86_64   1.3.9-3.el6_0.1        base                                 
dejavu-fonts-common             noarch   2.30-2.el6             base                                 
dejavu-sans-fonts               noarch   2.30-2.el6             base                                 
fontpackages-filesystem         noarch   1.41-1.1.el6           base                                 
fping                           x86_64   2.4b2-10.el6           epel                                 
httpd                           x86_64   2.2.15-26.el6.centos   base                                 
httpd-tools                     x86_64   2.2.15-26.el6.centos   base                                 
iksemel                         x86_64   1.4-2.el6              epel                                 
libXpm                          x86_64   3.5.10-2.el6           base                                 
libtool-ltdl                    x86_64   2.2.6-15.5.el6         base                                 
libxslt                         x86_64   1.1.26-2.el6_3.1       base                                 
lm_sensors-libs                 x86_64   3.1.1-17.el6           base                                 
mailcap                         noarch   2.1.31-2.el6           base                                 
net-snmp                        x86_64   1:5.5-44.el6           base                                 
net-snmp-libs                   x86_64   1:5.5-44.el6           base                                 
php                             x86_64   5.3.3-22.el6           base                                 
php-bcmath                      x86_64   5.3.3-22.el6           extra                                
php-cli                         x86_64   5.3.3-22.el6           base                                 
php-common                      x86_64   5.3.3-22.el6           base                                 
php-gd                          x86_64   5.3.3-22.el6           base                                 
php-mbstring                    x86_64   5.3.3-22.el6           extra                                
php-mysql                       x86_64   5.3.3-22.el6           base                                 
php-pdo                         x86_64   5.3.3-22.el6           base                                 
php-xml                         x86_64   5.3.3-22.el6           base                                 
unixODBC                        x86_64   2.2.14-12.el6_3        base  

  修改zabbix配置文件:
  

[root@localhost ~]# cd /etc/zabbix/
# 根据实际情况修改数据库的相关信息和本机zabbix服务监听地址
[root@localhost zabbix]# vi zabbix_server.conf
ListenIP=172.16.1.6 或0.0.0.0
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=redhat  

  启动mysql数据库为zabbix授权用户并导入初始数据
  

[root@localhost ~]# yum -y install mysql-server
[root@localhost ~]# service mysqld start
[root@localhost ~]# chkconfig mysqld on
[root@localhost zabbix]# mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.1.66 Source distribution
Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
# mysql> grant all on zabbix.* to 'zabbix'@'localhost' identified by 'redhat';
Query OK, 0 rows affected (0.00 sec)
# mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
#
#为使得zabbix可以支持中文,在创建数据库时要设定字符集为utf8.
# mysql> create database zabbix charset utf8;
Query OK, 1 row affected (0.00 sec)
#
#
#导入初始数据库数据,注意:请按顺序导入
[root@localhost zabbix]# mysql -uzabbix -hlocalhost -predhat zabbix < /usr/share/doc/zabbix-server-mysql-2.0.8/create/schema.sql
[root@localhost zabbix]# mysql -uzabbix -hlocalhost -predhat zabbix < /usr/share/doc/zabbix-server-mysql-2.0.8/create/images.sql
[root@localhost zabbix]# mysql -uzabbix -hlocalhost -predhat zabbix < /usr/share/doc/zabbix-server-mysql-2.0.8/create/data.sql  

  zabbix-web安装后生成zabbix.conf,web访问的相关属性可以设置配置文件
[root@localhost ~]# ls /etc/httpd/conf.d/
php.conf      README        welcome.conf  zabbix.conf
#
#启动httpd、mysqld、zabbix-server服务
[root@zabbix ~]# service  httpd restart
Stopping httpd: [  OK  ]
Starting httpd: [  OK  ]
[root@zabbix ~]# service zabbix-server restart
Shutting down Zabbix server: [  OK  ]
Starting Zabbix server: [  OK  ]
[root@zabbix ~]# service mysqld restart
Stopping mysqld:  [  OK  ]
Starting mysqld:  [  OK  ]
[root@zabbix ~]# netstat -tnl
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State   
tcp        0      0 172.16.1.6:10051            0.0.0.0:*                   LISTEN   
tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN   
tcp        0      0 :::80                       :::*                        LISTEN  

  修改php.ini中关于时区的定义:
  

[root@zabbix ~]# vi /etc/php.ini
date.timezone = Asia/Chongqing
[root@zabbix ~]# service  httpd restart  

  配置zabbix,通过访问http://172.16.1.6/zabbix即可配置

  

#下一步,继续,一定要OK才可以进行下一步

  

一直下一步:

  

  登录用户名:admin 密码:zabbix


  

  配置步骤,先看图:


  

添加一台Host时,要定义监控的item,通过ZabbixPoller将agent端通过Internal,SNMP、Zabbix Agent接口取得的数据拉回本地,如果item的数据范围超过阈值,就会触发trigger,trigger引起Action,然后调用E-mail或SMS发信息。一个trigger发生就产生一个event。为方便管理,可以将Host加入HostGroup,把item、trigger、Graph放进一个容器(Template),直接应用到Host或HostGroup。手动将Host设置为Maintenance模式,进行维护。
  

1、自定义模板:
Configuration--> Templates (create tempaltemy-temp) ---> 同时新建一个组(my-group),在Macros里可以定义宏,
宏是一种抽象,它根据一系列预定义的规则替换一定的文本模式,而解释器或编译器在遇到宏时会自动进行替换。
zabbix支持全局、模板、主机级别使用用户自定义的宏,用户自定义的宏要使用“{$MACRO}”,系统内置宏引用时不加$
宏的名称只能使用大写字母、数字、下划线来命名。
zabbix有很多内置的宏,如{HOST.NAME} {HOST.IP}{TRIGGER.DESCRIPTION}{TRIGGER.NAME}等。

  

  在template中创建item

  

  在右上角点击Create item,以创建监控eth0接口流量的item为例:

  

上面用的是zabbix内置的item来监控,下面演示自定义用户参数来监控服务器。
这需要在agent端的配置文件中定义,定义完成后要重启zabbix-agent 服务。
注意:是在agent端的配置文件。
语法:UserParameter=,
注:command执行结果只能有一个返回值。
# 用法一,key不带参数
UserParameter=memory.free,free | awk '/^Mem:/{print $4}'
[root@node1 ~]# zabbix_get -s 172.16.1.2 -k "memory.free"
365904
# 用法二,key带参数,在后面用$1引用,原来的awk表达式中的位置变量用2个$。一次定义,多次使用。
UserParameter=memory.utils
  • ,cat /proc/meminfo | awk '/$1/{print $$2}'
    在server端检查:
    [root@node1 ~]# zabbix_get -s 172.16.1.2 -k "memory.utils[MemTotal]"
    494420
    [root@node1 ~]# zabbix_get -s 172.16.1.2 -k "memory.utils[MemFree]"
    298720
    [root@node1 ~]# zabbix_get -s 172.16.1.2 -k "memory.utils[Buffers]"
    46404
    [root@node1 ~]# zabbix_get -s 172.16.1.2 -k "memory.utils[SwapTotal]"
    2097144
    [root@node1 ~]# zabbix_get -s 172.16.1.2 -k "memory.utils[SwapFree]"
    2097144
    #
    #使用2个参数:
    在agent端配置文件中定义:
    UserParameter=Nginx.active
  • , /usr/bin/curl -s "http://$1:$2/status" | awk '/^Active/ {print $NF}'
    其他实例:
    UserParameter=memory.free,free | awk '/^Mem:/{print $4}'
    UserParameter=memory.utils
  • ,cat /proc/meminfo | awk '/$1/{print $$2}'
    UserParameter=Nginx.active
  • , /usr/bin/curl -s "http://$1:$2/status" | awk '/^Active/ {print $NF}'
    UserParameter=Nginx.reading
  • , /usr/bin/curl -s "http://$1:$2/status" | grep 'Reading' | cut -d" " -f2
    UserParameter=Nginx.writing
  • , /usr/bin/curl -s "http://$1:$2/status" | grep 'Writing' | cut -d" " -f4
    UserParameter=Nginx.waiting
  • , /usr/bin/curl -s "http://$1:$2/status" | grep 'Waiting' | cut -d" " -f6
    # 定义完成后要重启zabbix-agent服务;
    [root@node2 ~]# service zabbix-agent restart
    启用Nginx的status功能
    [root@node2 ~]# yum -y install nginx
    [root@node2 ~]# vi /etc/nginx/conf.d/default.conf
    # The default server
    #
    server {
    listen       80 default_server;
    server_name  _;
    #charset koi8-r;
    #access_log  logs/host.access.log  main;
    location / {
    root   /usr/share/nginx/html;
    index  index.html index.htm;
    }
    location /status {
    stub_status on;
    access_log off;
    }
    [root@node2 ~]# service nginx start
    Starting nginx:                                            [  OK  ]
    #
    在服务器端:
    [root@node1 ~]# curl http://172.16.1.2/status
    Active connections: 1
    server accepts handled requests
    71 71 71
    Reading: 0 Writing: 1 Waiting: 0
    #
    [root@node1 ~]# zabbix_get -s 172.16.1.2 -k "Nginx.active[172.16.1.2,80]"
    1  

    创建触发器:
    表达式:{:.()}
    注:
    function:函数
    parameter:参数
    operator:比较操作符
    constant:常数
    server:主机名称;
    key:主机上监控项目的key
    function:评估采集到的数据是否在合理的范围内时所使用的函数,目前触发器所支持的函数有:avgcountchangedatedayofweekdeltadiffiregexplastnowsum等。
    parameter:函数参数,大多数函数可以接受秒数为其参数,如果在数值前面有“#”作为前缀,
    则表示最近几次的取值,如:sum(300)表示300秒内所有取值之和。sum(#10)则表示最近10次取值之和。
    此外,avgcountlastminmax还支持使用第二个参数,用于完成时间限定,

    特例:last(0)等同last(#1)


    实例:如果eth0的入流量小于80K就触发一个事件

      





    另一个触发器实例:
    当流量变化幅度过大(自定义),比如流量变化幅度大于5Mbps时触发:

      

      定义trigger后会有一条虚线,效果如下,
      

      使用流量统计软件进行对比,发现采集的数据还是比较准的。
      ifstat是一款流量统计软件,使用方便,使用方法在前面“iptables企业应用之应用层过滤、日志记录”有介绍,使用ping -f -s 50000 172.16.1.2 就可以发起较大的流量

      

      

    添加一台被监控主机:


    在zabbix客户端安装agent等组件:
    zabbix-2.0.8-3.el6.x86_64.rpm
    zabbix-agent-2.0.8-3.el6.x86_64.rpm
    zabbix-sender-2.0.8-3.el6.x86_64.rpm # 用于自动发现场景
    #
    启动服务
    [root@node2 ~]#  chkconfig zabbix-agent on
    [root@node2 ~]# vi/etc/zabbix/zabbix_agentd.conf
    Server = 172.16.1.1 (服务器地址,在本例中交叉使用了172.16.1.6和172.16.1.1来演示)
    [root@node2 ~]#  servicezabbix-agent start  


      定义主机

      

      关联模板,并保存:

      

      为主机添加监控的图形(Graph),点击(Graphs)然后点击右上角的Create graph:


      

      修改图的属性:


      保存之后,再创建一个图形,然后在screen中将2个图形显示在同一页面上。

      保存后点击左侧的node2,进入配置界面:

      

      保存后,就可以通过Screen来查看了,效果如下:左图中间的虚线是设置的阈值(80K)

      

      默认情况下网页刷新速度很慢,为方便观察,可以通过在Admin属性中设置,同时可以修改页面的语言为简体中文,保存后刷新页面生效。


      关于zabbix的报警功能和自动发现等功能将在后续的博客中陆续更新,敬请关注。
      





  • 运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
    2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
    3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
    4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
    5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
    6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
    7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
    8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

    所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-665453-1-1.html 上篇帖子: zabbix系列(三):设置邮件报警,并测试监控80端口; 下篇帖子: centos7.0详细安装zabbix3.2.4 (亲测)
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    扫码加入运维网微信交流群X

    扫码加入运维网微信交流群

    扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

    扫描微信二维码查看详情

    客服E-mail:kefu@iyunv.com 客服QQ:1061981298


    QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


    提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


    本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



    合作伙伴: 青云cloud

    快速回复 返回顶部 返回列表