高级运维学习(十四)Zabbix监控(一)

news/2024/10/25 15:22:59/

一  监控概述

1  监控的目的

(1)报告系统运行状况

  • 每一部分必须同时监控
  • 内容包括吞吐量、反应时间、使用率等

(2)提前发现问题

  • 进行服务器性能调整前,知道调整什么
  • 找出系统的瓶颈在什么地方

2  监控的资源类别

(1)公开数据

  • Web、FTP、SSH、数据库等应用服务
  • TCP或UDP端口

(2)私有数据

  • CPU、内存、磁盘、网卡流量等使用信息
  • 用户、进程等运行信息

3  系统监控命令

# 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[root@myhost ~]# free -h      # 主要用于查看内存
[root@myhost ~]# swapon -s    # 查看swap空间
[root@myhost ~]# df -h        # 查看硬盘使用情况
[root@myhost ~]# ping -c2 www.baidu.com   # 发2个包,测试网络

4  自动化监控系统

 Cacti基于SNMP协议的监控软件,强大的绘图能力
Nagios

基于Agent监控,强大的状态检查与报警机制

插件极多,自己写监控脚本嵌入到Nagios非常方便

Zabbix基于多种监控机制,支持分布式监控

二  Zabbix 基础

1  基本概念

(1)Zabbix简介

  • Zabbix是一个高度集成的监控解决方案
  • 可以实现企业级的开源分布式监控
  • Zabbix通过C/S模式采集监控数据
  • Zabbix通过B/S模式实现Web管理

(2)监控拓扑

监控服务器(需要使用Web页面操作,因此需要先部署LNMP)

  • 监控服务器可以通过SNMP(简单网络管理协议,用于网络设备的数据采集)或Agent(可安装软件的系统上)采集数据
  • 数据可以写入MySQL、Oracle等数据库中
  • 服务器使用LNMP实现web前端的管理

被监控主机

  • 被监控主机需要安装Agent
  • 常见的网络设备一般支持SNMP

(3)安装zabbix 6.0

  • 安装说明:Download and install Zabbix
  • 中文手册:Zabbix 文档
主机名地址
zabbixserver192.168.88.5/24
web1192.168.88.100/24
web2192.168.88.200/24
# 准备3台主机。按上表配置主机名和IP地址
[root@myhost ~]# vm clone zabbixserver web1 web2 
  • 安装zabbix
# 1. 拷贝zabbix软件包到pubserver
[root@zabbixserver ~]# scp /linux-soft/s2/zzg/zabbix_soft/*.rpm 192.168.88.240:/var/ftp/rpms
# 2. 更新yum仓库配置
[root@pubserver ~]# createrepo -v /var/ftp/rpms/
# 3. 在pubserver上创建ansible工作环境
[root@pubserver ~]# mkdir -p zabbix/files
[root@pubserver ~]# cd zabbix/
[root@pubserver zabbix]# vim ansible.cfg 
[defaults]
inventory = inventory
host_key_checking = false[root@pubserver zabbix]# vim inventory 
[zabbix]
zabbixserver ansible_host=192.168.88.5[webservers]
web1 ansible_host=192.168.88.100
web2 ansible_host=192.168.88.200[all:vars]
ansible_ssh_user=root
ansible_ssh_pass=a# 4. 为各台主机配置yum
[root@pubserver zabbix]# vim files/local88.repo 
[BaseOS]
name = BaseOS
baseurl = ftp://192.168.88.240/dvd/BaseOS
enabled = 1
gpgcheck = 0[AppStream]
name = AppStream
baseurl = ftp://192.168.88.240/dvd/AppStream
enabled = 1
gpgcheck = 0[rpms]
name = rpms
baseurl = ftp://192.168.88.240/rpms
enabled = 1
gpgcheck = 0[root@pubserver zabbix]# vim 01-upload-repo.yml 
---
- name: config repos.dhosts: alltasks:- name: delete repos.dfile:path: /etc/yum.repos.dstate: absent- name: create repos.dfile:path: /etc/yum.repos.dstate: directorymode: '0755'- name: upload local88copy:src: files/local88.repodest: /etc/yum.repos.d/
[root@pubserver zabbix]# ansible-playbook 01-upload-repo.yml # 5. 在zabbixserver上安装相应软件包
[root@pubserver zabbix]# vim 02-inst-zabbix.yml
---
- name: install zabbixhosts: zabbixtasks:- name: install zabbix    # 安装软件包yum:name:- zabbix-server-mysql- zabbix-web-mysql- zabbix-nginx-conf- zabbix-sql-scripts- zabbix-selinux-policy- zabbix-agent- mysql-server- langpacks-zh_CNstate: present
[root@pubserver zabbix]# ansible-playbook 02-inst-zabbix.yml# 6. 启动mysqld服务
[root@pubserver zabbix]# vim 03-start-mysqld.yml
---
- name: config mysqldhosts: zabbixtasks:- name: start mysqld      # 启动mysqld服务service:name: mysqldstate: startedenabled: yes
[root@pubserver zabbix]# ansible-playbook 03-start-mysqld.yml # 7. 在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;# 8. 验证数据库配置,如果登陆不到数据库表示上一步配置不正确
[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;
...以下省略...# 13. 启动相关服务
[root@pubserver zabbix]# vim 04-start-zabbix.yml 
---
- name: config zabbixhosts: zabbixtasks:- name: start service    # 循环启动多个服务service:name: "{{item}}"state: startedenabled: yesloop:- zabbix-server- zabbix-agent- nginx- php-fpm
[root@pubserver zabbix]# ansible-playbook 04-start-zabbix.yml 

(4) 初始化

访问zabbixserver的8080端口,进行初始化:

 

 

 

 

 

注意:这里的用户名Admin,A是大写的!密码是小写的zabbix

 此时zabbix已经开始在监控自己了,查看默认监控配置

2  Zabbix监控服务

(1)配置被监控主机

        在web1上安装agent

# 1. 安装agent
[root@pubserver zabbix]# vim 05-inst-agent.yml
--- 
- name: install agenthosts: webserverstasks:- name: install agent    # 安装agentyum:name: zabbix-agentstate: 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 agenthosts: web1tasks:- name: start agent      # 启动服务service:name: zabbix-agentstate: startedenabled: yes
[root@pubserver zabbix]# ansible-playbook 06-start-agent.yml

(2)添加监控主机

        在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:网卡接收到的数据量
  • Interface eth0: Bits sent:网卡发送的数据量
  • Number of processes:系统运行的进程数
  • Number of logged in users:已登陆的用户数

3  自定义监控项

实现监控web1用户数量的监控项

  1. 在被控端创建key。被控端被监控的内容叫作key,可以理解为它就是一个变量名,具体的名字自己决定。
  2. 在web页面中创建监控项。监控项对应key值。

(1)自定义 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 
  • 验证自定义监控项
# 1. 安装zabbix-get
[root@zabbixserver ~]# yum install -y zabbix-get
[root@web1 ~]# yum install -y zabbix-get# 2. 获取监控项的值
[root@web1 ~]# zabbix_get -s 127.0.0.1 -k usercnt
46
[root@zabbixserver ~]# zabbix_get -s 192.168.88.100 -k usercnt
46

(2)创建监控模板

(3)创建监控项

 (4)应用模板到主机

(5)查看结果


http://www.ppmy.cn/news/1207798.html

相关文章

快速高效!用Python批量分割PDF文件,让你的工作更轻松...

本文将介绍如何使用Python进行批量分割PDF文件的方法。 我们将从架构设计入手&#xff0c;逐步讲解代码实现的过程&#xff0c;帮助读者快速掌握这一实用技能。 一、架构设计 在进行批量分割PDF文件之前&#xff0c;我们需要先设计一个合理的架构&#xff0c;以确保代码的可…

Flink SQL -- 概述

1、Flink SQL中的动态表和连续查询 1、动态表&#xff1a; 因为Flink是可以做实时的&#xff0c;数据是在不断的变化的&#xff0c;所以动态表指的是Flink中一张实时变换的表&#xff0c;表中会不断的有新的数据。但是这张表并不是真正的物理表。 2、连续查询&#xff1a; 连续…

【Java、MongoDB】程序控制非关系数据库

步骤&#xff1a; &#xff08;1&#xff09;连接 连接字符串 &#xff08;2&#xff09;CRUD 类与接口 解析 &#xff08;3&#xff09;maven管理方法 依赖 <dependency><groupId>org.mongodb</groupId><artifactId>mongodb-driver-legacy<…

deeplog中输出某个 event 的概率

1 实现之后效果 # import DeepLog and Preprocessor import numpy as np from deeplog import DeepLog import torch# Create DeepLog object deeplog DeepLog(input_size 10, # Number of different events to expecthidden_size 64 , # Hidden dimension, we suggest 64…

工业摄像机参数计算

在工业相机选型的时候有点懵&#xff0c;有一些参数都不知道咋计算的。有些概念也没有区分清楚。‘’ 靶面尺寸 CMOS 或者是 CCD 使用几分之几英寸来标注的时候&#xff0c;这个几分之几英寸计算的是什么尺寸&#xff1f; 一开始我以为这个计算的就是靶面的实际对角线的尺寸…

第五章 :Spring Boot配置指南(二)

第五章 :Spring Boot 配置指南(二) 前言 本章节知识:分析 Spring Boot Environment 接口设计体系以及在run中如何准备环境变量的过程。 以下示例源码以及源码分析 Spring Boot 版本均为 2.2.0.RELEASE 一、什么是 Environment? Environment 是 springboot 核心的环境配…

NVM安装node后提示没有对应npm包(即:无法将“npm”项识别为 cmdlet、函数、脚本文件)

背景 windows11 node版本降低到v12.22.12后&#xff0c;执行&#xff1a;nvm -v npm -v npm : 无法将“npm”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写&#xff0c;如果 包括路径&#xff0c;请确保路径正确&#xff0c;然后再试一次。 所在位置 …

内存条选购注意事项(电脑,笔记本)

电脑内存条的作用、选购技巧以及注意事项详解 - 郝光明的个人空间 - OSCHINA - 中文开源技术交流社区 现在的电脑直接和内存条联系 电脑上的所有输入和输出都只能依靠内存条 现在买双条而不是单条 买两个相同的内存条最好 笔记本先分清是低电压还是标准电压&#xff0c;DD…