Maison base de données tutoriel mysql Nagios里面监控MySQL事务一直RUNNING没有结束的报警Shell脚本_MySQL

Nagios里面监控MySQL事务一直RUNNING没有结束的报警Shell脚本_MySQL

Jun 01, 2016 pm 01:01 PM
事务 脚本

序言:
业务报警订单提交异常,页面一直没有反应,排查后是事务没有提交或者回滚导致,想到如果及时监控事务的运行状态报警出来,那么就可以及时排查出问题所在,方便运营处理,所以自己就弄了一个shell脚本放在nagios来处理事务报警情况。

1,编写事务监控脚本
#!/bin/bash
# author: tim.man
# version: 1.0
# desc: check the RUNNING TRANSACTION over


ST_OK=0
ST_WR=1
ST_CR=2
ST_UK=3


TIME_TRX=10


# 提示信息
print_help() {
echo "$PROGNAME -w INT -c INT"
echo "Options:"
echo " -w/--warning)"
echo " Sets a warning number"
echo " -c/--critical)"
echo " Sets a critical level for io"
exit $ST_UK
}


while test -n "$1"; do
case "$1" in
-help|-h)
print_help
exit $ST_UK
;;
--warning|-w)
warning=$2
shift
;;
--critical|-c)
critical=$2
shift
;;
*)
echo "Unknown argument: $1"
print_help
exit $ST_UK
;;
esac
shift
done




get_wcdiff() {
if [ ! -z "$warning" -a ! -z "$critical" ]
then
wclvls=1

if [ ${warning} -gt ${critical} ]
then
wcdiff=1
fi
elif [ ! -z "$warning" -a -z "$critical" ]
then
wcdiff=2
elif [ -z "$warning" -a ! -z "$critical" ]
then
wcdiff=3
fi
}


# 脚本判断
val_wcdiff() {
if [ "$wcdiff" = 1 ]
then
echo "Please adjust your warning/critical thresholds. The warning must be lower than the critical level!"
exit $ST_UK
elif [ "$wcdiff" = 2 ]
then
echo "Please also set a critical value when you want to use warning/critical thresholds!"
exit $ST_UK
elif [ "$wcdiff" = 3 ]
then
echo "Please also set a warning value when you want to use warning/critical thresholds!"
exit $ST_UK
fi
}


get_wcdiff
val_wcdiff


# 统计mysql的事务中最大运行时间
max_over_time=`/usr/local/mysql/bin/mysql --user=nagios --password="nagiosq@xxx" -NS /usr/local/mysql/mysql.sock -e "SELECT TIME_TO_SEC(TIMEDIFF(NOW(),t.trx_started)) FROM information_schem
a.INNODB_TRX t WHERE TIME_TO_SEC(TIMEDIFF(NOW(),t.trx_started))>$TIME_TRX ORDER BY TIME_TO_SEC(TIMEDIFF(NOW(),t.trx_started)) DESC LIMIT 1;" |awk '{print $1}'`


# 如果当前没有RUNNING的事务,则直接赋值为0,以免下面if判断出错
if [ ! -n "$max_over_time" ];then max_over_time=0
fi


# 取得当前所以阻塞的事务数量
num_trx=`/usr/local/mysql/bin/mysql --user=nagios --password="nagiosq@xxx" -NS /usr/local/mysql/mysql.sock -e "SELECT COUNT(1) FROM information_schema.INNODB_TRX t WHERE TIME_TO_SEC(TIMEDIF
F(NOW(),t.trx_started))>$TIME_TRX;" |awk '{print $1}'`


if [ -n "$warning" -a -n "$critical" ]
then
if [ `expr $max_over_time \> $warning` -eq 1 -a `expr $max_over_time \ then
echo "WARNING - $num_trx TRANSACTIONS RUNNING,go over for $max_over_time seconds"
exit $ST_WR
elif [ `expr $max_over_time \> $critical` -eq 1 ]
then
echo "CRITICAL- $num_trx TRANSACTIONS RUNNNING,go over for $max_over_time seconds"
exit $ST_CR
else
echo "OK- TRANSACTIONS RAN successfully."
exit $ST_OK
fi
fi


2,在nagios客户端添加脚本监控
先测试下脚本
[root@wgq_idc_dbm_3_61 binlog]# /usr/local/nagios/libexec/check_trx -w 30 -c 60
Warning: Using a password on the command line interface can be insecure.
Warning: Using a password on the command line interface can be insecure.
OK- TRANSACTIONS RAN successfully.

[root@wgq_idc_dbm_3_61 binlog]#


在nrpe.cfg里面添加监控命令
[root@wgq_idc_dbm_3_61 binlog]# vim /usr/local/nagios/etc/nrpe.cfg
command[check_mysql_trx]=/usr/local/nagios/libexec/check_trx -w 30 -c 60

之后重启nagios客户端监控, service nrpe restart




4,在nagios主监控服务器上面添加配置选项
先去nagios服务器上面check一下
[root@localhost etc]# /usr/local/nagios/libexec/check_nrpe -H10.254.3.61 -c check_mysql_trx
OK- TRANSACTIONS RAN successfully.
[root@localhost etc]#

在services.cfg里面添加事务监控选项:
define service{
host_name mysqlserver
service_description Check mysql transctions
check_command check_nrpe!check_mysql_trx
max_check_attempts 5
check_command check_nrpe!check_mysql_trx
max_check_attempts 5
normal_check_interval 3
retry_check_interval 2
check_period 24x7
notification_interval 10
notification_period 24x7
notification_options w,u,c,r
contact_groups opsweb
}

在commands.cnf里面添加事务监控命令:
# add by tim.man on 20141201
define command{
command_name check_mysql_trx
command_line $USER1$/check_mysql_trx -w $ARG1$ -c $ARG2$
}

邮件短信报警电话报警已经添加,所以无需重新配置。

然后重新加载nagios
[root@localhost objects]# service nagios reload
Running configuration check...
Reloading nagios configuration...
done
[root@localhost objects]#



5,去nagios主监控界面查看监控效果


正常监控效果:
\


严重监控效果:



----------------------------------------------------------------------------------------------------------------

原博客地址: http://blog.itpub.net/26230597/viewspace-1355720/
原作者:黄杉 (mchdba)
----------------------------------------------------------------------------------------------------------------
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Script Python à exécuter toutes les 5 minutes Script Python à exécuter toutes les 5 minutes Sep 10, 2023 pm 03:33 PM

L'automatisation et la planification des tâches jouent un rôle essentiel dans la rationalisation des tâches répétitives dans le développement de logiciels. Imaginez qu'il y ait un script Python qui doit être exécuté toutes les 5 minutes, par exemple pour obtenir des données d'une API, effectuer un traitement de données ou envoyer des mises à jour périodiques. L’exécution manuelle de scripts aussi fréquemment peut prendre du temps et être sujette aux erreurs. C'est là qu'intervient la planification des tâches. Dans cet article de blog, nous explorerons comment planifier l'exécution d'un script Python toutes les 5 minutes, garantissant qu'il s'exécute automatiquement sans intervention manuelle. Nous discuterons de différentes méthodes et bibliothèques qui peuvent être utilisées pour atteindre cet objectif, vous permettant d'automatiser efficacement les tâches. Un moyen simple d'exécuter un script Python toutes les 5 minutes à l'aide de la fonction time.sleep() consiste à utiliser tim

Comment créer un script pour l'édition ? Tutoriel sur la création d'un script via l'édition Comment créer un script pour l'édition ? Tutoriel sur la création d'un script via l'édition Mar 13, 2024 pm 12:46 PM

Cutting est un outil de montage vidéo doté de fonctions d'édition complètes, d'une prise en charge de la vitesse variable, de divers filtres et effets de beauté, ainsi que de riches ressources de bibliothèque musicale. Dans ce logiciel, vous pouvez éditer des vidéos directement ou créer des scripts de montage, mais comment faire ? Dans ce tutoriel, l'éditeur présentera la méthode d'édition et de création de scripts. Méthode de production : 1. Cliquez pour ouvrir le logiciel d'édition sur votre ordinateur, puis recherchez l'option « Script de création » et cliquez pour ouvrir. 2. Dans la page du script créatif, saisissez le « titre du script », puis saisissez une brève introduction au contenu du tournage dans le plan. 3. Comment puis-je voir l'option « Description du storyboard » dans le plan ?

Comment exécuter le fichier .sh sur le système Linux ? Comment exécuter le fichier .sh sur le système Linux ? Mar 14, 2024 pm 06:42 PM

Comment exécuter le fichier .sh sur le système Linux ? Dans les systèmes Linux, un fichier .sh est un fichier appelé script Shell, utilisé pour exécuter une série de commandes. L'exécution de fichiers .sh est une opération très courante. Cet article explique comment exécuter des fichiers .sh dans les systèmes Linux et fournit des exemples de code spécifiques. Méthode 1 : utiliser un chemin absolu pour exécuter un fichier .sh Pour exécuter un fichier .sh dans un système Linux, vous pouvez utiliser un chemin absolu pour spécifier l'emplacement du fichier. Voici les étapes spécifiques : Ouvrez le terminal

Script Python pour arrêter l'ordinateur Script Python pour arrêter l'ordinateur Aug 29, 2023 am 08:01 AM

Dans le monde numérique en évolution rapide d'aujourd'hui, être capable d'automatiser les tâches informatiques peut augmenter considérablement la productivité et la commodité. L'une des tâches consiste à éteindre l'ordinateur, ce qui peut prendre beaucoup de temps si cela est effectué manuellement. Heureusement, Python nous fournit un ensemble d'outils puissants pour interagir avec le système et automatiser ces tâches. Dans cet article de blog, nous explorerons comment écrire un script Python pour éteindre facilement votre ordinateur. Que vous souhaitiez planifier un arrêt automatique, lancer un arrêt à distance ou simplement gagner du temps en évitant un arrêt manuel, ce script vous sera utile. Importation des modules requis Avant de commencer à écrire le script, nous devons importer les modules nécessaires afin d'interagir avec le système et d'exécuter la commande d'arrêt. Dans cette section, nous importerons le module os (qui

Script Python pour redémarrer l'ordinateur Script Python pour redémarrer l'ordinateur Sep 08, 2023 pm 05:21 PM

Le redémarrage de votre ordinateur est une tâche courante que nous effectuons souvent pour résoudre des problèmes, installer des mises à jour ou appliquer des modifications au système. Bien qu'il existe de nombreuses façons de redémarrer votre ordinateur, l'utilisation d'un script Python offre automatisation et commodité. Dans cet article, nous allons explorer comment créer un script Python capable de redémarrer votre ordinateur avec une simple exécution. Nous aborderons dans un premier temps l’importance du redémarrage de votre ordinateur et les avantages que cela apporte. Nous approfondirons ensuite les détails d’implémentation du script Python, expliquant les modules nécessaires et les fonctionnalités impliquées. Tout au long de cet article, nous fournirons des explications détaillées et des extraits de code pour garantir une compréhension claire. Importance du redémarrage de votre ordinateur Le redémarrage de votre ordinateur est une étape de dépannage de base qui peut

Tutoriel de script Windows PowerShell pour les débutants Tutoriel de script Windows PowerShell pour les débutants Mar 13, 2024 pm 10:55 PM

Nous avons conçu ce didacticiel de script Windows PowerShell pour les débutants, que vous soyez un passionné de technologie ou un professionnel cherchant à améliorer vos compétences en matière de script. Si vous n'avez aucune connaissance préalable des scripts PowerShell, cet article commencera par les bases et sera adapté à vos besoins. Nous vous aiderons à maîtriser les étapes d'installation d'un environnement PowerShell et vous guiderons à travers les principaux concepts et fonctionnalités des scripts PowerShell. Si vous êtes prêt à en savoir plus sur les scripts PowerShell, embarquons ensemble dans ce passionnant voyage d'apprentissage ! Qu’est-ce que WindowsPowerShell ? PowerShell est un système de commande hybride développé par Microsoft

Délai d'attente du verrouillage dépassé ; essayez de redémarrer la transaction - Comment résoudre l'erreur MySQL : délai d'attente de la transaction Délai d'attente du verrouillage dépassé ; essayez de redémarrer la transaction - Comment résoudre l'erreur MySQL : délai d'attente de la transaction Oct 05, 2023 am 08:46 AM

Lockwaittimeoutexceeded;tryrestartingtransaction - Comment résoudre l'erreur MySQL : délai d'attente de transaction Lorsque vous utilisez la base de données MySQL, vous pouvez parfois rencontrer une erreur courante : Lockwaittimeoutexceeded;tryrestartingtransaction. Cette erreur indique que le délai d'attente de transaction a expiré. Cette erreur se produit généralement lorsque

Script Python pour se déconnecter de l'ordinateur Script Python pour se déconnecter de l'ordinateur Sep 05, 2023 am 08:37 AM

À l’ère numérique d’aujourd’hui, l’automatisation joue un rôle essentiel dans la rationalisation et la simplification de diverses tâches. L'une de ces tâches consiste à se déconnecter de l'ordinateur, ce qui est généralement effectué manuellement en sélectionnant l'option de déconnexion dans l'interface utilisateur du système d'exploitation. Mais et si nous pouvions automatiser ce processus à l’aide d’un script Python ? Dans cet article de blog, nous explorerons comment créer un script Python capable de déconnecter votre ordinateur avec seulement quelques lignes de code. Dans cet article, nous passerons en revue le processus étape par étape de création d'un script Python pour vous déconnecter de votre ordinateur. Nous aborderons les conditions préalables nécessaires, discuterons des différentes manières de se déconnecter par programme et fournirons un guide étape par étape pour écrire le script. De plus, nous aborderons les considérations spécifiques à la plate-forme et mettrons en évidence les meilleures pratiques.

See all articles