Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

インフラ運用管理ツールとGolang OSS運用管理勉強会LT

1,276 views

Published on

第10回OSS運用管理勉強会LT資料
GolangでZabbixとかAWSとか連携すると便利かもという話。

Published in: Technology
  • Be the first to comment

  • Be the first to like this

インフラ運用管理ツールとGolang OSS運用管理勉強会LT

  1. 1. インフラ運用管理ツール と Golang TIS株式会社 池田 大輔
  2. 2. Hello! I am Daisuke IKEDA (@ike_dai) TIS Inc. OSS Promotion Office. Zabbix Specialist
  3. 3. Golang? Ref. https://golang.org/ Googleが開発するOSSのプログラミング言語
  4. 4. Shellスクリプトで運用のための処理プログラム作ったり e.g. AWS操作用スクリプト DBバックアップ用スクリプト That happens
  5. 5. ・スクリプトを動かすためにツール等が必要 ・Shellスクリプトでの処理の面倒さ  (JSONやXMLのパースとか) What’s concern?
  6. 6. Golangってどうよ?
  7. 7. 1 One binary file Golang builds one binary file.
  8. 8. Easy build $ go build sample.go $ ls -lh -rwxr-xr-x 1 ike_dai staff 2.2M 4 19 23:35 sample -rw-r--r-- 1 ike_dai staff 77B 4 19 23:35 sample.go $ ./sample Hello World $ go run sample.go package main import "fmt" func main() { fmt.Println("Hello World") } ※都度buildしなくてもgo runで即時実行可
  9. 9. 2 Cross platform The same code for Linux, Windows, MacOS
  10. 10. Cross Compile $ GOOS=linux GOARCH=amd64 go build sample.go Linux Windows MacOS $ GOOS=windows GOARCH=amd64 go build sample.go $ GOOS=darwin GOARCH=amd64 go build sample.go
  11. 11. 3 Various library Golang have so many efficient libraries.
  12. 12. [Golang標準ライブラリ] flag : コマンドライン引数処理 log : ログ出力 net: ネットワーク通信関連処理 time: 時刻処理 encoding/json : JSON形式のデータ処理 encoding/xml : XML形式のデータ処理 等 Golang library
  13. 13. [Zabbix] Zabbix API library https://github.com/AlekSi/zabbix Zabbix Sender https://github.com/AlekSi/zabbix-sender Golang library
  14. 14. [AWS] AWS API library (AWS official) https://github.com/aws/aws-sdk-go Golang library
  15. 15. なければ作ればいい [JobScheduler] JobScheduler API library https://github.com/ike-dai/go-jobscheduler Golang library
  16. 16. Go Doc GitHubにコミットすれば 自動的にコメントの内容や メソッド、構造体をもとに ドキュメントサイトが生成 https://godoc.org/github.com/ike-dai/go-jobscheduler/jobscheduler
  17. 17. 4 Rich compiler Golang compiler is so kind.
  18. 18. Go Compiler 単純に動く動かないの構文チェックだけじゃなく  ・使っていないパッケージをimportしていることを指摘とか  ・使っていないのに変数定義していることを指摘とか Code Build result package main import "fmt" func main() { sample_var := "test" fmt.Println("Hello World") } $ go build sample.go # command-line-arguments ./sample.go:6: sample_var declared and not used
  19. 19. 5 Easy Parallel processing Go routine and channel architecture.
  20. 20. Go routine & channel 関数にgoつけて実行するだけで非同期並列処理化 並列処理間のデータ連携にはchannelで送受信 package main import "fmt" func main() { fmt.Println("Hello World") ch := make(chan int) go backend_process(ch) receive := <-ch fmt.Println(receive) } func backend_process(ch chan int) { fmt.Println("Backend Process") ch <- 1 } $ go run sample.go Hello World Backend Process 1
  21. 21. Go routine & channel 関数にgoつけて実行するだけで非同期並列処理化 並列処理間のデータ連携にはchannelで送受信 package main import "fmt" func main() { fmt.Println("Hello World") ch := make(chan int) go backend_process(ch) receive := <-ch fmt.Println(receive) } func backend_process(ch chan int) { fmt.Println("Backend Process") ch <- 1 } $ go run sample.go Hello World Backend Process 1 複数処理を並行で バックエンド処理させるのが簡単
  22. 22. I tried!
  23. 23. ZabbixでAWSの状況を監視するテンプレート AWSとZabbixとの連携処理をGolangで実装 1コマンドで処理可能 ・EC2インスタンスの情報取得 ・CloudWatchの情報取得 ・Zabbix Senderプロトコルを話してZabbixに連携 ZAWS (Zabbix AWS monitoring template) https://github.com/ike-dai/zaws
  24. 24. Case 運用管理系ツール展開のHashicorp社のGolangツール ・Serf ・Consul ・Terraform ・Otto ・Nomad DockerもGolang製
  25. 25. Conclusion Let’s try together! ノウハウ等、まだ少ないところはあるが可能性は十分あり さくっと試して日頃の業務を改善するには便利 作ったものを配布、敷居低く試してもらうにはもってこい!
  26. 26. Thanks! Any questions? You can find me at @ike_dai & dai.ikd123@gmail.com

×