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、创建一个主机组


11月20日 Zabbix 监控系统 1_第1张图片
image.png

3、创建要监控的主机


11月20日 Zabbix 监控系统 1_第2张图片
image.png

4、添加要监控的项,点击config--->hosts--->item
11月20日 Zabbix 监控系统 1_第3张图片
image.png

5、添加触发器
11月20日 Zabbix 监控系统 1_第4张图片
image.png

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


11月20日 Zabbix 监控系统 1_第5张图片
image.png

11月20日 Zabbix 监控系统 1_第6张图片
image.png

第二种:通过脚本发送短信或者微信
11月20日 Zabbix 监控系统 1_第7张图片
image.png

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

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


11月20日 Zabbix 监控系统 1_第10张图片
image.png

11月20日 Zabbix 监控系统 1_第11张图片
image.png

11月20日 Zabbix 监控系统 1_第12张图片
image.png

11月20日 Zabbix 监控系统 1_第13张图片
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
就是将多个监控项整合到一幅图里


11月20日 Zabbix 监控系统 1_第14张图片
image.png

image.png

11月20日 Zabbix 监控系统 1_第15张图片
image.png

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


11月20日 Zabbix 监控系统 1_第16张图片
image.png

2、定义screen
屏幕是在graph的基础上创建的,多个graph合成一个屏幕
11月20日 Zabbix 监控系统 1_第17张图片
image.png

image.png

11月20日 Zabbix 监控系统 1_第18张图片
image.png

11月20日 Zabbix 监控系统 1_第19张图片
image.png

image.png

点击change添加即可
11月20日 Zabbix 监控系统 1_第20张图片
image.png

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


image.png

image.png

5、创建和使用模板

11月20日 Zabbix 监控系统 1_第21张图片
image.png

11月20日 Zabbix 监控系统 1_第22张图片
image.png

如何链接模板只主机


11月20日 Zabbix 监控系统 1_第23张图片
image.png

11月20日 Zabbix 监控系统 1_第24张图片
image.png

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


11月20日 Zabbix 监控系统 1_第25张图片
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}
命名方式:大写字母、数字和下划线;
如何自定义宏
自定义全局宏:对所有主机都有效

11月20日 Zabbix 监控系统 1_第26张图片
image.png

11月20日 Zabbix 监控系统 1_第27张图片
image.png

自定义模板宏,只对链接到此模板的主机有效
11月20日 Zabbix 监控系统 1_第28张图片
image.png

自定义主机宏,只对当前主机有效
11月20日 Zabbix 监控系统 1_第29张图片
image.png

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

你可能感兴趣的:(11月20日 Zabbix 监控系统 1)