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、工作方式

zabbix监控_第1张图片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

zabbix监控_第2张图片

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

zabbix监控_第3张图片

(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监控_第4张图片

zabbix监控_第5张图片

zabbix-server-mysql

指定安装zabbix后,使用mysql作为数据库后端(也可以使用其他的)

zabbix-agent

可以把主服务器也加入到监控目标中

(3)安装SCL

yum install -y centos-release-scl

zabbix监控_第6张图片

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

(4)修改 zabbix-front 前端源

zabbix监控_第7张图片

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

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

zabbix监控_第8张图片

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

yum install -y mariadb-server mariadb

zabbix监控_第9张图片

(7)初始化数据库

mysql_secure_installation

zabbix监控_第10张图片

zabbix监控_第11张图片

(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;

zabbix监控_第12张图片

zabbix监控_第13张图片

(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 数据库架构

zabbix监控_第14张图片

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

vim /etc/zabbix/zabbix_server.conf

zabbix监控_第15张图片

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

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

zabbix监控_第16张图片

(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

zabbix监控_第17张图片

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

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

zabbix监控_第18张图片

原因:配置文件错误

zabbix监控_第19张图片

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

zabbix监控_第20张图片

zabbix监控_第21张图片

zabbix监控_第22张图片

zabbix监控_第23张图片

zabbix监控_第24张图片

zabbix监控_第25张图片

切换成中文

zabbix监控_第26张图片

zabbix监控_第27张图片

zabbix监控_第28张图片

zabbix监控_第29张图片

zabbix监控_第30张图片

解决 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

zabbix监控_第31张图片

zabbix监控_第32张图片

zabbix监控_第33张图片

zabbix监控_第34张图片

zabbix监控_第35张图片

(2)修改 agent2 配置文件

vim /etc/zabbix/zabbix_agent2.conf

zabbix监控_第36张图片

zabbix监控_第37张图片

(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'

zabbix监控_第38张图片

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

zabbix监控_第39张图片

zabbix监控_第40张图片

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

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

zabbix监控_第41张图片

zabbix监控_第42张图片

zabbix监控_第43张图片

zabbix监控_第44张图片

zabbix监控_第45张图片

zabbix监控_第46张图片

zabbix监控_第47张图片zabbix监控_第48张图片

(7)自定义监控内容

who | wc -l

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

vim /etc/zabbix/zabbix_agent2.conf

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

zabbix监控_第49张图片

cd /etc/zabbix/zabbix_agent2.d/

vim UserParameter_login.conf

UserParameter=login.user,who|wc -l

systemctl restart zabbix-agent2zabbix监控_第50张图片zabbix监控_第51张图片

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

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

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

①创建模板zabbix监控_第52张图片zabbix监控_第53张图片zabbix监控_第54张图片zabbix监控_第55张图片②创建应用集(用于管理监控项的)zabbix监控_第56张图片zabbix监控_第57张图片zabbix监控_第58张图片zabbix监控_第59张图片③创建监控项zabbix监控_第60张图片zabbix监控_第61张图片zabbix监控_第62张图片zabbix监控_第63张图片zabbix监控_第64张图片zabbix监控_第65张图片④创建触发器zabbix监控_第66张图片zabbix监控_第67张图片zabbix监控_第68张图片zabbix监控_第69张图片zabbix监控_第70张图片zabbix监控_第71张图片⑤创建图形zabbix监控_第72张图片zabbix监控_第73张图片zabbix监控_第74张图片⑥将主机与模板关联起来(一个主机可以关联多个模板)zabbix监控_第75张图片zabbix监控_第76张图片zabbix监控_第77张图片zabbix监控_第78张图片zabbix监控_第79张图片⑦设置邮件报警zabbix监控_第80张图片zabbix监控_第81张图片zabbix监控_第82张图片zabbix监控_第83张图片zabbix监控_第84张图片zabbix监控_第85张图片zabbix监控_第86张图片zabbix监控_第87张图片zabbix监控_第88张图片zabbix监控_第89张图片zabbix监控_第90张图片zabbix监控_第91张图片zabbix监控_第92张图片zabbix监控_第93张图片

⑦模拟故障

超过3台agent主机会发送邮件,并且触发器有动作记录zabbix监控_第94张图片zabbix监控_第95张图片

(8)监控nginx服务

①安装nginx服务zabbix监控_第96张图片zabbix监控_第97张图片②打开nginx状态,关闭访问日志zabbix监控_第98张图片zabbix监控_第99张图片

③创建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

zabbix监控_第100张图片zabbix监控_第101张图片赋权脚本文件zabbix监控_第102张图片④创建监控nginx服务的脚本zabbix监控_第103张图片nginx.sh 是一个脚本文件的路径,而 $1 是脚本接受的第一个参数

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

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

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

创建模板zabbix监控_第104张图片zabbix监控_第105张图片创建应用集(用于管理监控项的)zabbix监控_第106张图片创建监控项zabbix监控_第107张图片

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

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

问题2:报警类型被拒绝zabbix监控_第117张图片解决:更新一下报警媒介zabbix监控_第118张图片zabbix监控_第119张图片zabbix监控_第120张图片

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

注意:

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

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

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

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

②创建查看mysql 的IO线程的脚本zabbix监控_第121张图片赋权脚本文件

③自定义监控mysql 的I/O线程脚本zabbix监控_第122张图片zabbix监控_第123张图片

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

④在服务端测试客户端

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

创建模板zabbix监控_第124张图片zabbix监控_第125张图片zabbix监控_第126张图片创建应用集zabbix监控_第127张图片zabbix监控_第128张图片zabbix监控_第129张图片创建监控项zabbix监控_第130张图片zabbix监控_第131张图片zabbix监控_第132张图片zabbix监控_第133张图片zabbix监控_第134张图片创建触发器zabbix监控_第135张图片zabbix监控_第136张图片zabbix监控_第137张图片zabbix监控_第138张图片

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

原因:触发器条件设置错误zabbix监控_第139张图片zabbix监控_第140张图片解决:须符合/opt/test_mysql.sh的脚本文件设置的触发条件zabbix监控_第141张图片zabbix监控_第142张图片创建图形【可有可无】zabbix监控_第143张图片zabbix监控_第144张图片主机关联模板zabbix监控_第145张图片zabbix监控_第146张图片zabbix监控_第147张图片zabbix监控_第148张图片⑥测试监控mysql的IO故障zabbix监控_第149张图片zabbix监控_第150张图片zabbix监控_第151张图片zabbix监控_第152张图片问题1:客户端和服务端时间不同步zabbix监控_第153张图片

解决:安装时间同步

yum install ntpdate -y

ntpdate ntp.aliyun.comzabbix监控_第154张图片

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

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

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

客户端systemctl start zabbix-agent2

服务端systemctl restart zabbix-server zabbix-agent httpd rh-php72-php-fpmzabbix监控_第155张图片

你可能感兴趣的:(zabbix)