My Note

自己理解のためのブログ

Go

GuardDutyの結果をLambda ( Go ) でSlackに通知する

はじめに Slack通知を設定 アーキテクチャ 通知結果 CloudWatchの設定 Lambda関数 ServerlessFrameworkを利用したデプロイ まとめ はじめに AWSのセキュリティ対策のひとつにGuardDutyというサービスがあります。 aws.amazon.com GuardDuty はインテリジェン…

Goの文法学習 ( 自分用Memoで適宜更新 )

Go

Map mapを作成 mapリテラルをつくる 値チェック key/valueを削除 key/valueの全取得と要素数の取得 error Slice (スライス) make()関数 append()関数 copy関数 構造体/JSON 構造体の初期化 構造体配列 ネスト構造体 ネスト構造の実用例 Marshalを使う Unmars…

CodeBuildの実行結果をLambda(Go)でSlackに通知する

目的 アーキテクチャについて 実装について Lambda関数とCloudWatchEventの作成 Lambda関数の実装 Slackの通知結果 デプロイ方法 まとめ 目的 AWS CodeBuildの実行結果をLambdaを使ってSlackに通知するようにしました。 前回のブログで、CodeBuildでMackerel…

Mackerel監視設定の管理をServerlessで自動化

目的 アーキテクチャについて 実装について Lambda ( Go ) APIGateway Mackerel LambdaのGoコード CodeBuild 機密情報の扱い Lambdaで作成した環境変数を利用 デプロイについて まとめ 目的 mackerelの監視設定を作成、削除、更新するときに mkrコマンドを利…

MackerelのCPU・Memoryアラート発生時にそれぞれの高負荷なプロセスをSlackに通知するツール ( 改修とAnsibleデプロイ )

修正・追加したこと 1. mackerelのapi-keyをsystemで環境変数から参照 3. Ansibleでツールを設定する tasks templates vars files まとめ 以前に以下の記事を作成した。この記事の内容からツールをアップデートした事について書きます。 yhidetoshi.hatenabl…

mackerel-client-go (OSS) にdelete user apiをコミットした

mackerel-client-goにuser delete userするapiが実装されていなかったので実装してからPull Requestを出した。 1営業日以内にレビューしていただき無事にマージされました!!(レビューしてくださった方に感謝です) mackerel-client-goや自作しているCLIツ…

mackerel-client-go (OSS) にコミットするためにやったことの備忘録

コミットするまでにやったことについて PRを出すまでの流れ CONTRIBUTION まとめ Mackerelを仕事とプライベートで利用しているのでちょっとした自分用のCLIツールが欲しくなりました。(mkrという公式のCLIは提供されています) CLIの実装はGo + mackerel-clie…

ore-mkrというMackerelのCLIツールを作った

Mackerelの運用を少し楽にするためにGoで自作運用ツールを作ってみた。ホストのステータスを変更したり、監視設定がどうなっているかの確認など、ちょっとした日々の運用作業をCLIでかつコマンドツールのPecoを組み合わせるとターミナルで楽に行えるのではと…

Goでスクレイピングするためにgoqueryを使い、Yahoo路線情報の遅延情報を取得してみる

やったこと goqueryについて Yahoo路線運行情報をスクレイピングする コードを読む Yahoo路線情報の遅延情報を取得する 参考 やったこと Goのプログラミング学習の一環としてスクレイピングするためにgoquery使ってみた。 goqueryについて GoDoc godoc.org G…

Go1.11から導入されたModulesを試す

Go

Goバージョン1.11からモジュール対応モードが導入された。そこで理解するために一度使ってみる。 $ mkdir go-mod-test $ cd go-mod-test $ cat hello.go package main import ( "fmt" "rsc.io/quote" ) func main() { fmt.Println(quote.Hello()) } $ export…

GoでnatureRemoのAPIレスポンス ( JSON ) をパースする

やったこと NatureRemoのAPIを実行する GoでJSON結果をパースする JSONをデコードする方法 ソースコード全体 ( GitHub ) 参考 やったこと GoでNatureRemoのAPIレスポンス結果をパースしたときの備忘録です。 natureRemoのAPIを叩き、レスポンス結果の気温、…

AWS LambdaでGoツールを作成したときにタイムゾーンに嵌った

やったこと AWS Lambdaはap-northeast-1(東京リージョン)でLambdaを作成してもタイムゾーンはUTCだった。 Go( Lambda )で現在時刻を利用する場合に参照するために備忘録的に残します。 Lambdaのタイムゾーンを東京にする 環境変数にセットする KEY: TZ VALUE…

AWS Lambda ( Go )でNatureRemoのセンサー情報をMackerelで可視化・監視して、アラートをLINEに通知してみた

やったこと ソースコード ( GitHub ) NatureRemoについて まずはAPI ( curl ) でデバイスのセンサー情報を取得する Goでデバイスのセンサー情報を取得する Mackerelにカスタムメトリクスを投稿する AWS LambdaにGoコードをデプロイしてMackerelにデータを投…

Go ( mackerel-client-go ) を利用してMackerelにカスタムメトリクスをPostする

やったこと mackerel-client-goについて Mackerelダッシュボードにサービス名を指定してサービスメトリックに投稿する mackerelにメトリクスをPostするコード 実行結果 MackerelダッシュボードにホストIDを指定してメトリクスを投稿する まとめ やったこと G…

MackerelCheckAutoRetirementFailツールを作った

やったこと 実装 GitHub ( ソースコード ) 実行方法 やったこと mackerelのauto-retirementに失敗し、ホストリストに存在するがメトリクスを取得できていないインスタンスを検出して通知させる 実装 ■ mackerel-client-goを利用 github.com 登録されて5分以…

GKEで実行するコンテナ ( Nginx-Proxy + Go ) を作成する

GKEで動かすコンテナ環境を用意する コンテナを作成して起動する DockerHubに登録する 次にやること GKEで動かすコンテナ環境を用意する ■ Nginx-Proxy + Golang のコンテナを作成する ■ ローカルディレクトリ構成 tree . . ├── docker-compose.yml ├── gola…

Go製のツール ( MackerelCPUAlertTool ) をAnsibleでEC2インスタンスにデプロイする

目的 Goで作成したインフラツールをAnsibleを使ってサーバにデプロイしたときの方法をまとめる。 今回デプロイするGoツールは以前に作成した以下のブログのものを利用する。 yhidetoshi.hatenablog.com 実行方法 systemdでservice/timerを作成してmackerel-a…

Cloud FunctionにgcloudでGoコードをデプロイする

CloudFunctionにGoをgcloudを利用してデプロイする デプロイ結果 CloudFunctionにGoをgcloudを利用してデプロイする $ gcloud components install beta $ export GO111MODULE=on ■ create repo of github ( github.com/yhidetoshi/gcloud-cloud-function-hel…

MackerelCPUAlertToolを作った

目的 実装 GitHub (ソースコード) Usage Slack通知の結果 まとめ 目的 MackerelでCPU使用率のアラートが発生した場合にSlackにCPU使用率の高いプロセスリスト、ホスト名、CPU使用率の内訳をPostさせる 実装 mackerel-client-go を利用してツールを作成 macke…

GoでAWSのAMIとSnapshotとLaunchConfigを自動削除するツールを作った

目的 削除ツールの作りと実行条件 GitHub ( ソースコード ) ターミナルで実行した結果 SSMパラメータのAMI-ID (削除しないAMI) Lambdaへのデプロイ手順 Lambdaに必要な設定 Lambdaでの環境変数値をセット Slack通知 GitHubにリリースする まとめ 目的 AWSでP…

GolangCIを使ってみる

使ってみる まとめ golangCI GolangCIとはGitHubのPullRequestに対してlintをかけてくれるGo言語用のCIサービス。 デフォルトで適用されるLint https://github.com/golangci/golangci-lint#enabled-by-default-linters 使ってみる https://golangci.com/ に…

Goでシステムリソース情報を取得するcloudfoundry/gosigarのコードをみてみる

Go

cloudfoundry/gosigarのコードをみる まとめ cloudfoundry/gosigarライブラリを使ってuptimeを取得するプログラム package main import ( "fmt" "github.com/cloudfoundry/gosigar" ) func main(){ uptime := sigar.Uptime{} uptime.Get() // UPTIME fmt.Pri…

Goでシステムリソース情報を取得する

Go

やること ソースコード まとめ やること Goでシステムリソースを取得してみる。 今回はライブラリを利用して取得してみる。利用したライブラリは以下です。 cloudfoundry/gosigar https://github.com/cloudfoundry/gosigar このライブラリを利用してリソース…

GoでAWSのBilling情報をグラフ化するmackerel-pluginを作った

明けましておめでとうございます。2019年最初の記事です。 Mackerelの公式サイト 開発環境と実行環境 今回作ったmackerel-plugin-awsbillingのソースコードは以下 EC2のUbuntuサーバに設定 mackerel-agentを設定 Mackerelダッシュボードのグラフを確認 まと…

GoでSlackにPostする

SlackにGo言語でMessageをPostするコードを書いたので備忘録です。 Slackにエラーログを送ったり、アラート通知やリソース情報通知などに活用する。 開発環境 Mac go1.11.2 Slack: WebHookURLが必要 SlackにPostするときにAPI仕様を確認する ( Attachment st…

Go製のテストツールGossを使ってみた

環境 インストール テストを作成する 実行する 普段はServerspecを利用していますが、Go製のテストツールがあることを知ったのでGo製のテストツールを使ってみました。 そのときの備忘録です。 環境 OS Amazon Linux インストール # curl -fsSL https://goss…

ore-awsというおれおれAWS-CLIツールをGoで作った

目的 活用したもの ツールを使うための準備 使い方(コマンドオプション) EC2 RDS ELB S3 Route53 Cloudwatch IAM おわりに 目的 AWSアカウント複数管理していると、個別にwebコンソールにログインするのが大変でwebコンソールでぽちぽちするのが手間だったり…

運用ツールとしてGo言語を使ってAWSの起動設定とAMI数を返すツールを作った

背景 課題 実行環境 main.go 実行結果 背景 AWS環境でインフラCIとして、CodePipeline + CodeBuild + CodeDeployを使っている CodeDeployでBlue/Greenデプロイをしていると起動設定がどんどん増えていく CodeBuildでPackerを動かしており、AMIがどんどん増え…