一、zabbix
1.简介
Zabbix 是一个企业级分布式开源监控解决方案。
- Zabbix 软件能够监控众多网络参数和服务器的健康度、完整性。Zabbix 使用灵活的告警机制,允许用户为几乎任何事件配置基于邮件的告警。这样用户可以快速响应服务器问题。Zabbix 基于存储的数据提供出色的报表和数据可视化功能。这些功能使得 Zabbix 成为容量规划的理想选择。
- Zabbix 支持主动轮询(polling)和被动捕获(trapping)。Zabbix所有的报表、统计数据和配置参数都可以通过基于 Web 的前端页面进行访问。基于 Web 的前端页面确保您可以在任何地方访问您监控的网络状态和服务器健康状况。适当的配置后,Zabbix 可以在监控 IT 基础设施方面发挥重要作用。无论是对于有少量服务器的小型组织,还是拥有大量服务器的大企业而言,同样适用。
2. 功能
数据采集
- 可用性和性能检查;
- 支持 SNMP(包括主动轮询和被动捕获)、IPMI、JMX、VMware 监控;
- 自定义检查;
- 按照自定义的时间间隔采集需要的数据;
- 通过 Server/Proxy 和 Agents 来执行数据采集。
灵活的阀值定义
- 您可以参考后端数据库定义非常灵活的告警阈值,即触发器
高度可配化的报警
- 可以根据递增计划、接收者、媒介类型自定义发送告警通知;
- 用宏变量可以使告警通知变得更加高效有用;
- 自动操作包含远程执行命令。
实时图形
- 使用内置图形功能可以将监控项实时绘制成图形。
Web监控功能
- Zabbix可以追踪模拟鼠标在 Web 网站上的点击操作,来检查 Web 网站的功能和响应时间。
丰富的可视化选项
- 可以组合多个监控项到单个视图中,创建自定义图表;
- 网络拓扑图;
- 以仪表盘样式展示自定义聚合图形和幻灯片演示;
- 报表;
- 监控资源的更高层次展示视图(业务视图)。
历史数据存储
- 存储在数据库中的数据;
- 历史配置;
- 置数据管理机制(housekeeping)。
配置简单
- 将被监控设备添加为主机;
- 主机一旦添加到数据库中,就会采集数据用于监控;
- 将模板用于监控设备。
使用模板
- 模板中分组检查;
- 模板可以关联模板,继承已关联模板的属性。
网络发现
- 自动发现网络设备;
- Zabbix Agent 发现设备后自动注册;
- 自动发现文件系统、网络接口和 SNMP OIDs 值。
快捷的web界面
- 基于 PHP 的 Web 前端;
- 可以从任何地方访问;
- 您可以定制自己的操作方式;
- 您可以通过审计日志来查看你的操作。
Zabbix api
- Zabbix API 为 Zabbix 提供可编程接口,用于批量操作、第三方软件集成和其他用途。
权限管理系统
- 安全的用户身份验证;
- 指定的用户只能查看指定的权限范围内的视图。
功能强大且易于扩展的Zabbix Agent
- 部署于被监控对象上;
- 支持 Linux 和 Windows ;
二进制守护进程
- 为了更好的性能和更少的内存占用,采用 C 语言编写;
- 便于移植;
适应更复杂的环境
- 使用 Zabbix Proxy 代理,可以轻松实现分布式远程监控。
3.架构
- Server
Zabbix server 是 Zabbix软件的核心组件,agent 向其报告可用性、系统完整性信息和统计信息。server也是存储所有配置信息、统计信息和操作信息的核心存储库。
- 数据库
所有配置信息以及 Zabbix 采集到的数据都被存储在数据库中。
- Web 界面
为了从任何地方和任何平台轻松访问 Zabbix ,我们提供了基于 web 的界面。该界面是 Zabbix server 的一部分,通常(但不一定)和 Zabbix server 运行在同一台物理机器上。
- Proxy
Zabbix proxy 可以代替 Zabbix server采集性能和可用性数据。Zabbix proxy在Zabbix的部署是可选部分;但是proxy的部署可以很好的分担单个Zabbix server的负载。
- Agent
Zabbix agents 部署在被监控目标上,用于主动监控本地资源和应用程序,并将收集的数据发送给 Zabbix server。
- 数据流
另外,回过头来整体的了解下 Zabbix 内部的数据流对Zabbix的使用也很重要。首先,为了创建一个采集数据的监控项,您就必须先创建主机。其次,在任务的另外一端,必须要有监控项才能创建触发器(trigger),必须要有触发器来创建动作(action)。因此,如果您想要收到类似“X个server上CPU负载过高”这样的告警,您必须首先为 Server X 创建一个主机条目,其次创建一个用于监控其 CPU的监控项,最后创建一个触发器,用来触发 CPU负载过高这个动作,并将其发送到您的邮箱里。虽然这些步骤看起来很繁琐,但是使用模板的话,实际操作非常简单。也正是由于这种设计,使得 Zabbix 的配置变得更加灵活易用。
二、部署zabbix监控
环境:
- zabbix1:server
- zabbix2:agent
- zabbix3:proxy
- 软件:zabbix,php ==> 点击下载 提取码: ft36
1.zabbix1
首先安装zabbix的server端和php软件,这里通过lftp方式传到zabbix1
yum install zabbix-server-mysql-4.0.5-1.el7.x86_64.rpm zabbix-web-mysql-4.0.5-1.el7.noarch.rpm zabbix-web-4.0.5-1.el7.noarch.rpm zabbix-agent-4.0.5-1.el7.x86_64.rpm php-mbstring-5.4.16-42.el7.x86_64.rpm php-bcmath-5.4.16-42.el7.x86_64.rpm fping-3.10-1.el7.x86_64.rpm iksemel-1.4-2.el7.centos.x86_64.rpm -y
zabbix还需要http和数据库服务
yum install httpd mariadb-server -y
对mysql数据库进行一个安全初始化并进行授权,导入zabbix的数据
systemctl start mariadb
mysql_secure_installation ##设置密码为westos
mysql -pwestos
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';
MariaDB [(none)]> quit
zcat /usr/share/doc/zabbix-server-mysql-4.0.5/create.sql.gz |mysql -uzabbix -p zabbix
然后修改zabbix-server的设置文件
vim /etc/zabbix/zabbix_server.conf ##修改以下内容
124 DBPassword=zabbix
修改http的php设置
vim /etc/httpd/conf.d/zabbix.conf ##去掉注释
20 php_value date.timezone Europe/Riga
开启服务
systemctl start httpd
systemctl start zabbix-agent
systemctl start zabbix-server
然后打开firefox浏览器进行设置,输入zabbix1的ip加zabbix,我这里是172.25.1.1/zabbix
点击下一步
点加下一步,密码要输入之前授权的那个密码,也就是zabbix
下一步,Name可以写自己想要的
下一步
设置完毕,点击finish
试着登陆一下,帐号Admin,密码zabbix
至此,zabbix-server端就设置完毕了
2.zabbix2
zabbix2需要安装agent服务
yum install zabbix-agent-4.0.5-1.el7.x86_64.rpm -y
接下来修改设置
vim /etc/zabbix/zabbix_agentd.conf ##修改如下
98 Server=172.25.1.1
139 ServerActive=172.25.1.1
150 Hostname=zabbix2
启动zabbix-agent服务
systemctl start zabbix-agent
此时,发现我的zabbix-server不能启动,查看日志发现是数据库密码错误,修改后成功启动
三、添加监控主机
1.手动模式
在zabbix-server端的web端进行添加
1.点加添加主机
2.接下来进行设置主机和模板,如下图所示
主机设置
3.模板设置,注必须要先点击链接指示器下方的添加,将该模板添加到“链接的模板”,然后点加蓝色的添加
然后等待一会,ZBX变成绿色即成功
2.自动发现
首先删除刚才手动添加的主机,这里最好是先开启动作,然后开启自动发现,这样可以在自动发现开启的时候,就执行了动作
1.点击配置里面的动作,此处不需要修改任何设置,这里只是点开查看设置
然后让这个动作运行起来,点击红色的停用的,就可以运行起来
如下图
2.然后点击配置里面的自动发现,修改下列设置,将发现的范围修改为自己的ip范围,也可以u修改自动发现的间隔时间
点击“停用的”开启自动发现
3.上述步骤添加完毕之后,等待就可以自动添加了,如果等待很长时间还没有自动添加上,可以查看日志是否有报错,如果没有报错,建议重启zabbix服务尝试,如下图,发现成功
3.自动注册
首先停用之前的自动发现并删除主机zabbix2,然后点击配置里面的动作,时间源要选自动注册
1.点击创建动作,然后创建动作,动作修改为下图
操作修改为下图
2.重启zabbix服务,等待一会,会发现已经自动注册了
四、使用api对zabbix进行操作
1.什么是api?
API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。
2.linux api
在linux中,用户编程接口API遵循了UNIX中最流行的应用编程界面标准---POSIX标准。POSIX标准是由IEEE和ISO/IEC共同开发的标准系统。该标准基于当时现有的UNIX实践和经验,描述了操作系统的系统调用编程接口API,用于保证应用程序可以在源程序一级上在多种操作系统上移植运行。这些系统调用编程接口主要是通过C库(LIBC)来实现的。
3.api与gui
API 接口属于一种操作系统或程序接口,GUI接口属于一种图形操作系统。两者都属于直接用户接口。有时公司会将 API 作为其公共开放系统。也就是说,公司制定自己的系统接口标准,当需要执行系统整合、自定义和程序应用等操作时,公司所有成员都可以通过该接口标准调用源代码,该接口标准被称之为开放式API。
4.应用实例
在zabbix1新建文件zabbix_api
1.获取api的token
只有获取了令牌,才可以使用json进行数据交换。
什么是json呢?
JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。
获取令牌的指令如下
curl -XPOST -H "Content-Type: application/json-rpc" -d '
{
"jsonrpc": "2.0",
"method": "user.login",
"params": {
"user": "Admin",
"password": "zabbix"
},
"id": 1,
"auth": null
}' http://172.25.1.1/zabbix/api_jsonrpc.php | python -m json.tool
接下里就可以使用令牌 06d1e48492bed8b58198ddf4e31e1938
2.查询各主机的信息
curl -XPOST -H "Content-Type: application/json-rpc" -d '
{
"jsonrpc": "2.0",
"method": "host.get",
"params": {
"output": [
"hostid",
"host"
],
"selectInterfaces": [
"interfaceid",
"ip"
]
},
"id": 2,
"auth": "06d1e48492bed8b58198ddf4e31e1938"
}' http://172.25.1.1/zabbix/api_jsonrpc.php | python -m json.tool
执行后的果为下图,查到了群组中主机的信息
3.删除主机
curl -XPOST -H "Content-Type: application/json-rpc" -d '
{
"jsonrpc": "2.0",
"method": "host.delete",
"params": [
"10265"
],
"id": 2,
"auth": "06d1e48492bed8b58198ddf4e31e1938"
}' http://172.25.1.1/zabbix/api_jsonrpc.php | python -m json.tool
反馈如下
在web端查看
还有很多的api接口,大家可以访问官网自行查看
ok~