目 录CONTENT

文章目录

搭建Zabbix监控系统

简中仙
2020-02-24 / 0 评论 / 0 点赞 / 76 阅读 / 0 字 / 正在检测是否收录...
温馨提示:
本文最后更新于2024-03-06,若内容或图片失效,请留言反馈。 本文如有错误或者侵权的地方,欢迎您批评指正!

一、zabbix概述

1、zabbix重要组件

组件说明
Zabbix Server负责接收Agent发送报告信息的核心组件,所有的配置、数据统计、数据操作都由它组织进行
Database storage负责存储所有的配置信息以及收集的数据
Web interface是zabbix的GUI接口,通常情况下与Zabbix Server运行在同一台主机上
Pxory属于可选组件,常用于分布式监控环境中,代理Server收集部分数据,然后转发到 Server,可以减轻Server的压力
Agent部署在被监控的主机(客户端)上,负责收集被监控端主机的数据,如CPU、内存、 数据库等数据,然后发送到Server端或Proxy端

2、zabbix 进程

进程说明
zabbix_gentd客户端守护进程,此进程用于收集被监控端的数据,如CPU负载、内存、硬盘使用情况等
zabbix_getzabbix工具是单独使用的命令。zabbix_get是在server或者proxy端执行获取远程客户端信息的命令,主要用于排错
zabbix_sender用于发送数据给sen/印或者proxy,通常用于耗时比较长的检查
zabbix_serverzabbix 服务端守护进程。zabbix_agentd、zabbix_getv zabbix_sender、zabbix_proxy、 zabbixjava_gateway的数据最终都是提交到servero数据并不都是主动提交给zabbix_server 的,也有被动提交数据的,即server主动去获取数据
zabbix_proxyzabbix代理守护进程。功能类似server,唯一不同的是它只是一个中转站,需要把收集到的数据主动(或被动)地提交到server上
zabbix_java_gateway在zabbix2.0之后引入的一个功能。顾名思义:Java网关,类似agentd,但是只用于Java方面。需要特别注意的是,它只能主动去获取数据,而不能被动获取数据。 它的数据最终会提交到server或者proxy

3、zabbix监控架构

架构说明
server-client架构是zabbix的最简单的架构,监控机和被监控机之间不经过任何代理,直接在 zabbix server和zabbix agentd之间进行数据交互,适用于网络比较简单,设备比较少的监控环境
master-node-client架构是Zabbix最复杂的监控架构,适用于跨网络、跨机房、设备较多的大型环境。每个node同时也是一个server端,node下面可以接proxy,也可以直接接cliento node有自已 的配置文件和数据库,其要做的是将配置信息和监控数据向master同步。当master发生故障或损坏, node可以保证架构的完整性
master-proxy-client架构是server、client之间沟通的一个桥梁,proxy本身没有前端,而且其本身并不存放数据, 只是将agentd发来的数据暂时存放,而后再提交给servero该架构经常是和master-node-client架构 做比较的架构,一般适用于跨机房、跨网络的中型网络架构的监控

二、安装 Zabbix

1、安装 Zabbix

# vim /etc/yum.repos.d/zabbix.repo                 # 配置阿里源
[zabbix]
name=Zabbix Official Repository - $basearch
#baseurl=http://repo.zabbix.com/zabbix/4.4/rhel/7/$basearch/
baseurl=https://mirrors.aliyun.com/zabbix/zabbix/4.4/rhel/7/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591

[zabbix-debuginfo]
name=Zabbix Official Repository debuginfo - $basearch
#baseurl=http://repo.zabbix.com/zabbix/4.4/rhel/7/$basearch/debuginfo/
baseurl=https://mirrors.aliyun.com/zabbix/zabbix/4.4/rhel/7/$basearch/
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
gpgcheck=1

[zabbix-non-supported]
name=Zabbix Official Repository non-supported - $basearch
#baseurl=http://repo.zabbix.com/non-supported/rhel/7/$basearch/
baseurl=https://mirrors.aliyun.com/zabbix/non-supported/rhel/7/$basearch/
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX
gpgcheck=1
# yum clean all
# yum -y install zabbix-server-mysql zabbix-web-mysql zabbix-agent  mariadb-server
# systemctl start mariadb
# systemctl enable mariadb

3、创建zabbix的数据库

# mysql_secure_installation
# mysql -uroot -p123456
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> grant all on zabbix.* to zabbix@localhost identified by 'zabbix';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> flush privileges;
# zcat /usr/share/doc/zabbix-server-mysql-4.4.10/create.sql.gz | mysql -uzabbix -pzabbix zabbix                 # 导入数据库SQL脚本

4、检查和编辑配置文件

# cp /etc/zabbix/zabbix_server.conf /etc/zabbix/zabbix_server.conf.bak
# vim /etc/zabbix/zabbix_server.conf 
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
# cp /etc/zabbix/zabbix_agentd.conf /etc/zabbix/zabbix_agentd.conf.bak
# vim /etc/zabbix/zabbix_agentd.conf 
Server=127.0.0.1                 # 客户端被动等待指定服务器来查询数据
ServerActive=127.0.0.1                 # 客户端主动提交数据到指定的服务器
Hostname=linux-server001                 
UnsafeUserParameters=1                 # 允许所有的字符是在用户定义的参数,参数传递(支持自定义脚本)
# systemctl start zabbix-server
# systemctl enable zabbix-server
# vim /etc/httpd/conf.d/zabbix.conf 
php_value date.timezone Asia/Shanghai
# systemctl restart httpd
# systemctl enable httpd

5、修改中文乱码

# yum -y install wqy-microhei-fonts
# cp /usr/share/fonts/wqy-microhei/wqy-microhei.ttc /usr/share/zabbix/assets/fonts/graphfont.ttf

6、安装zabbix web接口

# rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/4.4/rhel/7/x86_64/zabbix-agent-4.4.10-1.el7.x86_64.rpm
# vim /etc/zabbix/zabbix_agentd.conf 
Server=192.168.1.10
# systemctl start zabbix-agent
# systemctl enable zabbix-agent

打开Zabbix前端安装向导

浏览器打开地址:http://192.168.1.10/zabbix/setup.php

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在登录界面输入默认的用户名Admin,密码zabbix即可登录到Zabbix服务器

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

三、Zabbix基本配置

1、Zabbix用户管理

1、修改Zabbix服务器默认用户Admin的初始密码

在这里插入图片描述

在这里插入图片描述

2、Zabbix添加被监控设备

1、Zabbix监控网络设备

在这里插入图片描述

在这里插入图片描述

创建主机群组

在这里插入图片描述

添加组名"网络设备"

在这里插入图片描述

创建主机

在这里插入图片描述

添加主机名称为"R1",在群组中选择"网络设备",移除默认的"agent代理程序的接口 ",添加"SNMP接口 ",并在地址栏中添加交换机的管理地址"192.168.10.110”

在这里插入图片描述

添加模板

在这里插入图片描述

在这里插入图片描述

将宏{$SNMP_COMMUNITY)的可用值修改成与交换机上配置的相同,为"centos"

在这里插入图片描述

创建图形

在这里插入图片描述

在图形配置界面,"监控项"栏中单击"添加"按钮

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2、Zabbix监控Linux服务器

# rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/4.4/rhel/7/x86_64/zabbix-agent-4.4.10-1.el7.x86_64.rpm
# vim /etc/zabbix/zabbix_agentd.conf
Server=192.168.1.10        # zabbix主机仍为127.0.0.1
ServerActive=192.168.1.10        # 被监控主机IP
Hostname=web1
# systemctl start zabbix-agent
# systemctl enable zabbix-agent

测试网络连接情况

# yum -y install zabbix-get
# zabbix_get -s 192.168.1.20 -k agent.hostname
web1

在Zabbix服务器上添加主机
在这里插入图片描述

在这里插入图片描述

添加模板

在这里插入图片描述

在这里插入图片描述

3、Zabbix监控Windows服务器

将压缩包zabbix_agents_3.2.0.wm.zip解压,客户端程序文件复制至 C:\zabbix,将conf文件中zabbix_agentd.win.conf配置文件同样复制至C:\zabbixo在配置文件中

在这里插入图片描述

修改zabbix_agentd.win.conf配置

在这里插入图片描述
在这里插入图片描述在这里插入图片描述
使用cmd命令行进行安装启动agent,常用参数有:-c,指定配置文件;-i安装;-s启动;-x 停止;-d卸载。

在这里插入图片描述

到Zabbix服务器上添加主机

在这里插入图片描述

选择模板

在这里插入图片描述

3、Zabbix自定义监控项

1、监控httpd进程

# vim /etc/zabbix/zabbix_agentd.d/check_httpd.sh
#!/bin/bash
result=`ps -ef | grep httpd | grep -v grep`
if [ -n "$result" ]
then
        echo '1'
else
        echo '0'
fi
# vim /etc/zabbix/zabbix_agentd.conf
UnsafeUserParameters=1                   # 用户自定义的脚本中可以包含特殊字符

设置自定义键值为"check_httpd", 要执行的命令为执行check_httpd. sh这个脚本

# vim /etc/zabbix/zabbix_agentd.d/userparameter_httpd.conf
UserParameter=check_httpd.sh /etc/zabbix/zabbix_scripts/check_httpd.sh
# systemctl restart zabbix-agent

创建监控项

在这里插入图片描述

在最新数据中查看是否获取到数据

在这里插入图片描述

2、磁盘吞吐量

# vim /etc/zabbix/zabbix_agentd.d/iostat.conf
UserParameter=iostat,iostat |awk '/^sda/{print $2}'
# systemctl restart zabbix-agent
# zabbix_agentd -p | grep iostat
iostat                                        [t|15.99]

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

四、zabbix-mysql分离

1、数据库主机设置

# yum -y install mariadb-server
# systemctl start mariadb
# mysql_secure_installation 
# mysql -uroot -p123456
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> grant all on zabbix.* to zabbix@'%' identified by '123.com';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> exit
Bye

2、zabbix服务器设置

# mysqldump -uroot -p123456 --databases zabbix > `date +%F-%H`_zabbix.sql
# cat 2020-07-04-18_zabbix.sql | mysql -h 192.168.1.30 -uzabbix -p123.com zabbix
# vim /etc/zabbix/zabbix_server.conf
DBHost=192.168.1.30
DBName=zabbix
DBUser=zabbix
DBPassword=123.com
# vim /etc/zabbix/web/zabbix.conf.php
$DB['TYPE']     = 'MYSQL';
$DB['SERVER']   = '192.168.1.30';
$DB['PORT']     = '0';
$DB['DATABASE'] = 'zabbix';
$DB['USER']     = 'zabbix';
$DB['PASSWORD'] = '123.com';
# systemctl restart zabbix-server httpd

五、zabbix监控报警

1、zabbix邮件报警

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

用户密码为验证码

在这里插入图片描述

在这里插入图片描述

2、邮件脚本报警

# systemctl stop postfix
# systemctl disable postfix
Removed symlink /etc/systemd/system/multi-user.target.wants/postfix.service.
# yum -y install mailx
# vim /etc/mail.rc
set from=XXXXXXXX@XX.com
set smtp=smtps://smtp.XX.com:465
set smtp-auth-user=XXXXXXXX@XX.com
set smtp-auth-password=123456
set smtp-auth=login
set ssl-verify=ignore
set nss-config-dir=/etc/pki/nssdb/
# yum -y install dos2unix
# cd /usr/lib/zabbix/alertscripts/
# vim email_notice.sh
#!/bin/bash
#export UTF-8
FILE=/tmp/mail.txt
echo "$3" > $FILE
dos2unix -k $FILE
/bin/mail -s "$2" $1 < $FILE
# chmod +x email_notice.sh

参数添加3个:{ALERT.SENDTO}、{ALERT.SUBJECT}、{ALERT.MESSAGE}”

在这里插入图片描述

在这里插入图片描述

3、微信报警

# cd /usr/lib/zabbix/alertscripts/
# vim weixin.py 
#!/usr/bin/env python
#-*- coding: utf-8 -*-
import requests
import sys
import os
import json
import logging

logging.basicConfig(level = logging.DEBUG, format = '%(asctime)s, %(filename)s, %(levelname)s, %(message)s',
datefmt = '%a, %d %b %Y %H:%M:%S',
filename = os.path.join('/tmp','weixin.log'),
filemode = 'a')

corpid='微信企业号corpid'
appsecret='应用的Secret'
agentid=应用的id
#获取accesstoken
token_url='https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=' + corpid + '&corpsecret=' + appsecret
req=requests.get(token_url)
accesstoken=req.json()['access_token']
# chmod 777 weixin.py
# cd /usr/lib/zabbix/alertscripts/
# dos2unix -k weixin.py 
dos2unix: converting file weixin.py to Unix format ...
# touch /tmp/weixin.log
# chown zabbix:zabbix /tmp/weixin.log

在这里插入图片描述

4、修改邮件通知内容

在这里插入图片描述

在这里插入图片描述

Problem: {EVENT.NAME}故障{TRIGGER.STATUS},服务器:{HOSTNAME1}发生: {TRIGGER.NAME}故障!
告警主机:{HOSTNAME1}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}

在这里插入图片描述

恢复{TRIGGER.STATUS}, 服务器:{HOSTNAME1}: {TRIGGER.NAME}已恢复!
告警主机:{HOSTNAME1}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}

六、zabbix模版监控

1、percona模版监控mysql

zabbix模板文件下载

# yum -y install php php-mysql
# mkdir -p /data/soft
# cd /data/soft/
# wget https://www.percona.com/downloads/percona-monitoring-plugins/percona-monitoring-plugins-1.1.8/binary/redhat/7/x86_64/percona-zabbix-templates-1.1.8-1.noarch.rpm
# rpm -ivh percona-zabbix-templates-1.1.8-1.noarch.rpm 
# cd /var/lib/zabbix/percona/scripts/
# vim get_mysql_stats_wrapper.sh 
RES=`HOME=~zabbix mysql -uroot -p123456 -e 'SHOW SLAVE STATUS\G' | egrep '(Slave_IO_Running|Slave_SQL_Running):' | awk -F: '{print $2}' | tr '\n' ','`
# vim ss_get_mysql_stats.php
$mysql_user = 'root';
$mysql_pass = '123456';
# cd ../templates/
# cp userparameter_percona_mysql.conf /etc/zabbix/zabbix_agentd.d/
# systemctl restart zabbix-agent 

在这里插入图片描述

在这里插入图片描述

2、模版监控nginx状态

# yum -y install epel-release
# yum -y install nginx
# vim /etc/nginx/nginx.conf
http {
server {
......
location /nginx_status {
           stub_status on;
           access_log off;
        }
......
# rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/4.4/rhel/7/x86_64/zabbix-agent-4.4.10-1.el7.x86_64.rpm
Server=192.168.1.10
# systemctl start zabbix-agent
# cd /etc/zabbix/zabbix_agentd.d/
# vim nginx_monitor.sh
#!/bin/bash
NGINX_COMMAND=$1
CACHEFILE="/tmp/nginx_status.txt"
CMD="/usr/bin/curl http://127.0.0.1/nginx_status/"
if [ ! -f $CACHEFILE  ];then
   $CMD >$CACHEFILE 2>/dev/null
fi
# Check and run the script
TIMEFLM=`stat -c %Y $CACHEFILE`
TIMENOW=`date +%s`

if [ `expr $TIMENOW - $TIMEFLM` -gt 60 ]; then
    rm -f $CACHEFILE
fi
if [ ! -f $CACHEFILE  ];then
   $CMD >$CACHEFILE 2>/dev/null
fi

nginx_active(){
         grep 'Active' $CACHEFILE| awk '{print $NF}'
         exit 0;
}
nginx_reading(){
         grep 'Reading' $CACHEFILE| awk '{print $2}'
         exit 0;
}
nginx_writing(){
         grep 'Writing' $CACHEFILE | awk '{print $4}'
         exit 0;
}
nginx_waiting(){
         grep 'Waiting' $CACHEFILE| awk '{print $6}'
         exit 0;
}
nginx_accepts(){
         awk NR==3 $CACHEFILE| awk '{print $1}' 
         exit 0;
}
nginx_handled(){
         awk NR==3 $CACHEFILE| awk '{print $2}' 
         exit 0;
}
nginx_requests(){
         awk NR==3 $CACHEFILE| awk '{print $3}'
         exit 0;
}

case $NGINX_COMMAND in
    active)
        nginx_active;
        ;;
    reading)
        nginx_reading;
        ;;
    writing)
        nginx_writing;
        ;;
    waiting)
        nginx_waiting;
        ;;
    accepts)
        nginx_accepts;
        ;;
    handled)
        nginx_handled;
        ;;
    requests)
        nginx_requests;
        ;;
    *)
echo 'Invalid credentials';
exit 2;
esac
# chmod +x nginx_monitor.sh 
# vim nginx_status.conf
UserParameter=nginx_status[*],/bin/bash /etc/zabbix/zabbix_agentd.d/nginx_monitor.sh $1
# systemctl restart zabbix-agent
# touch /tmp/nginx_status.txt
# chown zabbix:zabbix /tmp/nginx_status.txt 
# systemctl start nginx

zabbix导入zbx_nginx_templates模板文件

七、zabbix自动发现和自动注册

1、自动发现

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2、自动注册

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

八、主动模式和被动模式

默认为被动模式:100个监控项要100个来回,要的时候才返回
主动模式:100个监控项1个回合,将所需要的100个打包,然后一次发过去,发过去之后,客户端全部执行完再一次返回给服务端。
更改为主动模式:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

0

评论区