构建zabbix监控实验-基础篇

Zabbix 配置

实验环境:

Zabbix server:192.168.1.10

Zabbix agent:192.168.1.11

Zabbix agent:192.168.1.12

安装 Zabbix ServerWeb 前端和 Agent

zabbix 下载地址:https://repo.zabbix.com/zabbix/4.4/rhel/7/x86_64/, 下载4.4.6版本到window本机,这个版本里面rpm包比较全,通过sftp上传到服务器192.168.1.10。

clip_image001

进入dos命令窗口,然后进入到d:\linux\zabbix目录

D:\Linux\zabbix>sftp root@192.168.1.10

如果出现报错:ECDSA host key for 192.168.1.10 has changed and you have requested strict checking.Host key verification failed

使用如下命令生成key存储本地解决

D:\Linux\zabbix>ssh-keygen -R 192.168.1.10

Sftp登录后,使用put * 将目录中的文件全部上传到server的zabbix目录

sftp> cd /zabbix

sftp> ls

sftp> put *

clip_image002

到server 192.168.1.10查看

[root@node1 zabbix]# ls

clip_image003

安装所有的rpm 包

[root@node1 zabbix]# yum -y install *.rpm

clip_image004

使用yum安装,会将所需要的依赖包一起下载安装上。

安装创建初始数据库(mariadb)

[root@node1 zabbix]# yum -y install mariadb mariadb-server

启动数据库

[root@node1 zabbix]# systemctl start mariadb.service

初始化数据库

[root@node1 zabbix]# mysql_secure_installation

这里可以mariadb的root 密码设置为zabbix。其余根据提示进行选择输入

登录数据库

[root@localhost zabbix]# mysql -u root –pzabbix

MariaDB [(none)]> create database zabbix default character set utf8 collate utf8_bin;

MariaDB [(none)]> create user zabbix@localhost identified by 'zabbix';

MariaDB [(none)]> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'zabbix' WITH GRANT OPTION;

MariaDB [(none)]> GRANT ALL PRIVILEGES ON *.* TO 'zabbix'@'%' IDENTIFIED BY 'zabbix' WITH GRANT OPTION;

MariaDB [(none)]> FLUSH PRIVILEGES;

clip_image005

执行以上命令后数据库将允许root 和zabbix 用户远程使用navicat等工具登录访问。退出数据库,然后导入初始架构和数据,根据安装版本来确定zabbix-server-mysql-4.4.6 folder的名称

[root@node1 zabbix]# zcat /usr/share/doc/zabbix-server-mysql-4.4.6/create.sql.gz | mysql -uzabbix -p zabbix

Enter password:

clip_image006

使用navicat访问mariadb:

clip_image007

为 Zabbix Server 配置数据库

[root@node1 zabbix]# vi /etc/zabbix/zabbix_server.conf

DBHost=localhost

DBName=zabbix

DBUser=zabbix

DBPassword=zabbix

clip_image008

为 Zabbix 前端配置 PHP

[root@node1 zabbix]# vi /etc/httpd/conf.d/zabbix.conf

clip_image009

更改时区为Asia/Shanghai

启动 Zabbix Server 和 Agent 进程

[root@node1 zabbix]# systemctl start zabbix-server zabbix-agent httpd

[root@node1 zabbix]# netstat -antp

clip_image010

系统监听10050,10051端口则表示启动成功

将zabbix 设置为开机自启

[root@node1 zabbix]# systemctl enable zabbix-server zabbix-agent httpd

clip_image011
浏览器访问zabbix

http://192.168.1.10/zabbix/setup.php

clip_image012

点击next step, 检查都OK

clip_image013

点击next step,输入密码zabbix,database port 为3306, 如果这里使用默认0,可以通过修改配置文件的方式更改此端口,配置文件:/etc/zabbix/web/zabbix.conf.php

clip_image014

点击next step,在name选框输入服务器名:zabbix_server, 可自定义

clip_image015

点击下一步

clip_image016

clip_image017

点击finish,然后跳转登录页面,然后登录zabbix,这里使用的username 是Admin,而不是zabbix,页面配置的zabbix是连接数据库用的。

clip_image018

Login后看到的页面

clip_image019

可以根据需求就页面设置为中文

clip_image020

clip_image021

Zabbix 监控功能的实现

手动添加主机到监控集群

这里将会使用到2台agent机器,

Agent1 :192.168.1.10, 同server共享 (node1)

Agent2:192.168.1.11 (node2)

在192.168.1.11根下创建zabbix目录

[root@node2 ~]# cd /

[root@node2 /]# mkdir -p zabbix

Node1将zabbix-agent-4.4.6-1.el7.x86_64.rpm 包发送到node2

[root@node1 zabbix]# scp zabbix-agent-4.4.6-1.el7.x86_64.rpm root@192.168.1.11:/zabbix

Node2安装agent

[root@node2 zabbix]# yum -y install zabbix-agent-4.4.6-1.el7.x86_64.rpm

回到zabbix web端

配置à 主机 à 创建主机

clip_image022

然后可以添加主机

clip_image023

添加agent2监控

clip_image024

回到主机群

clip_image025

回到2个节点12,配置 zabbix agent

Node1: server and agent

[root@node2 zabbix]# vi /etc/zabbix/zabbix_agentd.conf

Server=192.168.1.10

ServerActive=192.168.1.10

Hostname=192.168.1.11 #用可解析的主机名或者IP

Node2: agent

[root@node2 zabbix]# vi /etc/zabbix/zabbix_agentd.conf

Server=192.168.1.10

ServerActive=192.168.1.10

Hostname=192.168.1.11 #用node2的可解析主机名或者IP

启动agent,监听10050端口即成功

[root@node2 zabbix]# systemctl start zabbix-agent.service

[root@node2 zabbix]# systemctl enable zabbix-agent

clip_image026

回到zabbix web端,监控à图形 àLinux server àzabbix-2 à CPU Jumps

clip_image027

添加自动发现

自动发现是为监控集群而配置,被监控的机器需要安装zabbix-agent,适合于大规模的监控。

先创建动作:

配置à 动作 à事件源:自动发现 à 创建动作

clip_image028

在新的触发条件中选择需要的条件,这里选择 IP 范围,在线/不在线和服务端口即可,然后点击添加。下一步是配置操作,默认标题和消息内容都可以保持不变,这里主要配置的是类似与手动添加主机的操作:

添加主机

添加到主机群组

链接到模板:添加http 和 os相关的即可

启动主机

clip_image029

然后创建自动发现规则:

配置 à自动发现 à创建发现规则

clip_image030

配置页面:

名称:web-test

IP范围:192.168.1.11-20

更新间隔: 2s #

检查: ICMP ping # 这里配置能ping 通主机即可

其余都选择IP为标志

clip_image031

启用后,新的主机将会被自动添加

clip_image032

clip_image033

Zabbix API

Zabbix API 是基于 Web 的 API,作为 Web 前端的一部分提供。

  • API 包含一组独立的方法
  • 客户端和 API 之间的请求和响应通过使用 JSON 格式进行编码

大多数 API 至少包含四种方法分别是( 检 索 、 创 建 、 更 新 、 删 除 数 据 \color{#FF0000}{检索、创建、更新、删除数据} 检索、创建、更新、删除数据):

  • get
  • create
  • update
  • delete

当我们在完成前端的安装配置之后,就可以通过远程 HTTP 请求来调用 API

验证 API 请求

在 访 问 Z a b b i x 中 的 任 何 数 据 之 前 , 需 要 登 陆 并 获 取 身 份 验 证 令 牌 。 我 们 可 以 通 过 u s e r . l o g i n 方 法 完 成 \color{#FF0000}{在访问 Zabbix 中的任何数据之前,需要登陆并获取身份验证令牌。我们可以通过 user.login 方法完成} 在访问Zabbix中的任何数据之前,需要登陆并获取身份验证令牌。我们可以通过user.login方法完成

1. 在 zabbix 主机中创建脚本:

[root@node3 zabbix]# vi 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.1.10/zabbix/api_jsonrpc.php | python -m json.tool

2. 执行脚本

[root@node3 zabbix]# chmod +x zabbix-api

[root@node3 zabbix]# ./zabbix-api

{

"id": 1,

"jsonrpc": "2.0",

"result": "081ae25e17ad2fe21332fa4793fbacd3" #获取到的token

}

每执行一次获取一次认证令牌,获取后后续的操作可以沿用

API检索主机

查看监控的server情况

需要再写脚本zabbix-get

[root@node3 zabbix]# vi zabbix-get

curl -s -XPOST -H "Content-Type: application/json-rpc" -d'

{

"jsonrpc": "2.0",

"method": "host.get",

"params": {

"output": [

"hostid",

"host"

],

"selectInterfaces": [

"interfaceid",

"ip"

]

},

"id": 1,

"auth": "081ae25e17ad2fe21332fa4793fbacd3" #上一个脚本执行得到的token

}' http://192.168.1.10/zabbix/api_jsonrpc.php | python -m json.tool

执行脚本

[root@node3 zabbix]# chmod +x zabbix-get

[root@node3 zabbix]# ./zabbix-get

clip_image036

API删除主机

[root@node3 zabbix]# vi zabbix-delete-host

curl -s -XPOST -H "Content-Type: application/json-rpc" -d'

{

"jsonrpc": "2.0",

"method": "host.delete",

"params": [

"10305"

],

"id": 2,

"auth": "421ea739392c207f54d792c1ea08d44a"

}' http://192.168.1.10/zabbix/api_jsonrpc.php | python -m json.tool

[root@node3 zabbix]# ./zabbix-delete-host

{

"id": 2,

"jsonrpc": "2.0",

"result": {

"hostids": [

"10323"

]

}}

打开刷新页面,可以看到一个host 被删除

clip_image037

API创建主机到监控项

[root@node3 zabbix]# vi zabbix-create

curl -s -XPOST -H "Content-Type: application/json-rpc" -d'

{

"jsonrpc": "2.0",

"method": "host.create",

"params": {

"host": "server7",

"interfaces": [

{

"type": 1,

"main": 1,

"useip": 1,

"ip": "192.168.1.17",

"dns": "",

"port": "10050"

}

],

"groups": [

{

"groupid": "2"

}

],

"templates": [

{

"templateid": "10001"

}

]

},

"id": 2,

"auth": "081ae25e17ad2fe21332fa4793fbacd3"

}' http://192.168.1.10/zabbix/api_jsonrpc.php | python -m json.tool

[root@node3 zabbix]# chmod +x zabbix-create

[root@node3 zabbix]# ./zabbix-create

{

"id": 2,

"jsonrpc": "2.0",

"result": {

"hostids": [

"10325"

]

}

}

打开页面查看结果

clip_image038

zabbix监控nginx活跃数

安装nginx

在192.168.1.12 (node3)主机中安装配置nginx。

使用sftp上传安装包

clip_image039

安装依赖包

[root@node3 zabbix]# yum install -y gcc zlib-devel pcre-devel

解压nginx包并关闭debug

[root@node3 zabbix]# tar -zxf nginx-1.19.5.tar.gz

[root@node3 zabbix]# vi nginx-1.19.5/auto/cc/gcc

# debug

#FLAGS="$CFLAGS -g"

安装nginx

[root@node3 zabbix]# cd nginx-1.19.5/

[root@node3 nginx-1.19.5]# ./configure --prefix=/usr/local/nginx --with-http_stub_status_module

[root@node3 nginx-1.19.5]# make && make install

编辑配置文件,在监听80端口的server下增加下面的内容

[root@node3 nginx-1.19.5]# vi /usr/local/nginx/conf/nginx.conf

location /status {

stub_status on;

access_log off;

allow 127.0.0.1;

deny all;

}

clip_image040

检查语法并启动nginx

[root@node3 nginx-1.19.5]# /usr/local/nginx/sbin/nginx -t

[root@node3 nginx-1.19.5]# /usr/local/nginx/sbin/nginx

[root@node3 nginx-1.19.5]# curl http://127.0.0.1/status

clip_image041

Zabbix获取活跃连接数

Node3主机中的用户自定义配置的目录中配置,增加自定义配置以下内容:

首先在配置文件中启用识别自定义脚本,默认UnsafeUserParameters=0,改为1

然后由两种方式来处理自定义文件:

方式一:

[root@node3 zabbix]# vi zabbix_agentd.conf

# Default:

UnsafeUserParameters=1

UserParameter=nginx.status[*],/etc/zabbix/zabbix_agentd.d/nginx-status.sh $1

指定了键值nginx.status[*],以及配置文件的位置和名称nginx-status.sh,$1 为位置参数

[root@node3 nginx-1.19.5]# cd /etc/zabbix/zabbix_agentd.d/

[root@node3 zabbix_agentd.d]# vi nginx-status.sh

#!/bin/bash

HOST="127.0.0.1"

PORT="80"

function ping {

/sbin/pidof nginx |wc -l

}

function active {

/usr/bin/curl "http://$HOST:$PORT/status/" 2>/dev/null |grep Active |awk '{print $NF}'

}

function reading {

/usr/bin/curl "http://$HOST:$PORT/status/" 2>/dev/null |grep Reading |awk '{print $2}'

}

function writing {

/usr/bin/curl "http://$HOST:$PORT/status/" 2>/dev/null |grep Writing |awk '{print $4}'

}

function accepts {

/usr/bin/curl "http://$HOST:$PORT/status/" 2>/dev/null |awk NR==3 |awk '{print $1}'

}

function handled {

/usr/bin/curl "http://$HOST:$PORT/status/" 2>/dev/null |awk NR==3 |awk '{print $2}'

}

function requests {

/usr/bin/curl "http://$HOST:$PORT/status/" 2>/dev/null |awk NR==3 |awk '{print $3}'

}

#执行函数

$1

方式二:

主配置文件中只将用户参数打开即可,UnsafeUserParameters=1

[root@node3 zabbix]# vi zabbix_agentd.conf

# Default:

UnsafeUserParameters=1

[root@node3 nginx-1.19.5]# cd /etc/zabbix/zabbix_agentd.d/

[root@node3 zabbix_agentd.d]# vi 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 |awk '{print $1}'

UserParameter=nginx.handled,curl -s http://127.0.0.1/status | awk NR==3 |awk '{print $2}'

UserParameter=nginx.requests,curl -s http://127.0.0.1/status | awk NR==3 |awk '{print $3}'

每一项表示一个键值获取参数。

重启agent:

[root@node3 zabbix_agentd.d]# systemctl restart zabbix-agent.service

在server (node1)中获取活跃连接数,node1中已安装zabbix-get-4.4.6-1.el7.x86_64.rpm包。执行命令检查是否可以正常获取。

方式一:

[root@node1 zabbix]# zabbix_get -s 192.168.1.12 -p 10050 -k "nginx.status[requests]"

clip_image042

方式二:

[root@node1 zabbix]# zabbix_get -s 192.168.1.12 -p 10050 -k "nginx.active"

clip_image043

Zabbix server主机的图形化界面中配置 zabbix3 的监控项

配置à主机群 à选中node3à监控项à创建监控项

clip_image044

配置名称,键值,更新间隔即可。监控nginc的键值由agent指定,而不是zabbix自带的,因此需要根据配置文件中的名称来填写。

clip_image045

按同样的方式添加accept,handled,和 requests,添加后效果如下:

clip_image046

配置à主机群 à选中node3à图形à创建图形

名称可自定义,监控项选择上一步配置的nginx-active, nginx-accept,nginx-handled,nginx-requests.

clip_image047

可以在node2中写一个循环访问nginx,产生监控数据。

[root@node2 ~]# while 2>1; do curl http://192.168.1.12:80;sleep 1; done

回到zabbix home 页:

监测 à图形à群组:linux serverà主机:192.168.1.12à图形:nginx-status

clip_image048

收集数据后,刷新页面可得到对应的监控图形。

clip_image049

问题解析:

如果添加监控项后,出现状态为不支持的,问题出在配置文件或者是所填的键值不对。查找配置文件,对应修改之后生效

clip_image050

clip_image051

posted @ 2021-01-03 17:07  逆流的鱼2016  阅读(238)  评论(0编辑  收藏  举报