공식 지침에 따라 테스트 플러그인을 처리하려고 하면 Zabbix Agent 2에서 오류가 발생합니다.
php 편집자 Yuzi가 오늘 Zabbix Agent 2에 대한 질문을 여러분과 공유할 것입니다. 한 사용자가 공식 지침에 따라 테스트 플러그인을 처리하려고 시도하는 동안 오류가 발생했습니다. 이 문제는 플러그인의 올바른 작동에 영향을 미칠 수 있으므로 이 문제를 해결하는 방법을 모색하겠습니다. 한 번 보자!
질문 내용
저는 Zabbix Agent 2의 가능성을 탐색하기 시작했고 공식 플러그인 생성 가이드에 설명된 대로 단계별로 테스트 플러그인을 생성하기로 결정했습니다.
모든 단계를 완료한 후 zabbix 에이전트는 아무것도 하고 싶지 않았고(-h 옵션 제외) 다음 오류를 표시했습니다.
zabbix_agent2 [10046]:错误:无法注册插件:无法解析代理版本strconv.atoi:解析“6.0.13”:语法无效
우분투 22.04에서 이 작업을 했습니다.
zabbix 에이전트 2 버전: 6.0.14.
go 버전: go1.18.1 linux/amd64
저는 apt-get을 통해서만 Zabbix Agent 2를 설치했습니다.
지침에 따라 모든 작업을 수행했습니다.
- /home/ubuntu/myip 디렉터리를 만들었습니다.
- main.go 파일을 생성했습니다
- 지침에 있는 코드를 붙여넣었습니다
- go mod init example.test/myip
- 조직 모듈
- 빌딩 시작
- 플러그인 실행 파일의 경로를 사용하여 myip.conf 파일을 생성하고 이를 디렉토리에 넣었습니다
/etc/zabbix/zabbix_agent2.d/plugins.d
- 그리고 명령을 시작하세요
zabbix_agent2 -t myip
그리고... 작동하지 않으며 잘못된 구문 분석 프록시 버전에 대한 오류가 발생합니다.
제 생각에는 strconv.atoi
가 Zabbix Agent 2 자체의 코드에서 어떻게든 잘못 처리된 것 같은데, 코드 편집기를 사용하여 전체 프로젝트를 살펴본 후에는 주목할 만한 내용을 찾을 수 없습니다.
그리고 zabbix 에이전트 버전이 6.0.14인데 플러그인 통신 프로토콜 버전이 6.0.13인 것도 이상하네요. 프로토콜 버전을 프록시 버전으로 전달하려는 이유를 이해할 수 없습니다.
이 문제에 대해 생각이 있으시면 표현해 주시기 바랍니다. 미리 감사드립니다.
Solution
해결책을 찾았습니다! (글쎄, 내 직장 동료가 실제로 이것을 발견했지만 요점은 아닙니다)
이유는 파일 src/go/plugins/external/broker.go
。在此文件中多次更改了请求结构中记录的逻辑。在 22 年夏天,他们改变了 Zabbix Agent 版本属性的方式(通过 strconv.Atoi
이 문자열에서 정수로 구문 분석되기 때문입니다.
그러나 2023년 1월에 프록시 버전 속성을 제거하고 strconv.Atoi
를 통해 구문 분석한 후 프로토콜 버전 속성을 추가했습니다. 그렇기 때문에 프로토콜 버전을 프로젝트 버전으로 전달하려고 합니다.
Plugin Support
包的plugin/container/handler.go
文件中的checkVersion
프로토콜 버전 확인 방법도 변경되었습니다.
그래서 문제는 새로운 Zabbix Agent 2와 이전 플러그인 지원 패키지에 있습니다.
Zabbix Agent 2용 버전 6.4를 사용하고 git.zabbix.com/ap/plugin-support/plugin
용 버전 1.2.2를 사용하면 모든 것이 잘 작동합니다!
위 내용은 공식 지침에 따라 테스트 플러그인을 처리하려고 하면 Zabbix Agent 2에서 오류가 발생합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











jwt 토큰이 있고 https://jwt.io/ 웹사이트에서 디코딩된 토큰을 볼 수 있습니다. 비밀이나 주장을 설정할 필요가 없습니다. 그래서 나는 비밀을 제공하지 않고 만료 날짜를 얻기 위해 토큰을 디코딩하는 방법을 찾고 있습니다. 나는 ngopkg.in/square/go-jose.v2/jwt 라이브러리를 사용하고 있습니다. 아래 코드는 다음과 같습니다. token,err:=jwt.ParseSigned(jwtToken) 반환 값 토큰에는 keyid, 알고리즘을 포함하는 헤더 필드가 있습니다. 만료일을 알려주지 않습니다. 이 주제를 검색했는데 사람들이 github.com/a를 사용한다고 말했습니다.

구문 분석 함수는 문자열을 구문 분석하여 구분 기호로 구분된 토큰 목록으로 변환합니다. 단계: 1. 문자열의 시작 부분에서 구분 기호가 아닌 첫 번째 문자를 검색합니다. 2. 구분 기호가 나타날 때까지 검색을 계속하고 해당 구분 기호에서 문자열을 종료합니다. 3. 토큰 배열에 토큰을 저장합니다. 1-3 문자열 끝까지; 5. 배열의 끝을 나타내기 위해 배열 끝에 NULL에 대한 포인터를 추가합니다.

아래와 같이 x-www-form-urlencoded 본문에 중첩된 키 값을 가져오는 사용 사례가 있습니다. name=abc&age=12¬es[key1]=value1¬es[key2]=value2 url.parsequery("name= abc&age=12¬es \[key1\]=value1¬es\[key2\]=value2") 그러나 {"name":"abc","age":12,"notes[key1]":"value1", "note를 제공합니다.

C++에는 문자열을 int로 변환하는 두 가지 방법이 있습니다. 즉, 문자열을 직접 받아서 정수를 반환하는 Sto i() 함수를 사용하는 것입니다. isringstream 클래스를 사용하여 문자열을 입력 스트림으로 구문 분석하고 정수를 추출합니다. 선택되는 방법은 문자열 형식에 따라 다릅니다. 형식이 명확하고 숫자가 아닌 문자가 없는 경우 stoi()가 더 간결합니다. 문자열에 숫자가 아닌 문자가 포함되어 있거나 사용자 지정 변환이 필요한 경우 isstringstream이 더 유연합니다.

Java에서 구문 분석은 문자열이나 기타 표현을 지정된 유형이나 객체로 변환하는 프로세스를 나타냅니다. 일반적인 애플리케이션에는 문자열을 숫자 유형, 날짜/시간 개체, JSON 개체로 변환하고 XML 문서에서 데이터를 추출하는 작업이 포함됩니다. 내장 메소드, 포맷터 클래스 또는 타사 라이브러리를 통해 구문 분석합니다.

Go 언어에서 주소를 구문 분석하는 주요 기능은 다음과 같습니다. net.ParseIP(): IPv4 또는 IPv6 주소를 구문 분석합니다. net.ParseCIDR(): CIDR 태그를 구문 분석합니다. net.ResolveIPAddr(): 호스트 이름 또는 IP 주소를 IP 주소로 확인합니다. net.ResolveTCPAddr(): 호스트 이름과 포트를 TCP 주소로 확인합니다. net.ResolveUDPAddr(): 호스트 이름과 포트를 UDP 주소로 확인합니다.

PHP에 대한 심층적인 이해: JSONUnicode를 중국어로 변환하는 구현 방법 개발 중에 JSON 데이터를 처리해야 하는 상황이 자주 발생하며, JSON의 유니코드 인코딩은 일부 시나리오, 특히 변환해야 할 때 몇 가지 문제를 일으킬 수 있습니다. 유니코드 인코딩을 한자로 변환하는 경우입니다. PHP에는 이러한 변환 프로세스를 달성하는 데 도움이 되는 몇 가지 방법이 아래에 소개되고 구체적인 코드 예제가 제공됩니다. 먼저 JSON의 Un을 먼저 이해해 봅시다.

Go 언어 리플렉션을 사용하면 부울 값, 정수, 부동 소수점 숫자 및 문자열 수정을 포함하여 런타임에 변수 값을 조작할 수 있습니다. 변수의 값을 가져오면 SetBool, SetInt, SetFloat 및 SetString 메서드를 호출하여 수정할 수 있습니다. 예를 들어 JSON 문자열을 구조로 구문 분석한 다음 리플렉션을 사용하여 구조 필드의 값을 수정할 수 있습니다. 반영 작업이 느리고 수정 불가능한 필드는 수정할 수 없습니다. 구조체 필드 값을 수정하면 관련 필드가 자동으로 업데이트되지 않을 수 있습니다.
