zabbix监控部署

监控的目的

  • 报告系统运行状况:
    — 每一部分必须同时监控
    — 内容包括吞吐量、反应时间、使用率等

  • 提前发现问题
    — 进行服务器性能调整前,知道调整什么
    — 找出系统的瓶颈在什么地方

监控的资源类别

  • 公开数据
    — web、ftp、ssh、数据库等应用服务
    — tcp或udp端口

  • 私有数据
    — cpu、内存、磁盘、网卡流量等使用信息
    — 用户、进程等运行信息

常用系统监控命令:

[root@zabbix ~]# free -m		//查看内存信息
[root@zabbix ~]# df -h		//查看磁盘挂载信息
[root@zabbix ~]# swapon -s		//查看交换分区
[root@zabbix ~]# iostat		//查看磁盘信息
[root@zabbix ~]# uptime		//查看cpu负载
[root@zabbix ~]# ifconfig		//查看网卡信息
[root@zabbix ~]# netstat -ntulap		//查看端口信息
[root@zabbix ~]# ping		//查看网络连接信息
[root@zabbix ~]# ps aux		//查看进程信息

自动化监控系统

  • Cacti:基于snmp协议的监控软件,强大的绘图能力
  • Nagios:基于Agent监控,强大的状态检查与报警机制,插件多,自己编写监控键本潜入到Nagios非常方便
  • Zabbix:基于多种监控机制,支持分布式监控

Zabbix简介

  • 一个高度集成的监控解决方案
  • 可以实现企业级的开源分布式监控
  • 通过C/S模式采集监控数据
  • 通过B/S模式实现web管理

zabbix监控拓扑
在这里插入图片描述

  • 监控服务器
    — 监控服务器可以通过snmp或agent采集数据
    — 数据可以写入mysql、oracle等数据库
    — 服务器使用lnmp实现web前端的管理

  • 被监控主机
    — 被监控主机需要安装agent
    — 常见的网络设备一般支持snmp

一、部署zabbix
1 服务端部署LNMP环境

[root@zabbix ~]# yum  -y install gcc pcre-devel openssl-devel zlib-devel  //安装依赖包
[root@zabbix ~]# ls
anaconda-ks.cfg                         
php-bcmath-5.4.16-42.el7.x86_64.rpm    
initial-setup-ks.cfg                    
php-fpm-5.4.16-42.el7.x86_64.rpm       
libevent-devel-2.0.21-4.el7.x86_64.rpm  
php-mbstring-5.4.16-42.el7.x86_64.rpm  
nginx-1.12.2.tar.gz                     
zabbix.tar.gz 
[root@zabbix ~]# tar -xf nginx-1.12.2.tar.gz
[root@zabbix ~]# cd nginx-1.12.2/
[root@zabbix nginx-1.12.2]# ./configure --with-http_ssl_module
[root@zabbix nginx-1.12.2]# make
[root@zabbix nginx-1.12.2]# make install
[root@zabbix nginx-1.12.2]# ls /usr/local/nginx/
conf  html  logs  sbin
[root@zabbix nginx-1.12.2]# yum -y install php php-mysql mariadb
[root@zabbix nginx-1.12.2]# yum -y install mariadb-server mariadb-devel
[root@zabbix nginx-1.12.2]# cd ..
[root@zabbix ~]# yum -y install php-fpm-5.4.16-42.el7.x86_64.rpm
#检查安装环境
[root@zabbix ~]# rpm -q php php-mysql mariadb mariadb-server
php-5.4.16-42.el7.x86_64
php-mysql-5.4.16-42.el7.x86_64
mariadb-5.5.56-2.el7.x86_64
mariadb-server-5.5.56-2.el7.x86_64
[root@zabbix ~]# rpm -q php-fpm
php-fpm-5.4.16-42.el7.x86_64
[root@zabbix ~]# rpm -q mariadb-devel 
mariadb-devel-5.5.56-2.el7.x86_64
[root@zabbix ~]# ls /usr/local/nginx/
conf  html  logs  sbin

2 配置nginx

[root@zabbix ~]# vim /usr/local/nginx/conf/nginx.conf
17 http {
18     fastcgi_buffers 8 16k;       #缓存php生成的页面内容,8个16k
19     fastcgi_buffer_size 32k;     #缓存php生产的头部信息
20     fastcgi_connect_timeout 300; #连接PHP的超时时间
21     fastcgi_send_timeout 300;    #发送请求的超时时间
22     fastcgi_read_timeout 300;    #读取请求的超时时间
65         location ~ \.php$ {		#开启解释php代码
66             root           html;
67             fastcgi_pass   127.0.0.1:9000;
68             fastcgi_index  index.php;
69         #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
70             include        fastcgi.conf
71         }
[root@zabbix ~]# /usr/local/nginx/sbin/nginx -t		//检查配置文件是否修改正确
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

3 开启服务

[root@zabbix ~]# systemctl start mariadb
[root@zabbix ~]# netstat -ntulp| grep :3306
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      9099/mysqld         
[root@zabbix ~]# systemctl start php-fpm
[root@zabbix ~]# netstat -ntulp| grep :9000
tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      9157/php-fpm: maste 
[root@zabbix ~]# /usr/local/nginx/sbin/nginx 
[root@zabbix ~]# netstat -ntulp| grep :80
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      9167/nginx: master 

4 测试php页面

[root@zabbix ~]# vim /usr/local/nginx/html/test.php

[root@zabbix ~]# curl http://localhost/test.php
33

5 安装zabbix源码

[root@zabbix ~]# yum -y install libevent-devel-2.0.21-4.el7.x86_64.rpm
[root@zabbix ~]# yum -y install net-snmp-devel curl-devel
[root@zabbix ~]# tar -xf zabbix-3.4.4.tar.gz 
[root@zabbix ~]# cd zabbix-3.4.4/
[root@zabbix zabbix-3.4.4]# ./configure --enable-server --enable-proxy  \
--enable-agent --with-mysql=/usr/bin/mysql_config \
--with-net-snmp --with-libcurl
[root@zabbix zabbix-3.4.4]# make install
[root@zabbix zabbix-3.4.4]# ls /usr/local/etc/		//查看配置文件
zabbix_agentd.conf    zabbix_proxy.conf    zabbix_server.conf
zabbix_agentd.conf.d  zabbix_proxy.conf.d  zabbix_server.conf.d
[root@zabbix zabbix-3.4.4]# ls /usr/local/bin/		//查看命令
zabbix_get  zabbix_sender

6 初始化zabbix

[root@zabbix zabbix-3.4.4]# mysql
MariaDB [(none)]> creat database zabbix character set utf8;
MariaDB [(none)]> grant all on zabbix.* to zabbix@'localhost' identified by 'zabbix';
[root@zabbix zabbix-3.4.4]# cd database/
[root@zabbix database]# ls
ibm_db2  Makefile  Makefile.am  Makefile.in  mysql  oracle  postgresql  sqlite3
[root@zabbix mysql]# mysql -uzabbix -pzabbix zabbix
MariaDB [zabbix]> show tables;
[root@zabbix mysql]# cd ../..
[root@zabbix zabbix-3.4.4]# cp -a frontends/php/* /usr/local/nginx/html/
[root@zabbix zabbix-3.4.4]# chmod -R 777 /usr/local/nginx/html

7 修改配置文件,启动服务

[root@zabbix zabbix-3.4.4]# vim /usr/local/etc/zabbix_server.conf		//修改监控服务端配置文件
38 LogFile=/tmp/zabbix_server.log		//日志文件
85 DBHost=localhost			//数据库主机(本机)
95 DBName=zabbix		//设置数据库名称
111 DBUser=zabbix		//设置数据库账户
119 DBPassword=zabbix		//设置数据库密码
[root@zabbix zabbix-3.4.4]# useradd zabbix
[root@zabbix zabbix-3.4.4]# zabbix_server 
[root@zabbix zabbix-3.4.4]# netstat -ntulp |grep :10051
tcp        0      0 0.0.0.0:10051           0.0.0.0:*               LISTEN      19134/zabbix_server
[root@zabbix zabbix-3.4.4]# vim /usr/local/etc/zabbix_agentd.conf		//修改i监控客户端配置文件(这里指本机)
30 LogFile=/tmp/zabbix_agentd.log		//设置日志文件
93 Server=127.0.0.1, 192.168.2.55		//主动监控服务器IP
134 ServerActive=127.0.0.1:10051		//监控服务器ip地址端口号
145 Hostname=Zabbix server			//设置本机主机名
280 UnsafeUserParameters=1```	//启用自定义key
[root@zabbix zabbix-3.4.4]# zabbix_agentd 
[root@zabbix zabbix-3.4.4]# netstat -ntulp |grep :10050
tcp        0      0 0.0.0.0:10050           0.0.0.0:*               LISTEN      22395/zabbix_agentd

8 初始化访问zabbix监控页面
在这里插入图片描述
第二步检查配置环境时报错,根据错误提示修改相应配置文件,并安装依赖包

[root@zabbix zabbix-3.4.4]# vim /etc/php.ini
384 max_execution_time = 300		    //最大执行时间
394 max_input_time = 300		        //服务器接收数据的时间限制
672 post_max_size = 16M		            //POST数据最大容量
878 date.timezone = Asia/Shanghai		//设置时区
[root@zabbix zabbix-3.4.4]# systemctl restart php-fpm
[root@zabbix ~]# yum -y install php-bcmath-5.4.16-42.el7.x86_64.rpm
[root@zabbix ~]# yum -y install php-mbstring-5.4.16-42.el7.x86_64.rpm
[root@zabbix ~]# yum -y install php-gd php-xml php-ldap
[root@zabbix ~]# systemctl restart php-fpm

刷新页面,没有提示错误,配置生效
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

[root@zabbix ~]# ls /usr/local/nginx/html/conf/zabbix.conf.php		//安装完成后的配置文件
/usr/local/nginx/html/conf/zabbix.conf.php

在这里插入图片描述
初始登录用户名和密码:admin,zabbix
登录后,修改管理员密码和语言
基本使用:
(1)查看监控模板(配置—>模板)
(2)查看已监控的主机(配置—>主机—>启用)
(3)查看监控信息(监测中—>最新数据—>主机—>zabbix server)

9 配置zabbix监控服务(监控web33和web44主机)
(1)安裝zabbix客戶端zabbix_agentd

[root@web33 ~]# yum -y install httpd		//以web33主机为例
[root@web33 ~]# echo web33  > /var/www/html/test.html
[root@web33 ~]# systemctl start httpd
[root@web33 ~]# curl http://localhost/test.html
[root@web33 ~]# vim mount_zabbix.sh
#!/bin/bash
useradd -s /sbin/nologin zabbix
yum -y install gcc pcre-devel
tar -xf zabbix-3.4.4.tar.gz
cd zabbix-3.4.4/
./configure --enable-agent
make && make install
[root@web33 ~]# ./mount_zabbix.sh		//安装zabbix源码包
[root@web33 ~]# ls /usr/local/sbin/
zabbix_agentd
[root@web33 ~]# ls /usr/local/etc/
zabbix_agentd.conf  zabbix_agentd.conf.d
[root@web33 ~]# vim /usr/local/etc/zabbix_agentd.conf		//修改配置文件
30 LogFile=/tmp/zabbix_agentd.log
93 Server=127.0.0.1, 192.168.2.55		//允许哪些主机监控本机
134 ServerActive=192.168.2.55:10051		//监控服务器ip和端口
145 Hostname=web33		                //被监控主机的名称
280 UnsafeUserParameters=1		        //允许自定义监控脚本
[root@web33 ~]# zabbix_agentd 
[root@web33 ~]# netstat -ntulp |grep :10050
tcp        0      0 0.0.0.0:10050           0.0.0.0:*               LISTEN      20859/zabbix_agentd

(2)监控网站服务器web33和web44
访问http://192.168.2.55/index.php
a. 配置 —>主机—>创建主机—>主机名称、可见的名称、群组、ip地址—>模板—>链接指示器:选择相应模板,添加
b. 配置—>主机—>可用性
(3)自定义监控命令

[root@web33 ~]# sed -n '280p' /usr/local/etc/zabbix_agentd.conf
UnsafeUserParameters=1		
[root@web33 ~]# grep -n 'Include' /usr/local/etc/zabbix_agentd.conf
255:### Option: Include
261:# Include=
263:# Include=/usr/local/etc/zabbix_agentd.userparams.conf
264:# Include=/usr/local/etc/zabbix_agentd.conf.d/
265:# Include=/usr/local/etc/zabbix_agentd.conf.d/*.conf
[root@web33 ~]# sed -i '265s/^#//' /usr/local/etc/zabbix_agentd.conf		//去掉265行注释
[root@web33 ~]# grep -n 'Include' /usr/local/etc/zabbix_agentd.conf
255:### Option: Include
261:# Include=
263:# Include=/usr/local/etc/zabbix_agentd.userparams.conf
264:# Include=/usr/local/etc/zabbix_agentd.conf.d/
265: Include=/usr/local/etc/zabbix_agentd.conf.d/*.conf
########################################################################
[root@web33 ~]# vim /usr/local/etc/zabbix_agentd.conf
265 Include=/usr/local/etc/zabbix_agentd.conf.d/*.conf		//自定义监控配置文件
280 UnsafeUserParameters=1		//开启自定义监控
[root@web33 ~]# wc -l /etc/passwd |awk '{print $1}'		//统计用户数
42
[root@web33 ~]# vim /usr/local/etc/zabbix_agentd.conf.d/get_sum_users.conf
UserParameter=getusers,wc -l /etc/passwd |awk '{print $1}'		//自定义监控格式:命令名,命令
[root@web33 ~]# killall -9 zabbix_agentd		//杀死进程
[root@web33 ~]# killall -9 zabbix_agentd
zabbix_agentd: no process found
[root@web33 ~]# zabbix_agentd		//重启zabbix_agentd服务
[root@web33 ~]# netstat -ntulp |grep :10050
tcp        0      0 0.0.0.0:10050           0.0.0.0:*               LISTEN      5300/zabbix_agentd
[root@web33 ~]# zabbix_get -s 127.0.0.1 -p 10050 -k getusers		//测本机试自定义监控命令
42
[root@zabbix ~]# zabbix_get -s 192.168.2.33 -p 10050 -k getusers		//监控服务器远程测试被监控端自定义命令
42

(4)登陆管理页面配置自定义监控、

  • 创建新监控模板:配置—>模板—>创建模板
  • 创建应用集:配置—>模板—>新建模板中应用集—>创建应用集
  • 创建监控项:配置—>模板—>新建模板中监控项—>创建监控项(键值与客户端自定义的监控命令绑定)
  • 调用新监控模板监控web33主机:配置—>主机—>选择要监控主机(web33)—>链接指示器,添加自定义模板

10、zabbix报警配置
概念介绍

  • 触发器(trigger)
    — 表达式,如内存不足300M,用户超过100个等
    — 当触发条件发生后,会导致一个触发事件
    — 触发事件会执行某个动作
  • 动作(action)
    — 触发器的条件被触发后的行为
    — 可以是发送邮件、也可以是重启某个服务等

(1)创建触发器:配置—>模板—>选择对应模板中触发器—>创建触发器
—>表达式:添加—>选择监控项,设置功能—>底部添加
(2)指定触发器触发后要执行的动作方式(这里选择发送邮件的方式):管理—>报警媒介类型—>Email—>配置后点击更新
在这里插入图片描述
检查本机邮件服务器25端口是否开启

[root@zabbix ~]# netstat -ntulp |grep :25
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1124/master         
tcp6       0      0 ::1:25                  :::*                    LISTEN      1124/master

若没有25端口,则需要安装并启动postfix

[root@zabbix ~]# yum -y install postfix
[root@zabbix ~]# systemctl start postfix
[root@zabbix ~]# systemctl enable postfix

测试给本机给zabbix用户发送邮件

[root@zabbix ~]# mail -s "testmail" zabbix < /etc/hosts
[root@zabbix ~]# mail -u zabbix
Heirloom Mail version 12.5 7/5/10.  Type ? for help.
"/var/mail/zabbix": 1 message
>   1 root                  Thu May 23 21:35  20/750   "testmail"

(3)为账户添加Media(指定收件人邮箱)
管理—>用户—>Admin—>报警媒介—>添加—>收件人:zabbix@localhost—>添加—>更新
(4)创建执行动作
配置—>动作—>事件源选择触发器,创建动作—>动作:定义名称(dongzuo1),新的触发条件选择触发器,选择web33: chufaqi1_web33_users,添加—>操作:默认接收人(定义标题),点击“新的”,发送到用户:添加Admin,仅送到Email,点击小字体“添加”,最后点击最下方添加
(5)测试触发器,发送报警邮件

[root@web33 ~]# useradd tom1
[root@web33 ~]# useradd tom2
[root@web33 ~]# useradd tom3
##############################################################
[root@zabbix ~]# mail -u zabbix		//查看邮件(收到报警邮件2)
Heirloom Mail version 12.5 7/5/10.  Type ? for help.
"/var/mail/zabbix": 2 messages 1 new
    1 root                  Thu May 23 21:35  20/750   "testmail"
>N  2 [email protected]  Thu May 23 23:00  20/819   "big33"
& 2
Message  2:
From [email protected]  Thu May 23 23:00:06 2019
Return-Path: 
X-Original-To: zabbix@localhost
Delivered-To: [email protected]
From: 
To: 
Date: Thu, 23 May 2019 23:00:06 +0800
Subject: big33
Content-Type: text/plain; charset="UTF-8"
Status: R

Problem started at 23:00:03 on 2019.05.23
Problem name: chufaqi1_web33_users
Host: web33
Severity: Disaster

Original problem ID: 164

你可能感兴趣的:(zabbix,zabbix)