데이터 베이스 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)
----------------------------------------------------------------------------------------------------------------
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

편집용 스크립트를 만드는 방법은 무엇입니까? 편집을 통해 스크립트를 생성하는 방법에 대한 튜토리얼 편집용 스크립트를 만드는 방법은 무엇입니까? 편집을 통해 스크립트를 생성하는 방법에 대한 튜토리얼 Mar 13, 2024 pm 12:46 PM

Cutting은 포괄적인 편집 기능, 가변 속도 지원, 다양한 필터 및 뷰티 효과, 풍부한 음악 라이브러리 리소스를 갖춘 비디오 편집 도구입니다. 이 소프트웨어에서는 비디오를 직접 편집하거나 편집 스크립트를 만들 수 있지만 어떻게 해야 합니까? 이번 튜토리얼에서는 에디터가 스크립트를 편집하고 만드는 방법을 소개합니다. 제작 방법: 1. 컴퓨터에서 편집 소프트웨어를 클릭하여 연 다음 "Creation Script" 옵션을 찾아 클릭하여 엽니다. 2. 크리에이티브 스크립트 페이지에서 '스크립트 제목'을 입력한 후, 개요에 촬영 내용에 대한 간략한 소개를 입력합니다. 3. 개요에서 "스토리보드 설명" 옵션을 어떻게 볼 수 있나요?

5분마다 실행되는 Python 스크립트 5분마다 실행되는 Python 스크립트 Sep 10, 2023 pm 03:33 PM

자동화 및 작업 스케줄링은 소프트웨어 개발에서 반복적인 작업을 간소화하는 데 중요한 역할을 합니다. API에서 데이터 가져오기, 데이터 처리 수행, 주기적인 업데이트 보내기 등 5분마다 실행해야 하는 Python 스크립트가 있다고 상상해 보세요. 스크립트를 너무 자주 수동으로 실행하면 시간이 많이 걸리고 오류가 발생하기 쉽습니다. 여기서 작업 스케줄링이 시작됩니다. 이 블로그 게시물에서는 Python 스크립트가 5분마다 실행되도록 예약하여 수동 개입 없이 자동으로 실행되도록 하는 방법을 살펴보겠습니다. 이 목표를 달성하는 데 사용할 수 있는 다양한 방법과 라이브러리에 대해 논의하여 작업을 효율적으로 자동화할 수 있습니다. time.sleep() 함수를 사용하여 5분마다 Python 스크립트를 실행하는 쉬운 방법은 tim을 활용하는 것입니다.

컴퓨터를 종료하는 Python 스크립트 컴퓨터를 종료하는 Python 스크립트 Aug 29, 2023 am 08:01 AM

오늘날 빠르게 변화하는 디지털 세상에서 컴퓨터 작업을 자동화할 수 있으면 생산성과 편의성이 크게 향상될 수 있습니다. 작업 중 하나는 컴퓨터를 종료하는 것인데, 수동으로 수행할 경우 시간이 많이 걸릴 수 있습니다. 고맙게도 Python은 시스템과 상호 작용하고 이러한 작업을 자동화할 수 있는 강력한 도구 세트를 제공합니다. 이 블로그 게시물에서는 컴퓨터를 쉽게 종료하기 위해 Python 스크립트를 작성하는 방법을 살펴보겠습니다. 자동 종료를 예약하거나, 원격으로 종료를 시작하거나, 수동 종료를 방지하여 시간을 절약하려는 경우 이 스크립트가 유용할 것입니다. 필수 모듈 가져오기 스크립트 작성을 시작하기 전에 시스템과 상호 작용하고 shutdown 명령을 실행하기 위해 필요한 모듈을 가져와야 합니다. 이 섹션에서는 os 모듈을 가져옵니다(이 모듈은

Linux 시스템에서 .sh 파일을 실행하는 방법은 무엇입니까? Linux 시스템에서 .sh 파일을 실행하는 방법은 무엇입니까? Mar 14, 2024 pm 06:42 PM

Linux 시스템에서 .sh 파일을 실행하는 방법은 무엇입니까? Linux 시스템에서 .sh 파일은 일련의 명령을 실행하는 데 사용되는 셸 스크립트라는 파일입니다. .sh 파일 실행은 매우 일반적인 작업입니다. 이 기사에서는 Linux 시스템에서 .sh 파일을 실행하는 방법을 소개하고 구체적인 코드 예제를 제공합니다. 방법 1: 절대 경로를 사용하여 .sh 파일을 실행합니다. Linux 시스템에서 .sh 파일을 실행하려면 절대 경로를 사용하여 파일 위치를 지정할 수 있습니다. 구체적인 단계는 다음과 같습니다. 터미널을 엽니다.

컴퓨터를 다시 시작하는 Python 스크립트 컴퓨터를 다시 시작하는 Python 스크립트 Sep 08, 2023 pm 05:21 PM

컴퓨터를 다시 시작하는 것은 문제 해결, 업데이트 설치 또는 시스템 변경 사항 적용을 위해 자주 수행하는 일반적인 작업입니다. 컴퓨터를 다시 시작하는 방법에는 여러 가지가 있지만 Python 스크립트를 사용하면 자동화와 편의성이 제공됩니다. 이 기사에서는 간단한 실행으로 컴퓨터를 다시 시작할 수 있는 Python 스크립트를 만드는 방법을 살펴보겠습니다. 먼저 컴퓨터를 다시 시작하는 것의 중요성과 이로 인해 얻을 수 있는 이점에 대해 논의하겠습니다. 그런 다음 Python 스크립트의 구현 세부 사항을 살펴보고 관련된 필수 모듈과 기능을 설명합니다. 이 기사 전체에서 명확한 이해를 돕기 위해 자세한 설명과 코드 조각을 제공할 것입니다. 컴퓨터 다시 시작의 중요성 컴퓨터를 다시 시작하는 것은 다음을 수행할 수 있는 기본적인 문제 해결 단계입니다.

초보자를 위한 Windows PowerShell 스크립팅 자습서 초보자를 위한 Windows PowerShell 스크립팅 자습서 Mar 13, 2024 pm 10:55 PM

우리는 기술 애호가이든 스크립팅 기술을 향상시키려는 전문가이든 초보자를 위해 이 Windows PowerShell 스크립팅 자습서를 디자인했습니다. PowerShell 스크립팅에 대한 사전 지식이 없는 경우 이 문서는 기본 사항부터 시작하여 귀하에게 맞게 조정됩니다. PowerShell 환경의 설치 단계를 익히는 데 도움을 주고 PowerShell 스크립트의 주요 개념과 기능을 안내해 드립니다. PowerShell 스크립팅에 대해 더 자세히 알아볼 준비가 되었다면 이 흥미로운 학습 여정을 함께 시작해 보세요! WindowsPowerShell이란 무엇입니까? PowerShell은 Microsoft에서 개발한 하이브리드 명령 시스템입니다.

잠금 대기 시간 초과; 트랜잭션 다시 시작 - MySQL 오류 해결 방법: 트랜잭션 대기 시간 초과 잠금 대기 시간 초과; 트랜잭션 다시 시작 - MySQL 오류 해결 방법: 트랜잭션 대기 시간 초과 Oct 05, 2023 am 08:46 AM

Lockwaittimeoutexceeded;tryrestartingtransaction - MySQL 오류 해결 방법: 트랜잭션 대기 시간 초과 MySQL 데이터베이스를 사용할 때 다음과 같은 일반적인 오류가 발생할 수 있습니다. Lockwaittimeoutexceeded;tryrestartingtransaction 이 오류는 트랜잭션 대기 시간이 초과되었음을 나타냅니다. 이 오류는 일반적으로 다음과 같은 경우에 발생합니다.

잘 알려지지 않은 최신 Bash 스크립팅 기술 5가지 잘 알려지지 않은 최신 Bash 스크립팅 기술 5가지 Jun 26, 2023 pm 08:36 PM

프로그래머는 Bash 명령 언어를 사용하여 수동 작업을 자동화하는 셸 스크립트를 만드는 경우가 많습니다. 예를 들어 다양한 구성, 파일 작업, 빌드 결과 생성 및 다양한 DevOps 관련 활동을 위한 Bash 스크립트를 생성합니다. 거의 모든 Unix 계열 또는 Unix 기반 운영 체제는 사용자에게 사전 설치된 Bash 해석기를 제공하므로 Bash를 사용하여 더 이식 가능한 자동화 스크립트를 작성할 수 있습니다. 우리가 이미 알고 있듯이 Bash 스크립팅은 Bash 명령 언어, 내장 Bash 명령 및 GNU Core Tools와 같은 핵심 운영 체제 CLI 프로그램의 구문을 사용하여 일련의 명령을 작성하는 것을 의미합니다. 표준 및 구식 Bash 스크립트는 일반적으로 일부 명령을 실행하고 터미널에 일반 텍스트를 표시합니다.

See all articles