솔트를 위한 Junos Syslog Engine
주니퍼 네트웍스는 Salt를 사용하여 Junos OS를 실행하는 디바이스를 관리할 수 있도록 지원합니다. Salt 설치에는 매니지드 디바이스에서 Junos OS 시스템 로그 메시지를 수신하고 Salt 이벤트 버스에 게시하는 Junos syslog 엔진 (Salt용)이 포함됩니다. Junos syslog 엔진은 기존 또는 사용자 지정 Reactor와 함께 Junos OS를 실행하는 디바이스의 이벤트 기반 상태 관리에 Salt를 사용할 수 있도록 지원합니다.
다음 섹션에서는 Junos syslog 엔진의 작동 방식, 구성 및 활성화 방법, 전송 및 구독할 이벤트를 구성하는 방법, 이벤트 버스에서 이러한 이벤트를 보는 방법에 대해 설명합니다.
Junos Syslog 엔진 이해
Junos OS는 시스템 로그 메시지( syslog 메시지라고도 함)를 생성하여 일상적인 작업, 실패 및 오류 조건, 비상 또는 위험 조건에 대한 이벤트를 포함하여 디바이스에서 발생하는 이벤트를 기록합니다. 시스템 로그 메시지에는 다음 정보가 포함될 수 있습니다.
메시지를 생성한 Junos OS 프로세스
메시지가 생성된 날짜 및 시간
이벤트의 심각도
이벤트를 고유하게 식별하는 태그
이벤트에 대한 정보를 제공하는 문자열입니다
예를 들어, 다음 syslog 메시지는 router1에서 커밋 작업의 성공적인 완료를 기록합니다.
Sep 3 11:52:22 router1 mgd[83498]: UI_COMMIT_COMPLETED: commit complete
Salt 엔진은 Salt에 의해 모니터링되고 Salt를 활용하는 외부 시스템 프로세스입니다. Salt 엔진은 Salt 이벤트 버스에서 이벤트를 내보내거나 가져올 수 있습니다. Salt 설치에는 Junos syslog 엔진이 포함되어 있으며, 이 엔진은 Salt 서버로 전송되는 Junos OS 시스템 로그 메시지를 모니터링하고 Salt 이벤트 버스에 게시할 수 있습니다. 그림 1 은 Junos syslog 엔진을 포함하는 Salt 설정을 보여줍니다. 활성화되면 Junos syslog 엔진은 지정된 포트에서 Junos OS를 실행하는 매니지드 디바이스의 syslog 이벤트를 수신합니다.

Junos syslog 엔진은 이벤트를 수신하면 이벤트 정보를 추출하여 Salt 형식으로 변환하고 Salt 이벤트 버스에 게시합니다. 다음 출력은 Salt 이벤트 버스에 표시되는 것과 동일한 커밋 완료 이벤트를 나타냅니다.
jnpr/syslog/router1/UI_COMMIT_COMPLETED { "_stamp": "2019-09-03T18:52:11.279878", "daemon": "mgd", "event": "UI_COMMIT_COMPLETED", "facility": 23, "hostip": "198.51.100.2", "hostname": "router1", "message": "commit complete", "pid": "83498", "priority": 188, "raw": "<188>Sep 3 11:52:22 router1 mgd[83498]: UI_COMMIT_COMPLETED: commit complete", "severity": 4, "timestamp": "2019-09-03 18:52:11" }
Salt 이벤트는 모두 이벤트 태그와 본문으로 구성된 동일한 기본 데이터 구조를 사용합니다. event 태그는 이벤트에 대한 개략적인 설명일 뿐이며 본문은 이벤트 세부 정보가 포함된 사전입니다. 앞의 예에서 이벤트 태그는 jnpr/syslog/router1/UI_COMMIT_COMPLETED
입니다.
Junos Syslog 엔진 활성화 방법
Junos syslog 엔진을 사용하려면 엔진이 실행되는 서버에 및 twisted
Python 모듈을 설치해야 pyparsing
합니다. 이 문서에서는 Junos syslog 엔진이 Salt 마스터에서 실행되고 있다고 가정합니다. 사전 요구 사항 설치 및 Junos syslog 엔진 활성화에 대한 자세한 지침은 Salt for Junos OS 빠른 시작 가이드의 Junos Syslog 엔진 구성을 참조하십시오.
Junos syslog 엔진을 사용하려면 Junos OS를 실행하는 디바이스가 Salt 마스터의 지정된 포트로 syslog 메시지를 보내도록 구성해야 합니다. 모든 이벤트를 전송하거나 특정 기능 또는 메시지 심각도 수준에 해당하는 이벤트만 전송하도록 디바이스를 구성할 수 있습니다.
모든 이벤트를 보내려면 모든 기능 및 모든 메시지 심각도 수준을 나타내도록 구성합니다 any any
.
[edit] saltuser@router1# set system syslog host salt-server port 9999 any any saltuser@router1# commit
예를 들어, 심각도 수준이 info 이상인 보안 이벤트만 전송하려면 을 구성합니다 security info
.
[edit] saltuser@router1# set system syslog host salt-server port 9999 security info saltuser@router1# commit
시스템 로깅 기능 및 메시지 심각도 수준에 대한 자세한 내용은 Junos OS 시스템 로깅 기능 및 메시지 심각도 수준을 참조하십시오.
Junos syslog 엔진을 활성화하려면 Salt 마스터 구성 파일의 키 아래에 engines
엔진을 구성하고 Junos OS를 실행하는 디바이스에서 구성한 것과 동일한 포트를 지정해야 합니다.
engines: - junos_syslog: port: 9999
구성을 적용하려면 Junos syslog 엔진 프로세스를 자동으로 시작하는 Salt 마스터를 다시 시작해야 합니다. 그런 다음 Junos syslog 엔진은 지정된 포트에서 Junos OS syslog 메시지를 수신하고 이벤트 정보를 추출하여 Salt 이벤트 버스에 Salt 형식으로 게시합니다. 특정 이벤트 발생 시 자동으로 조치를 취하는 반응기를 생성 및 구성하려면 Junos OS 이벤트를 위한 Salt 반응기 구성을 참조하십시오.
이벤트 태그 구성 방법
Salt 이벤트 버스에 게시된 이벤트에는 이벤트 태그와 데이터라는 두 가지 구성 요소가 있습니다. Junos OS 이벤트는 다음과 같은 기본 이벤트 태그(또는 이벤트 주제) 구문을 사용합니다.
jnpr/syslog/hostname/event
Junos OS 이벤트의 이벤트 태그는 항상 로 시작해야 jnpr/syslog
하지만, 엔진 구성에서 매개 변수를 정의 topic
하고 포함할 필드를 지정하여 나머지 필드를 사용자 지정할 수 있습니다. 예를 들어, 다음 구성은 디바이스의 IP 주소, 메시지를 생성한 프로세스 및 이벤트를 포함하는 이벤트 태그를 생성합니다.
engines: - junos_syslog: port: 9999 topic: jnpr/syslog/hostip/daemon/event
이 구문을 구성할 때 완료된 커밋 작업 이벤트에 대한 태그는 다음과 같을 수 있습니다.
jnpr/syslog/198.51.100.2/mgd/UI_COMMIT_COMPLETED
이벤트 태그 필드는 뒤에 jnpr/syslog/
다음 필드의 조합을 포함할 수 있습니다.
daemon
event
hostip
hostname
message
pid
priority
raw (the raw event data forwarded from the device)
severity
timestamp
특정 Junos OS 프로세스에 대한 이벤트를 구독하는 방법
Junos Syslog 엔진 활성화 방법에 설명된 대로, Junos OS를 실행하는 디바이스가 Junos syslog 엔진으로 전송하는 syslog 이벤트를 구성할 수 있습니다. 기본적으로 Junos syslog 엔진은 Salt 이벤트 버스에서 수신된 모든 이벤트에 대한 이벤트 데이터를 게시합니다. 또한 엔진 구성에서 매개 변수를 구성 daemon
하여 특정 프로세스에만 구독하도록 Junos syslog 엔진을 사용자 지정할 수 있습니다. 이 매개 변수를 구성하면 Junos syslog 엔진은 Salt 이벤트 버스의 프로세스와 관련된 이벤트만 게시합니다.
다음 Salt 엔진 구성은 관리 프로세스(mgd) 및 라우팅 프로토콜 프로세스(rpd)의 이벤트에 Junos syslog 엔진을 구독합니다.
engines: - junos_syslog: port: 9999 topic: jnpr/syslog/hostname/event daemon: - mgd - rpd
구성을 적용하기 위해 salt-master 프로세스를 다시 시작한 후, Junos syslog 엔진은 이 두 프로세스의 이벤트만 Salt 이벤트 버스에 게시합니다.
jnpr/syslog/router1/UI_DBASE_LOGIN_EVENT { "_stamp": "2019-08-28T22:16:42.612723", "daemon": "mgd", "event": "UI_DBASE_LOGIN_EVENT", "facility": 23, "hostip": "198.51.100.2", "hostname": "router1", "message": "User 'saltuser' entering configuration mode", "pid": "52764", "priority": 189, "raw": "<189>Aug 28 15:17:00 router1 mgd[52764]: UI_DBASE_LOGIN_EVENT: User 'saltuser' entering configuration mode", "severity": 5, "timestamp": "2019-08-28 22:16:42" }
Salt 이벤트 버스에서 이벤트를 보는 방법
Salt 러너는 미니언이 아닌 Salt 마스터에서 모듈을 실행합니다. 명령을 사용하여 실행기를 salt-run
실행합니다. Salt 마스터 이벤트 버스의 이벤트를 실시간으로 보려면 터미널에 이벤트를 표시하는 다음 명령을 실행합니다.
saltuser@salt-master~$ sudo salt-run state.event pretty=True jnpr/syslog/router1/UI_COMMIT_COMPLETED { "_stamp": "2019-07-24T17:17:30.390374", "daemon": "mgd", "event": "UI_COMMIT_COMPLETED", "facility": 23, "hostip": "198.51.100.2", "hostname": "router1", "message": "commit complete", "pid": "5795", "priority": 188, "raw": "<188>Jul 24 10:17:38 router1 mgd[5795]: UI_COMMIT_COMPLETED: commit complete", "severity": 4, "timestamp": "2019-07-24 17:17:30"
이벤트를 빠르게 트리거하려면 다음 예시와 같이 미니언을 ping할 수 있습니다.
saltuser@salt-master~$ sudo salt 'router1' test.ping
해당 이벤트 버스 출력에는 Salt 작업과 미니언의 응답이 표시됩니다.
20190626185606864697 { "_stamp": "2019-06-26T18:56:06.865972", "minions": [ "router1" ] } salt/job/20190626185606864697/new { "_stamp": "2019-06-26T18:56:06.867352", "arg": [], "fun": "test.ping", "jid": "20190626185606864697", "minions": [ "router1" ], "missing": [], "tgt": "router1", "tgt_type": "glob", "user": "sudo_saltuser" } salt/job/20190626185606864697/ret/router1 { "_stamp": "2019-06-26T18:56:06.968557", "cmd": "_return", "fun": "test.ping", "fun_args": [], "id": "router1", "jid": "20190626185606864697", "retcode": 0, "return": true, "success": true }
Junos syslog 엔진 구성을 테스트하기 위해 Junos OS를 실행하는 디바이스에서 작업을 실행할 수 있습니다. 디바이스는 해당 작업의 기능과 심각도 수준이 포함된 메시지를 Junos syslog 엔진으로 보내도록 구성되어야 합니다. 또한 엔진은 해당 프로세스(또는 기본값인 모든 프로세스)의 메시지를 구독해야 합니다. 작업을 실행하면 Junos syslog 엔진이 Salt 이벤트 버스에 이벤트를 게시합니다.