Zabbix服务监控总结

 

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中的选项进行添加监控项)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值