zuntan02のはてなブログ

備忘録的なものです。時々職場の技術者ブログにも転記してますが、メインはこちらで。

【AWS】AWSからRDSサーバの再起動予告が来たけどリスケされたメモ

【流れ】

  • AWSから指定期間中、メンテナンスウィンドウでマシンの再起動があるよ(だけどMultiA-Zにしておけばフェイルオーバー時間の停止で済むよ)と予告があった。
  • SingleA-ZなRDSだったので、該当期間のメンテナンスウィンドウ前にRDSをMuitiA-Z化した(サービス停止なし)。
  • が、該当時間を過ぎても再起動されていない(failoverしてない、AZが変わっていない)
  • その週の終わりころに「再起動できなかったので翌週やります」という内容の連絡

 →SingleA-Zに戻した(サービス停止なし)。

  • 翌週のメンテナンスウィンドウ前に再度MultiA-Z化
  • 今度はメンテナンスウィンドウで再起動された。フェイルオーバー中20秒ほど重かった様だがエラーなし
  • RDSのフェイルオーバーおよび再起動が完了したのを確認してSingleA-Zに戻した
■最初の案内メール

One or more of your Amazon RDS DB Instances have been scheduled to receive system upgrades during the maintenance window you have chosen as per the schedule below.
(中略)
The maintenance activities are planned during 2017-5-5 21:00 UTC (Friday) to 2017-5-12 20:59 UTC (Friday).

Please note that while the system upgrades complete, your database will have an availability impact for a few minutes during your maintenance window. For Multi-AZ deployments, this impact is limited to the amount of time it takes for a failover to complete. Therefore, please cross check your maintenance window settings to ensure that they are set as per your needs using the schedule above.

Google翻訳
1つまたは複数のAmazon RDS DBインスタンスが、以下のスケジュールに従って選択したメンテナンス期間中にシステムアップグレードを受けるようスケジュールされています。
(中略)
メンテナンス活動は、2017-5-5 21:00 UTC(金曜日)〜2017-5-12 20:59 UTC(金曜日)に計画されています。

システムのアップグレードが完了している間は、メンテナンス期間中にデータベースの可用性が数分間影響を受けることに注意してください。マルチAZ配備の場合、この影響はフェイルオーバーが完了するまでに要する時間に制限されます。したがって、上記のスケジュールを使用して、必要に応じてメンテナンスウィンドウの設定を確認してください。

■再実行案内

Due to unexpected circumstances, we could not perform maintenance during this period. The upgrades for the resources listed below will now occur between 2017-5-12 21:00 UTC (Friday) and 2017-5-19 20:59 UTC (Friday).

(Google翻訳)
予期せぬ事態のために、この期間中はメンテナンスを行うことができませんでした。下記のリソースのアップグレードは、UTC(金曜日)21:00 UTC(金曜日)と2017-5-19 20:59 UTC(金曜日)の間に行われます。

対象の期間を過ぎても強制メンテナンスが実行されない場合はこんなパターンかもしれません。
メモまで。

【Wii修理】Wiiのピックアップレンズ交換したメモ201705

【まとめ】

長年使ってたWiiがディスクを読み込まなくなってきた。
モーターの高さ調整でピックアップの距離を変更
ピックアップレンズ横のネジ調整
では解決しなかったので、
ピックアップレンズの交換
を行ったところ、サクッと復活した。長期間使っててだんだんディスク読み込まなくなってきた、って人は、上記ネジによる調整は時間の無駄かも(自分はネジをいじりすぎて元の位置が分からなくなったりして、結局まる1日くらい捨ててしまった……)。ピックアップレンズ(1200円くらい)を買って交換するのが良さそうです。

分解手順は上記リンクからどうぞ(手抜)。

【購入品メモ】

Wii 修理用ピックアップレンズ Wii全型番対応 RAF-3350

「全型番対応」とあるけど、実際は

  • RAF-3350


  • RAF-3355

の2種類があるようなので、Wiiを分解した時点でレンズユニットのフィルムケーブルに貼ってあるQRコードで型番を確認してから購入しましょう。

交換用レンズユニットが届いたら
・フィルムケーブルの中央にある静電気防止のショート回路(半田の粒)をぺりっと剥がしてそこだけ断線させる。
 →半田ゴテでやると、余計な個所を焼いちゃうかもしれないので、爪でぺりっと剥がしたほうがいいような気がします。
・旧レンズの横についてる白い位置決めパーツを取り外して、新レンズに取り付ける

で、元通りに組み立てればOK。

久々にお値打ちな感じの修理で楽しかった。

【Mattermost】Slack用のGAS秘書botをMattermostに向けたメモ

【前提】

既に
qiita.com
を参考に、GASからSlack向けにメッセージを投げるbotがあったので、それをMattermostに向けたときのメモです。


【サマリ】

01.[システムコンソール]で[カスタム統合機能]を諸々有効にする
02.アカウントの[統合機能]で[内向きのウェブフック]を作成
03.botのPOST処理を修正

【作業メモ】

01.[システムコンソール]で[カスタム統合機能]を諸々有効にする

f:id:zuntan02:20170425185654p:plain

内向きのウェブフックを有効にする: 有効
外向きのウェブフックを有効にする: 有効
カスタムスラッシュコマンドを有効にする: 有効
OAuth 2.0サービスプロバイダーを有効にする: 無効
統合機能の管理を管理者のみに制限する:無効
★今回は利用者に自由に使ってもらう意図で無効化していますが、運用方針に合わせてください。
統合機能によるユーザー名の上書きを許可する:有効
統合機能によるプロフィール画像アイコンの上書きを許可する:有効
★[ユーザー名の上書き]と[プロフィール画像アイコンの上書き]を両方有効にするとフィッシング攻撃を許してしまう可能性があります。今回は利用者が限られているため有効としていますが、運用方針に合わせてください

02.アカウントの[統合機能]で[内向きのウェブフック]を作成

  • アカウントメニューから[統合機能]

f:id:zuntan02:20170425185716p:plain

  • [内向きのウェブフック]を作成

f:id:zuntan02:20170425185724p:plain

  • タイトルと出力先のチャンネルを指定

f:id:zuntan02:20170425185731p:plain
→ウェブフック用のURLが払い出されます。

03.botのPOST処理を修正

payloadに乗せるアイテムが一部異なる

[メモ] SlackとMattermostそれぞれのincomingWebhookへのポスト方法の違い – Nobwak's Lair


例)
"icon_emoji" : ":information_desk_person:"

"icon_url":"画像のURL"

とか


上記を変えてもPOSTでエラー。
<ウェブフックURL>のリクエストに失敗しました(エラー: 400)。サーバー応答の一部: {"id":"web.incoming_webhook.parse.app_error","message":"外部からのデータを解析できません","detailed_error":"","request_id":(中略)(応答の全文を見るには muteHttpExceptions オプションを使用してください)

などとなった。postにcontentTypeが必要だった。

   'contentType': 'application/json',

参考:
Class UrlFetchApp  |  Apps Script  |  Google Developers
のMake a POST request with a JSON payload.のところ。

というわけで(この秘書botに関しては)POST周りは以下のようにしたら動いたよというメモでした

//slackへポスト
function postSlack(payload)
{
  // POSTオプション
  var options = {
    "method" : "POST",
    "payload" : JSON.stringify(payload)
  }

  // アクセス先
  var url = "https://hooks.slack.com/services/XXXXXX/XXXXXX/XXXXXXXXXXXXXXX";
  // POSTリクエスト
  var response = UrlFetchApp.fetch(url, options);
  // HTML結果を取得(引数のcharsetは設定したほうが良い)
  var content = response.getContentText("UTF-8");
}

//mmostへポスト
function postMmost(payload)
{
  // POSTオプション
  var options = {
    "method" : "POST",
    "contentType": "application/json",
    "payload" : JSON.stringify(payload)
  }

  // アクセス先
  var url = "https://hogehoge/hooks/XXXXXXXXXXXXXXXXXXXXXXXXXXX";
  // POSTリクエスト
  var response = UrlFetchApp.fetch(url, options);
  // HTML結果を取得(引数のcharsetは設定したほうが良い)
  var content = response.getContentText("UTF-8");
}

以上、何か参考になれば。

【Linux】find | xargs cpでヒットするファイルを階層・タイムスタンプを保ったままコピー

■コマンド
ここ3日分のファイルを対象に、階層を保ったままコピー

find . -mtime -3 -type f -print0 | xargs -0 cp --parents -p -t 宛先ディレクトリ


■オプションメモ

find -print0:-print0オプションを有効にすると区切り文字がスペースから \0 に変更されます
xargs -0:-0オプションを指定されると \0 を区切り文字として扱います

cp --parents  use full source file name under DIRECTORY
cp -p = --preserve=mode,ownership,timestamps
cp -t --target-directory=DIRECTORY

【AWS】RDS(MySQL)のUpgradeについて、リードレプリカと本体とどちらを先にUpgradeするか問題

■結論

リードレプリカを先にUpgradeする必要がある。

■検証

→DBインスタンスの変更でマスタ側のみUpgradeしようとすると以下のメッセージ

この DB インスタンスには 1 つまたは複数のリードレプリカがあります。すべての対応するリードレプリカのストレージが DB インスタンスのものと同じ(またはそれ以上)であることを確認してください。また、すべての対応するリードレプリカのエンジンのバージョンが DB インスタンスのものと同じであることも確認してください。<リードレプリカ名>

→そのままDBインスタンスの変更を実施

One or more of the DB Instance's read replicas need to be upgraded: <リードレプリカ名>(Service: AmazonRDS; Status Code: 400; Error Code: DBUpgradeDependencyFailure; Request ID: hogehoge)

リードレプリカを先にUpgradeする必要があることが分かる。

【NewRelic】WindowsServerへのNewRelic監視エージェント インストール

【参考】
docs.newrelic.com

【作業】
■NewRelic Servers for Windows

1)NewRelic-[Servers]-[Add more]-[Choose a platform]でWindowsを選択
 →下にmsiとかのDLリンクが出てくるので必要なものをDL。ここでは
 [NewRelicServerMonitor_x64.msi]をDL

2)上記をWindowsServerでインストール
 インストーラの途中でライセンスキーを聞かれるので用意しておくこと


以上

【AmazonLinux】gitlabのバージョンアップ(8.10.0→9.0.2)メモ

zuntan02.hateblo.jp
この環境がふるくなってきたので最新化したら例によって苦しめられたのでメモ。

# Update前の状態を確認
gitlabのrootログインにて
[管理エリア]-[概要]-[Components]でバージョンを確認

GitLab 8.10.0
GitLab Shell 3.2.0
GitLab API v3
Git 2.7.4
Ruby 2.1.8p440
Rails 4.2.7
PostgreSQL 9.2.17

■Node.jsが入っていない環境だったのでインストール(ないと日本語化パッチ適用中にエラーになった)
# Node.jsのインストール
# 先にnvm(Node Version Manager)をインストールする
su -
cd ~
git clone https://github.com/creationix/nvm.git ~/.nvm && cd ~/.nvm && git checkout `git describe --abbrev=0 --tags`

# パスを通す
. ~/.nvm/nvm.sh
nvm --version
# 0.33.1

# 以下を、~/.bashrc 等に追記して、起動時に読み込むようにしておく
続きを読む