Linux监控平台介绍
常见开源监控软件
cacti、nagios、zabbix、smokeping、open-falcon等等 # cacti、smokeping偏向于基础监控,成图非常漂亮 # cacti、nagios、zabbix服务端监控中心,需要php环境支持. 其中zabbix和cacti都需要mysql作为数据存储, nagios不用存储历史数据,注重服务或者监控项的状态, zabbix会获取服务或者监控项目的数据,会把数据记录到数据库里,从而可以成图 # open-falcon为小米公司开发,开源后受到诸多大公司和运维工程师的追捧,适合大企业, 滴滴、360、新浪微博、京东等大公司在使用这款监控软件,值得研究。
Zabbix监控介绍
Zabbix为 C/S 架构,基于C++开发,监控中心支持web界面配置和管理,单server节点可以支持上万台客户端 # 最新版本3.4,官方文档https://www.zabbix.com/manuals # 5个组件 1:zabbix-server 监控中心,接收客户端上报信息,负责配置、统计、操作数据 2:数据存储 存放数据,比如mysql 3:web界面 也叫web UI,在web界面下操作配置是zabbix简单易用的主要原因 4:zabbix-proxy 可选组件,它可以代替zabbix-server的功能,减轻server的压力 5:zabbix-agent 客户端软件,负责采集各个监控服务或项目的数据,并上报:
安装zabbix
实验环境说明
本实验需要两个虚拟机,一台作为Zabbix监控服务器,一台作为被监控的主机 #服务器与客户端最好关闭防火墙与SELINUX Zabbix服务器: 主机名:zabbix-server IP:10.1.1.30 需要预先安装epel扩展源和mysql服务,当然mysql也可以使用其他的主机上的mysql服务 Zabbix客户端:被监控的主机 主机名:zabbix-agent IP:10.1.1.31
准备安装Zabbix服务器的环境
这里使用yum安装的方式来安装Zabbix服务 # yum源里面的Zabbix服务版本比较老,所以需要先安装Zabbix官方的yum源 # 官网下载地址 www.zabbix.com/download
wget https://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm
rpm -ivh zabbix-release-3.4-2.el7.noarch.rpm #这个需要注意版本号
yum安装Zabbix服务
yum install -y zabbix-agent zabbix-get zabbix-server-mysql zabbix-web zabbix-web-mysql # 这个会自动的安装Httpd服务和PHP服务,并且自动的配置好运行环境
数据库相关设置
Zabbix服务相关设置
启动服务
Windows下用浏览器访问 zabbix-server服务的地址 http://10.1.1.30/zabbix
这里点击Next step会报错:Time zone for PHP is not set (configuration parameter “date.timezone”).
# 需要修改PHP的配置文件,设置时区 # 修改/etc/php.ini 配置文件, 找到 ;data.timezone = 修改为 data.timezone = Asia/Shanghai # 注意需要去掉开头的分号 ;
然后重启httpd服务,刷新浏览器的页面
可以看到全部条件都为OK的状态。
然后点击Next step,设置数据库信息
Database type # 保持默认的 MySQL
Database host # 填写mysql服务器的地址
Database port # 0就表示默认的mysql端口3306,如果数据库自定义了其他端口需要填写具体的端口号
Database name # 填写前面在mysql里面创建的库名zabbix
User # 填写在前面mysql里面创建的zabbix用户
Password # 填写创建zabbix用户时设定的密码
点击Next step 设置zabbix服务的相关信息
Host和Port保持默认即可,Name可以随意定义:
再次点击Next Step,可以检查刚才所填写的信息是否有问题,如果没问题直接点Next step即可。
成功安装了Zabbix 前端
然后点击Finish就会跳转到登录界面,输入默认的账号:Admin 密码:zabbix 即可登录
登陆后的界面
登录后的第一件事是修改Admin账号的密码
依次点击页面上的Administration>Users>Admin
再点击页面中Password后面的Change password ,然后填入新的密码,需要填写两次相同的密码,
还可以在此页面修改webUI显示的语言,将Language 改为 Chinese (zh_CN) 就可以显示中文了
修改完点击下方的UPdate,然后刷新一下就可以看到中文的页面了,同时密码也更改了
忘记Admin密码如何做
添加监控的主机
安装zabbix-agent服务
安装
zabbix-agent安装好之后还需要修改配置文件:
启动zabbix-agent服务
systemctl start zabbix-agent
systemctl enable zabbix-agent
添加主机
添加主机前需要创建一个主机组
添加主机:
点击web界面的 配置 > 主机 > 创建主机
添加自定义模板
模板概述:
在Zabbix-server中有许多自带的监控模板,也可以我们自己添加自定义的模板
模板是一些配置的集合,它可以应用在多个主机上,便于配置管理。
一个模板中包含以下的配置:
应用集
监控项
触发器
图形
聚合图形:
自动发现:
web监测
使用链接自带模板的方式添加自定义模板:
依次点击web界面的 配置 > 模板 > 创建模板
然后填写模板名,和可见名, 群组需要选择Templates,设置好这些就可以点击添加了
刚创建的模板里面是空的,模板的监控项可以从其他模板复制过来,在模板列表里找到 Template OS Linux,点击它的监控项
然后勾选需要复制到新模板的监控项,再点击复制
目标类型:选择模板,群组:Templates,目标:勾选test_template,
然后再点击复制,完城后web页面会出现 监控项复制 的提示
找到先前创建的模板,就可以看到模板下已经有监控项了
但是自动发现规则并不能使用这种复制的方式。因为它没有复制的选项
这样的话还可以将相关的模板导出成xml的配置文件, 进行修改之后再导入到新模板中
但是这种方式相对比较复杂,
还有另外一种方式,链接到指定的模板,然后删除用不到的配置。
1:进入先前创建的模板,点击链接的模板
2:点击链接指示器后面的选择,勾选 Template OS Linux ,然后点击最下面的选择
3:点击链接指示器下面的添加,点击添加后,Template OS Linux 会出现在链接的模板那个框里
4:点击更新,完成后就可以看到模板中应用集,监控项等都有配置了
5:还需要修改一下链接模板的配置,进入链接模板的页面,点解取消链接,不要点到链接并清理
这一步是为了能修改和删除这个模板中的东西,
如果不取消链接,就不能在这个模板中修改和删除东西,只能去源模板里面操作。
如上如,点击取消链接,可以保留所有的配置,如果点击取消链接并清理就会删除链接创建的配置。
点击取消链接后,记得点更新,
然后就可以删除test-template这个模板中我们用不上的监控项。
如下图勾选上用不到的监控项,然后点击删除就OK了
(注:如果报错Error in query [INSERT INTO…. 需要重新创建zabbix库,在创建库的时候指定字符集为utf8)
然后还可以删除应用集中没有监控项的应用集
然后将前面添加的主机 zabbix-agent-01 添加到这个模板中
进入test_template模板,在主机/模板区块中添加zabbix-agent-01这台主机
处理图形中的乱码
问题描述
进入test_template的图形的页面,任意点击一个图形的名称,然后点击预览,
可以看到预览图形的下方有一些不明所以的小方块
这是因为我们使用了中文的web页面,但是图形所使用的字库只是一个英文字库,所以才显示为小方块。
需要将图形使用的字库更换为中文字库,才能解决这个问题
更换字库
检查是否更换成功
重新打开一个图形预览页面,可以看到中文已经正常显示了。
自动发现
更改自动发现规则的更新时间
默认的自动发现规则更新时间为1个小时,为了更块看到效果,可以将更新时间更改为30s
点击test_template模板的自动发现
然后点击 Network interface discovery这个自动发现规则。
将更新时间的 1h 更改为 30s 然后点击更新
然后等待30秒后,图形中就会出现一个新的图形,这个就是监控网卡流量的图形
在zabbix-agent主机上下载一个大一点的文件(比如mysql的二进制包),来查看这个图形的效果
添加自定义监控项目
需求:监控某台主机的tcp状态处于TIME_WAIT连接数,并出图
解决方案:
1:客户端相关配置
2:服务端相关配置
3:在Zabbix 监控中心 web 页面添加监控项目
然后填写相关信息,
名称随便定义,
类型保持默认,
键值填写 my.estab.count 需要与客户端配置文件中定义的UserParameter相同
其他的保持默认即可,配置完点击添加就好。
然后依次点击 监测中 > 最新数据 , 用过滤筛选出刚才添加的监控项看看是否有数据
如果有数据,就可以建立图形了。
依次点击 配置 > 模板 > test_template模板的图形 > 创建图形
然后填入图形的名称,再点击最下面的监控项的添加,添加刚才创建的TCP_TIME_WAIT监控项
其他保持默认,绘图风格和颜色,可以根据自己的喜好进行修改。配置完点击最下面的添加按钮。
配置完成就可以在 监测中 > 图形 查看到这个图形了(注意需要在红框中进行筛选才能看到)
主动模式和被动模式
定义主动模式或被动模式
在webUI中一次点击 配置 > 模板或者主机 > 监控项 > 监控项的名称,然后会加载类似下图的页面,
图里面的红框中 Zabbix 客户端表示被动模式, Zabbix 客户端(主动式)就表示主动模式 。
配置邮件告警
准备邮箱
# 如果使用163或者QQ邮箱发告警邮件
# 首先需要登录你的163或者QQ邮箱,到设置里面开启POP3、IMAP、SMTP服务
# 开启并记录授权码
监控中心设置邮件告警
依次点击 管理 > 报警媒介类型 > 创建媒体类型
然后填写相关信息:
名称(自定义),类型选择脚本,后面会在主机上编写一个发邮件的脚本
依次添加三个脚本参数,需要注意顺序 {ALERT.SENDTO} ,{ALERT.SUBJECT},{ALERT.MESSAGE}
然后点击添加按钮
编写邮件发送脚本
接下来还需要在主机上编写一个发邮件的python脚本
写入脚本的内容如下,需要根据自己的情况进行修改:
给脚本执行权限 bash
[root@zabbix-server dejavu]# chmod 755 chmod 755 /usr/lib/zabbix/alertscripts/mail.py
测试脚本能否发邮箱[root@zabbix-server dejavu]# python /usr/lib/zabbix/alertscripts/mail.py [email protected] 'testmail' 'this is a test mail'
检查邮箱是否有收到邮件,如果可以收到邮件,表示脚本已经没问题了。
创建一个接受告警邮件的用户
依次点击 管理 > 用户 > 创建用户 先填写一些用户的基本信息
然后点击 报警媒介,添加一条报警媒介,类型选择“Baojing”
还需要注意用户的权限,如果没有需要到用户组去设置权限
用户群组中点击 Zabbix administrators ,然后点权限,再点击下面图中的选择按钮,
然后在弹出的窗口中勾选所有的主机群组,再点击选择,
还需要选中读写的权限。然后点击添加,不点击添加不会生效。
点击添加后
再点击上图的更新,然后查看sendmail用户的权限
设置动作
动作是在触发报警条件以后执行的一些操作。
依次点击 配置 > 动作 > 创建动作
名称写“sendmail”(自定义),添加两个条件如图
“操作”页面,标题默认,消息内容如下:
点击操作框的 ’新的‘ 创建具体操作,创建完点操作细节框最下面的添加,才表示创建完毕
测试告警
给主机zabbix-agent-01创建一个触发器
依次点击 配置 > 主机 > zabbix-agent-01的触发器 > 创建触发器
然后填写信息,名称随意,严重性:未分类
添加表达式,监控项选择先前添加的 TCP_TIME_WAIT ,
功能选择 最新的值 < N
最后一个(T) 就保持为 时间
间隔 30s , N值,这里因为我的TCP_TIME_WAIT的值一直是小于20的 所有将N值设置为25就很容易就报警了
设置完成点插入按钮
然后其他的选项保持默认就好,然后点击最下面的添加按钮完成创建触发器
接下来稍等一会就可以在仪表盘中的问题栏看见问题
出现问题发送的邮件成功,然后修改触发器将T值改为大于N
问题恢复的邮件也发送成功,
最后确认了问题已恢复,确认问题恢复的邮件也发送成功
发送失败的那个是我在动作的配置中有问题,不应该添加发送消息给用户群组,后面修改了就没有问题了。
扩展阅读
zabbix监控tomcat(版本有点老,大家只需要参考步骤,不能照搬)