zabbix监控

监控系统服务器的状态、网站的流量指标、进程服务的运行状态,保证整个集群的工作正常

1、定义

基于web界面提供的一种可视化的监控服务软件,已分布式的方式系统监控以及网络监控、硬件监控等的开源软件

2、组织架构

(1)C/S模式:客户端和服务端组成。zabbix server服务端,zabbix agent客户端

(2)B/S模式:浏览器和服务端组成。通过浏览器可以直接访问服务器数据

3、zabbix的组件程序

(1)zabbix server:服务端, 通过一系列的组件SNMP,zabbix agent,ping,通过端口远程监控 客户端的数据,把数据收集到服务端进行展示,以及提供用户分析的界面web

****(2)zabbix agent:客户端,****被监控的目标机器,把需要收集的数据以及自定义的监控数据,发送给zabbix server

(3)zabbix_proxy:代理服务器,安装在监控的目标系统上的软件组件,可以代替zabbix_server收集数据,然后由代理软件传送给服务端zabbix_server,减轻主服务器的压力

****(4)zabbix_get:****可选组件(不是必要的),提供命令行的工具(zabbix的命令行)

****(5)zabbix_sender:****可选组件(不是必要的),提供命令行的工具(zabbix的命令行),可以将自定义数据发送到zabbix服务器,对于不直接由zabbix代理监控的数据或从脚本传送来的数据来说较方便

4、工作方式

5、部署zabbix实验

****实验目的:****监控服务,可视化界面展示

实验条件:

|-------------|------------|--------------|---------------------------------------------------------------------------|-------------------------|
| 主机名 | 作用 | IP地址 | 组件 | 硬件 (最少) |
| test1 | server 服务端 | 20.0.0.10 | 时间同步+SCL+mysql和apache的web组件+mariadb(数据库)+zabbix-agent+zabbix-server-mysql | 4核8G |
| test2 | agent 客户端 | 20.0.0.20 | 时间同步+zabbix-agent2 | 2核4G |

实验步骤:

|------------|---------------|
| 端口 | 主机 |
| 10050 | server服务端 |
| 10051 | agent监控端(客户端) |

1、安装时间同步【所有服务器】

yum install ntpdate -y

ntpdate ntp.aliyun.com

2、部署zabbix服务端

(1)获取 zabbix 的下载源

rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm

(2)更换 zabbix.repo 为阿里源

cd /etc/yum.repos.d

sed -i 's#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' zabbix.repo

yum clean all && yum makecache

yum install -y zabbix-server-mysql zabbix-agent

|---------------------|--------------------------------------|
| zabbix-server-mysql | 指定安装zabbix后,使用mysql作为数据库后端(也可以使用其他的) |
| zabbix-agent | 可以把主服务器也加入到监控目标中 |

(3)安装SCL

yum install -y centos-release-scl

便于后续安装高版本的 php,默认 yum 安装的 php 版本为 5.4

(4)修改 zabbix-front 前端源

(5)安装mysql和apache的web组件

yum install -y zabbix-web-mysql-scl zabbix-apache-conf-scl

(6)安装 zabbix 所需的数据库

yum install -y mariadb-server mariadb

(7)初始化数据库

mysql_secure_installation

(8)添加数据库用户,以及 zabbix 所需的数据库信息

mysql -u root -p123

CREATE DATABASE zabbix character set utf8 collate utf8_bin;

#创建一个名为 "zabbix" 的 MySQL 数据库,字符集为 UTF-8,排序规则为 utf8_bin

GRANT all ON zabbix.* TO 'zabbix'@'%' IDENTIFIED BY 'zabbix';

flush privileges;

(9)导入数据库信息

rpm -ql zabbix-server-mysql #查询 sql 文件的位置

zcat /usr/share/doc/zabbix-server-mysql-5.0.40/create.sql.gz | mysql -uroot -p123 zabbix

#导入 Zabbix 监控系统所需的 MySQL 数据库架构

(10)修改 zabbix server 配置文件,修改数据库的密码

vim /etc/zabbix/zabbix_server.conf

(11)修改 zabbix 的 php 配置的时区文件

vim /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf

(12)启动 zabbix 相关服务

systemctl restart zabbix-server zabbix-agent httpd rh-php72-php-fpm

systemctl enable zabbix-server zabbix-agent httpd rh-php72-php-fpm

(13)测试。服务端浏览器访问

20.0.0.10/zabbix

出现错误:Time zone for PHP is not set (configuration parameter "date.timezone").

未设置PHP的时区(配置参数"date.timezone")

原因:配置文件错误

解决:改成正确的配置文件

切换成中文

解决 zabbix-server Web页面中文乱码问题

yum install -y wqy-microhei-fonts

\cp -f /usr/share/fonts/wqy-microhei/wqy-microhei.ttc /usr/share/fonts/dejavu/DejaVuSans.ttf

(2)修改 agent2 配置文件

vim /etc/zabbix/zabbix_agent2.conf

(3)启动 zabbix-agent2

systemctl start zabbix-agent2

systemctl enable zabbix-agent2

netstat -natp | grep zabbix

(4)在服务端验证 zabbix-agent2 的连通性

yum install -y zabbix-get

#安装 zabbix 主动获取数据的命令

zabbix_get -s '20.0.0.20' -p 10050 -k 'agent.ping'

zabbix_get -s '20.0.0.20' -p 10050 -k 'system.hostname'

(5)修改服务端的agent2 配置文件

****(6)****在 Web 页面中添加主机

添加agent主机【监控客户端】

(7)自定义监控内容

who | wc -l

①创建 zabbix 的监控项配置文件,用于自定义 key【脚本实现】

vim /etc/zabbix/zabbix_agent2.conf

注意点:监控配置文件都在此目录下

cd /etc/zabbix/zabbix_agent2.d/

vim UserParameter_login.conf

UserParameter=login.user,who|wc -l

systemctl restart zabbix-agent2

②在服务端验证新建的监控项

zabbix_get -s '20.0.0.20' -p 10050 -k 'login.user'

(8)在 Web 页面创建自定义监控项模板

①创建模板②创建应用集(用于管理监控项的)③创建监控项④创建触发器⑤创建图形⑥将主机与模板关联起来(一个主机可以关联多个模板)⑦设置邮件报警

⑦模拟故障

超过3台agent主机会发送邮件,并且触发器有动作记录

(8)监控nginx服务

①安装nginx服务②打开nginx状态,关闭访问日志

③创建nginx脚本

#!/bin/bash

#Description:Automated monitoring nginx performance and process nginx_status scripts

HOST="localhost"

PORT=80

stub_status="stub_status"

NGINX_COMMAND=$1

nginx_check() {

if [ -f /sbin/pidof ]; then

/sbin/pidof nginx | wc -w

else

ps aux | grep -v "grep" | grep -c "nginx:"

fi

}

nginx_active(){

/usr/bin/curl -s "http://$HOST:PORT/{stub_status}/" 2> /dev/null | awk '/Active/ {print $NF}'

}

nginx_reading(){

/usr/bin/curl -s "http://$HOST:PORT/{stub_status}/" 2> /dev/null | awk '/Reading/ {print $2}'

}

nginx_writing(){

/usr/bin/curl -s "http://$HOST:PORT/{stub_status}/" 2> /dev/null | awk '/Writing/ {print $4}'

}

nginx_waiting(){

/usr/bin/curl -s "http://$HOST:PORT/{stub_status}/" 2> /dev/null | awk '/Waiting/ {print $6}'

}

nginx_accepts(){

/usr/bin/curl -s "http://$HOST:PORT/{stub_status}/" 2> /dev/null | awk 'NR==3 {print $1}'

}

nginx_handled(){

/usr/bin/curl -s "http://$HOST:PORT/{stub_status}/" 2> /dev/null | awk 'NR==3 {print $2}'

}

nginx_requests(){

/usr/bin/curl -s "http://$HOST:PORT/{stub_status}/" 2> /dev/null | awk 'NR==3 {print $3}'

}

case $NGINX_COMMAND in

check)

nginx_check

;;

active)

nginx_active

;;

reading)

nginx_reading

;;

writing)

nginx_writing

;;

waiting)

nginx_waiting

;;

accepts)

nginx_accepts

;;

handled)

nginx_handled

;;

requests)

nginx_requests

;;

*)

echo $"USAGE:$0 {check|active|reading|writing|waiting|accepts|handled|requests}"

esac

赋权脚本文件④创建监控nginx服务的脚本nginx.sh 是一个脚本文件的路径,而 $1 是脚本接受的第一个参数

⑤在服务端测试连接客户端

zabbix_get -s '20.0.0.20' -p 10050 -k nginx.status[check]

⑥在 Web 页面创建自定义监控项模板

创建模板创建应用集(用于管理监控项的)创建监控项

注意:键值必须要与自定义的监控项配置文件中设置的保持一致

创建触发器(当监控项获取到监控的值后和触发器预设的值进行对比,判断是否报警)创建图形将主机与模板关联起来(一个主机可以关联多个模板)⑦测试监控nginx服务故障问题1:nginx服务出现故障,无法发送故障邮件到邮箱原因:无法解析主机名:无法解析主机:smtp.qq.com;未知错误解决:添加一个本地网关

问题2:报警类型被拒绝解决:更新一下报警媒介

(9)监控mysql的I/O线程 【面试题】

注意:

用zabbix监控服务器状态、硬件信息、内存、磁盘读写、进程服务器

用普罗米修监控容器 ,zabbix监控容器会出现假告警

工作流程:在监控的服务器上自定义监控脚本,并创建脚本筛选出IO线程,设置故障触发条件,在zabbix界面添加主机、创建模板、应用集、监控项、触发器等,即可监控mysql的IO线程

①yum安装mysql【编译安装不适用此方法】

②创建查看mysql 的IO线程的脚本赋权脚本文件

③自定义监控mysql 的I/O线程脚本

注意:必须放在/etc/zabbix/zabbix_agent2.d/目录下创建监控脚本

④在服务端测试客户端

⑤在 Web 页面创建自定义监控项模板

创建模板创建应用集创建监控项创建触发器

错误:无法检测mysql的IO故障

原因:触发器条件设置错误解决:须符合/opt/test_mysql.sh的脚本文件设置的触发条件创建图形【可有可无】主机关联模板⑥测试监控mysql的IO故障问题1:客户端和服务端时间不同步

解决:安装时间同步

yum install ntpdate -y

ntpdate ntp.aliyun.com

问题2:模拟mysql故障后,重启mysql无法解决故障

原因:查看仪表板发现所有检测的主机与服务均没有波动,zabbix相关服务挂了

解决:重启zabbix相关服务,自动解决无法恢复故障的问题

客户端systemctl start zabbix-agent2

服务端systemctl restart zabbix-server zabbix-agent httpd rh-php72-php-fpm

相关推荐
乐维_lwops4 小时前
zabbix“专家坐诊”第256期问答
zabbix
小阿轩yx5 天前
小阿轩yx-案例:Zabbix监控kubernetes云原生环境
linux·云原生·kubernetes·云计算·zabbix·运维开发
小阿轩yx5 天前
小阿轩yx-Zabbix企业级分布式监控环境部署
linux·分布式·云计算·zabbix·运维开发·企业级监控部署
the丶only5 天前
获取zabbix API 监控数据shell脚本,自动日常巡检服务器信息、并发送指定群组
linux·运维·服务器·自动化·bash·zabbix
henanxiaoman6 天前
zabbix之钉钉告警
钉钉·zabbix
Linux运维老纪6 天前
基于zabbix实现监控Jenkins过程---超详细
linux·云计算·jenkins·zabbix·运维开发
小怪兽ysl6 天前
【zabbix监控软件(配置及常用键值)】
zabbix
henan程序媛6 天前
Zabbix监控自动化
运维·自动化·zabbix·监控
henan程序媛7 天前
Zabbix监控k8s云原生环境
云原生·kubernetes·zabbix
乆乄10 天前
运维学习————Zabbix监控框架(1)
运维·zabbix