zabbix安装使用及监控案例(从头到尾)

前文提要:本文为整个zabbix的介绍及配置以及案例

目录

一.监控的概述

二.zabbix的概述

1.zabbix是什么

2.zabbix的作用

3.zabbix的特性

4.zabbix系统的组成

5.zabbix 3.2.4的软件环境要求

三.zabbix的安装

1.环境准备

2.部署监控服务器

3.部署被监控主机Zabbix Agent

四.配置及使用Zabbix监控系统

1.添加监控主机

2.自定义Zabbix监控项目

3.创建监控模板

4.实现Zabbix报警功能

6.设置邮件

8.自动发现规则

9.创建动作

10.添加新的虚拟机

五.Zabbix主动监控

1.添加被监控主机

2.创建主动监控的监控模板

3.添加监控主机

六.拓扑图与聚合图形

1.创建拓扑图

2.创建聚合图形

七.自定义监控案例

1.监控Nginx服务状态

2.创建自定义key

2.监控网络连接状态


一.监控的概述

监视并控制各种服务器(网站服务、数据库服务器)的网络流量、访问量、操作系统的运行情况.硬件资源使用情况、、服务的运行状态
使用操作系统自带命令控制
计划任务执行自己编写的监控脚本
搭建监控服务器实现对所有服务器的监控
监控的目的 
报告系统运行状况
    -每一部分必须同时监控 
    -内容包括吞吐量、反应时间、使用率等
提前发现问题
    -进行服务器性能调整前,知道调整什么
    -找出系统的瓶颈在什么地方

二.zabbix的概述

1.zabbix是什么

zabbix是一款基于web页面的、开源的、企业级的,可以分布式部署的监控软件。

2.zabbix的作用

    监控windows和Linux主机上的软硬件状态。
    监控各网络设备,如路由器、交换机、防火墙、f5、打印机等。
    发送告警通知。
    通过web页面及图形展示监控数据。

3.zabbix的特性

    1)由server和agent程序协同工作,如果是分布式监控还需要proxy程序。
    监控方式站在agnet的角度分为主动监控(agent active)和被动监控(agent)。
        主动监控
        当监控条目配置为agent active时,即为主动监控,此时agent会主动根据配置好的时间间隔去向server或proxy询问要监控哪些item,然后将item的数据主动提交给server或proxy。
        被动监控
        当监控条目配置为agent时,即为被动监控,此时server或proxy会主动向agent请求它要监控的item的数据,然后agent会将数据发送给server或proxy。支持的监控手段
  

2)所谓监控手段即server或proxy通过什么方式来收集监控到的数据,常用的有:
        SNMP(polling,trapping)
        IPMI(监控硬件状况)
        JMX(监控java应用)
        自定义监测(自定义各类监控脚本监测)
3)告警阈值定义
        在trigger中定义告警阈值或条件
        存储于后台数据库中
        可以自定义告警升级机制
        调用action实现自动化动作
   

4)监控数据呈现
    zabbix通过内置的画图软件将监控到的数据实时通过web页面呈现出来。
    历史数据存储
        存储于数据库中
        支持多种数据库,mysql,db2,oracle,postgresql,sqlite
        存储时长可自定义
        自动清理过期历史数据
 

5)监控主机配置
        通过添加监控设备方式添加
        可以使用模板进行配置

6) 模板的使用
        模板包含item,trigger,action等一系列单个主机支持的元素
        模板中可以使用组监控
        模板可以继承

7) 自动发现功能
        网络设备自动发现
        agent自动注册
        自动发现文件系统、网卡、SNMP OID
   

8)web界面
        web前端采用php编写
        界面样式可以灵活自定义
        自带操作日志审计
   

9)zabbix API
            供第三方程序接入
            权限系统
            可以对用户进行分组认证及授权。

10)agent端
            支持Linux和Windows系统。
            守护进程
            基于C语言开发。

4.zabbix系统的组成

zabbix_server
        服务端守护进程。
        负责处理客户端主动送上来以及它主动去取回的数据。
        通过web界面呈现这些数据。
   

zabbix_agentd
        客户端守护进程。
        负责收集客户端上的数据并发送给server或proxy。
   

zabbix_get
        服务端工具。
        在服务器上执行,用于手动收集客户端的监控数据,可以用于监控测试或者排错。
    zabbix_sender
        客户端工具。
        对于非常耗时间的检测项,可以在其检测完成以后,通过它将数据发送给server或者proxy。
        需要与trapper配合使用。
   

zabbix_proxy
    类似于server,但它只是一个中转站,当跨地区,跨机房部署zabbix系统时,需要用到它,以将它收集到的数据发送给server。
   

zabbix_java_gateway
        类似于agentd程序。
        只用于java应用程序的监控。
        只能主动去获取数据,类似于agent active。
        最终将收集到的数据发送给server或proxy。
   

zabbix_web
    构建zabbix专用的站点,将监控数据以web页面的形式呈现出来,并对zabbix系统进行配置设定。

5.zabbix 3.2.4的软件环境要求

zabbix 3.2.4 web需求php的环境如下:

zabbix 3.2.4 web需求php的环境

三.zabbix的安装

1.环境准备

硬件:CentOS7.5

 软件:

gccpcre-developensslnginx-1.12.2.tar.gz
phpphp-mysqlndphp-fpmmysql-community*
php-xmlphp-jsonnet-snmp-develcurl-devel
autoconf libevent-develphp-gdzabbix-3.4.4.tar.gz
php-bcmathphp-mbstringautoconf

nginx所需模块:

--with-http_ssl_module

zabbix-server所需模块

--enable-server--enable-proxy
--enable-agent--with-mysql=/usr/bin/mysql_config
--with-net-snmp--with-libcurl

zabbix-agent所需模块

--enable-agent

 2.部署监控服务器

1)zabbix服务端搭建LNMP环境

[root@zabbixserver ~]# yum -y install gcc pcre-devel  openssl-devel
[root@zabbixserver ~]# tar -xf nginx-1.12.2.tar.gz
[root@zabbixserver ~]# cd nginx-1.12.2
[root@zabbixserver nginx-1.12.2]# ./configure --with-http_ssl_module
[root@zabbixserver nginx-1.12.2]# make && make install
[root@zabbixserver ~]# yum -y  install  php  php-mysql  php-fpm
[root@zabbixserver ~]# yum -y  install  mysql-community*

2)修改Nginx配置文件

配置Nginx支持PHP动态网站,因为有大量PHP脚本需要执行,因此还需要开启Nginx的各种fastcgi缓存,加速PHP脚本的执行速度

[root@zabbixserver ~]# vim /usr/local/nginx/conf/nginx.conf
… …
http{
… …
    fastcgi_buffers 8 16k;              #缓存php生成的页面内容,8个16k
    fastcgi_buffer_size 32k;              #缓存php生产的头部信息,32k
    fastcgi_connect_timeout 300;         #连接PHP的超时时间,300秒
    fastcgi_send_timeout 300;             #发送请求的超时时间,300秒
    fastcgi_read_timeout 300;            #读取请求的超时时间,300秒
location ~ \.php$ {
                root           html;
                fastcgi_pass   127.0.0.1:9000;
                fastcgi_index  index.php;
                include        fastcgi.conf;   #[注意这里别出错]
        }
....

3)启动服务

[root@zabbixserver ~]# systemctl enable mysqld --now
[root@zabbixserver ~]# systemctl enable  php-fpm --now       #设置开机并自启
[root@zabbixserver ~]# /usr/local/nginx/sbin/nginx        #启动服务
[root@zabbixserver ~]# echo /usr/local/nginx/sbin/nginx  >> /etc/rc.local
[root@zabbixserver ~]# chmod +x /etc/rc.local
#通过rc.local设置开机自启
[root@zabbixserver ~]# firewall-cmd --set-default-zone=trusted
[root@zabbixserver ~]# setenforce 0
[root@zabbixserver ~]# sed -i '/SELINUX/s/enforcing/permissive/' /etc/selinux/config

4)部署监控服务器Zabbix Server

源码安装Zabbix Server

[root@zabbixserver lnmp_soft]# yum -y install  net-snmp-devel \
curl-devel autoconf libevent-devel
#安装相关依赖包
[root@zabbixserver lnmp_soft]# tar -xf zabbix-3.4.4.tar.gz
[root@zabbixserver lnmp_soft]# cd zabbix-3.4.4/
[root@zabbixserver zabbix-3.4.4]# ./configure  --enable-server \
 --enable-proxy --enable-agent --with-mysql=/usr/bin/mysql_config \
 --with-net-snmp --with-libcurl

5)创建并初始化数据库

[root@zabbixserver ~]# grep -i password /var/log/mysqld.log
# 修改数据库的root用户密码为NSD2021@tedu.cn
[root@zabbixserver ~]# mysqladmin -uroot -p'A8cCwrjefY(v' password NSD2021@tedu.cn               
#原密码在上面的配置
[root@zabbixserver ~]# mysql -uroot -pNSD2021@tedu.cn
mysql> create database zabbix  default charset utf8mb4;
mysql> grant all on zabbix.* to zabbix@'localhost' identified by 'zabbix';
[root@zabbixserver mysql]# ls
schema.sql images.sql data.sql
[root@zabbixserver mysql]# mysql -uzabbix -pzabbix zabbix < schema.sql
[root@zabbixserver mysql]# mysql -uzabbix -pzabbix zabbix < images.sql
[root@zabbixserver mysql]# mysql -uzabbix -pzabbix zabbix < data.sql

注.该数据包无法上传,有需要联系我

如何测试?
[root@zabbixserver ~]# mysql -uzabbix -pzabbix -h localhost zabbix
#-u指定用户名,-p指定密码,-h指定服务器IP,最后的zabbix是数据库名称
#使用zabbix账户(密码为zabbix)连接localhost服务器上面的zabbix数据库
mysql> show tables
#查看有没有数据表
mysql> exit
#退出数据库

6)修改zabbix_server配置并启动监控服务

[root@zabbixserver ~]# vim /usr/local/etc/zabbix_server.conf
DBHost=localhost
# 85行,定义哪台主机为数据库主机,localhost为本机
DBName=zabbix
#95行,设置数据库名称
DBUser=zabbix
#111行,设置数据库账户
DBPassword=zabbix
#119行,设置数据库密码
LogFile=/tmp/zabbix_server.log    
#38行,日志的位置,排错使用,该行仅查看即可
[root@zabbixserver ~]# useradd -s /sbin/nologin zabbix

通过创建service文件管理zabbix服务

[root@zabbixserver ~]# vim /usr/lib/systemd/system/zabbix_server.service 
[Unit]
Description=zabbix server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/tmp/zabbix_server.pid
ExecStart=/usr/local/sbin/zabbix_server
ExecStop=/bin/kill $MAINPID
[Install]
WantedBy=multi-user.target
[root@zabbixserver ~]# systemctl  enable  zabbix_server  --now
[root@zabbixserver ~]# ss -ntulp |grep zabbix_server     #确认连接状态,端口10051
tcp LISTEN 0 128 *:10051 *:* 
users:(("zabbix_server",pid=23275,fd=4),("zabbix_server",pid=23274,fd=4)

7) 修改Zabbix_agent配置文件,启动Zabbix_agent服务

[root@zabbixserver ~]# vim /usr/local/etc/zabbix_agentd.conf
Server=127.0.0.1,192.168.2.5            #93行,允许哪些主机监控本机(主动监控)
ServerActive=127.0.0.1,192.168.2.5        #134行,允许哪些主机通过主动模式监控本机(被动监控)
Hostname=zabbix_server                #145行,设置本机主机名(名称可以任意)
LogFile=/tmp/zabbix_agentd.log            #设置日志文件(不需要修改)
UnsafeUserParameters=1                #280行,是否允许自定义监控传参(0不允许)

编写zabbix_agentd的service文件,通过systemd管理服务

[root@zabbixserver ~]#  vim /usr/lib/systemd/system/zabbix_agentd.service
[Unit]
Description=zabbix agent
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/tmp/zabbix_agentd.pid
ExecStart=/usr/local/sbin/zabbix_agentd
ExecStop=/bin/kill $MAINPID
[Install]
WantedBy=multi-user.target
[root@zabbixserver ~]# systemctl enable  zabbix_agentd   --now
[root@zabbixserver ~]# ss -ntulp |grep zabbix_agentd   #查看端口信息为10050
tcp    LISTEN     0      128       *:10050                 *:*                   
users:(("zabbix_agentd",pid=23505,fd=4),("zabbix_agentd",pid=23504,fd=4)

8)上线Zabbix的Web页面

[root@zabbixserver ~]# cd lnmp_soft/zabbix-3.4.4/frontends/php/
[root@zabbixserver php]# cp -r * /usr/local/nginx/html/
[root@zabbixserver php]# chown -R  apache.apache /usr/local/nginx/html/
#这里修改所有者使用:或者.都可以。
#修改权限的原因如下:
#php-fpm的账户是apache,后面我们需要让php-fpm对网站目录具有读写操作,
#而/usr/local/nginx/html默认是root所有,仅root具有写权限,php-fpm无写权限

注.该数据包无法上传,有需要联系我

9)浏览器访问Zabbix_server服务器的Web页面

http://192.168.2.5/index.php

#第一次访问,初始化PHP页面会检查计算机环境是否满足要求,如果不满足会给出修改建议 #默认会提示PHP的配置不满足环境要求,需要修改PHP配置文件

        根据错误提示,安装依赖、修改PHP配置文件,满足Zabbix_server的环境要求。

[root@zabbixserver ~]# yum -y install  php-gd  php-xml
[root@zabbixserver ~]# yum -y install  php-bcmath  php-mbstring 
[root@zabbixserver ~]# vim /etc/php.ini
date.timezone = Asia/Shanghai                #878行,设置时区
max_execution_time = 300                    #384行,最大执行时间,秒
post_max_size = 32M                        #672行,POST数据最大容量
max_input_time = 300                        #394行,服务器接收数据的时间限制
[root@zabbixserver ~]# systemctl restart php-fpm

修改完PHP配置文件后,再次使用浏览器访问服务器

 

 在登陆页面,使用用户(admin)和密码(zabbix)登陆,登陆后设置语言环境为中文

 

3.部署被监控主机Zabbix Agent

1)源码安装Zabbix agent软件

[root@web1 ~]# useradd -s /sbin/nologin  zabbix
[root@web1 ~]# yum -y install gcc pcre-devel autoconf
[root@web1 ~]# tar -xf zabbix-3.4.4.tar.gz 
[root@web1 ~]# cd zabbix-3.4.4/
[root@web1 zabbix-3.4.4]# ./configure --enable-agent
[root@web1 zabbix-3.4.4]# make && make install 

2)修改agent配置文件,启动Agent

[root@web1 ~]# vim /usr/local/etc/zabbix_agentd.conf
Server=127.0.0.1,192.168.2.5                #93行,谁可以监控本机(被动监控模式)
ServerActive=127.0.0.1,192.168.2.5            #134行,谁可以监控本机(主动监控模式)
Hostname=web1                                    #145行,被监控端自己的主机名
EnableRemoteCommands=1    
#69行,监控异常后,是否允许服务器远程过来执行命令,如重启某个服务
UnsafeUserParameters=1                    #280行,是否允许自定义key传参
[root@web1 ~]# firewall-cmd --set-default-zone=trusted
[root@web1 ~]# sed -i  '/SELINUX/s/enforcing/permissive/' /etc/selinux/config
[root@web1 ~]# setenforce 0

设置service管理服务

[root@web1 ~]# vim /usr/lib/systemd/system/zabbix_agentd.service
[Unit]
Description=zabbix agent
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/tmp/zabbix_agentd.pid
ExecStart=/usr/local/sbin/zabbix_agentd
ExecStop=/bin/kill $MAINPID
[Install]
WantedBy=multi-user.target
[root@web1 ~]# systemctl enable  zabbix_agentd   --now
#启动服务器并设置开机自启动

四.配置及使用Zabbix监控系统

1.添加监控主机

使用览器登录http://192.168.2.5/index.php,通过Configuration(配置)-->Hosts(主机)-->Create Host(创建主机)添加被监控Linux主机

 添加被监控主机时,需要根据提示输入被监控Linux主机的主机名称(最好与电脑的主机名一致,但也允许不一致)、主机组、IP地址等参数

1) 为被监控主机添加监控模板

 2)查看监控数据

查看监控数据,登录Zabbix Web控制台,点击Monitoring(监控中)—> Latest data(最新数据),正过滤器中填写过滤条件,根据监控组和监控主机选择需要查看哪些监控数据

 找到需要监控的数据后,可以点击后面的Graph(图形)查看监控图形

 2.自定义Zabbix监控项目

操作步骤:
    创建自定义key
    创建监控项目
    创建监控图形
    将监控模板关联到主机

被监控主机创建自定义key

自定义的key文件一般存储在/usr/local/etc/zabbix_agentd.conf.d/目录,这里还需要修改zabbix_agentd.conf文件,允许自定义监控key,来读取该目录下的所有文件 。

[root@web1 ~]# vim /usr/local/etc/zabbix_agentd.conf
Include=/usr/local/etc/zabbix_agentd.conf.d/             #264行,加载配置文件目录
[root@web1 ~]# cd /usr/local/etc/zabbix_agentd.conf.d/
[root@web1 zabbix_agentd.conf.d]# vim count.line.passwd
UserParameter=count.line.passwd,sed -n '$=' /etc/passwd(被执行端执行此命令)
#自定义key语法格式:
#UserParameter=自定义key名称,命令(每当执行此名称就执行后面的命令)

测试自定义key是否正常工作

[root@web1 ~]# systemctl restart  zabbix_agentd           #重启agent服务
[root@web1 ~]# zabbix_get -s 127.0.0.1 -k count.line.passwd(指定地址)

21

注意:如zabbix_get命令执行错误,提示Check access restrictions in Zabbix agent configuration,则需要检查agent配置文件是否正确

[root@web1 ~]# vim /usr/local/etc/zabbix_agentd.conf Server=127.0.0.1,192.168.2.5 ServerActive=127.0.0.1,192.168.2.5

3.创建监控模板

模板、应用集与监控项目的关系图

 1)添加监控模板

登录Zabbix Web监控控制台,通过Configuration(配置)-->Template(模板)-->Create template(创建模板),填写模板名称,新建模板群组

创建模板后,默认模板中没有任何应用集、监控项、触发器、图形等

 2)创建应用集

创建完成模板后,默认模板中没有任何应用集、监控项、触发器、图形等资源。这里需要点击模板后面的Application(应用集)链接打开创建应用集的页面

 点击Application(应用集)后,会刷新出图-16所示页面,在该页面中点击Create application(创建应用集)按钮,设置应用集名称,名称可以任意

 3)创建监控项目item

与创建应用集一样,在模板中还需要创建监控项目

 

 接下来,还需要给项目设置名称(名称可以任意)及对应的自定义key(必须与前面自定义的监控key名称一致),

 

 键值必须是和机器上的指令一样

4)将模板链接到被监控主机

 将完整的监控模板制作完成后,就可以将模板链接到主机实现监控功能了。首先找到被监控主机Configuration(配置)-->Hosts(主机)

点击需要的被监控主机链接,打开监控主机设置页面,在Template(模板)页面中选择需要链接到该主机的模板,在此选择刚刚创建的模板count_line.passwd添加即可

 

 5)查看监控数据图形

点击Monitoring(监控中)—> Latest data(最新数据),根据需要选择条件,查看监控图形

 

4.实现Zabbix报警功能

自定义的监控项默认不会自动报警,首页也不会提示错误,需要配置触发器与报警动作才可以自定报警。
什么是触发器(trigger)?(相当于if)
        表达式,如内存不足300M,用户超过30个等
        当触发条件发生后,会导致一个触发事件
        触发事件会执行某个动作
什么是动作(action)?
        动作是触发器的条件被触发后所执行的行为
        可以是发送邮件、也可以是重启某个服务等
参考如下操作步骤:
        创建触发器并设置标记
        设置邮箱(发件人,收件人)
        创建Action动作
        创建触发器规则

1)创建触发器

创建触发器时强烈建议使用英文的语言环境,通过Configuration(配置)--> Templates(模板),找到我们之前创建的count.line.passwd模板,点击模板后面的triggers(触发器),如图-1所示。

 2)触发器表达式

创建触发器时需要定义表达式,触发器表达式(Expression)是触发异常的条件,触发器表达式格式如下:

{<server>:<key>.<function>(<parameter>)}<operator><constant>
{主机:key.函数(参数)}<表达式>常数(key指监控的名字)(函数:求最大值或最小最新值【可能有可能没有】)(表达式:<>=...)

可以直接手写,也可以通过add选择表达式模板。

下面,我们看几个表达式的案例:

{web1:system.cpu.load[all,avg1].last(0)}>5 #0为最新数据
如果web1主机最新的CPU平均负载值大于5,则触发器状态Problem
{vfs.fs.size[/,free].max(5m)}<10G #5m为最近5分钟
根分区,最近5分钟的最大容量小于10G,则状态进入Problem
{vfs.file.cksum[/etc/passwd].diff(0)}>0 #0为最新数据
最新一次校验/etc/passwd如果与上一次有变化,则状态进入Problem
大多数函数使用秒作为参数,可以使用#来表示其他含义(具体参考表-1)。
avg, count, last, min and max 等函数支持额外的第二个参数time_shift(时间偏移量)可以对过去进行,这个参数允许从过去一段时间内引用数据。

6.设置邮件

1)创建Media(设置发件人信息)

通过Administration(管理)-->Media Type(报警媒体类型)-->选择Email(邮件)

设置邮件服务器信息,设置邮件服务器及发件人邮件账户信息,如图-8所示。

2)为用户添加Media(设置收件人信息)

在Administration(管理)-->Users(用户)中找到选择admin账户

点击Admin账户后,在弹出的界面中选择Media(报警媒介)菜单-->点击Add(添加)报警媒介,

点击Add(添加)后,在Meida Type(类型)中填写报警类型,收件人,时间等信息

7.创建Action动作

1)Action动作

Action(动作)是定义当触发器被触发时的时候,执行什么行为。

通过Configuration(配置)-->Actions(动作)-->Create action(创建动作),注意事件源选择触发器

2)配置Action动作的触发条件

填写Action动作的名称,配置什么触发器被触发时会执行本Action动作(账户数量大于35)

3)配置Action动作的具体行为

配置动作的具体操作行为(发送信息或执行远程命令),无限次数发送邮件,60秒1次,发送给Admin用户

 

0就是永不停止

4)测试效果

在被监控主机创建账户(让账户数量大于35),然后登录监控端Web页面,在仪表盘中查看问题报警(需要等待一段时间)

[root@web1 ~]# useradd user1   #创建若干测试用户

查看报警邮件,需要在监控服务器上面有发邮件软件postfix和收取邮件的软件mailx,启动postfix后,可以在监控服务器上使用mail命令查收报警邮件,如图-17所示。

[root@zabbixserver ~]# yum -y install postfix  mailx   #安装软件

[root@zabbixserver ~]# systemctl start  postfix    #启动服务

[root@zabbixserver ~]# systemctl enable  postfix    #设置开机自启动

[root@zabbixserver ~]# mail                        #收取邮件   

8.自动发现规则

1)创建自动发现规则

通过Configuration(配置)-->Discovery(自动发现)-->Create discovery rule(创建发现规则),

2)填写规则

填写自动发现的IP范围(逗号隔开可以写多个),多久做一次自动发现(默认为1小时,仅实验修改为1m),如图-19所示。配置检查的方式:Ping、HTTP、FTP、Agent的自定义key等检查

9.创建动作

1)创建Action动作

通过Configuration(配置)--> Actions(动作)--> Actions Event source(事件源):自动发现(Discovery)-->Create action(创建动作)

2)配置Action动作具体行为

配置动作,添加动作名称,添加触发动作的条件

点击操作(触发动作后要执行的操作指令),操作细节:添加主机到组,与模板链接(HTTP模板)

10.添加新的虚拟机

1)创建新的虚拟机

创建一台新的主机,验证zabbix是否可以自动发现该主机,可以重新部署一台新的虚拟机(注意前面的课程,我们已经创建了虚拟机web2,并且已经安装部署了Zabbix agent)。

2)验证结果

登陆Zabbix服务器的Web页面,查看主机列表,确认新添加的主机是否被自动加入监控主机列表。

五.Zabbix主动监控

默认zabbix采用的是被动监控,主动和被动都是对被监控端主机而言的!

被动监控:Server向Agent发起连接,索取监控数据。

主动监控:Agent向Server发起连接,Agent周期性地收集数据发送给Server。

区别:Server不用每次需要数据都连接Agent,Agent会自己收集数据并处理数据,Server仅需要保存数据即可

 

当监控主机达到一定量级后,Zabbix服务器会越来越慢,此时,可以考虑使用主动监控,释放服务器的压力。

另外,Zabbix也支持分布式监控,也是可以考虑的方案。

1.添加被监控主机

1)为被监控主机安装部署zabbix agent

注意:前面的实验如果我们已经在web2主机安装部署了zabbix agent,如果已经完成,则如下操作可以忽略。

[root@web2 ~]# yum -y install gcc pcre-devel autoconf

[root@web2 ~]# tar -xf zabbix-3.4.4.tar.gz

[root@web2 ~]# cd zabbix-3.4.4/

[root@web2 ~]#./configure --enable-agent

[root@web2 ~]# make && make install

2)修改agent配置文件

将agent监控模式修改为主动模式。

[root@web2 ~]# vim /usr/local/etc/zabbix_agentd.conf

#Server=127.0.0.1,192.168.2.5

#93行,注释该行,允许谁监控本机

StartAgents=0            

#118行,被动监控时启动几个Agent进程监听10050端口

#设置为0,则禁止被动监控,不启动zabbix_agentd服务及端口

ServerActive=192.168.2.5

#134行,允许哪些主机监控本机(主动模式),一定要取消127.0.0.1

Hostname=web2

#145行,告诉监控服务器,是谁发的数据信息

#一定要和zabbix服务器配置的监控主机名称一致(后面设置)

RefreshActiveChecks=120

#183行,默认120秒检测一次

UnsafeUserParameters=1            

#280行,允许自定义监控传参

Include=/usr/local/etc/zabbix_agentd.conf.d/

#264行,自定义监控的位置

[root@web2 ~]# vim /usr/lib/systemd/system/zabbix_agentd.service

[Unit]

Description=zabbix agent

After=network.target remote-fs.target nss-lookup.target

[Service]

Type=forking

PIDFile=/tmp/zabbix_agentd.pid

ExecStart=/usr/local/sbin/zabbix_agentd

ExecStop=/bin/kill $MAINPID

[Install]

WantedBy=multi-user.target

[root@web2 ~]# systemctl restart zabbix_agentd            #重启服务

[root@web2 ~]# ss -nutlp |grep  zabbix_agentd            #应该查看不到任何端口信息

2.创建主动监控的监控模板

1)克隆Zabbix自动的监控模板

为了方便,克隆系统自带模板(在此基础上修改更方便)。

通过Configuration(配置)-->Templates(模板)-->选择Template OS Linux

-->全克隆,克隆该模板,新建一个新的模板

新模板名称为:Template OS Linux Server Active。

2)修改模板中的监控项目的监控模式

将模板中的所有监控项目全部修改为主动监控模式,通过Configuration(配置)-->Templates(模板)-->选择新克隆的模板,点击后面的Items(监控项)-->点击全选,选择所有监控项目,点击<批量更新>,将类型修改为:Zabbix Agent(Active主动模式)

3)禁用部分监控项目

批量修改监控项的监控模式后,并非所有监控项目都支持主动模式,批量修改后,会发现有几个没有修改主动模式成功,说明,这些监控项目不支持主动模式,关闭即可。

可以点击类型排序,方便操作,点击状态即可关闭。

3.添加监控主机

1)手动添加监控主机(主动模式监控)

在Zabbix监控服务器,添加被监控的主机(主动模式),设置主机名称:web2 (必须与被监控端的配置文件Hostname一致),将主机添加到Linux servers组,IP地址修改为0.0.0.0,端口设置为0,

为主机添加监控模板,选择刚刚创建的模板(主动模式),添加链接模板到主机

2)验证监控效果

查看数据图表,通过Monitoring(监控中)-->Latest(最新数据)菜单,选择需要查看的主机组、主机以及图形,查看效果

六.拓扑图与聚合图形

1.创建拓扑图

1)创建拓扑

绘制拓扑图可以快速了解服务器架构,通过Monitoring(监控中)-->Maps(拓扑图),选择默认的Local network拓扑图,编辑即可(也可以新建一个拓扑图),如图-33所示。

2)拓扑图图表说明

Icon(图标),添加新的设备后可以点击图标修改属性

Shape(形状)

Link(连线),先使用Ctrl选择两个图标,再选择连线

完成后,点击Update(更新)

创建完拓扑图,

2.创建聚合图形

1)创建聚合图形

聚合图形可以在一个页面显示多个数据图表,方便了解多组数据。

通过Monitoring(监控中)-->Screens(聚合图形)-->Create screen(创建聚合图形)即可创建聚合图形

修改聚合图形参数如下:

Owner(所有者):使用默认的Admin用户

Name(名称):名称设置为web2_host

Columns(列):列数设置为2列

Rows(行):行数设置为2行

2)为聚合图形中添加监控图形

选择刚刚创建的聚合图形(web2_host),点击后面的构造函数(constructor),点击Change(更改),设置每行每列需要显示的数据图表,

 

七.自定义监控案例

1.监控Nginx服务状态

1)准备环境,部署nginx软件 安装nginx软件,开启status模块

[root@web1 ~]# tar -xf nginx-1.12.2.tar.gz
[root@web1 ~]# cd nginx-1.12.2
[root@web1 nginx-1.12.2]# yum -y install gcc pcre-devel openssl-devel
[root@web1 nginx-1.12.2]# ./configure \
> --with-http_stub_status_module 
[root@web1 nginx-1.12.2]# make && make install
[root@web1 ~]# vim /usr/local/nginx/conf/nginx.conf        #参考前面的课程内容
location /status {
                stub_status on;
        }
[root@web1 ~]# /usr/local/nginx/sbin/nginx          #启动服务
[root@web1 ~]# curl  http://192.168.2.100/status
Active connections: 1 
server accepts handled requests
10 10 3 
Reading: 0 Writing: 1 Waiting: 0

2)自定义监控key 编写自定义监控脚本(仅供参考,未检测完整状态)

[root@web1 ~]# vim /usr/local/bin/nginx_status.sh
#!/bin/bash
case $1 in
active)
    curl -s http://192.168.2.100/status |awk '/Active/{print $NF}';;
waiting)
    curl -s http://192.168.2.100/status |awk '/Waiting/{print $NF}';;
accepts)
    curl -s http://192.168.2.100/status |awk 'NR==3{print $2}';;
esac
[root@web1 ~]# chmod +x  /usr/local/bin/nginx_status.sh

2.创建自定义key

语法格式: UserParameter=key,command UserParameter=key[*],<command> $1

key里的所有参数,都会传递给后面命令的位置变量

注意:被监控端修改配置文件,注意要允许自定义key并设置Include!

[root@web1 ~]# vim /usr/local/etc/zabbix_agentd.conf.d/nginx.status
UserParameter=nginx.status[*],/usr/local/bin/nginx_status.sh $1
(便量传仓能不能用,取决主配置文件UnsafeUserParameters=1)
[root@web1 ~]# systemctl restart zabbix_agentd            #重启服务
测试效果:
[root@web1 ~]# zabbix_get  -s 127.0.0.1 -k 'nginx.status[accepts]'

登陆Zabbix监控Web,创建监控项目item,点击Configuration(配置)-->Hosts(主机),点击主机后面的items(监控项),点击Create item(创建监控项)。修改监控项参数如图-37所示。

备注:Type(类型)后面的Zabbix agent中文是Zabbix 客户端。 Key的中文是键值。

2.监控网络连接状态

1)模拟多人并发连接(如果没有ab命令,则安装httpd-tools软件包)

[root@web1 ~]# ab -c 1000 -n 100000 http://192.168.2.100/

2)查看网络连接状态,仔细观察、分析第二列的数据

[root@web1 ~]# ss -antup

#-a显示所有

#-t显示TCP连接状态

#-u显示UDP连接状态

#-n以数字形式显示端口号和IP地址

#-p显示连接对应的进程名称

3)创建自定义key

编写自定义监控脚本(仅供参考,未检测完整状态)

[root@web1 ~]# vim /usr/local/bin/net_status.sh

#!/bin/bash

case $1 in

estab)

    ss -antp |awk 'BEGIN{x=0}  /^ESTAB/{x++} END{print x}';;

close_wait)

    ss -antp |awk 'BEGIN{x=0} /^CLOSE-WAIT/{x++} END{print x}';;

time_wait)

    ss -antp |awk 'BEGIN{x=0} /^TIME-WAIT/{x++} END{print x}';;

esac 

[root@web1 ~]# chmod +x  /usr/local/bin/net_status.sh

注意:被监控端修改配置文件,注意要允许自定义key并设置Include参数。

如果没有killall命令,则需要安装psmisc软件包。

[root@web1 ~]# vim /usr/local/etc/zabbix_agentd.conf.d/net.status

UserParameter=net.status[*],/usr/local/bin/net_status.sh $1

[root@web1 ~]# systemctl restart zabbix_agentd            #重启服务

4)测试效果:

[root@web1 ~]# zabbix_get  -s 127.0.0.1 -k 'net.status[time_wait]'

5) 监控netstatus

在监控服务器,添加监控项目item,Configuration(配置)-->Hosts(主机)点击主机后面的items(监控项)

点击Create item(创建监控项)

本文为完整的zabbix安装及监控配置,仅供学习,为经本人允许禁止转载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值