zoukankan      html  css  js  c++  java
  • 构建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:linuxzabbix目录

    D:Linuxzabbix>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:Linuxzabbix>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

    ***************用努力照亮现实的梦!***********************
  • 相关阅读:
    MFC常用控件使用方法
    用CImage类来显示PNG、JPG等图片
    javascript
    gSoap学习笔记
    Linux增加Swap分区
    nagios 监控shell脚本
    新机器连接老机器遇到的ERROR
    linux下PS1命令提示符设置
    python基础篇之进阶
    mysql不能使用localhost登录
  • 原文地址:https://www.cnblogs.com/orange2016/p/14226099.html
Copyright © 2011-2022 走看看