文章目录
1. zabbix介绍
zabbix官网:https://www.zabbix.com
1.1 zabbix简介
- Zabbix 由 Alexei Vladishev 创建,目前由其成立的公司—— Zabbix SIA 积极的持续开发更新维护, 并为用户提供技术支持服务。
- Zabbix 是一个企业级分布式开源监控解决方案。
- Zabbix 软件能够监控众多网络参数和服务器的健康度、完整性。Zabbix 使用灵活的告警机制,允许用户为几乎任何事件配置基于邮件的告警。这样用户可以快速响应服务器问题。Zabbix 基于存储的数据提供出色的报表和数据可视化功能。这些功能使得 Zabbix 成为容量规划的理想选择。
- Zabbix 支持主动轮询(polling)和被动捕获(trapping)。Zabbix所有的报表、统计数据和配置参数都可以通过基于 Web 的前端页面进行访问。基于 Web 的前端页面确保您可以在任何地方访问您监控的网络状态和服务器健康状况。适当的配置后,Zabbix 可以在监控 IT 基础设施方面发挥重要作用。无论是对于有少量服务器的小型组织,还是拥有大量服务器的大企业而言,同样适用。
- Zabbix 是免费的。Zabbix 是根据 GPL 通用公共许可证的第二版编写和发布的。这意味着产品源代码是免费发布的,可供公共使用
1.2 zabbix功能
1.3 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 的配置变得更加灵活易用。
1.4 常用术语
2. server端安装与配置
server1:192.168.17.1
2.1 配置软件仓库
vim /etc/yum.repos.d/zabbix.repo
:可以用官网yum源,这里使用阿里云镜像网站,速度快!
[zabbix]
name=Zabbix Official Repository - $basearch
baseurl=http://mirrors.aliyun.com/zabbix/zabbix/4.0/rhel/7/$basearch/
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=http://mirrors.aliyun.com/zabbix/non-supported/rhel/7/$basearch/
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX
gpgcheck=0
2.2 zabbix-server与数据库安装与配置
- 安装MySQL 数据库
yum install -y zabbix-server-mysql
yum install -y mariadb-server
- 开启数据库服务
systemctl start mariadb
systemctl enable mariadb
- 创建数据库:
mysql
mysql
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> create user 'zabbix'@'localhost' identified by '密码';
mysql> grant all privileges on zabbix.* to 'zabbix'@'localhost';
mysql> quit;
- 导入数据
zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p密码 zabbix
- 配置数据库
vim /etc/zabbix/zabbix_server.conf
DBHost=localhost#默认
DBName=zabbix#默认
DBUser=zabbix#默认
DBPassword=westos
- 开启zabbix服务
systemctl enable --now zabbix-server
若是开启失败可以查看zabbix日志文件:/var/log/zabbix/zabbix_server.log
2.3 安装zabbix-agent
yum install -y zabbix-agent
systemctl enable --now zabbix-agent
netstat -antlupe | grep zabbix
:查看端口
2.4 前端配置
- 安装
yum list php
:查看php版本为 5.4.16-46.el7
yum install -y zabbix-web-mysql
yum install -y php-mbstring-5.4.16-46.el7.x86_64.rpm
(阿里云可下载)
yum install -y php-bcmath-5.4.16-46.el7.x86_64.rpm
(阿里云可下载)
- 修改时区
vim /etc/httpd/conf.d/zabbix.conf
php_value date.timezone Asia/Shanghai
- 修改字体
cd /usr/share/zabbix/assets/fonts/
:下载 simkai.ttf 到此目录下
vim /usr/share/zabbix/include/defines.inc.php
执行:%s/graphfont/simkai/g
- 开启Apache
systemctl enable --now httpd
- 访问:http://172.25.17.1/zabbix/
3. agent端配置(被监控主机)
server2:192.168.17.2
server3:192.168.17.3
- 配置软件仓库
vim /etc/yum.repos.d/zabbix.repo
[zabbix]
name=Zabbix Official Repository - $basearch
baseurl=http://mirrors.aliyun.com/zabbix/zabbix/4.0/rhel/7/$basearch/
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=http://mirrors.aliyun.com/zabbix/non-supported/rhel/7/$basearch/
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX
gpgcheck=0
- 安装zabbix-agent(所有agent端必须安装)
yum install -y zabbix-agent
- 配置
vim /etc/zabbix/zabbix_agentd.conf
:编辑主配置文件
Server=192.168.17.1#监控系统server端的IP
ServerActive=192.168.17.1#监控系统server端的IP
Hostname=#agent端 本机的hostname
vim /etc/hosts
:配置解析
192.168.17.1 server1
192.168.17.2 server2
192.168.17.3 server3
- 开启服务
systemctl enable --now zabbix-agent.service
- 日志文件:/var/log/zabbix/zabbix_agentd.log
4. 手动添加被监控主机
- 访问:http://172.25.17.1/zabbix/
- 选择1. “配置”–2. “主机”–3. “创建主机”
- 创建主机
- 给主机添加模板
- 稍等片刻后,添加主机的ZBX图标变绿后,则添加成功且监控成功!
5. 自动化添加被监控主机
5.1 server端自动发现
- 启用“自动发现”动作
- 启用“自动发现”规则
- 检测:成功自动发现server3
5.2 agent端自动注册
- 禁用自动发现,以免干扰本次实验
- 因主机有限,删除server3
- 创建“自动注册”
- 重启server3的agent服务
systemctl restart zabbix-agent.service
- 查看,server3自动注册成功!
6. API
Zabbix API允许你以编程方式检索和修改Zabbix的配置,并提供对历史数据的访问。它广泛用于:
- 创建新的应用程序以使用Zabbix;
- 将Zabbix与第三方软件集成;
- 自动执行常规任务。
Zabbix API是基于Web的API,作为Web前端的一部分提供。它使用JSON-RPC 2.0协议,这意味着两件事:
- 该API包含一组独立的方法;
- 客户端和API之间的请求和响应使用JSON格式进行编码。
结构
- get:检索数据
- create:创建数据
- update:更新数据
- delete:删除数据
6.1 获取身份认证令牌 user.login
认证属性:
- jsonrpc:API使用的JSON-RPC协议的版本; Zabbix API实现的JSON-RPC版本是2.0;
- method:被调用的API方法名;
- params:将被传递给API方法的参数;
- id:请求的任意标识符;
- auth:用户认证令牌; 因为我们还没有一个,它的设置null
API响应对象:
- jsonrpc:JSON-RPC协议的版本;
- result:方法返回的数据(即用户身份验证令牌)
- id:相应请求的标识符
示例
curl -s -XPOST http://192.168.17.1/zabbix/api_jsonrpc.php -H "Content-Type: application/json-rpc" -d
'{
"jsonrpc": "2.0",
"method": "user.login",
"params": {
"user": "Admin",
"password": "zabbix"
},
"id": 1,
"auth": null
}' | python -m json.tool
6.2 检索主机 host.get
vim get_zabbix_api.sh
curl -s -XPOST http://192.168.17.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": 1,
"auth": "身份令牌"
}' | python -m json.tool
6.3 删除主机 host.delete
vim del_zabbix_api.sh
curl -s -XPOST http://192.168.17.1/zabbix/api_jsonrpc.php -H "Content-Type: application/json-rpc" -d '
{
"jsonrpc": "2.0",
"method": "host.delete",
"params": [
"删除的主机id"
],
"id": 1,
"auth": "身份令牌"
}' | python -m json.tool
6.4 创建主机 host.create
vim create_zabbix_api.sh
curl -s -XPOST http://192.168.17.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": "192.168.17.3",
"dns": "",
"port": "10050"
}
],
"groups": [
{
"groupid": "2"#主机群组id
}
],
"templates": [
{
"templateid": "10001"#模板id
}
],
"inventory_mode": 0,
"inventory": {
"macaddress_a": "01234",
"macaddress_b": "56768"
}
},
"auth": "身份令牌",
"id": 1
}' | python -m json.tool
7. 添加httpd模板
server2:192.168.17.2
- agent端配置httpd
yum install -y httpd
systemctl enable --now httpd
echo server2 > /var/www/html/index.html
- 添加模板
8. 创建nginx监控项
- 安装源码nginx
tar zxf nginx-1.18.0.tar.gz
cd nginx-1.18.0
yum install -y gcc pcre-devel openssl-devel
:安装gcc、pcre-devel、openssl-devel
vim auto/cc/gcc`
#CFLAGS="$CFLAGS -g"
#注释此行(127行)可以使安装后的二进制文件更小
./configure --prefix=/usr/local/nginx --with-http_ssl_module
:configure脚本,指定安装路径等参数
make && make install
- 创建软连接
cd /usr/local/nginx/sbin/
:
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 -t
- 添加监控项的key
vim /etc/zabbix/zabbix_agentd.d/userparameter_nginx.conf
UserParameter=nginx.active,curl -s http://127.0.0.1/status | grep Active | awk '{print $3}'
UserParameter=nginx.accept,curl -s http://127.0.0.1/status | awk 'NR==3{print $1}'
UserParameter=nginx.handled,curl -s http://127.0.0.1/status | awk 'NR==3{print $2}'
UserParameter=nginx.request,curl -s http://127.0.0.1/status | awk 'NR==3{print $3}'
systemctl restart zabbix-agent.service
:重启服务
- 在server端测试监控项的key
yum install -y zabbix-get
:server1安装zabbix-get
zabbix_get -s 192.168.17.3 -p 10050 -k "nginx.active"
- 创建监控项
- 在图形中添加监控项
- 查看监控结果