11月20日 Zabbix 监控系统 1

1、Zabbix简介

  • 监控数据采集通道
    SNMP:Simple Network Management Protocol
    ssh/telnet
    IPMI
    agent:master/agent
    JMX:Java Management eXtens
  • zabbix程序的组件:
    zabbix_server:服务端守护进程(server是监控端);
    zabbix_agent:agent守护进程(agent是被监控端);
    zabbix_proxy:代理服务器,可选组件;
    zabbix_get:命令行工具,手动测试向agent发起数据采集请求;
    zabbix_sender:命令行工具,运行于agent端,手动向server端发送数据,称为主动模式,sever端向agent端发起数据请求称为被动模式。
    zabbix_java_gateway: java网关;
    zabbix_database:MySQL或PostgreSQL;
    zabbix_web:Web GUI用于配置Zabbix的管理页面
  • zabbix逻辑组件:
    主机组
    主机
    监控项(item)
    key:实现获取监控的目标上的数据的命令或脚本的名称;
zabbix_get -s 172.18.21.7 -p 10050 -k "system.cpu.intr"  
server端通过key也就是一个命令的名称或者脚本的名称手动获取agent端的数据

应用(application):同一类监控项的集合;
触发器(trigger):表达式;PROBLEM, OK;
事件(event):
动作(action):由条件(condition)和操作(operation)组件;
媒介(media):发送通知的通道;
通知(notification):
远程命令(remote command):
聚合计算:将监控采集到的数据进行最大值、最小值、平均值等计算
报警升级():
模板(template):快速定义被监控主机的各监控项的预设项目集合;
图形(graph):用于展示历史数据或趋势数据的图像;
屏幕(screen):由多个graph组成;

2、Zabbix的安装

将server和agent主机的yum仓库的路径指向Zabbix的官方网站:http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/
安装环境,这里为了方便将数据库服务器、web服务器和Zabbix安装到同一台主机上,生产中最好分开

环境准备:同步所有主机的时间,设置主机名并修改/etc/hosts文件,保证所有主机能互相解析主机名
1、在server端安装数据库,并配置、启动
vim /etc/my.cnf.d/server.cnf 
[server]
skip_name_resolve = on
innodb_file_per_table = on
max_connections = 20000
innodb_buffer_pool_size = 256M
log_bin = bin-log
systemctl start mariadb
mysql_secure_installation   ---数据库初始化,删除匿名账号登录等
MariaDB [(none)]> create database zbxdb character set 'utf8';   ---创建一个zabbix存数据的数据库
MariaDB [(none)]> grant all on zbxdb.* to zbxuser@'172.18.21.107' identified by 'centos';  ---授权的一个用户可以连接到这个数据库
2、在server端安装Zabbix组件
[root@node1 network-scripts]#yum list all |grep -i zabbix    ---可以查看一下都有哪些包
[root@node1 network-scripts]#yum install zabbix-agent zabbix-get zabbix-sender zabbix-server-mysql zabbix-web zabbix-web-mysql     ---这里Zabbix要自己监控自己,所以也安装了zabbix-agent和zabbix-sender,注意安装的时候epel源仓库要好的,因为会安装依赖的包在epel源里
3、在数据库中创建表
[root@node1 network-scripts]#rpm -ql zabbix-server-mysql   ---查看生产的文件,可以看到有如下一个脚本文件
/usr/share/doc/zabbix-server-mysql-3.4.4/create.sql.gz   ---此文件用于生成数据库的表
[root@node1 network-scripts]#cd /usr/share/doc/zabbix-server-mysql-3.4.4/
[root@node1 zabbix-server-mysql-3.4.4]#zcat create.sql.gz > create.sql     ---解压文件
[root@node1 zabbix-server-mysql-3.4.4]#head -n 20 create.sql   ---查看一下这个文件可以看到里面是创建表的操作
[root@node1 zabbix-server-mysql-3.4.4]#mysql -uzbxuser -pcentos -h172.18.21.107 zbxdb < create.sql
mysql -uzbxuser -pcentos -h172.18.21.107 zbxdb   ---后面加数据库名可以直接进入此数据库,不用登陆后use方式切换
MariaDB [zbxdb]> show tables;   ---可以看到生成了很多表
4、修改Zabbix的配置文件,并启动服务
[root@node1 zabbix-server-mysql-3.4.4]#vim /etc/zabbix/zabbix_server.conf
ListenPort=10051   ---主动模式下server端监听的端口
SourceIP=172.18.21.107    ---采集数据时使用的ip地址
LogFileSize=1   ---日志是否滚动,1表示滚动
DBHost=172.18.21.107
DBName=zbxdb
DBUser=zbxuser
DBPassword=centos
[root@node1 zabbix]#systemctl start zabbix-server   ---启动服务,注意要先启动数据库服务器,再启动zabbix
5、修改时间,启动httpd服务
[root@node1 zabbix]#vim /etc/php.ini 
date.timezone = Asia/Shanghai   ---设置时区
也可以修改这个文件中的时区/etc/httpd/conf.d/zabbix.conf---不过这个文件中的时区只对zabbix这个web网站有效
[root@node1 zabbix]#systemctl start httpd
6、访问zabbix网站进行安装zabbix
http://172.18.21.107/zabbix/setup.php
安装完成后需要登录默认的管理账号:用户名:admin,密码:zabbix
登录后先修改用户名和密码保证安全
7、在agent端安装如下软件包
[root@node3 ~]#yum install zabbix-agent zabbix-sender
[root@node3 ~]#vim /etc/zabbix/zabbix_agentd.conf   ---修改agent的配置文件
LogFileSize=1   ---滚动日志
EnableRemoteCommands=1   ---允许server端在agent端远程执行命令,执行命令的时候是在agent端执行的
LogRemoteCommands=1   ---远程执行命令的时候记录日志
Server=172.18.21.107   ---被动模式下允许哪个server过来采集数据
ListenPort=10050    ---被动模式下监听的端口  
ListenIP=0.0.0.0     ---被动模式下监听的ip,0.0.0.0表示本地的所有ip
StartAgents=3   ---启动的进程数,用于监听端口,等待server端连接后采取数据
ServerActive=172.18.21.107     ---主动模式下将数据发送给哪个server主机
Hostname=node3.magedu.com    ---自己的主机名,主动模式下要告诉server端主机的主机名,不然server端不知道这是谁的数据
[root@node3 ~]#systemctl start zabbix-agent   ---启动agent服务

总结:要布置好一个监控系统,在server端要准备好Zabbix服务、数据库服务、web服务,在agent端要准备好Zabbix-agent服务,如果server端要自己监控自己,也要准备好Zabbix-agent服务。

3、实现监控一个主机的redis服务,并实现报警和自动恢复功能

1、在agent端安装好redis服务,并启动
2、创建一个主机组


image.png

3、创建要监控的主机


image.png

4、添加要监控的项,点击config--->hosts--->item
image.png

5、添加触发器
image.png

6、定义媒介,也就是报警信息的传递通道
有两种方式:
第一种发邮件


image.png

image.png

第二种:通过脚本发送短信或者微信
image.png

定义此种媒介的时候要在配置文件中定义脚本的路径
vim /etc/zabbix/zabbix_server.conf
AlertScriptsPath=/usr/lib/zabbix/alertscripts ---网上有很多发短信的脚本,只要把脚本放到此路径下就可以了,但要申请短信网关
7、给监控系统的管理用户添加定义的媒介,这样报警的时候就会通过这个媒介发给用户
image.png
image.png

同样的script媒介也这样添加给用户
8、添加actions
actions包括conditions和operations
conditions:多个条件之间存在逻辑关系
operations:条件满足时触发的操作


image.png

image.png

image.png

image.png

9、在agent端修改sudo的配置文件
[root@node3 ~]#visudo ---修改sudo的配置文件
Defaults:zabbix !requiretty ---因为server端控制agent端以zabbix用户执行命令时是以守护进程的方式执行的,以守护进程的方式执行时不在任何终端上,但sudo在某个tty终端上才能执行,所以要在sudo的配置文件中定义zabbix用户执行sudo命令时不需要在终端上进行
zabbix ALL=(ALL) NOPASSWD:ALL ---授权zabbix用户在所有主机代表所有用户执行所有操作,并且不用输入密码
10、测试
停止redis服务,发现报警后过一会就会恢复,因为执行了第一步重启操作,恢复后在sever端可以收到发给root的邮件。

4、展示接口

graph: simple, custom
screen:把多个graph整合于同一屏幕进行展示;
slide show:把多个screen以slide show的方式进行展示
1、定义graph
就是将多个监控项整合到一幅图里


image.png

image.png

image.png

可以定义多幅图
定义后怎么看graph


image.png

2、定义screen
屏幕是在graph的基础上创建的,多个graph合成一个屏幕
image.png

image.png

image.png

image.png

image.png

点击change添加即可
image.png

3、定义slide show
也就是定义幻灯片


image.png

image.png

5、创建和使用模板

image.png

image.png

如何链接模板只主机


image.png

image.png

也可以将模板链接到其他模板


image.png

6、宏(macro)

宏也就是变量,定义后在任何位置都可以引用这些变量,比如在创建action的operations时就调用了很多内建的宏来定义报警后发送的邮件的标题和内容
级别:
全局宏:Administration --> General --> Macros ,对全局都有效,但优先级低,作用范围广
模板宏:编辑模板 --> Macros,对链接到此模板的所有主机都有效,优先级比全局宏要高
主机宏:编辑主机 --> Macros ,只对单个主机有效
类型:
内建:{MACRO_NAME},两边不能有空格
文档: https://www.zabbix.com/documentation/3.4/manual/appendix/macros/supported_by_location
自定义:{$MACRO_NAME}
命名方式:大写字母、数字和下划线;
如何自定义宏
自定义全局宏:对所有主机都有效

image.png

image.png

自定义模板宏,只对链接到此模板的主机有效
image.png

自定义主机宏,只对当前主机有效
image.png

将变量改为6380后发现为down状态了
在redis配置文件中将端口改为6380并重启服务后发现监控的结果又变回up状态了
说明全局宏的作用范围虽然很大,但优先级最低,定义了主机宏后,全局宏就不起作用了。

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

推荐阅读更多精彩内容

  • Zabbix简介 Zabbix官方网站Zabbix中文文档 本文系统环境是CentOS7x86_64, Zabbi...
    Zhang21阅读 7,968评论 0 37
  • zabbix server: 负责接收agent发送的报告信息的核心组件,所有配置、统计数据及操作数据均由其组织进...
    uangianlap阅读 3,169评论 2 3
  • 本文遵循「知识共享许可协议 CC-BY-NC-SA 4.0 International」,未经作者(laiwei)...
    laiwei阅读 13,119评论 7 18
  • 一、准备搭建环境 1.系统:CentOS 7.3 2.软件:Zabbix 3.2 二、安装前的准备 最小化安装Ce...
    尘世不扰阅读 4,133评论 8 31
  • 相记,记不真切 相忘,忘不彻底 时常回想,最终伤了自己。 往事如风,清烟般淡去。年华似水,滑过不留痕迹。属于我们的...
    黎小晓阅读 422评论 0 5