简介
- 官方文档:
Linux开源平台
流行的开源监控软件:Catic、Naqios、Zabbix、smokeping、open-falcon等待
前三款软件都可以监控服务器的基础指标:cpu、内存、磁盘、网络……
- Catic:更擅长监控网络流量,很多都是IDC机房的网络设备
- Nagios:不需要数据库(已经被冷漠),Cacti和Zabbix都需要数据库支持(MySQL)
- Zabbix:可以存储数据,便于监控画图,并且支持查询历史数据和自定义监控项,通过web界面提供分布式的网络监控
- open-falcon:小米公司开发
- Prometheurs:目前监控容器平台相对流行的一种方式
Zabbix监控介绍
1.zabbix是一款企业级的分布式开源监控方案
2.zabbix是一款能够监控各种网络参数以及服务器健康性和完成性的软件
使用灵活的通知机制,允许用户为几乎任何事情配置邮箱警告,基于已存储的数据,Zabbix提供了出色的报告和数据可视化功能
3.zabbix支持主动轮询和被动轮询两种方式,zabbix所有的报告,统计信息和配置都可以通过web的方式在前端进行访问
4.使用C语言编写的,占用的内存少,便于移植功能点
数据收集
1.可用性和性能检查 2.支持SNMP(包括主动轮询和被动获取),IPMI,JMX,VMware监控 3.自定义检查 4.按照自定义的间隔收集需要的数据 5.通过server/proxy+agents来执行灵活的阈值定义
定义问题阈值,也就是触发器,触发器从后端数据库获取参考值高度可配置化的告警
1.可根据递增机制,接收方和媒介类型自定义发送告警通知 2.使用宏变量可以使告警通知更加高效有用 3自动相应动作可包含远程命令实时图表绘制
使用内置图标绘制功能可以将监控项的内容实时绘制成图表web监控功能
可以模拟鼠标在web网站上的点击操作,来检查web的功能和响应时间丰富的可视化选项
1.支持创建自定义的图表,一个视图集中展现多个监控项 2.网络拓扑图 3.以仪表盘的样式自定义大屏展现和幻灯片轮询播放 4.报表 5.监控内容的高级(业务)视图历史数据存储
1.数据库数据 2.可配置历史数据 3.内置数据管理机制(housekeeping)使用模板
在模板中分组检查,模板可以关联其他模板网络发现
1.自动发现网络设备 2.监控代理自动注册 3.发现文件系统,网络接口和SNMP OID值快捷的web界面
使用PHP web前端,可从任何地方访问,可以定制自己的操作方式,可以审核日志接口
提供了对外的可编程接口,用于批量操作,第三方软件继承和其他目的权限管理系统
安全用户认证,特定用户可以限制访问特定的视图通讯方式
agent:通过专用的代理程序进行监控,与常见的master/agent模型类似 Zabbix agent 10050
ssh/telnet:通过远程控制协议进行通讯
SNMP:通过SNMP协议与被监控对象进行通讯,SNMP协议(Simple Network Management Protocol)简单网络管理协议。在不能安装agant的硬件(路由器、交换机)上使用,使用SNMP内置的agent。 SNMP agent 161
IPMI:通过IPMI接口进行监控,监控被监控对象的物理特征,eg:电压、温度、风扇状态、电源状态等 IPMI 623.
JMX:通过JMX进行监控,JMX(java Management Extensions,java管理拓展),监控JVM虚拟机时的时候,使用JMX. , JMX 12345zabbix服务组件
server-agentd模式:

规模变大之后,将被监控的对象划分成不同的区域,每个区域设置一台代理主机,区域内的每个被监控对象的信息被agent采集,提交给代理主机,代理主机再将收到的信息统一提交给真正的主机,zabbix proxy分摊了zabbix server的压力
server-proxy-agentd模式:

1.zabbix-server :整个监控体系中最核心的组件,它负责接收客户端的报告信息、所有配置,统计数据及操作数据
2.数据库存储:所有配置信息以及zabbix收集到的数据都被存放在数据库中
3.zabbix-web:展示监控的数据信息,方便管理员访问监控界面,通常来说web会和zabbix-server部署在一起
4.zabbix-agant:客户端软件:每个被监控主机都需要安装代理软件,用于采集各监控项的数据,然后数据传输给zabbix-proxy、zabbix-server
5.zabbix-proxy(可选组件):用于监控节点数量非常多的分布式环境,它可以代理zabbix-server功能,减轻zabbix-server的压力
工作模式
主动模式:agent端将采集完的数据主动发送给server端
被动模式:agent端不主动发送数据,而是等server端过来拉取数据
主动还是别动,取决于agent端,主动模式与被动模式可以同时存在,互不冲突
管理员可以在agent端使用一个名为zabbix_sender的工具,测试是否能够向server端发送数据。
管理员可以在server端使用一个名为zabbix_get的工具,测试是否能够从agent端拉取数据
术语
主机(host):被监控的网络设备,用IP或域名来表示
主机组(host group):主机的逻辑组,包含主机和模板。一个主机组中的主机和模板之间并没有直接的关联。给不同用户组的主机分配权限的时候使用主机组
监控项(item):接收的主机的特定数据
触发器(trigger):一个用于定义问题和阈值和“评估”监控项接收到的数据的逻辑表达式
事件(event):单次发送的需要注意的事情
异常(problem):处于异常状态的触发器
动作(action):一个对事件做出反应的预定义的操作
媒介(media):发送告警通知的手段
升级(escalation):一个在动作内执行操作的自定义场景。发送通知。执行远程,命令的序列
模板(template):一组可以被应也能到一个或多个主机上的实体(监控项,触发器,图形,应该用web场景)的集合 。任务:加快对主机监控任务的实施,可以使监控任务的批量修改更简单。
应用(application):一组监控项组成的逻辑分组
web 场景(web scenario):利用一个或多个http请求来检查网站的可用性
前端(frontend):web界面
进程
zabbix_server :服务器守护进程(Deamon)
Zabbix agent:部署在监控的目标上,主动监测本地的资源和应用(硬件驱动,内存,处理器统计等)。
Zabbix Proxy:是一个可以从一个或多个受监控设备收集监控数据,并将信息发送到Zabbix sever的进程,基本上是代表sever工作的。 所有收集的数据都在本地进行缓存,然后传送到proxy所属的Zabbix sever
Zabbix Java gateway:支持监控JMX的程序
Zabbix sender :是一种命令行应用,它可以将性能数据发送到Zabbix server进行处理。 该应用通常用在长时间运行的用户脚本,用于定期发送可用性和性能数据。
Zabbix get :是一种命令行应用,它可以用于与Zabbix agent进行通信,并从agent哪里获取所需的信息 该应用通常被用于Zabbix agent故障排除。
安装
1.环境
关闭防火墙,关闭selinux
安装:yum install gcc gcc-c++ -y
安装:yum install gcc gcc-c++ -y
2.安装
换清华源或者选择不换
安装源码库配置部署包:
[root@node1 ~]# rpm -ivh http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-1.el7.centos.noarch.rpm
安装Zabbix部署包:
[root@node1 ~]# yum install zabbix-server-mysql zabbix-web-mysql -y如果出现[Errno 256] No more mirrors to try. 那就两个分开安装,然后不停安装,一点一点安装直到进度条到了100%,显示Complete!
检查是否安装好服务端这四个包:
[root@server ~]# rpm -qa | grep zabbixzabbix-web-mysql-3.4.15-1.el7.noarchzabbix-release-3.4-1.el7.centos.noarchzabbix-web-3.4.15-1.el7.noarchzabbix-server-mysql-3.4.15-1.el7.x86_64
安装客户端包:
[root@server ~]# yum install -y zabbix-agent**如果出现[Errno 256] No more mirrors to try.那就不停安装,直到安装到100%,显示Complete!
再次查看本地安装相关zabbix包,显示如下5给包说明安装成功
[root@server ~]# rpm -qa | grep zabbixzabbix-release-3.4-1.el7.centos.noarchzabbix-web-3.4.15-1.el7.noarchzabbix-server-mysql-3.4.15-1.el7.x86_64zabbix-web-mysql-3.4.15-1.el7.noarchzabbix-agent-3.4.15-1.el7.x86_64
3.安装并初始化数据库
[root@server ~]# yum install mariadb-server -y[root@server ~]# systemctl enable mariadb[root@server ~]# systemctl start mariadb//创建数据库zabbix[root@server ~]# mysqlWelcome to the MariaDB monitor. Commands end with ; or \g.Your MariaDB connection id is 2Server version: 5.5.64-MariaDB MariaDB ServerCopyright (c) 2000, 2018, 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 character set utf8 collate utf8_bin;Query OK, 1 row affected (0.00 sec)MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost identified by '000000';Query OK, 0 rows affected (0.00 sec)MariaDB [(none)]> flush privileges;Query OK, 0 rows affected (0.00 sec)MariaDB [(none)]> exitBye
导入zabbix提供的数据库文件
[root@server ~]# cd /usr/share/doc/[root@server doc]# ls | grep zabbixzabbix-agent-3.4.15zabbix-release-3.4zabbix-server-mysql-3.4.15zabbix-web-3.4.15[root@server doc]# cd /usr/share/doc/zabbix-server-mysql-3.4.15/ ##初始化数据的包[root@server zabbix-server-mysql-3.4.15]# lsAUTHORS ChangeLog COPYING create.sql.gz NEWS README[root@server zabbix-server-mysql-3.4.15]# zcat create.sql.gz | mysql -uroot zabbix
检查是否导入成功
[root@server zabbix-server-mysql-3.4.15]# mysqlMariaDB [(none)]> show databases;+--------------------+| Database |+--------------------+| information_schema || mysql || performance_schema || test || zabbix |+--------------------+MariaDB [(none)]> use zabbix;MariaDB [zabbix]> show tables;+----------------------------+| Tables_in_zabbix |+----------------------------+| acknowledges || actions || alerts || application_discovery || application_prototype || application_template || applications || auditlog || auditlog_details || autoreg_host ……………………
4.配置服务端配置文件

vim /etc/zabbix/zabbix_server.conf
5.开启服务
[root@server ~]# systemctl enable zabbix-serverCreated symlink from /etc/systemd/system/multi-user.target.wants/zabbix-server.service to /usr/lib/systemd/system/zabbix-server.service.[root@server ~]# systemctl start zabbix-server
6Zabbix前端的PHP配置设置时区,并配置时钟同步
[root@server ~]# vim /etc/httpd/conf.d/zabbix.conf

开启httpd服务
[root@server ~]# systemctl enable httpd
[root@server ~]# systemctl start httpd
配置时钟同步
[root@server ~]# yum install ntpdate -y
7.Zabbix前端可以在浏览器中通过 http://zabbix-frontend-hostname/zabbix 进行访问。默认的用户名/密码为 Admin/zabbix (Zabbix超级用户)
登录
输入DB用户名和密码,就是配置文件中的用户名和密码
之后下一步需要输入的用户名可以选择不输入
之后点击下一步登录 账号Admin 密码zabbix
登录之后的界面
设置为中文
Administration 用户管理
zabbix在安装后,定义了两个用户:
Admin:是Zabbix的超级管理员,拥有所有权限
Guest:是一个特殊的默认用户。如果没有登陆,访问Zabbix 的时候使用的就是guest权限。默认情况下,guest用户对Zabbix的对象没有任何权限
用户: 1.基本信息 2.媒介 (Email sms 主要是用发送反馈信息的渠道) 3. 权限(通过选择用户的所属组,权限设定都是集中在user group统一管理)

用户组:1.组中的用户 2.对权限的设定(主要针对主机组的查和改两种权限)
快速开始
1.Hosts:需要监控的主机,新建主机,选择主机组,agent的连接(采用IP/DNS)
2.Host groups :定义主机组,主机组中可以提前配置,jianko监控项,触发器,模板等等
3.监控项: 我需要获取主机的监控信息 (CUP.load)
4.触发器: 根据监控项收到的数据进行评估,设定一些阙值
评估等级:信息 警告 严重 灾难
根据我们设定的表达式来: 平均负载如果在10s内超过0.5则认为是警告信息
5.问题通知:
选取合适的媒介发送信息… https://www.zabbix.com/documentation/3.4/zh/manual/quickstart/notification
6.模版:
定义了部分监控项和触发器,能够直接给主机使用
创建模版:create ; 可以去基于模版再去定义模版
日常工作中: 新建主机 —> 监控项 —> 触发器(条件和动作) —-> 通过脚本方式解决 —> 通过媒介通知给我们的管理员
node2客户端
[root@node2 ~]# rpm -ivh http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-1.el7.centos.noarch.rpm
[root@node2 ~]# yum install -y zabbix-agent** ##不断执行直到成功
将node1上的文件传到node2上
[root@server yum.repos.d]# cd /etc/yum.repos.d
[root@server yum.repos.d]# scp zabbix.repo 192.168.10.152:/etc/yum.repos.d/
修改配置文件
[root@node2]# cd /etc/zabbix
[root@node2 zabbix]# vim zabbix_agentd.conf
指定zabbix server
指定zabbix server
被监控的主机
[root@node2 zabbix]# cat zabbix_agentd.conf | grep -Ev "^$|^#"
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=192.168.10.138
ServerActive=192.168.10.138
Hostname=node2
Include=/etc/zabbix/zabbix_agentd.d/*.conf
启动服务
[root@node2 zabbix]# systemctl enable zabbix-agent
Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-agent.service to /usr/lib/systemd/system/zabbix-agent.service.
[root@node2 zabbix]# systemctl start zabbix-agent
1.新建hosts

[root@node2 zabbix]# ss -tanl | grep 10050
LISTEN 0 128 *:10050 *:*
LISTEN 0 128 :::10050 :::*
2.新建监控项
3.新建触发器


4.获取问题通知
打开主机的控制台,并运行:
cat /dev/urandom | md5sum
5.新建模板
使用到的一些模板
要注意模板中的监控项
套用mysql模板

6.检测一下
在node2上,执行下面命令,就会很快触发触发器
[root@node2 zabbix]# while true;do echo "hello";done
会出现下面的内容
ps:如果要检测server端的信息,需要安装agent,并且开启服务,还要修改配置文件,将server地址进行修改
Proxy代理
介绍
Zabbix Proxy可以代替Zabbix Server检索客户端的数据,然后把数据汇报给Zabbix Server,并且在一定程度上分担了Zabbix Server的压力。Zabbix Proxy可以简便的实现集中式、分布式监控。
使用场景:
1.监控远程区域设备
2.监控本地网络不稳定区域
3.当Zabbix监控上千设备时,使用proxy来减轻Server的压力
4.简化Zabbix的委会
注意:
1.Zabbix Proxy数据库必须和Zabbix Server分开,否则数据会被破坏,以为这两个数据库中的表大部分都相同。
2.Zabbix Proxy收集到数据之后,首先将数据缓存在本地,然后再一定时间之后传递给Zabbix Server,这个时间由Zabbix Proxy 配置文件中参数 ProxyLocalBuffer and ProxyOfflineBuffer决定
3.Zabbix Proxy是一个数据收集器,它不计算触发器、不处理事件、不发送报警
部署
node3作为Proxy端
1.安装
安装源码库配置部署包
[root@proxy ~]# rpm -ivh http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-1.el7.centos.noarch.rpm
Retrieving http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-1.el7.centos.noarch.rpm
Preparing... ################################# [100%]
Updating / installing...
1:zabbix-release-3.4-1.el7.centos ################################# [100%]
安装相关软件包
[root@proxy ~]# yum install maridb-server -y
[root@proxy ~]# yum install zabbix-proxy-mysql -y #不停安装 直到complete
2.启动并初始化数据库
[root@proxy ~]# systemctl start mariadb
[root@proxy ~]# mysql
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 3
Server version: 5.5.64-MariaDB MariaDB Server
Copyright (c) 2000, 2018, 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_proxy character set utf8 collate utf8_bin;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> grant all privileges on zabbix_proxy.* to zabbix_proxy@localhost identified by 'zabbix_proxy';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> exit
Bye
[root@proxy ~]# # cd /usr/share/doc/zabbix‐proxy‐mysql‐3.4.15/
[root@proxy doc]# cd zabbix-proxy-mysql-3.4.15
[root@proxy zabbix-proxy-mysql-3.4.15]# ls
AUTHORS ChangeLog COPYING NEWS README schema.sql.gz
[root@proxy zabbix-proxy-mysql-3.4.15]# zcat schema.sql.gz | mysql -uroot zabbix_proxy
3.编辑配置文件
[root@proxy zabbix]# cd /etc/zabbix/
[root@proxy zabbix]# vim zabbix_proxy.conf
[root@proxy zabbix]# cat zabbix_proxy.conf | grep -Ev "^$|^#"
Server=192.168.10.138
ServerPort=10051 #一定要修改
Hostname=Zabbix_proxy
LogFile=/var/log/zabbix/zabbix_proxy.log
LogFileSize=0
PidFile=/var/run/zabbix/zabbix_proxy.pid
SocketDir=/var/run/zabbix
DBHost=localhost
DBName=zabbix_proxy
DBUser=zabbix_proxy
DBPassword=zabbix_proxy
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
Timeout=4
ExternalScripts=/usr/lib/zabbix/externalscripts
LogSlowQueries=3000
4.启动proxy服务
[root@proxy zabbix]# systemctl enable zabbix-proxy
Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-proxy.service to /usr/lib/systemd/system/zabbix-proxy.service.
[root@proxy zabbix]# systemctl start zabbix-proxy
web端的操作


2.添加Proxy架构的主机监控
i.添加主机的方式和正常模式是一样的,唯一不同的地方是Monitored by proxy选择的对应的Proxy节点
ii.如果是已经存在的没有被Proxy监控的节点,修改成被Proxy代理监控时,需要修改Zabbix Agent配置文件,将Server / Server Active 配置成Proxy的IP
在node2上进行修改
[root@node2 ~]# cd /etc/zabbix
[root@node2 zabbix]# vim zabbix_agentd.conf
[root@node2 zabbix]# cat zabbix_agentd.conf | grep -Ev "^$|^#"
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=192.168.10.140
ServerActive=192.168.10.140
Hostname=node2
Include=/etc/zabbix/zabbix_agentd.d/*.conf
测试
[root@node2 ~]# while true;do echo "hello";done

错误
查看状态,查看日志文件
[root@proxy ~]# tail -f /var/log/zabbix/zabbix_proxy.log
tail -f /var/log/zabbix/zabbix_agentd.log
tail -f /var/log/zabbix/zabbix_server.log
- Received empty response from Zabbix Agent at [127.0.0.1]. Assuming th
解决



