gcp

GCP billing export GA version has released

Google BigQueryへGCPのBilling情報を送っています。 Export GCP Billing data to Google BigQuery このbilling export機能について、先日メールで案内が配信されました。 内容は、billing export機能がGA(正式版)になり、それにともなってスキーマが変わるから移行してね、というものでした。ざっくり要約すると以下のような内容です。 暫くの間は新しいスキーマと古いスキーマ両方作成される 2018年1月に古いスキーマの作成が行われなくなるのでそれまでに既存のワークフローの更新が必要 具体的には以下のような変更があるとのことです。 productカラムがservice.descriptionにリネーム resource_typeカラムがsku.descriptionにリネーム start_timeとend_timeカラムがusage_start_timeとusage_

coreos

Install Container Linux to disk(What is Ignition?)

CoreOS社のLinuxディストリビューションであるCoreOSが、Container Linuxに名称変更しましたね(もう1年経つのか…)。 Self-Driving Kubernetes, Container Linux by CoreOS and Kubernetes 1.5 | CoreOS 今回Container LinuxをISOイメージからディスク(VMware)へインストールする機会があったのでやり方をメモします。以前とやりかたが変わっていたので。 😮 インストール方法 ISOイメージでブート後、coreosユーザでログインされるのでrootユーザに切り替えて以下のコマンドを実行することでディスクへインストール出来ます。 インストールするディスクのデバイスファイルを指定 stable版を選択 sudo su - root coreos-install -d /dev/sda

mysql

How to use .mylogin.cnf

.mylogin.cnfファイルを使うことでパスワードの入力をすることなく、MySQLへ認証できます。 MySQL :: MySQL 5.6 リファレンスマニュアル :: 4.2.6 オプションファイルの使用 .mylogin.cnfの注意事項 以下の条件を満たしていないと参照してくれませんでした。 mysql_config_editorコマンドを使って暗号化されたファイルとして存在する必要がある .mylogin.cnfの作成方法 以下のようにして作成できます。 mysql_config_editor set --host=localhost --login-path=local --user=localuser --password passwordの入力が求められ、

ghost

How to install Ghost on CentOS7 and MariaDB

少し前にGhost初のメジャーバージョンがリリースされました。 Attention Required! | Cloudflare Ghost 1.0は後方互換の無いアップデートで幾つもの大幅な変更がありました。 その中でGhostのインストール、設定、起動方法等も変わっています。1.0からはghost-cliを使ってGhostのインストール、設定、起動などができるようになりました。 ghost-cli Overview Ghost1.0をインストールするための環境として、以下が推奨されています。 Ubuntu 16.04 MySQL NGINX (minimum of 1.9.5 for SSL) Systemd Node

camp

OTOKOMAE CAMP #5

8/26,27に男前キャンプなるイベントがあり、参加してきました! 男前キャンプ 主催は水道橋にあるアウトドアカフェのBASE CAMPオーナーであるA-sukeさんです。BASE CAMPは会社から徒歩10分ちょいなのもあり、ちょくちょくお邪魔しています。 さて、私は男前目標として、 食材はなるべく釣ったり獲ったりする 現地で木の枝か何かを調達し、トライポッドを作ってみる いつもと違うタープの張り方をしてみる を心のなかで掲げていました。 その辺も含めて男前キャンプの様子を記録します。 出発〜集合 金曜日の深夜に友人と出発し、朝まで釣りをしていました。海がいつもより荒れていたようであまり釣れなかった…。ウミタナゴとカゴカキダイの小さいやつ数匹しか釣れず…。 あと友人がヒトデを釣っていましたがこいつはリリース!w あんまり釣れないので消波ブロックを探索し、マツバガイやイソガニ(たぶん)を獲っていました。 朝焼けがGoodでした。 磯遊び&食料調達

arukas

Moved from Arukas to hyper.sh

Arukasのベータサービスが終了したので移住先を探さねばなりません。 Arukas βサービス提供終了に関するお知らせ – Arukas そこで、少し前に会社のSlackでDockerマンが呟いてるのを見てオッとなったhyper.shを使ってみます。 Hyper.sh - On-demand Container, Per-Second Billing hyper.shもArukasのようなContainer-as-a-Serviceで、特徴は通常のLinuxコンテナは同一ホスト上のカーネルから複数立ち上げるのに対し、hyper.shはコンテナ毎に独立したカーネル上で動かしている点です。これにより、セキュアなコンテナ環境の提供を可能にしているようです。 また、コンテナの利点である起動スピードを殺さないように特別なハイパーバイザが使われているようです。 What is Hyper.sh | Hyper.sh User Guide あとはDockerボリュームを使えるのがありがたい(Arukasはβ版なのもありボリュームを使えなかった)

mysql

When will /usr/my.cnf be created?

先日、my.cnfに設定したsql_modeが効かなくて困った話をアップしました。 その作業中に、DBサーバによって/usr/my.cnfがあったりなかったりすることを発見しました(しかもMySQLのバージョンは同一)。 この怪奇現象を突き止めるためには、/usr/my.cnfを作成しているmysql_install_dbがいつ実行されているのか突き止める必要があります。 調べたところ、mysqldのinitスクリプトでmysql_install_dbを叩いていました。具体的にはstart()の中で叩かれていました。以下がmysql_install_dbの実行されていたブロックです。 if [ ! -d "$datadir/mysql" ] ; then # First,

mysql

sql_mode does not work

MySQLのsql_modeを設定する必要に迫られたので設定しようとしたらハマった…。MySQLのバージョンは5.6系です。OSはCentOS6系です。 MySQL :: MySQL 5.6 リファレンスマニュアル :: 5.1.7 サーバー SQL モード 手動で設定する方法 まずは手動で設定する方法。 現在設定されているsql_modeを確認する方法は以下。 SELECT @@GLOBAL.sql_mode; sql_modeを手動で設定する方法は以下。 例としてNO_ENGINE_SUBSTITUTIONを指定する場合 SET GLOBAL sql_mode

docker

Automatically build Docker images

Docker Hubには自動ビルド機能があって、GitHubに対して行われたアクション(ブランチの作成、マスターへのマージ)を契機にDocker Hub側でイメージの自動ビルドを走らせることが出来ます。 以下のようなメリットがあります。 Docker HubにDockerfileを設置することができる GitHubリポジトリのdescriptionやREADMEを読み込んで自動的にShort DescriptionとFull Descriptionを埋めてくれる イメージに対し自動でタグ付けしてくれる 手元でビルドを実行しpushする手間が省ける Dockerfileはこんな感じで表示されます。 今回は以下のような前提のもと、設定を行いました。 既にGitHubリポジトリが存在している 大まかな流れは以下です。 GitHubとDocker Hubを接続する Automated Buildの設定をする 1回目のビルドを手動で行う 自動ビルド設定の手順 GitHubとDocker Hubを接続する 以下のようにsettingsから設定します。 Automated Buildの設定をする 以下のように設定していきます。Docker

aws

AWS CLI on Docker

先日パイセンとAWS CLIをCircleCIから実行したいときにawsコマンドが使えるdockerイメージがあれば便利かもねみたいな話をしたので作ってみました。 既に同様のものはDocker Hubにありましたが最近自分でDockerイメージ作っていなかったのもあるので練習も兼ねて…。 GitHub - lorentzca/aws: AWS CLI on Docker. Docker Hubはこちら。 lorentzca/aws 用途としては以下のような場合に使いたい。 CircleCIなどで手軽にawsコマンド使いたい場合に使えそう Dockerから実行したい(環境を汚したくないとかで) pip入れるのが昔より楽だったので特に躓く箇所はなかった。 FROM alpine ARG pip_installer="https://bootstrap.pypa.io/get-pip.py&

terraform

Summary of Terraform v0.10

terraformのv0.10が出ましたね。 ✨ HashiCorp Terraform 0.10 | HashiCorp v0.10の概要とv0.9からの移行方法をメモしておきます。 v0.10の概要 以下の大きめの変更があるようです。 プロバイダの分離 多数のプロバイダの改善 State Environmentsの名前の変更 プロバイダの分離がだいぶ大きな変更ですね。今まではterraformのバイナリにプロバイダのリソースが含まれていましたが、これからはtarraformのコアのバイナリとプロバイダのバイナリが分離されます。 プロバイダのリソースはそれぞれのプロバイダ毎の単一のバイナリファイルとなり、terraformにインクルードされて使われる様になります。 また、terraformのリポジトリもコアのリポジトリとプロバイダのリポジトリで分離されるようになります。 Terraform Providers · GitHub このような変更を行った目的として、terraformを改善していく速度を加速させることが挙げられています。 今まではプロバイダのリソースがterraformのバイナリに含まれていたのでプロバイダのリソースに問題があれば都度修正バージョンを出さなければいけませんでしたが、プロバイダが分離されることでterraformのコアのバージョンとは無関係にプロバイダの開発できるようになりました。的なイメージでしょうか。 このお陰でプロバイダのバージョンをロックすることもできるようになっています。

aws

Terraform state file removed by S3 Lifecycle

こんにちわ。最近キャンプばっかり行っているのでブログ更新が滞っています。あかん! さて、このブログが動いているサーバはterraformでインフラの管理をしています。 terraformのstateファイルの管理はS3バックエンドを使っています。 Migration from terraform remote command to terraform backend system また、S3の設定でバージョニングとライフサイクルの設定をしていました。 Versioning terraform.tfstate この設定が原因でtfstateファイルが消えてしまったので記録しておきます…。 起きたこと terraform planを実行したら全てのリソースがcreateされる差分が出てしまいました。 急いでS3のバケットを見たところ、なんと空になっていました…。泣きながら削除済みオブジェクトを表示してみたところ、以下のように削除マーカーが設置されていました。削除マーカー以前のバージョンのtfstateファイルも見れる状態でした。 とりあえずtfstateファイルが見れる状態ではあったので落ち着きを取り戻しました…。 原因 前述の通り、S3のライフサイクルの設定で「

mackerel

Mix stacked graph and line graph with Mackerel

Mackerelで積み上げと線グラフを混在させることがUIからできるようになりました! エージェントインストール手順ページを刷新しました ほか - Mackerel ブログ #mackerelio カスタムメトリックとサービスメトリックが対象のようです。システムメトリック(mackerel-agentインストール時にデフォルトで取られるグラフ)ではUIから設定できませんでした。 やってみる こんな感じ。簡単! システムメトリックでも積み上げグラフ・線グラフを混在させる方法 さて、公式ブログでは「UI上で設定できるようになりました。」と、ちょっと含みのある表現がされていましたが、これは式によるカスタムグラフでは以前から可能だったからと思われます。 カスタマイズしたグラフを表示する - Mackerel ヘルプ システムメトリックで積み上げグラフ・線グラフを混在させたい場合はカスタムグラフを使えばOKです。stack(metrics)を使うことでこんな感じに混在させられます。 group(alias(

golang

Delete Go Map entry and rename Go Map key

Mapの操作を色々する機会があったのでまとめてみます。 The Go Programming Language Specification - Map_types それぞれのセクションごとに動作するコードのリンクがあります。play.golang.org上にあるので、その場で実行することができます。 ゴール pathみたいに/区切りの文字列をキーとして持っているMapに対し、特定の条件を持つキーを削除したり、キー名を変更する。 普通はそんなこと意識しないようにMap作っていくと思うんだけど人生は長い。Mapのキーをごにょごにょしたいときもある。 Mapの作成 いくつか作成方法はありますが今回は以下のように作成。このMapをごにょごにょしていきます。 func defineMap() map[string]int { m := map[string]int{

google

Convert markdown to Google Slide

少し前の話ですが、Decksetが無い環境で既存のDecksetで作成したスライドの手直しをする必要に迫られました。 Decksetが無いのでGoogle Slideに移行して作業しようとしたのですが、スライドのページが数十枚ほどあり、手でGoogle Slideに移すのはツライところでした。 そこで調べたところmd2googleslidesというツールがあったので使ってみました。 JavaScript製のツールみたいです。インストール方法は以下。 npm install -g md2gslides 使い方は簡単で以下のようにmd2gslidesコマンドにマークダウンファイルを渡してあげるだけです。 md2gslides hogehoge.md G Suiteのマイページのトップにスライドは作成されていました(確か)。 初回はプロンプトが開いてGoogleアカウントの認証があります。DecksetのようにHTMLタグは対応していないので、HTMLタグが入っているとエラーが出ます。また、![](./pic.jpg)のようなファイル挿入の構文にも対応していません。 エラーが出た箇所はエディタでマークダウンファイルを開いてまとめて置換してしましょう。 サポートされているマークダウンのルールは以下を参照。 Supported markdown rules

digitalocean

DigitalOcean released Cloud Firewalls

DigitalOceanにマネージドなファイアウォールが追加されました! ✨ Cloud Firewalls: Secure Droplets by Default 管理画面やAPIから設定できるファイアウォールで、設定はDigitalOceanのネットワーク層で適用されます(フィルタされたパケットはドロップレットまで届かない)。 この機能によってドロップレット毎にiptablesやfirewalldを設定する必要がなくなるのがうれしいですね。 sourceもしくはdestinationにはIPv4, IPv6, タグ, ドロップレット, ロードバランサを指定することができます。tagを指定することで楽かつ柔軟にスケールできそうですね。 terraformでも近いうち実装されそう。 resource_digitalocean_firewall.go: Add DO Cloud Firewalls (#15124) by keinohguchi · Pull Request #1 · terraform-providers/

mackerel

Post GCP Billing data to Mackerel with Node.js

Node.jsのBigQueryライブラリを使ってGCPのBillingを取得してみました。 Get GCP Billing with Node.js 次はこのBillingの情報をMackerelにサービスメトリックとして送ってみます。 Mackerel側のインターフェースの確認 サービスメトリックは以下のデータ形式で送れば良いみたいです。 [ <metricValue>, <metricValue>, … ] 詳細はこちら。 サービスメトリック - Mackerel API ドキュメント (v0) つまり、今回の場合は以下のようなデータを送れば良いみたいです。 [ {name: "gcp.monthly_cost", time:

gcp

Get GCP Billing with Node.js

Node.jsのBigQueryクライアントライブラリを使ってみました。 Node.js client library for Google BigQuery 今回はこれを使ってGCPのBillingデータを取得してみます。 ※ GCPのBillingデータをBigQueryに送る方法は以下。 Export GCP Billing data to Google BigQuery 以下のようなコードを書いてみます。 // Imports the Google Cloud client library // Instantiates a client var bigquery = require('@google-cloud/

sshd

Visualize illegal ssh access attempts and access source

/var/log/secureをBigQueryに送り始め、sshdへのアクセスがあるIPアドレスを多い順に集計してみたりしています。 Send secure log to BigQuery Visualization of IP address accessing sshd 今回は日毎にssh接続の試行失敗回数を集計して、それに対するIPアドレスの内訳も出してみます。 こんなクエリを作成してみます。 SELECT LEFT(FORMAT_UTC_USEC(UTC_USEC_TO_DAY(time * 1000000)), 10) AS day, COUNT(

arukas

Visualize CloudTrail with Traildash and Arukas

このブログが動いているサーバはDigitalOceanですが、terraformのbackendにS3やDynamoDBを使うなど、AWSのサービスも使っています。 必然的にIAMユーザを作成しアクセスキーを発行することになるので、CloudTrailでユーザの活動やAPIの使用状況を保存しています。 AWS CloudTrail (AWS API の呼び出し記録とログファイル送信) | AWS しかし、正直活用できていないです…。というのも、CloudTrailで保存されるログはjsonで、CloudTrail自身に特に可視化機能も同梱されていないのです。なのでログを取ってはみているものの見ることがないという…(良くない)。 そこで、何かいい感じの可視化ツールが無いか探してみたところ、Traildashというツールがありました。 GitHub - AppliedTrust/traildash: AWS CloudTrail Dashboard 今回はこのTraildashを使ってCloudTrailの可視化をしてみます。 Traildash has been retired

heroku

Re:dash no longer supports Heroku

Re:dashをHeroku上にデプロイして利用しています。 redash - ゆるふわキャンパー Re:dashのバージョンはv0.12で、いい加減古い(最新はv1.0.3)のでアップデートしようとしたのですが…リポジトリにProcfileが無い! 調べてみると、Herokuのサポートは公式ではしなくなるとのこと…。(´;ω;`) Remove Procfile.heroku - it's no longer up to date. · getredash/redash@0e68228 · GitHub 皆によく使われていたであろう、Herokuの無料枠での利用がスペック不足でできなくなるのが主な理由みたいです。

security

Visualization of IP address accessing sshd

/var/log/secureをBigQueryに送り始めました。 Send secure log to BigQuery 1日あたり十数MB分ほどのペースで溜まってきているようです。 これを使って何かしたいなということで、とりあえずsshdへアクセスしてきているIPアドレスを可視化してみます。 sshdへのアクセスのログはFailed keyboard-interactive/pam for root from <IPアドレス> port 46472 ssh2のような感じでメッセージ内にアクセス元のIPアドレスが記録されているので、これを使います。 以下のクエリを使います。 REGEXP_EXTRACTで正規表現に合致した文字列を抽出できるので頑張ってIPアドレスを抽出(数値1~3桁.数値1~3桁.数値1~3桁.

mackerel

Mackerel Meetup #10 Tokyo #mackerelio

行ってきた! Mackerel Meetup #10 Tokyo #mackerelio - connpass Microsoft Azure Integration と Windowsサポートの強化について いつも通りmackerelの紹介から。機能が増えてきたので紹介内容も多くなってきた! Microsoft Azure Integration と Windowsサポートの強化について。 azureの利用が拡大しているらしい 今後すぐazureインテグレーション追加される azure monitor apiカラメトリックを取得している windowsサポートの強化 インストールが簡単に 主要なプラグインのインストーラーを同梱 メモ帳でも設定変更できるようになったw 次世代mackerelについて。 夏過ぎくらいには出るぽい...! Mackerel + Azureで支えるエムティーアイのヘルスケアプラットフォーム

zapier

Customize Slack notifications template for new Disqus comments

Zapierを使って、Disqusにコメントが来たらSlackに通知するようにしています。 Notify Slack when commented on DISQUS 上記の記事で以下のようにぼやいていましたが、 でもどの記事に対してコメントされたかはわからない! そのへんも色々いじれるならそのうちやってみようと思います。(`・ω・´)ゞ 普通に設定できましたあああ!!しかもけっこう詳細にカスタマイズできた(´;ω;`) 以下のようにして設定できます。 ↓のような内容にしました。URLを展開(画像とか)する設定があったのでOFFにしました。 @コメント者 コメント内容 コメントのURL コメントされた日付 テストしてみます。 良い!!!これでかなりコメントの確認が楽になりました。✨