Zabbix监控部署

准备三台虚拟机,最小化安装,最低配版,IP:10/11/12

硬盘10G,镜像文件CentOS-7.5-x86_64-Minimal-1804

VMware创建虚拟机后,使用NAT模式配置静态IP

1.查看本地NAT模式的网关路径:
VMware软件-->查看-->虚拟网络编辑器-->VMnet8-->VMnet信息-->NAT设置-->网关IP(G):192.168.162.2
2.虚机静态IP配置
[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33 
TYPE=Ethernet
BOOTPROTO=static
NAME=ens33
UUID=44128c3a-0303-48ba-903a-c4c1ed353b07
DEVICE=ens33
NETMASK=255.255.255.0
IPADDR=192.168.162.10
GATEWAY=192.168.162.2
DNS1=8.8.8.8
DNS2=114.114.114.114

[root@localhost ~]# systemctl restart network 
[root@localhost ~]# ping baidu.com 

更改主机名

[root@localhost ~]# hostnamectl set-hostname z0
[root@localhost ~]# vi /etc/hosts
#添加主机名映射
192.168.162.10  z0
192.168.162.11  z1
192.168.162.12  z2

更改yum源

[root@localhost ~]# yum -y install wget
[root@localhost ~]# mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
[root@localhost ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# vi CentOS-Base.repo
#进去之后给所有‘http’改成‘https’
[root@localhost yum.repos.d]# yum clean all
[root@localhost yum.repos.d]# yum makecache

关闭selinux与防火墙

[root@localhost ~]# systemctl disable firewalld
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl status firewalld
[root@localhost ~]# sed -i s/SELINUX=enforcing/SELINUX=disabled/ /etc/selinux/config
[root@localhost ~]# cat /etc/selinux/config |grep disabled 

添加免密通信

#安装软件工具
[root@localhost yum.repos.d]# yum -y  install  ssh-keygen ssh-copy-id 
#生成公钥私钥
#参数说明:
#-N '' 密码为空;
#-f id_rsa 是指保存文件为 ~/.ssh/id_rsa 和~/.ssh/id_rsa.pub;
#-q 静默模式,和 unzip 的-q 参数一样的;
#-b 位数,可以指定 1024 这类的,默认是 2048;
#-C 提供一个新注释
[root@localhost yum.repos.d]# ssh-keygen -t rsa -N ''  -f ~/.ssh/id_rsa -q -b 2048 -C “zabbix”
#分发公钥
[root@localhost yum.repos.d]#  ssh-copy-id -i ~/.ssh/id_rsa.pub -p 22 root@z0
[root@localhost yum.repos.d]#  ssh-copy-id -i ~/.ssh/id_rsa.pub -p 22 root@z1
[root@localhost yum.repos.d]#  ssh-copy-id -i ~/.ssh/id_rsa.pub -p 22 root@z2

安装虚机基本工具包

[root@z0 ~]#  yum -y install vim bash-completion lrzsz tree expect rsync pcre-devel openssl-devel gcc gcc-c++

部署Zabbix监控平台

1.理清拓扑,准备源码包,安装所需的依赖包
#md绘制图表说明
1.md文档空白处敲击如下源码:
|主机名|网卡名|IP|作用|
2.回车
3.利用工具本身的左右对齐及表格行列数工具再做编辑
拓扑
主机名 网卡名 IP 作用
z0 ens33 192.168.162.10 zabbix_服务端(zabbix)
z1 ens33 192.168.162.11 zabbix_客户端(web1)
z2 ens33 192.168.162.12 zabbix_客户端(web2)
#源码包
[root@z0 ~]# ll
total 19144
-rw-r--r--. 1 root root   981687 Oct 28 06:52 nginx-1.12.2.tar.gz
-rw-r--r--. 1 root root 17132537 Oct 28 06:52 zabbix-3.4.4.tar.gz
#安装所需依赖包
[root@z0 ~]# yum -y install php php-mysql mariadb mariadb-devel mariadb-server php-fpm net-snmp-devel curl-devel libevent-devel  
2.部署LNMP环境
#源码安装nginx
[root@z0 ~]# tar -xf nginx-1.12.2.tar.gz 
[root@z0 ~]# cd nginx-1.12.2
[root@z0 nginx-1.12.2]# ./configure --with-http_ssl_module
[root@z0 nginx-1.12.2]# make && make install
#修改nginx默认配置,使其支持php动态网站
[root@z0 nginx-1.12.2]# vim /usr/local/nginx/conf/nginx.conf
http{
...
#64行下面额外添加5行设置
#1.缓存php生成的页面内容,8个16k
            fastcgi_buffers 8 16k;
#2.缓存php生产的头部信息            
            fastcgi_buffer_size 32k;
#3.连接PHP的超时时间            
            fastcgi_connect_timeout 300;
#4.发送请求的超时时间          
            fastcgi_send_timeout 300;
#5.读取请求的超时时间            
            fastcgi_read_timeout 300;
#打开原有的注释
        location ~ \.php$ {
            root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
#修改此处配置为fastcgi.conf,默认的是个bug        
            include        fastcgi.conf;
        }

#启动LNMP
[root@z0 nginx-1.12.2]# systemctl start  mariadb && systemctl enable  mariadb
[root@z0 nginx-1.12.2]# systemctl start  php-fpm && systemctl enable  php-fpm
#创建快捷方式
[root@z0 nginx-1.12.2]# ln -s /usr/local/nginx/sbin/nginx /sbin/nginx
#设置nginx开机自启
[root@z0 nginx-1.12.2]# vi  /usr/lib/systemd/system/nginx.service 

[Unit]
Description=nginx
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true

[Install]
WantedBy=multi-user.target

#配置说明:
[Unit]:服务的说明

Description:描述服务
After:描述服务类别
[Service]:服务运行参数的设置
注意:服务启动、重启、停止命令全部要求使用绝对路径

Type=forking:后台运行的形式
ExecStart:服务的具体运行命令
ExecReload:重启命令
ExecStop:停止命令
PrivateTmp=True:表示给服务分配独立的临时空间

[Install]:
运行级别下服务安装的相关设置,可设置为多用户,即系统运行级别为3

[root@z0 nginx-1.12.2]# systemctl start nginx.service && systemctl enable  nginx.service
[root@z0 nginx-1.12.2]# vi /usr/local/nginx/html/test.php
[root@z0 nginx-1.12.2]# cat  /usr/local/nginx/html/test.php

#测试LNMP
[root@z0 nginx-1.12.2]# curl http://localhost/test.php
3.部署监控服务器Zabbix Server
#源码安装zabbix server
[root@z0 ~]# tar -xf zabbix-3.4.4.tar.gz
[root@z0 ~]# cd zabbix-3.4.4
[root@z0 zabbix-3.4.4]# ./configure --enable-server --enable-proxy --enable-agent --with-mysql=/usr/bin/mysql_config --with-net-snmp --with-libcurl
#--enable-server安装部署zabbix服务器端软件
#--enable-agent安装部署zabbix被监控端软件
#--enable-proxy安装部署zabbix代理相关软件
#--with-mysql配置mysql_config路径
#--with-net-snmp允许zabbix通过snmp协议监控其他设备
#--with-libcurl安装相关curl库文件,这样zabbix就可以通过curl连接http等服务,测试被监控主机服务的状态
[root@z0 zabbix-3.4.4]# make && make install

#创建数据库
[root@z0 zabbix-3.4.4]# mysql
#支持中文字符集
mysql> create database zabbix character set utf8;
#授权并加密
mysql> grant all on zabbix.* to zabbix@'localhost' identified by 'zabbix';
#导入zabbix源码包中的数据库文件(顺序固定,不可变更)
[root@z0 zabbix-3.4.4]# mysql -uzabbix -pzabbix zabbix < database/mysql/schema.sql
[root@z0 zabbix-3.4.4]# mysql -uzabbix -pzabbix zabbix < database/mysql/images.sql
[root@z0 zabbix-3.4.4]# mysql -uzabbix -pzabbix zabbix < database/mysql/data.sql
#导入zabbix的web界面到nginx并做授权
[root@z0 zabbix-3.4.4]# cd frontends/php/
[root@z0 php]# cp -r * /usr/local/nginx/html/ 
[root@z0 php]# chmod -R 777 /usr/local/nginx/html/* 
#修改服务端配置文件
[root@z0 php]# vim /usr/local/etc/zabbix_server.conf
#需要修改的配置如下
#1.设置日志,仅查看以下即可
 38 LogFile=/tmp/zabbix_server.log
#2.数据库主机,默认该行被注释
 85 DBHost=localhost
#3.设置数据库名称
95 DBName=zabbix
#4.设置数据库账户
111 DBUser=zabbix
#5.设置数据库密码,默认该行被注释
119 DBPassword=zabbix

#创建用户,启动服务,检查端口
#不创建用户无法启动服务
[root@z0 php]# useradd -s /sbin/nologin zabbix


#启动服务端-服务,并设置开机自启
[root@z0 php]# cd ~/zabbix-3.4.4/misc/init.d/fedora/core/
[root@z1 core]# cp  zabbix_server  /etc/init.d/
[root@z1 core]# /etc/init.d/zabbix_server start
[root@z1 core]# systemctl start zabbix_server
[root@z1 core]# systemctl enable zabbix_server
#测试服务端口
[root@z0 core]# cd ~/zabbix-3.4.4/frontends/php/
[root@z0 php]# ss -ntulp |grep zabbix_server |grep 10051
#修改客户端配置文件
[root@z0 php]# vim /usr/local/etc/zabbix_agentd.conf
#需要修改的配置如下:
#1.设置日志文件
 30 LogFile=/tmp/zabbix_agentd.log
#2.允许哪些主机监控本机
 93 Server=127.0.0.1,192.168.162.10
#3.允许哪些主机通过主动模式监控本机
134 ServerActive=127.0.0.1,192.168.162.10
#4.设置本机主机名
145 Hostname=z0
#5.是否允许自定义key
280 UnsafeUserParameters=1





#启动客户端-服务,检查端口
[root@z0 php]# zabbix_agent
[root@z0 php]# ss -ntulp |grep zabbix_agentd|grep 10050





#浏览器地址栏中访问  http://192.168.162.10/index.php
#首次打开页面飘红报错正常,因为还有依赖及配置需要修改

[root@z0 php]# yum -y install yum -y install  php-gd php-xml php-bcmath php-mbstring
[root@z0 php]# vim /etc/php.ini
#需要修改的配置如下:
#1.最大执行时间,单位s
384 max_execution_time = 300
#2.服务器接收数据的时间限制,单位s
394 max_input_time = 300
#3.内存容量限制
405 memory_limit = 128M
#4.POST数据最大容量
672 post_max_size = 32M
#5.设置时区
878 date.timezone =Asia/Shanghai

[root@z0 php]# systemctl restart php-fpm &&  systemctl enable php-fpm

#浏览器地址栏中再次访问  http://192.168.162.10/index.php
#全部显示"OK",才算正常
#第一次正常打开只需要添加:数据库端口3306;数据库用户密码zabbix进入下一步
#用户admin,密码zabbix登录,成功登录后在个人设置里将界面语言修改为中文
4.部署被监控主机Zabbix Agent
[root@z1 ~]# useradd -s /sbin/nologin  zabbix
[root@z1 ~]# yum -y install gcc pcre-devel
[root@z1 ~]# tar -xf zabbix-3.4.4.tar.gz 
[root@z1 ~]# cd zabbix-3.4.4
[root@z1 zabbix-3.4.4]# ./configure --enable-agent
[root@z1 zabbix-3.4.4]# make && make install 

[root@z1 zabbix-3.4.4]# vim /usr/local/etc/zabbix_agentd.conf
#需要修改的配置如下:
#1.监控异常后,是否允许服务器远程过来执行命令,如重启某个服务
 69 EnableRemoteCommands=1
#2.谁可以监控本机(被动监控模式)
 93 Server=127.0.0.1,192.168.162.10
#3.谁可以监控本机(主动监控模式)
134 ServerActive=127.0.0.1,192.168.162.10
#4.本监控主机自己的主机名
145 Hostname=z1
#是否允许自定义key监控
280 UnsafeUserParameters=1

#设置开机自启,启动服务
[root@z1 ~]# cd zabbix-3.4.4/misc/init.d/fedora/core/
[root@z1 core]# cp  zabbix_agentd  /etc/init.d/
[root@z1 core]# /etc/init.d/zabbix_agentd start
[root@z1 core]# systemctl start zabbix_agentd
[root@z1 core]# systemctl enable zabbix_agentd

#另外一台机器也做类似操作,只有中间配置主机名z1变为z2即可,其他相同

配置及使用Zabbix监控系统

1.添加监控主机
配置-->主机-->创建主机

主机名称:zabbix_client_web1
可见的名称:zabbix_client_web1
群组:linux servers
agent代理程序及端口:IP地址192.168.162.11

-->添加
另外一台也是类似配置,IP地址192.168.162.12
2.为被监控主机添加监控模板
配置-->主机-->被监控主机名(点击)-->模板
链接的模板:
链接指示器:选择-->Template OS linux
-->添加
-->更新
3.查看监控数据
监测中-->最新数据
主机群组:linux servers
主机:zabbix_client_web1
-->应用
-->选中主机及左下角-显示数据图

自定义Zabbix监控项目

1.被监控主机中创建自定义的监控模板
[root@z1 ~]# vim /usr/local/etc/zabbix_agentd.conf
#打开注释:加载配置文件目录
264 Include=/usr/local/etc/zabbix_agentd.conf.d/
[root@z1 ~]# cd /usr/local/etc/zabbix_agentd.conf.d/
[root@z1 zabbix_agentd.conf.d]# vim count.line.passwd
#自定义key语法格式: UserParameter=自定义key名称,命令
UserParameter=count.line.passwd,wc -l /etc/passwd|awk '{print $1}'
[root@z1 zabbix_agentd.conf.d]# /etc/init.d/zabbix_agentd stop
[root@z1 zabbix_agentd.conf.d]# zabbix_agentd
[root@z1 zabbix_agentd.conf.d]# zabbix_get -s 127.0.0.1 -k count.line.passwd
2.Zabbix监控界面中添加刚刚创建的自定义监控模板
1)创建模板
配置-->模板-->创建模板(Template)
模板名称: count line passwd
可见的名称: count line passwd 
新的群组:count—passwd

2)创建应用集(Application)
配置-->模板-->创建模板-->创建应用集
名称:count_line_passwd

3)创建监控项目(Item)
配置-->模板-->创建模板-->创建应用集-->创建监控项
名称:count_line_passwd_item
类型:Zabbix_agent
键值(key):count_line_passwd
信息类型:数字(无正负)
应用集:count_line_passwd

4)创建图形
配置-->模板-->创建模板-->创建应用集-->创建监控项-->创建图形
名称:count_line_passwd_graph
监控项: count_line_passwd_idem -->	zabbix_agent_web1: count_line_passwd_idem

5)将模板链接到被监控主机
配置-->主机-->模板--链接的模板
链接指示器:count_line_passwd
-->添加

6)查看监控数据图形
监控中-->图形
群组:Linux
主机:zabbix_client_web1
图形:count_line_passwd_graph
3.自定义监控项目应用
a.监控Nginx服务状态
#自定义key
#准备环境,部署nginx软件,开启status模块,启动服务,测试
[root@z1 ~]# ll
total 17696
-rw-r--r--.  1 root root   981687 Oct 28 06:52 nginx-1.12.2.tar.gz
drwxr-xr-x. 14 1001 1001     4096 Feb  3 09:07 zabbix-3.4.4
-rw-r--r--.  1 root root 17132537 Oct 28 06:52 zabbix-3.4.4.tar.gz
[root@z1 ~]# tar -xf nginx-1.12.2.tar.gz 
[root@z1 ~]# cd nginx-1.12.2/
[root@z1 nginx-1.12.2]# ./configure \
> --with-http_stub_status_module
[root@z1 nginx-1.12.2]# make && make install
[root@z1 nginx-1.12.2]# vim /usr/local/nginx/conf/nginx.conf
#56行下方插入
 57         location /status {
 58                         stub_status on;
 59                 }
[root@z1 nginx-1.12.2]# /usr/local/nginx/sbin/nginx 
[root@z1 nginx-1.12.2]# ss -nutlp|grep 80
[root@z1 nginx-1.12.2]# curl http://192.168.162.11/status
[root@z1 nginx-1.12.2]# vim /usr/local/etc/zabbix_agentd.conf.d/nginx.status
UserParameter=nginx.status[*],/usr/local/bin/nginx_status.sh $1
[root@z1 nginx-1.12.2]# systemctl restart zabbix_agentd
[root@z1 nginx-1.12.2]# vim /usr/local/bin/nginx_status.sh
#!/bin/bash
case $1 in
active)
    curl -s http://192.168.2.100/status |awk '/Active/{print $NF}';;
waiting)
    curl -s http://192.168.2.100/status |awk '/Waiting/{print $NF}';;
accepts)
    curl -s http://192.168.2.100/status |awk 'NR==3{print $2}';;
esac
[root@z1 nginx-1.12.2]# chmod +x /usr/local/bin/nginx_status.sh 
[root@z1 nginx-1.12.2]# zabbix_get -s 127.0.0.0 -k 'nginx_status[accepts]'
#再将新的键值添加至web监控项中

Zabbix自动报警

邮件报警
https://blog.csdn.net/liuxiangyang_/article/details/85284019
微信报警
https://www.jianshu.com/p/bc20afc31a86
短信报警
https://www.cnblogs.com/charles1ee/p/10374738.html
电话报警
https://zhuanlan.zhihu.com/p/89295142

Zabbix自动发现

https://www.jianshu.com/p/3cb9073ea6af

Zabbix自动注册

https://blog.csdn.net/linux_s2018/article/details/80406470

Zabbix主动监控

[root@z2 ~]# vim /usr/local/etc/zabbix_agentd.conf 
//注释该行,允许谁监控本机
#Server=127.0.0.1,192.168.192.10
#被动监控时启动多个进程
#设置为0,则禁止被动监控,不启动zabbix_agentd服务
StartAgents=0            
#允许哪些主机监控本机(主动模式),一定要取消127.0.0.1
ServerActive=192.168.192.10
#告诉监控服务器,是谁发的数据信息
#一定要和zabbix服务器配置的监控主机名称一致(后面设置)
Hostname=zabbix_client_web2
#默认120秒检测一次
RefreshActiveChecks=120
#允许自定义key
UnsafeUserParameters=1            
Include=/usr/local/etc/zabbix_agentd.conf.d/
[root@z2 ~]# systemctl stop zabbix_agentd 
[root@z2 ~]# zabbix_agentd 
#监控页面配置部署
https://www.jianshu.com/p/ddc7f2dc51ae

Zabbix监控报错

1.客户端无法与监控服务器通信

--zabbix_get [31816]: Get value error: cannot connect to [[127.0.0.0]:10050]: [101] Network is unreachable

#检查配置:原有的配置未注释掉
[root@z2 etc]# vim zabbix_agentd.conf
#注销原有的server
 91 Server=127.0.0.1,192.168.162.10
#重启服务
[root@z2 etc]# systemctl restart zabbix_agentd.service 
[root@z2 etc]# pwd
/usr/local/etc
#刷新web监控数据页面,成功

2.监控服务器挂了

--Zabbix agent on Zabbix server is unreachable for 5 minutes
--Get value from agent failed: cannot connect to [[127.0.0.1]:10050]: [111] Connection refused


#服务端需要同时开启服务端及客户端服务,客户端-服务挂了重启服务
[root@z0 php]# systemctl restart zabbix_agentd

3.看不了报警邮件

--[root@z1 ~]# mail
-bash: mail: command not found

#mail命令工具未安装
[root@z1 ~]# yum -y install mailx
[root@z1 ~]# mail
No mail for root

4.各种“Not Supported”

[root@z2 ~]# vim /usr/local/etc/zabbix_agentd.conf
#Range: 1-30
Timeout=10
[root@z2 ~]# systemctl stop zabbix_agentd 
[root@z2 ~]# zabbix_agentd 

你可能感兴趣的:(监控)