strace, lsof 및 fdinfo를 사용하여 프로세스가 모니터링하려는 대상을 찾으려면 어떻게 해야 합니까?

strace, lsof 및 fdinfo를 사용하여 프로세스가 모니터링하려는 대상을 찾으려면 어떻게 해야 합니까?

RHEL 7, xfs 파일 시스템 호스트에 프로세스(NewRelic 인프라 에이전트)가 걸려 있습니다. 다른 프로세스에서 이미 사용 중인 파일이나 소켓을 모니터링하려는 것 같습니다.

실행하면 strace다음과 같은 결과가 나타납니다.

strace: Process 18333 attached
read(6,

실행해 lsof보면 다음과 같습니다.

COMMAND     PID USER   FD      TYPE             DEVICE SIZE/OFF     NODE NAME
newrelic- 18333 root  cwd       DIR              253,3      236       64 /
newrelic- 18333 root  rtd       DIR              253,3      236       64 /
newrelic- 18333 root  txt       REG              253,3 15672136  9280340 /usr/bin/newrelic-infra
newrelic- 18333 root  mem       REG              253,3    68192 16892409 /usr/lib64/libbz2.so.1.0.6
newrelic- 18333 root  mem       REG              253,3   157400 16892537 /usr/lib64/liblzma.so.5.2.2
newrelic- 18333 root  mem       REG              253,3    90248 16891935 /usr/lib64/libz.so.1.2.7
newrelic- 18333 root  mem       REG              253,3   100008 16891900 /usr/lib64/libelf-0.172.so
newrelic- 18333 root  mem       REG              253,3    19896 16892403 /usr/lib64/libattr.so.1.1.0
newrelic- 18333 root  mem       REG              253,3    88776 16798006 /usr/lib64/libgcc_s-4.8.5-20150702.so.1
newrelic- 18333 root  mem       REG              253,3    19288 16891827 /usr/lib64/libdl-2.17.so
newrelic- 18333 root  mem       REG              253,3   330464 16891809 /usr/lib64/libdw-0.172.so
newrelic- 18333 root  mem       REG              253,3    43776 17005232 /usr/lib64/librt-2.17.so
newrelic- 18333 root  mem       REG              253,3  1137024 16891840 /usr/lib64/libm-2.17.so
newrelic- 18333 root  mem       REG              253,3    20032 16892412 /usr/lib64/libcap.so.2.22
newrelic- 18333 root  mem       REG              253,3    86544 16891748 /usr/lib64/libnss_myhostname.so.2
newrelic- 18333 root  mem       REG              253,3   105824 17005229 /usr/lib64/libresolv-2.17.so
newrelic- 18333 root  mem       REG              253,3    31408 17005206 /usr/lib64/libnss_dns-2.17.so
newrelic- 18333 root  mem       REG              253,3    61624 17005208 /usr/lib64/libnss_files-2.17.so
newrelic- 18333 root  mem       REG              253,3  2151672 16891807 /usr/lib64/libc-2.17.so
newrelic- 18333 root  mem       REG              253,3   141968 17005223 /usr/lib64/libpthread-2.17.so
newrelic- 18333 root  mem       REG              253,3   163400 16798041 /usr/lib64/ld-2.17.so
newrelic- 18333 root    0r      CHR                1,3      0t0     1042 /dev/null
newrelic- 18333 root    1u     unix 0xffff9350a1c09c00      0t0  1317098 socket
newrelic- 18333 root    2u     unix 0xffff9350a1c09c00      0t0  1317098 socket
newrelic- 18333 root    3u     IPv4           11711276      0t0      TCP myfunhost:52494->infra-api.newrelic.com:https (ESTABLISHED)
newrelic- 18333 root    4u  a_inode               0,10        0     6464 [eventpoll]
newrelic- 18333 root    6r  a_inode               0,10        0     6464 inotify
newrelic- 18333 root    7r  a_inode               0,10        0     6464 inotify
newrelic- 18333 root    8u     unix 0xffff93518321b400      0t0  1318644 socket

fdinfo프로세스에서 파일 설명자를 확인하면 다음과 같습니다 .

pos:    0
flags:    00
mnt_id:    10
inotify wd:1 ino:77f7 sdev:14 mask:fce ignored_mask:0 fhandle-bytes:c fhandle-type:1 f_handle:3e61c95cf777000000000000

fdinfo정보를 얻거나 lsof모니터링하려는 내용을 찾을 수 있습니까?

답변1

프로세스를 다시 시작할 수 있는 경우 프로세스를 시작 strace하고 inotify_add_watch시스템 호출을 모니터링하세요.

inotify재귀적 모니터링은 지원되지 않으므로 모니터링되는 각 디렉터리가 화면에 인쇄됩니다.

strace -fe trace=inotify_add_watch ./NewRelic

관련 정보