셸 스크립트 구현zabbix 모니터링 정보 수집
zabbix 정보 수집
일반적으로zabbix 정보 수집은 모두 스크립트로 쓰인다
사고방식: 모니터링 정보를 함수로 작성하고 위치 매개 변수 $1을 사용하여 함수를 호출하면 됩니다. 일반적으로zabbix가 참고합니다.
1.tcp 정보 수집
tcp 세 번 악수
일반적으로 클라이언트가 요청
1.먼저 클라이언트가 서버에 SYN 요청 패키지를 요청합니다.
2.서버가 확인을 받은 후 클라이언트에게 ACK의 확인 패키지를 회신하고 클라이언트에게 SYN 패키지를 발기하면 클라이언트와 연결을 요청하는 것을 나타낸다
3.클라이언트가sync의 패키지를 받은 후 ACK의 확인 패키지에 답장하여 서버와 연결을 하고 세 번의 악수가 끝났다는 것을 표시합니다
손을 흔들다
일반적으로 서버에서 시작합니다. 예를 들어 사용자가 요청한 데이터를 모두 사용자에게 주면 연결이 끊어집니다.
서로 다른 응용 프로그램은 서로 다른 닫힐 수 있다. 예를 들어 ssh는 클라이언트가 시작하는 것이다
1.서버 측이 클라이언트에게 연결을 끊겠다는 FIN 패키지를 보냅니다.
2.클라이언트가 FIN 패키지를 받은 후 오류가 없음을 확인하면 ACK 패키지에 응답합니다.
3.서버 측과 연결이 끊겼으니 클라이언트도 연결을 끊고 클라이언트가 서버에 FIN 패키지를 보냅니다.
4.서버가 FIN 패키지를 받은 후 ACK 패키지에 회신하여 악수 네 번 완료
[외부 체인 이미지 저장 실패, 원본 사이트에 도난 방지 체인 메커니즘이 있을 수 있으므로 그림을 저장하여 직접 업로드하는 것을 권장합니다(img-4rkD7001-1592060494794)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20032915464809.png)]
SYN, FIN, ACK 이런 것들은 우리가 볼 수 없다. 우리가 볼 수 있는 것은 Listen, ESTABLSHED, CLOSE WAIT, TIME_ 뿐이다WAIT, CLOSED, SYN, FIN, ACK 등의 상태를 보았다면 문제를 설명할 수 있습니다
스크립트 작성 시작 ,
[root@localhost d18_ph_zabbix_sjxx]# netstat -an | grep 'tcp' | awk '{status[$NF]++} END{for (i in status){print i,status[i]}}'
LISTEN 13
ESTABLISHED 2
[root@localhost d18_ph_zabbix_sjxx]# ss -an | grep 'tcp' | awk '{status[$2]++} END{for (i in status){print i,status[i]}}'
LISTEN 13
ESTAB 2
zabbix ,
#!/bin/bash
#zabbix tcp ,ss
LISTEN() {
#ss
#ss -an | grep 'tcp' | grep 'LISTEN' | wc -l
#netstat
netstat -an | grep 'tcp' | grep 'LISTEN' | wc -l
}
SYN_RECV() {
#ss
#ss -an | grep 'tcp' | grep 'SYN[-_]RECV' | wc -l
#netstat
netstat -an | grep 'tcp' | grep 'SYN[-_]RECV' | wc -l
}
ESTABLISHED() {
#ss
#ss -an | grep 'tcp' | grep 'ESTAB' | wc -l
#netstat
netstat -an | grep 'tcp' | grep 'ESTABLISHED' | wc -l
}
TIME_WAIT() {
#ss
#ss -an | grep 'tcp' | grep 'TIME[-_]WAIT' | wc -l
#netstat
netstat -an | grep 'tcp' | grep 'TIME[-_]WAIT' | wc -l
}
$1
$1 , $1 LISTEN LISTEN
:
[root@localhost d18_ph_zabbix_sjxx]# ./zabbix_tcp_connect_status.sh LISTEN
13
[root@localhost d18_ph_zabbix_sjxx]# ./zabbix_tcp_connect_status.sh ESTABLISHED
2
2. mysql 정보 수집
mysqladmin 명령은 비밀번호를 바꿀 수 있을 뿐만 아니라 확장된 기능도 많다 mysql
[root@localhost d18_ph_zabbix_sjxx]# mysqladmin status
Uptime: 263313 Threads: 1 Questions: 3 Slow queries: 0 Opens: 0 Flush tables: 2 Open tables: 26 Queries per second avg: 0.000
[root@localhost ~]# mysqladmin -uroot -p123 status
Uptime: 39713 Threads: 1 Questions: 2 Slow queries: 0 Opens: 0 Flush tables: 2 Open tables: 26 Queries per second avg: 0.000
mysql , , ,
[root@localhost d18_ph_zabbix_sjxx]# mysqladmin extended-status
+------------------------------------------+-------------+
| Variable_name | Value |
+------------------------------------------+-------------+
| Com_commit | 0 |
| Com_insert | 0 |
| Com_delete | 0 |
| Com_update | 0 |
| Com_select | 0 |
| Com_rollback | 0 |
+------------------------------------------+-------------+
스크립트 내용#!/bin/bash
# mysql
# uptime
Uptime() {
mysqladmin status | awk '{print $2}'
}
#
Slow_queries() {
mysqladmin status | awk '{print $9}'
}
#insert
Com_insert() {
mysqladmin extended-status | awk '/\/{print $4}'
}
#delete
Com_delete() {
mysqladmin extended-status | awk '/\/{print $4}'
}
#update
Com_update() {
mysqladmin extended-status | awk '/\/{print $4}'
}
#select
Com_select() {
mysqladmin extended-status | awk '/\/{print $4}'
}
#commit( )
Com_commit() {
mysqladmin extended-status | awk '/\/{print $4}'
}
#rollback( )
Com_rollback() {
mysqladmin extended-status | awk '/\/{print $4}'
}
$1
[root@localhost d18_ph_zabbix_sjxx]# ./zabbix_mysql_status.sh Uptime
264790
[root@localhost d18_ph_zabbix_sjxx]# ./zabbix_mysql_status.sh Slow_queries
0
[root@localhost d18_ph_zabbix_sjxx]# ./zabbix_mysql_status.sh Com_insert
0
[root@localhost d18_ph_zabbix_sjxx]# ./zabbix_mysql_status.sh Com_delete
0
[root@localhost d18_ph_zabbix_sjxx]# ./zabbix_mysql_status.sh Com_update
0
[root@localhost d18_ph_zabbix_sjxx]# ./zabbix_mysql_status.sh Com_select
1
[root@localhost d18_ph_zabbix_sjxx]# ./zabbix_mysql_status.sh Com_commit
0
[root@localhost d18_ph_zabbix_sjxx]# ./zabbix_mysql_status.sh Com_rollback
0
3. 메모리 정보 수집
vim의 파일이 하나씩 있을 때마다 하드디스크에서 데이터를 메모리 페이지 페이지로 읽습니다. 만약에 파일을 쓰려면 페이지 페이지가 부족할 수도 있습니다. 여러 개로 나누어야 합니다. 이것은 더러운 페이지를 형성합니다. 저장하지 않으면 분실 파일이 됩니다. 메모리에서 수정했기 때문에 우리는 하드디스크로 오래 지속되어야 합니다.
cp 파일이 있을 때 먼저 메모리 페이지로 복사하고, 다른 메모리 페이지로 복사하고, 마지막에 이 메모리 페이지를 하드디스크에 저장하면, 마찬가지로 더러운 페이지가 생길 수 있다
명령이 끝난 것은 데이터가 반드시 하드디스크에 도착했다는 것을 의미하지 않습니다. 메모리만 말할 수 있습니다. 디스크 쓰기는 기본적으로 비동기적인 방식을 사용하기 때문에sync 명령을 사용할 수 있습니다. 더러운 페이지를 하드디스크에 쓸 수 있습니다. u디스크에 자주 사용되고 하드디스크는 천천히 쓸 수 있습니다.
스크립트 내용#!/bin/bash
#
#
MemTotal() {
awk '/^MemTotal/{print $2}' /proc/meminfo
}
#
MemFree() {
awk '/^MemFree/{print $2}' /proc/meminfo
}
#
Buffers() {
awk '/^Buffers/{print $2}' /proc/meminfo
}
#
Cached(){
awk '/^Cached/{print $2}' /proc/meminfo
}
#
Dirty() {
awk '/^Dirty/{print $2}' /proc/meminfo
}
$1
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
git-자동화 스크립트
우선 우리는https://github.com/github에서 GitHub 창고를 신청했습니다.(과정은 소개하지 않겠습니다)
이제 우리는git의 자동 스크롤 스크립트를 작성합니다.
- 버전 번호를 통해 코드를 스크롤합...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.
,
[root@localhost d18_ph_zabbix_sjxx]# netstat -an | grep 'tcp' | awk '{status[$NF]++} END{for (i in status){print i,status[i]}}'
LISTEN 13
ESTABLISHED 2
[root@localhost d18_ph_zabbix_sjxx]# ss -an | grep 'tcp' | awk '{status[$2]++} END{for (i in status){print i,status[i]}}'
LISTEN 13
ESTAB 2
zabbix ,
#!/bin/bash
#zabbix tcp ,ss
LISTEN() {
#ss
#ss -an | grep 'tcp' | grep 'LISTEN' | wc -l
#netstat
netstat -an | grep 'tcp' | grep 'LISTEN' | wc -l
}
SYN_RECV() {
#ss
#ss -an | grep 'tcp' | grep 'SYN[-_]RECV' | wc -l
#netstat
netstat -an | grep 'tcp' | grep 'SYN[-_]RECV' | wc -l
}
ESTABLISHED() {
#ss
#ss -an | grep 'tcp' | grep 'ESTAB' | wc -l
#netstat
netstat -an | grep 'tcp' | grep 'ESTABLISHED' | wc -l
}
TIME_WAIT() {
#ss
#ss -an | grep 'tcp' | grep 'TIME[-_]WAIT' | wc -l
#netstat
netstat -an | grep 'tcp' | grep 'TIME[-_]WAIT' | wc -l
}
$1
$1 , $1 LISTEN LISTEN
:
[root@localhost d18_ph_zabbix_sjxx]# ./zabbix_tcp_connect_status.sh LISTEN
13
[root@localhost d18_ph_zabbix_sjxx]# ./zabbix_tcp_connect_status.sh ESTABLISHED
2
mysql
[root@localhost d18_ph_zabbix_sjxx]# mysqladmin status
Uptime: 263313 Threads: 1 Questions: 3 Slow queries: 0 Opens: 0 Flush tables: 2 Open tables: 26 Queries per second avg: 0.000
[root@localhost ~]# mysqladmin -uroot -p123 status
Uptime: 39713 Threads: 1 Questions: 2 Slow queries: 0 Opens: 0 Flush tables: 2 Open tables: 26 Queries per second avg: 0.000
mysql , , ,
[root@localhost d18_ph_zabbix_sjxx]# mysqladmin extended-status
+------------------------------------------+-------------+
| Variable_name | Value |
+------------------------------------------+-------------+
| Com_commit | 0 |
| Com_insert | 0 |
| Com_delete | 0 |
| Com_update | 0 |
| Com_select | 0 |
| Com_rollback | 0 |
+------------------------------------------+-------------+
#!/bin/bash
# mysql
# uptime
Uptime() {
mysqladmin status | awk '{print $2}'
}
#
Slow_queries() {
mysqladmin status | awk '{print $9}'
}
#insert
Com_insert() {
mysqladmin extended-status | awk '/\/{print $4}'
}
#delete
Com_delete() {
mysqladmin extended-status | awk '/\/{print $4}'
}
#update
Com_update() {
mysqladmin extended-status | awk '/\/{print $4}'
}
#select
Com_select() {
mysqladmin extended-status | awk '/\/{print $4}'
}
#commit( )
Com_commit() {
mysqladmin extended-status | awk '/\/{print $4}'
}
#rollback( )
Com_rollback() {
mysqladmin extended-status | awk '/\/{print $4}'
}
$1
[root@localhost d18_ph_zabbix_sjxx]# ./zabbix_mysql_status.sh Uptime
264790
[root@localhost d18_ph_zabbix_sjxx]# ./zabbix_mysql_status.sh Slow_queries
0
[root@localhost d18_ph_zabbix_sjxx]# ./zabbix_mysql_status.sh Com_insert
0
[root@localhost d18_ph_zabbix_sjxx]# ./zabbix_mysql_status.sh Com_delete
0
[root@localhost d18_ph_zabbix_sjxx]# ./zabbix_mysql_status.sh Com_update
0
[root@localhost d18_ph_zabbix_sjxx]# ./zabbix_mysql_status.sh Com_select
1
[root@localhost d18_ph_zabbix_sjxx]# ./zabbix_mysql_status.sh Com_commit
0
[root@localhost d18_ph_zabbix_sjxx]# ./zabbix_mysql_status.sh Com_rollback
0
#!/bin/bash
#
#
MemTotal() {
awk '/^MemTotal/{print $2}' /proc/meminfo
}
#
MemFree() {
awk '/^MemFree/{print $2}' /proc/meminfo
}
#
Buffers() {
awk '/^Buffers/{print $2}' /proc/meminfo
}
#
Cached(){
awk '/^Cached/{print $2}' /proc/meminfo
}
#
Dirty() {
awk '/^Dirty/{print $2}' /proc/meminfo
}
$1
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
git-자동화 스크립트우선 우리는https://github.com/github에서 GitHub 창고를 신청했습니다.(과정은 소개하지 않겠습니다) 이제 우리는git의 자동 스크롤 스크립트를 작성합니다. - 버전 번호를 통해 코드를 스크롤합...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.