监控概述
-
对服务的管理,不能仅限于可用性。
-
还需要服务可以安全、稳定、高效地运行。
-
监控的目的:早发现、早治疗。
-
被监控的资源类型:
-
公开数据:对外开放的,不需要认证即可获取的数据
-
私有数据:对外不开放,需要认证、权限才能获得的数据
-
uptime可以查看系统已经运行了多久。最后的3个数字分别是CPU最近1分钟、5分钟、15分钟的平均负载。平均负载的值,不应该大于总核心数。
[root@myhost ~]# uptime
09:28:25 up 53 days, 27 min, 0 users, load average: 0.09, 0.08, 0.03
free -h 主要用于查看内存
total 总内存 available 可用内存
swapon -s # 查看swap空间
df -h # 查看硬盘使用情况
ping -c2 www.baidu.com # 发2个包,测试网络
zabbix
实施监控的几个方面:
数据采集:使用agent(可安装软件的系统上)、SNMP(简单网络管理协议,用于网络设备的数据采集)
数据存储:使用mysql数据库
数据展示:通过web页面
zabbix通过在远程主机上安装agent进行数据采集,存储到mysql数据库,通过web页面进行展示。
安装zabbix 6.0 安装说明:https://www.zabbix.com/download?zabbix=6.0\&os_distribution=rocky_linux\&os_version=8\&components=server_frontend_agent\&db=mysql\&ws=nginx 中文手册:https://www.zabbix.com/documentation/6.0/zh
在zabbix上创建连接数据库的用户
[root@zabbixserver ~]# mysql mysql> create database zabbix character set utf8mb4 collate utf8mb4_bin; # 在binlog日志开启的情况下,打开函数生成器 mysql> set global log_bin_trust_function_creators = 1; mysql> create user zabbix@localhost identified by 'zabbix'; mysql> grant all privileges on zabbix.* to zabbix@localhost; mysql> quit; 验证数据库配置,如果登陆不到数据库表示上一步配置不正确 [root@zabbixserver ~]# mysql -uzabbix -pzabbix -hlocalhost zabbix # 9. 在数据库中创建表并导入数据 [root@zabbixserver ~]# cp /usr/share/zabbix-sql-scripts/mysql/server.sql.gz . [root@zabbixserver ~]# gzip -d server.sql.gz [root@zabbixserver ~]# mysql -uzabbix -pzabbix zabbix < server.sql # 10. 配置zabbix_server [root@zabbixserver ~]# vim +129 /etc/zabbix/zabbix_server.conf DBPassword=zabbix # 11. 配置zabbix_agent [root@zabbixserver ~]# vim /etc/zabbix/zabbix_agentd.conf 182 Hostname=zabbixserver # 12. 配置nginx展示zabbix [root@zabbixserver ~]# vim /etc/nginx/conf.d/zabbix.conf # 打开第2、3行的注释,结果如下所示: server { listen 8080; server_name example.com; ...以下省略... 启动相关服务 [root@pubserver zabbix]# vim 04-start-zabbix.yml --- - name: config zabbix hosts: zabbix tasks: - name: start service # 循环启动多个服务 service: name: "{{item}}" state: started enabled: yes loop: - zabbix-server - zabbix-agent - nginx - php-fpm ansible-playbook 04-start-zabbix.yml
虚拟主机分类 基于IP或基于端口号或基于名称
空闲值 最小值 平均值 最大值
访问zabbixserver的8080端口,进行初始化:
这里的用户名Admin,A是大写的!密码是小写的zabbix
此时zabbix已经开始在监控自己了,查看默认监控配置
1.配置zabbix监控web1服务器
安装agent
- [root@pubserver zabbix]# vim 05-inst-agent.yml
- name: install agent
hosts: webservers
tasks:
- name: install agent # 安装agent
yum:
name: zabbix-agent
state: present
[root@pubserver zabbix]# ansible-playbook 05-inst-agent.yml
2. 修改web1配置文件
[root@web1 ~]# vim /etc/zabbix/zabbix_agentd.conf
117 Server=127.0.0.1,192.168.88.5
182 Hostname=web1
3. 起动服务
[root@pubserver zabbix]# vim 06-start-agent.yml
- name: config agent
hosts: web1
tasks:
- name: start agent # 启动服务
service:
name: zabbix-agent
state: started
enabled: yes
[root@pubserver zabbix]# ansible-playbook 06-start-agent.yml
在web页面中添加对web1的监控
主机:安装了agent,被监控的主机
主机组:根据需求,将多台主机加入到一个主机组中,方便管理。系统默认已经创建了一些主机组。
模板:是监控项的集合。将模板应用到主机,主机就可以直接拥有模板中的所有监控项。系统中默认已经创建了一些模板。
常用监控指标
-
Space utilization:以百分比显示的磁盘利用率
-
Used space:已用磁盘空间
-
Available memory:可用内存
-
CPU idle time:CPU空闲时间。不宜过低。
-
Load average (1m avg)、Load average (5m avg)、Load average (15m avg):CPU1分钟、5分钟、15分钟的平均负载。这个值不应长期大于核心数。
-
Interface eth0: Bits received:网卡接收到的数据量 数据需要除以8 换算成比特而不是字节
-
Interface eth0: Bits sent:网卡发送的数据量
-
Number of processes:系统运行的进程数
-
Number of logged in users:已登陆的用户数
未启用爆红错误的话 检查服务是否开启 是否10050端口存在
也有可能存在权限问题 查看主机IP地址是否错误 配置文件错误
vim /etc/zabbix/zabbix_agentd.conf 117行写错
自定义监控项
实现监控web1用户数量的监控项
在被控端创建key。被控端被监控的内容叫作key,可以理解为它就是一个变量名,具体的名字自己决定。
在web页面中创建监控项。监控项对应key值。
包含 》对应》 模板》 监控项 》 key
在被控端创建key
创建key的语法
UserParameter=自定义key值,命令
命令的执行结果,是key的value
创建自定义配置文件。文件名自定义。
[root@web1 ~]# vim /etc/zabbix/zabbix_agentd.d/usercnt.conf
UserParameter=usercnt,sed -n '$=' /etc/passwd
[root@web1 ~]# systemctl restart zabbix-agent.service
验证自定义监控项
- 安装zabbix-get
[root@zabbixserver ~]# yum install -y zabbix-get
[root@web1 ~]# yum install -y zabbix-get
- 获取监控项的值
[root@web1 ~]# zabbix_get -s 127.0.0.1 -k usercnt
[root@zabbixserver ~]# zabbix_get -s 192.168.88.100 -k usercnt
创建模板
你都知道有哪些命令可以监控服务器的各种状态?
参考答案(注意:有些命令需要额外安装):
可以使用以下命令监控服务器的各种状态:
top:查看系统整体的 CPU、内存、进程等信息。
htop:类似于 top,但是界面更加美观,而且支持鼠标操作。
free:查看内存的使用情况。
df:查看磁盘的使用情况。
du:查看指定目录的磁盘使用情况。
iostat:查看磁盘 I/O 的情况。
vmstat:查看虚拟内存的情况。
sar:查看 CPU、内存、磁盘、网络等信息,可以设置输出时间间隔。
netstat:查看网络连接情况。
ss:查看网络连接情况,比 netstat 更快速、更详细。
iftop:查看网络流量情况。
tcpdump:抓包工具,可以查看网络数据包的内容。
ping:测试网络连通性。
traceroute:追踪数据包在网络中的路径。
telnet:测试端口是否开放。
curl:测试 Web 服务是否正常。
wget:下载文件,测试网络带宽。
nload:查看网络流量情况,类似于 iftop。
iptraf:查看网络流量情况,支持多种协议。
nethogs:查看进程的网络流量情况。
iftop:查看网络流量情况。
tcpdump:抓包工具,可以查看网络数据包的内容。
ping:测试网络连通性。
traceroute:追踪数据包在网络中的路径。
telnet:测试端口是否开放。
curl:测试 Web 服务是否正常。
简要说明一下如何在Rocky 8系统上安装zabbix 6.0?
参考答案:
系统yum没有提供zabbix安装包,需要先准备zabbix的yum源
安装软件包,包括:zabbix-server-mysql、zabbix-web-mysql、zabbix-nginx-conf、zabbix-sql-scripts、zabbix-selinux-policy、zabbix-agent、mysql-server
启动mysqld服务
在mysql服务器上创建数据库以及访问数据库的用户
导入zabbix提供的sql文件到上一步建立的数据中
配置zabbix server端(改配置文件)
配置zabbix agent端(改配置文件)
配置nginx展示zabbix(改配置文件)
启动相关服务,包括:zabbix-server、zabbix-agent、nginx、php-fpm
访问zabbixserver的8080端口,进行初始化
zabbix常用的监控指标有哪些?
CPU 使用率:监控服务器的 CPU 利用率,以评估服务器的负载和性能。
内存使用率:监控服务器的内存使用情况,包括物理内存、交换内存和缓存的使用情况。
磁盘空间使用率:监控服务器和存储设备的磁盘空间使用情况,以避免磁盘空间不足的问题。
网络带宽使用情况:监控网络接口的网络带宽使用情况,包括入带宽和出带宽的使用情况。
网络设备状态和流量:监控网络设备的状态和流量,包括交换机、路由器等设备的状态和流量。
数据库性能:监控数据库的性能指标,包括查询吞吐量、查询执行性能、连接情况等。
Web 应用程序响应时间和错误率:监控 Web 应用程序的响应时间和错误率,以提高应用程序的性能和可用性。
日志文件变化和错误:监控日志文件的变化和错误,以获取应用程序和系统的运行信息和故障排除信息。
操作系统进程和服务状态:监控操作系统的进程和服务状态,以确保系统的稳定性和可用性。
系统日志和告警事件:监控系统日志和告警事件,以获取系统和应用程序的运行信息和故障排除信息。
电力设备状态:监控电力设备的电压、电流和温度等状态,以确保设备的稳定运行。
安全设备状态:监控安全设备的防火墙日志、攻击检测等状态,以提高系统的安全性。
如何在zabbix被控端创建自定义key?
UserParameter=自定义key值,命令 # 命令的执行结果,是key的value
自定义key创建后需要重启zabbix-agent服务:
systemctl restart zabbix-agent.service
创建的key可以通过zabbix_get查询:
zabbix_get -s 主机地址 -k 自定义key
配置zabbix监控服务器
本实验需要使用课上的zabbix server,如没有可用服务器,请参照课上文档部署服务器
准备一台名为db1的虚拟机
在虚拟机安装zabbix agent,并
配置yum
安装配置agentyum install -y zabbix-agent
修改配置文件
[root@db1 ~]# vim /etc/zabbix/zabbix_agentd.conf
117 Server=127.0.0.1,192.168.88.5
182 Hostname=db1
启动服务
[root@db1 ~]# systemctl enable zabbix-agent.service --now
自定义监控项
在db1创建名为grpcnt的key,用于监控用户组的数量
在zabbixserver的web页面上显示该key
[root@db1 ~]# vim /etc/zabbix/zabbix_agentd.d/grpcnt.conf
UserParameter=grpcnt,sed -n '$=' /etc/group
重启服务
[root@db1 ~]# systemctl restart zabbix-agent.service
安装zabbix-get
[root@db1 ~]# yum install -y zabbix-get
获取key值
[root@db1 ~]# zabbix_get -s 127.0.0.1 -k grpcnt