Zabbix监控nginx
Zabbix客户端
配置nginx的yum源
编辑yum仓库:
vi /etc/yum.repos.d/nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
安装nginx:yum install -y nginx
配置nginx状态信息,增加一段配置
vi /etc/nginx/conf.d/default.conf
location /nginx_status
{
stub_status on;
access_log off;
allow 127.0.0.1;
deny all;
}
启动nginx服务:systemctl start nginx;ps aux | grep nginx
客户端测试:
[root@localhost ~]# curl http://127.0.0.1/nginx_status
Active connections: 1
server accepts handled requests
1 1 1
Reading: 0 Writing: 1 Waiting: 0 参数含义说明:
Active Connections:当前活动连接数,其中也包括了等待状态的连接
Accepts:接收到的连接数
Handled:已经处理完的连接数,该数字一般和accepts一致,如果不一致那么说明Nginx出错了
Requests:总共处理的请求数,一个连接可以有多个请求,所以该值比accpets要大
Reading:正在读取请求头信息的连接数
Writing:正在发送响应报文的连接数
Waiting:处于闲置状态,等待客户端发送请求的连接数
在客户端机器上编写脚本
vi /usr/local/sbin/ngx_status.sh
#内容如下
#!/bin/bash
url="http://127.0.0.1/nginx_status"
curl=/usr/bin/curl
# 检测nginx进程是否存在
function ping {
/sbin/pidof nginx | wc -l
}
# 检测nginx性能
function active {
$curl $url 2>/dev/null| grep 'Active' | awk '{print $NF}'
}
function reading {
$curl $url 2>/dev/null| grep 'Reading' | awk '{print $2}'
}
function writing {
$curl $url 2>/dev/null| grep 'Writing' | awk '{print $4}'
}
function waiting {
$curl $url 2>/dev/null| grep 'Waiting' | awk '{print $6}'
}
function accepts {
$curl $url 2>/dev/null| awk NR==3 | awk '{print $1}'
}
function handled {
$curl $url 2>/dev/null| awk NR==3 | awk '{print $2}'
}
function requests {
$curl $url 2>/dev/null| awk NR==3 | awk '{print $3}'
}
$1
给脚本设定权限:
chmod 755 /usr/local/sbin/ngx_status.sh
编辑客户端zabbix_agent.conf配置,增加一行
vi /etc/zabbix/zabbix_agentd.conf
# UserParameter= UserParameter=nginx.status[*],/usr/local/sbin/ngx_status.sh $1
重启服务:
systemctl restart zabbix-agent
zabbix_get 监控脚本测试:
在服务端zabbix_server执行 zabbix_get -s 192.168.19.128 -k 'nginx.status[accepts]'
Zabbix_server web UI界面操作:
配置---主机---导入---导入文件(需要下载nginx模板)
下载nginx模板
yum install -y git
git clone https://github.com/aminglinux/linux2019.git
sz /linux2019/zabbix_nginx_template/zbx_export_templates.xml
使用sz命令将,目录中的模板下载到pc上。然后在zabbixweb UI 上使用import导入就行了。
将需要监控的nginx主机链接到该模板上。
配置--主机--点击选择的主机名称---模板--链接指示器--选择--选择群组--选择模板---添加--更新---查看监控项(多了nginx的项)
Zabbix监控tomcat
监控流程:
安装zabbix_java_gateway 配置zabbix_java_gateway配置文件和zabbix_server配置文件,指定监听端口,启动进程数 编辑Tomcat配置文件,开启JMX
以下操作到zabbix WEB UI界面 添加host,指定JMX interface 链接TOMCAT模板
Zabbix-server服务端:
安装zabbix_java_gateway
yum install -y zabbix-java-gateway
修改配置文件
vi /etc/zabbix/zabbix_java_gateway.conf # LISTEN_IP="0.0.0.0" 改成 LISTEN_IP="0.0.0.0"
# LISTEN_PORT=10052 改成 LISTEN_PORT=10052 # START_POLLERS=5 改成 START_POLLERS=5
vi /etc/zabbix/zabbix_server.conf 定义 JavaGateway 和 JavaGatewayPort 和 StartJavaPollers
JavaGateway=127.0.0.1 //java gateway地址
JavaGatewayPort=10052 //java gateway默认端口
StartJavaPollers=5 //启动进程轮训个数
启动zabbix-java-gateway服务:
systemctl start zabbix-java-gateway 重启zabbix-server服务:
systemctl restart zabbix-server
开启JMX(先安装tomcat): 编辑Tomcat配置文件,开启JMX
vi /usr/local/tomcat/bin/catalina.sh
#!/bin/sh export CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote //启用远程监控jvm
-Djava.rmi.server.hostname=192.168.111.136 //运行tomcat主机的ip地址
-Dcom.sun.management.jmxremote.port=9999 //jmx启动远程端口,zabbix添加时必须一致
-Dcom.sun.management.jmxremote.ssl=false //不启用ssl加密传输
-Dcom.sun.management.jmxremote.authenticate=false" //不开启用户名密码认证
注意:上面内容添加进配置文件后,做成一行,不要换行,换行可能
导致报错tomcat起不来。
重启tomcat 服务:
/usr/local/tomcat/bin/shutdown.sh /usr/local/tomcat/bin/startup.sh
链接TOMCAT模板添加Host链接模板
配置--主机---创建主机---agent代理程序的接口(移除)---JMX接口(添加)----IP地址所需要监控的主机---端口(9999)
模板--链接指示器---添加---群组---添加--更新
Zabbix监控mysql/mariadb
授权一个监控用户
mysql -uroot -padmin123
> grant usage, process, replication client on . to 'mon'@'localhost' identified by 'x2ay9xodTvyM';
查看编辑创建配置文件
vi /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf
HOME=/var/lib/zabbix
mkdir /var/lib/zabbix
vim /var/lib/zabbix/.my.cnf
[mysql]
host=localhost
user=mon
password='x2ay9xodTvyM'
socket=/tmp/mysql.sock
[mysqladmin]
host=localhost
user=mon
password='x2ay9xodTvyM'
socket=/tmp/mysql.sock
重启zabbix-agent服务
systemctl restart zabbix-agent
测试
zabbix_get -s 127.0.0.1 -p 10050 -k mysql.ping
若提示:sh: mysqladmin: 未找到命令
需要: ln -s /usr/local/mysql/bin/mysqladmin /usr/bin/
ln -s /usr/local/mysql/bin/mysql /usr/bin/mysql
zabbix_get -s 127.0.0.1 -p 10050 -k mysql.version
zabbix_get -s 127.0.0.1 -p 10050 -k mysql.size