Linux 네트워크 및 시스템 관리를위한 툴킷 및 습관 [닫기]


20

나는 소규모 사무실 네트워크와 데비안과 우분투를 주로 실행하는 여러 워크 스테이션을 관리하는 일을 맡았습니다. 두 개의 서버가 있습니다 : 하나는 데이터베이스 및 프린트 서버와 하나는 백업 및 파일 서버입니다.

Linux의 어느 정도 나 자신을 도울만큼 충분히 알고,이 부분에 대해 비교적 새로운 것이기 때문에, 나는이 분야를 배우고 그렇게하는 동안 효과적 일 수있는 소프트웨어 도구와 작업 / 습습을 알고 싶습니다.

나는 가장 좋은 것이 무엇인지 알 필요가 없으며 초보자 시스템 관리자가 스타터 팩으로 사용하여 적절한 시스템 관리로 성장하기위한 기초로 배우고 사용할 수있는 것입니다.

내가 필요한 것은 시작해야 할 몇 가지 기본 도구와 정기적으로 수행해야 할 것들입니다. 예를 들어, 어떤 로그를 점검 할 것인지, 언제 그리고 무엇을 모니터링해야하는지, 어떤 '올바른'장소를 시작하고 내가 할 수 있는가 내가 필요로하는 광고.


극단적 인 주관적인 주제. "올바른"답변은 무엇입니까?
Bill Weiss

답변:


16

1

업무상 중요한 프로세스 (예 : 데이터베이스가 실행되고 간단한 쿼리에 응답하는 것), 운영 체제의 기본 매개 변수 [사용 가능한 디스크 공간,로드 평균]를 모니터링합니다. 예를 들어 nagios 또는 zabbix 를 사용할 수 있습니다 .

2

기준을 설정하기 위해 통계를 수집합니다. 앞으로 이것은 용량 계획에 유용 할 것입니다. munin , zabbix, cacti 등을 사용할 수 있습니다

예약 된 자동 백업을 실행하고 일부는 오프라인으로 오프 사이트에 저장합니다. 성공 여부를 모니터링하고 중요한 데이터를 복구 할 수 있는지 수동으로 확인하십시오. backupninja 을 사용 하여 Zmanda 또는 Zmanda 를 오케스트레이션 할 수 있지만 훨씬 유용한 도구가 있습니다.

4

문서. 자신의 이익을 위해. 문서가 부족하면 작업 보안이 향상된다고 생각하지 마십시오. 그것의 부족으로 고통받을 첫 번째 사람은 당신입니다, 당신은 아마 일을 아주 빨리 잊을 것입니다.

5

다른 임의의 것들에서 :

어떤 스크립팅 언어를 배우십시오-아마 당신은 하나의 aldready를 알고 있습니까? perl / python / php는 작업 자동화에 사용될 수 있으며, 더 복잡한 작업에는 bash보다 더 적합합니다.

당신의 도구를 배우십시오-그것은 끝없는 목록입니다 ... ssh가 아마 먼저 떠 오릅니다. 이것저것을 확인하십시오 .


"끝없는 목록 ..."-실제로; 나는이 질문을하기 전에 그것을 봤지만 압도 당했다. 나는 KISS를 믿고, 간단하고 쉬운 기초에서 시작하고 올바르게 학습하려고합니다.
slashmais

1
포인트 1과 4가 가장 중요하다고 덧붙이고 싶습니다. Puppet과 같은 구성 관리 시스템을 사용하는 것이 좋습니다. 최소한 버전 제어 (git / svn)를 사용해야하지만 Puppet은 한 번만 수행 한 다음 서비스를 추가하거나 다시 작성 해야하는 경우 반복 가능합니다. 나는 또한 과도한 공학을 믿는다. 100 대의 머신이 필요한 것처럼 인프라를 구축하면 10 대의 머신을 관리하고 필요한 경우 확장하는 것이 더 쉬워집니다.
neoice

4
나는 그것이 의견의 문제라고 생각하지만, 포인트 3을 가장 중요하게 생각합니다. 예, 회계 데이터베이스가 반나절 동안 다운 되면 짜증이 나지만 백업이 없거나 불충분하여 모든 재무가 사라지면 정말 짜증납니다. YMMV.
Joe Internet

@ pQd-모니터링 (nagios, opennms 등)과 티켓 시스템을 추가했습니다. "할일"항목을 담을 수있는 장소 만 있으면됩니다. 결국 필요한 팀을 제출하거나 다른 팀을위한 대기열을 개발하는 사람들로 확장 될 수 있습니다.
warren

Thomas Limoncelli의 시스템 관리자위한 시간 관리를 읽으십시오 . 이메일을 통해 일하는 모든 사람을 위해 독서가 필요합니다.
warren

10

Limoncelli 등 의 시스템 및 네트워크 관리 실습 은 시작해야합니다. 기술이 등장하고 필요할 때 쉽게 Google로 검색 할 수 있지만이 책의 정보는 시대를 초월한 것입니다.


2
Frisch의 필수 시스템 관리.
Jason Antman

10

몇 가지 기본 도구로 시작

구글. 심각하지 않습니다. 구글은 시스템 관리자의 꿈이 실현됩니다. 인터넷에서 방대한 양의 정보를 활용할 수있는 더 좋은 방법은 없습니다. 그리고 "초보자를위한 리눅스"만 검색하도록 제한하지 마십시오. 특정 작업이있는 경우 Google에서 해당 작업을 수행합니다. 당신은 종종 필요한 것보다 더 많은 정보를 찾을 수 있으며, 초보자로서 많은 언어가 다른 언어처럼 보일 것입니다.

탭 완성. Linux 명령 행은 모든 명령, 디렉토리 트리, 디렉토리 이름 및 파일 이름의 탭 완성을 허용합니다.

매뉴얼 페이지. 모든 명령과 많은 시스템 구성 파일 (/ etc / fstab, / etc resolv.conf 등)에는 Man 페이지가 있습니다. "man command_name"또는 "man file_name"을 입력하여 원하는 내용이 있는지 확인하십시오. 아, "q"는 매뉴얼 페이지를 종료합니다.

SSH. Linux 시스템에 액세스하는 가장 좋은 방법 중 하나입니다. 아마 당신이 시스템에 물리적으로 액세스 할 수없는 경우 최선의 방법.

화면. Screen은 하나의 터미널을 여러 개로 바꾸고 배경에서 물건을 꺼내고 나중에 다시 돌아올 수 있도록 물건을 남겨 두는 환상적인 작은 응용 프로그램입니다.

나노. 당신은 이미 당신이 이것을 사용한다고 언급했지만, 나는 단지 내 2 센트를 던져서 동의한다고 생각합니다. Vi와 Vim은 모두 훌륭하지만 모두 내가 좋아하는 Nano의 단순성입니다. Linux 세계의 메모장과 같습니다.

찾아서 Grep. 찾기는 파일 검색에 적합 하고 Grep은 파일 검색 에 적합 합니다. 두 가지 모두 매우 간단한 방법으로 사용할 수 있으며 두 가지 모두 매우 복잡한 방식으로 사용할 수 있지만 두 가지 모두 매우 유용합니다.

Sudo. 루트가 아닌 루트처럼 행동 할 수 있습니다. 매우 유용한.

다음 섹션에서 언급 할 몇 가지 다른 도구들 ...

정기적으로해야 할 일들

시스템을 모니터링하십시오. 디스크 사용량 모니터링 (df는 유용한 명령이며 du는 특정 디렉토리), 실행중인 프로세스 및 작업 (ps 명령 및 top 명령을 통해)을 모니터링하고 시스템에 로그인 한 사용자를 모니터링합니다 (사용자 및 명령 알려주세요), 네트워크 사용량을 모니터링합니다 (cacti와 같은 앱이 적합합니다). X Windows 환경에 액세스 할 수 있다면 항상 GKrellM이 매우 유용한 올인원 시스템 모니터링 도구라는 것을 알았습니다.

백업. Tux의 사랑, 백업. 백업 구성 파일, 백업 홈 디렉토리, 백업 응용 프로그램 데이터. 백업. 서버에서 다른 상자와 외부 하드 드라이브의 CIFS / NFS 공유로 데이터를 바로 복사하기 만하면됩니다. 그렇습니다. 각 백업의 사본 2 개를 보관해야하며 동일한 미디어 / 시스템에 보관해서는 안됩니다. 이를 백업 백업으로 생각하십시오.

백업을 확인하십시오. 백업에서 시스템으로 데이터를 복원 할 수 있는지 정기적으로 확인하십시오. 비어 있거나 손상되었거나 불완전한 백업은 하루의 시간만큼 쓸모가 없습니다.

로그 파일을 사용하십시오. Dmesg, / var / log / messages 및 / var / log 기간의 거의 모든 것. 무언가가 제대로 작동하지 않고 그 이유를 모르는 경우, 로그에 답이 없을 수 있지만 확실히 찾을 수 있습니다. 그리고 / var / log의 로그와 디렉토리의 이름이 눈에 잘 띄므로 올바른 로그를 찾는 것이 어렵지 않아야합니다. 모든 로그 파일을 지속적으로 모니터링 할 필요는 없지만 계속 주시하면 시스템을 건강하고 안전하게 유지할 수 있습니다.

시스템을 최신 상태로 유지하십시오. 구성 파일 구문 또는 종속성이 변경 될 때 많은 두통을 유발하고 문제를 일으킬 수 있으므로 소프트웨어를 업데이트하지 않고 몇 달과 몇 달 동안 소프트웨어를 사용하지 마십시오. 배포판마다 업데이트 프로그램 (apt-get, yum 등)이 다르지만 어느 것을 사용 하든지 학습하고 정기적으로 사용하십시오.

시스템을 안전하게 유지하십시오. iptables, PAM, hosts.allow / hosts.deny와 같은 것을 사용하여 시스템에 원치 않는 액세스 및 사용을 방지하십시오.

배우는 것을 멈추지 마십시오. 앞서 말한 내용을 계속 진행하려면 (가상 학습을 통해) 가상 머신을 고려해야합니다. VirtualBox를 다운로드하거나 VMWare 라이센스가있는 경우 Linux 가상 머신으로 만드십시오. 실제로 원하는 배포판을 선택할 수 있지만 환경에서 사용하는 배포판을 사용하는 것이 가장 적합합니다. VM에서 놀아보세요. 샌드 박스처럼 사용하십시오. 물건을 세우고, 나누고, 조사하고, 배우십시오. 샌드 박스 VM의 장점은 VM에 어떤 문제가 발생하지 않는다는 것입니다. 완전히 호스를 바르면 새로 만드십시오. 또는 설치 후 원본의 백업 사본을 보관하고 필요할 때마다 재사용하십시오.

이 글의 다른 글들 중 일부가 언급하고 언급했듯이,이 목록은 거의 무한대 일 수 있지만, 이것이 좋은 출발점으로 이끌 것입니다.


예제 "man"명령에서 구문을 제거 했으므로 약간 조정했습니다. "command_name"과 "file_name"을 적절한 명령이나 파일로 바꾸면됩니다.
kingfish

때때로 메모장에서 ESC를 입력하는 것을 발견했습니다. : wq 문제는 드문 경우가 아닙니다. 나는 왜 궁금해 ...
Mircea Vutcovici

8

방금 시작한 경우, 특히 데비안 시스템 (우분투는 데비안이 핵심입니다)을 가지고 있기 때문에 데비안 레퍼런스를 적극 권장합니다 . 시스템 관리의 거의 모든 측면에 대한 훌륭한 개요이며 이와 같은 작은 시스템 집합을 유지 관리하는 데 필요한 거의 모든 내용을 다루어야합니다.

또한 pQd의 모든 요점에 동의하며, 특히 모든 프로세스와 구성을 문서화하기 위해 위키를 설정하는 것이 좋습니다. 우리 조직에서는 Trac을 사용하지만 모든 위키 엔진은 그렇게해야합니다. 작은 스크립트와 명령 목록에 유용하기 때문에 소스 코드를 표시하는 좋은 방법이 있는지 확인하십시오.


3

솔직히 리눅스 시스템 관리는 단지 '점프'할 수있는 분야가 아닙니다.

당신이 경우 해야 하지만, 주제에 대한 몇 가지 좋은 책이 있습니다. O'Reilly에는 두 가지 책 (Linux Network Administration 및 Linux System Administration)이 있으며이를 시작해야합니다.

개인적으로, 내가 당신이라면 다른 배포판을 엉망으로 만들고 소프트웨어를 설치하고 Nagios / Cacti / Apache2 / SSH / NFS 유형을 설정하고 일종의 스크립팅 언어를 배우는 데 며칠을 보낼 것입니다. 나 자신도 있지만 많은 동료 관리자가 Python을 사용하는 것을 선호하지만 실제로 배우고 싶은 것은 당신에게 달려 있습니다).

그리고 분명히 커맨드 라인을 배우십시오. 목발로 그래픽 도구를 사용하지 마십시오.

vi를 배우십시오. 기본 편집을 수행하는 것만으로도 잘 배우더라도 괜찮습니다.하지만 때로는 Vim / Nano / Emacs가없는 시스템에 붙어 있기 때문에 vi를 배우는 것이 중요합니다. 그러한 상황에 처하면 하루나 이틀을 배우면서 기뻐할 것입니다. vi.

도움이 필요하시면 저에게 이메일을 보내십시오 (보안상의 이유로 [이메일은 제거되었습니다]).-ServerFault 외부에서 도와 드리겠습니다.


나는 Perl을 안다. 나는 / some / vi를 알고 있습니다 (삽입 및 저장 및 종료 방법-나노 선호). 내 상황은 운 좋게도 '저압'상황이므로 시스템 관리자 전문가가 될 필요가 없습니다. 나는 그 때로 성장할 수 있습니다 (그리고 서버 오류 및 사용자 (신뢰 감사)) 실제로 필요한 것은 (매우 유용한 LUG에 속합니다.) 필요한 몇 가지 기본 도구와 정기적으로 수행해야 할 작업이 있습니다. 예를 들어, 어떤 로그를 확인하고 언제 모니터링해야하는지 시작하고 필요에 따라 광고 할 수있는 '올바른'장소
slashmais

그런 다음 Cacti, Nagios, Snort 및 Postfix를 설정하는 것이 좋습니다. 그것들은 아마도 시스템을 모니터하기 위해 가장 많이 사용하는 4 가지 도구 일 것입니다. 이들을 설정하면 로그 파일을 수동으로 확인하는 데 많은 시간이 절약됩니다. 로그를 수동으로 확인하는 경우 / var / log /의 모든 것이 좋습니다. 내가 지적 할 수있는 특정 파일이 없지만, 무언가가 제대로 작동하지 않는 경우 / var / log에서 확인하는 것이 좋습니다.
Michael Pobega

옛날 옛적에 나도 나노를 선호했다. 파일을 항상 편집하기 시작하면 vi를 더 자세히 배우고 싶을 것입니다. 지금은 그것을 충분히 얻을 수 없습니다 ...
Kyle Smith

3

서버에 응용 프로그램을 설치하는 것이 편한 경우 대부분의 로깅 및 구성에 "원 스톱"상점을 제공하므로 webmin 을 고려 하십시오. SSL을 사용하여 상위 포트를 통해 실행되도록 설정하면 쉽게 점검 할 수 있습니다.


2

시스템 및 네트워크 관리의 가장 큰 비밀을 말씀 드리겠습니다. 당신 준비? 좋아, 여기있다 :

기초를 배우십시오. 자세히 설명하겠습니다.

누구나 (또는 ​​거의 모든)이 소프트웨어 나 해당 특정 소프트웨어의 기능과 해당 도구에서이 단추를 눌러 x, y 또는 z를 작동시키는 방법을 배울 수 있습니다. 그것은 특별한 것이 아닙니다.

좋은 sys / net 관리자 가 되려면 기본 지식을 익히십시오. 일반적인 네트워크 연결의 이벤트 순서는 무엇입니까? 프레임과 패킷의 차이점은 무엇입니까? 유닉스 시스템에서로드 평균은 실제로 무엇을 의미합니까? 머신의 일반적인 부팅 프로세스는 무엇입니까 (처음부터 끝까지 따라 가면 풍부한 지식을 제공 할 수 있습니다).

기본 사항을 이해하고 실제로 이해하면 좋은 기초 위에 지식을 배치하는 것이 훨씬 쉽습니다. 그러나 맨 위에서 시작하여 아래에 무슨 일이 일어나고 있는지 모르고 특정 소프트웨어 비트를 배우려고하면 기본적으로 다른 첨단 기술 관리인이 될 것입니다.


2

먼저 로그를 찾으십시오. / var / log / syslog에 몇 개의 로그가 있지만 대부분의 Linux 배포판은 / var / log / messages에 로그합니다. 무언가 잘못되면 로그에 관련 정보가있을 가능성이 높습니다. 또한 전자 메일을 처리하는 경우 / var / log / mail을 잊지 마십시오. 응용 프로그램을 다시 확인하고 syslog 외부의 어딘가에 로그 파일이 있는지 확인하십시오.

vi 기술을 향상 시키십시오. 나노는 요즘 모든 멋진 아이들이 사용하는 것 일지 모르지만 경험상 vi는 시스템에서 보장되는 유일한 텍스트 편집기라는 것을 알게되었습니다. 키보드 단축키에 익숙해지고 자신 만의 트리거를 만들기 시작하면 vi는 제 2의 성격과 같습니다.

매뉴얼 페이지를 읽은 다음 각 컴퓨터에서 다음 명령을 실행하고 결과를 문서에 복사하십시오.

hostname
cat /etc/*release*
cat /etc/hosts
cat /etc/resolv.conf
cat /etc/nsswitch
df -h
ifconfig -a
free -m
crontab -l
ls /etc/cron.d
echo $SHELL

그것은 문서의 시작 부분이 될 것입니다. 이러한 명령을 통해 환경을 알 수 있으며 나중에 문제를 좁힐 수 있습니다.

로그를 확인하고 "오류"또는 "실패"를 검색하십시오. 그러면 제대로 작동하지 않는 것에 대한 아이디어를 얻을 수 있습니다. 귀하의 사용자는 무엇이 잘못되었는지에 대한 의견을 제시하고, 자신이해야 할 말에 귀를 기울입니다. 그들은 시스템을 이해하지 못하지만 당신과는 다른 방식으로 본다.

문제가 발생하면 다음 순서대로 확인하십시오.

  1. 디스크 공간 (df -h) : Linux 및 Linux에서 실행되는 일부 앱은 디스크 공간이 부족할 때 매우 이상한 일을합니다. 100 % 꽉 찬 파일 시스템을 확인하고 찾을 때까지 관련이없는 것처럼 보일 수 있습니다.

  2. 맨 위 : 맨 위는 사용 가능한 모든 CPU주기를 소모하는 프로세스가 있는지 알려줍니다. 장시간 동안 99 %의 CPU를 소비해서는 안됩니다. 합법적 인 프로세스라면 위아래로 변동해야합니다. 당신이 상단에있는 동안 확인 ...

  3. 시스템로드 : 표준 서버 또는 워크 스테이션에서 시스템로드는 일반적으로 3 미만이어야합니다. 시스템로드는 CPU, 메모리 및 I / O를 기반으로합니다.

  4. 메모리 (free -m) : Linux에서의 RAM 사용은 약간 다릅니다. 거의 모든 RAM이 사용 된 서버를 보는 것은 드문 일이 아닙니다. 당황하지 마십시오. 이것이 보이면 대부분 캐시 일뿐이며 필요에 따라 지워집니다. 그러나 사용중인 스왑의 양에주의를 기울이십시오. 가능하면 최대한 0에 가깝게 유지하십시오. 메모리가 부족하면 모든 종류의 성능 문제가 발생할 수 있습니다.

  5.  로그 : 로그로 돌아가서 tail -500 / var / log / messages | 더 자세히 읽고 무슨 일이 일어나고 있는지보기 시작하십시오. 잘만되면, 통나무가 당신이 다음에 가야 할 방향으로 당신을 가리킬 수 있기를 바랍니다.

잘 관리 된 Linux 서버는 문제없이 몇 년 동안 실행될 수 있습니다. 748 일 동안 실행 된 시스템을 종료 한 후 응용 프로그램을 새 하드웨어로 마이그레이션했기 때문에 종료했습니다. 바라건대, 이것은 발을 젖게하고 좋은 출발을하는 데 도움이 될 것입니다.

마지막으로, 항상 변경하려는 구성 파일의 사본을 작성하고 항상 변경중인 행을 복사 한 후 원본을 주석 처리하여 변경 이유를 추가하십시오. 이렇게하면 문서를 작성하는 습관이 생겨 9 개월 동안 은신처를 구할 수 있습니다.


1

좋은 질문.

나의 충고. 쉘 사용법을 배우십시오.

표준은 배쉬입니다. 도움말을 입력하여 문서를 작성할 수 있습니다.

파이프 배우기 "|" 한 명령의 출력을 두 번째 명령의 입력으로 가져옵니다.

마지막 한 가지는 오래 전에 저에게 도움이되었습니다 : Linux One Page Manual

열심히, 절대 포기하지 마십시오.

3-4 년 안에 당신은 충분한 지식을 가지고 많은 것들이 그 자체에서 나옵니다. :)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.