Zabbix 3.0이 모니터링하는 네트워크 장치는 무엇입니까?

王林
풀어 주다: 2023-06-04 08:44:50
앞으로
2187명이 탐색했습니다.

SNMP 소개

1 SNMP 개요

SNMP는 가장 널리 사용되는 네트워크 관리 프로토콜로 발전했으며 현재 적용되는 버전에는 주로 SNMP v1, SNMP v2c 및 SNMP v3가 있습니다. 버전 간의 주요 차이점은 정보 정의, 통신 프로토콜 작동 및 보안 메커니즘에 있습니다. 동시에 두 가지 SNMP 애플리케이션 확장인 RMON(원격 네트워크 모니터링)과 RMON2도 나타났습니다.

물리 계층의 관점에서 볼 때 SNMP를 사용하여 네트워크를 관리하려면 NMS(네트워크 관리 스테이션), 에이전트(Agent) 및 프록시 서버(프록시)가 포함되어야 합니다. 네트워크 관리에서는 명령을 내리고 알림 정보를 받기 위해 하나 이상의 NMS가 필요합니다. 에이전트는 관리 노드의 요청에 응답할 수 있으며 알림 정보를 사전에 생성할 수도 있습니다. 네트워크 관리에는 하나 이상의 에이전트가 있을 수 있습니다. 프록시는 서로 다른 네트워크 또는 서로 다른 버전 간에 SNMP 요청 및 알림 메시지를 전달합니다.

프로토콜 계층의 관점에서 보면 SNMP에는 SMI(관리 정보 구조, 관리 정보 구조) 및 MIB(관리 정보 베이스, 관리 정보 베이스)가 포함됩니다. SMI는 ASN.1(Abstract SyntaxNotation one)의 하위 집합으로, ASN.1의 요소, 사용자 정의 데이터 유형 및 매크로를 SNMP에서 사용할 수 있다고 규정합니다. SNMP의 MIB. MIB는 에이전트에서 관리 가능한 개체에 대한 추상적인 설명입니다. SNMP에서 MIB는 보기 위해 트리 구조로 구성되어 있습니다. 트리의 각 노드는 OID(Object Identifier)라고 하며, 이는 웹 사이트 도메인 이름과 유사한 방식으로 구성되며 각 노드는 인증서로 표시됩니다. 1.3.

SNMP는 HTTP 및 FTP 프로토콜과 유사한 TCP/IP 프로토콜 스택에 속하는 애플리케이션 계층 프로토콜입니다. 단지 SNMP 전송 계층이 UDP 프로토콜을 사용한다는 것입니다.

SNMP v1에서는 NMS에서 에이전트로의 간단한 인증 모드인 커뮤니티가 제공됩니다. NMS가 에이전트에 요청을 보낼 때 에이전트는 문자열을 받은 후 커뮤니티 문자열이 로컬과 일치하는지 확인해야 합니다. 하나. 커뮤니티를 전송할 때 일반 텍스트를 사용하기 때문에 명백한 보안 위험이 있습니다.

1996년 IETF는 v1을 기반으로 관리 스테이션 간의 통신을 정의한 SNMP v2c(Community-BasedSNMP v2)를 출시했습니다. 모두 분산 네트워크 관리를 지원하지만 보안 메커니즘은 여전히 ​​v1과 동일합니다.

1998년 IETF는 SNMP v2를 기반으로 보안(사용자 기반 보안 모델 및 보기 기반 액세스 제어 모델) 및 관리 메커니즘을 확장한 SNMP v3을 출시했습니다. 보안 측면에서 v3 버전은 프로토콜 메시지에 보안 매개변수를 추가하여 암호화된 전송과 메시지의 필수 확인을 허용하는 보안 프로토콜입니다. SNMP v3은 모듈식 아이디어를 사용하여 프로토콜의 각 구성 요소 모듈을 정의하고 프로토콜 아키텍처를 개선하며 가장 중요한 것은 SNMP v1 및 SNMP v2와의 호환성을 유지한다는 것입니다.

2 SNMP의 기능

SNMP의 에이전트는 주로 정보 업로드를 담당합니다. SNMP 프로토콜의 레벨 기능 외에도 NMS에는 송수신 정보 로깅, 알림 정보 기록 및 관리 기능도 있습니다. 구성 및 그래픽 구성 및 관리 인터페이스를 제공할 수 있습니다.

이러한 기능을 실현하기 위해 SNMP에는 주로 다음을 포함하는 일련의 작업 명령이 포함되어 있습니다.

  • 명령 읽기: 일련의 명령을 받고 NMS는 관리 정보를 수집하도록 에이전트에 요청을 보냅니다.

  • Set 명령: Set 명령, NM은 메시지에 포함된 데이터를 에이전트에 기록합니다.

  • 알람 기능: 트랩 시리즈, 에이전트가 NMS에 알람/이벤트 메시지 정보를 적극적으로 보냅니다.

Zabbix 3.0监控网络设备有哪些

그림 13-1

1. Get 작업

Get 작업은 NMS에서 적극적으로 시작하는 작업입니다. Get 요청 플래그 외에도 전송된 메시지에는 요청될 OID 이름 및 값 쌍도 포함되며, 관리 개체 정보는 이 이름 및 값 쌍을 바인딩하는 형태로 전송됩니다. 물론 Get 연산에서 OID에 해당하는 값은 NILL이다.

2. Get-Next 연산

Get-Next 연산은 Get 함수와 유사하지만, 쿼리되는 정보가 메시지에 바인딩된 OID 정보가 아니라 객체의 다음 OID 정보라는 점입니다. OID 정보를 읽을 수 있습니다). 예를 들어 NMS는 Agent 측에서 sysName의 다음 노드인 sysLocation의 정보를 수집하려고 하며 요청 메시지에서는 sysName.0이고 반환된 메시지는 sysLocation.0 및 값에 바인딩됩니다.

3. Get-Bulk 작업

은 실제로 SNMP v2에 추가된 새로운 작업 방법인 여러 Get-Next 작업의 모음입니다.

4. 설정 작업

설정 작업은 장치의 매개변수 관리, 구성 및 제어를 달성하기 위해 쓰기 가능한 권한으로 OID에 대한 매개변수를 설정할 수 있습니다. Get 작업 바인딩 변수와 달리 Set은 해당 OID 설정 값을 바인딩해야 합니다.

5. Get-Response

Get-Response는 NMS의 Get 및 Set 명령에 대한 응답으로, 명령과 명령에 포함된 매개변수에 따라 해당 반환 변수 바인딩 정보와 오류 상태 정보(명령 실행 성공 여부를 나타냄) 또는 실패) 등

6. Trap 시리즈

Trap은 Agent가 중요한 이벤트를 NMS에 사전에 보고하는 메커니즘입니다. 이러한 보고에 대해 NMS는 Agent에 응답할 필요가 없습니다. 트랩 정보의 내용은 언제, 어디서 무슨 일이 일어났는지 나타냅니다.

3 SMI 및 MIB

1, SMI

SMI는 SNMP의 ASN.1 구문으로 정의된 정보 모듈이며 ASN.1의 하위 집합입니다. 이러한 모듈에는 다양한 SNMP 관련 매크로, 사용자 정의 데이터 유형 및 규칙 등이 포함되어 있습니다. 이러한 매크로, 데이터 유형 및 규칙을 정의하는 세 가지 주요 목적은 다음과 같습니다. 하나는 SNMP 응용 프로그램에서 고유한 데이터 유형을 표현하고 정의하는 것이고, 다른 하나는 관리 개체의 정의 방법을 단순화하는 것입니다. SNMP Coding 방식으로 관리 객체를 관리합니다. SNMP는 RFC 문서에 정의된 이러한 정보 모듈을 기반으로 프로토콜을 표준화함으로써 다양한 조직, 기업 및 개인이 관리 개체를 정의할 때 일관성을 유지할 수 있도록 합니다.

SNMP에는 실제로 두 가지 버전의 SMI가 정의되어 있습니다. 즉, RFC 1151에 정의된 SMI v1과 RFC 2578에 정의된 SMI v2입니다. SMI v1에서는 여러 데이터 유형, 규칙 설명, OBJECT-TYPE 매크로 등이 간단하게 정의됩니다. SMI v2에서는 모든 관련 내용이 모듈식 정의 방식으로 완벽하게 구성됩니다.

SMI v1에 정의된 기본 데이터 유형은 다음과 같습니다.

  • INTEGER: 실제로는 32비트 정수입니다.

  • OCTET STRING: 0개 이상의 8비트 문자(싱글바이트)로, 텍스트 문자나 물리적 주소를 나타낼 수 있습니다. 값 범위는 0~65535입니다.

  • OBJECT IDENTIFIER: 점으로 구분된 십진수 표기법으로 표현된 OID입니다.

  • NULL: SMI v1에서만 정의되며 SMI v2에서는 더 이상 사용되지 않습니다.

  • 순서: 정의 목록.

  • SEQUENCE OF: 테이블을 정의합니다.

SMI v2에서는 위 데이터 유형의 범위 제한 및 업데이트가 더욱 명확해지고 BITS 유형도 도입되었습니다.

SMI v1의 사용자 정의 데이터 유형에는 다음이 포함됩니다.

  • NetworkAddress(네트워크 주소)(인터넷 이외의 네트워크 주소 계열일 수 있음),

NetworkAddress::= CHOICE {Internet IPAddress}

  • 32비트 네트워크 바이트 순서로 표현된 IP 주소

IPAddress::= [APPLICATION 0] IMPLICIT OCTET STRING (SIZE (4))

  • 카운터 유형 값이 최대값에 도달한 후 0으로 돌아갑니다. 다시 계산 시작(에이전트가 다시 시작된 후에도 0으로 재설정됨), 주로 인터페이스

Counter::= [APPLICATION 1] IMPLICIT INTEGER (0.. 4294967295)에서 보내고 받는 바이트 수를 계산하는 데 사용됩니다. )

  • 게이지 유형 값은 증가하거나 감소할 수 있으며 최대값에 도달하면 최대값으로 유지됩니다. 예를 들어 라우터의 인터페이스 속도는

유형으로 표현할 수 있습니다. Gauge::= [APPLICATION 2]IMPLICIT INTEGER (0.. 4294967295)

  • TimeTicks는 타이밍에 0.01초를 사용하여 두 시점 사이의 시간 간격을 나타냅니다. 설명에 타이밍 기반이 명시되어 있어야 합니다.

TimeTicks ::= [ APPLICATION 3 ] IMPLICIT INTEGER (0 .. 4294967295)

  • Opaque는 다른 ASN.1 유형으로 인코딩된 값을 두 번 캡슐화합니다. 이전 버전과의 호환성을 위해 이 유형은 SMIv2에도 정의되어 있으며 권장되지 않습니다.

Opaque ::= [APPLICATION 4 ] IMPLICIT OCTET STRING

SMI v1과 비교하여 SMI v2에서 변경된 사용자 정의 데이터 유형은 다음과 같습니다.

  • Gauge32와 Gauge는 실제로 동일합니다. Gauge32와 Unsigned32는 동일한 애플리케이션 유형 태그를 공유하므로 인코딩은 기본적으로 동일합니다.

Gauge32 ::= [응용 프로그램 2 ] 암시적 정수 (0 .. 4294967295)

Unsigned32 ::= [응용 프로그램 2 ] 암시적 정수 (0 .. 4294967295)

  • Count er64는 더 넓은 범위의 카운터입니다. , 64개가 있습니다: 2^64-1 (0..18446744073709551615). Counter32는 카운터가 1시간 이내에 0으로 반환되는 경우에만 표준 MIB 모듈에서 사용됩니다.

Counter64::= [APPLICATION6] IMPLICIT INTEGER (0..18446744073709551615)

IPAddress 유형은 SMI v2에서 계속 유지되며 변경 사항이 없습니다. 단, IPv6의 128비트 주소에는 적용되지 않습니다. Counter32에 대한 추가 설명: 현재 카운트 값은 초기 값과 기록된 변화가 있는 경우에만 명확한 의미를 갖습니다.

MIB 관점에서 SMI는 MIB의 정의를 직접적으로 안내하고, MIB의 데이터 유형과 구문을 정의하며, MIB의 관리 개체에 대한 OID 공간을 할당하는 헌장입니다.

2, MIB

MIB는 비즈니스 요구 사항이나 네트워크 관리 표준에 따라 합의된 조직 규칙 및 정의 구문에 따라 작성된 구조화된 텍스트 파일입니다.

MIB(관리 정보 데이터베이스)의 각 관리 개체는 이름, 설명, 데이터 유형 및 기타 정보를 포함한 모든 속성을 명확하게 설명해야 합니다. 통신 당사자는 개체의 고유 식별자(OID)를 통해 이러한 속성의 내용을 식별할 수 있습니다. 즉, MIB는 NMS와 Agent 사이의 통신을 위한 브리지입니다. Agent가 MIB를 구현하고 NMS가 MIB를 알고 있는 경우에만 둘이 올바르게 협력하여 해당 관리 기능을 구현할 수 있습니다. MIB를 NMS로 가져온 후에만 NMS는 관리할 개체의 모든 세부 정보를 알 수 있습니다. MIB에 정의된 관리 개체가 에이전트에 구현되면 에이전트는 MIB를 지원합니다.

에이전트는 여러 MIB를 구현할 수 있으며 각 MIB에는 더 많거나 적은 관리 개체가 포함될 수 있습니다. 명확한 요구 사항은 없습니다. MIB는 크게 두 부분으로 구성되는데, 그 중 하나는 국제표준화기구(International Organization for Standardization)에서 정의한 MIB-I(RFC1156), MIB-II(RFC1213) 등의 표준 관리 객체이다. 네트워크에 연결된 모든 장치는 표준 MIB에 정의된 일반 및 기본 관리 개체를 지원합니다. 또 다른 부분은 주요 제조업체, 기관 또는 개인이 맞춤화한 프라이빗 MIB입니다. 이러한 프라이빗 MIB는 표준 MIB에 없는 장치 관리 요구 사항 및 관리해야 하는 개체에 따라 제조업체에서 맞춤화한 것입니다. 개인 MIB는 노드 기업(1.3.6.1.4.1) 아래에 정의됩니다.

표준 MIB는 관리 개체를 MIB 트리의 10개 분기인 10개 그룹으로 나눕니다. 시스템, 인터페이스, AT(주소 변환, 상태가 더 이상 사용되지 않음을 나타냄) 버전), IP, ICMP, TCP, UDP, EGP, 전송, SNMP, 해당 상위 노드는 1.3.6.1.2.1(mib-2)입니다. 이 10개 그룹의 관리 개체는 네트워크 관리의 가장 중요한 부분 중 하나입니다.

  • 시스템 그룹: 주로 에이전트 시스템 수준 정보를 설명하는 데 사용됩니다. sysName, sysLocation, sysDescr, sysServices, sysUpTime, sysContact, sysObjectID 등을 포함합니다. 이러한 OID는 장치의 이름, 위치, 온라인 시간 등 네트워크 관리에 매우 중요한 정보를 제공하며, 실제 환경에서는 이러한 정보를 제때 업데이트할 수 없으며 쉽게 무시됩니다.

  • Interfaces 그룹: 이 그룹은 네트워크 장치의 모든 인터페이스 정보를 제공하는 데 사용됩니다. 인터페이스 유형, 인터페이스 설명, 인터페이스 속도, 인터페이스 상태 등을 포함합니다.

  • AT 그룹: 주소 번역 그룹입니다. 이 시간 그룹은 네트워크 주소와 물리적 주소 간의 매핑 관계를 구현하는 테이블 개체입니다. 테이블을 탐색하면 IP 주소와 MAC 주소 간의 대응 관계를 얻을 수 있습니다.

  • IP 그룹: IP 계층 관련 정보의 관리 대상을 정의합니다. 이러한 개체에는 IP 패킷, 오류 정보, 주소 정보, 라우팅 정보 및 주소 매핑 정보가 포함됩니다.

  • ICMP 그룹: 이 그룹은 다양한 ICMP 메시지의 전송 및 수신을 설명하는 26개의 스칼라 객체를 정의합니다. 이들은 모두 카운터 유형입니다. 이러한 객체는 메시지 전송 및 수신 속도와 다양한 ICMP 메시지 유형(요청, 응답)의 속도를 쉽게 제공할 수 있습니다.

  • TCP 그룹: 이 그룹에는 주로 구성 관리를 위한 TCP 재전송 정책, 재전송 시간이 가장 길고 짧은 객체, 성능 관리를 위한 링크 거부 요청 수, TCP 통신 상태 간 전송 상태 등이 포함됩니다. 레코드, 총 재전송 횟수, 총 수신 오류 횟수, 결제 관리에 사용할 수 있는 TCP 데이터 세그먼트 송수신을 위한 기술적 개체, 보안 관리에 사용할 수 있는 tcpConnTable 테이블 개체, 원격 IP 및 포트 원격지에서 의심스러운 링크를 추적하기 위해 테이블, 상태 및 기타 정보를 분석하여 기록된 숫자입니다.

  • UDP 그룹: 이 그룹에는 UDP 패킷 수신 및 전송을 위한 카운팅 개체, 오류 보고 카운팅 개체 및 포트, IP 주소 등 관련 정보의 성능 및 계정 관리에 사용할 수 있는 개체가 포함됩니다.

  • EGP(Exterior Gateway Protocol) 그룹: EGP는 자율 시스템 간(이웃 간) 라우팅 정보를 교환하는 데 사용되는 프로토콜입니다. 이 그룹에는 사용자 실패 관리를 위한 이웃 실행 상태, 사용자 구성 관리를 위한 로컬 자율 시스템의 도메인 번호, 성능 관리를 위해 로컬 엔터티에 들어오고 나가는 EGP 메시지 비율, 오류 카운트 객체.

  • 전송 그룹: 이 그룹의 역할은 다양한 전송 매체에 따라 해당 관리 정보를 제공하는 것입니다. 이 그룹은 매우 특별합니다. MIB-II는 이 분기에서 명확한 관리 개체를 정의하지 않고 대신 특정 전송 매체를 관리해야 할 때 해당 인터페이스 유형을 재구성에 추가합니다.

  • SNMP 그룹: SNMP와 관련된 객체를 상세하게 정의하는 그룹입니다. 예를 들어 결함 관리에 사용할 수 있는 다양한 유형의 오류 수에 대한 통계, 트랩 인증 실패가 구성 관리에 사용할 수 있는 메시지 객체 생성 여부, 인증에 사용할 수 있는 다양한 메시지 송수신 수에 대한 통계 성과 관리.

4 OID 트리

SNMP에서는 모든 관리 객체가 트리 구조로 구성되어 있으며, 관리 객체는 트리의 노드로 구현되며, 이 트리는 관련 국제 표준화 기구 및 경영진에 의해 유지관리됩니다. 이러한 구조화되고 계층적인 조직을 통해 객체를 관리하고 확장하는 것이 매우 편리합니다. 이러한 관리 및 확장은 노드 할당에 반영됩니다.

기업, 조직 또는 개인은 트리 구조의 분기가 되기 위해 국제기구의 노드를 신청할 권리가 있습니다. 노드를 성공적으로 신청한 후에는 모니터링 또는 관리 비즈니스 요구에 맞게 지점 아래에 다른 노드를 자유롭게 할당할 수 있습니다.

OID 번호, MIB 번호라고도 합니다. MIB는 실제로 OID로 구성된 ASN.1 모듈로, 실제로는 트리 구조로 구현됩니다. 인터넷에는 많은 표준 MIB가 있습니다. SNMP는 MIB-I, MIB-II 등을 정의하며 기업, 조직 및 개인이 정의한 MIB도 포함합니다. 아래 그림과 같이.

OID 트리에서는 최상위 루트 노드만 특정 번호를 갖지 않으며, 다른 노드는 구별을 위해 동일한 수준의 고유 번호를 가지고 있다고 볼 수 있습니다.

상단에 있는 다음 레벨 노드는 CCITT(현 ITU-T)에서 관리하는 ccitt(0)와 ISO에서 관리하는 ISO(1)입니다.

인터넷 노드 아래에는 많은 하위 노드가 있으며, 디렉토리(1)은 예약되어 있으며 향후 OSI 디렉토리 서비스에 사용될 수 있습니다. mgmt(2)는 IAB의 책임이며 실제로는 MIB-I 및 MIB-II인 RFC의 표준 관리 개체를 정의하는 데 사용됩니다. Experiment(3)도 IAB에 의해 관리되며 인터넷의 실험적 성격의 관리 개체를 정의하는 데 사용됩니다. 민간(4) 및 하위 노드 기업(1)은 IANA에 의해 할당 및 관리됩니다. 기업(1) 노드는 주로 다양한 기업이나 조직에 할당하는 데 사용됩니다.

OID 트리 구조는 아래 그림 13-2와 같습니다. ㅋㅋㅋ                                              SNMP로 항목 옵션을 모니터링할 때 정보 유형 및 저장 값 옵션을 아래 표와 같이 구성하는 것이 좋습니다.

Zabbix 3.0监控网络设备有哪些

SNMP

Type

Description Zabbix캐릭터저장값: 그대로 숫자 부호 없음, 십진수저장 값: 델타(초당 속도)Numeric Unsigned,decimal저장값: 그대로 Numeric Unsigned,decimal 저장 값: 델타(초당 속도)Numeric Unsigned, 10진수저장 값: 그대로

Description

추천 모니터링 항목 옵션

INTEGER

기호 32는 다음과 같습니다. 정수

숫자 부호 없는 십진수

저장 값: 있는 그대로

값 매핑 표시
  • STRING
  • 모든 바이너리 또는 텍스트 데이터를 사용할 수 있습니다. 여러 줄
Text

저장 값: 현재대로

  • OID
  • SNMP 개체 식별자, 점으로 구분된 십진수 표기법

  • Counter32

  • 한 방향으로 늘어나는 값(0..4294967295)이 최대값에 도달한 후 0으로 돌아가서 다시 계산됩니다

  • Gauge32

  • 값은 늘리거나 줄일 수 있으며(0..4294967295) 는 최대값에 도달하면 최대값

  • Counter64

  • 값은 한 방향으로 증가합니다. 에 도달 최대값을 지정한 후 다시 0부터 세기 시작합니다. (0 .. 18446744073709551615)

  • TimeTicks

  • 부호 없는 정수, 모듈로 2^32(4294967296), 두 값 사이의 1/100초

  • 2 OID 검색

    Zabbix에서 SNMP 모니터링 장비를 사용하기 전에 모니터링 항목에 해당하는 OID 값과 데이터 유형을 결정해야 합니다. 표준 MIB 및 OID 외에도 장비 제조사에 문의해야 하며, 제조사에서 제공하는 문서 및 MIB 라이브러리 파일을 통해 모니터링해야 할 OID 값을 빠르고 정확하게 찾아낼 수 있습니다.

    아래 그림 13-3과 같이 MG-SOFT MIB 브라우저와 같은 일부 그래픽 도구를 사용하여 MIB 파일을 가져오고 그래픽 인터페이스에서 장치 정보를 쿼리할 수 있습니다.

    Zabbix 3.0监控网络设备有哪些

    그림 13-3

    그래픽 도구를 사용하면 모니터링 항목의 OID 유형과 값을 빠르게 찾아보고 쿼리하고 결정할 수 있습니다.

    snmpwalk 도구를 사용하여 장치에서 직접 쿼리할 수도 있습니다. snmpwalk를 사용하기 전에 시스템에 소프트웨어가 설치되었는지 확인하십시오. 설치되어 있지 않은 경우 다음 명령을 사용하여 설치할 수 있습니다.

    # yum install net-snmp-utils

    snmpwalk를 실행하여 장치 정보를 쿼리합니다.

    # snmpwalk -v 2c -c public 10.60.0.19 1.3.6.1.2.1.1

    SNMPv2-MIB::sysDescr.0 = 문자열: Cisco IOS 소프트웨어, ME380x 소프트웨어(ME380x-UNIVERSALK9-M), 버전 15.4( 3)S2, 릴리스 소프트웨어(fc1)

    기술 지원: http://www.cisco.com/techsupport

    저작권(c) 1986-2015 by Cisco Systems, Inc.

    컴파일일: 2015년 1월 28일 수요일 11 :43 by prod_rel_team

    SNMPv2-MIB::sysObjectID.0 = OID: SNMPv2-SMI::enterprises.9.1.1252

    DISMAN-EVENT-MIB::sysUpTimeInstance = 타임틱: (2030697335) 235일, 0:49:33.35

    SNMPv2-MIB::sysContact.0 = STRING:

    SNMPv2-MIB::sysName.0 = STRING: .0 = 정수: 6

    SNMPv2-MIB::sysORLastChange.0 = 타임틱: (0) 0: 00:00.00

    OID에 해당하는 디지털 경로를 출력할 수도 있습니다:

    # snmpwalk -v 2c -On -c public 10.60.0.19 1.3.6.1.2.1.1

    .1.3.6.1.2.1.1.1. 0 = 문자열: Cisco IOS 소프트웨어, ME380x 소프트웨어(ME380x-UNIVERSALK9-M), 버전 15.4(3)S2, 릴리스 소프트웨어(fc1 )

    기술 지원: http://www.cisco.com/techsupport

    저작권( c) 1986-2015: Cisco Systems, Inc.

    prod_rel_team

    .1.3 .6.1.2.1.1.2.0 = OID: .1.3.6.1.4.1.9.1.1252에 의해 1월 28일 수요일 11:43에 컴파일됨

    .1.3.6.1.2.1.1.3.0 = 타임틱: (2030720756) 235일, 0:53:27.56

    1.3.6.1.2.1.1.4.0 = 문자열:

    .1.3.6.1.2.1. 1.5.0 = 문자열: XZX-3800

    .1.3.6.1.2.1.1.6.0 = 문자열:

    .1.3.6.1.2.1.1.7.0 = 정수: 6

    .1.3.6.1.2.1.1.8 .0 = 타임틱: (0) 0:00:00.00

    snmpwalk 명령이 다른 매개변수로 실행될 때 OID가 표시되는 방식 결과에도 차이가 있습니다. 어떻게 표시되든 결과는 항상 OID, 데이터 유형 및 반환 값의 세 부분으로 구성됩니다. 예를 들어 장치 이름은 다음과 같이 표시됩니다.

    SNMPv2-MIB::sysName.0 = STRING: XZX-3800

    .1.3.6.1.2.1.1.5.0= STRING: , 둘 다 의 반환 값입니다. sysName이지만 OID 표현은 다릅니다. Zabbix에서 항목을 정의할 때 가장 일반적으로 사용되는 OID 중 일부는 SNMP OID 구성 매개변수에서 OID 이름을 사용할 수 있습니다. Zabbix는 가장 일반적으로 사용되는 일부 SNMP OID를 숫자로 자동 변환합니다. SNMPv2-MIB::sysName.0은 1.3.6.1.2.1.1.5.0으로 변환됩니다. 그러나 기업 사설 MIB의 OID는 전체 디지털 경로만 사용할 수 있습니다. Zabbix에서 자동 변환할 수 있는 OID는 아래 표 13-1과 같습니다.

    표 13-1

    특수 OIDifIndex1.3.6.1.2.1.2.2 .1.1포트 인덱스1.3.6.1.2.1.2.2.1.2포트 설명1.3.6.1.2.1 .2.2.1.3포트 유형1.3.6.1.2.1.2.2.1.4포트 최대 전송 패킷 바이트 1.3.6.1.2.1.2.2.1.5Port Speed1.3.6.1.2.1.2.2.1.6포트 물리적 주소 1.3.6.1.2.1.2.2.1.7항구 관리 상태1.3.6.1.2.1.2.2. 1.3.6.1.2.1.2.2.1.10 1.3.6.1.2.1.2.2.1.11ifInUnknownProtos1.3.6.1.2.1.2.2.1.15포트에서 수신한 알 수 없는 프로토콜 패킷 수ifOutOctets1.3.6.1.2.1.2.2.1.16포트에서 보낸 바이트 수ifOutUcastPkts1.3.6.1.2.1.2.2.1.17비방송 횟수 포트에서 보낸 패킷ifOutNUcastPkts1.3 .6.1.2.1.2.2.1.18보낸 브로드캐스트 패킷의 포트 수 ifOutDiscards1.3.6.1. 2.1.2.2.1.19port 폐기된 패킷 전송 수ifOutErrors1.3.6.1.2.1.2.2.1.20전송 포트 수 패킷 오류ifOutQLen1.3.6.1.2.1.2.2.1.21포트 전송 대기열 길이

    3 SNMP 구성

    Zabbix에서 SNMP 구성을 시작하기 전에 Zabbix 서버가 SNMP 모니터링 기능을 켰는지 확인하세요. Zabbix 서버가 시작되면 다음과 같이 Zabbixserver의 기능 목록이 로그 파일에 나열됩니다.

    911:20160218:103649.120 Zabbix 3.0.1(revision58734).

    911:20160218:103649.160 *** * ** 활성화된 기능 ******

    911:20160218:103649.160 SNMP 모니터링: YES

    911:20160218:103649.160 IPMI 모니터링: YES

    911:20160218:103649.16 0 웹 모니터링: YES

    911:20160218 : 103649.160 VMware 모니터링: YES

    911:20160218:103649.160 SMTP 인증: YES

    911:20160218:103649.160 Jabber 알림: YES

    911:20160218:103649.1 60 Ez 문자 알림: YES

    911:20160218:103649.160 ODBC:                                                                              

    911:20160218:103649.160 SSH2 지원: YES

    911:20160218:103649.160 IPv6 지원: YES

    9 11:20160218:103649.160 TLS 지원: YES

    911:2016 0218:103649.160 *********** *******************

    911:20160218:103649.160 구성 파일 사용:/etc/zabbix/zabbix_server.conf

    SNMP 모니터링 활성화에 대한 정보가 발견되지 않은 경우, 그런 다음 Zabbixserver를 설치해야 합니다. 소스 코드를 사용하여 컴파일하고 설치하는 경우 --with-net-snmp 컴파일 구성 옵션을 사용해야 합니다.

    Zabbix에서는 UDP 프로토콜만 SNMP 모니터링에 사용되며 일반 SNMP 항목, 동적 인덱스(동적 인덱스) SNMP 항목 또는 SNMP 저수준 검색 규칙 등 하나의 요청으로 여러 값을 쿼리할 수 있습니다. 많은 수의 SNMP를 처리할 때 유용하며 효율성을 제공할 수 있습니다. 호스트 SNMP 인터페이스의 대량 요청 사용 옵션을 설정하여 대량 쿼리를 활성화하거나 비활성화합니다. 아래 그림 13-4와 같습니다.

    Zabbix 3.0监控网络设备有哪些

    그림 13-4

    단일 인터페이스에서 동일한 매개변수를 가진 모든 SNMP 모니터링 항목은 설정된 시간 간격으로 동시에 쿼리되며 일반 SNMP 항목과 동적 인덱스 SNMP 항목의 경우 폴러는 128개의 모니터링 항목을 처리합니다. 동시에, SNMP 하위 수준 검색 규칙은 별도로 처리됩니다. 쿼리 중에는 지정된 여러 개체를 수집하고 OID 트리를 통과하는 두 가지 작업 유형이 있습니다. 수집은 GetRequest-PDU가 최대 128개의 변수에 바인딩될 수 있음을 의미합니다. Traversal은 SNMP v1에서 GetNextRequest-PDU를 사용하고 최대 128개의 변수를 바인딩할 수 있는 SNMP v2 또는 SNMP v3의 max-repetitions 필드와 함께 GetBulkRequest를 사용하는 것을 의미합니다. 변하기 쉬운.

    따라서 각 SNMP 모니터링 항목을 일괄 처리하면 다음과 같은 이점이 있습니다.

    • 데이터를 수집하는 일반 SNMP 모니터링 항목의 성능이 향상됩니다.

    • 동적 인덱스(동적 인덱스) SNMP 모니터링 항목의 데이터 수집 및 데이터 순회 성능이 향상되었습니다.

    • 데이터를 통과하는 SNMP 하위 수준 검색 규칙의 성능이 향상되었습니다.

    그러나 기술적으로 말하면 모든 장치가 각 요청에 대해 128개의 값을 반환할 수 있는 것은 아닙니다. 일부 장치는 특정 응답 값을 반환할 수 있으며 일부 장치는 오류 코드가 너무 크거나(1) 전혀 응답하지 않습니다. 장치에 대한 최적의 쿼리 개체 수를 결정하기 위해 Zabbix는 몇 가지 전략을 사용합니다. 처음에는 쿼리 요청에서 하나의 값만 쿼리하고, 성공하면 쿼리 요청에서 2개의 값을 쿼리하고, 3개의 값을 쿼리합니다. 성공하면 쿼리 요청에 값을 입력하고 개체 수에 1.5를 곱하여 동일한 쿼리를 계속합니다. 이러한 쿼리 번호는 1, 2, 3, 4, 6, 9, 13, 19, 28, 42, 63, 94, 128의 오름차순입니다. 장치가 올바른 응답(예: 42개 변수 쿼리) 반환을 거부하는 경우 Zabbix는 다음 두 가지 작업을 수행할 수 있습니다.

    현재 일괄 쿼리 항목이 절반으로 쿼리됩니다. 즉, 21개의 변수가 쿼리됩니다. 장치가 일반 값을 반환하면 대부분의 경우 문제가 없습니다. 왜냐하면 28개의 변수를 쿼리하는 데 문제가 없고 21이 28보다 훨씬 작아야 한다는 것을 알고 있기 때문입니다. 항목을 절반으로 나눈 후에도 여전히 정상적인 반환 값을 얻을 수 없는 경우, 정상적인 반환 값을 얻을 때까지 쿼리된 변수의 수를 하나씩 롤백해야 합니다.

    Zabbix는 후속 쿼리에서 지난 번 쿼리에 성공한 변수 수(이 예에서는 28개)를 사용하여 쿼리하고 상한에 도달할 때까지 요청된 쿼리 변수 수를 계속해서 늘립니다(매번 1씩 증가). . 예를 들어, 최대 반응 변수가 32개라고 가정합니다. 후속 요청은 29, 30, 31, 32 및 33에 따라 쿼리됩니다. 바람직하게는 하나의 요청이 실패하고(변수 33개) Zabbix는 33개의 변수를 바인딩하는 다른 요청을 발행하지 않습니다. Zabbix의 SNMP 쿼리는 이 장치에서 최대 32개의 변수를 바인딩할 수 있습니다.

    Zabbix 서버 또는 프록시 서버가 잘못된 SNMP 응답을 받으면 다음과 유사한 내용이 로그 파일에 추가됩니다.

    호스트 "gateway"의 SNMP 응답에 요청된 변수 바인딩이 모두 포함되어 있지 않습니다.

    이 정보에는 모든 문제 상황이 해결되는 것은 아니지만 최소한 호스트의 SNMP 인터페이스에서 대량 요청 사용 옵션을 비활성화해야 한다는 점입니다.

    4 일반 SNMP 모니터링 항목 구성

    SNMP 모니터링 장비를 사용할 때 일반 SNMP 모니터링 항목은 다음과 같이 구성할 수 있습니다.

    호스트를 생성하고 여기에 SNMP 인터페이스를 추가합니다. Zabbix에서 제공하는 템플릿 SNMP 일반 템플릿을 사용하면 장치에 대한 기본 정보를 수집하는 모니터링 항목을 자동으로 추가할 수 있습니다.

    2. 모니터링되는 OID를 결정합니다.

    MIB 브라우저 또는 snmpwalk를 사용하여 모니터링해야 하는 OID를 찾고 결정합니다. 예를 들어 전환된 기가비트 포트의 트래픽을 모니터링하려는 경우 snmpwalk를 통해 찾은 GigabitEthernet0/1 인터페이스의 인덱스는 10101입니다. .

    # snmpwalk -v 2c -c public 10.60.0.19 IF-MIB::ifDescr

    GigabitEthernet0/1은 IF-MIB::ifDescr.10101

    IF-MIB::ifDescr 10102의 문자열 값으로 다시 쓸 수 있습니다. = STRING: GigabitEthernet0/2

    GigabitEthernet0/3은 IF-MIB::ifDescr.10103.

    문자열 "GigabitEthernet0/4"는 IF-MIB

    IF-MIB의 "ifDescr.10104" 값입니다. ::ifDescr.10105 = 문자열: GigabitEthernet0/5

    문자열 "IF-MIB::ifDescr.10106"은 "GigabitEthernet0/6"

    IF-MIB::ifDescr.10107 = 문자열: GigabitEthernet0/7

    에 해당합니다. …

    GigabitEthernet0/1 인터페이스의 송신 트래픽에 대해 얻은 OID는 .1.3.6.1.2.1.2.2.1.16.10101입니다.

    # snmpwalk -v 2c -On -c qhdpublic 10.60.0.19IF-MIB::ifOutOctets.10101

    .1.3.6.1.2.1.2.2.1.16.10101 =Counter32: 3619738552

    3. SNMPv2 에이전트 모니터링 모드, SNMP OID는 .1.3.6.1.2.1.2.2.1.16.10101입니다.

    5 동적 인덱스 SNMP 모니터링 항목 구성

    장치의 OID 트리에서 일부 관리 개체의 OID는 네트워크 인터페이스와 같은 인덱스를 사용하여 네트워크 인터페이스의 다른 개체에 연결하는 경우가 많습니다. 아래 snmpwalk 출력과 같습니다.

    # snmpwalk -v 2c -c 공개 10.60.0.19 .1.3.6.1.2.1.2.2.1

    IF-MIB::ifIndex.1 = 정수: 1

    IF-MIB::ifIndex.5001 = 정수: 5001

    IF-MIB::ifIndex.5002 = 정수: 5002

    IF-MIB::ifIndex.5003 = 정수: 5003

    IF-MIB::ifIndex.10101 = 정수: 10101

    IF-MIB:: ifIndex.10102 = 정수: 10102

    ...

    IF-MIB::ifDescr.1 = 문자열: Vlan1

    IF-MIB::ifDescr.5001 = 문자열: 포트 채널1

    IF-MIB::ifDescr .5002 = 문자열: Port-channel2

    IF-MIB::ifDescr.5003 = 문자열: Port-channel3

    GigabitEthernet0/1은 IF-MIB::ifDescr.10101

    IF-MIB의 문자열 값으로 다시 쓸 수 있습니다. ::ifDescr.10102 = 문자열: GigabitEthernet0/2

    ...

    IF-MIB::ifType.1 = 정수: propVirtual(53)

    IF-MIB::ifType.5001 = 정수: propVirtual(53 )

    IF-MIB::ifType.5002 = 정수: propVirtual(53)

    IF-MIB::ifType.5003 = 정수: propVirtual(53)

    IF-MIB::ifType.10101 = 정수: ethernetCsmacd( 6 )

    IF-MIB::ifType.10102 = 정수: ethernetCsmacd(6)

    ...

    IF-MIB::ifMtu.1 = 정수: 1500

    IF-MIB::ifMtu.5001 = 정수: 1500

    IF-MIB::ifMtu.5002 = 정수: 1500

    IF-MIB::ifMtu.5003 = 정수: 1500

    IF-MIB::ifMtu.10101 = 정수: 1500

    IF-MIB: : ifmtu.10102 = 정수 : 1500

    ...

    if-mib :: ifspeed.1 = guege32 : guege32 : 10000000000

    if-mib :: ifspeed.5001 = guege3 : guege3 : 20000000000 if-mib :: 속도. 5002 = 게이지32: 2000000000

    IF-MIB::ifSpeed.5003 = 게이지32: 1000000000

    IF-MIB::ifSpeed.10101 = 게이지32: 1000000000

    IF-MIB::ifSpeed.1 0102 = 게이지32: 1000000000

    ..

    IF-MIB::ifPhysAddress.1 = 문자열: b0:7d:47:be:ea:c0

    IF-MIB::ifPhysAddress.5001 = 문자열: b0:7d:47:be:ea: c2

    IF-MIB::ifPhysAddress.5002 = 문자열: b0:7d:47:be:ea:c3

    IF-MIB::ifPhysAddress.5003 = 문자열: b0:7d:47:be:ea:c4

    IF-MIB::ifPhysAddress.10101 = 문자열: b0:7d:47:be:ea:c2

    IF-MIB::ifPhysAddress.10102 = 문자열: b0:7d:47:be:ea:c3

    . .

    IF-MIB::ifAdminStatus.1 = 정수: 다운(2)

    IF-MIB::ifAdminStatus.5001 = 정수: 업(1)

    IF-MIB::ifAdminStatus.5002 = 정수: 업 ( 1)

    IF-MIB::ifAdminStatus.5003 = 정수: up(1)

    IF-MIB::ifAdminStatus.10101 = INTEGER: up(1)

    IF-MIB::ifAdminStatus.10102 = INTEGER: up(1)

    ...

    위 데이터에서 각 네트워크가 인터페이스에는 많은 OID가 있으며 각 OID는 인터페이스의 이름, 유형, 물리적 주소 등과 같은 네트워크 인터페이스의 다양한 표시기를 나타냅니다. 동일한 인덱스를 통해 서로 다른 OID가 관련되어 있음을 알 수 있습니다. 예를 들어 첫 번째 기가비트 인터페이스의 이름은 GigabitEthernet0/1이고 물리적 주소는 b0:7d:47:be:ea:c2이며 상태는 작동(1)이고 해당 인덱스는 10101입니다.

    동일한 네트워크 인터페이스의 다양한 표시기를 모니터링하려면 다양한 모니터링 항목을 생성하고 SNMP OID 필드에 완성된 OID를 입력하면 됩니다. 이 방법은 문제가 없으나, 실제 환경에서 인덱스를 사용하면 몇 가지 문제가 발생하게 되는데, 그 이유는 소프트웨어나 하드웨어 업그레이드로 인해 인덱스가 변경되어 구성 불일치가 발생하기 때문입니다. 이러한 문제를 해결하기 위해 Zabbix는 인덱스 값이 변경되더라도 모니터링 항목의 모니터링에 영향을 주지 않는 동적 인덱스 방식을 제공합니다.

    동적 인덱스 SNMP OID를 사용하는 구문은 다음과 같습니다.

    ["index","","

    의 의미 구문의 각 부분은 다음과 같습니다.

    • 데이터의 OID: 쿼리해야 하는 항목에 정의된 OID입니다.

    • 색인: 처리 방법, 현재 이 방법만 지원됩니다. 인덱스는 인덱스를 검색하여 OID에 추가하는 것을 의미합니다.

    • 인덱스의 기본 OID: 이 OID에 따라 해당 인덱스 값을 찾습니다.

    • 검색할 문자열: 검색 시 일치를 위해 이 문자열을 사용하며 대소문자를 구분합니다.

    예를 들어 GigabitEthernet0/1 인터페이스의 ifInOctets를 모니터링하려는 경우 구문에 따라 다음과 같이 정의할 수 있습니다.

    ifInOctets["index","ifDescr","GigabitEthernet0/1"]

    ifDescr /1 인터페이스에서 GigabitEthernet0, 또는 ifDescr에서 이 인터페이스의 인덱스 값을 매칭하고 검색한 다음 수집된 인덱스 값을 ifInOctets에 추가하여 GigabitEthernet0/1 인터페이스의 ifInOctets 값을 수집하는 것으로 이해될 수 있습니다. .

    동적 인덱스를 사용하면 Zabbix는 인덱스 OID의 전체 SNMP 테이블을 수신하고 캐시를 통해 나중에 다른 모니터링 항목이 동일한 인덱스 OID를 쿼리하면 직접 검색됩니다. 캐시에서 모니터링 호스트를 쿼리할 필요가 없습니다.

    그런 다음 모니터링 항목의 데이터를 받으면 인덱스가 변경되었는지 확인합니다. 인덱스가 변경 사항을 보내지 않으면 계속해서 값 쿼리를 사용합니다. 인덱스가 변경 사항을 보내면 Zabbix는 캐시를 다시 작성합니다. 각 폴러는 인덱스 OID의 SNMP 테이블을 다시 통과합니다.

    Zabbix에서는 각 폴러 프로세스에 자체 캐시가 있습니다.

    6 SNMP 하위 수준 검색 규칙 구성

    SNMP OID에 대한 검색 규칙을 생성할 때는 파일 시스템이나 네트워크 인터페이스에 대한 검색 규칙을 정의하는 것과 달리 snmp.discovery 키를 사용하지 않고 SNMP agnet 모니터링 방법을 사용할 수 있습니다. SNMPOID에서 탐색해야 하는 OID는 탐색[{#MACRO1}, oid1, {#MACRO2}, oid2, …,] 형식으로 필드에 정의됩니다.

    {#MACRO1}, {#MACRO2}...는 모두 유효한 매크로 변수 이름이며, oid1, oid2...는 매크로 변수의 값을 생성하는 데 사용됩니다. 검색 시 시스템은 기본적으로 검색 OID에 대한 인덱스를 생성하는 데 사용되는 {#SNMPINDEX}라는 매크로 변수를 생성합니다. 검색 결과는 {#SNMPINDEX}별로 그룹화됩니다.

    다음 예는 이해를 돕기 위한 것입니다. 먼저 snmpwalk를 사용하여 스위치에서 관련 데이터를 수집하십시오.

    # snmpwalk -v 2c -OT -c public 10.60.0.19 IF-MIB::ifDescr

    IF-MIB::ifDescr.1 = STRING: Vlan1

    GigabitEthernet0/1은 IF-MIB:: 문자열로 다시 쓸 수 있습니다. ifDescr.10101 값

    IF-MIB::ifDescr.10102 = 문자열: GigabitEthernet0/2

    GigabitEthernet0/3은 IF-MIB::ifDescr.10103.

    # snmpwalk -v 2c -OT - c public으로 식별됩니다. 10.60.0.19 IF-MIB::ifPhysAddress

    IF-MIB::ifPhysAddress.1 = 문자열: b0:7d:47:be:ea:c0

    IF-MIB::ifPhysAddress.10101 = 문자열: b0: 7d: 47:be:ea:c2

    IF-MIB::ifPhysAddress.10102 = 문자열: b0:7d:47:be:ea:c3

    IF-MIB::ifPhysAddress.10103 = 문자열: b0:7d: 47: be:ea:c4

    그런 다음 검색 규칙을 생성할 때 SNMP OID 필드에 다음을 입력합니다.

    discovery[{#IFDESCR}, ifDescr, {#IFPHYSADDRESS}, ifPhysAddress]

    검색 규칙을 실행한 후 다음을 얻습니다. 결과:

    {

    "data": [

    "{

    "{#SNMPINDEX}":"1", "{#IFDESCR}": " Vlan1",

    "{#IFPHYSADDRESS}": " b0 :7d:47:be:ea:c0"

    " },

    " "{

    " "{#SNMPINDEX}": "2",

    " "{#IFDESCR}": " GigabitEthernet0/1 ",

    "{#IFPHYSADDRESS}": " b0:7d:47:be:ea:c2"

    },

    "{#SNMPINDEX}":"3",

    "{#IFDESCR}": " GigabitEthernet0/ 2",

    "{#IFPHYSADDRESS}":" b0:7d:47:be:ea:c3"

    " " :"4",

    "{#IFDESCR}": " GigabitEthernet0/3",

      " 반환 값은 없으며 아래 예와 같이 검색 결과에서 해당 매크로가 무시됩니다.

    가정 데이터는 다음과 같습니다.

    ifDescr.1 "Interface #1"

    ifDescr.2 "Interface #2"

    ifDescr.4 "Interface #4"

    ifAlias.1 "eth0"

    ifAlias .2 "eth2"

    ifAlias.3 "eth3"

    ifAlias.5 "eth5"

    그런 다음 검색 규칙을 생성할 때 SNMP OID 필드에 다음을 입력합니다.

    discovery[{#IFDESCR},ifDescr, {#IFALIAS }, ifAlias ​​]

    검색 규칙을 실행한 후 다음 결과를 얻습니다.

    {

    “data”: [

    “{

    “{#SNMPINDEX}”: 1,

    “{#IFDESCR} ”: #1" ,

                                                            IFDESCR}": "인터페이스 #2",

                 "{ ": "eth2"

                       ,                                     },

                                   > ":"인터페이스 #4"

    "{#SNMPINDEX}": 5,

    "{#IFALIAS}": "eth5"

                                                ~

    그림 13-5

    아래 그림 13-6과 같이 정의된 검색 규칙을 기반으로 항목 프로토타입을 만듭니다.

    그림 13-6

    아래 그림 13-7과 같이 여러 항목 프로토타입을 만들 수 있습니다.

    사진 13-7

    Identifier

    Description

    ifDescr

    ifType

    ifMtu

    ifSpeed

    ifPhysAddress

    ifAdminStatus

    ifOperStatus

    항만 운영현황

    ifInOctets

    포트에서 수신한 바이트 수

    ifInUcastPkts

    포트에서 수신한 비브로드캐스트 패킷 수

    ifInNUcastPkts

    1.3.6.1.2.1.2.2.1.12

    포트에서 수신한 브로드캐스트 패킷 수

    ifInDiscards

    1.3 .6.1.2.1.2.2.1.13

    포트 수신 패킷 삭제 횟수

    ifInErrors

    1.3 .6.1.2.1.2.2.1.14

    포트 수신된 패킷 오류 수

위 내용은 Zabbix 3.0이 모니터링하는 네트워크 장치는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:yisu.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿