typora-copy-images-to: img

ZABBIX实战

  • zabbix安装

Zabbix详解

zabbix中文社区: http://www.zabbix.org.cn/
Zabbix中文版官方文档: https://www.zabbix.com/documentation/4.0/zh/manual 监控基本介绍
使用 SNMP 协议获取主机 CPU、内存、磁盘、网卡流量等数据.
用脚本将获取到的 SNMP 数据存入数据库中,然后再使用一种名为 MRTG 的软件根据获取的数据绘制图表来分析数据的变化。MRTG(Multi Router Traffic Grapher),顾名思义,这款软件最初是设计用于监控网络链路流量负载的。它可以用过 SNMP 获取到设备的流量信息,并根据这些信息绘制成图表并保存为 PNG 格式的图片,再将这些 PNG 图片以HTML 页面的方式显示给用户. 不过,MRTG 展示的页面和图表曲线相对简陋,它在一张图片中最多只能绘制两个数据的变化曲线,并且由于是 PNG 格式的静态图片,所以无法针对某一时间进行细化展示。为了解决这个问题,人们又开发了 RRDTOOL 工具. 不过,直接使用 RRDTOOL 绘图操作起来很麻烦。同时,现如今的数据中心动辄成百上千的设备,一个个的去提取、绘制、监控显然是不现实的事情. Cacti 是一套基于 PHP、MySQL、SNMP 及 RRDTool 开发的监测图形分析工具,Cacti 是使用轮询的方式由主服务器向设备发送数据请求来获取设备上状态数据信息的,如果设备不断增多,这个轮询的过程就非常的耗时,轮询的结果就不能即时的反应设备的状态了。Cacti 监控关注的是对数据的展示,却不关注数据异常后的反馈。如果凌晨 3 点的时候设备的某个数据出现异常,除非监控人员在屏幕前发现这个异常变化,否则是没有任何报警机制能够让我们道出现了异常。 Nagios 是一款开源的免费网络监控报警服务,能有效监控 Windows、Linux 和 Unix 的主机状态,交换机、路由器和防火墙等网络设置,打印机、网络投影、网络摄像等设备。在系统或服务状态异常时发出邮件或短信报警第一时间通知运维人员,在状态恢复后发出正常的邮件或短信通知。Nagios 有完善的插件功能,可以方便的根据应用服务扩展功能。 Nagios 已经可以支持由数万台服务器或上千台网络设备组成的云技术平台的监控,它可以充分发挥自动化运维技术特点在设备和人力资源减少成本。只是 Nagios 无法将多个相同应用集群的数据集合起来,也不能监控到集群中特殊节点的迁移和恢复。 一个新的监控服务根据这个需求被设计出来,它就是 Ganglia。
Ganglia 是 UC Berkeley 发起的一个开源集群监视项目,设计用于测量数以千计的节点。Ganglia 的核心包含 gmond、gmetad 以及一个 Web 前端。
主要是用来监控系统性能,如:CPU 、内存、硬盘利用率, I/O 负载、网络流量情况等,通过曲线很容易见到每个节点的工作状态,对合理调整、分配系统资源,提高系统整体性能起到重要作用,目前是监控HADOOP 的官方推荐服务。 Zabbix 是一个基于 WEB 界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。zabbix 能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。 优点:
开源,无软件成本投入
Server 对设备性能要求低
支持设备多,自带多种监控模板
支持分布式集中管理,有自动发现功能,可以实现自动化监控
开放式接口,扩展性强,插件编写容易
当监控的 item 比较多服务器队列比较大时可以采用被动状态,被监控客户端主动 从server 端去下载需要监控的 item 然后取数据上传到 server 端。 这种方式对服务器的负载比较小。
Api 的支持,方便与其他系统结合 缺点:
需在被监控主机上安装agent,所有数据都存在数据库里, 产生的数据量很大,瓶颈主要在数据库。

Zabbix安装

环境准备
最少两台机器
zabbix-server -- 监控端
zabbix-agent -- 被监控端
【关闭防火墙 selinux】
官方文档
https://www.zabbix.com/cn/download?zabbix=5.0&os_distribution=centos&os_version=7&db=mysql&ws=apache 【zabbix-server 监控端安装】 a. 安装zabbix仓库
# rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
# yum clean all b. 安装相应软件
# yum install zabbix-server-mysql zabbix-agent c. 安装zabbix 依赖yum源仓库
# yum install centos-release-scl
【centos7 base源可能会没有这个包】
解决方法:
# wget http://rpmfind.net/linux/centos/7.9.2009/extras/x86_64/Packages/centos-release-scl-rh-2-3.el7.centos.noarch.rpm
# wget http://rpmfind.net/linux/centos/7.9.2009/extras/x86_64/Packages/centos-release-scl-2-3.el7.centos.noarch.rpm
# rpm -ivhcentos-release-scl-rh-2-3.el7.centos.noarch.rpm centos-release-scl-2-3.el7.centos.noarch.rpm d. 编辑配置文件 /etc/yum.repos.d/zabbix.repo,开启zabbix-frontend仓库
[zabbix-frontend]
...
enabled=1
... # yum install zabbix-web-mysql-scl zabbix-apache-conf-scl
//安装php已经数据库依赖 e. 创建初始数据库
在数据库主机上运行以下代码。 # mysql -uroot -p
password
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> create user zabbix@localhost identified by 'password';
mysql> grant all privileges on zabbix.* to zabbix@localhost; 8.0
grant all on zabbix.* to zabbix@localhost identified by 'Cc..2022'; 5.7
mysql> quit; 导入初始架构和数据,系统将提示您输入新创建的密码。
# zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix f. 为Zabbix server配置数据库
编辑配置文件 /etc/zabbix/zabbix_server.conf DBPassword=password
g. 为Zabbix前端配置PHP
编辑配置文件 /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf, uncomment and set the right timezone for you. ; php_value[date.timezone] = Europe/Riga h. 启动Zabbix server和agent进程
启动Zabbix server和agent进程,并为它们设置开机自启: # systemctl restart zabbix-server zabbix-agent httpd rh-php72-php-fpm
# systemctl enable zabbix-server zabbix-agent httpd rh-php72-php-fpm i. 配置Zabbix前端
连接到新安装的Zabbix前端: http://server_ip_or_name/zabbix
【zabbix-agent 被监控端安装】
1、安装zabbix.repo yum源
# rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm 2、安装被监控端软件
# yum install zabbix-agent -y 3、修改配置文件,配置被谁监控
# vim /etc/zabbix/zabbix_agentd.conf
Server=127.0.0.1 -> 监控端的IP地址 10.3.148.200
ServerActive=127.0.0.1 -> 监控端的IP地址 10.3.148.200
Hostname=zabbix server -> 主机名,web1 4、重启zabbix-agent服务
# systemctl restart zabbix-agent

案例:监控vm2机器的web服务是否正常?

1、添加主机群组

2、添加主机

3、添加模板 - 监控web服务的模板

4、验证监控

# systemctl stop httpd
//模拟vm2机器 web 页面出现问题

案例:监控vm2机器 /data 目录下文件的数量?

用户自定义参数(UserParameters)
当zabbix内置的监控项(item:key)不能满足需求时, 例如对nginx连接状态进行监控, 监控MySQL连接状态, 监控tomcat状态等 用户自定义参数要在zabbix-agent上定义
语法格式:UserParameter=key,command ------------------------------------------------------------ 1、配置键值
# vim /etc/zabbix/zabbix_agent.conf
UserParameter=data.number,ls -l /data/ | grep "^-" | wc -l # systemctl restart zabbix-agent 在zabbix-sevrer监控端,进行手动触发测试
# zabbix_get -s 10.3.148.201 -k data.number
15

2、根据键值创建监控项



3、创建触发器

【当满足什么条件进行触发问题】



4、进行测试

vm2机器:
# touch /data/{1..30}.txt //创建30个文件进行触发测试

案例:邮件报警

1、创建报警媒介类型

2、创建接受告警邮件的用户

3、定义动作

动作
动作(action):指对于特定事件事先定义的处理方法,可以是执行脚本或发送通知
动作是在某些特定条件下触发的,比如,某个触发器被触发了,就执行我们的动作。
类似于 if 语句, 触发器为条件表达式, 动作为具体的代码块 执行脚本动作: 这类动作一般用于智能地解决问题
发送通知: 一般用于提醒用户出现了问题 或 问题已解决

【当/data目录文件数量大于20个时,发送邮件进行告警】

【满足条件之后的操作】

4、测试

vm2机器
# touch /data/{1..30}.txt 观察邮件,是否有告警邮件


案例:执行远程命令

我们希望当/data目录文件数量大于20个,zabbix能自动帮忙解决问题,
配置过程:
1.修改 agent 配置文件
# vim /etc/zabbix/zabbix_agentd.conf
EnableRemoteCommands=1 #允许远程命令
LogRemoteCommands=1 #将远程命令记录到日志 [/var/log/zabbix/zabbix_agentd.log]
# systemctl restart zabbix-agent 2.给zabbix用户提权
# echo "zabbix ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/zabbix
对于用户提权后,若该用户要使用命令,必须要加sudo,如 sudo systemctl restart httpd

案例:给/data目录文件数量,添加图形

解决图形乱码问题:

在windows找到中文字体
控制面板 -> 外观和个性化 -> 字体 -> 随便上传一个中文字体 # ls -l /etc/alternatives/zabbix-web-font
lrwxrwxrwx 1 root root 34 6月 2 09:32 /etc/alternatives/zabbix-web-font -> /usr/share/fonts/dejavu/DejaVuSans.ttf 发现字体配置文件是一个软链接 //上传字体到simsun.ttc /usr/share/fonts/dejavu/ # ln -sf /usr/share/fonts/dejavu/simsun.ttc /etc/alternatives/zabbix-web-font
//修改软链接

案例:自动发现

自动发现
随着监控主机不断增多,有的时候需要添加一批机器,特别是刚用zabbix的运维人员需要将公司的所有服务器添加到zabbix,如果使用传统办法去单个添加主机组,主机,监控项,触发器...
1、编写脚本,自动化安装zabbix-agent,修改配置文件,被谁监控
# vim zabbix-agent.sh
#!/bin/bash
host=10.3.148.200
#监控端的IP地址
rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
yum install zabbix-agent -y
sed -ir "s/Server=127.0.0.1/Server=$host/" /etc/zabbix/zabbix_agentd.conf
sed -ir "s/ServerActive=127.0.0.1/ServerActive=$host/" /etc/zabbix/zabbix_agentd.conf
hostname=$(hostname -I | sed -r "s/\./v/g")
sed -ir "s/Hostname=Zabbix server/Hostname=$hostname/" /etc/zabbix/zabbix_agentd.conf
systemctl restart zabbix-agent

1、添加自动发现规则

2、添加动作,满足自动发现规则,去添加主机,链接模板



3、最好会发现,自动添加主机,链接模板

案例:基于企业微信告警

1、要在手机下载企业微信 (自己注册,创建企业)
参考 -- 项目3:基于微信实现自动化监控告警

Linux_ZABBIX实战的更多相关文章

  1. SSH实战 · 唯唯乐购项目(上)

    前台需求分析 一:用户模块 注册 前台JS校验 使用AJAX完成对用户名(邮箱)的异步校验 后台Struts2校验 验证码 发送激活邮件 将用户信息存入到数据库 激活 点击激活邮件中的链接完成激活 根 ...

  2. GitHub实战系列汇总篇

    基础: 1.GitHub实战系列~1.环境部署+创建第一个文件 2015-12-9 http://www.cnblogs.com/dunitian/p/5034624.html 2.GitHub实战系 ...

  3. MySQL 系列(四)主从复制、备份恢复方案生产环境实战

    第一篇:MySQL 系列(一) 生产标准线上环境安装配置案例及棘手问题解决 第二篇:MySQL 系列(二) 你不知道的数据库操作 第三篇:MySQL 系列(三)你不知道的 视图.触发器.存储过程.函数 ...

  4. Asp.Net Core 项目实战之权限管理系统(4) 依赖注入、仓储、服务的多项目分层实现

    0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之 ...

  5. 给缺少Python项目实战经验的人

    我们在学习过程中最容易犯的一个错误就是:看的多动手的少,特别是对于一些项目的开发学习就更少了! 没有一个完整的项目开发过程,是不会对整个开发流程以及理论知识有牢固的认知的,对于怎样将所学的理论知识应用 ...

  6. asp.net core 实战之 redis 负载均衡和"高可用"实现

    1.概述 分布式系统缓存已经变得不可或缺,本文主要阐述如何实现redis主从复制集群的负载均衡,以及 redis的"高可用"实现, 呵呵双引号的"高可用"并不是 ...

  7. Linux实战教学笔记08:Linux 文件的属性(上半部分)

    第八节 Linux 文件的属性(上半部分) 标签(空格分隔):Linux实战教学笔记 第1章 Linux中的文件 1.1 文件属性概述(ls -lhi) linux里一切皆文件 Linux系统中的文件 ...

  8. Linux实战教学笔记07:Linux系统目录结构介绍

    第七节 Linux系统目录结构介绍 标签(空格分隔):Linux实战教学笔记 第1章 前言 windows目录结构 C:\windows D:\Program Files E:\你懂的\精品 F:\你 ...

  9. Linux实战教学笔记06:Linux系统基础优化

    第六节 Linux系统基础优化 标签(空格分隔):Linux实战教学笔记-陈思齐 第1章 基础环境 第2章 使用网易163镜像做yum源 默认国外的yum源速度很慢,所以换成国内的. 第一步:先备份 ...

  10. Linux实战教学笔记05:远程SSH连接服务与基本排错(新手扫盲篇)

    第五节 远程SSH连接服务与基本排错 标签(空格分隔):Linux实战教学笔记-陈思齐 第1章 远程连接LInux系统管理 1.1 为什么要远程连接Linux系统 在实际的工作场景中,虚拟机界面或物理 ...

随机推荐

  1. 将本地文件推送到Gitee仓库

    完整的步骤 1.在gitee中创建仓库 2.下载.安装git 3.推送文件到gitee 推送文件到gitee 1.在要上传的文件夹空白处,点击右键,选择 git bash here 2.输入 git ...

  2. python学习:窗口程序

    https://www.cnblogs.com/zyg123/p/10385456.html # 导入tkinter模块 import tkinter # 创建画布需要的库 from matplotl ...

  3. sqoop mysql2hive

    a./etc/profile添加export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$HIVE_HOME/lib/*b.将hive-site.xml 拷贝到 $SQOO ...

  4. Appkiz.Base、Appkiz.Base.Languages

    环境: ILSpy version 4.0.0.4319-beta2 选择 C#6.0 Visual Studio 2015 直接保存代码,直接用Visual Studio 2015打开.csprj文 ...

  5. ARouter转场动画无效,试试下面这种写法

    A -> B 的转场动画: A:ARouter.getInstance().build(ArouterPath.PATH_AUDIO_PLAYER) .withSerializable(&quo ...

  6. Java8函数式编程(A)

    将行为作为数据传递 函数编程的最直接的表现,莫过于将函数作为数据自由传递,结合泛型推导能力,使代码表达能力获得飞一般的提升. Java8怎么支持函数式编程? 主要有三个核心概念: 函数接口(Funct ...

  7. element-ui中el-table设置多选checkbox时,selection-change重复执行,以及选不中问题

    项目中使用了elementUI中el-table的选择框.在另外一个地方展示选中的行的数量.设置显示数量之后,选择框就无法选中,change事件执行两次. 解决办法:给el-table设置row-ke ...

  8. centos linux 忘记密码

    1.开机 esc 将画面停止 2.   e 进入设置状态 3.编辑修改两处:ro改为rw,在LANG=en_US.UFT-8后面添加init=/bin/sh,版本不同 内容不同,找到对应的位置修改 4 ...

  9. Jenkins自动化部署nodejs项目(前端项目)

    1.安装nodejs插件 2.Linux系统安装nodejs (1)去nodejs官网下载最新包 https://nodejs.org/dist/latest/ (2)解压安装 tar xvzf no ...

  10. Word04 公司战略规划文档office真题

    1.课程的讲解之前,先来对题目进行分析,首先需要在考生文件夹下,将Wrod素材.docx文件另存为Word.docx,后续操作均基于此文件,否则不得分.   2.这一步非常的简单,打开下载素材文件,在 ...