文章目录
Zabbix是什么
概述
Zabbix 由 Alexei Vladishev 创建,目前由其成立的公司—— Zabbix SIA 积极的持续开发更新维护, 并为用户提供技术支持服务。
Zabbix 是一个企业级分布式开源监控解决方案。
Zabbix 软件能够监控众多网络参数和服务器的健康度、完整性。Zabbix 使用灵活的告警机制,允许用户为几乎任何事件配置基于邮件的告警。这样用户可以快速响应服务器问题。Zabbix 基于存储的数据提供出色的报表和数据可视化功能。这些功能使得 Zabbix 成为容量规划的理想选择。
Zabbix 支持主动轮询(polling)和被动捕获(trapping)。Zabbix所有的报表、统计数据和配置参数都可以通过基于 Web 的前端页面进行访问。基于 Web 的前端页面确保您可以在任何地方访问您监控的网络状态和服务器健康状况。适当的配置后,Zabbix 可以在监控 IT 基础设施方面发挥重要作用。无论是对于有少量服务器的小型组织,还是拥有大量服务器的大企业而言,同样适用。
Zabbix 是免费的。Zabbix 是根据 GPL 通用公共许可证的第二版编写和发布的。这意味着产品源代码是免费发布的,可供公共使用。
Zabbix公司还为全球用户提供专业的技术支持服务 。
了解更多 Zabbix 功能。
ZABBIX 的用户
Zabbix的使用者包括不同行业,不同规模的企业,遍布全球,他们都选择Zabbix作为最主要的监控平台。
功能
Zabbix 是一个高度成熟完善的网络监控解决方案,一个的软件包中包含了多种功能。
数据采集
可用性和性能检查;
支持 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 代理,可以轻松实现分布式远程监控。
zabbix架构
Zabbix 由几个主要的功能组件组成,其功能介绍如下所示。
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官方中文手册
一、实验环境搭建
1.1 准备工作
-
这里使用红帽7.6母盘创造三个镜像待用,名字分别是server1,server2,server3!
不会创建可以看企业运维1
server1做zabbix主机,server2,3测试!
这里三台主机的ip分别是1.2.3.1/1.2.3.2/1.2.3.3 -
配置虚拟机可以联网
-
需要配置yum源,这里配置的是阿里云镜像站的zabbix4.0,配置文件如下
- vim /etc/yum.repo.d/haojin.repo
[zabbix]
name=Zabbix Official Repository - $basearch
baseurl=https://mirrors.aliyun.com/zabbix/zabbix/4.0/rhel/7/x86_64/
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
[zabbix-non-supported]
name=Zabbix Official Repository non-supported - $basearch
baseurl=https://mirrors.aliyun.com/zabbix/non-supported/rhel/7/$basearch/
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX
gpgcheck=0
1.2 在server1上部署zabbix服务后端
- 第一步配置下数据库mariadb(mysql的分支)
yum install -y mariadb-server
systemctl enable --now mariadb
mysql
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> create user 'zabbix'@'localhost' identified by 'westos';
mysql> grant all privileges on zabbix.* to 'zabbix'@'localhost';
- 第二步安装zabbix
yum install -y zabbix-server-mysql #对应监控mysql数据库的
- 第三步配置zabbix的配置文件
找到模板文件并解压上传过去
zcat /usr/doc/zabbix-server-mysql-4.0.27/create.sql.gz | mysql -uzabbix -pwestos zabbix
vim /etc/zabbix/zabbix_server.conf
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=westos
ps ax 查看进程,zabbix服务端设置完毕
- 安装下agent代理并启动,为1.3部署zabbix-web端做基础
1.3 在server1上部署zabbix-web前端
在1.2中已经部署好linux下的zabbix服务端,监控是需要web端查看的,所以这里开始部署web端
- 安装zabbix-web-mysql
安装这个软件需要php依赖库(php-bcmath-5.4.16-46.el7.x86_64.rpm php-mbstring-5.4.16-46.el7.x86_64.rpm),因为web端是基于php开发的,没有库的可以百度解决
- 修改zabbix.conf文件的时区,并启动httpd服务(zabbix是通过httpd发布web的)
[root@server1 ~]# cat /etc/httpd/conf.d/zabbix.conf
php_value max_input_vars 10000
php_value always_populate_raw_post_data -1
php_value date.timezone Asia/Shanghai ## 只需要修改这里的时区
1.4 web端添加客户
- 登陆1.2.3.1/zabbix 设置web前端
浏览器输入1.2.3.1/zabbix,下一步,下一步即可。
2. 图形文字乱码解决
百度下载一个simkai.ttf中文模板
vim /usr/share/zabbix/include/defines.inc.php ## 把graphfont替换成simkai
将simkai.ttf模板放到/usr/share/zabbix/assets/fonts/
目录下即可。
- 启动server2,并在web上手动添加server2
配置server2 ip:1.2.3.2 yum源拷贝server1的即可
安装zabbix-agent
配置zabbix配置文件,将里面的主动和被动模式都打开,指向server1的地址1.2.3.1
vim /etc/zabbix/zabbix_agentd.conf
启动agent
然后到web端>创建主机>添加主机群>添加模板
更新就会出现server2
二、批量添加客户端
再启动一个server3,配置同server2。
2.1 zabbix服务自动发现添加
部署顺序是先动作再自动发现
2.2 注册添加
2.3 (重点)API接口添加模式(适合开发人员)
实验参考:zabbix官方对API的描述
2.3.1 生成令牌
2.3.2 添加server,如server3
关于其中的组id 模板id的再不使用检索时的确定方法:
[root@server1 ~]# cat zabbixcreate.api
curl -s -XPOST http://1.2.3.1/zabbix/api_jsonrpc.php -H "Content-Type: application/json-rpc" -d '
{
"jsonrpc": "2.0",
"method": "host.create",
"params": {
"host": "server3",
"interfaces": [
{
"type": 1,
"main": 1,
"useip": 1,
"ip": "1.2.3.3",
"dns": "",
"port": "10050"
}
],
"groups": [
{
"groupid": "2"
}
],
"templates": [
{
"templateid": "10001"
}
]
},
"auth": "b7d7fe2f46e6e7325cfcb601e4de4452",
"id": 1
}' | python -m json.tool
2.3.3 删除server,如server3
[root@server1 ~]# cat zabbixcreate.api
curl -s -XPOST http://1.2.3.1/zabbix/api_jsonrpc.php -H "Content-Type: application/json-rpc" -d '
{
"jsonrpc": "2.0",
"method": "host.create",
"params": {
"host": "server3",
"interfaces": [
{
"type": 1,
"main": 1,
"useip": 1,
"ip": "1.2.3.3",
"dns": "",
"port": "10050"
}
],
"groups": [
{
"groupid": "2"
}
],
"templates": [
{
"templateid": "10001"
}
]
},
"auth": "b7d7fe2f46e6e7325cfcb601e4de4452",
"id": 1
}' | python -m json.tool
[root@server1 ~]# cat zabbixdel.api
curl -s -XPOST http://1.2.3.1/zabbix/api_jsonrpc.php -H "Content-Type: application/json-rpc" -d '
{
"jsonrpc": "2.0",
"method": "host.delete",
"params": [
"10274"
],
"id": 2,
"auth":"b7d7fe2f46e6e7325cfcb601e4de4452"
}' | python -m json.tool
2.3.4 检索
[root@server1 ~]# cat zabbixget.api
curl -s -XPOST http://1.2.3.1/zabbix/api_jsonrpc.php -H "Content-Type: application/json-rpc" -d '
{
"jsonrpc": "2.0",
"method": "host.get",
"params": {
"output": [
"hostid",
"host"
],
"selectInterfaces": [
"interfaceid",
"ip"
]
},
"id": 2,
"auth":"b7d7fe2f46e6e7325cfcb601e4de4452"
}' | python -m json.tool
2.4 zabbix监控服务
2.4.1 监控httpd
-
在zerver2上部署httpd服务并启动
-
使用模板监控(比较简单,难以满足实际要求)
2.4.2 监控nginx
- 部署nginx服务
在server3上部署nginx
1)传一个nginx包到server3上,没有的可以网上down
2)解包,安装编译器及依赖库
3) 当前目录下 vim auto/cc/gcc
4)编译nginx
./configure --help
./configure --prefix=/usr/localinx --with-http_stub_status_module --with-http_ssl_module
make && make install
cd /usr/local/nginx/
ln -s /usr/local/nginx/sbin/nginx /usr/local/bin/
vim /usr/local/nginx/conf/nginx.conf
location /status {
stub_status on;
access_log off;
allow 127.0.0.1;
deny all;
}
nginx -s reload
到这里,nginx部署完毕
5)测试
ab -c10 -n 1000 http://1.2.3.3/index.html
- 创建模板
cd /etc/zabbix//zabbix_agentd.d/
grep -v ^# /etc/zabbix/zabbix_agentd.conf | uniq
cp userparameter_mysql.conf userparameter_nginx.conf
vim userparameter_nginx.conf
UserParameter=nginx.active,curl -s http://127.0.0.1/status|grep Active|awk '{print $3}'
systemctl restart zabbix-agent.service
yum install -y zabbix-get.x86_64
vim userparameter_nginx.conf
在server1上安装zabbix-get.x86_64
在web上的设置
- 创建图形监控