Zabbix监控平台(安装配置----使用API在监控系统中查看、创建、删除监控主机---监控http、nginx、mysql等服务---导入监控模板)

zabbix官网:www.zabbix.com

本次实验用到一个物理主机,两个虚拟机
物理主机ip -->172.25.47.250
虚拟机server1 -->172.25.47.1—>服务端
虚拟机server2 --> 172.25.47.2—>客户端

此处检测都是被动监测,即server(主)->agent(被),server主动去监控agent

一、zabbix安装

1.下载zabbix安装包,放置在物理主机的/var/www/html/4.0目录下(搭建yum仓库)

注意:此处需要给目录权限
在这里插入图片描述

2.虚拟机配置yum源[root@server1 ~]# cd /etc/yum.repos.d/
[root@server1 yum.repos.d]# ls
exam.repo  redhat.repo
[root@server1 yum.repos.d]# vim zabbix.repo
	[zabbix]
	name=zabbix
	baseurl=http://172.25.47.250/4.0
	gpgcheck=0
[root@server1 yum.repos.d]# yum clean all	
[root@server1 yum.repos.d]# yum repolist

在这里插入图片描述

3.配置数据库
[root@server1 ~]# yum install mariadb-server -y	##安装数据库
[root@server1 ~]# systemctl enable mariadb
[root@server1 ~]# systemctl start mariadb
[root@server1 ~]# mysql_secure_installation 	##安全初始化(此处设定密码为westos)
[root@server1 ~]# mysql -p
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost identified by 'westos';
4.安装zabbix(后端和前端不用装在一个机器上,此处只是为了看效果,故安装在一个机子)
[root@server1 ~]# yum install zabbix-server-mysql -y 	##后端服务
[root@server1 zabbix]# yum install zabbix-web-mysql -y	##前端web
5.导入数据并查看
[root@server1 ~]# cd /usr/share/doc/zabbix-server-mysql-4.0.5/
[root@server1 zabbix-server-mysql-4.0.5]# zcat create.sql.gz	##查看数据文件
[root@server1 zabbix-server-mysql-4.0.5]# ls
AUTHORS  ChangeLog  COPYING  create.sql.gz  NEWS  README
[root@server1 zabbix-server-mysql-4.0.5]# zcat create.sql.gz |mysql -uzabbix  -p zabbix	##导入数据库(此过程可能会比较慢,请耐心等待)
[root@server1 zabbix-server-mysql-4.0.5]# mysql -p		##查看,此时可以看到数据被导入
MariaDB [(none)]> show databases;
MariaDB [(none)]> use zabbix
MariaDB [zabbix]> show tables;
6.修改zabbix配置文件
    [root@server1 zabbix-server-mysql-4.0.5]# cd /etc/zabbix/
	[root@server1 zabbix]# ls
	web  zabbix_server.conf
	[root@server1 zabbix]# vim zabbix_server.conf			##配置文件
	124 DBPassword=westos		##用户密码
	[root@server1 zabbix]# systemctl start zabbix-server	##开启zabbix
	[root@server1 zabbix]# systemctl enable zabbix-server	##开机自启
	[root@server1 zabbix]# ps ax		##查看开启进程
	[root@server1 zabbix]# cd /etc/httpd/conf.d/
	[root@server1 conf.d]# vim zabbix.conf 
	 20         php_value date.timezone Asia/Shanghai
	[root@server1 conf.d]# systemctl start httpd
	[root@server1 conf.d]# systemctl enable httpd
7.浏览器访问http://172.25.47.1/zabbix,进入zabbix的web界面

在这里插入图片描述

一直点击下一步到下面界面,此处密码配置的是westos

在这里插入图片描述

再下一步到下面界面,此处name本实验是Zabbix server

在这里插入图片描述

下面界面是最信息的最后一次可修改

在这里插入图片描述

登陆zabbix(默认帐号是Admin,密码是zabbix)

在这里插入图片描述

进入zabbix

在这里插入图片描述

8.此时可以看到有报,进行解决

安装zabbix的agent

[root@server2 ~]# yum install -y zabbix-agent
[root@server2 ~]# systemctl start zabbix-agent
[root@server2 ~]#systemctl enable zabbix-agent
[root@server2 ~]# netstat -antlp | grep :10050  ##此时10050端口开启

在这里插入图片描述

再次页面刷新,可以看到告警消失

在这里插入图片描述

9.由于zabbix监控界面是英文的,此处可以改成中文界面
点击界面右上角图标

在这里插入图片描述

进行语言选择

在这里插入图片描述

更新后,可以看到改成中文界面

在这里插入图片描述

二、agent

Zabbix agents 部署在被监控目标上,用于主动监控本地资源和应用程序,并将收集的数据发送给 Zabbix server

1、添加agent

1)配置yum源(由于server1已经配置,此处直接复制即可)
[root@server2 ~]# scp root@172.25.47.1:/etc/yum.repos.d/zabbix.repo /etc/yum.repos.d/
[root@server2 ~]# yum clean all
[root@server2 ~]# yum repolist
2)安装并修改配置文件
	[root@server2 ~]# yum install zabbix-agent -y
	[root@server2 ~]# vim /etc/zabbix/zabbix_agentd.conf 
		98 Server=172.25.47.1				##开启自动发现
		105 # Default:
		106 # ListenPort=10050				##表示开启的默认端口是10050
		139 ServerActive=172.25.47.1		##开启自动注册
		150 Hostname=server2				##主机名
	[root@server2 ~]# systemctl enable zabbix-agent
	[root@server2 ~]# systemctl start zabbix-agent
	[root@server2 ~]# cd /var/log/zabbix/
	[root@server2 zabbix]# ls
	zabbix_agentd.log
	[root@server2 zabbix]# cat zabbix_agentd.log

在这里插入图片描述

3)添加agent
配置–> 主机–>创建主机,到下面界面进行填写

在这里插入图片描述

添加完成后,点击模板,进行选择添加,完成后进行更新

在这里插入图片描述

可以看到配置成功

在这里插入图片描述

2、自动发现(自动发现是server端去发现客户端)

实验之前先删除server2主机

在这里插入图片描述

1)点击动作–>事件源选择自动发现—>创建动作

在这里插入图片描述

点击操作,添加操作

在这里插入图片描述

2)点击自动发现—>创建发现规则
填写名称和ip范围,并添加

在这里插入图片描述

3)点击监测—>自动发现,可以看到server2已经被添加

在这里插入图片描述

如果仪表盘出现告警,修改服务的配置文件
		[root@server1 ~]# cd /etc/zabbix/
		[root@server1 zabbix]# vim zabbix_server.conf
		243 # Default:
		244 # StartDiscoverers=1			##此数字默认是1,如有需要可往大改

3、自动注册(自动注册是客户端主动去server上添加)

做自动注册之前,先删除调前一个实验自动发现的server2主机
1)点击配置—>事件源选择自动注册—>创建动作
名称自取,主机名注意是自己的

在这里插入图片描述

2)操作
添加两个操作,点击添加

在这里插入图片描述

3)重启agent
[root@server2 zabbix]# systemctl restart zabbix-agent
4)此时,主机server2已经添加

在这里插入图片描述

三、API

简介

Zabbix API允许以编程方式检索和修改Zabbix的配置,并提供对历史数据的访问
广泛用于
  • 创建新的应用程序以使用Zabbix;
  • 将Zabbix与第三方软件集成;
  • 自动执行常规任务。
Zabbix API是基于Web的API,作为Web前端的一部分提供。它使用JSON-RPC 2.0协议,这意味着两件事:
  • API包含一组独立的方法
  • 客户端和API之间的请求和响应使用JSON格式进行编码。
大多数API至少包含四种方法: get, create, update 和 delete ,分别是检索,创建,更新和删除数据

实验

做API之前,先删除之前注册的server2,并停掉自动注册
1、创建脚本,查看zabbix监控系统的API接口
1)创建脚本
[root@server1 ~]# vim zabbix-api.sh
curl -s -XPOST -H "Content-Type: application/json-rpc" -d '		##利用curl命令模拟json格式的post请求
		{
		    "jsonrpc": "2.0",		##这是标准的JSON RPC参数以标示协议版本。所有的请求都会保持不变
		    "method": "user.login",	##利用用户登陆的方式获取API
		    "params": {
		        "user": "Admin",		##zabbix监控系统的用户名和密码
		        "password": "zabbix"
		    },
		    "id": 1,	##这个字段用于绑定JSON请求和响应。响应会跟请求有相同的"id"。在一次性发送多个请求时很有用,这些也不需要唯一或者连续
		    "auth": null
		}' http://172.25.47.1/zabbix/api_jsonrpc.php |python -m  json.tool
		# 采用POST方法向http://example.com/zabbix/api_jsonrpc.php发送此JSON对象. http://example.com/zabbix/是Zabbix前端地址。 
# api_jsonrpc.php是调用API的PHP脚本。可在安装可视化前端的目录下找到。
2)执行脚本
[root@server1 ~]# sh zabbix-api.sh 
	{
	    "id": 1,
	    "jsonrpc": "2.0",
	    "result": "2d3f669b3084fa9a8f105b5b8b03e2de"		##API令牌
	}
2、创建脚本,查看zabbix主机和被监控主机信息
1)编写脚本
[root@server1 ~]# vim zabbix-api.sh
	curl -s -XPOST -H "Content-Type: application/json-rpc" -d '
		{
		    "jsonrpc": "2.0",
		    "method": "host.get",
		    "params": {
		        "output": [
		            "hostid",
		            "host"
		        ],
		        "selectInterfaces": [
		            "interfaceid",
		            "ip"
		        ]
		    },
		    "id": 2,
		    "auth": "5cc8887ef4235a10d7a2ca40465e6a21"	##此处是zabbix的API令牌
		}' http://172.25.47.1/zabbix/api_jsonrpc.php |python -m  json.tool
2)执行脚本
[root@server1 ~]# sh zabbix-api.sh	

在这里插入图片描述

3、添加主机脚本
1)编写脚本
[root@server1 ~]# vim zabbix-api.sh
	curl -s -XPOST -H "Content-Type: application/json-rpc" -d '
	{
	    "jsonrpc": "2.0",
	    "method": "host.create",    		## 调用host.create方法
	    "params": {
	        "host": "server2",    			## 被监控的主机名
	        "interfaces": [
	            {
	                "type": 1,
	                "main": 1,
	                "useip": 1,
	                "ip": "172.25.47.2",     	## 被监控主机的ip
	                "dns": "", 
	                "port": "10050"    			## zabbix-agent的端口号
	            }
	        ],
	        "groups": [
	            {
	                "groupid": "2"   ## 建立的主机加入的群组id
	            }
	        ],
	        "templates": [
	            {
	                "templateid": "10001"  ## 建立的主机使用的模版id
	            }
	        ]
	    },
	    "id": 3,
	    "auth": "2d3f669b3084fa9a8f105b5b8b03e2de"
	}' http://172.25.47.1/zabbix/api_jsonrpc.php |python -m  json.tool

groupid和templateid的获得方法如下:
在这里插入图片描述
在这里插入图片描述

2)执行脚本
		[root@server1 ~]# sh zabbix-api.sh 
				{
				    "id": 3,
				    "jsonrpc": "2.0",
				    "result": {
				        "hostids": [
				            "10270"		##生成的主机的id号
				        ]
				    }
				}
3)查看结果
在监控界面此时可以看到server2主机添加

在这里插入图片描述

4、删除监控主机的脚本
1)创建脚本
	[root@server1 ~]# vim zabbix-api.sh
			curl -s -XPOST -H "Content-Type: application/json-rpc" -d '
			{
			    "jsonrpc": "2.0",
			    "method": "host.delete",  ##调用host.delete方法
			    "params": [
			        "10270"		##删除的主机的id号
			    ],
			    "id": 4,
			    "auth": "2d3f669b3084fa9a8f105b5b8b03e2de"
			}' http://172.25.47.1/zabbix/api_jsonrpc.php |python -m  json.tool
2)执行脚本
	[root@server1 ~]# sh zabbix-api.sh 
			{
			    "id": 4,
			    "jsonrpc": "2.0",
			    "result": {
			        "hostids": [
			            "10270"
			        ]
			    }
			}
3)查看结果
此时监控页面的server2主机已经被删除

四、监控http、nginx、mysql服务

实验之前确保server2是被监控客户机
1、监控http服务
1)安装http服务
	[root@server2 zabbix]# yum install httpd -y
	[root@server2 zabbix]# systemctl enable httpd
	[root@server2 zabbix]# systemctl start httpd
2)在监控页面进行配置
点击:主机—配置—模板—选择 ---- Template App HTTP Service,并进行添加和更新

在这里插入图片描述

更新之后,可以看到server2上http已经被监控

在这里插入图片描述

2、监控nginx
注意,实验之前应先关停http,因为apacha和nginx都是用的80端口,同时开会有影响。
1)安装nginx
[root@server2 ~]# ls
nginx-1.15.8.tar.gz
[root@server2 ~]# tar zxf nginx-1.15.8.tar.gz 
[root@server2 ~]# cd nginx-1.15.8
[root@server2 nginx-1.15.8]# yum install gcc pcre-devel zlib-devel -y
[root@server2 nginx-1.15.8]# vim auto/cc/gcc
# debug
#CFLAGS="$CFLAGS -g"
[root@server2 nginx-1.15.8]# ./configure --prefix=/usr/local/nginx --with-http_stub_status_module     ##安装一个stub_status模块
[root@server2 nginx-1.15.8]# make && make install 
[root@server2 nginx-1.15.8]# cd /usr/local/nginx/conf/
[root@server2 conf]# vim nginx.conf
	 48         location /status {
	 49                 stub_status on;		##Nginx中的stub_status模块主要用于查看Nginx的一些状态信息
	 50                 access_log off;		##关闭日志记录
	 51                 allow 127.0.0.1;		##本行与下一行表示,只允许本机访问
	 52                 deny all;					
	 53         }
[root@server2 conf]# ln -s /usr/local/nginx/sbin/nginx /sbin/
[root@server2 conf]# nginx -t
[root@server2 conf]# nginx
2)用curl进行测试
	[root@server2 conf]# curl -s http://127.0.0.1/status 
	Active connections: 1 
	server accepts handled requests
	 7 7 3 
	Reading: 0 Writing: 1 Waiting: 0
	[root@server2 conf]# curl -s http://127.0.0.1/status |grep Active
	Active connections: 1
	[root@server2 conf]# curl -s http://127.0.0.1/status |grep Active|awk '{print $3}'
	1
3)添加nginx监控项
[root@server2 conf]# cd /etc/zabbix/zabbix_agentd.d/
[root@server2 zabbix_agentd.d]# ls
userparameter_mysql.conf
[root@server2 zabbix_agentd.d]# cp userparameter_mysql.conf userparameter_nginx.conf 		
[root@server2 zabbix_agentd.d]# vim userparameter_nginx.conf 
	UserParameter=nginx.active,curl -s http://127.0.0.1/status |grep Active|awk '{print $3}'	##获取连接数(nginx.active为key值,获得的连接数为value值)
	UserParameter=nginx.accept,curl -s http://127.0.0.1/status |awk NR==3 |awk '{print $1}'	##获取接受请求数
[root@server2 zabbix_agentd.d]# systemctl restart zabbix-agent
4) 在zabbix server端获取数据
	[root@server1 ~]# yum install zabbix-get -y
	[root@server1 ~]# zabbix_get -s 172.25.47.2 -p 10050 -k "nginx.active"
	1
	[root@server1 ~]# zabbix_get -s 172.25.47.2 -p 10050 -k "nginx.accept"
	45
5)监控界面配置
1>创建两个监控项
点击配置–主机–点击server2主机–监控项–创建监控项

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

2>添加图形
配置–主机–点击server2主机–图形 --创建图形

在这里插入图片描述

3>预览

在这里插入图片描述

此时监控界面有信息,但是会看到页面底下有乱码,
解决方法,换字体
[root@server1 fonts]# pwd
/usr/share/zabbix/fonts  	##下在字体到这个目录下
[root@server1 fonts]# ls
graphfont.ttf  simkai.ttf		##下载一个字体
[root@server1 fonts]# cd ..
[root@server1 zabbix]# cd include/
[root@server1 include]# vim defines.inc.php
:%s/graphfont/simkai/g			##让系统识别用哪个字体

刷新监控页面,可以看到显示正常
在这里插入图片描述

3、监控mysql
1)监控页面配置(此处server1安装了mysql,故此处对server1操作,即Zabbix server主机)
配置步骤:点击配置–主机–(Zabbix server)监控项–(Zabbix server)模板–添加Tempate DB MySQL模板–更新
配置前可以看到,监控项是88项

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

添加后可以看到监控项从原来的88项变成102项

在这里插入图片描述

2)配置数据库
	[root@server1 ~]# cd /etc/zabbix/zabbix_agentd.d/
	[root@server1 zabbix_agentd.d]# ls
	userparameter_mysql.conf
	[root@server1 zabbix_agentd.d]# cat userparameter_mysql.conf 	##查看数据库两个选项的key-value

在这里插入图片描述

3)编写获取key-value的读取规则
	[root@server1 zabbix_agentd.d]# mkdir /var/lib/zabbix
	[root@server1 zabbix_agentd.d]# cd /var/lib/zabbix/
	[root@server1 zabbix]# ls
	[root@server1 zabbix]# vim .my.cnf
	[mysql]
	user = root
	password = westos
	
	[mysqladmin]
	user = root
	password = westos
	[root@server1 zabbix]# systemctl restart zabbix-agent	##重启,读取配置文件
4)测试
	[root@server1 zabbix]# zabbix_get -s 172.25.47.1 -p 10050 -k mysql.ping		##没有返回值,是正常情况
	zabbix_get [4019]: Check access restrictions in Zabbix agent configuration
看监控界面

点击:主机—Zabbix server —图形—MYSQL operations—预览
可以看有监控图形信息

在这里插入图片描述

4、导入监控模板
此处导入的是监控mysql的模板,实验前,先清除上一实验添加的监控mysql的模板
1)安装模板
		[root@server1 ~]# ls
		percona-zabbix-templates-1.1.8-1.noarch.rpm  zabbix-api.sh
		[root@server1 ~]# rpm -q php php-mysql		##由于percona的监控脚本是使用php写的,所以需要准备好php运行环境
		php-5.4.16-42.el7.x86_64
		php-mysql-5.4.16-42.el7.x86_64
		[root@server1 ~]# rpm -ivh percona-zabbix-templates-1.1.8-1.noarch.rpm 
2) 复制文件到agent目录下
	[root@server1 ~]# cd /var/lib/zabbix/percona/templates/
	[root@server1 templates]# ls
	userparameter_percona_mysql.conf
	zabbix_agent_template_percona_mysql_server_ht_2.0.9-sver1.1.8.xml
	root@server1 templates]# cp userparameter_percona_mysql.conf /etc/zabbix	/zabbix_agentd.d/		##复制到此目录下才能被识别
	[root@server1 templates]# systemctl restart zabbix-agent		##重启agent
3)修改php脚本
		[root@server1 templates]# cd ..
		[root@server1 percona]# cd scripts/
		[root@server1 scripts]# ls
		get_mysql_stats_wrapper.sh  ss_get_mysql_stats.php
		[root@server1 scripts]# vim ss_get_mysql_stats.php
		30 $mysql_user = 'root';
		31 $mysql_pass = 'westos';

执行脚本,返回值是0

	[root@server1 scripts]# /var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh gg
	0
4) 清除缓存文件

执行脚本会产生缓存,需要清理

		[root@server1 scripts]# cd /tmp/
		[root@server1 tmp]# ls
		localhost-mysql_cacti_stats.txt			##产生的缓存
		systemd-private-534822e83d4a47189351d6015519fc74-httpd.service-y8uyZp
		systemd-private-534822e83d4a47189351d6015519fc74-mariadb.service-5bZ4qE
		systemd-private-72062f78859e44b79bdd16ea1a6c7b7b-httpd.service-r2upDe
		systemd-private-72062f78859e44b79bdd16ea1a6c7b7b-mariadb.service-bDoBVh
		systemd-private-c8a2ee5c445a4ef0ac8f1a6b6f174bb0-httpd.service-kwerxT
		systemd-private-c8a2ee5c445a4ef0ac8f1a6b6f174bb0-mariadb.service-0MdS9H
		
		#可以看到此缓存文件的是root用户执行产生的,会与zabbix用户在执行时产生冲突
		[root@server1 tmp]# ll localhost-mysql_cacti_stats.txt 		
		-rw-r--r-- 1 root root 1347 May  4 07:01 localhost-mysql_cacti_stats.txt
		
		#删除缓存文件
		[root@server1 tmp]# rm -fr localhost-mysql_cacti_stats.txt 		
5)监控平台配置
1>添加模板前是88个监控项

在这里插入图片描述

2>导入模板
添加步骤:配置–模板–导入–选择要导入的模板–勾选聚合图形–导入

在这里插入图片描述

3>添加模板
配置–主机–模板–添加模板

在这里插入图片描述

更新完成后,监控项变成279项,说明添加成功

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值