监控概述
对于监控系统在企业架构中不是新的技术,但却是必不可少的重要组成部分,所谓无监控,不运维!
监控系统可以帮助运维、开发、测试等人员及时的发现服务器出现的故障,并及时的发送告警通知。
对于监控软件所应该具备的功能如下:
-
指标数据采集(抓取)
-
指标数据存储
-
指标数据可视化
-
故障告警功能
监控对象介绍
系统层监控
系统监控:CPU利用率、内存利用率、磁盘IO速度、进程数量、内核完整性等…
网络监控:网络设备进出口流量、工作负载、网络延迟、丢包率等…
服务软件监控
消息中间件:kafka、RocketMQ、RabbitMQ等…
Web服务容器:Nginx、Tomcat、httpd、docker、kubernetes等…
数据库及缓存系统:MySQL、PostgreSQL、MongoDB、Redis、ElasticSearch等…
存储系统:Ceph
业务层监控
例如电商网站销售量、转化率等
业务接口:登录数、注册数、订单量、支付数量等
Linux系统常用监控命令
以下命令是对系统的CPU、内存、硬盘、网络进行监控的命令
free #查看内存利用率
df #查看正在使用分区利用率
top # 查看系统健康状态(类似windows的任务管理器)
htop #与top相同,查看系统健康状态(系统不自带,在epel源提供)
uptime #查看cpu利用率
iftop #用于显示本机网络流量情况及相互通信的流量集合(默认系统不自带,需安装主包:iftop,依 赖包:flex byacc libpcap ncurses ncurses-devel libpcap-devel )
iostat # iostat是I/O statistics(输入/输出统计)的缩写,iostat工具将对系统的磁盘操作活动进行监 视 (默认系统不自带,需安装:sysstat)
iotop #与iostat类似, 用来监视磁盘I/O使用状况(默认系统不自带,需安装:iotop)
vmstat # 是Virtual Meomory Statistics(虚拟内存统计)的缩写,可对操作系统的虚拟内存、进程、 CPU活动进行监控 (默认系统不自带,需安装:sysstat)
netstat/ss # 用于显示各种网络相关信息,如网络连接,路由表,接口状态连接等
nethogs # 用来按进程或程序实时统计网络带宽使用率(默认系统不自带,epel源安装:nethogs)
ipmi #用于对服务器硬件进行监控(默认系统不自带,需安装:ipmitool)
常用的监控软件介绍
-
Nagios:本身只能做实时的数据监控,无法实现数据的持久化保存,致命缺点无法查询历史数据
-
Cacti:最初应用在机房做流量方面的监控,致命缺点没有故障告警功能
-
Ganglia:跟Cactii类似,致命缺点没有故障告警功能
-
Open-Falcon:小米公司开源的一款监控软件,目前还是比较冷门,很多中间件不支持监控(例如:httpd、Tomcat)
-
Zabbix:2012年诞生的一款分布式监控系统,功能完善(例如:数据存储、数据可视化、故障告警等)目前主要应用在传统的物理服务器、虚拟机、路由交换领域的监控
-
Promethues:2016年崛起的一款监控系统,功能完善(例如:数据存储、数据可视化、故障告警等)目前主要应用在容器领域的监控系统
付费的监控软件:
监控宝:https://www.jiankongbao.com/
博瑞:https://www.bonree.com/
Zabbix介绍
Zabbix 是C语言编写的企业级开源免费的分布式监控解决方案,可监控网络的众多参数以及服务器、虚拟机、应用程序、服务、数据库、网站、云等的健康状况和完整性。
Zabbix 使用灵活的报警通知机制,允许用户为几乎任何事件配置基于电子邮件的警报。这允许对服务器问题做出快速反应。
Zabbix 可通过存储的数据提供出色的报告和数据可视化功能。
官网地址:https://www.zabbix.com/
Zabbix的版本介绍
- zabbix稳定版:LTS代表稳定版,官方提供技术支持时间长达5年时间(免费)
- zabbix标准版:不带LTS标签,官方提供技术支持时间7个月(免费)
Zabbix组件
zabbix agent:指标采集器,在被监控主机上采集指标数据,并将采集到的数据发送给zabbix server
zabbix server:负责接收agent发送的数据,统计数据、管理数据
zabbix database:用于存储所有zabbix的配置信息以及监控数据
zabbix web:管理员通过web界面管理、配置以及查看相关监控信息
zabbix-proxy:分布式监控,用来分担zabbix server的压力(不是必须)
Zabbix5.0安装步骤
主机名 | IP地址 | 操作系统 | 角色 | 硬件环境 |
---|---|---|---|---|
zbx-server | 自定义 | CentOS 7.6 | 监控主机 | 2C/4G |
zbx-node01 | 自定义 | CentOS 7.6 | 被控主机 | 2C/4G |
平台选择
配置zabbix的仓库
提示:zbx-server主机操作
#安装zabbix5.0存储库(二进制安装方式)
rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
#安装zabbix软件包
yum install zabbix-server-mysql zabbix-agent -y
#下载CentOS的SCL仓库(提供zabbix前端所需的一些的软件包)
yum -y install centos-release-scl
#启用zabbix前端仓库
vim /etc/yum.repos.d/zabbix.repo
...
[zabbix-frontend]
name=Zabbix Official Repository frontend - $basearch
baseurl=https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/5.0/rhel/7/$basearch/frontend
enabled=1 --启用仓库
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
#安装Zabbix前端软件包
yum install zabbix-web-mysql-scl zabbix-apache-conf-scl -y
#zabbix-web-mysql-scl 用于连接数据库
#zabbix-apache-conf-scl 用于连接apache
#安装数据库软件(官方文档并没有提供安装数据库的部分)
yum -y install mariadb-server
#启动数据库服务并设置随机自启
systemctl start mariadb && systemctl enable mariadb
#进入数据库
mysql
#创建存储监控数据的库,并支持中文(库名:zabbix)
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
#创建连接数据库的用户,并设置密码(用户名:zabbix)
MariaDB [(none)]> create user zabbix@localhost identified by '123456';
#数据库及用户授权
MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost;
#在Zabbix服务器主机上,导入初始架构和数据。系统将提示您输入新创建的密码
zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
Enter password: 123456 --输入zabbix用户密码
#为Zabbix服务器配置连接数据库
vim /etc/zabbix/zabbix_server.conf
...
100 DBName=zabbix #数据库名称(存储数据的仓库)
116 DBUser=zabbix #连接数据库的用户(给zabbix程序用的一个身份)
124 DBPassword=123456 --设置zabbix用户密码
#为PHP配置正确的时区
vim /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
...在文件的最后一行,删除注释,并改为正确的时区
php_value[date.timezone] = Asia/Shanghai --亚洲/上海
#启动所有服务并设置服务随机自启
systemctl restart zabbix-server zabbix-agent httpd rh-php72-php-fpm
systemctl enable zabbix-server zabbix-agent httpd rh-php72-php-fpm
Zabbix服务参数介绍
zabbix-server 端口:10051
zabbix-agent 端口:10050
zabbix server主配置文件:/etc/zabbix/zabbix_server.conf
zabbix agent主配置文件:/etc/zabbix/zabbix_agentd.conf
zabbix企业微信报警脚本路径:/usr/lib/zabbix/alertscripts
zabbix自定义监控项路径:/etc/zabbix/zabbix_agentd.d
zabbix日志文件路径:/var/log/zabbix/
登录ZABBIX WEB
从浏览器上访问Zabbix前端URL:http://server_ip/zabbix
环境检查
请确保这里的Check of pre-requisites必须全部项目OK后才能继续配置,如有提示fail,去server上检查是否安装这个包或配置是否按上述更改。
配置数据库连接
输入连接数据库所需的详细信息,Zabbix数据库必须先建立好。
Zabbix server服务器详情
请输入Zabbix服务器详情,可选的输入Zabbix服务器的名字,然而如果输入并提交了, Zabbix服务器的名字将会显示在菜单和页面的标题。
安装前总结回顾所有配置
完成安装
Zabbix前端已经安装完成! 超级用户名是 Admin, 密码 zabbix
为了防止暴力破解和词典攻击,如果发生连续五次尝试登陆失败,Zabbix接口将暂停30秒。
在下次成功登陆后,将会在界面上显示登录尝试失败的IP地址。
Web界面概览
侧边栏的垂直菜单可访问Zabbix前端各个部分。 菜单默认使用深蓝主题。
菜单可以整个折叠或隐藏:
-
折叠, 单击Zabbix logo旁边的
-
隐藏, 单击Zabbix logo旁边的
修改界面语言
左下角的用户基本资料 |
---|
修改Admin密码
密码没有长度与复杂度要求,按照具体情况设置即可。
创建组
zabbix并没有为单独用户设置主机管理权限,所有的权限都通过组进行统一分配,当用户加入到对应的组后,将权限分配到对应的组中即可继承组权限。
管理→用户群组→创建用户群组 |
---|
增加用户
除了Admin超级管理员以外,还可以创建普通用户给公司其他员工使用。
管理(Administration) → 用户(Users)→创建用户(Create user)并指定群组 |
---|
可以使用新用户登录验证。
添加监控主机
Zabbix对于主机的监控非常灵活,它可以是物理服务器、网络交换机、虚拟机、应用等。
提前准备好一台Linux主机,并安装zabbix-agent客户端程序。
#下载zabbix官方仓库
rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
#安装zabbix agent
yum list zabbix-agent
#查询软件包安装到系统中文件
rpm -ql zabbix-agent
...
/etc/zabbix/zabbix_agentd.conf
#修改agent配置文件,定义zabbix server的地址
vim /etc/zabbix/zabbix_agentd.conf
...
117 Server=192.168.0.14 --指定zabbix server地址(谁可以监控我)
#启动服务并设置服务随机自启
systemctl start zabbix-agent && systemctl enable zabbix-agent
回到Zabbix server 的web界面,通过 配置(Configuration) → 主机(Hosts)→ 创建主机(Create host)以添加新的主机。
查看主机
检测→主机 |
---|
灰色 表示主机状态尚未建立,尚未发生监控指标检查
表示主机可用,监控指标检查已成功
表示主机不可用,监控指标检查失败(将鼠标光标移动到图标上以查看错误消息)。可能是由于接口凭证不正确造成了通信问题。检查zabbix server是否正在运行,并稍后尝试刷新页面