Nagios里面监控MySQL事务一直RUNNING没有结束的报警Shell脚本_MySQL
业务报警订单提交异常,页面一直没有反应,排查后是事务没有提交或者回滚导致,想到如果及时监控事务的运行状态报警出来,那么就可以及时排查出问题所在,方便运营处理,所以自己就弄了一个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]#
[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)
----------------------------------------------------------------------------------------------------------------

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Automasi dan penjadualan tugas memainkan peranan penting dalam menyelaraskan tugasan berulang dalam pembangunan perisian. Bayangkan terdapat skrip Python yang perlu dilaksanakan setiap 5 minit, seperti mendapatkan data daripada API, melakukan pemprosesan data atau menghantar kemas kini berkala. Menjalankan skrip secara manual dengan kerap boleh memakan masa dan terdedah kepada ralat. Di sinilah penjadualan tugas masuk. Dalam catatan blog ini, kami akan meneroka cara menjadualkan skrip Python untuk dilaksanakan setiap 5 minit, memastikan ia berjalan secara automatik tanpa campur tangan manual. Kami akan membincangkan kaedah dan perpustakaan berbeza yang boleh digunakan untuk mencapai matlamat ini, membolehkan anda mengautomasikan tugas dengan cekap. Cara mudah untuk menjalankan skrip Python setiap 5 minit menggunakan fungsi time.sleep() ialah menggunakan tim

Pemotongan ialah alat penyuntingan video dengan fungsi penyuntingan yang komprehensif, sokongan untuk kelajuan berubah-ubah, pelbagai penapis dan kesan kecantikan serta sumber perpustakaan muzik yang kaya. Dalam perisian ini, anda boleh mengedit video secara terus atau membuat skrip penyuntingan, tetapi bagaimana untuk melakukannya? Dalam tutorial ini, editor akan memperkenalkan kaedah menyunting dan membuat skrip. Kaedah pengeluaran: 1. Klik untuk membuka perisian penyuntingan pada komputer anda, kemudian cari pilihan "Skrip Penciptaan" dan klik untuk membuka. 2. Dalam halaman skrip kreatif, masukkan "tajuk skrip", dan kemudian masukkan pengenalan ringkas kepada kandungan penggambaran dalam garis besar. 3. Bagaimanakah saya boleh melihat pilihan "Penerangan Papan Cerita" dalam garis besar?

Bagaimana untuk melaksanakan fail .sh dalam sistem Linux? Dalam sistem Linux, fail .sh ialah fail yang dipanggil skrip Shell, yang digunakan untuk melaksanakan satu siri arahan. Melaksanakan fail .sh ialah operasi yang sangat biasa Artikel ini akan memperkenalkan cara melaksanakan fail .sh dalam sistem Linux dan memberikan contoh kod khusus. Kaedah 1: Gunakan laluan mutlak untuk melaksanakan fail .sh Untuk melaksanakan fail .sh dalam sistem Linux, anda boleh menggunakan laluan mutlak untuk menentukan lokasi fail. Berikut ialah langkah khusus: Buka terminal

Dalam dunia digital yang serba pantas hari ini, dapat mengautomasikan tugasan komputer boleh meningkatkan produktiviti dan kemudahan. Salah satu tugas ialah mematikan komputer, yang boleh memakan masa yang lama jika dilakukan secara manual. Syukurlah, Python memberikan kami satu set alat yang berkuasa untuk berinteraksi dengan sistem dan mengautomasikan tugasan tersebut. Dalam catatan blog ini, kami akan meneroka cara menulis skrip Python untuk mematikan komputer anda dengan mudah. Sama ada anda ingin menjadualkan penutupan automatik, memulakan penutupan dari jauh atau hanya menjimatkan masa dengan mengelakkan penutupan manual, skrip ini akan berguna. Mengimport Modul yang Diperlukan Sebelum kita mula menulis skrip, kita perlu mengimport modul yang diperlukan untuk berinteraksi dengan sistem dan melaksanakan arahan penutupan. Dalam bahagian ini kita akan mengimport modul os (yang

Memulakan semula komputer anda ialah tugas biasa yang sering kami lakukan untuk menyelesaikan masalah, memasang kemas kini atau menggunakan perubahan sistem. Walaupun terdapat banyak cara untuk memulakan semula komputer anda, menggunakan skrip Python menyediakan automasi dan kemudahan. Dalam artikel ini, kami akan meneroka cara membuat skrip Python yang boleh memulakan semula komputer anda dengan pelaksanaan yang mudah. Mula-mula kami akan membincangkan kepentingan memulakan semula komputer anda dan faedah yang dibawanya. Kami kemudiannya akan menyelidiki butiran pelaksanaan skrip Python, menerangkan modul dan fungsi yang diperlukan yang terlibat. Sepanjang artikel ini, kami akan memberikan penjelasan terperinci dan coretan kod untuk memastikan pemahaman yang jelas. Kepentingan Memulakan Semula Komputer Anda Memulakan semula komputer anda ialah langkah penyelesaian masalah asas yang boleh

Kami telah mereka bentuk tutorial skrip Windows PowerShell ini untuk pemula, sama ada anda peminat teknologi atau profesional yang ingin meningkatkan kemahiran skrip anda. Jika anda tidak mempunyai pengetahuan awal tentang skrip PowerShell, artikel ini akan bermula dengan asas dan disesuaikan untuk anda. Kami akan membantu anda menguasai langkah pemasangan untuk persekitaran PowerShell dan membimbing anda melalui konsep dan ciri utama skrip PowerShell. Jika anda bersedia untuk mengetahui lebih lanjut tentang skrip PowerShell, mari kita mulakan perjalanan pembelajaran yang menarik ini bersama-sama! Apakah WindowsPowerShell? PowerShell ialah sistem arahan hibrid yang dibangunkan oleh Microsoft

Dalam era digital hari ini, automasi memainkan peranan penting dalam memperkemas dan memudahkan pelbagai tugas. Salah satu tugas ini adalah untuk log keluar komputer, yang biasanya dilakukan secara manual dengan memilih pilihan log keluar daripada antara muka pengguna sistem pengendalian. Tetapi bagaimana jika kita boleh mengautomasikan proses ini menggunakan skrip Python? Dalam catatan blog ini, kami akan meneroka cara membuat skrip Python yang boleh log keluar dari komputer anda dengan hanya beberapa baris kod. Dalam artikel ini, kami akan melalui proses langkah demi langkah untuk mencipta skrip Python untuk log keluar dari komputer anda. Kami akan merangkumi prasyarat yang diperlukan, membincangkan cara yang berbeza untuk log keluar secara pemrograman dan menyediakan panduan langkah demi langkah untuk menulis skrip. Selain itu, kami akan menangani pertimbangan khusus platform dan menyerlahkan amalan terbaik

Lockwaittimeoutceeded;tryrestartingtransaction - Cara menyelesaikan ralat MySQL: transaction wait timeouts Apabila menggunakan pangkalan data MySQL, kadangkala anda mungkin menghadapi ralat biasa: Lockwaittimeoutexceeded;tryrestartingtransaction. Ralat ini biasanya berlaku apabila
