zabbix

目录

一.Zabbix 部署

1.zabbix_server:

安装zabbix

配置数据库

启动zabbix服务

修改zabbix的PHP配置

进入浏览器完成第一次配置

2.zabbix_gaent(192.168.31.164)

二.Apache监控示例(图形监控)

三.模板Template

四.Zabbix Items

1.Items 监控项

        • 获取监控数据方式 

        • 取值的数据类型/单位

新建items

1.监控项:服务器启动分区剩余空间

2.监控项:服务器网络接口进出流量

 五.zabbix用户自定义监控项

用户自定义key值

六.Zabbix Trigger

1.触发器对象(可以应用给主机,也可应用给模板)

2.触发器示例

        A.CPU负载超过0.5

七.zabbix ACTION

1.邮箱通知

 zabbix客户端

测试成功

 添加用户群组

 创建用户及报警类型

创建报警动作  ​

  操作

动作已添加

 制造触发条件

如果无法发送邮件需要配置变量

邮件信息

2.微信告警

添加机器人

配置Python报警脚本(webserver上192.168.31.163)

赋权        # chown zabbix.zabbix /usr/lib/zabbix/alertscripts/wechat.py

测试        ./wechat.py WangHaoYang test cloud (WangHaoYang 为收件人test是标题,内容为cloud)

在网页zabbix上

  测试

添加报警

 配置动作创建动作

 模拟环境

 3远程执行

开启zabbix远程执行的功能

开启sudo权限

模拟HTTP服务出错


监控收集信息方式:

        被动模式(监控对象上报故障)

                        优点:占用网络资源少,占用存储资源少

                        缺点:及时性差

        主动模式(定时查看业务状态)

                        优点:及时性好

                        缺点:占用资源

一.Zabbix 部署

环境:IP                 主机名                角色
192.168.31.163  zabbix_server        监控服务器   
192.168.31.164     web1                   业务主机

官网:https://www.zabbix.com/documentation/5.0/manual

1.zabbix_server:

安装zabbix

        1.设置主机名

                hostnamectl set-hostname zabbix_server

                防火墙        systemctl stop firewalld        systemctl disable firewalld

                selinux        setenforce 0

        2.准备Zabbix-repo(使用阿里提供的源)

                [root@zabbix-server ~]# vim /etc/yum.repos.d/zabbix.repo

[zabbix]
name=alibaba zabbix
baseurl=https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/
gpgcheck=0
enabled=1

[zabbix2]
name=alibaba zabbix frontend
baseurl=https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/frontend/
gpgcheck=0
enabled=1

        3.安装Zabbix服务器

                # yum clean all

                # yum  -y  install zabbix-server-mysql zabbix-agent (数据库;代理程序(上报信息的程序)

                # yum install centos-release-scl        (centos发布scl)

                # yum install zabbix-web-mysql-scl zabbix-apache-conf-scl (zabbix前台页面)

配置数据库

        1.安装数据库

                # yum -y install mariadb mariadb-server

        2.启动数据库

                #  systemctl enable mariadb

                #  systemctl start mariadb

        3.授权zabbix账号

                # mysql

                mysql> create database zabbix character set utf8 collate utf8_bin;

                mysql> create user zabbix@localhost identified by 'why@123';

                mysql> grant all privileges on zabbix.* to zabbix@localhost;

                mysql> flush privileges;

                mysql> quit;

        4.初始化zabbix(注意版本号的问题)

                [root@zabbix-server ~]# ls /usr/share/doc/zabbix-server-mysql-5.0.8/

                AUTHORS  ChangeLog  COPYING  create.sql.gz  double.sql  NEWS  README       

[root@zabbix-server ~]# zcat /usr/share/doc/zabbix-server-mysql-5.0.8/create.sql.gz | mysql -uzabbix    -p'XuLei@123'  zabbix 

启动zabbix服务

        配置sql账号密码

                # vim /etc/zabbix/zabbix_server.conf

DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=why@123

         启动zabbix

                # systemctl enable zabbix-server.service

                # systemctl start zabbix-server.service

修改zabbix的PHP配置

        # vim  /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf

                php_value date.timezone Asia/Shanghai        默认值,只需要配置时区。

        #  systemctl restart zabbix-server zabbix-agent httpd rh-php72-php-fpm

        # systemctl enable zabbix-server zabbix-agent httpd rh-php72-php-fpm

进入浏览器完成第一次配置

        欢迎页面

        PHP检测

        数据库信息

        服务器命名

        汇总 

        登录 

 

         页面内容

2.zabbix_gaent(192.168.31.164)

设置主机名

                hostnamectl set-hostname web1

防火墙

                systemctl stop firewalld.service

                systemctl disable firewalld.service

selinux

                setenforce 0

准备zabbix-repo

        vim /etc/yum.repos.d/zabbix.repo

[zabbix]
name=alibaba zabbix
baseurl=https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/
gpgcheck=0
enabled=1

[zabbix2]
name=alibaba zabbix frontend
baseurl=https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/frontend/
gpgcheck=0
enabled=1

安装zabbix-agent

                yum -y install zabbix-agent

配置主服务器地址

                vim /etc/zabbix/zabbix_agentd.conf

Server=192.168.31.163                #被动模式 zabbix-server-ip
ServerActive=192.168.31.163         #主动模式  zabbix-server-ip(谁从我这里采集数据。
Hostname=web1                

启动zabbix-agent:10050

        systemctl start zabbix-agent

        systemctl enable zabbix-agent

        ss -anlp |grep :10050

3命令行测试(zabbix_get)

zabbix-server(192.168.31.163)

# yum -y install zabbix_get

# zabbix_get -s 192.168.100.20 -k system.uname

# zabbix_get -s 192.168.100.20 -k system.cpu.load[all,avg15]

二.Apache监控示例(图形监控)

创建主机组 (zabbix-server-192.168.31.163)

创建主机

创建模板

 

 

 创建图形

 

 

 

查看图形

 

三.模板Template

常用模板

        Template App HTTP Service

        Template App MySQL

        Template OS Linux

应用集app        通常是监控项目的归类。比如CPU类,内存类,网卡类,系统类

监控项item        通常是具体的监控参数。比如内存的总大小,剩余空间,使用空间等。

四.Zabbix Items

1.Items 监控项

        • 获取监控数据方式 

                zabbix-agent

                SNMP-简单的网际管理协议

        • 取值的数据类型/单位

                磁盘容量单位一般为B(记住)

                网卡流量单位为bps

                MySQL每秒select,insert,每秒访问量    qps

                CPU

                        Interrupts per second     ips        每秒的中断总数。

                         user time  float        %

                        Context switches per second    sps  每秒上下文切换   进程线程切换

                Host boot time         unixtime         系统启动的时间

        • 监控Key(组合命令)

        • 获取数据的间隔(1s/1m)

        • 历史数据保存的时间

        • 趋势数据保存的时间

新建items

1.监控项:服务器启动分区剩余空间

        语法        key        vfs.fs.size[fs,<mode>]

        说明

vfs.fs.size[fs,<mode>]      Calculate disk space for a given volume. Disk space in KB. If mode is missing total is used.  In case of mounted volume, unused disk space for local file system is returned. 

        示例        vfs.fs.size[/,free]

图示

新增模板

添加监控项

 

查看项

新增图形

 

关联主机和模板

 

查看图形

2.监控项:服务器网络接口进出流量

创建监控项

 

创建图形

 查看图形

    

聚合图形

 

 五.zabbix用户自定义监控项

用户自定义key值

注意:mysql安装在被监测主机

测试mysqld询问次数

root@web1 ~]# yum -y install mariadb-server mariadb

root@web1 ~]# systemctl start mariadb

root@web1 ~]# mysqladmin status | awk '{print $6}'

root@web1 ~]# vim /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf

UserParameter=mysql_question,mysqladmin status | awk '{print $6}'

 [root@web1 ~]# zabbix_agentd -t mysql_question

        mysql_question                                [t|494]

[root@web1 ~]# systemctl restart zabbix-agent.service

到网页中添加监控项

六.Zabbix Trigger

触发器用于定义item的报警阈值

1.触发器对象(可以应用给主机,也可应用给模板)

 触发器表达式

        模板:KSY:函数=VALUE

        {<server>:<key>.<function>(<parameter>)}<operation><constant>

2.触发器示例

        A.CPU负载超过0.5

{temp_cloud__why:system.cpu.load[all,avg1].last(#1)}>0.5

触发器

配置监控项

配置触发器

 配置完成后

{temp_cloud__why:system.cpu.load[all,avg1].last(#1)}>0.5

测试

2.流量触发器

七.zabbix ACTION

1.邮箱通知

163授权码        

TMFXCUQVFJLTXQIW

MBEBOMTUSZTPRVOE

 zabbix客户端

测试成功

 添加用户群组

 创建用户及报警类型

 

创建报警动作 

  操作

动作已添加

 制造触发条件

dd if=/dev/zero of=/1.txt bs=1M count=3000

如果无法发送邮件需要配置变量

Trigger: {TRIGGER.NAME}
Trigger status {TRIGGER.STATUS}
1. {ITEM.NAME1}({HOST.NAME1}:{ITEM.KEY1}):{ITEM.VALUE1}

邮件信息

2.微信告警

手机端下载企业微信并注册

在电脑浏览器打开企业微信登录

添加机器人

复制企业ID: ww0cd92dea4a06369a

AgentId        1000002

Secret        rjKdxP304rFk6qnysIwB1Jg6980kTCdynpP8S94n2M0

 

配置Python报警脚本(webserver上192.168.31.163)

# vim /usr/lib/zabbix/alertscripts/wechat.py

self.__corpid =企业微信ID

self.__secret =Secret

agentid  (AgentId        1000002)

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import urllib,urllib2,json
import sys 
reload(sys)
sys.setdefaultencoding( "utf-8" )


class WeChat(object):
        __token_id = ''
        # init attribute
        def __init__(self,url):
                self.__url = url.rstrip('/')
                self.__corpid = 'ww0cd92dea4a06369a'
                self.__secret = 'rjKdxP304rFk6qnysIwB1Jg6980kTCdynpP8S94n2M0'


        # Get TokenID
        def authID(self):
                params = {'corpid':self.__corpid, 'corpsecret':self.__secret}
                data = urllib.urlencode(params)


                content = self.getToken(data)


                try:
                        self.__token_id = content['access_token']
                        # print content['access_token']
                except KeyError:
                        raise KeyError


        # Establish a connection
        def getToken(self,data,url_prefix='/'):
                url = self.__url + url_prefix + 'gettoken?'
                try:
                        response = urllib2.Request(url + data)
                except KeyError:
raise KeyError
                result = urllib2.urlopen(response)
                content = json.loads(result.read())
                return content


        # Get sendmessage url
        def postData(self,data,url_prefix='/'):
                url = self.__url + url_prefix + 'message/send?access_token=%s' % self.__token_id
                request = urllib2.Request(url,data)
                try:
                        result = urllib2.urlopen(request)
                except urllib2.HTTPError as e:
                        if hasattr(e,'reason'):
                                print 'reason',e.reason
                        elif hasattr(e,'code'):
                                print 'code',e.code
                        return 0
                else:
                        content = json.loads(result.read())
                        result.close()
                return content

        # send message
        def sendMessage(self,touser,message):
                self.authID()
                data = json.dumps({
                        'touser':touser,
                        'toparty':1,
                        'msgtype':"text",
                        'agentid':"1000002",
                        'text':{
                                'content':message
                        },
                        'safe':"0"
                },ensure_ascii=False)


                response = self.postData(data)
                 print response

if __name__ == '__main__':
        a = WeChat('https://qyapi.weixin.qq.com/cgi-bin')
        a.sendMessage(sys.argv[1],sys.argv[3])

赋权        # chown zabbix.zabbix /usr/lib/zabbix/alertscripts/wechat.py

                # chmod +x /usr/lib/zabbix/alertscripts/wechat.py

测试        ./wechat.py WangHaoYang test cloud (WangHaoYang 为收件人test是标题,内容为cloud)

在网页zabbix上

{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}

    

  测试

添加报警

 配置动作创建动作

Trigger: {TRIGGER.NAME}
Trigger status {TRIGGER.STATUS}
1. {ITEM.NAME1}({HOST.NAME1}:{ITEM.KEY1}):{ITEM.VALUE1}

 模拟环境

# dd if=/dev/zero of=/1.txt bs=1M count=3000

 3远程执行

当问题发生,可以通过远程执行命令的方式对目标主机进行控制。

 

 

 

开启zabbix远程执行的功能

 # vim /etc/zabbix/zabbix_agentd.conf

 

 # systemctl restart zabbix-agent

开启sudo权限

# visudo   添加上权限

zabbix ALL=NOPASSWD: /usr/bin/systemctl restart httpd

模拟HTTP服务出错

 在机器上关闭HTTP服务,自动解决

八.zabbix内置宏

九.zabbix自动发现

为了满足监控企业成千上万台服务器,因此我们需要使用Zabbix批量监控来实现。自动发现和自动注册。

1、创建自动发现规则

2、创建自动发现动作

 3、在“检测中”->“自动发现”可以查看 已发现的设备

 十.zabbix自动注册

 由客户端主动发起,客户端必须安装并启动Agentd,否则无法被自动注册添加至主机列表。

1.zabbix agent配置

        # vim /etc/zabbix/zabbix_agentd.conf

ServerActive=192.168.31.163                                    主动模式   zabbix-server-ip

# service zabbix-agentd restart

2.zabbix server配置

1、创建自动注册动作

 2、在“配置”->“主机”中查看注册的设备信息

实战案例: 监控 TCP连接 1

1.agent:

        准备自定义key

#       Format: UserParameter=<key>,<shell command>

root@web1 ~]# vim /etc/zabbix/zabbix_agentd.d/tcp_status.conf

UserParameter=tcp.status.listen,ss -an |grep :80 | grep -i 'LISTEN' |wc -l
UserParameter=tcp.status.timewait,ss -an |grep :80 | grep -i 'TIME-WAIT' |wc -l
UserParameter=tcp.status.established,ss -an |grep :80 | grep -i 'ESTAB' |wc -l
UserParameter=tcp.status.syn_recv,ss -an |grep :80 | grep -i 'SYN_RECV' |wc -l
UserParameter=tcp.status.syn_sent,ss -an |grep :80 | grep -i 'SYN_SENT' |wc -l
UserParameter=tcp.status.close,ss -an |grep :80 | grep -i 'CLOSE' |wc -l

2.server:

[root@localhost ~]# zabbix_get -s 192.168.31.164 -k tcp.status.close

0

[root@localhost ~]# zabbix_get -s 192.168.31.164 -k tcp.status.listen

1

实战案例: 监控 TCP连接 2

agent:

        [root@web1 ~]# vim /etc/zabbix/zabbix_agentd.d/tcp_status.conf

        UserParameter=tcp.status[*],ss -an |grep :80 | grep -i "$1" |wc -l

server:

        使用[传参]来调用

        [root@localhost ~]# zabbix_get -s 192.168.100.20 -k tcp.status[TIME-WAIT]

                34

        [root@localhost ~]# zabbix_get -s 192.168.100.20 -k tcp.status[LISTEN]

                1

        [root@localhost ~]# zabbix_get -s 192.168.100.20 -k tcp.status[CLOSE]

                0

实战案例: 监控 TCP连接 3

agent:

1 下载自定义key的包

已上传至阿里云盘

zabbix-example

chmod -R  +x zabbix-example/

chown -R zabbix zabbix-example

2  拷贝命令文件至zabbix目录。

mkdir /etc/zabbix/tcp_connect.status        

cp zabbix-example/tcp_connect_status/tcp_connect_status.sh        /etc/zabbix/tcp_connect.status/

#!/bin/bash
#ESTABLISHED/LISTEN/SYN_SENT/SYN_RECV/FIN_WAIT1/FIN_WAIT2/TIME_WAIT/CLOSE/CLOSE_WAIT/LAST_ACK/LISTEN/CLOSING/ERROR_STATUS

LISTEN() {
	netstat -an |grep ^tcp |grep LISTEN |wc -l
}

ESTABLISHED() {
	netstat -an |grep ^tcp |grep ESTABLISHED |wc -l
}

TIME_WAIT() {
	netstat -an |grep ^tcp |grep TIME_WAIT |wc -l
}

SYN_SENT() {
	netstat -an |grep ^tcp |grep SYN_SENT |wc -l
}

SYN_RECV() {
	netstat -an |grep ^tcp |grep SYN_RECV |wc -l
}

CLOSE() {
	netstat -an |grep ^tcp |grep CLOSE |wc -l
}

$1

3 增加用户自定义KEY

cp zabbix-example/tcp_connect_status/tcp_connect_status           /etc/zabbix/zabbix_agentd.d/tcp_connect_status.conf

4 重启服务

        systemctl restart zabbix-agent.service

server:

使用[传参]来调用

[root@localhost ~]# zabbix_get -s 192.168.100.20 -k tcp.status[TIME-WAIT]

        34

[root@localhost ~]# zabbix_get -s 192.168.100.20 -k tcp.status[LISTEN]

        1

[root@localhost ~]# zabbix_get -s 192.168.100.20 -k tcp.status[CLOSE]

        0

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值