监控系统及zabbix基础(一)

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

概述:

本章我们将介绍Linux中的监控系统,zabbix,具体内容如下:

监控系统概述及功能介绍;

zabbix系统架构,功能及其相关术语;

zabbix-server的安装、配置和启动;

zabbix-web的安装、配置和启动;

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

监控系统

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_databaseStorage:

专用于存储所有配置信息,以及有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.安装配置过程

★zabbix database

mysql> CREATE DATABASE zabbix CHARSET 'utf8';

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

★安装服务器端

☉安装

# 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 -h227.0.0.1 -pzbxpass zabbix < /usr/share/doc/zabbix-server-mysql-3.0.2/create.sql

注意:

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

★zabbix server配置启动

演示:

操作环境:CentOS 7 虚拟机

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

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

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

#在CentOS7安装mariadb数据库,使用前要首先编辑其配置文件/etc/my.cnf,添加跳过名称解析等[root@centos7~]#vim/etc/my.cnfskip_name_resolve=ONinnodb_file_per_table=ON#启动数据库,可以设置开机自启动[root@centos7~]#systemctlstartmariadb.service[root@centos7~]#systemctlenabledmariadb.service

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

[root@centos7~]#mysql-p134296WelcometotheMariaDBmonitor.Commandsendwith;or\g.YourMariaDBconnectionidis3Serverversion:5.5.44-MariaDBMariaDBServerCopyright(c)2000,2015,Oracle,MariaDBCorporationAbandothers.Type'help;'or'\h'forhelp.Type'\c'toclearthecurrentinputstatement.MariaDB[(none)]>createdatabasezabbixcharset'utf8';QueryOK,1rowaffected(0.00sec)MariaDB[(none)]>GRANTALLONzabbix.*TO'zbxuser'@'10.1.%.%'IDENTIFIEDBY'zbxpass';QueryOK,0rowsaffected(0.00sec)MariaDB[(none)]>GRANTALLONzabbix.*TO'zbxuser'@'127.0.0.1'IDENTIFIEDBY'zbxpass';QueryOK,0rowsaffected(0.01sec)MariaDB[(none)]>FLUSHPRIVILEGES;QueryOK,0rowsaffected(0.01sec)MariaDB[(none)]>showdatabases;+--------------------+|Database|+--------------------+|information_schema||Syslog||mydb||mysql||performance_schema||test||ultrax||zabbix|+--------------------+8rowsinset(0.08sec)

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

2.安装服务器端

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

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

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

[root@centos7zabbix]#yuminstall./zabbix-server-mysql-3.0.2-1.el7.x86_64.rpmzabbix-get-3.0.2-1.el7.x86_64.rpm[root@centos7~]#rpm-qlzabbix-server-mysql#查看生成的文件/etc/logrotate.d/zabbix-server/etc/zabbix/zabbix_server.conf#主配置文件/usr/lib/systemd/system/zabbix-server.service#UnitFile/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-dzabbix/create.sql.gz#解压缩[root@centos7~]#cdzabbix/[root@centos7zabbix]#lscreate.sql#解压后的文件

#导入数据库脚本[root@centos7~]#mysql-uzbxuser-h227.0.0.1-pzbxpasszabbix<zabbix/create.sql#登录zabbix数据库,查看生成的表,确定没有问题[root@centos7~]#mysql-uzbxuser-h227.0.0.1-pzbxpassWelcometotheMariaDBmonitor.Commandsendwith;or\g.YourMariaDBconnectionidis5Serverversion:5.5.44-MariaDBMariaDBServerCopyright(c)2000,2015,Oracle,MariaDBCorporationAbandothers.Type'help;'or'\h'forhelp.Type'\c'toclearthecurrentinputstatement.MariaDB[(none)]>showdatabases;+--------------------+|Database|+--------------------+|information_schema||test||zabbix|+--------------------+3rowsinset(0.00sec)MariaDB[(none)]>usezabbix;ReadingtableinformationforcompletionoftableandcolumnnamesYoucanturnoffthisfeaturetogetaquickerstartupwith-ADatabasechangedMariaDB[zabbix]>showtables;#为了节省空间我这里没有列出所有的表+----------------------------+|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@centos7zabbix]#lszabbix_server.conf[root@centos7zabbix]#cpzabbix_server.conf{,.bak}#备份配置文件

[root@centos7zabbix]#grep"^####"zabbix_server.conf#获取配置段信息############GENERALPARAMETERS#############################ADVANCEDPARAMETERS#######################LOADABLEMODULES##############TLS-RELATEDPARAMETERS#######[root@centos7zabbix]#vimzabbix_server.confDBHost=10.1.252.153DBName=zabbixDBUser=zbxuserDBPassword=zbxpass#其余的配置,如端口,socket这里使用默认的就可以

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

[root@centos7zabbix]#rpm-qtrouserstrousers-0.3.13-1.el7.x86_64#启动服务,查看端口10051[root@centos7zabbix]#systemctlstartzabbix-server.service[root@centos7zabbix]#ss-tnlStateRecv-QSend-QLocalAddress:PortPeerAddress:PortLISTEN050*:3306*:*LISTEN0128*:22*:*LISTEN0128127.0.0.1:631*:*LISTEN0100127.0.0.1:25*:*LISTEN0128127.0.0.1:6015*:*LISTEN025*:514*:*LISTEN0128*:10051*:*

注意:

zabbix-server服务的启动要依赖于数据库mysql,所以,一定要确保mysql已经启动,再启动zabbix-server。

如上,就是整个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~]#yuminstallhttpdphpphp-mysqlphp-mbstringphp-gdphp-bcmathphp-ldapphp-xml

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

2.安装web GUI

[root@centos7zabbix]#pwd/root/zabbix[root@centos7zabbix]#lscreate.sqlzabbix-proxy-pgsql-3.0.2-1.el7.x86_64.rpmzabbix-web-3.0.2-1.el7.noarch.rpmzabbix-agent-3.0.2-1.el7.x86_64.rpmzabbix-proxy-sqlite3-3.0.2-1.el7.x86_64.rpmzabbix-web-japanese-3.0.2-1.el7.noarch.rpmzabbix-get-3.0.2-1.el7.x86_64.rpmzabbix-sender-3.0.2-1.el7.x86_64.rpmzabbix-web-mysql-3.0.2-1.el7.noarch.rpmzabbix-java-gateway-3.0.2-1.el7.x86_64.rpmzabbix-server-mysql-3.0.2-1.el7.x86_64.rpmzabbix-web-pgsql-3.0.2-1.el7.noarch.rpmzabbix-proxy-mysql-3.0.2-1.el7.x86_64.rpmzabbix-server-pgsql-3.0.2-1.el7.x86_64.rpm[root@centos7zabbix]#yuminstall./zabbix-web-3.0.2-1.el7.noarch.rpmzabbix-web-mysql-3.0.2-1.el7.noarch.rpm

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

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

[root@centos7conf.d]#pwd/etc/httpd/conf.d[root@centos7conf.d]#vimzabbix.confphp_valuedate.timezoneAsia/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右上角小人,进行修改


9)中文乱码问题:

zabbix对中文支持不是太好,会出现乱码问题,所以从Windows中找到字体包(运行--->fonts)

复制字体到 /usr/share/zabbix/fonts,并给予其执行权限;

修改 /usr/share/zabbix/include/defines.inc.php 如下:

展示如下:

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

注意:

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的配置文件;


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