常见开源监控软件
- cacti、nagios、zabbix 前面需要三个PHP支持,用的比较多、smokeping、open-falcon等等
- cacti、smokeping偏向于基础监控,成图非常漂亮
- cacti、nagios、zabbix服务端监控中心,需要php环境支持,其中zabbix和cacti都需要mysql作为数据存储,nagios不用存储历史数据,注重服务或者监控项的状态,zabbix会获取服务或者监控项目的数据,会把数据记录到数据库里,从而可以成图
- open-falcon为小米公司开发,开源后受到诸多大公司和运维工程师的追捧,适合大企业,滴滴、360、新浪微博、京东等大公司在使用这款监控软件,值得研究
开源监控三剑客:nagios、zabbix、open-falcon
- 后续以介绍zabbix为主
Zabbix 是一个基于 Web 界面(需要apache)的提供分布式系统监控,以及网络监控功能的企业级开源
解决方案。Zabbix 是一个高度集成的网络监控套件,通过一个软件包即可提供如下特性。
Ø* 数据收集 (主动/被动)
1) 可用性及性能检测;
2) 支持 SNMP(trapping 及 polling)、IPMI、JMX 监控;
3) 自定义检测;
4) 自定义间隔收集收据;
5) server/proxy(连接外网,相当于一个外网server)/agents。
Ø* 灵活的阈值定义 (超过或低于一个值)
允许灵活地自定义问题阀值,在 Zabbix 中称为触发器(trigger), 存储在后端数据库
中。
Ø *高级告警配置
1) 可以自定义告警升级(escalation)、接收者及告警方式;
2) 告警信息可以配置并允许使用宏(macro)变量;
3) 通过远程命令实行自动化动作(action)。
Ø* 实时绘图
通过内置的绘图方法实现监控数据实时绘图。
Ø *扩展的图形化显示
1) 允许自定义创建多监控项视图;
2) 生成网络拓扑(network maps);
3) 自定义的面板(screen)和 slide shows,并允许在 dashboard 页面显示;
4) 生成监控报告。
Ø* 历史数据存储
1) 数据存储在数据库中;
2) 历史数据可配置;
3) 内置数据清理机制。
Ø* 配置简单
1) 被监控主机通过监控设备方式添加;
2) 一次配置,终生监控(译者注:除非调整或删除);
3) 监控设备允许使用模板来添加监控。
Ø *模板使用
1) 模板中可以添加组监控;
2) 模板允许继承。
Ø *网络自动发现
1) 自动发现网络设备;
2) Agent 自动注册;
3) 自动发现文件系统、网卡设备、SNMP OID 等。
Ø* 快速的 Web 接口
1) Web 前端采用 PHP 编写;
2) 访问无障碍.
Ø* Zabbix API
Zabbix API 提供程序级别的访问接口,第三方程序可以很快接入。
Ø* 权限系统
1) 安全的权限认证;
2) 用户可以限制允许维护的列表。
Ø *全特性、Agent 易扩展
1) 在监控目标上部署;
2) 支持 Linux 及 Windows。
Ø *二进制守护进程
1) C 开发,高性能,低内存消耗;
2) 易移植。
Ø* 具备应对复杂环境情况
通过 Zabbix Proxy(代理server) 可以非常容易的创建远程监控。
1. Zabbix Server (监控服务器)
zabbix_server 是 Zabbix 服务端守护进程。zabbix_agentd、zabbix_proxy 的数据最终
都是提交到 Server。
当然并不是所有数据都主动提交给 zabbix_server,也有的是 Server 主动去取数据。
2. Zabbix Agent (被监控的主机端)
zabbix_agentd 是客户端守护进程,此进程主要用于收集客户端数据,例如 CPU 负载、
内存、硬盘使用情况等。
3. Zabbix Proxy (代理server,中转站,用于跨网段的主机)
zabbix_proxy 是 Zabbix 代理守护进程,功能类似 Server。不同的是,zabbix_proxy
只是一个中转站,它需要把收集到的数据提交/被提交到 Server。
4. Zabbix 整体架构
图 2.1 是 Zabbix 整体架构的示意图。
Zabbix官网: Zabbix :: The Enterprise-Class Open Source Network Monitoring Solution
zabbix 主要由2部分构成 zabbix server和 zabbix agent
zabbix proxy是用来管理其他的agent,作为代理
zabbix监控范畴:
硬件监控 :Zabbix IPMI Interface
系统监控 :Zabbix Agent Interface
Java 监控:ZabbixJMX Interface
网络设备监抟:Zabbix SNMP Interface
应用服务监控:Zabbix Agent UserParameter
MySQL 数据库监控:percona-monitoring-pldlgins
URL监控:Zabbix Web监控
下面进行zabbix安装配置
192.168.80.20 server端
192.168.80.30 agent端
--------RPM安装LAMP----本地仓库-----
[root@ad ~]# yum install -y httpd mariadb-server mariadb php php-mysql php-gd libjpeg* php-ldap php-odbc php-pear php-xml php-xmlrpc php-mhash
[root@ad ~]# vi /etc/httpd/conf/httpd.conf
ServerName www.aa.com
DirectoryIndex index.html index.php //搜索修改这两行
[root@ad ~]# vi /etc/php.ini
date.timezone = PRC //修改php时区为中国
[root@ad ~]# systemctl stop firewalld.service
[root@ad ~]# setenforce 0
[root@ad ~]# systemctl start httpd.service
[root@ad ~]# systemctl start mariadb.service
[root@ad ~]# netstat -anpt | grep 80
[root@ad ~]# netstat -anpt | grep 3306
[root@ad ~]# mysql_secure_installation //初始化数据库
[root@ad ~]# mysql -u root -p
MariaDB [(none)]> CREATE DATABASE zabbix character set utf8 collate utf8_bin;
MariaDB [(none)]> GRANT all ON zabbix.* TO 'zabbix'@'%' IDENTIFIED BY 'admin123';
MariaDB [(none)]> flush privileges; //建立数据库zabbix,并且将所有权限授给zabbix用户
[root@ad ~]# vi /var/www/html/index.php
<?php
$link=mysql_connect('192.168.80.20','zabbix','admin123');
if($link) echo "<h1>Success!!</h1>";
else echo "Fail!!";
mysql_close();
?> //http://192.168.80.20验证php连接数据库是否正常
连接成功LAMP搭建完毕
----------------以下开始部署zabbix Server-------
需要网络环境
[root@ad ~]# vi /etc/yum.repos.d/CentOS-Base.repo //添加阿里云源区域
[Ali]
name=CentOS-$releasever - Base
baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
[root@ad ~]# yum makecache //加载加载元数据缓存
[root@ad ~]# yum install -y php-mbstring php-bcmath //安装php支持zabbix组件
[root@ad ~]# rpm -ivh //会自动生成yum源文件,需保证系统可以上网
若不生成则:
curl -O http://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-2.el7.noarch.rpm
rpm -ivh zabbix-release-4.0-2.el7.noarch.rpm //即可
[root@ad ~]# yum install zabbix-server-mysql zabbix-web-mysql -y //安装zabbix服务端和web页面支持
[root@ad ~]# zcat /usr/share/doc/zabbix-server-mysql-4.0.0/create.sql.gz | mysql -uzabbix -p zabbix -D zabbix(这里的 -D zabbix 参数指定要使用的数据库为 zabbix)
//导入zabbix监控数据库(zabbix用户密码!admin123)(备注zcat命令用来不解压并且直接显示压缩包中的内容)
[root@ad ~]# grep -n '^'[a-Z] /etc/zabbix/zabbix_server.conf //查看zabbix未注释的生效行
[root@ad ~]# vi /etc/zabbix/zabbix_server.conf
38:LogFile=/var/log/zabbix/zabbix_server.log
49:LogFileSize=0
72:PidFile=/var/run/zabbix/zabbix_server.pid
82:SocketDir=/var/run/zabbix
101:DBName=zabbix
117:DBUser=zabbix
125:DBPassword=admin123 //修改此行即可
347:SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
465:Timeout=4
507:AlertScriptsPath=/usr/lib/zabbix/alertscripts
517:ExternalScripts=/usr/lib/zabbix/externalscripts
553:LogSlowQueries=3000
[root@ad ~]# vi /etc/httpd/conf.d/zabbix.conf
php_value date.timezone Asia/Shanghai //修改时区,将此行注释去掉修改即可
[root@ad ~]# vi /usr/share/zabbix/include/defines.inc.php //下面操作是修改图表中文乱码
:%s /graphfont/kaiti/g
从微软系统C:\Windows\Fonts下复制相应的字体文件到 /usr/share/zabbix/fonts 目录中注意字体名称要对应配置文件改为kaiti.ttf,且注意大小写
[root@ad ~]# systemctl enable zabbix-server
[root@ad ~]# systemctl start zabbix-server
[root@ad ~]# netstat -anpt | grep zabbix //监听在10051端口上
[root@ad ~]# systemctl restart httpd.service
http://192.168.80.20/zabbix/ //安装后登录 用户名Admin 密码:zabbix
点Next step安装
登录之后会发现页面是全英文的,下面可以设置一下中文界面
点击update之后点击apply页面就变成中文了
--------------配置agent端30-----------谁需要被监控就需要配置agent端-----------
[root@ae ~]#rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm //生成zabbix的yum仓库,联网状态
[root@ae ~]# yum install -y zabbix-agent
[root@ae ~]# vi /etc/zabbix/zabbix_agentd.conf
[root@ae ~]# grep -n '^'[a-Z] /etc/zabbix/zabbix_agentd.conf
13:PidFile=/var/run/zabbix/zabbix_agentd.pid
32:LogFile=/var/log/zabbix/zabbix_agentd.log
43:LogFileSize=0
98:Server=192.168.80.20
139:ServerActive=192.168.80.20
150:Hostname=ae.com
268:Include=/etc/zabbix/zabbix_agentd.d/*.conf
//修改确认agent端配置文件如上
[root@ae ~]# service firewalld stop
[root@ae ~]# setenforce 0
[root@ae ~]# systemctl enable zabbix-agent.service
[root@ae ~]# systemctl restart zabbix-agent.service
[root@ae ~]# netstat -anpt | grep zabbix //默认监听在10050端口
---------------增加被控主机--在WEB平台上做-----
模板可以根据自己的需求选择,注意要先点上面小的添加,在点下面的添加
等待一段时间会变成这样
触发器表示可以设定阈值进行邮件报警
-------下面可以配置邮件报警---服务器上配置---------
[root@ad ~]# yum install mailx –y
[root@ad ~]# vi /etc/mail.rc //注意网易邮箱需要开启客户端授权码进行第三方登录
set from=f1228308235@163.com
set smtp=smtp.163.com
set smtp-auth-user=f1228308235@163.com
set smtp-auth-password=123456
set smtp-auth=login
[root@ad ~]# echo "ttttttttttt" | mail -s "testmail" f1228308235@163.com //测试发信正常
[root@ad ~]# cd /usr/lib/zabbix/alertscripts
[root@ad alertscripts]# vi mailx.sh //编写发邮件脚本
#!/bin/bash
#send mail
messages=`echo $3 | tr '\r\n' '\n'`
subject=`echo $2 | tr '\r\n' '\n'`
echo "${messages}" | mail -s "${subject}" $1 >>/tmp/mailx.log 2>&1
[root@ad alertscripts]# touch /tmp/mailx.log
[root@ad alertscripts]# chown -R zabbix.zabbix /tmp/mailx.log
[root@ad alertscripts]# chmod +x /usr/lib/zabbix/alertscripts/mailx.sh
[root@ad alertscripts]# chown -R zabbix.zabbix /usr/lib/zabbix/
[root@ad alertscripts]# ./mailx.sh f1228308235@163.com "haha" "huhu" //测试邮件脚本是否能够使用
测试正常,下面去zabbix平台上设置邮箱报警
-----在服务器WEB上配置----
下面的三个参数的意思是发送给谁、主题、内容
报警媒体类型创建完毕,下面可以去设置指定用户接收报警信息的媒体类型和方式
然后点添加---更新
下面需要设置触发器动作
一定记得要点击操作里面的小的添加然后才能点外卖的蓝色背景的添加
下面可以测试邮件报警
可以发现zabbix一直会对agent端有ping测试,ping测试的间隔时间是5m,所以需要等待时间5分钟才可以
我们可以将agent端的网卡down掉 看是否会发送报警邮件过来
[root@ae ~]# ifconfig ens33 down
发现收到了两封报警一封是ssh连接一封是ICMP,邮件报警测试成功