EC2インスタンスからパカパカログを検知して
cloudwatchに入れたいねという依頼があったのでやってみた。
苦労したところがあったのでメモ。
pythonのバージョン差異でエラーが出る出ないがあるようだった。
でも調べることが目的じゃないので精査してない。
自分の環境だとどうもpython 2.6だとエラーが出てるようだったので
いっそのこと3系でawslogs-agentが使えるようにした。
(後述)
あとからわかったけど2.6系でもいけたっぽい
また仕事の環境借りてやってたので
ところどころパスを修正して書き直してます。
なのでパスとしてつじつまが合うようにしてるけど
たまに合わないところがあるかもしれません。
そこはご容赦いただきたい。
一応ここを参考にしたけど、苦労した部分が多かったなあ。
http://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/logs/QuickStartEC2Instance.html
インストール手順
awslogs-agent-setup.pyを実行してみる
sudo mkdir /opt/awslogs_work cd /opt/awslogs_work/ curl https://s3.amazonaws.com/aws-cloudwatch/downloads/latest/awslogs-agent-setup.py -O sudo python awslogs-agent-setup.py --region ap-northeast-1
ここでなぜかエラー
sudo python awslogs-agent-setup.py --region ap-northeast-1 Launching interactive setup of CloudWatch Logs agent ... Step 1 of 5: Installing pip ...DONE Step 2 of 5: Downloading the latest CloudWatch Logs agent bits ... Traceback (most recent call last): File "awslogs-agent-setup.py", line 1317, in <module> main() File "awslogs-agent-setup.py", line 1313, in main setup.setup_artifacts() File "awslogs-agent-setup.py", line 858, in setup_artifacts self.install_awslogs_cli() File "awslogs-agent-setup.py", line 570, in install_awslogs_cli subprocess.call([AWSCLI_CMD, 'configure', 'set', 'plugins.cwlogs', 'cwlogs'], env=DEFAULT_ENV) File "/opt/python-env/lib/python2.7/subprocess.py", line 168, in call return Popen(*popenargs, **kwargs).wait() File "/opt/python-env/lib/python2.7/subprocess.py", line 390, in __init__ errread, errwrite) File "/opt/python-env/lib/python2.7/subprocess.py", line 1025, in _execute_child raise child_exception OSError: [Errno 2] No such file or directory
原因わかんねーよ
2.7 だとエラーになるみたい。(2.6だとOKだった)
エラー終了しちゃうけど続ける。
awslogs-agent-setup.py 実行することで
/var/awslogsができる。
python 3 を/var/awslogs/bin に入れる
awslogs-agent はpython 2.7 - 3.5じゃないと動かない(とどこかに書いてあった)
また、もうさすがにpythonは3系を使いたいので3系を入れる。
sqlite-develインストール
sudo yum install sqlite-devel
これはこの後にpython awslogs-agent-setup.py やると
ImportError: No module named '_sqlite3'
が出るため
python 3 を入れる
sudo mkdir -p /opt/python3_work/python3 cd /opt/python3_work/ sudo wget https://www.python.org/ftp/python/3.5.4/Python-3.5.4.tar.xz sudo xz -dv Python-3.5.4.tar.xz sudo tar xfv Python-3.5.4.tar cd Python-3.5.4 sudo ./configure --prefix=/var/awslogs/ && sudo make && sudo make altinstall # /var/awslogs/bin/python は2.6系だった。 # python が2.6にリンクされているので削除する cd /var/awslogs/bin sudo rm -f python2 python2.6 #デフォルトも名前を変えておく sudo mv python python_bk_26 sudo mv pip pip_bk_26 sudo ln -s python3.5 python sudo ln -s pip3.5 pip ##### awscliのインストール # デーモンを動かす時に /var/awslogs/bin/aws でエラーが出たことがあったので # 3系に入れなおしたあとに再度awscliを入れる sudo ./pip install awscli
もう一回awslogs-agent-setup.pyトライ
cd cd /opt/awslogs_work/ sudo /var/awslogs/bin/python awslogs-agent-setup.py --region ap-northeast-1 Launching interactive setup of CloudWatch Logs agent ... Step 1 of 5: Installing pip ...DONE Step 2 of 5: Downloading the latest CloudWatch Logs agent bits ... DONE ### aws アクセスキー情報は適切なものを入力する # --only-generate-config オプション入れれば再度confファイル作り直せる。 Step 3 of 5: Configuring AWS CLI ... AWS Access Key ID [****************XXXX]: AWS Secret Access Key [****************XXXX]: Default region name [ap-northeast-1]: Default output format [None]: #### 以降はawslogsでログの検知対象とするログファイルを指定する。 Step 4 of 5: Configuring the CloudWatch Logs Agent ... Path of log file to upload [/var/log/messages]: Destination Log Group name [/var/log/messages]: Choose Log Stream name: 1. Use EC2 instance id. 2. Use hostname. 3. Custom. Enter choice [1]: ### 検知するログのタイムスタンプのフォーマット # ここを間違えるとエラーが出まくるが、あとで書き直せる。 Choose Log Event timestamp format: 1. %b %d %H:%M:%S (Dec 31 23:59:59) 2. %d/%b/%Y:%H:%M:%S (10/Oct/2000:13:55:36) 3. %Y-%m-%d %H:%M:%S (2008-09-08 11:52:54) 4. Custom Enter choice [1]: #### ログのどこから検知してくか?だと思う # たぶん # From start of file :ファイルの最初から →アプリがまだ起動してなくて最初からcloudwatchに投げたい # From end of file : ファイルの最後から →アプリがすでに起動してて大量にログが書かれてるから、途中からcloudwatchに投げたい Choose initial position of upload: 1. From start of file. 2. From end of file. Enter choice [1]: More log files to configure? [Y]: n Step 5 of 5: Setting up agent as a daemon ...DONE ------------------------------------------------------ - Configuration file successfully saved at: /var/awslogs/etc/awslogs.conf - You can begin accessing new log events after a few moments at https://console.aws.amazon.com/cloudwatch/home?region=ap-northeast-1#logs: - You can use 'sudo service awslogs start|stop|status|restart' to control the daemon. - To see diagnostic information for the CloudWatch Logs Agent, see /var/log/awslogs.log - You can rerun interactive setup using 'sudo python ./awslogs-agent-setup.py --region ap-northeast-1 --only-generate-config' ------------------------------------------------------
起動を確認する
$ sudo service awslogs status (pid 8758) を実行中...
タイムフォーマットエラー
設定が終わると自動的にデーモンが起動して、おそらくタイムスタンプフォーマットがエラーだよと
ダーッと /var/log/awslogs.logに吐かれてると思う。
2017-12-12 15:13:32,198 - cwlogs.push.reader - WARNING - 5377 - Thread-4 - Fall back to previous event time: {'start_position': 238799, 'timestamp': 1513018394000, 'end_position': 238926}, previousEventTime: 1513018394000, reason: timestamp could not be parsed from message.
止める
$ sudo service awslogs stop Stopping system awslogs daemon
設定ファイルの修正
デフォルトは/var/log/messagesを見てるので修正
→別に消してもいいけど。。。
vi /var/awslogs/etc/awslogs.conf [/var/log/messages] log_stream_name = {instance_id} file = /var/log/messages #datetime_format = %Y-%m-%d %H:%M:%S # 2017-12-12T14:50:44.374863+09:00 # こんな風にしてみる datetime_format = %Y-%m-%dT%H:%M:%S.%f initial_position = start_of_file log_group_name = /var/log/messages buffer_duration = 5000
再度 起動するとエラーはでなくなる
sudo service awslogs start
時間のフォーマットなどはここが参考になった
www.yamamanx.com
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
(更新)
あとでやってみたところデフォルトで入ってるpython 2.6で下記のように実行してみたら、なんのエラーもなく実行できてしまった。
実は上述で書いてた下記のコマンドのpythonは仕事で使ってて別のパスに入ってたpythonでデフォルトのpythonでは実行してない。
ここで書くために単にパスを省いて書いてしまった。
んー デフォルトのpythonで何の問題もないじゃん。
curl https://s3.amazonaws.com/aws-cloudwatch/downloads/latest/awslogs-agent-setup.py -O sudo python awslogs-agent-setup.py --region ap-northeast-1
Amazon Web Services パターン別構築・運用ガイド 改訂第2版 (Informatics&IDEA)
- 作者: NRIネットコム株式会社,佐々木拓郎,林晋一郎,小西秀和,佐藤瞬
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2018/03/23
- メディア: 単行本
- この商品を含むブログを見る
Amazon Web Services 基礎からのネットワーク&サーバー構築 改訂版
- 作者: 玉川憲,片山暁雄,今井雄太,大澤文孝
- 出版社/メーカー: 日経BP社
- 発売日: 2017/04/13
- メディア: 単行本
- この商品を含むブログを見る