暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

zabbix部署监控集群,自定义监控Flume(图片多,步骤详细)

后来X大数据 2021-07-08
1624

大家好,我是后来,我会分享我在学习和工作中遇到的点滴,希望有机会我的某篇文章能够帮助你解决你遇到的问题,所有的文章都会在公众号首发,欢迎大家关注我的公众号" 后来X ",感谢你的关注。

1、Zabbix的介绍

1.1 Zabbix是干啥的?

Zabbix是一款能够监控各种网络参数以及服务器健康性和完整性的框架。Zabbix使用灵活的通知机制,允许用户为几乎任何事件配置基于邮件短信或者是电话的告警。还可以自定义开发基于公众号提醒等,这样可以快速反馈服务器的问题。基于已存储的数据,Zabbix提供了出色的报告和数据可视化功能。
和zabbix类似的还有小米的开源监控框架open-falcon等,但各有千秋吧,毕竟哪个技术也不是万能的。今天我来复盘一下我在测试集群部署Zabbix的全过程。首先说我的版本号。

框架版本号
zabbix4.2.8
Flume1.9.0
Hadoop3.1.3

1.2 Zabbix 基础架构

在这里插入图片描述

2、开始安装Zabbix

在安装之前我们先做好集群规划,我这里是测试集群,只有3台机器,所以我的规划是这样的。

节点服务
bigdata101zabbix-server、zabbix-agent、MySQL、zabbix-web
bigdata102zabbix-agent
bigdata103zabbix-agent

每个服务的具体功能我们上面也分析了。所以接下来我们开始安装,mysql的安装这里就不写了,可以看我的另一篇安装mysql的帖子,附链接

2.1 101节点安装server/agent

2.1.1 准备工作

  1. List item

确认关闭防火墙(已关闭)

1systemctl stop firewalld.service            #停止firewall
2systemctl disable firewalld.service        #禁止firewall开机启动

  1. 关闭SELinux(这玩意儿就是 Linux 的一个安全子系统,太安全了,我们用起来实在是很麻烦,所以直接关掉),修改配置文件/etc/selinux/config

 1sudo vim /etc/selinux/config
2
3# This file controls the state of SELinux on the system.
4# SELINUX= can take one of these three values:
5#     enforcing - SELinux security policy is enforced.
6#     permissive - SELinux prints warnings instead of enforcing.
7#     disabled - No SELinux policy is loaded.
8SELINUX=disabled
9# SELINUXTYPE= can take one of these two values:
10#     targeted - Targeted processes are protected,
11#     mls - Multi Level Security protection.
12SELINUXTYPE=targeted

  1. 重启服务器

1sudo reboot

2.1.2 101节点Zabbix-server/Zabbix-agent编译及安装

  1. 创建用户

1sudo groupadd --system zabbix
2sudo useradd --system -g zabbix -d /usr/lib/zabbix -s /sbin/nologin -c "Zabbix Monitoring System" zabbix

  1. 上传zabbix安装包并解压,将安装包上传至/opt/software路径并解压到当前路径

1tar -zxvf zabbix-4.2.8.tar.gz

  1. 创建zabbix数据库和表

 1## 1)进入/opt/software/zabbix-4.2.8/database/mysql路径
2cd /opt/software/zabbix-4.2.8/database/mysql
3
4## 2)进入MySQL客户端执行建表语句,并导入zabbix提供的sql脚本
5mysql>
6create database zabbix default character set utf8 collate utf8_bin;
7use zabbix;
8source schema.sql;
9source data.sql;
10source images.sql;

  1. 编译环境准备,建议大家直接复制,不用管centos6或者7,因为我试了把这些rpm包改为了centos7的,结果报错了,改为centos6后可以了,具体原因也没仔细研究。

1sudo rpm -ivh  http://www.city-fan.org/ftp/contrib/yum-repo/rhel6/x86_64/city-fan.org-release-2-1.rhel6.noarch.rpm
2
3sudo yum-config-manager --enable city-fan.org
4
5sudo rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/Packages/l/libnghttp2-1.6.0-1.el6.1.x86_64.rpm
6
7sudo rpm -e --nodeps libxml2-python-2.7.6-21.el6.x86_64
8
9sudo yum install -y libcurl libcurl-devel libxml2 libxml2-devel net-snmp-devel libevent-devel pcre-devel gcc-c++

  1. 编译及安装

1## 1)进入/opt/software/zabbix-4.2.8路径
2cd /opt/software/zabbix-4.2.8
3## 2)编译安装
4./configure --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2

如果顺利编译成功了,执行

1sudo make install

也可以看我的报错有没有你的问题。解决完问题后重新执行编译语句。

注意:编译报错踩坑

1、报错1

如果这时候出现

1Protected multilib versions: libxml2-2.9.10-4.0.cf.rhel7.x86_64 != libxml2-2.9.1-6.el7.4.i686

这种情况是依赖冲突了,所以卸载掉这个关于python的rpm包,路径是系统默认的,不需要改

1./configure --with-libxml2=/usr/local/bin/xml2-config

2、报错2

Centos7 在这一步可能会出现

1configure: error: libcurl library not found

在这里插入图片描述

这个时候,再执行任何yum相关的命令,都不能执行,会报以下异常:


1/lib64/libcurl.so.4: undefined symbol: nghttp2_session_callbacks_set_error_callback

解决办法: 这是因为更新导致的,执行以下命令

1rpm -Uvh https://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/l/libnghttp2-1.31.1-2.el7.x86_64.rpm

如果以上都没问题,那就说明bigdata101节点的服务已经装好了,只需要修改配置就可以了。

  1. 修改配置文件

 11)修改zabbix-server配置文件
2sudo vim /usr/local/etc/zabbix_server.conf
3# 这里设置的是zabbix连接数据库的信息
4DBHost=bigdata101
5DBName=zabbix
6DBUser=root
7DBPassword=123456
8
92)修改zabbix-agent配置文件,这是指定该101节点为server节点
10sudo vim /usr/local/etc/zabbix_agentd.conf
11
12Server=bigdata101
13#ServerActive=127.0.0.1
14#Hostname=Zabbix server

  1. 编写系统服务脚本
    1)编辑zabbix-server文件

1sudo vim /etc/init.d/zabbix-server

2)内容如下

 1#!/bin/sh
2#
3# chkconfig: - 85 15
4# description: Zabbix server daemon
5# config: /usr/local/etc/zabbix_server.conf
6#
7
8### BEGIN INIT INFO
9# Provides: zabbix
10# Required-Start: $local_fs $network
11# Required-Stop: $local_fs $network
12# Default-Start:
13# Default-Stop: 0 1 2 3 4 5 6
14# Short-Description: Start and stop Zabbix server
15# Description: Zabbix server
16### END INIT INFO
17
18# Source function library.
19. /etc/rc.d/init.d/functions
20
21if [ -x /usr/local/sbin/zabbix_server ]; then
22    exec=/usr/local/sbin/zabbix_server
23else
24    exit 5
25fi
26
27prog=zabbix_server
28conf=/usr/local/etc/zabbix_server.conf
29pidfile=/tmp/zabbix_server.pid
30timeout=10
31
32if [ -f /etc/sysconfig/zabbix-server ]; then
33    . /etc/sysconfig/zabbix-server
34fi
35
36lockfile=/var/lock/subsys/zabbix-server
37
38start()
39{
40    echo -n $"Starting Zabbix server: "
41    daemon $exec -c $conf
42    rv=$?
43    echo
44    [ $rv -eq 0 ] && touch $lockfile
45    return $rv
46}
47
48stop()
49{
50    echo -n $"Shutting down Zabbix server: "
51    killproc -p $pidfile -d $timeout $prog
52    rv=$?
53    echo
54    [ $rv -eq 0 ] && rm -f $lockfile
55    return $rv
56}
57
58restart()
59{
60    stop
61    start
62}
63
64case "$1" in
65    start|stop|restart)
66        $1
67        ;;
68    force-reload)
69        restart
70        ;;
71    status)
72        status -p $pidfile $prog
73        ;;
74    try-restart|condrestart)
75        if status $prog >/dev/null ; then
76            restart
77        fi
78        ;;
79    reload)
80        action $"Service ${0##*/} does not support the reload action: " /bin/false
81        exit 3
82        ;;
83    *)
84    echo $"Usage: $0 {start|stop|status|restart|try-restart|force-reload}"
85    exit 2
86    ;;
87esac

3) 加执行权限

1sudo chmod u+x /etc/init.d/zabbix-server

4)编辑zabbix-agent文件

1sudo vim /etc/init.d/zabbix-agent

5)内容如下
-指的是任何状态下都不开机自启 86指的是启动级别,越大越后启动,14是关闭级别,越大越先关闭

 1#!/bin/sh
2#
3# chkconfig: - 86 14
4# description: Zabbix agent daemon
5# processname: zabbix_agentd
6# config: /usr/local/etc/zabbix_agentd.conf
7#
8
9### BEGIN INIT INFO
10# Provides: zabbix-agent
11# Required-Start: $local_fs $network
12# Required-Stop: $local_fs $network
13# Should-Start: zabbix zabbix-proxy
14# Should-Stop: zabbix zabbix-proxy
15# Default-Start:
16# Default-Stop: 0 1 2 3 4 5 6
17# Short-Description: Start and stop Zabbix agent
18# Description: Zabbix agent
19### END INIT INFO
20
21# Source function library.
22. /etc/rc.d/init.d/functions
23
24if [ -x /usr/local/sbin/zabbix_agentd ]; then
25    exec=/usr/local/sbin/zabbix_agentd
26else
27    exit 5
28fi
29
30prog=zabbix_agentd
31conf=/usr/local/etc/zabbix_agentd.conf
32pidfile=/tmp/zabbix_agentd.pid
33timeout=10
34
35if [ -f /etc/sysconfig/zabbix-agent ]; then
36    . /etc/sysconfig/zabbix-agent
37fi
38
39lockfile=/var/lock/subsys/zabbix-agent
40
41start()
42{
43    echo -n $"Starting Zabbix agent: "
44    daemon $exec -c $conf
45    rv=$?
46    echo
47    [ $rv -eq 0 ] && touch $lockfile
48    return $rv
49}
50
51stop()
52{
53    echo -n $"Shutting down Zabbix agent: "
54    killproc -p $pidfile -d $timeout $prog
55    rv=$?
56    echo
57    [ $rv -eq 0 ] && rm -f $lockfile
58    return $rv
59}
60
61restart()
62{
63    stop
64    start
65}
66
67case "$1" in
68    start|stop|restart)
69        $1
70        ;;
71    force-reload)
72        restart
73        ;;
74    status)
75        status -p $pidfile $prog 
76        ;;
77    try-restart|condrestart)
78        if status $prog >/dev/null ; then
79            restart
80        fi
81        ;;
82    reload)
83        action $"Service ${0##*/} does not support the reload action: " /bin/false
84        exit 3
85        ;;
86    *)
87    echo $"Usage: $0 {start|stop|status|restart|try-restart|force-reload}"
88    exit 2
89    ;;
90esac

6)加执行权限

1sudo chmod u+x /etc/init.d/zabbix-agent

2.2 101节点部署Zabbix-web

2.2.1 部署httpd

1)安装httpd

1sudo yum -y install httpd

2)修改httpd配置文件

1sudo vim /etc/httpd/conf/httpd.conf

将以下红色部分放至改配置文件的对应位置

 1131 <Directory "/var/www/html">
2132     #
3133     # Possible values for the Options directive are "None", "All",
4134     # or any combination of:
5135     #   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
6136     #
7137     # Note that "MultiViews" must be named *explicitly* --- "Options All"
8138     # doesn't give it to you.
9139     #
10140     # The Options directive is both complicated and important.  Please see
11141     # http://httpd.apache.org/docs/2.4/mod/core.html#options
12142     # for more information.
13143     #
14144     Options Indexes FollowSymLinks
15145 
16146     #
17147     # AllowOverride controls what directives may be placed in .htaccess files.
18148     # It can be "All", "None", or any combination of the keywords:
19149     #   Options FileInfo AuthConfig Limit
20150     #
21151     AllowOverride None
22152 
23153     #
24154     # Controls who can get stuff from this server.
25155     #
26156     Require all granted
27157 
28158  Order allow,deny
29159     Allow from all
30160      <IfModule mod_php5.c>
31161          php_value max_execution_time 300
32162          php_value memory_limit 128M
33163          php_value post_max_size 16M
34164          php_value upload_max_filesize 2M
35165          php_value max_input_time 300
36166          php_value max_input_vars 10000
37167          php_value always_populate_raw_post_data -1
38168          php_value date.timezone Asia/Shanghai
39169      </IfModule>
40170 </Directory>

3)拷贝zabbix-web的php文件到httpd的指定目录

1sudo mkdir /var/www/html/zabbix
2sudo cp -a /opt/software/zabbix-4.2.8/frontends/php/* /var/www/html/zabbix/

2.2.2 安装php5.6

(centos7 用户也可以直接复制,或者是下载对应的依赖,不过我实测这些用下面的也没问题
1)安装yum源

1wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
2
3wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
4
5sudo rpm -ivh epel-release-6-8.noarch.rpm remi-release-6.rpm

2)激活yum源

1sudo yum-config-manager --enable remi-php56

3)安装php及相关组件

1sudo yum install -y php php-bcmath php-mbstring php-xmlwriter php-xmlreader php-mcrypt php-cli php-gd php-curl php-mysql php-ldap php-zip php-fileinfo

2.3 Zabbix启动

2.3.1 启动Zabbix-Server

1)启动

1sudo systemctl start zabbix-server.service

2)开机自启

1sudo chkconfig --add zabbix-server
2sudo systemctl enable zabbix-server.service

2.3.2 启动Zabbix-Agent

1)启动

1sudo systemctl start zabbix-agent.service

2)开机自启

1sudo chkconfig --add zabbix-agent
2sudo systemctl enable zabbix-agent.service

2.3.3 启动Zabbix-Web(httpd)

1)启动

1sudo systemctl start httpd.service

2)开机自启

1sudo systemctl enable httpd.service

2.4 Zabbix登录

1)浏览器访问http://bigdata101/zabbix

2)检查配置

3)配置数据库

4)配置zabbix-server

5)下载配置文件,并上传至指定路径

6)登录,用户名:Admin,密码zabbix

7)修改页面为中文

到这一步,如果能进入到zabbix,而且能看到下面这个页面,就恭喜你完成了第一步。

在这里插入图片描述

3、其他机器部署agent节点

1) 创建用户

1sudo groupadd --system zabbix
2sudo useradd --system -g zabbix -d /usr/lib/zabbix -s /sbin/nologin -c "Zabbix Monitoring System" zabbix

2) 编译环境准备

1sudo yum -y install gcc-c++ pcre-devel

3) 解压Zabbix安装包
将安装包上传至/opt/software路径并解压到当前路径

1tar -zxvf zabbix-4.2.8.tar.gz

4) 编译及安装
1)进入/opt/software/zabbix-4.2.8路径,执行以下编译安装命令

1./configure --enable-agent
2sudo make install

2)修改zabbix-agent配置文件

1sudo vim /usr/local/etc/zabbix_agentd.conf
2
3LogFile=//zabbix_agentd.log(自己配)
4Server=bigdata101
5#ServerActive=127.0.0.1
6#Hostname=Zabbix server

5) 编辑系统服务脚本
1)编辑zabbix-agent文件

1sudo vim /etc/init.d/zabbix-agent

2)内容如下

 1#!/bin/sh
2#
3# chkconfig: - 86 14
4# description: Zabbix agent daemon
5# processname: zabbix_agentd
6# config: /usr/local/etc/zabbix_agentd.conf
7#
8
9### BEGIN INIT INFO
10# Provides: zabbix-agent
11# Required-Start: $local_fs $network
12# Required-Stop: $local_fs $network
13# Should-Start: zabbix zabbix-proxy
14# Should-Stop: zabbix zabbix-proxy
15# Default-Start:
16# Default-Stop: 0 1 2 3 4 5 6
17# Short-Description: Start and stop Zabbix agent
18# Description: Zabbix agent
19### END INIT INFO
20
21# Source function library.
22. /etc/rc.d/init.d/functions
23
24if [ -x /usr/local/sbin/zabbix_agentd ]; then
25    exec=/usr/local/sbin/zabbix_agentd
26else
27    exit 5
28fi
29
30prog=zabbix_agentd
31conf=/usr/local/etc/zabbix_agentd.conf
32pidfile=/tmp/zabbix_agentd.pid
33timeout=10
34
35if [ -f /etc/sysconfig/zabbix-agent ]; then
36    . /etc/sysconfig/zabbix-agent
37fi
38
39lockfile=/var/lock/subsys/zabbix-agent
40
41start()
42{
43    echo -n $"Starting Zabbix agent: "
44    daemon $exec -c $conf
45    rv=$?
46    echo
47    [ $rv -eq 0 ] && touch $lockfile
48    return $rv
49}
50
51stop()
52{
53    echo -n $"Shutting down Zabbix agent: "
54    killproc -p $pidfile -d $timeout $prog
55    rv=$?
56    echo
57    [ $rv -eq 0 ] && rm -f $lockfile
58    return $rv
59}
60
61restart()
62{
63    stop
64    start
65}
66
67case "$1" in
68    start|stop|restart)
69        $1
70        ;;
71    force-reload)
72        restart
73        ;;
74    status)
75        status -p $pidfile $prog 
76        ;;
77    try-restart|condrestart)
78        if status $prog >/dev/null ; then
79            restart
80        fi
81        ;;
82    reload)
83        action $"Service ${0##*/} does not support the reload action: " /bin/false
84        exit 3
85        ;;
86    *)
87    echo $"Usage: $0 {start|stop|status|restart|try-restart|force-reload}"
88    exit 2
89    ;;
90esac

3)加执行权限

1sudo chmod +x /etc/init.d/zabbix-agent

6) 启动Zabbix-Agent
1)启动

1sudo service zabbix-agent start

2)开机自启

1sudo chkconfig --add zabbix-agent
2sudo chkconfig zabbix-agent on

以上步骤,需要在其他的所有机器上都重复一遍,到此为止,已经把zabbix安装好了,恭喜你

接下来就是配置监控项,让zabbix能够正常监控

4、Zabbix使用

思路:要使用zabbix实现监控,首先要告诉zabbix,
我要监控哪台机器
其次告诉他每台机器需要哪些监控项
最后告诉它如果监控到什么情况就要报警
那么说到报警就提到一个问题,怎么报警,给谁报警
也就是短信或者是邮件的收件人怎么配置,同时发件人是谁,怎么配置?

这些问题我们一个一个来解决,我们这里做2个监控案例,帮助理解zabbix的监控操作过程
1、监控Hadoop中的Data进程,实现报警
2、监控flume进程(自定义监控)

至于zabbix的一些专业术语,大家把语言调成中文自己就懂了。下面来先做一些准备工作。

4.1 使用zabbix监控Hadoop中的DataNode进程

4.1.1 创建Host

1)点击Configuration/Hosts/Create host(原来的这个host可以直接删掉,直接创建新的)

在这里插入图片描述

2)配置Host
在这里插入图片描述

3)查看新增Host

在这里插入图片描述

现在已经有机器了,那么监控什么呢?我们接下来配置监控项。


4.1.2 创建Item

1)点击Items

在这里插入图片描述

2)点击右上角的创建Create item

在这里插入图片描述

3)配置监控项Item
在这里插入图片描述

4)查看创建的Item
在这里插入图片描述

5)查看Item最新数据
在这里插入图片描述

到目前为止,已经实现了监控这个DataNode的进程数量,接下来,我们需要的是,如果这个进程挂掉的话给我报警,那么我们就要设置触发器,以及收件人和发件人。


4.1.3 创建Trigger

1)点击Conguration/Hosts/Triggers

在这里插入图片描述

2)点击Create Trigger
在这里插入图片描述

3)编辑Trigger
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

添加成功就是上面这样
4)测试Trigger
关闭集群中的HDFS,会有如下效果
在这里插入图片描述

那接下来我们来配置报警媒介,也就是收发件人


4.1.4 创建Media type

1)点击右上角的用户

在这里插入图片描述

2)编辑Email
在这里插入图片描述

**加粗样式**

问题来了,我们刚只是配了收件人,那谁来给你发邮件呢?
3)点击Administration/Media types/Email
在这里插入图片描述

在这里插入图片描述

4)测试Email
在这里插入图片描述

现在我们基本都配置好了,还差最后一步,就是需要配置动作,也就是配置发邮件这个动作


4.1.5 创建Action

1)点击Configuration/Actions/Create action

在这里插入图片描述

2)编辑Action
在这里插入图片描述

在这里插入图片描述

接下来还要配置操作,也就是配置邮件内容模板,我们这里都是默认的
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

这个时候就都配置好了。接下来测试一下
3)测试
重新启动HDFS,再关闭HDFS时,即可收到邮件通知
在这里插入图片描述

其实到现在大家已经能够基本了解熟悉zabbix的使用逻辑了,那我们再来使用一下zabbix监控集群资源,毕竟这个是大数据里面必须要做的。

这次我们先创建一个应用集,把所有的监控项加进去,然后为每台机器指定这个应用集,这样的话就不需要我们在每台机器都添加一遍重复的监控项了。

4.2 修改zabbix字体

在这里插入图片描述

在这里插入图片描述

那接下来给大家说怎么修改?


1cd /var/www/html/zabbix/assets/fonts

**加粗样式**

大家去网上下载自己喜欢的字体,要ttf格式,上传到这里,把名字替换为这个


1//举例子
2mv STHUPO.ttf DejaVuSans.ttf

这个时候刷新zabbix页面,就发现有字体显示啦。

4.3 使用zabbix实现自定义监控Flume

这块内容可能写的不是特别特别详细,因为涉及到了flume框架的配置是因人而异的,我只讲一下流程。flume的搭建就不说了,大家先自行百度安装部署,后续的话我可能也会写关于flume的文章。

之前的flume监控,一般都是用的Ganglia,但我们现在已经搭建了Zabbix,自然不希望有2套监控系统,所以我们来用zabbix实现监控Flume

这就体现出有的时候zabbix提供的监控项目,不能满足我们生产环境下的监控需求,此时我们就要按照zabbix的规范自定义监控项目,达到监控的目的

4.3.1 启动一个Flume采集数据到kafka的进程

1nohup /opt/module/apache-flume-1.9.0-bin/bin/flume-ng agent --conf-file /opt/module/apache-flume-1.9.0-bin/job/file-flume-kafka.conf --name a1 -Dflume.monitoring.type=http -Dflume.monitoring.port=11201 -Dflume.root.logger=INFO,LOGFILE >/opt/module/apache-flume-1.9.0-bin/test1 2>&1

注意,这里面的http和监控的端口是新增的,也就是之前启动的时候我们是不需要指定的,现在我们要监控flume,那还是需要通过监控端口来实现。

这个时候,我们

4.3.2 使用jq工具来看一下flume自身的监控项

jq工具需要安装

1# 安装EPEL源:
2yum install epel-release
3
4# 安装完EPEL源后,可以查看下jq包是否存在:
5yum list jq
6
7# 安装jq:
8yum install jq

安装完jq后,使用下面的命令,来查看

 1[later@bigdata101 bin]$ curl 192.168.1.110:11201/metrics | jq
2  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
3                                 Dload  Upload   Total   Spent    Left  Speed
4100  1096    0  1096    0     0   356k      0 --:--:-- --:--:-- --:--:--  356k
5{
6  "CHANNEL.c2": {
7    "KafkaEventGetTimer""0",
8    "ChannelSize""0",
9    "EventTakeAttemptCount""0",
10    "StartTime""1588910637651",
11    "ChannelCapacity""0",
12    "ChannelFillPercentage""1.7976931348623157E308",
13    "KafkaCommitTimer""0",
14    "Type""CHANNEL",
15    "EventTakeSuccessCount""0",
16    "RollbackCount""0",
17    "KafkaEventSendTimer""853",
18    "EventPutAttemptCount""5000",
19    "EventPutSuccessCount""5000",
20    "StopTime""0"
21  },
22  "CHANNEL.c1": {
23    "KafkaEventGetTimer""0",
24    "ChannelSize""0",
25    "EventTakeAttemptCount""0",
26    "StartTime""1588910637652",
27    "ChannelCapacity""0",
28    "ChannelFillPercentage""1.7976931348623157E308",
29    "KafkaCommitTimer""0",
30    "Type""CHANNEL",
31    "EventTakeSuccessCount""0",
32    "RollbackCount""0",
33    "KafkaEventSendTimer""1019",
34    "EventPutAttemptCount""5000",
35    "EventPutSuccessCount""5000",
36    "StopTime""0"
37  },
38  "SOURCE.r1": {
39    "AppendBatchAcceptedCount""55",
40    "GenericProcessingFail""0",
41    "EventAcceptedCount""5276",
42    "AppendReceivedCount""0",
43    "StartTime""1588910637989",
44    "AppendBatchReceivedCount""55",
45    "ChannelWriteFail""0",
46    "EventReceivedCount""5276",
47    "EventReadFail""0",
48    "Type""SOURCE",
49    "AppendAcceptedCount""0",
50    "OpenConnectionCount""0",
51    "StopTime""0"
52  }
53}
54[later@bigdata101 bin]$ 

我们先使用sed工具把这些监控项格式化处理一下

 1[later@bigdata101 bin]$ curl 192.168.1.110:11201/metrics  2>/dev/null |sed  -e 's/\([,]\)\s*/\1\n/g' -e  's/[{}]/\n/g' -e 's/[",]//g'
2
3CHANNEL.c2:
4KafkaEventGetTimer:0
5ChannelSize:0
6EventTakeAttemptCount:0
7StartTime:1588910637651
8ChannelCapacity:0
9ChannelFillPercentage:1.7976931348623157E308
10KafkaCommitTimer:0
11Type:CHANNEL
12EventTakeSuccessCount:0
13RollbackCount:0
14KafkaEventSendTimer:853
15EventPutAttemptCount:5000
16EventPutSuccessCount:5000
17StopTime:0
18
19CHANNEL.c1:
20KafkaEventGetTimer:0
21ChannelSize:0
22EventTakeAttemptCount:0
23StartTime:1588910637652
24ChannelCapacity:0
25ChannelFillPercentage:1.7976931348623157E308
26KafkaCommitTimer:0
27Type:CHANNEL
28EventTakeSuccessCount:0
29RollbackCount:0
30KafkaEventSendTimer:1019
31EventPutAttemptCount:5000
32EventPutSuccessCount:5000
33StopTime:0
34
35SOURCE.r1:
36AppendBatchAcceptedCount:55
37GenericProcessingFail:0
38EventAcceptedCount:5276
39AppendReceivedCount:0
40StartTime:1588910637989
41AppendBatchReceivedCount:55
42ChannelWriteFail:0
43EventReceivedCount:5276
44EventReadFail:0
45Type:SOURCE
46AppendAcceptedCount:0
47OpenConnectionCount:0
48StopTime:0

还可以使用awk获取某个参数的值

1[later@bigdata101 bin]$ curl 192.168.1.110:11201/metrics  2>/dev/null |sed  -e 's/\([,]\)\s*/\1\n/g' -e  's/[{}]/\n/g' -e 's/[",]//g' | grep EventAcceptedCount
2
3EventAcceptedCount:5276

那么这么多监控项,我们到底要监控哪一个呢?这个表格是来源于网上的链接https://www.cnblogs.com/fengzzi/p/10033739.html

source监控项

objectName(会随实际情况而变化)指标项说明
org.apache.flume.source:type=r1OpenConnectionCount目前与客户端或sink保持连接的总数量
org.apache.flume.source:type=r1AppendBatchAcceptedCount成功提交到channel的批次的总数量
org.apache.flume.source:type=r1AppendBatchReceivedCount接收到事件批次的总数量
org.apache.flume.source:type=r1AppendAcceptedCount逐条录入的次数
org.apache.flume.source:type=r1AppendReceivedCount每批只有一个事件的事件总数量
org.apache.flume.source:type=r1EventAcceptedCount成功写出到channel的事件总数量
org.apache.flume.source:type=r1EventReceivedCount目前为止source已经接收到的事件总数量
org.apache.flume.source:type=r1StartTimesource启动时的毫秒值时间
org.apache.flume.source:type=r1StopTimesource停止时的毫秒值时间,为0表示一直在运行

channel监控项

objectName(会随实际情况而变化)指标项说明
org.apache.flume.channel:type=c1EventPutAttemptCountSource尝试写入Channe的事件总次数
org.apache.flume.channel:type=c1EventPutSuccessCount成功写入channel且提交的事件总次数
org.apache.flume.channel:type=c1EventTakeAttemptCountsink尝试从channel拉取事件的总次数。
org.apache.flume.channel:type=c1EventTakeSuccessCountsink成功从channel读取事件的总数量
org.apache.flume.channel:type=c1ChannelSize目前channel中事件的总数量
org.apache.flume.channel:type=c1ChannelCapacitychannel的容量
org.apache.flume.channel:type=c1ChannelFillPercentagechannel已填入的百分比
org.apache.flume.channel:type=c1StartTimechannel启动时的毫秒值时间
org.apache.flume.channel:type=c1StopTimechannel停止时的毫秒值时间,为0表示一直在运行

sink监控项

objectName(会随实际情况而变化)指标项说明
org.apache.flume.sink:type=k1ConnectionCreatedCount创建的连接数量
org.apache.flume.sink:type=k1ConnectionClosedCount关闭的连接数量
org.apache.flume.sink:type=k1ConnectionFailedCount由于错误关闭的连接数量
org.apache.flume.sink:type=k1BatchEmptyCount批量处理event的个数为0的数量-表示source写入数据的速度比sink处理数据的速度慢
org.apache.flume.sink:type=k1BatchUnderflowCount批量处理event的个数小于批处理大小的数量
org.apache.flume.sink:type=k1BatchCompleteCount批量处理event的个数等于批处理大小的数量
org.apache.flume.sink:type=k1EventDrainAttemptCountsink尝试写出到存储的事件总数量
org.apache.flume.sink:type=k1EventDrainSuccessCountsink成功写出到存储的事件总数量
org.apache.flume.sink:type=k1StartTimechannel启动时的毫秒值时间
org.apache.flume.sink:type=k1StopTimechannel停止时的毫秒值时间,为0表示一直在运行

4.3.3 zabbix agent端配置

 1cd /usr/local/etc/zabbix_agentd.conf.d/
2vim flume_monitor.sh 
3
4#!/bin/bash
5
6FLUME_PORT=$1
7METRIC_VALUE=$2
8
9curl 127.0.0.1:"$FLUME_PORT"/metrics 2>/dev/null |sed -e 's/\([,]\)\s*/\1\n/g' -e 's/[{}]/\n/g' -e 's/[",]//g' | grep "$METRIC_VALUE" | awk -F ':' '{print $2}'
10
11chmod u+x flume_monitor.sh //添加执行权限
12
13/usr/local/etc/zabbix_agentd.conf.d/flume_monitor.sh 11201 EventReceivedCount //测试脚本是不是可用

接下来写监控配置

1vim /usr/local/etc/zabbix_agentd.conf
2
3做以下修改
4UnsafeUserParameters=1 # 默认为0,表示不允许自定义key
5# 监控*进程是否存在,[*]是server端传递参数,是服务名称
6UserParameter=FLUME_STATUS[*],/etc/zabbix/zabbix_agentd.d/flume_monitor.sh $1 $2

在这里插入图片描述

4.3.4 重启zabbix agent服务

1systemctl restart zabbix-agent
2systemctl status zabbix-agent

4.3.5 在zabbix server端进行取值

1) 创建模板

在这里插入图片描述

2) 编辑模板
在这里插入图片描述

3) 创建应用集
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

4) 创建监控项
在这里插入图片描述

最后点击添加
在这里插入图片描述

4.3.6 在主机中添加应用集

在这里插入图片描述

选中以后启用
在这里插入图片描述

这个时候大家看下是不是已经监控到你的数据了呢?

在这里插入图片描述

在这里插入图片描述

好了,到此,关于flume的单个服务的监控已经搞定了,剩下的大家举一反三,在监控项表格中,找到自己关心的监控项关键词,然后部署就可以了。

这也是zabbix自定义监控的大致流程。所有的细节不可能全部展现给大家,这也就是需要我们提高自己的学习能力。

如果这篇文章有帮助到你,希望你能不吝啬的点赞、转发、收藏,你的鼓励是我更文最大的动力,关注我的公众号:后来X。


文章转载自后来X大数据,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论