Mackerel の チェックプラグイン をUbuntuで使ってみる。
例としてcheck-ping を使えるようにする。公式のInstallationは機能しないので、以下の手順でインストールする。
$HOME/.profile
に go と goでインストールしたパッケージのPATHをexport PATH=$PATH:/usr/local/go/bin:$HOME/go/bin
で追記し、source で読み込む- go 1.20 以上を手動で入れる
wget https://go.dev/dl/go1.20.14.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.20.14.linux-amd64.tar.gz
- go install
go install github.com/mackerelio/go-check-plugins@latest
依存関係が全てダウンロードされるcd ~/go/pkg/mod/github.com/mackerelio/go-check-plugins@v0.46.3/check-ping
バージョン名は現時点のものgo install
check-ping
を実行
以上
Raspberry pi 4 は arm64 で。 mackerel-agent-plugins も同じ方法でインストール可能。
以下、試行錯誤の履歴。
WSLのバージョン確認
physics@ONSA016:~$ cat /etc/os-release PRETTY_NAME="Ubuntu 22.04.3 LTS" NAME="Ubuntu" VERSION_ID="22.04" VERSION="22.04.3 LTS (Jammy Jellyfish)" VERSION_CODENAME=jammy ID=ubuntu ID_LIKE=debian HOME_URL="https://www.ubuntu.com/" SUPPORT_URL="https://help.ubuntu.com/" BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/" PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy" UBUNTU_CODENAME=jammy
ここに書いている通り、apt-get install mackerel-check-plugins
で入れてみよう
physics@ONSA016:~$ sudo apt update physics@ONSA016:~$ sudo apt-get install mackerel-check-plugins Reading package lists... Done Building dependency tree... Done Reading state information... Done E: Unable to locate package mackerel-check-plugins
パッケージが見つかりませんね。
次に、goでインストールしてみよう。
ここに書いてある方法で試す。まずはgoのインストール。
physics@ONSA016:~$ sudo apt install golang physics@ONSA016:~$ go version go version go1.18.1 linux/amd64
go の 1.18 が入りました。指示通り github.com/mackerelio/go-check-plugins
からリポジトリを取得すると・・・
physics@ONSA016:~$ go get github.com/mackerelio/go-check-plugins go: go.mod file not found in current directory or any parent directory. 'go get' is no longer supported outside a module. To build and install a command, use 'go install' with a version, like 'go install example.com/cmd@latest' For more information, see https://golang.org/doc/go-get-install-deprecation or run 'go help get' or 'go help install'.
go install example.com/cmd@latest
とやれ言ってくる。大人しくやってみよう。
physics@ONSA016:~$ go install github.com/mackerelio/go-check-plugins@latest go: downloading github.com/mackerelio/go-check-plugins v0.46.3 go: downloading github.com/jessevdk/go-flags v1.5.0 go: downloading github.com/mackerelio/checkers v0.2.0 go: downloading github.com/aws/aws-sdk-go v1.47.9 go: downloading github.com/go-ldap/ldap/v3 v3.4.8 go: downloading github.com/shirou/gopsutil/v3 v3.23.10 go: downloading github.com/mackerelio/golib v1.2.1 go: downloading github.com/bradfitz/gomemcache v0.0.0-20221031212613-62deef7fc822 go: downloading github.com/mattn/go-encoding v0.0.2 go: downloading github.com/mattn/go-zglob v0.0.4 go: downloading github.com/natefinch/atomic v1.0.1 go: downloading golang.org/x/text v0.14.0 go: downloading github.com/miekg/dns v1.1.50 go: downloading github.com/beevik/ntp v1.3.1 go: downloading github.com/go-sql-driver/mysql v1.7.1 go: downloading github.com/jmoiron/sqlx v1.3.5 go: downloading github.com/lib/pq v1.10.9 go: downloading golang.org/x/crypto v0.22.0 go: downloading github.com/mackerelio/go-osstat v0.2.4 go: downloading github.com/tatsushid/go-fastping v0.0.0-20160109021039-d7bb493dee3e go: downloading github.com/gomodule/redigo v1.8.9 go: downloading golang.org/x/sys v0.19.0 go: downloading github.com/Azure/go-ntlmssp v0.0.0-20221128193559-754e69321358 go: downloading github.com/go-asn1-ber/asn1-ber v1.5.5 go: downloading github.com/google/uuid v1.6.0 go: downloading golang.org/x/net v0.23.0 go: downloading github.com/jmespath/go-jmespath v0.4.0 # github.com/mackerelio/checkers go/pkg/mod/github.com/mackerelio/checkers@v0.2.0/statusmap.go:62:24: undefined: strings.CutPrefix go/pkg/mod/github.com/mackerelio/checkers@v0.2.0/statusmap.go:68:24: undefined: strings.CutPrefix note: module requires Go 1.20
go 1.20 が必要だという。しょうがないので、インストールした go 1.18を削除して、go の公式ページから 1.20 をダウンロードする。
sudo apt remove golang sudo apt autoremove
physics@ONSA016:~$ wget https://go.dev/dl/go1.20.14.linux-amd64.tar.gz physics@ONSA016:~$ sudo rm -rf /usr/local/go #初めてなら必要ない physics@ONSA016:~$ sudo tar -C /usr/local -xzf go1.20.14.linux-amd64.tar.gz
$HOME/.profile
に export PATH=$PATH:/usr/local/go/bin
を追記
physics@ONSA016:~$ source $HOME/.profile physics@ONSA016:~$ go version go version go1.20.14 linux/amd64
よし、1.20がダウンロードできた。go install リポジトリ名@latest のコマンドを叩いても...
physics@ONSA016:~$ go install github.com/mackerelio/go-check-plugins@latest
何も起きない。WSLを入れ直して、go 1.20 をインストールすると
physics@ONSA016:~$ go install github.com/mackerelio/go-check-plugins@latest go: downloading github.com/mackerelio/go-check-plugins v0.46.3 go: downloading github.com/jessevdk/go-flags v1.5.0 go: downloading github.com/mackerelio/checkers v0.2.0 go: downloading github.com/aws/aws-sdk-go v1.47.9 go: downloading github.com/mackerelio/golib v1.2.1 go: downloading github.com/natefinch/atomic v1.0.1 go: downloading github.com/go-ldap/ldap/v3 v3.4.8 go: downloading github.com/bradfitz/gomemcache v0.0.0-20221031212613-62deef7fc822 go: downloading github.com/go-sql-driver/mysql v1.7.1 go: downloading github.com/jmoiron/sqlx v1.3.5 go: downloading github.com/beevik/ntp v1.3.1 go: downloading github.com/tatsushid/go-fastping v0.0.0-20160109021039-d7bb493dee3e go: downloading github.com/lib/pq v1.10.9 go: downloading golang.org/x/text v0.14.0 go: downloading github.com/mattn/go-encoding v0.0.2 go: downloading github.com/mattn/go-zglob v0.0.4 go: downloading github.com/gomodule/redigo v1.8.9 go: downloading golang.org/x/crypto v0.22.0 go: downloading github.com/mackerelio/go-osstat v0.2.4 go: downloading github.com/miekg/dns v1.1.50 go: downloading github.com/shirou/gopsutil/v3 v3.23.10 go: downloading golang.org/x/sys v0.19.0 go: downloading github.com/Azure/go-ntlmssp v0.0.0-20221128193559-754e69321358 go: downloading github.com/go-asn1-ber/asn1-ber v1.5.5 go: downloading github.com/google/uuid v1.6.0 go: downloading golang.org/x/net v0.23.0 go: downloading github.com/jmespath/go-jmespath v0.4.0 physics@ONSA016:~/go$ ls bin pkg
となるが、 src ディレクトリができた形跡がない。
公式に go get が使える go 1.15 まで遡る。
physics@ONSA016:~$ wget https://go.dev/dl/go1.15.15.linux-amd64.tar.gz physics@ONSA016:~$ sudo tar -C /usr/local -xzf go1.15.15.linux-amd64.tar.gz physics@ONSA016:~$ go version go version go1.15.15 linux/amd64 physics@ONSA016:~$ sudo rm -rf /home/physics/go physics@ONSA016:~$ go get github.com/mackerelio/go-check-plugins found packages unix (affinity_linux.go) and main (mkasm.go) in /home/physics/go/src/golang.org/x/sys/unix found packages ipv4 (batch.go) and main (gen.go) in /home/physics/go/src/golang.org/x/net/ipv4 found packages ipv6 (batch.go) and main (gen.go) in /home/physics/go/src/golang.org/x/net/ipv6 package io/fs: unrecognized import path "io/fs": import path does not begin with hostname found packages charmap (charmap.go) and main (maketables.go) in /home/physics/go/src/golang.org/x/text/encoding/charmap found packages japanese (all.go) and main (maketables.go) in /home/physics/go/src/golang.org/x/text/encoding/japanese found packages korean (all_test.go) and main (maketables.go) in /home/physics/go/src/golang.org/x/text/encoding/korean found packages simplifiedchinese (all.go) and main (maketables.go) in /home/physics/go/src/golang.org/x/text/encoding/simplifiedchinese found packages traditionalchinese (all_test.go) and main (maketables.go) in /home/physics/go/src/golang.org/x/text/encoding/traditionalchinese found packages cases (cases.go) and main (gen.go) in /home/physics/go/src/golang.org/x/text/cases found packages language (coverage.go) and main (gen.go) in /home/physics/go/src/golang.org/x/text/language package crypto/ecdh: unrecognized import path "crypto/ecdh": import path does not begin with hostname
~/go/src
にダウンロードできたっぽい。
パッケージ io/fs とか crypto/ecdh がないと怒られる。これは、go 1.15 には含まれない。このパッケージはgo1.16から含まれるが、他のエラーで go1.20 にしろと言われたので go1.20にする。
physics@ONSA016:~$ sudo rm -rf /usr/local/go physics@ONSA016:~$ sudo tar -C /usr/local -xzf go1.20.14.linux-amd64.tar.gz physics@ONSA016:~$ cd ~/go/src/github.com/mackerelio/go-check-plugins/check-ping physics@ONSA016:~/go/src/github.com/mackerelio/go-check-plugins/check-ping$ go install go: downloading github.com/tatsushid/go-fastping v0.0.0-20160109021039-d7bb493dee3e go: downloading github.com/mackerelio/checkers v0.2.0 go: downloading github.com/jessevdk/go-flags v1.5.0 go: downloading golang.org/x/net v0.23.0 go: downloading golang.org/x/sys v0.19.0
~/.profile
を export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin
と修正
physics@ONSA016:~/go/bin$ source ~/.profile physics@ONSA016:~/go/bin$ check-ping Usage: check-ping [OPTIONS] Application Options: -H, --host= check target IP Address -n, --count= sending (and receiving) count ping packets (default: 1) -w, --wait-time= wait time, Max RTT(ms) (default: 1000) Help Options: -h, --help Show this help message
check-ping が確かに実行できた。
go 1.20 で go install パッケージ名@latest
でダウンロードされる先は
physics@ONSA016:~$ go env GOMODCACHE /home/physics/go/pkg/mod
という情報を入手。確かにここにダウンロードされていたので、今回は github.com/mackerelio/go-check-plugins@v0.46.3/check-ping
に移動して go install
すれば良さそうだと分かる。
結局、一番上の方法でインストールできることが分かった。