简介

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 12345

    zabbix服务组件

    server-agentd模式:

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

server-proxy-agentd模式:

Zabbix1 - 图4
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.安装

换清华源或者选择不换

安装源码库配置部署包:

  1. [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部署包:

  1. [root@node1 ~]# yum install zabbix-server-mysql zabbix-web-mysql -y
  2. 如果出现[Errno 256] No more mirrors to try. 那就两个分开安装,然后不停安装,一点一点安装直到进度条到了100%,显示Complete!

检查是否安装好服务端这四个包:

  1. [root@server ~]# rpm -qa | grep zabbix
  2. zabbix-web-mysql-3.4.15-1.el7.noarch
  3. zabbix-release-3.4-1.el7.centos.noarch
  4. zabbix-web-3.4.15-1.el7.noarch
  5. zabbix-server-mysql-3.4.15-1.el7.x86_64

安装客户端包:

  1. [root@server ~]# yum install -y zabbix-agent**
  2. 如果出现[Errno 256] No more mirrors to try.那就不停安装,直到安装到100%,显示Complete

再次查看本地安装相关zabbix包,显示如下5给包说明安装成功

  1. [root@server ~]# rpm -qa | grep zabbix
  2. zabbix-release-3.4-1.el7.centos.noarch
  3. zabbix-web-3.4.15-1.el7.noarch
  4. zabbix-server-mysql-3.4.15-1.el7.x86_64
  5. zabbix-web-mysql-3.4.15-1.el7.noarch
  6. zabbix-agent-3.4.15-1.el7.x86_64

3.安装并初始化数据库

  1. [root@server ~]# yum install mariadb-server -y
  2. [root@server ~]# systemctl enable mariadb
  3. [root@server ~]# systemctl start mariadb
  4. //创建数据库zabbix
  5. [root@server ~]# mysql
  6. Welcome to the MariaDB monitor. Commands end with ; or \g.
  7. Your MariaDB connection id is 2
  8. Server version: 5.5.64-MariaDB MariaDB Server
  9. Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
  10. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
  11. MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;Query OK, 1 row affected (0.00 sec)
  12. MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost identified by '000000';
  13. Query OK, 0 rows affected (0.00 sec)
  14. MariaDB [(none)]> flush privileges;
  15. Query OK, 0 rows affected (0.00 sec)
  16. MariaDB [(none)]> exit
  17. Bye

导入zabbix提供的数据库文件

  1. [root@server ~]# cd /usr/share/doc/
  2. [root@server doc]# ls | grep zabbix
  3. zabbix-agent-3.4.15
  4. zabbix-release-3.4
  5. zabbix-server-mysql-3.4.15
  6. zabbix-web-3.4.15
  7. [root@server doc]# cd /usr/share/doc/zabbix-server-mysql-3.4.15/ ##初始化数据的包
  8. [root@server zabbix-server-mysql-3.4.15]# ls
  9. AUTHORS ChangeLog COPYING create.sql.gz NEWS README
  10. [root@server zabbix-server-mysql-3.4.15]# zcat create.sql.gz | mysql -uroot zabbix

检查是否导入成功

  1. [root@server zabbix-server-mysql-3.4.15]# mysql
  2. MariaDB [(none)]> show databases;
  3. +--------------------+
  4. | Database |
  5. +--------------------+
  6. | information_schema |
  7. | mysql |
  8. | performance_schema |
  9. | test |
  10. | zabbix |
  11. +--------------------+
  12. MariaDB [(none)]> use zabbix;
  13. MariaDB [zabbix]> show tables;
  14. +----------------------------+
  15. | Tables_in_zabbix |
  16. +----------------------------+
  17. | acknowledges |
  18. | actions |
  19. | alerts |
  20. | application_discovery |
  21. | application_prototype |
  22. | application_template |
  23. | applications |
  24. | auditlog |
  25. | auditlog_details |
  26. | autoreg_host ……………………

4.配置服务端配置文件
image.png

  1. vim /etc/zabbix/zabbix_server.conf

5.开启服务

  1. [root@server ~]# systemctl enable zabbix-server
  2. Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-server.service to /usr/lib/systemd/system/zabbix-server.service.
  3. [root@server ~]# systemctl start zabbix-server

6Zabbix前端的PHP配置设置时区,并配置时钟同步

  1. [root@server ~]# vim /etc/httpd/conf.d/zabbix.conf

image.png
开启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超级用户)
image.png

登录

输入DB用户名和密码,就是配置文件中的用户名和密码
image.png

之后下一步需要输入的用户名可以选择不输入

之后点击下一步登录 账号Admin 密码zabbix
image.png

登录之后的界面
image.png

设置为中文
image.png

Administration 用户管理

zabbix在安装后,定义了两个用户:
Admin:是Zabbix的超级管理员,拥有所有权限
Guest:是一个特殊的默认用户。如果没有登陆,访问Zabbix 的时候使用的就是guest权限。默认情况下,guest用户对Zabbix的对象没有任何权限
image.png
用户: 1.基本信息 2.媒介 (Email sms 主要是用发送反馈信息的渠道) 3. 权限(通过选择用户的所属组,权限设定都是集中在user group统一管理)
image.png
image.png
用户组: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
image.png
指定zabbix server
image.png
被监控的主机
image.png

[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

image.png

[root@node2 zabbix]# ss -tanl | grep 10050
LISTEN     0      128          *:10050                    *:*                  
LISTEN     0      128         :::10050                   :::*

2.新建监控项

image.png
image.png
image.png

3.新建触发器

image.png
image.png

4.获取问题通知

打开主机的控制台,并运行:

cat /dev/urandom | md5sum

5.新建模板

image.png

使用到的一些模板
image.png

要注意模板中的监控项

套用mysql模板
image.png
image.png

image.png

6.检测一下

在node2上,执行下面命令,就会很快触发触发器

[root@node2 zabbix]# while true;do echo "hello";done

会出现下面的内容
image.png

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端的操作

image.png
image.png
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

image.png

错误

查看状态,查看日志文件

[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
  1. Received empty response from Zabbix Agent at [127.0.0.1]. Assuming th

解决
image.png


参考:1.
2.其他错误参考