首页 > 代码库 > Linux 监控系统---zabbix

Linux 监控系统---zabbix

监控系统及zabbix基础(一)

===========================================================================

概述:


===========================================================================

监控系统

 1.监控系统介绍

监控指标:

  • 硬件:如:cpu使用率,内存空间等

  • 软件:软件程序如:nginx,进程数量等

  • 业务:并发在线数量,事物数量等

监控系统具备的功能:

  • 采样:sensor(传感器)

  • 存储:

       数据:历史数据、趋势数据;

  • 展示:用户接口展示系统

  • 报警:

被监控对象:主机、交换机、路由器、UPS、...


 2.监控系统各功能介绍

采样:

  • 周期性地获取某个关注指标相关的数据;

监控系统采集数据通道:

  • ssh/telnet:远程连接通道

  • agent:

       master/agent架构

       master:NMS(网络管理系统)

  • IPMI:智能平台管理接口

  • SNMP:Simple Network Management Protocol(简单网络管理协议)

       版本:v1, v2c (community, public),v3

  • JMX:Java Management extension(java管理扩展)

       监控JVM: Java Virtual Machine

存储系统:

存储数据

  • 历史数据:每次采样的结果,保存时长较短;

  • 趋势数据:聚合数据,保存时长较长周期内的数据;

存储系统:

  • 关系型数据库:MySQL, PGSQL, Oracle, ...

  • rrd:RoundRobin Database 循环数据库

  • NoSQL:redis/mongo,时间序列数据库

报警:

  • 邮件、短信、微信

  • 脚本实现

展示:

  • WebGUI

  • GUI(图形化界面)

  • APP

开源监控项目:

  • cacti, nagios; 

  • zabbix(所有功能都支持)

  • ganglia


zabbix介绍

 1.版本和特性

简介

  • 是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案;

  • zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。

  • zabbix由2部分构成,zabbix server与可选组件zabbix agent。

  • zabbix server可以通过SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能,它可以运行在Linux,Solaris,HP-UX,AIX,Free BSD,Open BSD,OS X等平台上。

Version: 

  • LTS:Long Time Support (长期维护的版本)

  • 3.0版本就是长期维护的版本

特性:

  • 数据采样机制:snmp, agent, ipmi, jmx; 

  • 报警:升级,步进

  • 数据存储:mysql/pgsql

  • 展示:php程序  

       实时绘图:graph, screen, slide show(幻灯片播放), map

  • 支持监控模板

  • 网络自动发现

  • 分布式监控

  • API:支持二次开发

2.zabbix系统架构、组件及相关术语

Zabbix程序组件

  • Zabbix Server

       负责接收agent发送的报告信息的核心组件,所有配置、统计数据及操作数据均由其组织进行;

  • zabbix_database Storage

       专用于存储所有配置信息,以及有zabbix收集的数据;MySQL/PGSQL

  • zabbix_web:

        zabbix的GUI接口,通常与server运行在同一台机器上;

  • zabbix_proxy

        可选组件,常用于分布式监控环境中,代理Server收集部分被监控数据并统一发往Server端;

  • zabbix_agentd

        部署在被监控主机上,负责收集本地数据并发往Server端或者Proxy端;

  • zabbix_get:

        命令行工具,测试向agent端发起数据采集请求;

  • zabbix_sender:

        命令行,测试向server端发送数据;

  • zabbix_java_gateway:

        java网关;

附图1:

 zabbix宏观架构图

技术分享


附图2

   zabbix具体工作图

技术分享


Zabbix常用术语(逻辑组件)

  • host(主机)

      要监控的网络设备,可由IP或DNS名称指定;

  • host group(主机组)

       主机的逻辑容器,可以包含主机和模板,但同一个组内的主机和模板不能互相链接;主机组通常在给用户或用户组指派监控权限时使用;

  • item(监控项)

        一个特定监控指标的相关数据,这些数据来自于被监控对象;item是zabbix进行数据收集的核心,没有item,将没有数据;相对某监控对象来说,每个item都有"key"进行标识;

  • application(应用)

        一组item的集合;

  • trigger(触发器)

        一个表达式,用于评估某监控对象的某特定item内所接收到的数据是否在合理范围内,即阀值;接受到的数据大于阀值是,触发器状态将从OK转变为Problem,当数据量再次回归到合理范围时,其状态将从Problem转换回OK;

  • event(事件)

        即发生的一个值得关注的事件,例如触发器的状态转变,新的agent或重新上线的agent的自动注册等;

  • action(动作)

        指对于特定事件事先定义的处理方法,通过包含操作(如发送通知)和条件(何时执行操作);

  • media(媒介)

        发送通知的手段和通道,如Email、Jabber或SMS;

  • notification(通知)

        通过选定的媒介向用户发送的有关某事件的信息;

  • remote command(远程命令)

        预定义的命令,可在被监控主机处于某个特定条件下时自动执行;

  • escalation(报警升级)

        发送警报或执行远程命令的自定义方案,如每隔5min发送一次警报,共发送5次等;

  • template(模板)

        用于快速定义被监控主机的预设条目集合,通常包含了item、trigger、graph、screen、application以及low-level discovery rule;模板可以直接链接至单个主机;

  • web scennaro(web场景)

        用于检测web站点可用性的一个或多个http请求;

  • frontend(前端)

        zabbix的web接口

  • 图形(graph)

  • 屏幕(screens)

  • 幻灯(slide show)

附图3

  zabbix逻辑架构:

技术分享

zabbix Server安装、配置和启动

 1.安装配置过程

1.zabbix database

  • mysql>  CREATE DATABASE zabbix CHARSET ‘utf8‘;

  • mysql>  GRANT ALL ON zabbix.* TO ‘zbxuser‘@‘10.1.%.%‘ IDENTIFIED BY ‘zbxpass‘;

2.安装服务器端

安装

  •  # yum install zabbix-server-mysql-3.0.2-1.el7.x86_64.rpm zabbix-get-3.0.2-1.el7.x86_64.rpm

程序环境

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

  • Unit File:zabbix-server.service

导入数据库脚本,以生成数据库环境:

  • # gzip -d /usr/share/doc/zabbix-server-mysql-3.0.2/create.sql.gz

  • # mysql -uzbxuser -h127.0.0.1 -pzbxpass zabbix < /usr/share/doc/zabbix-server-mysql-3.0.2/create.sql

注意:zabbix 2的sql脚本有三个,需要依次导入;

3.zabbix server配置启动

技术分享

演示:

 操作环境:CentOS 7 虚拟机

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

1.设置zabbix database,创建一个数据库,并授权一个用户有权限连接并使用此数据库

 1)mariadb安装,配置,及启动

# 在CentOS 7 安装mariadb数据库,使用前要首先编辑其配置文件/etc/my.cnf,添加跳过名称解析等
[root@centos7 ~]# vim /etc/my.cnf
skip_name_resolve = ON
innodb_file_per_table = ON

# 启动数据库,可以设置开机自启动
[root@centos7 ~]# systemctl start mariadb.service
[root@centos7 ~]# systemctl enabled mariadb.service

  2)创建zabbix database数据库,并授权一个用户可以远程和本地登录此数据库;

[root@centos7 ~]# mysql -p134296
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 3
Server version: 5.5.44-MariaDB MariaDB Server

Copyright (c) 2000, 2015, Oracle, MariaDB Corporation Ab and others.

Type ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ to clear the current input statement.

MariaDB [(none)]> create database zabbix charset ‘utf8‘;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> GRANT ALL ON zabbix.* TO ‘zbxuser‘@‘10.1.%.%‘ IDENTIFIED BY ‘zbxpass‘;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> GRANT ALL ON zabbix.* TO ‘zbxuser‘@‘127.0.0.1‘ IDENTIFIED BY ‘zbxpass‘;
Query OK, 0 rows affected (0.01 sec)

MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| Syslog             |
| mydb               |
| mysql              |
| performance_schema |
| test               |
| ultrax             |
| zabbix             |
+--------------------+
8 rows in set (0.08 sec)

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

2.安装服务器端  

  1)下载zabbix相关的所有程序包

# 下面是我下载的zabbix 3.0.2版本的所有程序包
[root@centos7 zabbix]# ls
zabbix-agent-3.0.2-1.el7.x86_64.rpm         zabbix-proxy-sqlite3-3.0.2-1.el7.x86_64.rpm  zabbix-web-japanese-3.0.2-1.el7.noarch.rpm
zabbix-get-3.0.2-1.el7.x86_64.rpm           zabbix-sender-3.0.2-1.el7.x86_64.rpm         zabbix-web-mysql-3.0.2-1.el7.noarch.rpm
zabbix-java-gateway-3.0.2-1.el7.x86_64.rpm  zabbix-server-mysql-3.0.2-1.el7.x86_64.rpm   zabbix-web-pgsql-3.0.2-1.el7.noarch.rpm
zabbix-proxy-mysql-3.0.2-1.el7.x86_64.rpm   zabbix-server-pgsql-3.0.2-1.el7.x86_64.rpm
zabbix-proxy-pgsql-3.0.2-1.el7.x86_64.rpm   zabbix-web-3.0.2-1.el7.noarch.rpm

  2)安装server端的程序包:zabbix-server-mysql和zabbix-get

[root@centos7 zabbix]# yum install ./zabbix-server-mysql-3.0.2-1.el7.x86_64.rpm zabbix-get-3.0.2-1.el7.x86_64.rpm 

[root@centos7 ~]# rpm -ql zabbix-server-mysql  # 查看生成的文件
/etc/logrotate.d/zabbix-server
/etc/zabbix/zabbix_server.conf                 # 主配置文件
/usr/lib/systemd/system/zabbix-server.service  # Unit File
/usr/lib/tmpfiles.d/zabbix-server.conf
/usr/lib/zabbix/alertscripts
/usr/lib/zabbix/externalscripts
/usr/sbin/zabbix_server_mysql
/usr/share/doc/zabbix-server-mysql-3.0.2
/usr/share/doc/zabbix-server-mysql-3.0.2/AUTHORS
/usr/share/doc/zabbix-server-mysql-3.0.2/COPYING
/usr/share/doc/zabbix-server-mysql-3.0.2/ChangeLog
/usr/share/doc/zabbix-server-mysql-3.0.2/NEWS
/usr/share/doc/zabbix-server-mysql-3.0.2/README
/usr/share/doc/zabbix-server-mysql-3.0.2/create.sql.gz  # sql脚本,要导入数据库中
/usr/share/man/man8/zabbix_server.8.gz
/var/log/zabbix
/var/run/zabbix

 3)导入数据库脚本,以生成数据库环境

# 把sql脚本文件复制到本地,然后解压缩
[root@centos7 ~]# cp  /usr/share/doc/zabbix-server-mysql-3.0.2/create.sql.gz ./zabbix/
[root@centos7 ~]# gzip -d zabbix/create.sql.gz   # 解压缩
[root@centos7 ~]# cd zabbix/ 
[root@centos7 zabbix]# ls
create.sql  # 解压后的文件
# 导入数据库脚本
[root@centos7 ~]# mysql -uzbxuser -h127.0.0.1 -pzbxpass zabbix < zabbix/create.sql 

# 登录zabbix数据库,查看生成的表,确定没有问题
[root@centos7 ~]# mysql -uzbxuser -h127.0.0.1 -pzbxpass 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 5
Server version: 5.5.44-MariaDB MariaDB Server

Copyright (c) 2000, 2015, Oracle, MariaDB Corporation Ab and others.

Type ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ to clear the current input statement.

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| test               |
| zabbix             |
+--------------------+
3 rows in set (0.00 sec)

MariaDB [(none)]> use zabbix;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
MariaDB [zabbix]> show tables; #为了节省空间我这里没有列出所有的表
+----------------------------+
| Tables_in_zabbix           |
+----------------------------+
| acknowledges               |
| actions                    |
| alerts                     |
| application_discovery      |
| application_prototype      |
| application_template       |
| applications               |
| auditlog                   |
| auditlog_details           |
| autoreg_host               |
| conditions                 |
| config                     |
| dbversion                  |
| dchecks                    |
| dhosts                     |
| drules                     |
| dservices                  |
| escalations                 
                             |
+----------------------------+

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

3.zabbix server配置启动

  1)修改配置文件/etc/zabbix/zabbix_server.conf

[root@centos7 ~]#  cd /etc/zabbix/
[root@centos7 zabbix]# ls
zabbix_server.conf
[root@centos7 zabbix]# cp zabbix_server.conf{,.bak}  # 备份配置文件
[root@centos7 zabbix]# grep "^####" zabbix_server.conf # 获取配置段信息
############ GENERAL PARAMETERS #################
############ ADVANCED PARAMETERS ################
####### LOADABLE MODULES #######
####### TLS-RELATED PARAMETERS #######

[root@centos7 zabbix]# vim zabbix_server.conf
DBHost=10.1.252.153
DBName=zabbix  
DBUser=zbxuser  
DBPassword=zbxpass
# 其余的配置,如端口,socket这里使用默认的就可以

  2)最后启动服务,但是这里要注意一个问题,就是zabbix要求trousers的程序包版本必须要在0.3.12才可以启动,如果小于的话很可能会启动不了;

[root@centos7 zabbix]# rpm -q trousers
trousers-0.3.13-1.el7.x86_64

# 启动服务,查看端口10051
[root@centos7 zabbix]# systemctl start zabbix-server.service
[root@centos7 zabbix]# ss -tnl
State       Recv-Q Send-Q           Local Address:Port                          Peer Address:Port              
LISTEN      0      50                           *:3306                                     *:*                  
LISTEN      0      128                          *:22                                       *:*                  
LISTEN      0      128                  127.0.0.1:631                                      *:*                  
LISTEN      0      100                  127.0.0.1:25                                       *:*                  
LISTEN      0      128                  127.0.0.1:6015                                     *:*                  
LISTEN      0      25                           *:514                                      *:*                  
LISTEN      0      128                          *:10051                                    *:*


 如上,就是整个zabbix-server的配置启动过程...



zabbix web配置:

 1.安装配置过程

1.解决依赖关系

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

2.安装web GUI 

  • # yum install zabbix-web-3.0.2-1.el7.noarch.rpm zabbix-web-mysql-3.0.2-1.el7.noarch.rpm

3.配置php时区参数

  • php.ini 

  • /etc/httpd/conf.d/zabbix.conf

       php_value date.timezone Asia/Shanghai

4.启动web服务

  • # systemctl start httpd.service

5.访问web

  • http://HOST/zabbix 

  • 安装后生成的配置文件:/etc/zabbix/web/zabbix.conf.php

  • 安装后默认登录的管理员/密码:admin/zabbix 

6.菜单:

  • Monitoring

  • Inventory

  • Reports

  • Configuration

  • Administration

演示:

  环境:zabbix web的配置可以在另外一台主机上配置,也可以和zabbix-server配置在同一台主机,这里我先配置在同一台CentOS 7 的主机之上

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

1.构建lamp环境,安装相应的程序包解决依赖关系

[root@centos7 ~]# yum install httpd php php-mysql php-mbstring php-gd php-bcmath php-ldap php-xml

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

2.安装web GUI 

[root@centos7 zabbix]# pwd
/root/zabbix
[root@centos7 zabbix]# ls
create.sql                                  zabbix-proxy-pgsql-3.0.2-1.el7.x86_64.rpm    zabbix-web-3.0.2-1.el7.noarch.rpm
zabbix-agent-3.0.2-1.el7.x86_64.rpm         zabbix-proxy-sqlite3-3.0.2-1.el7.x86_64.rpm  zabbix-web-japanese-3.0.2-1.el7.noarch.rpm
zabbix-get-3.0.2-1.el7.x86_64.rpm           zabbix-sender-3.0.2-1.el7.x86_64.rpm         zabbix-web-mysql-3.0.2-1.el7.noarch.rpm
zabbix-java-gateway-3.0.2-1.el7.x86_64.rpm  zabbix-server-mysql-3.0.2-1.el7.x86_64.rpm   zabbix-web-pgsql-3.0.2-1.el7.noarch.rpm
zabbix-proxy-mysql-3.0.2-1.el7.x86_64.rpm   zabbix-server-pgsql-3.0.2-1.el7.x86_64.rpm

[root@centos7 zabbix]# yum install ./zabbix-web-3.0.2-1.el7.noarch.rpm zabbix-web-mysql-3.0.2-1.el7.noarch.rpm

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

3.配置时区,既可以在php.ini中配置,也可以在/etc/httpd/conf.d/zabbix.conf中配置

[root@centos7 conf.d]# pwd
/etc/httpd/conf.d
[root@centos7 conf.d]# vim zabbix.conf
 php_value date.timezone Asia/Shanghai

技术分享


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

4.启动web服务,查看80端口

  • ~]# systemctl start httpd.service

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

5.访问web

  1)在浏览器中打开,第一次需要安装zabbix,步骤如下:

技术分享

  2)点击下一步

技术分享

  3)填写数据库相关的信息

技术分享

  4)可选填的信息,可以直接跳过

技术分享

  5)显示我们的定义的信息,没问题点下一步

技术分享

  6)提示安装完成,并自动生成了zabbix-web的配置文件,如果以后要修改其配置到相应路径下的配置文件中修改即可

技术分享

  7)以管理员账户登录(默认管理员为admin,密码为zabbix)

技术分享

  如下,就为默认的zabbix的控制面板

技术分享

 8)更改为中文

   进入主页面:下面进行,将语言改为中文。

[root@localhost ~]# vim /usr/share/zabbix/include/locales.inc.php

  找到第55行,将false改为true技术分享

   点击zabbix右上角小人,进行修改

技术分享

技术分享

============================================================================

注意:

  1)我们还授权了本地(127.0.0.1)登录,如果要想使用本地登录,就需要修改zabbix-server的配置文件/etc/zabbix/zabbix_server.conf 和安装后生成web的配置文件,/etc/zabbix/web/zabbix.conf.php,把其对应的数据库主机改为127.0.0.1即可。

   zabbix-server的配置文件;

技术分享

   zabbix-web的配置文件;

技术分享


  2)如果zabbix-server和zabbix-web在同一台主机,一定要想启动zabbix-server服务,再启动zabbix-web服务,否则zabbix-server是启动不了的


 如上,就是整个zabbix-web端的整个安装配置过程...
























Linux 监控系统---zabbix