项目实战12.1—企业级监控工具应用实战-zabbix安装与基础操作

无监控,不运维。好了,废话不多说,下面都是干货。

警告:流量党勿入,图片太多!!!

  项目实战系列,总架构图 http://www.cnblogs.com/along21/p/8000812.html

 

实验前准备:

① ntpdate 192.168.30.1 同步时间

② 关闭防火墙、selinux

③ vim /etc/hosts 每个机器都设置hosts,以解析主机名;DNS也行

192.168.30.107    server.along.com
192.168.30.7      node1.along.com
192.168.30.2      node2.along.com
192.168.30.3      node3.along.com zbproxy.along.com

实战一:zabbix的搭建与部署

1、下载安装

(1)下载

① 去官网,下载自己需要的版本https://www.zabbix.com/download

② 包的介绍

zabbix-agent-3.4.4-2.el7.x86_64.rpm    监控(安装在被监控者,当然监控自己也需要监控)

zabbix-get-3.4.4-2.el7.x86_64.rpm    在server端,手工连接agent 获取数据的,做测试的

zabbix-java-gateway-3.4.4-2.el7.x86_64.rpm     基于JAM监控时使用的

proxy 是和代理相关的包:

zabbix-proxy-mysql-3.4.4-2.el7.x86_64.rpm

zabbix-proxy-pgsql-3.4.4-2.el7.x86_64.rpm

zabbix-proxy-sqlite3-3.4.4-2.el7.x86_64.rpm

zabbix-sender-3.4.4-2.el7.x86_64.rpm    安装在agent端,主动监控模式下,向server端发送测试数据使用的

server 取决自己的存储系统选mysql 或 pgsql:

zabbix-server-mysql-3.4.4-2.el7.x86_64.rpm

zabbix-server-pgsql-3.4.4-2.el7.x86_64.rpm

zabbix-web-3.4.4-2.el7.noarch.rpm    web部位,核心包

zabbix-web-japanese-3.4.4-2.el7.noarch.rpm    专用日语的web部位

web要连接mysql 或 pgsql时,需要安装的包:

zabbix-web-mysql-3.4.4-2.el7.noarch.rpm

zabbix-web-pgsql-3.4.4-2.el7.noarch.rpm

zabbix-release-3.4-2.el7.noarch.rpm    zabbix下载的源

  

(2)安装

① 安装官方的源

zabbix-release-3.4-2.el7.noarch.rpm    直接下载源

rpm -ivh zabbix-release-3.4-2.el7.noarch.rpm

yum repolist    可以查看自己的仓库有zabbix源了

声明:我用的是3.2版本的,以下的示范也是3.2版本

② 安装

yum -y install zabbix-agent zabbix-get zabbix-sender zabbix-server-mysql zabbix-web zabbix-web-mysql

2、初始化数据库

(1)vim /etc/my.cnf.d/server.cnf 子配置文件

[server]
skip_name_resolve = on
innodb_file_per_table = on
innodb_buffer_pool_size = 256M   #buffer缓存大小
max_connections = 2000   #最大连接数
log-bin = master-log    #二进制日志

(2)建数据库,授权,刷新权限

MariaDB [(none)]> create database zbxdb character set 'utf8';
MariaDB [(none)]> grant all on zbxdb.* to zbxuser@'192.168.30.%' identified by 'zbxpass';
MariaDB [(none)]> flush privileges;

(3)导入数据

rpm -ql zabbix-server-mysql 下包的时候,带有数据库文件的解压包

cp /usr/share/doc/zabbix-server-mysql-3.4.4/create.sql.gz ./ 考到root下,解压

gzip -d create.sql.gz

mysql -uroot -p zbxdb < create.sql 导入数据

 

(4)可以去数据库查看,数据已经生成

 

3、配置,开启zabbix-server

(1)配置前准备

cd /etc/zabbix/

cp zabbix_server.conf{,.bak} 先备份,养成好习惯

grep -i "^####" zabbix_server.conf 查看有几个配置段

  GENERAL PARAMETERS 一般性配置

  ADVANCED PARAMETERS 高级配置

  LOADABLE MODULES 可加载模块

  TLS-RELATED PARAMETERS 配置加密的东西,如私钥证书等

grep -i "^###" zabbix_server.conf 可以查看一下需要配置的选项

 

(2)配置

vim zabbix_server.conf 修改配置文件

ListenPort=10051    默认端口10051 
SourceIP=      发采用数据请求的端口,可以加多个地址,需要的话自己设置

② 日志的配置

② 数据库的配置
DBHost=192.168.30.107   数据库对外的地址
DBName=zbxdb   数据库中库的名字
DBUser=zbxuser   数据库授权的用户
DBPassword=zbxpass   密码
DBPort=3306   数据库服务端口

(3)开启服务

systemctl start zabbix-server.service

 

4、设置zabbix的web 服务

(1)zabbix 需要开启与web 相连的服务

cd /etc/httpd/conf.d/

vim zabbix.conf 额外为php5 设置了一些参数

# php_value date.timezone Europe/Riga php的时区必须设置,不过有两处可以设置,在php的配置文件中设置,或在这里设置;在这里设置,只对zabbix有效

vim /etc/php.ini 在php的配置文件中设置,代表对所有使用php的都生效,我就在这里设置了

date.timezone = Asia/Shanghai

 

(2)开启

systemctl start httpd

 

5、在web 页面初始化设置

(1)初始化配置

① web登录 http://192.168.30.107/zabbix

② 检查所依赖的配置,如果有fail,需手动修改

③ 设置数据库的连接

④ 可能有多个zabbix服务器,加标识;非必须,可以不填

⑤ 没有问题,就开始安装了

⑥ 完成!!!

 

(2)登录,第一次登录默认账号密码

账号:admin

密码:zabbix

(3)登录进去的仪表盘

 

(4)status of zabbix 仪表盘分析

Zabbix server is running

Yes

192.168.30.107:10051

① Number of hosts (enabled/disabled/templates)

39

0 / 1 / 38

② Number of items (enabled/disabled/not supported)

0

0 / 0 / 0

③ Number of triggers (enabled/disabled [problem/ok])

0

0 / 0 [0 / 0]

④ Number of users (online)

2

2

⑤ Required server performance, new values per second

0

 

① 监控主机:已经启用被监控的主机数量,已经配置好缺被禁止主机数,自带模板数

② 监控项:启用多少指标,禁用多少指标,不支持的指标

③ 触发器数量:启用,禁用,处于有问题的

④ 当前zabbix有几个用户:现在是一个是来宾,一个是管理员

⑤ 重点关注的nvps 每秒的新值(根据我们定义的监控项,每秒采集过来多少新数据,平均值):

 

(5)用户管理设置,有大家最喜欢的汉语

(1)如果英语不好,可以切换为中文,但推荐使用英文,为了更好的讲解,博主使用中文示范

(2)修改密码

 

6、被监控node zabbix的安装配置

(1)在node 机器上安装

yum -y install zabbix-agent zabbix-sender 只需安装这两个包就行

 

(2)配置,和之前一样,先查看一下配置段

① grep -i "^####" zabbix_agentd.conf 先查看一下配置段

GENERAL PARAMETERS 一般配置,有两个子配置段

  Passive checks related   被动接口

  Active checks related   主动接口

ADVANCED PARAMETERS 高级配置

  USER-DEFINED MONITORED PARAMETERS 用户自定义的监控参数(必要,高级的特性)

  LOADABLE MODULES

  TLS-RELATED PARAMETERS

② grep -i "^###" zabbix_agentd.conf 查看选项

 

(3)配置

vim zabbix_agentd.conf

① EnableRemoteCommands=0 是否允许执行远程命令,默认是不允许的,有安全风险

② 指定服务器主机,可以指定多个
Server=192.168.30.107  
③ 自己的今天IP和端口
ListenPort=10050   自己的监听端口
ListenIP=0.0.0.0     允许监听在本机的地址,0.0.0.0 是监听所有
④ agent个数,被监控项有很多时,可以多写几个
StartAgents=3  默认3个,优化时使用
⑤ 主动监控的机器地址是谁
StartAgents=192.168.30.107
⑥ 能被server段解析的主机名,写IP也行
Hostname=node1.along.com
下边都是默认值就好

(4)开启服务

systemctl start zabbix-agent.service

 

7、node1加入到监控中

(1)先添加一个主机群组host groups

添加一个mysrvs 的host groups

(2)创建主机

创建一个属于mysrvs 主机组的node1.along.com 主机,若接口写主机,要开启DNS解析

关于主机加密,在内网中最好不要加密,急耗资源

 

8、对node1主机设置

(1)监控类别 applications应用集

创建3个 CPU Utils 、Memory Stats、Network Interface Stats 的应用集

3个已经生成

 

(2)创建监控项 items

设置名为 rate of interrupt 的监控项 items

备注:

① key键值:內建key 、自定义key;对应的是命令;服务器自动执行key,就相当于采集数据

每一个key 都对应,能在客户端/agent端,执行的命令;该命令能帮我们取回关系型数据

例:system.cpu.intr cpu中断数的key

在命令行 zabbix_get -s 192.168.30.7 -p 10050 -k "system.cpu.intr"

 

② 数据更新间隔:

对于非关键型指标,不要太频繁,使服务器压力很大;推荐5分钟,或以上

为了实验,选择5s;关键型指标,30s(默认的)也很频繁了

 

(3)查看自己设置的监控

查看图形,可以选择不同时间作为坐标轴

 

实战二:zabbix 基础操作

声明:我下边已切换为3.4版本了

1、设置items监控项,采集信息

(1)对node1 添加名为rate of packets(in) 入站包的个数 的items监控项

① key 值选的是: net.if.in[if,<mode>]网络接口上传流量统计;可以加参数

② 点击进程,可以选择更多选项;比3.2不一样的地方

 

③ 查看图形

 

(2)克隆items 监控项

① 设置rate of packets(out) 出站包的个数,因为和in 很相似,可以克隆再设置

② 修改为out,其他都无需修改

 

(3)为了后边的实验,多定义2个items 监控项

① rate of bytes(out) 出站字节数

② rate of bytes(in) 入站字节数

 

2、设置trigger 触发器

(1)介绍

① 界定某特定的item采集到的数据的非合理区间或非合理状态:逻辑表达式

② 逻辑表达式,阈值:通常用于定义数据的不合理区间;

  OK:正常 状态 --> 不满足阈值(不合理区间)为OK

  PROBLEM:非正常状态 --> 满足阈值

③ 触发器存在可调用的函数:(对数据进行评估)

  nodata()没有数据

  last()最近几次的平均值

  date()

  time()

  now()

  dayofmonth()

  ...

注意:常用nodata()、last();能用数值采集的结果保存,就不要用字符串;计算机处理数值要快的多

 

(2)创建trigger 触发器

① 创建

② 设置

表达式可以自己手写;也可以按选择生成

次数count / 时间time 选项:二选一

time 时间

④ 下边的选择根据自己的需求选择,我没有设置

 

(3)查看图形,会发现多了一根警告线

 

3、设置触发器的依赖关系

(1)介绍

① 在一个网络中,主机的可用性之间可能存在依赖关系

  例如,当某网关主机不可用时,其背后的所有主机都将无法正常访问

  如果所有主机都配置了触发器并定义了相关的通知功能,相关人员将会接收到许多告警信息,这既不利于快速定位问题,也会浪费资源

  正确定义的触发器依赖关系可以避免类似情况的发生,它将使用通知机制仅发送最根本问题相关的告警

② 注意:目前zabbix 不能够直接定义主机间的依赖关系,其依赖关系仅能通过触发器来定义

(2)依赖的解释:

被依赖者会报警;依赖者不会报警

分析:监控到交换机故障,网卡和主机上的服务不用报警;

监控到主机上的服务,网卡和交换机不用报警

(3)设置依赖

 

4、设置Media 媒介

(1)Media 的介绍

Media:媒介,告警信息的传递通道;任何用户收到报警信息,都需要有媒介的端口

  类型:下面3个中国都没实现,中国可以实现微信,需要特殊插件

    Email:邮件

    Script:自定义脚本,每一个script都是一个媒介

    SMS:短信,只适用于北美地区

    Jabber:

    Ez Texting:

  接收信息的目标为zabbix用户:

    需要用户上定义对应各种媒介通道的接收方式;

每一类媒介,也能分很多种类型,如下图

系统自带的3中媒介

 

(2)定义一个media ,可以在email 模板上直接修改

在选项中可以设置并发会话

 

(3)用户使用media媒介

① 选择用户中的admin用户

② 添加media 报警媒介,一个用户可以添加多个

为了实验展示,我选择所有等级

 

(4)实现给公司用户发短信的媒介

① 创建一个名为 duanxin 的媒介

设置,关于发短信的脚本,网上有很多,自己找一个使用

② 设置个用户,使用duanxin的媒介

 

(5)互联网中有发微信做媒介的

需先发个公众号,且公众号中所有人都能收到

 

5、设置Actions 动作

(1)设置action 动作的准备

① 准备一个被监控的服务redis

yum -y install redis 下载一个redis 服务做实验

vim /etc/redis.conf 修改配置文件

bind 0.0.0.0 监听本机所有端口

systemctl start redis 开启服务

 

② 因为要执行动作时需远程操作,给admin 用户设置sudo权限

a) visudo 修改sudo的配置

zabbix ALL=(ALL) NOPASSWD: ALL 允许zabbix用户能在所有主机,以所有人的身份执行所有命令

Defaults !visiblepw 默认所有命令要依靠tty执行,先注释掉

 

b) vim zabbix_agentd.conf 设置agent允许执行远程命令

EnableRemoteCommands=1 允许执行远程命令

LogRemoteCommands=1 把远程执行的命令记录在日志中

systemctl restart zabbix-agent.service 重启zabbix-agent服务

 

(2)设置redis 的监控项items

① 监控端口的key

net.tcp.listen[port] 监听本地listen:检查 TCP端口是否处于侦听状态,返回 0 - 未侦听;1 - 正在侦听

net.tcp.port[<ip>,port]:server远程扫描redis服务:检查是否能建立 TCP 连接到指定端口,返回 0 - 不能连接;1 - 可以连接

net.tcp.service[service,<ip>,<port>] 直接指定服务:检查服务是否运行并接受 TCP 连接,返回 0 - 服务关闭;1 - 服务运行

 

(3)设置triggers 触发器

① 设置表达式

 

(4)设置action 动作

a) 创建一个action

 

b) 设置action

① 设置action 的动作

② 设置action 的操作

③ 设置要操作的步骤1:重启redis服务

④ 设置要操作的步骤2:给admin发邮件

⑤ 设置完的action 的操作:共两步

 

c) 设置action 的恢复操作

d) 设置action 成功

 

6、测试动作

(1)手动停掉redis 服务,模拟服务故障

systemctl stop redis

 

(2)可以看到problem 问题已产生

① 问题生成

② 执行动作,10s,第一个action 1 执行成功,problem问题解决

因为第一个action1 执行成功,所以action 2没有执行

③ 恢复操作执行了,zabbix server 收到了mail "Resolved"

 

 

(3)模拟故障,且无法恢复

systemctl stop redis && rpm -e redis 停止服务,且删除redis

① 问题产生

② action 1 无法完成

③ action 2 执行:给admin 发邮件

 

实战三、展示接口的实现

1、Graphs 图形的设置

(1)创建一个图形

设置一个名为interface traffic packets 的图形

图形类别展示:

① normal 正常的

注释:

  工作时间:白色

  非工作时间:黑色

② Stacked 层积的

③ Pie

④ Exploded 爆发式图形

设置完后:加入两个监控项

rate of packets(in)

rate of packets(out)

 

(2)仿照上边的,再创建2个图形

① interface traffic bytes 加入2个监控项

rate of bytes(in)

rate of bytes(out)

redis status 加入一个监控项

redis status

 

2、定义Screens 聚合图形

(1)创建screen 屏幕

 

(2)设置screens

 

3、把graphs 图形加入到screens 屏幕中

(1)编辑上边设置的screens

 

(2)点击更改,把3个graphs 加入进来

① graph加入screen

② 设置

③ 添加成功,在浏览器上可以按F11 ,全屏查看

 

4、多个screens可以做成幻灯片

(1)再设置一个screens

 

(2)设置Slide shows 幻灯片

① 创建一个幻灯片

② 把两个screens 加入到幻灯片设置中

② 播放幻灯片,5s 会切换一次

 

 

5、Maps 拓扑图

Local network 自带的maps 拓扑图;用处不是想象中那么大,就不讲了

 

实战四、Templates 模板和macro 宏

1、Templates 模板

(1)模板介绍:

  主机配置模板:用于链接至目标主机实现快速监控管理;

          link, unlink, unlink and clear

   模板可继承;

   主机link多个模板必须注意,模板们不能含有相同的item key。trigger和graphs中使用的items不能是来自多个模板。

(2)创建template 模板

① 创建

② 设置template 模板

③ complete 模板,应用集application、监控项items、触发器triggers、图形graphs、屏幕screens、自动发现discover rules、web检测web scenarios。

  模板complete 的一系列添加设置,和主机host 几乎一模一样,但是不会直接生效、采集数据;只有链接至主机才能生效、采集数据

  区别:主机接口;complete 没有;host 有

host 有主机接口

complete 没有主机接口

 

④ 导入模板

可以在网上找到很多不错的别人定义的模板,可以直接导入

 

 

⑤ 也可导出自己的模板给其他人使用

 

(3)在hosts 中导入模板complete

① 导入

② 导入成功

 

(4)不想在host主机中使用模板,可以取消链接 或 取消并清除

 

(5)组group 使用模板

如果有很多属于同一组内的主机host,想快速基于某模板监控,组group添加模板

 

(6)模板也可以链接到其他模板

 

2、宏:macro,预设的文本替换模式

(1)介绍

级别:

  全局:Administration --> General --> Macros ,对所有主机、所有模板都有效,优先级很低

  模板:编辑模板 --> Macros ,对所有链接至此模板的主机都有效

  主机:编辑主机 --> Macros ,仅对单个主机有效

类型:

  内建宏:调用 {MACRO_NAME}

  自定义:{$MACRO_NAME} ;命名方式:大写字母、数字和下划线

查询宏的官方文档:

https://www.zabbix.com/documentation/3.4/manual/appendix/macros/supported_by_location

 

(2)设置使用宏

① 还以redis 为例

yum -y install redis

vim /etc/redis.conf

bind 0.0.0.0 #监听本地所有端口

systemctl start redis 开启服务

 

② 定义全局宏

③ 在items 监控项中调用

④ 调用成功

⑤ 设置模板宏

⑥ 定义主机宏

注意:宏的优先级:host 主机宏 > complete 模板宏 > 全局宏

 

下篇zabbix 操作进阶更精彩~~~

原文地址:https://www.cnblogs.com/along21/p/8118609.html