监控系统是运维人员的眼睛,当监控对象发生问题时,监控系统要第一时间发出警报,警报中除了出问题的点,还可以有一些数据和简单的分析,比如当时一段时间的cpu负载等,以帮助接收到报警的人员快速定位问题。
监控系统在自动化运维中占较重的角色。其具体的作用可概括为以下三点:
常见的监控对象:
硬件监控:设备温度,硬盘故障,路由器、交换机(端口、日志),打印机等
PC:鲁大师 服务器:ipmitool
系统监控:cpu,内存,硬盘使用率、硬盘IO、系统负载、进程数等
cpu:lscpu、uptime、top、vmstat
内存:free (-h)
磁盘:df -h
网络监控:端口、url、网络流入流出速率、网络入流量、出流量等
iftop:监控主机间流量 -i 指定网卡
nethogs:监控进程流量
服务监控:apache、nginx、tomcat、TCP连接数等
性能监控:网站性能、服务器性能、数据库性能、存储性能等
日志监控:系统日志、应用程序的访问日志和错误日志、服务的运行日志等(用ELK)
安全监控:用户登录数、password文件变化、本地文件改动等
常见监控系统
zabbbix,nagios,cacti,open-falcon等
zabbbix,nagios,cacti需要php环境支持,其中zabbix和cacti都需要mysql作为数据存储,nagios不用存储历史数据,它注重服务或者监控项的状态;zabbix通过从被监控主机收集数据,从而提供实时监控、异常报警、自动发现、映射和可扩展功能;open-falcon由小米开发的互联网企业级监控产品,用的是golang和python语言。
zabbix是一个非常强大的监控系统,对于一般的小型公司,zabbix自带的监控项(item)足够满足需求,通过简单的配置就可以搭建起一套功能完善的监控系统。对于中大型公司,zabbix可以自定义监控项,自动生成报表,有API和其他系统集成数据库中也有开放的数据可供分析。
Zabbix 主要有两部分构成:zabbix-server、zabbix-agent。一般在被监控的服务器上安装zabbix-agent,zabbix-server会和zabbix-agent进行通讯,获取监控数据,这是zabbix监控的一般模式。zabbix-proxy用来管理其他的agent,作为代理
在客户端如 UNIX, Windows 中安装 Zabbix Agent 之后,可监视 CPU Load、网络使用状况、硬盘容量等各种状态。而就算没有安装 Agent 在监视对象中,Zabbix 也可以经由 SNMP、TCP、ICMP、利用 IPMI、SSH、telnet 对目标进行监视。
1、zabbix支持任何自定义的监控脚本
2、zabbix有模板的功能,可以将一组监控项进行统一操作,这样能够方便快捷的将监控加入到服务器上
3、zabbix的每一个监控项都可以看到其历史,有友好的web界面,实现了数据的可视化
4、zabbix有完善的触发机制,可以做到多个监控项之间的关联报警
5、zabbix的报警方式也可以自定义,可以发邮件、发短信等。报警内容也可以自定义,在报警邮件中加入一些简单的分析,避免了运维人员再次用命令获取
6、zabbix支持RestAPI,几乎所有的操作都可以通过API实现,
7、zabbix的监控数据就在zabbix数据库中,并且数据是开放的,可以方便的进行分析
硬件监控 :Zabbix IPMI Interface
系统监控 :Zabbix Agent Interface
Java 监控:Zabbix JMX Interface
网络设备监抟:Zabbix SNMP Interface
应用服务监控:Zabbix Agent UserParameter
MySQL 数据库监控:percona-monitoring-pldlgins
URL监控:Zabbix Web监控
前期准备:
一台服务端,一台客户端,都用桥接模式,最好手动配置IP地址,客户端的hostname改为本机IP
1、安装zabbix-server
rpm -ivh http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-1.el7.centos.noarch.rpm
yum install -y zabbix-server zabbix-get mariadb-server
rpm -ql zabbix-server-mysql
2、配置数据库
cp /usr/share/doc/zabbix-server-mysql-3.4.14/create.sql.gz /root/Desktop/
gunzip /root/Desktop/create.sql.gz
systemctl enable mariadb.service
systemctl start mariadb.service
mysql -uroot -p #进入数据库
>>create database zabbix charset 'utf8'; #创建zabbix数据库,库名为zabbix
>>grant all on zabbix.* to zabbix@'localhost' identified by '123456'; #给予zabbix库中所有表权限,以zabbix为用户名,登录密码为123456
>>flush privileges;
mysql -uroot -p zabbix < /root/Desktop/create.sql
3、配置zabbix-server
yum install -y zabbix-web zabbix-web-mysql httpd php php-mysql php-mbstring php-gd php-bcmath php-ldap php-xml
vim /etc/zabbix/zabbix-server.conf
ListenPort=10051 侦听端口
SourceIP=本机IP 服务端接口IP
LogType=file 日志记录方式
LogFile=/var/log/zabbix/zabbix_server.log
LogFileSize=50 日志滚动阈值,单位为M
DBHost=localhost zabbix使用的数据库IP,本次使用mariadb与zabbix在同一host,所以就用localhost
DBName=zabbix zabbix数据存放的库名
DBUser=zabbix 访问数据库的用户名
DBPassword=123456 访问数据库的密码
DBPort=3306 数据库侦听端口号
DBSocket=/var/lib/mysql/mysql.sock DB与zabbix在同一host时,数据库本地套接字的文件位置
vim /etc/httpd/conf.d/zabbix.conf 设置时区
20行, php_value date.timezone Asia/Shanghai
systemctl ebable zabbix-server
systemctl start zabbix-server
systemctl start httpd
systemcrl enable httpd
关闭防火墙和selinux
systemctl stop firewalld.service
systemctl disabled firewalld.service
setenforce 0
vim /etc/selinux/config #设置开机关闭selinux
LINUX=disabled
4、配置zabbix客户端(在另一台主机上)
rpm -ivh http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-1.el7.centos.noarch.rpm
yum install -y zabbix-agent zabbix-sender
vim /etc/zabbix/zabbix_agentd.conf
97行, Server=服务机IP
105行,ListenPort=10050
113行,ListenIP=本机IP
138行,ServerActive=服务机IP
149行,Hostname=主机名 #填写hostname,此项需与web端创建主机时的主机名称一致
systemctl enable zabbix-agent.service
systemctl start zabbix-agent.service
到此zabbix的安装和配置就完成了
5、web界面配置
登陆web界面:浏览器输入:服务机IP/zabbix
点击Next step
下面是数据库的配置,根据自己之前的设定填写就好了
一直Next step ,最后点击finish进入登录界面,这里我们输入初始的用户名admin和密码zabbix,点击登录
下图就是zabbix的web界面,可以在右上角用户中设置界面的语言
中文界面出现乱码的问题
1、将Windows “控制面板”——“字体”——“微软雅黑”——“微软雅黑 常规” copy 到/usr/share/zabbix/fonts下,后缀改成ttf
2、vim /usr/share/zabbix/include/defines.inc.php
54行, define('ZBX_GRAPH_FONT_NAME', 'MSYH');
103行, define('ZBX_FONT_NAME', 'MSYH');
3、刷新web界面
如有错误,敬请指正~~