zabbix监控mysql数据库、nginx、Tomcat

zabbix监控mysql数据库、nginx、Tomcat

一.zabbix监控mysql数据库

1.环境规划

hostIP部署
zabbix-server192.168.198.17zabbix服务器搭建
zabbix-mysql192.168.198.15zabbix客户端搭建

2.zabbix-server安装部署(192.168.198.17)

请参考以下配置:https://blog.csdn.net/Katie_ff/article/details/132171211?spm=1001.2014.3001.5501

3.zabbix-mysql安装部署(192.168.198.15)

需要提前在客户端安装mysql服务,具体安装过程如下:

https://blog.csdn.net/Katie_ff/article/details/131255481?spm=1001.2014.3001.5501

3.1 部署 zabbix 客户端

#关闭防火墙和selinux,更改主机名并运行bash刷新主机名
systemctl disable --now firewalld
setenforce 0hostnamectl set-hostname mysql
su
#服务端和客户端都配置时间同步
yum install -y ntpdate
ntpdate -u ntp.aliyun.com13 Aug 13:23:05 ntpdate[76508]: adjust time server 203.107.6.88 offset 0.007140 sec
#客户端配置时区,与服务器保持一致
mv /etc/localtime{,.bak}
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
date
2023年 08月 13日 星期日 13:23:23 CST
#设置 zabbix 的下载源,安装 zabbix-agent2
rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm cd /etc/yum.repos.d
sed -i 's#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' /etc/yum.repos.d/zabbix.repoyum install -y zabbix-agent2
#修改 agent2 配置文件
vim /etc/zabbix/zabbix_agent2.conf
......
Server=192.168.198.17			#80行,指定 zabbix 服务端的 IP 地址
ServerActive=192.168.198.17		#120行,指定 zabbix 服务端的 IP 地址
Hostname=mysql          		#134行,指定当前 zabbix 客户端的主机名
#启动 zabbix-agent2
systemctl start zabbix-agent2
systemctl enable zabbix-agent2netstat -natp | grep zabbix
tcp6       0      0 :::10050                :::*                    LISTEN      44454/zabbix_agent2 

3.2 服务端验证 zabbix-agent2 的连通性(192.168.198.17)

#安装 zabbix 主动获取数据的命令
yum install -y zabbix-get				
zabbix_get -s '192.168.198.15' -p 10050 -k 'agent.ping'
1zabbix_get -s '192.168.198.15' -p 10050 -k 'system.hostname'
mysql

3.3 Web 页面中添加mysql主机

3.3.1 点击左边菜单栏【配置】中的【主机】,点击【创建主机】

【主机名称】设置成 mysql
【可见的名称】设置成 MySQL-192.168.198.15
【群组】选择 Linux server
【Interfaces】的【IP地址】设置成 192.168.198.15

点击添加

再点击上方菜单栏【模板】
【Link new tamplates】搜索 mysql ,选择 【Template DB MySQL by Zabbix agent】
点击 【添加】

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

3.4 自定义监控内容(在客户端创建自定义 key:192.168.198.15)

3.4.1 明确需要执行的 linux 命令

who | wc -l
3

3.4.2 创建 zabbix 的监控项配置文件,用于自定义 key

vim /etc/zabbix/zabbix_agent2.conf
#可以将自定义的监控项配置文件创建在 zabbix_agent2.d 目录中
273 Include=/etc/zabbix/zabbix_agent2.d/*.conf
#自定义监控项的格式如下
296 #	Format: UserParameter=<key>,<shell command>
cd /etc/zabbix/zabbix_agent2.d/
vim UserParameter_login.conf
#添加内容
UserParameter=login.user,who|wc -l
systemctl restart zabbix-agent2

3.4.3 在服务端验证新建的监控项

[root@zbx-server opt]# zabbix_get -s '192.168.198.18' -p 10050 -k 'login.user'
3

此处为3是在客户端有三个用户,则监控的是这三个用户

[root@mysql zabbix_agent2.d]# who
root     :0           2023-07-11 00:52 (:0)
root     pts/0        2023-07-11 01:08 (:0)
root     pts/1        2023-08-13 13:21 (192.168.198.1)

4. 可对mysql创建的主机根据实际修改

在这里插入图片描述

根据实际筛选
在这里插入图片描述

二.zabbix实现对nginx运行状态的监控

利用zabbix实现对nginx运行状态的监控 (要么运行 要么不运行)(配置对应的触发器)

1.自定义key实现监控nginx运行状态

1.1 在zabbix-agent服务器中安装并开启nginx

(1)编译安装nginx

#拖入nginx-1.12.2安装包
cd /opt
#解压
tar zxvf nginx-1.12.2.tar.gz -C /opt/
#编译安装
cd nginx-1.12.2/
./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module
make -j2 && make install

注:如执行make -j2 && make install出现了以下错误:

make: *** 没有规则可以创建“default”需要的目标“build”。 停止。

错误原因:这是因为安装nginx 编译时缺少一些依赖造成的

解决办法:安装依赖:

yum -y install gcc openssl openssl-devel pcre-devel zlib zlib-devel

再次执行:

./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module
make -j2 && make install

(2)优化路径

ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

(3)添加 Nginx 系统服务

vim /lib/systemd/system/nginx.service
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
chmod 754 /lib/systemd/system/nginx.service
systemctl start nginx.service
systemctl enable nginx.service

注:如果systemctl start nginx.service启动不了,检查 “nginx” 用户是否存在于系统中。您可以运行以下命令检查用户是否存在:

id nginx
id: nginx: no such user

如不存在创建用户并重启:

useradd -r nginx
passwd nginx
systemctl restart nginx

(4)修改nginx配置

vim /usr/local/nginx/conf/nginx.conf

在server块里面新增一个location块:

location /nginx_status {stub_status on;access_log off;#allow 192.168.198.0/24; #允许访问的范围#deny all;
}

在这里插入图片描述

#启动nginx
/usr/local/nginx/sbin/nginx
 netstat -antp | grep nginx
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      88019/nginx: master 
#验证nginx状态页面:
[root@nginx nginx-1.12.2]# curl http://192.168.198.15/status
Active connections: 1 
server accepts handled requests1 1 1 
Reading: 0 Writing: 1 Waiting: 0 

1.2 配置zabbix agent自定义参数

vim /etc/zabbix/zabbix_agentd.conf
Include=/etc/zabbix/zabbix_agentd.d/*.conf #改为只导入conf文件
#重启agent
systemctl restart zabbix-agent2.service 
#上传zabbix_linux_plugin.sh 脚本到/etc/zabbix/zabbix_agentd.d/并授权执行脚本测试,确认可以从本地获取nginx状态数据:
cd /etc/zabbix/zabbix_agent2.d/
vim zabbix_nginx.sh
#脚本内容如下:
#/bin/bash
#Description:Automated monitoring nginx performance and process nginx_status scriptsNGINX_PORT=80 
NGINX_COMMAND=$1nginx_ping(){/sbin/pidof nginx |wc -l}nginx_active(){/usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" |awk '/Active/ {print $NF}'}nginx_reading(){/usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" |awk '/Reading/ {print $2}'}nginx_writing(){/usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" |awk '/Writing/ {print $4}'}nginx_waiting(){/usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" |awk '/Waiting/ {print $6}'}nginx_accepts(){/usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" |awk 'NR==3 {print $1}'}nginx_handled(){/usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" |awk 'NR==3 {print $2}'}nginx_requests(){/usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" |awk 'NR==3 {print $3}'}case $NGINX_COMMAND inping)nginx_ping;;active)nginx_active;;reading)nginx_reading;;writing)nginx_writing;;waiting)nginx_waiting;;accepts)nginx_accepts;;handled)nginx_handled;;requests)nginx_requests;;*)echo $"USAGE:$0 {ping|active|reading|writing|waiting|accepts|handled|requests}"
esac
#给脚本权限
chmod u+x /etc/zabbix/zabbix_agent2.d/zabbix_nginx.sh
#测试
./zabbix_linux_plugin.sh nginx_status 80 active

1.3 修改 zabbix 配置文件

vim /etc/zabbix/zabbix_agent2.d/userparameter_mysql.conf# 增加
UserParameter=nginx_status[*],/bin/bash /etc/zabbix/zabbix_agent2.d/zabbix_nginx.sh \$1
# 修改完成重启 zabbix-agent
systemctl restart zabbix-agent2.service

1.4 服务端验证

[root@zabbix ~]# zabbix_get -s 192.168.198.15 -k nginx_status[active]
1

1.5 添加主机及模块等

在这里插入图片描述

三.zabbix监控Tomcat

zabbix通过部署jmx来监控tomcat
zabbix提供了一个java gateway的应用去监控jmx(Java Management Extensions,即Java管理扩展)是一个为应用程序、设备、系统等植入管理功能的框架。JMX可以跨越一系列异构操作系统平台、系统体系结构和网络传输协议,灵活的开发无缝集成的系统、网络和服务管理应用。

1.实验环境的部署(客户端)

安装Tomcat服务,具体操作如下:

https://blog.csdn.net/Katie_ff/article/details/131442008?spm=1001.2014.3001.5501

#查看端口是否开启
netstat -natp | grep 8080
tcp6       0      0 :::8080                 :::*                    LISTEN      54333/java  
#编辑发布目录
[root@tomcat tomcat]# cd webapps/ROOT/
vim test.jsp
The time is: <%=new java.util.Date() %>cd /usr/local/tomcat/bin
vim catalina.sh
ATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.port=1234"/usr/local/tomcat/bin/shutdown.sh 
/usr/local/tomcat/bin/startup.sh 

浏览器端测试:http://192.168.198.15:8080/test.jsp

在这里插入图片描述

2.服务端的配置

安装请参考以下:

https://blog.csdn.net/Katie_ff/article/details/132171211?spm=1001.2014.3001.5501

yum install zabbix-java-gateway.x86_64 -y
cd /etc/zabbix/
vim zabbix_java_gateway.conf 
LISTEN_IP="0.0.0.0"  ##监听地址
LISTEN_PORT=10052  ##监听端口
PID_FILE="/var/run/zabbix/zabbix_java.pid"  ##PID_FILE文件路径
START_POLLERS=5  ##开启的工作线程数量
systemctl start zabbix-java-gateway  ##开启服务
systemctl enable zabbix-java-gateway  ##设置开机自启
vim zabbix_server.conf
JavaGateway=192.168.198.17 ##IP地址
JavaGatewayPort=10052  ##端口
StartJavaPollers=5  ##采集数据的进程数
systemctl restart zabbix-server  重启进程
netstat -antlp
ps ax  ##查看server开启的java进程是否为5个

2.1 zabbix监测界面的配置

在这里插入图片描述

配置–主机–tomcat–模板

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/36964.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Azure概念介绍

云计算定义 云计算是一种使用网络进行存储和处理数据的计算方式。它通过将数据和应用程序存储在云端服务器上&#xff0c;使用户能够通过互联网访问和使用这些资源&#xff0c;而无需依赖于本地硬件和软件。 发展历史 云计算的概念最早可以追溯到20世纪60年代的时候&#x…

年至年的选择仿elementui的样式

组件&#xff1a;<!--* Author: liuyu liuyuxizhengtech.com* Date: 2023-02-01 16:57:27* LastEditors: wangping wangpingxizhengtech.com* LastEditTime: 2023-06-30 17:25:14* Description: 时间选择年 - 年 --> <template><div class"yearPicker"…

Smart HTML Elements 16.1 Crack

Smart HTML Elements 是一个现代 Vanilla JS 和 ES6 库以及下一代前端框架。企业级 Web 组件包括辅助功能&#xff08;WAI-ARIA、第 508 节/WCAG 合规性&#xff09;、本地化、从右到左键盘导航和主题。与 Angular、ReactJS、Vue.js、Bootstrap、Meteor 和任何其他框架集成。 智…

九、多态(2)

本章概要 构造器和多态 构造器调用顺序继承和清理构造器内部多态方法的行为 协变返回类型使用继承设计 替代 vs 扩展向下转型与运行时类型信息 构造器和多态 通常&#xff0c;构造器不同于其他类型的方法。在涉及多态时也是如此。尽管构造器不具有多态性&#xff08;事实上…

【JavaScript】new 的原理以及实现

网道 - new 命令的原理 使用new命令时&#xff0c;它后面的函数依次执行下面的步骤。 创建一个空对象&#xff0c;作为将要返回的对象实例。将这个空对象的原型&#xff0c;指向构造函数的prototype属性。将这个空对象赋值给函数内部的this关键字。如果构造函数返回了一个对象…

在Visual Studio上,使用OpenCV实现人脸识别

1. 环境与说明 本文介绍了如何在Visual Studio上&#xff0c;使用OpenCV来实现人脸识别的功能 环境说明 : 操作系统 : windows 10 64位Visual Studio版本 : Visual Studio Community 2022 (社区版)OpenCV版本 : OpenCV-4.8.0 (2023年7月最新版) 实现效果如图所示&#xff0…

Linux命令200例:adduser用于创建新用户

&#x1f3c6;作者简介&#xff0c;黑夜开发者&#xff0c;全栈领域新星创作者✌。CSDN专家博主&#xff0c;阿里云社区专家博主&#xff0c;2023年6月csdn上海赛道top4。 &#x1f3c6;数年电商行业从业经验&#xff0c;历任核心研发工程师&#xff0c;项目技术负责人。 &…

代理模式【Proxy Pattern】

什么是代理模式呢&#xff1f;我很忙&#xff0c;忙的没空理你&#xff0c;那你要找我呢就先找我的代理人吧&#xff0c;那代理人总要知道 被代理人能做哪些事情不能做哪些事情吧&#xff0c;那就是两个人具备同一个接口&#xff0c;代理人虽然不能干活&#xff0c;但是被 代…

解决 Mac 上使用 Electron Updater 更新 App 不成功的问题!!!

文章目录 1. 现象2. 分析并如何解决3. 后续 1. 现象 在Mac电脑上&#xff0c;使用Electron Updater对程序进行更新&#xff0c;但是一直不成功&#xff0c;也不报错。具体表现是这样的&#xff1a;当前我的程序版本是3.11版本&#xff0c;点击更新之后&#xff0c;也下载了&am…

微PE工具箱实现U盘重装Windows系统

教程来源 U盘重装Windows系统&#xff08;微PE工具箱&#xff09;_哔哩哔哩_bilibili 加上自己的一丢丢理解&#xff0c;如果你觉得长视频看了犯困&#xff0c;不如看看我的理解文章说不定能够帮助到你 准备工作 到这个网站使用迅雷下载免费无插件的官方镜像MSDN, 我告诉你…

JVM笔记 —— 出现内存溢出错误时时如何排查

一、出现内存溢出的几种情况 内存溢出错误分为StackOverflowError和OutOfMemoryError&#xff0c;前者是栈中出现溢出&#xff0c;后者一般是堆或方法区出现溢出&#xff0c;简称OOM 1. 栈溢出 StackOverflowError 栈溢出一般都是因为没有正确的结束递归导致的&#xff0c;无…

python安装第三方包时报错:...\lib\site-packages\pip\_vendor\urllib3\response.py...

安装redis第三方包&#xff1a; pip install redis报错现象&#xff1a; 解决方法&#xff1a;使用以下命令可成功安装 pip install redis -i http://pypi.douban.com/simple --trusted-host pypi.douban.com

关于网络入侵检测领域使用Spark/Flink等计算框架做分布式

关于网络入侵检测领域使用Spark/Flink等计算框架做分布式 0、引言1 基于LightGBM的网络入侵检测研究2 基于互信息法的智能化运维系统入侵检测Spark实现3 基于Spark的车联网分布式组合深度学习入侵检测方法4 基于Flink的分布式在线集成学习框架研究5 基于Flink的分布式并行逻辑回…

【Spring】-Spring的IoC和DI

作者&#xff1a;学Java的冬瓜 博客主页&#xff1a;☀冬瓜的主页&#x1f319; 专栏&#xff1a;【Framework】 主要内容&#xff1a;什么是spring&#xff1f;IoC容器是什么&#xff1f;如何使代码解耦合&#xff1f;IoC的核心原理&#xff0c;IoC的优点。依赖注入/对象装配/…

Linux下在qtcreator中创建qt程序

目录 1、新建项目 2、单工程项目创建 3、多工程项目创建 4、添加子工程&#xff08;基于多工程目录结构&#xff09; 5、 .pro文件 1、新建项目 切换到“编辑”界面&#xff0c;点击菜单栏中的“文件”-“新建文件或项目” 2、单工程项目创建 只有一个工程的项目&#…

Axure RP移动端高保真CRM办公客户管理系统原型模板及元件库

Axure RP移动端高保真CRM办公客户管理系统原型模板及元件库&#xff0c;一套典型的移动端办公工具型APP Axure RP原型模板&#xff0c;可根据实际的产品需求进行扩展&#xff0c;也可以作为移动端原型设计的参考案例。为提升本作品参考价值&#xff0c;在模板设计过程中尽量追求…

chatGPT应用于房地产行业

作为 2023 年的房地产专业人士&#xff0c;您无疑认识到技术对行业的重大影响。近年来&#xff0c;一项技术进步席卷了世界——人工智能。人工智能彻底改变了房地产业务的各个方面&#xff0c;从简化管理任务到增强客户互动。 在本文中&#xff0c;我们将探讨几种巧妙的人工智…

zabbix自动注册服务器以及部署代理服务器

文章目录 Zabbix自动注册服务器及部署代理服务器一.zabbix自动注册1.什么是自动注册2.环境准备3.zabbix客户端配置4.在 Web 页面配置自动注册5.验证自动注册 二.部署 zabbix 代理服务器1.分布式监控的作用&#xff1a;2.环境部署3.代理服务器配置4.客户端配置5.web页面配置5.1 …

分类预测 | MATLAB实现GWO-BiLSTM-Attention多输入分类预测

分类预测 | MATLAB实现GWO-BiLSTM-Attention多输入分类预测 目录 分类预测 | MATLAB实现GWO-BiLSTM-Attention多输入分类预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.GWO-BiLSTM-Attention 数据分类预测程序 2.代码说明&#xff1a;基于灰狼优化算法&#xff08…

微信小程序(原生)搜索功能实现

一、效果图 二、代码 wxml <van-searchvalue"{{ keyword }}"shape"round"background"#000"placeholder"请输入关键词"use-action-slotbind:change"onChange"bind:search"onSearch"bind:clear"onClear&q…