zabbix(上)

实验环境:rhel7.6 selinux and iptables disabled
zabbix版本4.0
实验主机: server5 172.25.2.5: server mysql php agent 都集成到一台主机
server6 172.25.2.6 agent
server7 172.25.2.7 agent nginx服务

本篇主要介绍了zabbix监控的基本配置(server端,agent端,web端,数据库);监控对像的添加,利用脚本对zabbix-server的控制;以及对http服务的监控

一.介绍

zabbix手册
Zabbix 是一个高度成熟完善的网络监控解决方案,一个的软件包中包含了多种功能.数据采集、高度可配置化的告警、Web 监控功能、丰富的可视化选项、历史数据存储等等
架构
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 的配置变得更加灵活易用

当然还有其他一些监控软件都可以去学习下,如mrtg,cacti,rrdtool,nagios…各有优势.

二.zabbix后端配置

server和mysql
agent

#server5
rpm -ivh http://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm  #官方zabbix源获取,下载可能有点慢;也可将源修改为阿里云的zabbix
yum install zabbix-server-mysql -y  #安装 Zabbix server(适用于 RHEL7,在 RHEL 6 上弃用)并使用 MySQL 数据库

#mysql
yum install mariadb-server.x86_64 -y  #安装mysql;对于 Zabbix server 和 proxy 守护进程而言,数据库是必须的.而运行 Zabbix agent 是不需要的
systemctl enable --now mariadb
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost identified by 'westos';  #创建数据库
cd /usr/share/doc/zabbix-server-mysql-4.0.27
zcat create.sql.gz | mysql -uzabbix -pwestos zabbix  #导入数据
cd /etc/zabbix
vim zabbix_server.conf  #为 ZABBIX SERVER配置数据库
91 # DBHost=localhost  #可以指定开启访问端口
124 DBPassword=westos
systemctl enable --now zabbix-server.service

yum install -y zabbix-agent  #在本机也开启状态采集
systemctl enable --now zabbix-agent.service
netstat -antlp
 tcp        0      0 0.0.0.0:10050           0.0.0.0:*               LISTEN      4707/zabbix_agentd  
tcp        0      0 0.0.0.0:10051           0.0.0.0:*               LISTEN      4560/zabbix_server 

三.zabbix前端配置

php

#server5
rpm -qa php  #查询本机是否已经安装,防止冲突
yum install zabbix-web-mysql.noarch -y  #php-mbstring php-bcmath需要解决两个依赖性
yum list php  #再看一下本机有关php的依赖性的版本,在网上下载对应版本的包;或者将本机所有有关php的包全部更新
php.x86_64                                         5.4.16-46.el7                                          @rhel7.6
get php-bcmath-5.4.16-46.el7.x86_64.rpm php-mbstring-5.4.16-46.el7.x86_64.rpm
yum install zabbix-web-mysql php-bcmath-5.4.16-46.el7.x86_64.rpm php-mbstring-5.4.16-46.el7.x86_64.rpm -y
vim /etc/httpd/conf.d/zabbix.conf
 20         php_value date.timezone Asia/Shanghai  #设置时区
systemctl enable --now httpd

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

cd /usr/share/zabbix/assets/fonts/
get simkai.ttf  #网上都可以下载字体
cd /usr/share/zabbix/include
vim defines.inc.php
 72 define('ZBX_GRAPH_FONT_NAME',           'simkai'); // font file name
  113 define('ZBX_FONT_NAME', 'simkai');

在这里插入图片描述

四.安装 AGENT

(一)手动添加监控对象

server5
scp /etc/yum.repos.d/zabbix.repo server6:/etc/yum.repos.d/

server6
yum install zabbix-agent -y  #采集
vim /etc/zabbix/zabbix_agentd.conf
 98 Server=172.25.2.5  #IP地址为zabbix server端,客户端有主动和被动两种采集模式
 139 ServerActive=172.25.2.5
 150 Hostname=server6
vim /etc/hosts  #注意做好本地解析
systemctl enable --now zabbix-agent.service
netstat -antlp
tcp        0      0 0.0.0.0:10050           0.0.0.0:*               LISTEN      4027/zabbix_agentd 

效果
在这里插入图片描述

(二)自动添加

1.自动发现

server7
yum install zabbix-agent.x86_64 -y
vim /etc/zabbix/zabbix_agentd.conf
 98 Server=172.25.2.5
 139 ServerActive=172.25.2.5
 150 Hostname=server7
systemctl enable --now zabbix-agent.service

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
2.自动添加
关闭自动发现
在这里插入图片描述在这里插入图片描述

五.API

(一)概览

Zabbix API允许你以编程方式检索和修改Zabbix的配置,并提供对历史数据的访问。适合开发人员,它广泛用于:
(1)创建新的应用程序以使用Zabbix;
(2)将Zabbix与第三方软件集成;
(3)自动执行常规任务。
Zabbix API是基于Web的API,作为Web前端的一部分提供。它使用JSON-RPC 2.0协议,这意味着两件事:
(1)该API包含一组独立的方法;
(2)客户端和API之间的请求和响应使用JSON格式进行编码。

(二)结构

Zabbix API由许多名义上分组的独立API方法组成。每个方法执行一个特定任务。
大多数API至少包含四种方法: get, create, update 和 delete ,分别是检索,创建,更新和删除数据,但是某些API提供一套完全不同的一组方法。

(三)执行请求

当完成了前端的安装配置后,你就可以使用远程HTTP请求来调用API。为此,需要向 api_jsonrpc.php 位于前端目录中的文件发送HTTP POST请求。例如,如果你的Zabbix前端安装在 http://172.25.2.5/zabbix, 那么用HTTP请求来调用 apiinfo.version 方法就如下面这样:

curl -s -XPOST http://172.25.2.5/zabbix/api_jsonrpc.php -H "Content-Type: application/json-rpc" -d

1.验证,获取令牌

server5
curl -s -XPOST http://172.25.2.5/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

在这里插入图片描述

2.检索主机

vim zabbix.api
curl -s -XPOST http://172.25.2.5/zabbix/api_jsonrpc.php -H "Content-Type: application/json-rpc" -d '
{
    "jsonrpc": "2.0",
    "method": "host.get",
    "params": {
        "output": [
            "hostid",
            "host"
        ],
        "selectInterfaces": [
            "interfaceid",
            "ip"
        ]
    },
    "auth": "44a4280a225bd371d8ca8ae2db3357c6",
    "id": 1
}' | python -m json.tool
sh zabbix.api

在这里插入图片描述
3.删除主机

curl -s -XPOST http://172.25.2.5/zabbix/api_jsonrpc.php -H "Content-Type: application/json-rpc" -d '
{
    "jsonrpc": "2.0",
    "method": "host.delete",
    "params": [
        "10272"  #主机ID
    ],
    "auth": "e58eb1bc64d51c3c89bee74c58ad02a8",
    "id": 1
}' | python -m json.tool

在这里插入图片描述
4.添加

curl -s -XPOST http://172.25.2.5/zabbix/api_jsonrpc.php -H "Content-Type: application/json-rpc" -d '
{
    "jsonrpc": "2.0",
    "method": "host.create",
    "params": {
        "host": "server7",  #
        "interfaces": [
            {
                "type": 1,
                "main": 1,
                "useip": 1,
                "ip": "172.25.2.7",  #
                "dns": "",
                "port": "10050"
            }
        ],
        "groups": [
            {
                "groupid": "2"  #可以通过网页访问快速获取
            }
        ],
        "templates": [
            {
                "templateid": "10001"  #
            }
        ]
    },
    "auth": "e58eb1bc64d51c3c89bee74c58ad02a8", 
    "id": 1
}' | python -m json.tool

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

六.zabbix对nginx服务的监控

(一)单个

#server7 nginx服务的简单配置
get nginx-1.18.0.tar.gz
tar zxf nginx-1.18.0.tar.gz
cd nginx-1.18.0/
yum install gcc pcre-devel openssl-devel -y
vim auto/cc/gcc
# debug
#CFLAGS="$CFLAGS -g"  #注释掉这行,去掉 debug 模式编译,编译以后程序只有几百 k
./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module --with-threads --with-file-aio  #重新安装
make
make install
ln -s /usr/local/nginx/sbin/nginx /usr/local/bin/
vim nginx.conf
http{
...
server{
...
        location /status {
                stub_status on;
                access_log off;
                allow 127.0.0.1;
                deny all;
        }
   }
}
nginx
curl 127.0.0.1/status  #只能让本机访问/status

在这里插入图片描述

[root@server7 zabbix]# cd zabbix_agentd.d/
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 
[root@server7 zabbix_agentd.d]# curl -s http://127.0.0.1/status
Active connections: 1 
server accepts handled requests
 7 7 7 
Reading: 0 Writing: 1 Waiting: 0 

[root@server5 ~]# yum install zabbix-get.x86_64 -y
zabbix_get -s 172.25.2.7 -p 10050 -k "nginx.active"  #表示zabbix-server 已经通过server7-agent获取到server7的nginx信息
1  #并发数  

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(二)创建多个监控项

[root@server7 zabbix_agentd.d]# vim userparameter_nginx.conf 
[root@server7 zabbix_agentd.d]# pwd
/etc/zabbix/zabbix_agentd.d
UserParameter=nginx.active,curl -s http://127.0.0.1/status | grep Active | awk '{print $3}'
UserParameter=nginx.accepts,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.requests,curl -s http://127.0.0.1/status | awk 'NR==3{print $3}'
systemctl restart zabbix-agent.service

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值