环境准备:

  1. 静态ip

  2. 主机名

各自配置好主机名
# hostnamectl set-hostname --static zabbixserver.cluster.com
三台都互相绑定IP与主机名
# vim /etc/hosts
10.1.1.11 zabbixserver.cluster.com
10.1.1.12 agent1.cluster.com
10.1.1.13 agent2.cluster.com
  1. 时间同步
# systemctl restart ntpd
# systemctl enable ntpd
  1. 关闭防火墙,selinux
# systemctl stop firewalld
# systemctl disable firewalld
# iptables -F # setenforce 0
setenforce: SELinux is disabled
  1. 配置yum(安装完centos后默认的yum源+下面zabbix官方源)
所有机器(zabbix服务器和所有被监控端)加上zabbix官方的yum源
# vim /etc/yum.repos.d/zabbix.repo
[zabbix]
name=zabbix
baseurl=http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/
enabled=1
gpgcheck=0
[zabbix_deps]
name=zabbix_deps
baseurl=http://repo.zabbix.com/non-supported/rhel/7/x86_64/
enabled=1
gpgcheck=0

zabbix服务器安装

1,安装zabbix和mariadb数据库

[root@zabbixserver ~]# yum install zabbix-server-mysql zabbix-web-mysql mariadb-server

2, 在mysql(mariadb)里建立存放数据的库并授权,然后导入zabbix所需要用的表和数据

[root@zabbixserver ~]# systemctl restart mariadb.service
[root@zabbixserver ~]# systemctl enable mariadb.service [root@zabbixserver ~]# mysql
MariaDB [(none)]> create database zabbix default charset utf8; 这里一定要用utf8字符集,否则后面zabbix很多中文用不了(比如创建中文名用户就创建不了)
MariaDB [(none)]> grant all on zabbix.* to zabbix@'localhost' identified by '123';
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> quit

3, 导入表数据

下面这条命令不要乱复制粘贴,如果你版本不一样(或者官网yum源版本升级),3.4.15就要改成对应版本
[root@zabbixserver ~]# zcat /usr/share/doc/zabbix-server-mysql-3.4.15/create.sql.gz |mysql -u zabbix -p123 zabbix

4, 配置zabbix主配置文件,并启动服务,确认端口

找到并确认如下参数(默认值正确的不用打开注释.默认值不对的,要修改正确并打开注释)

我这里只需要改连接数据的密码和socket
[root@zabbixserver ~]# vim /etc/zabbix/zabbix_server.conf
ListenPort=10051
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=123 --这里要对应上面第2步的授权进行修改
DBSocket=/var/lib/mysql/mysql.sock --这里默认的socket路径不对,改成我这个路径
ListenIP=0.0.0.0 [root@zabbixserver ~]# systemctl restart zabbix-server
[root@zabbixserver ~]# systemctl enable zabbix-server [root@zabbixserver ~]# lsof -i:10051

5, 配置zabbix的httpd子配置文件,并启动httpd

打开第20行注释,并修改成你的时区
[root@zabbixserver ~]# vim /etc/httpd/conf.d/zabbix.conf 20 php_value date.timezone Asia/Shanghai [root@zabbixserver ~]# systemctl restart httpd
[root@zabbixserver ~]# systemctl enable httpd

6, 使用浏览器访问http://10.1.1.11/zabbix,并按提示进行安装

按照图示过程安装
1,welcome
2,Check of pre-requisites
3,Configure DB connection
数据库用户名填zabbix,密码填123(前面授权过的)
4,Zabbix server details
在name选项填上你zabbix服务器的IP或者主机名
5,Pre-Installation summary
6,install 完成后
登陆用户名为:admin
登陆密码为:zabbix

7,右上角点一个类似小人的图标 --》 语言选 chinese zh-cn --》 点 update后换成中文件界面

监控本机

1.在master上安装zabbix-agent

[root@zabbixserver ~]# yum install zabbix-agent

2,启动zabbix-agent服务

[root@zabbixserver ~]# vim /etc/zabbix/zabbix_agentd.conf
下面两个常见选项都为默认值,不用配置
Server=127.0.0.1 --zabbix服务器的IP,这里是本机
ListenPort=10050 --监控服务器连接被监控客户端的端口 [root@zabbixserver ~]# systemctl restart zabbix-agent
[root@zabbixserver ~]# systemctl enable zabbix-agent [root@zabbixserver ~]# lsof -i:10050

3,回到web管理界面 --》点配置--》点主机--》默认看到叫Zabbix server的本机,但状态是停用的--》点击并启用

4,点zabbix server里的图形--》任意选一张图后点预览--》看到图上有乱码

5, 解决乱码方法: 换一个字体

下载ttf-arphic-ukai.tar.gz软件包,并做如下修改
# tar xf ttf-arphic-ukai.tar.gz -C /usr/share/zabbix/fonts/
# mv /usr/share/zabbix/fonts/ukai.ttc /usr/share/zabbix/fonts/ukai.ttf
# vim /usr/share/zabbix/include/defines.inc.php 54 define('ZBX_GRAPH_FONT_NAME', 'ukai'); --修改原来的graphfont字体改成ukai

6, 做完后,不用重启服务,回到zabbix的web界面刷新查看图形就会发现没有乱码了

通过zabbix-agent监控远程机器

1,在agent1上安装zabbix-agent包

[root@agent1 ~]# yum install zabbix-agent

2,配置zabbix-agent端的配置文件,启动服务并做成开机自动启动

[root@agent1 ~]# vim /etc/zabbix/zabbix_agentd.conf

97 Server=10.1.1.11				修改成zabbix监控服务器的IP

[root@agent1 ~]# systemctl restart zabbix-agent
[root@agent1 ~]# systemctl enable zabbix-agent [root@agent1 ~]# lsof -i:10050

3, 回到web管理界面--》点配置--》点主机 --》 点创建主机

4,为主机添加要监控的模板--》点模板--》点选择--》把 Template OS Linux 前面打勾(其它模板视随意加)--》点选择 --》点添加 --》最后点右下角的添加

5,确认

zabbix用户与用户群组

用户(user):zabbix提供多用户管理,不同的用户可以设置不同的权限,不同的语言,不同的报警方式等。

web管理界面--》管理 --》用户

用户群组(group): 对用户进行分组管理.

web管理界面--》管理 --》用户群组

主机和主机群组

主机(host): 指被监控的一个设备(服务器,交换机等)

web管理界面--》管理 --》主机

前面监控本机和远程机器时操作过,这里不再截图

主机群组(hostgroup): 指被监控的一组主机(主要应用在有特别多主机的情况,方便分组区分)

web管理界面--》管理 --》主机群组

监控项与应用集(重点)

监控项(item): 是从主机收集的数据信息,代表搜集数据或监控的一个最小单位。

应用集(applications): 代表多个监控项目合成的组。

创建监控项

web管理界面--》配置--》主机--》监控项(这里我选的agent1的主机的监控项;也就是说每个主机都是各自的监控项,选谁的就是配置谁的)--》右上角点创建监控项

上面创建的agent.hostname默认就在Template OS Linux模板里,也就是说已经被使用了,就不允许你创建了。

注意: 监控项的键值写法是难点,如果不知道应该怎么传参数,可以参考模板里已经有的监控项。

练习: 把agent1已经链接的模板取消(因为cpu负载的监控项在Template OS Linux模板里也已经存在了),然后参考下图为agent1创建以下几个监控项

  1. cpu负载(1分钟)
  2. cpu负载(5分钟)
  3. cpu负载(15分钟)

答案:

按下图所示创建三个监控项

为监控项创建图形

web管理界面--》配置--》主机--》图形(选agent1主机的图形)--》右上角点创建图形--》选择图形名称,并在下面添加刚才定义好的监控项--》添加后,预览图形

过一段时间后的图形效果如下:

自定义监控项

自带的键值用得还是不习惯,或者有些想监控的却没有相关的键值,我们还可以自定义键值。

下面我们就来创建一个自定义的监控项:

监控agent1上的用户登录数(默认有一个键值叫system.users.num可以实现监控登录用户数,但我这里实验使用的是自己定义的键值)

1, 在被监控端agent1上,随意多打开几个终端,模拟多个登录用户

[root@agent1 ~]# who |wc -l
14 我这里确认登录用户数为14

2, 在被监控端agent1上,定义用户参数

[root@agent1 ~]# vim /etc/zabbix/zabbix_agentd.conf 

295 UserParameter=loginusers,who | wc -l

说明: loginusers是我自定义的一个键值名称(会在创建监控项时用到),后面的who |wc -l就要被监控的命令

[root@agent1 ~]# systemctl restart zabbix-agent

3, 在zabbi server服务器上先测试是否能得到被监控端agent1的结果

需要zabbix官方yum源来安装zabbix-get命令
[root@zabbixserver ~]# yum install zabbix-get 使用此命令就可以得到被监控端的结果,则测试ok
[root@zabbixserver ~]# zabbix_get -s 10.1.1.12 -k loginusers
14 --可以确认得到的值确实为agent1的

4,web管理界面--》配置--》主机--》监控项(选agent1的监控项)--》右上角点创建监控项

5, 点添加后确认是否添加成功

为自定义监控项创建图形

6,web管理界面--》配置--》主机--》图形(还是选的agent1的主机的图形)--》右上角点创建图形--》选择图形名称,并在下面添加刚才定义好的监控项--》添加后,预览图形

聚合图形

在上面监控项的配置里,我们定义了图形。而聚合图形就是把多个重要常用的数据整合一起来显示,方便查看.

假设我觉得agent1上cpu负载和远程linux登录用户数这2个图形非常重要,经常要查看,我现在想把它们聚合到一起。

点 agent1重要图 - -》点右上角编辑聚合图形 - -》点更改

另一张图同理,最终效果如下:

触发器(重点)

触发器(trigger): 定义监控项到达一个临界值(阈值)或者满足一个条件,就会发现状态变化(OK变为Problem,Problem变为OK)

下面我把监控agent1的登录用户数做一个触发器(大于20个登录用户就警告)

1, web管理界面--》配置--》主机--》触发器(选远程agent1的触发器)--》右上角点创建触发器

2,创建完触发器后,可以尝试去agent1上再多开几个终端,让其登录用户数超过20个,然后就可以去下面两图显示的地方去查看确认效果了。

监控nginx(拓展)

nginx有一个状态页,通过查看状态页信息可以连接到nginx服务负载情况.

下面我们假设监控agent1的nginx

1,在agent1上安装nginx

[root@agent1 ~]# yum install epel-release
[root@agent1 ~]# yum install nginx

2,在nginx里的server{}配置段里加上下面一段,然后重启服务

[root@agent1 ~]# vim /etc/nginx/nginx.conf

		location /status {
stub_status on;
allow 10.1.1.11; # 必须要允许zabbix server访问(或zabbix_proxy)
allow 127.0.0.1; # 允许本机访问
allow 10.1.1.1; # 加这个IP是为了windows宿主机访问用的
deny all;
access_log off;
} [root@agent1 ~]# systemctl restart nginx
[root@agent1 ~]# systemctl enable nginx

3, 通过浏览器访问http://10.1.1.12/status就能看到如下nginx状态信息

Active connections: 1
server accepts handled requests
59 59 115
Reading: 0 Writing: 1 Waiting: 0 Active connections:当前所有处于打开状态的活动连接数
accepts :已经接收连接数
handled : 已经处理过的连接数
requests : 已经处理过的请求数,在保持连接模式下,请求数量可能会大于连接数量 Reading: 正处于接收请求的连接数
Writing: 请求已经接收完成,处于响应过程的连接数
Waiting : 保持连接模式,处于活动状态的连接数

4, 在agent1上准备一个脚本,并给执行权限

[root@agent1 ~]# vim /opt/nginx_status.sh
#!/bin/bash HOST="127.0.0.1"
PORT="80" function ping { # 这个不是ping,是判断nginx进程是否存在
/sbin/pidof nginx | wc -l
} function active {
/usr/bin/curl "http://$HOST:$PORT/status/" 2>/dev/null| grep 'Active' | awk '{print $NF}'
}
function accepts {
/usr/bin/curl "http://$HOST:$PORT/status/" 2>/dev/null| awk NR==3 | awk '{print $1}'
}
function handled {
/usr/bin/curl "http://$HOST:$PORT/status/" 2>/dev/null| awk NR==3 | awk '{print $2}'
}
function requests {
/usr/bin/curl "http://$HOST:$PORT/status/" 2>/dev/null| awk NR==3 | awk '{print $3}'
}
function reading {
/usr/bin/curl "http://$HOST:$PORT/status/" 2>/dev/null| grep 'Reading' | awk '{print $2}'
}
function writing {
/usr/bin/curl "http://$HOST:$PORT/status/" 2>/dev/null| grep 'Writing' | awk '{print $4}'
}
function waiting {
/usr/bin/curl "http://$HOST:$PORT/status/" 2>/dev/null| grep 'Waiting' | awk '{print $6}'
}
$1 [root@agent1 ~]# chmod 755 /opt/nginx_status.sh

5, 在agent1上定义UserParameter,并重启服务

在配置文件里加上下面一句
[root@agent1 ~]# vim /etc/zabbix/zabbix_agentd.conf
UserParameter=nginx_status[*],/opt/nginx_status.sh $1 [root@agent1 ~]# systemctl restart zabbix-agent

6, 在zabbix_server上(如果使用了使用zabbix_proxy则这里就在zabbix_proxy上操作)zabbix_get测试

[root@zabbixserver ~]# zabbix_get -s 10.1.1.12 -k nginx._tatus[ping]
1
[root@zabbixserver ~]# zabbix_get -s 10.1.1.12 -k nginx_status[handled]
76

7,测试能成功监控取到值,说明监控OK。

------------恢复内容结束------------

搭建zabbix服务1的更多相关文章

  1. docker+zabbix,使用docker搭建zabbix服务

    Zabbix 介绍 zabbix(音同 zæbix)是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案. zabbix能监视各种网络参数,保证服务器系统的安全运营:并提供灵 ...

  2. 【Zabbix】在CentOS 7上搭建Zabbix服务,收集Windows客户端计数器性能数据(含过程中遇到的问题解决方法)

    1.环境 1.1.关闭防火墙 命令:systemctl stop firewalld 或者 systemctl stop firewalld.service (备注:相应的,若要开启防火墙,将对应的& ...

  3. 源码搭建zabbix服务

    1) 部署LNMP 1.1) cd /root tar -xf lnmp_soft.tar.gz cd lnmp_soft/ tar -xf nginx-1.10.3.tar.gz cd nginx- ...

  4. CentOS7下搭建zabbix监控(三)——Zabbix监控服务配置

    CentOS7下搭建zabbix监控(一)——Zabbix监控端配置 CentOS7下搭建zabbix监控(二)——Zabbix被监控端配置 (1).配置Zabbix监控Apache服务 主机名:yo ...

  5. zabbix服务快速搭建指南

    zabbix监控服务快速安装指南 1.更换centos7-base源为阿里源  wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.ali ...

  6. CentOS 6.5 搭建 Zabbix

    CentOS 6.5 搭建 Zabbix 说明: 操作系统:CentOS 6.5 IP地址:192.168.21.127 Web环境:Nginx+MySQL+PHP zabbix版本:Zabbix 2 ...

  7. 手把手教你在CentOS 7.4下搭建Zabbix监控(转)

    Linux系统版本:CentOS 7.4 1.安装前需要先关闭selinux和firewall. 1.1 [root@zabbix ~]# vi /etc/selinux/config 将SELINU ...

  8. 源码安装LNMP与搭建Zabbix

    系统环境:CentOS release 6.5 (Final) 搭建Zabbix 3.0对PHP环境要求>= 5.4 一.下载NMP的软件包: N:wget http://nginx.org/d ...

  9. 搭建zabbix服务器监控

    搭建zabbix 监控服务 服务器环境Centos 7.3 修改网卡名称 高并发优化 Web环境 nginx + php-fpm 必须对nginx配置有连接优化 使用systemd服务启动nginx和 ...

随机推荐

  1. Linux 日志切割方法总结--Logrotate

    一.Logrotate 使用方法 对于Linux系统安全来说,日志文件是极其重要的工具.logrotate程序是一个日志文件管理工具.用于分割日志文件,删除旧的日志文件,并创建新的日志文件,起到&qu ...

  2. Java RMI 实现一个简单的GFS(谷歌文件系统)——背景与设计篇

    目录 背景 系统设计 1. 系统功能 2. Master组件 2.1 命名空间 2.2 心跳机制 2.3 故障恢复和容错机制 3. ChunkServer组件 3.1 本地存储 3.2 内存命中机制 ...

  3. BZOJ1001 狼抓兔子(网络流转最短路:对偶图)

    题意: 给一个如图形式的\(n*m\)的方格,从左上走到右下,给出边权,问分成两块所需的最小代价.\(n,m\leq1000\). 思路: 显然是个最小割,但是\(O(n^2m)\)的复杂度很高,虽然 ...

  4. 016.NET5_MVC_视图组件扩展定制

    视图组件 1. 呈现页面响应的某一部分而不是整个响应 2. 包括在控制器和视图之间发生的关注分类和可测试优势 3.可以具有参数和业务逻辑 4. 通常在页面局部调用 如何自定义视图组件? 1.Razor ...

  5. keras自定义网络层

    在深度学习领域,Keras是一个高度封装的库并被广泛应用,可以通过调用其内置网络模块(各种网络层)实现针对性的模型结构:当所需要的网络层功能不被包含时,则需要通过自定义网络层或模型实现. 如何在ker ...

  6. CURL (CommandLine Uniform Resource Locator) 简易教程!

    1 http://curl.haxx.se/ http://curl.haxx.se/docs/httpscripting.html curl is an open source command li ...

  7. 十大排序算法时间复杂度 All In One

    十大排序算法时间复杂度 All In One 排序算法时间复杂度 排序算法对比 Big O O(n) O(n*log(n)) O(n^2) 冒泡排序 选择排序 插入排序 快速排序 归并排序 基数排序 ...

  8. prefetch vs preload vs prerender vs preconnect All In One

    prefetch vs preload vs prerender vs preconnect All In One 前端性能优化 prefetch 预获取 https://developer.mozi ...

  9. 如何导出android内部存储的文件(不用root)

    这段时间公司项目,涉及到数据缓存,由于需要缓冲的数据太多.太大,通过网络请求,再缓存到本地sqlite数据库,太费时间,消耗流量.所以准备先在本地保存一个标准版sqlite数据库(包含数据),打包到a ...

  10. axios upload excel file

    axios upload excel file https://github.com/axios/axios/issues/1660 https://stackoverflow.com/questio ...