본문 바로가기

Skills/Linuxworld

[OLB] sos report - The Swiss Army Knife of Diagnostic Tools

Oracle Linux Blog 에 유용한 글들이 종종 올라오는데, 그중 sosreport 라는 도구가 왜 필요한지

Oracle Linux Blog ( 이하 OLB ) 에 유용한 글들이 종종 올라오는데,

그중 sosreport 라는 도구가 왜 필요한지 얼마나 유용한지 등에 대해 설명하며

추가로 우리가 고객에게 왜 해당 데이타를 필수로 요청하는 것인지 소개하는 글이 있어 간략히 번역해 보았다.

 

더보기

소개글

sosreport 명령은 2009 년 즈음 부터 꾸준히 사용되어 왔으며, 파이선을 기반으로 동작하는 이 툴은
리눅스 시스템에 대한 포괄적이고 종합적인 진단을 위한 데이타 수집용으로 설계되었습니다.
이 툴은 수 년 동안 오픈소스 커뮤니티에 의해 꾸준히 발전되어 왔으며, 현재는 "sos report" 라는 형태로 실행을 하도록 변화되었고,
시스템에 대한 어떠한 수정을 가하지 않는 순수한 진단용 데이타 수집도구입니다.

오라클에서 기술지원 받을 때 항상 필수로 요구하는 이유는 무엇인가?

간단하게 말하자면, sosreport 명령은 문제 진단을 위한 데이타들을 한자리에 모아놓은 멀티샵이라고 볼 수 있습니다.
해당 데이타에는 리눅스 시스템의 문제점들을 확인에 대한 기초가 되는 거의 모든 데이타가 수집되어 있으므로,
sosreport 에 어떤 문제에 대한 내용이 이미 수집되어 있을 수 있다는 말입니다.
물론 필요한 데이타가 추가적으로 또는 일일히 요청하고 받아야 할 수 도 있으나, 그런 과정을 줄 일 수 있는 최선책 이기 때문입니다.

몇몇 케이스의 경우 하나 이상의 sosreport 를 요청할 수 도 있으며 이것은 여러 시스템들의 비교를 위한 상황이나,
시스템의 시간상 변화를 확인하기 위해서 일 수 도 있습니다.
sosreport 는 시스템 상태에 대한 시간적 로그와 일시적 순간의 스냅샷 형식의 데이타를 제공하기 때문입니다.

"상세 필요 파일을 요청하면 안되나요?" 라고 되묻는 경우도 많은데, 물론 가능합니다.
하지만 여러번의 질의 응답과 대화가 오고가면서 놓치게 되거나 잘못된 방향으로 가고 오랜 시간을 소요하는 경우,
또는 다른 방향의 접근을 필요로 하는 경우 등이 발생할 수 있는데 sosreport 는 한번에 모든 로그 및 설정파일 등 거의 모든 데이타를 제공하므로
시간을 절약하고 잠재적 실수들에 대한 확인이 가능하므로 이슈를 정리하는 과정에 걸릴 수 있는 여러가지 불필요한 대화 및 혼선의 가능성을 줄일 수 있습니다.

설치하기

OL6 와 OL7

sudo yum install sos

OL8 과 OL9

sudo dnf install sos

실행하기

다음 보여주는 명령은 가장 많이 선호되는 sosreport 수집 방법입니다.
이 명령을 사용하면 sar 데이타는 물론 /var/log 에 기록된 로그들이 잘림 없이 완전한 파일로 모두 수집 할 수 있습니다.
( Historical 데이타는 매우 중요합니다!)

OL6 and OL7

sudo sosreport --batch --all-logs -k sar.all_sar=on

OL8

sudo sos report --batch --all-logs -k sar.all_sar=on

--batch 옵션을 사용하면 키보드 입력 부분을 패스 할 수 있어 유용합니다.
기본적으로 sos report 에서는 사용자의 이름, SR 번호 등을 묻고 관련된 파일명으로 압축시켜 주기 때문인데,
--batch 옵션은 단순히 시스템명 및 Timestamp 만을 사용해 최종 수집된 압축파일을 생성해 줍니다.

--all-logs 옵션은 /var/log 의 모든 로그를 그대로 수집해주며,
사용하지 않을 경우 /var/log/messages 와 같은 긴 로그파일들은 적당히 잘려서 일부만 수집 될 수 있습다.

-k sar.all_sar=on 옵션은 /var/log/sa 의 모든 파일을 수집한다. 사용하지 않을 경우 14일치 로그만 수집합니다.

OL9

sudo sos report --batch --all-logs -e sar -k sar.all_sar=on

-e sar 옵션은 OL9 에서는 sar 데이타 수집이 기본적으로 disable 되어 있기 때문에 필요합니다.

OL9 에서 sos 명령으로 수집시 출력 예:

[opc@ol9-1 ~]$ sudo sos report --batch --all-logs -e sar -k sar.all_sar=on

sosreport (version 4.5.3)

This command will collect diagnostic and configuration information from
this Oracle Linux system and installed applications.

An archive containing the collected information will be generated in
/var/tmp/sos.7p70_t00 and may be provided to a Oracle America support
representative.

Any information provided to Oracle America will be treated in accordance
with the published support policies at:

        Distribution Website : https://support.oracle.com/
        Commercial Support   : https://support.oracle.com/

The generated archive may contain data considered sensitive and its
content should be reviewed by the originating organization before being
passed to any third party.

No changes will be made to system configuration.


 Setting up archive ...
 Setting up plugins ...
[plugin:networking] skipped command 'ip -s macsec show': required kmods missing: macsec. Use '--allow-system-changes' to enable collection.
[plugin:networking] skipped command 'ss -peaonmi': required kmods missing: xsk_diag. Use '--allow-system-changes' to enable collection.
[plugin:sar] sar: could not list /var/log/sa
[plugin:sssd] skipped command 'sssctl config-check': required services missing: sssd.
[plugin:sssd] skipped command 'sssctl domain-list': required services missing: sssd.
[plugin:systemd] skipped command 'systemd-resolve --status': required services missing: systemd-resolved.
[plugin:systemd] skipped command 'systemd-resolve --statistics': required services missing: systemd-resolved.
 Running plugins. Please wait ...

  Starting 1/95  alternatives    [Running: alternatives]
  Starting 2/95  anacron         [Running: alternatives anacron]
  Starting 3/95  ata             [Running: alternatives anacron ata]
  Starting 4/95  auditd          [Running: alternatives anacron ata auditd]
  Starting 5/95  bcache          [Running: alternatives ata auditd bcache]
  Starting 6/95  block           [Running: alternatives ata auditd block]
  Starting 7/95  boot            [Running: alternatives ata block boot]
  Starting 8/95  btrfs           [Running: alternatives block boot btrfs]
  Starting 9/95  cgroups         [Running: block boot btrfs cgroups]
  Starting 10/95 chrony          [Running: block boot cgroups chrony]
  Starting 11/95 cloud_init      [Running: block boot cgroups cloud_init]
  Starting 12/95 cockpit         [Running: boot cgroups cloud_init cockpit]
  Starting 13/95 console         [Running: boot cgroups cloud_init console]
  Starting 14/95 cron            [Running: boot cgroups cloud_init cron]
  Starting 15/95 crypto          [Running: boot cgroups cloud_init crypto]
  Starting 16/95 date            [Running: boot cgroups cloud_init date]
  Starting 17/95 dbus            [Running: boot cgroups cloud_init dbus]
  Starting 18/95 devicemapper    [Running: boot cgroups dbus devicemapper]
  Starting 19/95 devices         [Running: boot cgroups devicemapper devices]
  Starting 20/95 dnf             [Running: boot devicemapper devices dnf]
  Starting 21/95 dracut          [Running: boot devicemapper dnf dracut]
  Starting 22/95 ebpf            [Running: boot dnf dracut ebpf]
  Starting 23/95 filesys         [Running: boot dnf ebpf filesys]
  Starting 24/95 firewall_tables [Running: boot dnf ebpf firewall_tables]
  Starting 25/95 firewalld       [Running: boot dnf ebpf firewalld]
  Starting 26/95 fwupd           [Running: dnf ebpf firewalld fwupd]
  Starting 27/95 grub2           [Running: dnf ebpf firewalld grub2]
  Starting 28/95 gssproxy        [Running: dnf ebpf grub2 gssproxy]
  Starting 29/95 hardware        [Running: dnf ebpf grub2 hardware]
  Starting 30/95 host            [Running: dnf grub2 hardware host]
  Starting 31/95 hts             [Running: dnf grub2 hardware hts]
  Starting 32/95 i18n            [Running: dnf grub2 hardware i18n]
  Starting 33/95 iscsi           [Running: dnf grub2 hardware iscsi]
  Starting 34/95 jars            [Running: dnf grub2 hardware jars]
  Starting 35/95 kdump           [Running: dnf grub2 hardware kdump]

  Starting 80/95 sunrpc          [Running: process processor selinux sunrpc]
  Starting 81/95 system          [Running: process processor selinux system]
  Starting 82/95 systemd         [Running: processor selinux system systemd]
  Starting 83/95 systemtap       [Running: processor selinux systemd systemtap]
  Starting 84/95 sysvipc         [Running: processor selinux systemtap sysvipc]
  Starting 85/95 teamd           [Running: processor selinux systemtap teamd]
  Starting 86/95 tuned           [Running: processor selinux systemtap tuned]
  Starting 87/95 udev            [Running: selinux systemtap tuned udev]
  Starting 88/95 udisks          [Running: systemtap tuned udev udisks]
  Starting 89/95 unpackaged      [Running: systemtap tuned udisks unpackaged]
  Starting 90/95 usb             [Running: systemtap tuned unpackaged usb]
  Starting 91/95 vdo             [Running: systemtap tuned unpackaged vdo]
  Starting 92/95 vhostmd         [Running: systemtap tuned unpackaged vhostmd]
  Starting 93/95 x11             [Running: systemtap tuned unpackaged x11]
  Starting 94/95 xen             [Running: systemtap tuned unpackaged xen]
  Finishing plugins              [Running: systemtap tuned unpackaged]
  Starting 95/95 xfs             [Running: systemtap tuned unpackaged xfs]
  Finishing plugins              [Running: systemtap unpackaged xfs]
  Finishing plugins              [Running: systemtap unpackaged]
  Finishing plugins              [Running: systemtap]

  Finished running plugins

Creating compressed archive...

Your sosreport has been generated and saved in:
    /var/tmp/sosreport-ol9-1-2023-08-05-aaevrlq.tar.xz

 Size   10.52MiB
 Owner  root
 sha256 1cb78f8f8114bd1f11b477eb30ed90b7095a03c648e2613cca8ea20b1102210e

Please send this file to your support representative.

[opc@ol9-1 ~]$

위의 예시는 수집 시간을 줄이기 위해 네개의 플러그인만 활성화 하여 수집된 예시입니다.
전체 활성 및 비활성된 플러그인 목록을 보기 위해서는 아래 명령을 수행하면 됩니다.:

sudo sos report -l

커맨드라인에서 -e 와 -d 옵션을 추가하면 해당 플러그인들을 Enable/Disable 시킬 수 있습니다.

SAR 데이타를 수집하는 이유

아마도 당신은 왜 SAR 데이타에 목을 매는지 스스로 자문한 적이 있을 겁니다.
우리는 "performance co-pilot" 와 같은 더 나은 성능 추적 도구가 있다는 것을 알고 있습니다.
하지만 SAR 는 단 몇 MB 의 사이즈로 한달치의 성능데이타를 제공합니다.
이는 넓은 시야를 얻을 수 있게 도와주며 일반적으로 짧게 보관되는 데이타가 놓칠 수 있는 보다 세부적인 성능 추세를 보여줄 수 있습니다.

여기 한달치의 SAR 데이타로 확인 할 수 있는 작업의 예시가 있습니다.
개인적으로 경험한 케이스들보다 드라마틱한 자료는 아니지만, 8일과 9일 사이에 일 평균 CPU 사용율이 %user 비중이 높은걸 확인할 수 있습니다.

202307$ printf "=CPU Util= %s\n" "$(sar -u -f `ls -1rt sa??|head -1` | head -3 | tail -1)";ls -1rt sa?? | while read F; do sar -u -f $F | awk 'BEGIN{S=0} $1 == "Linux"{if (S==0){D=$(NF-3);S=1}} $1 == "Average:"{print D,$0}'; done
=CPU Util= 04:00:01 AM     CPU     %user     %nice   %system   %iowait    %steal     %idle
07/10/2023 Average:        all      0.18      0.00      0.05      0.20      0.00     99.57
07/11/2023 Average:        all      0.18      0.00      0.06      0.30      0.00     99.46
07/11/2023 Average:        all      0.21      0.00      0.04      0.21      0.00     99.53
07/12/2023 Average:        all      0.30      0.00      0.08      0.44      0.00     99.18
07/13/2023 Average:        all      0.37      8.72      0.22      0.41      0.00     90.29
07/14/2023 Average:        all      0.27      2.91      0.10      0.34      0.00     96.38
07/15/2023 Average:        all      0.21      0.00      0.06      0.26      0.00     99.47
07/16/2023 Average:        all      0.29      0.00      0.07      0.33      0.00     99.31
07/17/2023 Average:        all      0.24      0.00      0.07      0.30      0.00     99.39
07/18/2023 Average:        all      1.36      3.72      0.60      0.80      0.00     93.51
07/19/2023 Average:        all      0.47      0.01      0.25      0.94      0.00     98.33
07/20/2023 Average:        all      0.53      3.64      0.48      0.83      0.00     94.52
07/21/2023 Average:        all      0.78      0.00      0.16      0.48      0.00     98.58
07/22/2023 Average:        all      0.48      0.00      0.15      0.46      0.00     98.90
07/23/2023 Average:        all      4.17      0.00      0.47      0.70      0.00     94.65
07/24/2023 Average:        all      2.32      0.00      0.34      0.58      0.00     96.76
07/25/2023 Average:        all      0.60      0.00      0.21      0.53      0.00     98.66
07/26/2023 Average:        all      1.25      0.00      0.39      0.81      0.00     97.55
07/27/2023 Average:        all      0.98      0.00      0.24      0.58      0.00     98.21
08/01/2023 Average:        all      1.34      0.01      0.36      0.81      0.00     97.49
08/02/2023 Average:        all      1.55      0.00      0.43      1.23      0.00     96.79
08/03/2023 Average:        all      2.16      0.00      0.48      1.13      0.00     96.23
08/04/2023 Average:        all      2.26      3.48      0.74      1.13      0.00     92.39
08/05/2023 Average:        all      3.02      0.00      0.59      1.15      0.00     95.25
08/06/2023 Average:        all      6.45      0.00      0.91      1.42      0.00     91.21
08/07/2023 Average:        all      7.59      0.00      1.53      3.45      0.00     87.43
08/08/2023 Average:        all      6.36      0.00      1.10      2.07      0.00     90.47
08/09/2023 Average:        all      8.23      0.00      1.70      3.23      0.00     86.83

만약 sysstat 패키지가 설치되어 있지 않다면 설치하는 것을 권장합니다.

sudo dnf install sysstat
sudo systemctl enable --now sysstat

결과물

sos report 는 /var/tmp 디렉토리에 결과물을 저장하며  OL6 버젼을 제외하고는 --tmp-dir 옵션을 통해 따로 지정할 수 있습니다.
sos report 는 무결성 체크를 위한 md5sum 파일과 tar ball 로 압축 된 보고서 파일을 생성합니다.

언제 실행하나요?

문제 발생 시 최대한 가능한 즉시 명령을 실행하는 것을 권장합니다. 시스템 충돌이 발생했을 때 다시 부팅된 순간 수행하십시오.
시스템 구성을 변경할 때 변경 전에 실행하여 변경에 대한 기준점을 만들 때 실행 할 수 도 있습니다.
시스템 구성을 변경 후 문제가 발생했을 경우 기존 설정과 비교가 가능합니다.
우리는 보통 systemd 를 통해 시스템이 재부팅 될 때 마다 자동으로 수집하도록 설정하는 것을 권장하고 있습니다.

상세히 살펴보기

sos report 의 압축파일을 해제하면 여러개의 하위 디렉토리와 심볼릭 링크들을 볼 수 있습니다.
심볼릭 링크는 각 디렉토리 하위의 일반적인 정보들에 연결되어 있으며 편의상 최상위 디렉토리에 해제됩니다.
다음은 심볼릭링크로 생성되는 파일들에 대한 정보입니다:

  • cmdline - 부팅시 커널에 사용되는 커맨드라인 옵션정보
  • date - sos report 가 수행 될 시의 시스템의 시간과 날짜 정보.
  • dmidecode - Hardware 정보.
  • free - Memory 상태 정보.
  • hostname - 시스템 이름을 포함하며 --clean 옵션으로 암호화 하여 저장할 수 있습니다.
  • installed-rpms - 설치된 패키지 목록 및 설치 시기 정보.
    • TIP: RPM 들을 설치 시간별로 정리하고 싶다면 아래 팁을 활용하세요.:
cat installed-rpms | while read R W M D T Y; do  SECONDS=`date +%s -d "${M} ${D} ${T} ${Y}"`;  printf "%s\t%3s %3s %2d %8s %4d\t%d\n" ${R} ${W} ${M} ${D} ${T} ${Y} ${SECONDS}; done | sort -rn -k 7 |  less
  • last - 누가 언제 로그인하고 재부팅 되었는지 정보.
  • lsmod - 로드된 모듈들에 대한 정보.
  • lspci - PCI 장치 리스트.
  • mount - 마운트된 파일시스템 목록.
  • uname - Kernel 버젼 정보.
  • uptime - 시스템이 운영된 시간과 평균 부하량 정보.

Directories

일부 디렉토리들은 sos_ 라는 접두사로 시작되며 보고서에서 수행된 각종 명령의 결과들이 저장되고 복사된 파일들이 저장됩니다.

  • boot - Grub 정보.
  • etc - 시스템 설정들에 대한 정보.
  • proc - 커널의 데이타 구조.
  • run - 실행중인 프로세스와 서비스들의 정보
  • sos_commands - sos report 가 수행하는 명령에 대한 결과. 아래 예제를 참조하여 꼭 한번씩 확인해 보시길 권장합니다.
    • auditd - auditctl 과 ausearch 명령 결과.
    • block - lsblk, blkid, parted 와 같은 Block 관리 명령 결과.
    • cgroups - Cgroup 정보.
    • devicemapper - dmsetup 명령의 다양한 결과.
    • filesys - 마운트된 파일시스템에 대한 조사 결과.
    • grub2 - /boot 디렉토리의 파일목록과 grub2-mkconfig 의 결과.
    • hardware - 상세한 시스템의 hardware 정보.
    • iscsi - 다양한 iscsiadm 명령에 대한 결과.
    • ksplice - Ksplice 패치 리스트 및 현재 적용된 커널 정보.
    • logs - journalctl 명령과 /var/log 의 정보.
    • multipath - multipath 장치에 대한 정보.
    • 이외 다수가 있으며, 참고로 OL9 에서 리포트를 수행했을 때 79개의 하위 디렉토리가 확인 가능합니다.
  • sos_logs - sos report 수행 결과에 대한 로그.
  • sos_reports - html, txt, json 파일로 변환된 sosreport 의 정보.
                            Html 형태의 보고서는 플러그인 별로 데이타를 정렬하므로 꽤 흥미로울 수 있습니다.
  • sys - 커널 데이타 구조 및 장치들에 대한 정보.
  • usr - /usr/lib, /usr/libexec, /lib/share 를 포함한 /usr 파일 시스템에 대한 정보.
  • var - /var/log 데이타를 포함하고 있기 때문에 가장 유용한 디렉토리중 하나입니다.

사용 사례

고객은 모니터링 소프트웨어를 통해 /var/log/messages 파일에 "Link Down" 메시지가 있다는 경고를 받았습니다.
우리가 가장 먼저 해야 할 일은 고객의 시스템에 대한 기본 정보를 수집하는 것이고 다행히 SOS report 를 업로드했습니다.

# cd sosreport-my-test-2023-07-12-dfbucbc/

# cat uname
Linux my-test 5.4.17-2136.315.5.el8uek.x86_64 #2 SMP Wed Dec 21 19:38:18 PST 2022 x86_64 x86_64 x86_64 GNU/Linux

# grep Product dmidecode
Product Name: ORACLE SERVER X6-2L

# grep device-mapper-multipath installed-rpms
device-mapper-multipath-0.8.4-22.el8.x86_64 Tue Nov 1 14:56:32 2022

이 데이터를 통해 우리는 이것이 UEK6 커널이 올라간 OL8 시스템이라는 것을 알 수 있습니다.
하드웨어 종류, 실행 중인 multipath 버젼이 확인되며 해당 버젼들에대해 보고된 버그들이 있는지 확인하기 위한 조사를 수행 할 수 있습니다.
만약 어떤 알려진 버그들을 찾지 못한 경우 아래와 같이 오류 메시지를 확인하고 PCI 주소를 확인하여 PCI device 종류도 확인할 수 있습니다.

# grep -i "link down" var/log/messages
Jul 12 10:54:33 my-test kernel: lpfc 0000:23:00.1: 1:1305 Link Down Event x2 received Data: x2 x20 x800110 x0 x0

# grep "23:00.1" lspci
23:00.1 Fibre Channel [0c04]: Emulex Corporation LPe15000/LPe16000 Series 8Gb/16Gb Fibre Channel Adapter [10df:e200] (rev 30)

이제 이 네트워크 어뎁터에 보고된 버그들이 있는지 또한 확인 할 수 있으며,
만약
없는 경우 고객에게 하드웨어 문제를 확인하도록 권장할 수 있으며 그 전에 다음과 같이 멀티패스가 제대로 작동하는지 확인할 수 있습니다.

# grep multipathd /var/log/messages | grep "Jul 12"  | grep mpathr
Jul 12 10:54:38 my-test multipathd[5598]: checker failed path 135:224 in map mpathr
Jul 12 10:54:38 my-test multipathd[5598]: mpathr: remaining active paths: 15
Jul 12 10:54:39 my-test multipathd[5598]: mpathr: remaining active paths: 14
Jul 12 10:54:39 my-test multipathd[5598]: mpathr: remaining active paths: 13
Jul 12 10:54:40 my-test multipathd[5598]: checker failed path 128:32 in map mpathr
Jul 12 10:54:40 my-test multipathd[5598]: mpathr: remaining active paths: 12

위 결과를 통해 우리는 멀티패스는 올바르게 작동했으며 최종적으로 12개 경로가 활성화 된 것을 알 수 있습니다.

난독화/암호화

정말로 필요한 경우 SOS 보고서의 데이터를 난독화할 수 있습니다만,
문제 해결이 더 어려워질 수 있으므로 권장하지 않습니다.
난독화는 SOS 보고서의 특정 데이터를 가져와서 일반 값으로 대체하여 실제 값을 숨기는 것으로써,
난독화 툴은 호스트 이름, 도메인, 사용자 이름, IP 주소, 그리고 OL8 및 9의 경우 사용자가 제공한 키워드 정보를 숨겨줍니다.
난독화 된 경우, SOS Report 에 대한 분석은 난독화된 값을 기반으로 하며,
데이터가 난독화됨과 동시에 생성된 변환 테이블을 참조하여 일반 값을 실제 값으로 변환해야 합니다.

OL7

OL7에서는 SOS Report 를 수집한 후에 만 가능하며 soscleaner 도구를 사용하여 이 작업을 수행합니다.
OL6에는 soscleaner 가 제공되지 않습니다 (난독화 지원 안함).

설치

sudo yum install soscleaner

수집 후 난독화

sudo soscleaner sosreport-jyoder-ol7-1-2023-08-05-qklnggo.tar.xz

/tmp 에 생성된 파일들은 아래와 같습니다:

  • soscleaner-3194083558969556-dn.csv - 도메인 네임에 대한 변환 테이블정보. -d/--domain= 옵션으로 지정할 수 있습니다.
  • soscleaner-3194083558969556-hostname.csv - 호스트이름에 대한 변환정보.
  • soscleaner-3194083558969556-ip.csv - IP 주소에 대한 변환 정보.
  • soscleaner-3194083558969556.log - soscleaner 에 대한 로그.
  • soscleaner-3194083558969556.tar.gz - 난독화 된 sos report. 실재로는 이 파일만 업데이트 하면 됩니다.

호스트네임에 대한 테이블은 아래와 같습니다:

Obfuscated Hostname,Original Hostname
host1.example.com,jyoder-ol7-1.allregionaliads.osdevelopmeniad.oraclevcn.com
host0,jyoder-ol7-1

OL8 and OL9

난독화 하기

sudo sos clean --batch --keywords SecretApp sosreport-ol9-1-2023-08-05-qtskqpx.tar.xz

위 명령에서는 --keywords 옵션을 통해 비밀로 유지하려는 애플리케이션의 이름("SecretApp")을 지정한 예시입니다.
Sos report 에서 난독화하려는 추가 단어로 쉼표로 구분된 목록형태로 --keywords 에 전달할 수 있습니다.
호스트 이름, 도메인, IP 및 사용자 이름의 기본 난독화 외에도 이러한 키워드(이 경우 "SecretApp")가 확인 될 때 마다,
수집된 데이타는 해당 키워드에 대해서 난독화 됩니다.

--keywords 옵션이 수행하는 작업에 대한 예를 살펴보겠습니다. 이 명령을 실행하면 /var/tmp에 다음 파일이 생성됩니다:

  • sosreport-host0-2023-08-05-qtskqpx-obfuscated.tar.xz - 난독화 된 sos report. 실재로는 이 파일만 업데이트 하면 됩니다.
  • sosreport-host0-2023-08-05-qtskqpx-private_map - json 포맷의 난독화 맵.
  • sosreport-host0-2023-08-05-qtskqpx-obfuscated.tar.xz.sha256 - sosreport 에 대한 체크섬파일.
  • sosreport-ol9-1-2023-08-05-qtskqpx-obfuscation.log - 난독화 과정에 대한 로그.
다음은 위 명령으로 난독화 처리 된 /var/log/messages 대한 예입니다.

BEFORE

Aug  5 18:10:33 ol9-1 SecretApp[24833]: Started
Aug  5 18:11:38 ol9-1 SecretApp[24836]: ERROR: Can not continue. Aborting.
Aug  5 18:13:33 ol9-1 dracut[25537]: dracut-057-21.git20230214.0.2.el9
Aug  5 18:13:33 ol9-1 dracut[25539]: Executing: /usr/bin/dracut --list-modules
Aug  5 18:13:44 ol9-1 systemd[1]: Starting Hostname Service...
Aug  5 18:13:44 ol9-1 systemd[1]: Started Hostname Service.

AFTER

Aug  5 18:10:33 host0 obfuscatedword0[24833]: Started
Aug  5 18:11:38 host0 obfuscatedword0[24836]: ERROR: Can not continue. Aborting.
Aug  5 18:13:33 host0 dracut[25537]: dracut-057-21.git20230214.0.2.el9
Aug  5 18:13:33 host0 dracut[25539]: Executing: /usr/bin/dracut --list-modules
Aug  5 18:13:44 host0 systemd[1]: Starting Hostname Service...
Aug  5 18:13:44 host0 systemd[1]: Started Hostname Service.

난독화를 사용할 경우 문제해결이 더 어려워 질 수 있다는 이유를 볼 수 있을 것입니다.

수집중 난독화 하기

OL8 과 OL9 에서는 수집중 난독화가 가능합니다.

sudo sos report --clean --batch --keywords SecretApp --all-logs -e sar -k sar.all_sar=on

생성되는 파일은 아래와 같습니다:

  • sosreport-host0-2023-08-05-ncgpuos-private_map
  • sosreport-host0-2023-08-05-ncgpuos-obfuscated.tar.xz - 업로드 할 sosreport 데이타.
  • sosreport-host0-2023-08-05-ncgpuos-obfuscated.tar.xz.sha256
참고: 호스트 이름은 자동으로 난독화됩니다. 원하는 경우 이 기능을 비활성화할 수 있습니다. sos-clean에 대한 매뉴얼 페이지를 확인하십시오.

sos.conf

매번 명령줄 옵션을 모두 기억해야 하는건가요? 당여히 그럴 필요는 없습니다.
/etc/sos/sos.conf 에 명령줄 옵션을 구성한 뒤 간단하게 sos report 를 실행할 수 있습니다.
다음은 위에 나열한 옵션을 사용하는 OL9 시스템의 예입니다.
$ egrep -v "^#|^$" /etc/sos/sos.conf
[global]
batch = yes
[report]
enable-plugins = sar
all-logs = yes
[collect]
[clean]
keywords = SecretApp
[plugin_options]
sar.all_sar=on

마치며

시간을 내어 시스템에서 SOS report 를 몇 차례 반복 실행하고 거기에서 찾을 수 있는 모든 데이터를 직접 확인해 보는 것이 좋습니다.
또한 항상 최신 버전을 실행하고 있는지 확인해야 합니다.
sosreport 는 모든 사람의 작업을 더 쉽게 만들어주기 때문에 좋아할 수 밖에 없습니다.
만약 sosreport 에 문제가 있는 경우 Oracle Linux Support 에 서비스 요청을 제출하시면 즉시 처리해 드리겠습니다.

 

전반적으로 십년이 넘는 시간이 흘렀는데도 많은 고객들은 아직도 sosreport 를 요청하면
 
반입 반출의 난색을 표하며 거부하거나, 늦게 주거나, 이유를 물어보는 경우가 많다.
 
그렇다고 원격 화면공유 (Zoom) 같은 것도 연결이 안되는 폐쇄화 된 시스템인 경우도 많고, 네트워크 자체가 단절된 경우도 많다.
 
위와 같은 경우 사실 여러번 수어번 수일 수주를 단순 질의응답으로 SR update 만 하는 것 보다,
 
sosreport  하나면 아주 간단하게 해결되는 문제임을 이해해야 할 필요가 있다.
 
특히나 위에서 우리가 systemd 를 통해 문제 발생 혹은 부팅 시 혹은 주기적으로 sosreport 를 보관하길 권장했던만큼,
 
평소에 고객이 주기적으로 sosreport 수집/보관 하는 정책을 마련하고 운영하는 것이
 
시스템 운영 방법론의 요소로 추가되어 적용 될 필요가 있다고 생각한다.