Zabbix 是一个企业级分布式开源监控解决方案。
Zabbix 软件能够监控众多网络参数和服务器的健康度、完整性。Zabbix 使用灵活的告警机制。这样用户可以快速响应服务器问题。Zabbix 基于存储的数据提供出色的报表和数据可视化功能。
Zabbix 支持主动轮询(polling)和被动捕获(trapping)。Zabbix 所有的报表、统计数据和配置参数都可以通过基于 Web 的前端页面进行访问。基于 Web 的前端页面确保可以在任何地方访问监控的网络状态和服务器健康状况。
Zabbix 的组成部分
Server: Zabbix Server 是 Zabbix 软件的核心组件。agent 向其报告可用性、系统完整性信息和统计信息。Server 也是存储所有配置信息、统计信息和操作信息的核心存储库。
数据库: 所有配置信息以及 Zabbix 采集到的数据都将被存储在数据库中。
Web界面: 为从任何地方和平台都可以访问 Zabbix ,推出基于 Web 的界面,该界面是 Zabbix Server 的一部分。 通 常 \color{#FF0000}{通常} 通常会和Zabbix Server 运行在同一台物理机器上, 但 是 并 不 一 定 ~ \color{#FF0000}{但是并不一定~} 但是并不一定~ 。
Proxy: Zabbix Proxy 可以代替 Zabbix Server 采集性能和可用性数据。Zabbix Proxy 在 Zabbix 的部署是可选部分;但是 Proxy 的部署可以很好的分担单个 Zabbix Server 的负载。
Agent: Zabbix Agents 部署在被监控目标上,用于主动监控本地资源和应用程序,并将收集的数据发送给 Zabbix Server。
Zabbix 的功能
数据采集:
灵活的阈值定义:
后端数据库定义非常灵活的告警阈值,即 触 发 器 \color{#FF0000}{触发器} 触发器
高度可配置化的告警:
实时图形:
使用内置图形功能可以将监控项实时绘制成图形
Web 监控功能:
Zabbix 可以追踪模拟鼠标在 Web 网站上的点击操作,来检查 Web 网站的功能和响应时间
丰富的可视化选项:
历史数据存储:
配置简单:
使用模板:
网络发现:
快捷的 Web 界面:
Zabbix API:
Zabbix API 为 Zabbix 提供可编程接口,用于批量操作、第三方软件集成和其他用途
权限管理系统:
功能强大且易于拓展的 Zabbix Agent:
二进制守护进程:
适应更复杂的环境:
使用 Zabbix Proxy 代理,可以轻松实现分布式远程监控
实验环境: zabbix:192.168.0.10
zabbix 下载地址:https://repo.zabbix.com/zabbix/4.4/rhel/7/x86_64/
# 下载安装 Zabbix Server、Web 前端和 Agent
yum install -y mariadb-server # 安装数据库
systemctl start mariadb.service # 启动数据库
mysql_secure_installation # 进行安全初始化
mysql -uroot -p
###
create database zabbix character set utf8 collate utf8_bin; # 创建库
create user zabbix@localhost identified by 'redhat';
grant all privileges on zabbix.* to zabbix@localhost; # 授权
###
zcat /usr/share/doc/zabbix-server-mysql-4.4.1/create.sql.gz | mysql -uzabbix -p zabbix # 导入初始架构和数据
vim /etc/zabbix/zabbix_server.conf
###
DBPassword=redhat
###
vim /etc/httpd/conf.d/zabbix.conf
###
php_value date.timezone Asia/Shanghai
###
systemctl restart zabbix-server zabbix-agent httpd
systemctl enable zabbix-server zabbix-agent httpd
192.168.0.10/zabbix
接 下 来 这 一 步 根 据 个 人 需 求 , 就 我 个 人 而 言 , 看 中 文 比 较 舒 服 \color{red}{接下来这一步根据个人需求,就我个人而言,看中文比较舒服} 接下来这一步根据个人需求,就我个人而言,看中文比较舒服
实验环境:
主机名称 | IP地址 |
---|---|
zabbix | 192.168.0.10 |
zabbix2 | 192.168.0.11 |
安装Zabbix server
yum install zabbix-agent-4.4.1-1.el7.x86_64.rpm -y
创建主机
添加监控模板
zabbix2 主机配置 zabbix agent
vim /etc/zabbix/zabbix_agentd.conf
实验环境:
主机名称 | IP地址 |
---|---|
zabbix | 192.168.0.10 |
zabbix | 192.168.0.11 |
先 删 除 我 们 之 前 手 动 添 加 的 监 控 主 机 \color{red}{先删除我们之前手动添加的监控主机} 先删除我们之前手动添加的监控主机
配置自动发现动作
配置动作
配置自动发现
重启 zabbix server
在 zabbix 主机上重启 zabbix server
自 动 发 现 s e r v e r 端 主 动 扫 描 网 段 中 的 所 有 主 机 , 将 符 合 条 件 的 加 入 到 集 群 中 ; 而 自 动 注 册 则 是 客 户 端 自 己 与 s e r v e r 端 通 信 加 入 集 群 \color{red}{自动发现 server 端主动扫描网段中的所有主机,将符合条件的加入到集群中;而自动注册则是客户端自己与 server 端通信加入集群} 自动发现server端主动扫描网段中的所有主机,将符合条件的加入到集群中;而自动注册则是客户端自己与server端通信加入集群
实验环境:
主机名称 | IP地址 |
---|---|
zabbix | 192.168.0.10 |
zabbbix | 192.168.0.12 |
在 做 实 验 之 前 , 需 要 排 除 其 他 的 影 响 。 因 此 我 们 先 关 闭 自 动 发 现 \color{red}{在做实验之前,需要排除其他的影响。因此我们先关闭自动发现} 在做实验之前,需要排除其他的影响。因此我们先关闭自动发现
安装 Zabbix server
yum install zabbix-agent-4.4.1-1.el7.x86_64.rpm -y
vim /etc/zabbix/zabbix_agentd.conf
systemctl start zabbix-agent.service
创建自动注册的动作
配置自动注册的操作
zabbix 主机重启服务端,zabbix3 主机重启客户端
Zabbix API 允许我们通过编程的方式检索和修改 Zabbix 的配置,并提供对历史数据的访问。它广泛应用于:
Zabbix API 是基于 Web 的 API,作为 Web 前端的一部分提供。
大多数 API 至少包含四种方法分别是( 检 索 、 创 建 、 更 新 、 删 除 数 据 \color{#FF0000}{检索、创建、更新、删除数据} 检索、创建、更新、删除数据):
当我们在完成前端的安装配置之后,就可以通过远程 HTTP 请求来调用 API
在 访 问 Z a b b i x 中 的 任 何 数 据 之 前 , 需 要 登 陆 并 获 取 身 份 验 证 令 牌 。 我 们 可 以 通 过 u s e r . l o g i n 方 法 完 成 \color{#FF0000}{在访问 Zabbix 中的任何数据之前,需要登陆并获取身份验证令牌。我们可以通过 user.login 方法完成} 在访问Zabbix中的任何数据之前,需要登陆并获取身份验证令牌。我们可以通过user.login方法完成
在 zabbix 主机中:
vim zabbix-api
###
curl -s -XPOST -H "Content-Type: application/json-rpc" -d'
{
"jsonrpc": "2.0",
"method": "user.login",
"params": {
"user": "Admin",
"password": "zabbix"
},
"id": 1,
"auth": null
}' http://192.168.010/zabbix/api_jsonrpc.php
###
chmod +x zabbix-api
./zabbix-api
当 前 有 一 个 有 效 的 用 户 身 份 验 证 令 牌 , 可 以 用 来 访 问 Z a b b i x 中 的 数 据 \color{red}{当前有一个有效的用户身份验证令牌,可以用来访问 Zabbix 中的数据} 当前有一个有效的用户身份验证令牌,可以用来访问Zabbix中的数据
vim zabbix-api
./zabbix-api # 检索主机
vim zabbix-api
###
curl -s -XPOST -H "Content-Type: application/json-rpc" -d'
{
"jsonrpc": "2.0",
"method": "host.delete",
"params": [
"10308"
],
"id": 2,
"auth": "95f97d358e75ada647466abbbe015dbd"
}' http://192.168.0.10/zabbix/api_jsonrpc.php | python -m json.tool
###
vim zabbix-api
###
curl -s -XPOST -H "Content-Type: application/json-rpc" -d'
{
"jsonrpc": "2.0",
"method": "host.create",
"params": {
"host": "zabbix3", # 被创建的主机名
"interfaces": [
{
"type": 1,
"main": 1,
"useip": 1,
"ip": "192.168.0.12", # 主机明 IP
"dns": "",
"port": "10050"
}
],
"groups": [
{
"groupid": "2" # 主机群组 id
}
],
"templates": [
{
"templateid": "10001" # 模板 id
}
]
},
"id": 2,
"auth": "95f97d358e75ada647466abbbe015dbd" # 身份验证牌
}' http://192.168.0.10/zabbix/api_jsonrpc.php | python -m json.tool
###
创 建 前 \color{red}{创建前} 创建前
创 建 后 \color{red}{创建后} 创建后
实验环境:
yum install -y gcc zlib-devel pcre-devel
tar zxf nginx-1.18.0.tar.gz # 解压 nginx 包
vim nginx-1.18.0/auto/cc/gcc # 关闭 debug
./configure --prefix=/usr/local/nginx --with-http_stub_status_module # 编译
make && make install # 安装
vim /usr/local/nginx/conf/nginx.conf
###
location /status {
stub_status on;
access_log off;
allow 127.0.0.1;
deny all;
}
###
/usr/local/nginx/sbin/nginx -t # 语法检测
/usr/local/nginx/sbin/nginx # 启动
curl http://127.0.0.1/status # 访问本地状态
vim /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf
###
UserParameter=nginx.active,curl -s http://127.0.0.1/status | grep Active |awk '{print $3}'
###
systemctl restart zabbix-agent.service
yum install zabbix-get-4.4.1-1.el7.x86_64.rpm -y # 安装测试工具
zabbix_get -s 192.168.0.12 -p 10050 -k "nginx.active" # 获取活跃连接数
vim /usr/share/zabbix/include/defines.inc.php # 更改字体
vim /etc/zabbix/zabbix_agentd.d/userparameter_nginx.conf
zabbix_get -s 192.168.0.12 -p 10050 -k "nginx.accept"