Azureでひっそりと動いてる割に重要なプロセスが見つかる！？


#きっかけ

Azure Recovery Serviceで特定のVMで何度もエラーになるので調査してました。
なぜか、50分前後でスナップショットエラーで停止してしまう。。。

![2accd63912198d11ea50f06af0dc525e.png](https://qiita-image-store.s3.amazonaws.com/0/8726/fdf63f98-34ae-87fa-8e37-5a49510526b2.png "2accd63912198d11ea50f06af0dc525e.png")

どこを探してもポータルから原因がわからないため、サポートへ連絡したら `waagent.log` を求められたのでナニモノかを調べてみた。

#waagent.logの中身

```
2015/11/04 19:15:51 ERROR:Retry=0
2015/11/04 19:15:51 ERROR:HTTP Req: POST /machine?comp=health
2015/11/04 19:15:51 ERROR:HTTP Req: Data=<?xml version="1.0" encoding="utf-8"?><Health xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><GoalStateIncarnation>3</GoalStateIncarnation><Container><ContainerId>xxx-xxx-xxx</ContainerId><RoleInstanceList><Role><InstanceId>xxxx-hostname</InstanceId><Health><State>Ready</State></Health></Role></RoleInstanceList></Container></Health>
2015/11/04 19:15:51 ERROR:HTTP Req: Header={'Content-Type': 'text/xml; charset=utf-8', 'x-ms-version': '2012-11-30', 'x-ms-agent-name': 'WALinuxAgent'}
2015/11/04 19:15:51 ERROR:HTTP Err: Status=503
2015/11/04 19:15:51 ERROR:HTTP Err: Reason=Service Unavailable
2015/11/04 19:15:51 ERROR:HTTP Err: Header=[('date', 'Wed, 04 Nov 2015 19:15:50 GMT'), ('connection', 'close'), ('content-type', 'text/html; charset=us-ascii'), ('content-length', '326'), ('server', 'Microsoft-HTTPAPI/2.0')]
2015/11/04 19:15:51 ERROR:HTTP Err: Body=<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
2015/11/04 19:15:51 ERROR:<HTML><HEAD><TITLE>Service Unavailable</TITLE>
2015/11/04 19:15:51 ERROR:<META HTTP-EQUIV="Content-Type" Content="text/html; charset=us-ascii"></HEAD>
2015/11/04 19:15:51 ERROR:<BODY><h2>Service Unavailable</h2>
2015/11/04 19:15:51 ERROR:<hr><p>HTTP Error 503. The service is unavailable.</p>
2015/11/04 19:15:51 ERROR:</BODY></HTML>
2015/11/04 19:15:51 ERROR:
```

ERRORではないモノもあったが、最後はまさかの `503 internal server error` で落ちていた。

[Azure status](https://azure.microsoft.com/ja-jp/status/#history)によると、上記の時にネットワーク障害があった模様。

```
11/4
Network Infrastructure - East Asia - Advisory

SUMMARY OF IMPACT: Between 20:25 and 22:02 on 04 Nov 2015 UTC some customers deployed in East Asia may have experienced network availability drops for their Azure services. During this time hosted services in the region may have experienced a minimal degradation in service availability. PRELIMINARY ROOT CAUSE: This has preliminarily been attributed to an underlying network device issue. MITIGATION: The issue self-healed and engineers have validated impact has subsided. NEXT STEPS: Networking teams will investigate the root cause of the networking device failure.
```

#エラー内容を調べてみた

issueにあがってた(汗)

[waagent dies when rate limited](https://github.com/Azure/WALinuxAgent/issues/95)

2.1.2で対応(2015/11/10時点)とのこと...

#waagentとはそもそも何なのか

1. https://github.com/Azure/WALinuxAgent
1. [Azure Linux エージェント ユーザー ガイド](https://azure.microsoft.com/ja-jp/documentation/articles/virtual-machines-linux-agent-user-guide/)

仮想マシンと Azure ファブリック コントローラーとの相互動作を管理するための機能のようだが、今回の事象で影響がありそうだったのが下記の部分。

```
VM 拡張機能
* Microsoft やパートナーによって作成されたコンポーネントを Linux VM (IaaS) に挿入し、ソフトウェアおよび構成を自動化
* https://github.com/Azure/azure-linux-extensions にVM 拡張機能の参照実装
```

リポジトリを見てみたら `VMBackup` というところにモジュールが。。。

これが無いと **キャプチャするときにエラーになる** っぽい


#確認したポイント

1. スナップ・ショット(リカバリサービス/キャプチャ)に関連する処理がエラー
2. 拡張機能が表示されていることを確認
3. waagentがvmで起動していることを確認
  * [CentOS] `ps aux|grep waagent`
     * (process) python /usr/sbin/waagent -daemon
4. /var/log/waagent.logの内容を確認
5. waagent --version でバージョンを確認
  * 2015/11/10時点で2.0.14が最新
  * [UPDATEが必要な場合](https://azure.microsoft.com/ja-jp/documentation/articles/virtual-machines-linux-update-agent/)

#まとめ

結局これがわかるのに１週間も費やしてしまいました。リカバリサービス以外にも管理用に動いているようなので、監視と定期的なupdateをする必要がありそうです。