オンプレサーバをaws SystemManagerで管理する

オンプレのサーバをCloudWatchでもりもり監視していると台数が増えてきますね？
1000台とかになったときにメトリクスを調整するのに設定変更を1台1台やるのはつらいじゃないすか。
そんなあなたのためにawsのSystemManagerのノード管理→Run Commandっていうので、awsコンソールから一斉にコマンドをなげることができます。

すでにパラメータストアにcloudwatch-agentの設定ファイルを保存してあるのでSSMエージェントをインストールしてSystemManagerのハイブリッドアクティベーションで登録するだけです。

https://qiita.com/murata-tomohide/items/3e66d63b21c08d6481a2


# tl;dr

オンプレのサーバにSSMマネージャを入れて、ハイブリッドアクティベーションをして、CloudWatchAgentの設定ファイルを更新します。fedora33で試しています。

# SSMマネージャインストールと登録

下記のまんまでした。

https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/sysman-install-managed-linux.html


直接URLからインストールします。

```
[root@deroris ~]# dnf install https://s3.ap-northeast-1.amazonaws.com/amazon-ssm-ap-northeast-1/latest/linux_amd64/amazon-ssm-agent.rpm
```

一度止めます。

```
[root@deroris ~]# systemctl stop amazon-ssm-agent
```

awsコンソールのノード管理→ハイブリッドアクティベーションからアクティベーションを登録します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/56925/720587e6-94e5-7c7c-ce83-c17e30e817a8.png)

何も入れなかった。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/56925/5217c634-e7a1-d24f-37fa-d31b80ab1f56.png)

作成すると上にActivation CodeとActivation IDが出てくる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/56925/07fb1ea2-158a-6b54-1d7f-85bb8758fe98.png)

それをサーバで流す。一回やってるのでexistって言われてる。

```
[root@deroris ~]# amazon-ssm-agent -register -code "Dn1mldF8fahPooTKLd5C" -id "88f4a5bc-a7d2-4e95-9cde-3a692dd3b420" -region "ap-northeast-1"
Error occurred fetching the seelog config file path:  open /etc/amazon/ssm/seelog.xml: no such file or directory
Initializing new seelog logger
New Seelog Logger Creation Complete

Instance already registered. Would you like to override existing with new registration information? [Yes/No]: Y 
2021-07-29 19:02:09 INFO Successfully registered the instance with AWS SSM using Managed instance-id: mi-0d10b19839841c0ab
```

数秒で登録済みインスタンスが1になる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/56925/0058198f-e616-a604-46b5-5772decb91fa.png)


サービスを開始してステータスを確認すべし。サービス開始するの忘れるので注意。

```
[root@deroris ~]# systemctl start amazon-ssm-agent
[root@deroris ~]# systemctl status amazon-ssm-agent
● amazon-ssm-agent.service - amazon-ssm-agent
     Loaded: loaded (/etc/systemd/system/amazon-ssm-agent.service; enabled; vendor preset: disabled)
     Active: active (running) since Thu 2021-07-29 19:03:51 JST; 2s ago
   Main PID: 1793358 (amazon-ssm-agen)
      Tasks: 21 (limit: 19076)
     Memory: 19.7M
        CPU: 165ms
     CGroup: /system.slice/amazon-ssm-agent.service
             ├─1793358 /usr/bin/amazon-ssm-agent
             └─1793389 /usr/bin/ssm-agent-worker

 7月 29 19:03:52 deroris.local amazon-ssm-agent[1793358]: 2021-07-29 19:03:51 INFO no_proxy:
 7月 29 19:03:52 deroris.local amazon-ssm-agent[1793358]: 2021-07-29 19:03:51 INFO Agent will take identity from OnPrem
 7月 29 19:03:52 deroris.local amazon-ssm-agent[1793358]: 2021-07-29 19:03:51 INFO [amazon-ssm-agent] using named pipe channel for IPC

```

ちゃんと動いていればフリートマネージャに表示される。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/56925/00c61c4b-3cc8-c603-cece-25aa9c0900c2.png)

これでawsの配下に。


# リモートからコマンドを流す

CloudWatchAgentを更新してみます。

パラメータストアのメトリクスを編集します。namespaceにNew2を入れました。（画像はまだNew）


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/56925/218ab646-c4d8-5d20-3167-f625188c16b1.png)


ノード管理→Run CommandでAmazonCloudWatch-ManageAgentを選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/56925/3e17e11e-d92c-b96b-7871-bb0a278a8ce5.png)

コマンドパラメータで画像のように入力します。
ModeをonPrem、Optional Configuration Locationにパラメータストアの設定名を入れます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/56925/e552c0ac-47a4-72e7-efd3-5a71ccbfe4c2.png)

ターゲットに当該のノードを選択します。（ここに表示されていなければSSMの登録がうまくいってない）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/56925/a5b2c968-9e80-6245-c4ea-3440a9d4cd11.png)

コマンド出力をS3に保存したりできる。

んで実行

うまくいってればすぐに成功って表示されてくると思います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/56925/e3efa746-9158-3beb-f1c2-f5ed02863605.png)


あとは、CloudWatchで更新した項目（Namespace）が反映されているかみてみてください。


# まとめ

サーバをセットアップするときはSSMエージェントを設定しておけばあとから楽になる。
オンプレやvps等のサーバがいっぱいある人にとっては便利かも。
問題なのは、そこまでAWSにロックインされていいのかってことか。
エージェント系なので、ポートを開けたりする必要はないからそのへんは楽かな。


※↑で使ったアクティベーションコード等はすでに捨てた。