Skip to content

umenosuke/ping-grpc-server

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

39 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

icmp ping を撃ってくれるサーバー

これは何

  • pingを撃つデーモン
  • ping対象の指定などはgRPCクライアントから
  • 一回のリクエスト内の対象へはpingを並列で撃つ

ping結果を見る箇所と撃ち箇所を別にできるので
PCからのpingが遮断されているときの疎通確認や
AS内部と外部からの疎通確認とかに

Demo

クライアント側を見てください

使い方

実行

./ping-grpc-server -config '{"UseTLS":false}'

or 設定ファイルを作成

./ping-grpc-server -printConfig >> ping-grpc.conf.json

ping-grpc.conf.json (設定ファイル)を編集

項目 意味
ListenIPAddress gRPCで待ち受けるアドレス string `IP`:`port`
UseTLS TLSを利用するか bool
(TLSを利用する場合)
CACertificatePath CA証明書のパス string `file path`
ServerCertificatePath サーバー証明書のパス string `file path`
ServerPrivateKeyPath サーバー秘密鍵のパス string `file path`

実行

./ping-grpc-server -configPath ping-grpc.conf.json

TLS利用する場合

ここなどを参考に

  • CAの証明書
  • サーバー証明書と秘密鍵

を作成してください

オプションなど

$ ./ping-grpc-server -help
Usage of ./ping-grpc-server:
  -config string
        config json string (default "{}")
  -configPath string
        config file path
  -debug
        print debug log
  -printConfig
        show default config
  -v    show version (shorthand)
  -version
        show version

コンフィグの内容について

ここ

type Config struct

がそのままエンコードされた形です
値の詳細についてはコメントを参照してください

引数 > 設定ファイル > デフォルト値
の優先度で反映されます

ビルド方法

ビルドに必要なもの

  • git
  • Dockerとか

コマンド

クローン

git clone --recursive git@github.com:umenosuke/ping-grpc-server.git
cd ping-grpc-server

設定読み込み

source .script/_conf.sh

ビルド用のコンテナを立ち上げ

docker-compose -f .docker/docker-compose.yml up -d

linux&amd64用バイナリを作成(ビルドターゲットは任意で変更してください)
ICMPでraw socketを利用するのでケイパビリティを設定(コマンドをroot権限で実行でも一応大丈夫ですが)

docker exec -it go_build_${_PRJ_NAME} target_data/.script/go_build.sh 'linux' 'amd64' './src' "build/${_PRJ_NAME}"
sudo setcap cap_net_raw=ep "build/${_PRJ_NAME}"

ビルド用のコンテナをお片付け

docker-compose -f .docker/docker-compose.yml down

バイナリはこれ

build/ping-grpc-server