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 [email protected]:/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項,說明添加成功

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章