zabbix监控快速搭建--云平台技术栈

在公司搭建系统级别的监控,由于ELK对流量监控存在局限——现有的工具只记录了累计的流量,而无法计算每时每刻的流量。所以决定最后用zabbix来对网络做监控和报警,下面会从零开始记录zabbix搭建过程中的所有步骤,希望可以给你带来帮助。

安装前准备工作

安装必要的软件,禁用SELINUX,安装必备软件

$ sudo setenforce 0

$ sudo sed -i"s/SELINUX=enforcing/SELINUX=disabled/g"/etc/selinux/config

$ sudo rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

$ sudo yum install epel-release.noarch wget vim gcc gcc-c++ lsof chrony tree nmap unzip rsync -y

$ sudo rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7

LAMP环境搭建

安装

$ sudo yuminstall-y httpd mariadb mariadb-servermariadb-clientphp php-mysql

启动mysql,设置开机启动,修改mysql密码,注意下面的yourpassword要替换为你自己的密码

$ sudo systemctl start mariadb.service

$sudo systemctlenablemariadb.service#设置开机启动 

$ sudo mysqladmin -u root -p password yourpassword

安装zabbix服务

$ sudo rpm -ivhhttp://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm

$ sudo rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX

$ sudo yum install -y zabbix-server-mysql zabbix-web-mysql zabbix-get zabbix-agent

创建zabbix数据库

$ mysql -uroot -p

MariaDB [(none)]> CREATE DATABASE zabbixDEFAULTCHARACTER SET utf8 COLLATE utf8_bin;

MariaDB [(none)]> quit

导入数据

$cd/usr/share/doc/zabbix-server-mysql-3.0.11/

$ zcat create.sql.gz | mysql -uroot -p zabbix

修改zabbix配置

注意:下面的yourpasswd请替换为你自己的数据库密码

$ sudo vim /etc/zabbix/zabbix_server.conf

DBHost=localhost

DBName=zabbix

DBUser=root

DBPassword=yourpasswd

修改时区

sudovim /etc/httpd/conf.d/zabbix.conf

php_value date.timezone Asia/Chongqing

修改zabbix登录密码(可选)

-bash-4.2$ mysql -uroot -p

Enter password:

Welcome to the MariaDB monitor.  Commandsendwith; or g.

Your MariaDB connection id is 326

Server version: 5.5.56-MariaDB MariaDB Server

Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or 'h' for help.Type'c'toclearthecurrentinputstatement.

MariaDB [(none)]>usezabbix

Readingtableinformationforcompletionoftableandcolumnnames

You can turnoffthis featuretogeta quickerstartupwith-A

Databasechanged

MariaDB [zabbix]>selectuserid,alias,name, passwdfromusers;

+--------+-------+--------+----------------------------------+

| userid | alias | name   | passwd                           |

+--------+-------+--------+----------------------------------+

|      1 | Admin | Zabbix | 5fce1b3e34b520afeffb37ce08c7cd66 |

|      2 | guest |        | d41d8cd98f00b204e9800998ecf8427e |

+--------+-------+--------+----------------------------------+

2 rows inset(0.00sec)

MariaDB [zabbix]>updateuserssetpasswd=md5('newpassword')whereuserid='1';

Query OK, 1 row affected (0.00 sec)

Rows matched: 1  Changed: 1  Warnings: 0

启动

$ sudo systemctlstarthttpd

$ sudo systemctlstartzabbix-server

$ sudo systemctlstartzabbix-agent

设置开机启动

$sudo systemctlenablehttpd

$sudo systemctlenablezabbix-server

$sudo systemctlenablezabbix-agent

通过http://hostname/zabbix访问zabbix的安装页面,填写安装信息,完成安装。完成安装后,初始登录账户密码为Admin/zabbix。

安装zabbix-agent

zabbix-server安装好了,下面需要“接入”其他机器,将它们纳入到zabbix-server的管理,下面是安装步骤

$ sudo rpm -ivhhttp://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm

$ sudo yum install -y zabbix-agent

配置zabbix-agent

$ grep -Ev"^$|#"/etc/zabbix/zabbix_agentd.conf

# zabbix-server

Server=192.168.8.4

# 这里选择主动连接zabbix-server的方式

ServerActive=192.168.8.4

# 本机的hostname

Hostname=192.168.8.5

启动zabbix-agent

$ sudo systemctl start zabbix-agent.service

$sudo systemctlenablezabbix-agent.service

下面在zabbix-server页面上添加这个机器

按下图填写即可

接着绑定模板

最后点击Update,你就可以在Host目录中看到所有被监控的机器列表

注意:如果zabbix-agent需要被其他机器调用,例如通过zabbix_get获得监控信息,需要在防火墙设置“放开10050端口”

监控网络流量

假设我们要监控机器192.168.8.5网卡em1上的出入口流量,我们可以先在zabbix服务器上用zabbix_get命令来测试一下,下面代码测试的是输入流量,注意这里的输出是一个累积的流量

监控网络流量的流程为:

1、创建模板

2、创建监控项

创建应用:Configuration->Templates->Create application

创建监控项:Configuration->Templates->network traffic on em1->Items->Create Item

上图是入口流量的监控项设置,出口流量监控项network traffic out em1可以一样设置,成功后你看到的是

3、创建Triggers

Triggers是触发报警的设置,同样我们点击Configuration->Templates->network traffic on em1->Triggers->Create trigger来创建Triggers

注意在设置Expression时,我们可以利用zabbix提供给我们的模板

于是,入口流量的触发值就设置好了,每秒流量超过1048576时就会触发报警,同理我们可以设置出口流量的触发值,成功后,我们看到的是

4、创建Graphs

接着,我们再来创建Graphs,Graphs可以以图形化的方式展示流量信息,点击Configuration->Templates->network traffic on em1->Graphs->Create graph,创建Graphs的最大好处是我们可以把这些Graphs组合起来形成Screens监控面板,例如下面这样

下面是创建Graphs的表单

5、绑定Template

至此,我们模板就创建完毕了,最后一步需要把主机和模板关联起来,点击Configuration->Hosts->Templates->Select创建关联,然后点击Add

此时,通过Monitoring->Latest data可以看到网卡上的最新数据,同时可以通过Monitoring->Graphs来查看图形化的数据

自定义script报警

当系统出现异常时,我们需要立即发现,并通过邮件或App的方式通知给维护的同学,这样整个系统才会掌控在我们手中,Zabbix要做到这一点,需要配置以下3个选项(zabbix虽然很强大,但配置和UI有点繁琐,这是我不喜欢它的地方):

1、Media types

2、Events

3、User Media

Media types

Media types是当产生事件时,以什么方式进行通知,这里采用的是Script方式,这种方式的灵活性最大,通过这种方式,我们可以把报警发送到任何支持Webhook的App上,例如钉钉

Script这种方式的原理是:我们把可执行的脚本放在zabbix的指定目录下,当事件发生时,zabbix会自动调用该脚本,可以在/etc/zabbix/zabbix_server.conf中找到指定目录的路径

AlertScriptsPath=/usr/lib/zabbix/alertscripts

Media types设置如下,意思是在/usr/lib/zabbix/alertscripts下存在一个脚本dingding.py,当事件发生时,zabbix会调用该脚本,同时会传入该脚本3个参数,这3个参数分别是事件的接收人、事件的主题、事件的内容

dingding.py这个脚本如下,我们先实现一个简单的版本,也就是把这3个参数输出到日志中

#!/usr/bin/python

import logging, sys

if__name__=="__main__":

logger = logging.getLogger()

handler = logging.FileHandler("/var/log/zabbix/dingding_alert.log")

formatter = logging.Formatter('%(asctime)s %(name)-s %(levelname)-s %(message)s')

handler.setFormatter(formatter)

logger.addHandler(handler)

logger.setLevel(logging.DEBUG)

iflen(sys.argv) ==4:

send_to = sys.argv[1]

subject = sys.argv[2]

content = sys.argv[3]

logger.debug("send_to: %s"% send_to)

logger.debug("subject: %s"% subject)

logger.debug("content: %s"% content)

else:

logger.error("usage: ./dingding.py $send_to $subject $content")

设置脚本的权限

$ sudochownzabbix.zabbix dingding.py

$ sudochmod+xdingding.py

Events

事件是当某个条件发生时,zabbix所创建的报警对象。在zabbix中,事件发生时和事件恢复时都可以触发事件,下面我们来创建一个事件,

可以看到,这里的事件主题和事件消息都是系统默认生成的,其中包括时间产生时的必要信息,同时我把允许事件恢复时通知(Recovery message)打了勾,Conditions标签页的内容保持不变,然后我们再来修改Operations标签里的内容

这里的意思是:事件的持续时间是1个小时(3600s),每隔2分钟(120s)产生一个事件,一共产生10个事件,产生事件时,发送给Zabbix administrators用户组中的Admin用户,最后事件会使用我们刚刚创建的dingding这种Media type

User Meida

事件和Media type创建好后,下面还需要把它们和指定用户关联起来,点击Administration->Users->Media->Add,修改后,点击Update

通过以上步骤,我们已经把zabbix的监控和报警建立起来了,并实操创建了网卡的流量监控,现在我们把网络流量的阈值调到小,故意制造一个超出流量的事故,看一下报警是否生效,我们预期是发送10个报警,发送完毕后,我们再把阈值调到正常,看下是否会收到恢复消息。还记得之前写的那个脚本吗,它会把报警内容输出到日志文件中,现在我们检查下日志文件

很显然,结果符合我们的预期。



了解更多技术,欢迎关注下方公众号

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,716评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,558评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,431评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,127评论 0 209
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,511评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,692评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,915评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,664评论 0 202
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,412评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,616评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,105评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,424评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,098评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,096评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,869评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,748评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,641评论 2 271

推荐阅读更多精彩内容