zabbix-server | 192.168.252.137 | 监控 |
zabbix-node1 | 192.168.252.138 | 被监控端 |
zabbix-node2 | 192.168.252.139 | 被监控端 |
zabbix-proxy | 192.168.252.140 | 代理proxy |
一、监控JVM
监控server节点:192.168.252.137
监控node节点:192.168.252.138
安装Jdk和Tomcat
java官方下载地址:Java Archive Downloads - Java SE 8u211 and later | Oracle 中国
tomcat官方下载地址: Apache Tomcat® - Welcome!
jdk
zabbix-node1:
1.获取安装包
wget https://download.oracle.com/otn/java/jdk/8u411-b09/43d62d619be4e416215729597d70b8ac/jdk-8u411-linux-x64.tar.gz
2.解压
tar -xvzf jdk-8u211-linux-x64.tar.gz -C /usr/local/
cd /usr/local/
mv jdk1.8.0_211/ java
3.配置环境变量
vim /etc/profile
export JAVA_HOME=/usr/local/java
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar
source /etc/profile
4.查看是否成功
java -version
tomcat
zabbix-node1:
1.获取安装包
wget https://archive.apache.org/dist/tomcat/tomcat-8/v8.5.45/bin/apache-tomcat-8.5.45.zip
2.解压
tar -xvzf apache-tomcat-8.5.45.zip -C /usr/local
cd /usr/local
mv apache-tomcat-8.5.45/ tomcat
3.创建软链接
ln -s /usr/local/tomcat/bin/startup.sh /root/tomcat_start.sh
4.启动!
./tomcat_start.sh
被监控节点安装zabbix-java-gateway
zabbix-node1:
1.安装安装包
rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
yum install zabbix-java-gateway -y
2.编辑监控网关文件
vim /etc/zabbix/zabbix_java_gateway.conf
开启这几项配置:
LISTEN_IP="0.0.0.0"
LISTEN_PORT=10052
START_POLLERS=50
TIMEOUT=30
3.启用debuginfo存储库
vim /etc/yum.repos.d/zabbix.repo
[zabbix-debuginfo]
name=Zabbix Official Repository debuginfo - $basearch
baseurl=http://repo.zabbix.com/zabbix/5.0/rhel/7/$basearch/debuginfo/
enabled=1 #打开!!
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
gpgcheck=0
yum install zabbix-debuginfo -y
4.启动java-gateway
systemctl start zabbix-java-gateway
systemctl enable zabbix-java-gateway
netstat -tnpl
配置监控节点
zabbix-server:
1.配置监控jvm节点
vim /etc/zabbix/zabbix_server.conf
JavaGateway=192.168.252.138 #这里写java-gateway的ip地址
JavaGatewayPort=10052 #这里写java-gateway主机占用的端口号
StartJavaPollers=20 #启动多少个进程去轮询 java gateway
2.重启server节点
systemct restart zabbix-server
ps -ef | grep 'java'
Tomcat开启JVM监控
1.配置catalina.sh
vim /usr/local/tomcat/bin/catalina.sh
# ----- Execute The Requested Command -----------------------------------------
CATALINA_OPTS="$CATALINA_OPTS
-Dcom.sun.management.jmxremote
-Djava.rmi.server.hostname=192.168.252.138 <---tomcat所在ip地址
-Dcom.sun.management.jmxremote.port=10086 <---指定端口号
-Dcom.sun.management.jmxremote.ssl=false <---ssl,false表示不使用ssl链接
-Dcom.sun.management.jmxremote.authenticate=false" <---是否需要用户名和密码。false表示不使用监控,即不需要用户名和密码
2.重新启动
ps -aux | grep 'tomcat'
kill -9 [tomcat的进程号]
./tomcat_start.sh
验证JMX数据
window安装jdk
Java Archive Downloads - Java SE 8u211 and later | Oracle 中国
浏览器中输入:https://download.oracle.com/otn/java/jdk/8u411-b09/43d62d619be4e416215729597d70b8ac/jdk-8u411-windows-x64.exe
进入到java的bin目录下
主机添加JVM
链接模版
查看结果
二、监控SNMP
监控node节点:192.168.252.138
安装SNMP
yum install net-snmp net-snmp-utils -y
测试SNMP
vim /etc/snmp/snmpd.conf
将红线处的注释打开以便于我们开始测试
测试语法:
snmpget [命令参数] [-Cf] AGENT OID [OID]...
tips:
命令参数:
-v 1|2c|3 使用snmp协议的哪个版本。最常用的是2c版本
-c [口令] 设置口令,一般都是public,配置文件可修改口令
snmpget -v 2c -c public 192.168.153.178 .1.3.6.1.2.1.25.2.2.0 #测试获取内存总量大小的
主机添加SNMP
链接模版
查看结果
三、监控IPMI
参考官方文档:4 IPMI 检查
四、监控php-fpm服务的状态
监控node节点:192.168.252.138
安装php-fpm、nginx
php-fpm
zabbix-node1:
1.安装php-fpm
yum -y install php-fpm
2.修改配置文件
vim /etc/php-fpm.d/www.conf
修改配置: ----打开注释并修改
user = nginx
group = nginx
pm.status_path = /php-fpm-status
ping.path = /ping
ping.response = pong
3.启动
systemctl start php-fpm
tips:
参数解释
user = nginx #用户
group = nginx #组
pm.status_path = /php-fpm-status #状态监测页面
ping.path = /ping #ping 接口
ping.response = pong #相应内容pong
nginx
zabbix-node1:
1.安装
yum -y install nginx
2.修改配置文件
vim /etc/nginx/nginx.conf
server {
listen 80;
server_name localhost;
# root /usr/share/nginx/html;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
error_page 404 /404.html;
location = /404.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
location ~ \.php$ { #打开注释的开始
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~* /(php-fpm-status|ping) {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;
include fastcgi_params;
access_log off;
} #打开注释的结束
location /status {
stub_status on;
access_log off;
}
}
}
3.检查nginx配置文件
nginx -t
4.启动
systemctl start nginx
被监控端定义参数
zabbix-node1:
1.查询
curl 192.168.252.138/php-fpm-status
pool: www
process manager: dynamic
start time: 24/Aug/2024:20:03:34 +0800
start since: 73
accepted conn: 1
listen queue: 0
max listen queue: 0
listen queue len: 128
idle processes: 4
active processes: 1
total processes: 5
max active processes: 1
max children reached: 0
slow requests: 0
2.编辑参数命令
vim /etc/zabbix/zabbix_agentd.d/php_status.conf
文件内容:
UserParameter=php-fpm.stats[*],curl -s http://192.168.246.226/php-fpm-status | awk '/^$1/{print $$NF}'
3.重启服务
systemctl restart zabbix-agent
测试能否获取
zabbix_get -s 192.168.252.138 -p 10050 -k "php-fpm.stats[参数]"
tips:
参数
pool
process manager
start time
start since
accepted conn
listen queue
max listen queue
listen queue len
idle processes
active processes
total processes
max active processes
max children reached
slow requests
创建模版
模版上配置监控项
创建的三个监控项
主机链接模版
选择刚才创建好的模版
五、MySQL主从复制监控
主:mysql-master:192.168.252.138
从:mysql-slave:192.168.252.139
一主一从配置(binlog日志形式)
mysql-master:
1.主节点开启binlog日志
vim /etc/my.cnf
[mysqld]
...
server-id=1
log-bin=/var/log/mysql/mysql-bin
...
2.创建目录
mkdir -p /var/log/mysql/mysql-bin
chown -R mysql.mysql /var/log/mysql/
3.重启mysql
systemctl restart mysqld
4.创建主机用户
mysql> grant replication slave,reload,super on *.* to 'repl'@'%' identified by 'Repl@2024';
mysql> flush privileges;
mysql> show master status ;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000023 | 154 | | | |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
mysql-slave:
1.编辑binlog
vim /etc/my.cnf
[mysqld]
...
server-id=2
...
[mysql]
host=127.0.0.1
user=root
password='@Syh2025659' #写入这几行命令就不需要输入密码直接命令行输入mysql即可登录不会有警告信息
2.重启mysql
systemctl restart mysqld
3.添加主节点信息
mysql> change master to
-> master_host='192.168.252.138'
-> master_user='repl'
-> master_password='Repl@2024'
-> master_log_file='mysql-bin.000023'
-> master_log_pos=154
4.开启主从
mysql> start slave;
监控项
MySQL服务状态端
使用zabbix的自带监控模版
MySQL的主从复制状态
测试:
mysql -uroot -e "show slave status\G" | grep -E 'Slave_IO_Running: Yes|Slave_SQL_Runnin
g: Yes' |grep -c Yes
统计Yes的数量只有为两个的时候主从状态才对
编辑配置文件
vim /etc/zabbix/zabbix_agentd.d/mysql_status_show.conf
UserParameter=mysql.status,mysql -u root -e "show slave status\G" | grep -E 'Slave_IO_Running: Yes|Slave_SQL_Running: Yes' | grep -c Yes
重启zabbix-agent
systemctl restart zabbix-agent
zabbix-server端
zabbix_get -s 192.168.252.139 -k 'mysql.status' -p 10050
创建监控项并测试
创建触发器
MySQL的主从是否延迟
查看是延迟实际上是查看slave中的SQL_Delay的值
测试:
mysql -u root -e "show slave status\G" | grep SQL_Delay | awk -F : '{print $2}'
mysql -u root -e "show slave status\G" | grep "Seconds_Behind_Master" | awk -F: '{print $2}'
如果是0主从复制延迟为0
编辑配置文件
vim /etc/zabbix/zabbix_agentd.d/mysql_dely_show.conf
UserParameter=mysql.dely,mysql -u root -e "show slave status\G" | grep "Seconds_Behind_Master" | awk -F: '{print $2}'
或
UserParameter=mysql.dely,mysql -u root -e "show slave status\G" | grep SQL_Delay | awk -F : '{print $2}'
创建监控项
创建触发器
MySQL的吞吐量
mysql吞吐量的信息(监控MYSQL的插入、查询、删除、更新等)
创建监控脚本
1.编辑获取对应的吞吐量脚本
vim /etc/zabbix/zabbix_agentd.d/Throughput.sh
#!/bin/bash
com_insert(){
mysqladmin -uroot -p@Syh2025659 extended-status 2>/dev/null | awk '/\<Com_insert\>/{print $4}'
}
com_slow(){
mysqladmin status -uroot -p@Syh2025659 2>/dev/null | awk '{print $9}'
}
com_delete(){
mysqladmin -uroot -p@Syh2025659 extended-status 2>/dev/null | awk '/\<Com_delete\>/{print $4}'
}
com_update(){
mysqladmin -uroot -p@Syh2025659 extended-status 2>/dev/null | awk '/\<Com_update\>/{print $4}'
}
com_select(){
mysqladmin -uroot -p@Syh2025659 extended-status 2>/dev/null | awk '/\<Com_select\>/{print $4}'
}
$1
2.更改权限
chmod 777 /etc/zabbix/zabbix_agentd.d/Throughput.sh
创建监控项
com_insert
com_select
com_slow
com_delete
com_update
创建图形
在此没有大量操作所以显示比较简单
MySQL的Threads_connected
Threads_connected当前打开的连接的数量。这个是服务器状态变量,服务器维护许多提供操作相关信息的状态变量
测试:
mysql -u root -e "select count(*) from performance_schema.threads where name like '%connection';" |grep -v count
tips:
show status可以卡连接数量
编辑配置文件
vim /etc/zabbix/zabbix_agentd.d/thread.conf
UserParameter=mysql_thread,mysql -u root -e "select count(*) from performance_schema.threads where name like '%connection';" |grep -v count
重启
systemctl restart zabbix-agent
创建监控项
触发器>500进行报警
创建图形
MySQL的TPS
数据库的TPS:每秒处理的事务数量
数据库的QPS:每秒查询数量
TPS = 事务提交总数/时间 + 事务回滚总数/时间
编辑脚本
vim /etc/zabbix/zabbix_agentd.d/tps.sh
#!/bin/bash
rollback=`mysqladmin -uroot -p@Syh2025659 extended-status 2>/dev/null | awk '/\<Com_rollback\>/{print $4}'` #事务回滚的次数
commit=`mysqladmin -uroot -p@Syh2025659 extended-status 2>/dev/null | awk '/\<Com_commit\>/{print $4}'` #事务提交的次数
t=`mysqladmin -uroot -p@Syh2025659 status 2>/dev/null | awk '{print $2}'` #Mysql运行的总时长
echo $[($rollback+$commit)/$t]
编辑配置文件
vim /etc/zabbix/zabbix_agentd.d/tps.conf
UserParameter=mysql.tps,bash /etc/zabbix/zabbix_agentd.d/tps.sh
启动
systemctl restart zabbix-agent
创建监控项
创建图形
其他监控项
mysqladmin -u root -p@Syh2025659 extended-status 2>/dev/null | grep -i connections
Connections试图连接MySQL服务器的次数
Max_used_connections:同时使用的连接的最大数目
mysqladmin -u root -p@Syh2025659 extended-status 2>/dev/null | grep -i flush_commands
Flush_commands:执行flush命令的次数
mysqladmin -u root -p@Syh2025659 extended-status 2>/dev/null | grep -i open_tables | grep -iv com
Open_tables:打开表的数量
六、监控Redis
监控node节点:192.168.252.139
安装Redis服务
yum -y install epel-reaease
yum -y install redis
配置文件
vim /etc/redis.conf
/# bind 0.0.0.0
打开注释
bind 0.0.0.0
启动
systemct start redis
监控redis指标脚本
1.测试监控指标
yum -y install nmap-ncat
# 查看redis版本
echo -e "info\n quit" | nc 192.168.153.149 "6379" | grep -w redis_version
# 查看使用当前redis的linux版本
echo -e "info\n quit" | nc 192.168.153.149 "6379" | grep -w os
2.编写redis的脚本
zabbix-node2:
vim /etc/zabbix/zabbix_agentd.d/redis_monitoring.sh
#!/bin/bash
function redis_status(){
R_PORT=$1
R_COMMAND=$2
(echo -en "INFO \r\n";sleep 1;) | nc 192.168.252.138 "$R_PORT" > /tmp/redis_"$R_PORT".tmp
REDIS_STATUS_VALUE=$(grep -w "$R_COMMAND" /tmp/redis_"$R_PORT".tmp | cut -d ':' -f2)
echo $REDIS_STATUS_VALUE
}
function help(){
echo "${0} + redis_status+ PORT + COMMAND"
}
function main(){
case $1 in
redis_status)
redis_status $2 $3
;;
*)
help
;;
esac
}
main $1 $2 $3
加粗下划线的地方改成自己的ip
chmod +x /etc/zabbix/zabbix_agentd.d/redis_monitoring.sh
3.重启
systemctl restart redis
链接模版
七、监控Nginx性能
监控node节点:192.168.252.139
安装nginx服务
1.编辑配置文件
vim /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
2.安装nginx
yum -y install nginx
vim /etc/nginx/nginx.conf
添加配置文件
location /status {
stub_status on;
access_log off;
}
3.启动
systemctl start nginx
编写脚本
1.编写脚本
vim /etc/zabbix/zabbix_agentd.d/nginx_monitor.sh
#!/bin/bash
NGINX_PORT=80
NGINX_COMMAND=$1
nginx_active(){
curl -s "http://127.0.0.1:"$NGINX_PORT"/status/" |awk '/Active/ {print $NF}'
}
nginx_reading(){
/usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/status/" |awk '/Reading/ {print $2}'
}
nginx_writing(){
/usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/status/" |awk '/Writing/ {print $4}'
}
nginx_waiting(){
/usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/status/" |awk '/Waiting/ {print $6}'
}
nginx_accepts(){
/usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/status/" |awk 'NR==3 {print $1}'
}
nginx_handled(){
/usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/status/" |awk 'NR==3 {print $2}'
}
nginx_requests(){
/usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/status/" |awk 'NR==3 {print $3}'
}
case $NGINX_COMMAND in
active)
nginx_active;
;;
reading)
nginx_reading;
;;
writing)
nginx_writing;
;;
waiting)
nginx_waiting;
;;
accepts)
nginx_accepts;
;;
handled)
nginx_handled;
;;
requests)
nginx_requests;
;;
*)
echo $"USAGE:$0 {active|reading|writing|waiting|accepts|handled|requests}"
esac
chmod +x /etc/zabbix/zabbix_agentd.d/nginx_monitor.sh
编写自定义参数
1.编写监控脚本
vim /etc/zabbix/zabbix_agentd.d/nginx_monitor.conf
UserParameter=nginx_status[*],/bin/bash /etc/zabbix/zabbix_agentd.d/nginx_monitor.sh "$1"
2.重启
systemctl restart zabbix-agent
测试
zabbix-server 或 zabbix-proxy:
zabbix_get -s 192.168.252.139 -k "nginx_status[active]" -p 10050
zabbix_get -s 192.168.252.139 -k "nginx_status[requests]" -p 10050
模版创建
模版添加监控项
创建监控项
各种监控项(根据脚本中的case中的选项进行添加监控项)