awscli cloudwatch日志插件
awscli-cwlogs的Python项目详细描述
这个awscli插件提供了pull、push和filter命令来访问AWS CloudWatch日志服务
awscli cwlogs包在python版本上工作:
- 2.6.5及以上
- 2.7.x及以上
- 3.3.x及以上
安装
安装awscli cwlogs的最简单方法是使用pip:
$ pip install awscli-cwlogs
或者,如果您没有安装在virtualenv:
$ sudo pip install awscli-cwlogs
如果您安装了awscli cwlogs并希望升级到最新版本 您可以运行:
$ pip install --upgrade awscli-cwlogs
这将安装awscli cwlogs包以及所有依赖项,包括awscli。
注意!
如果您安装了awscli,安装awscli cwlogs可能会升级或降级awscli,具体取决于您所拥有的awscli版本是否比awscli cwlogs所依赖的版本旧或新。安装awscli cwlogs后,可以运行pip install --upgrade awscli来升级awscli,尽管最新的awscli可能无法与插件一起正常工作。如果您想从现有的AWSCLI中隔离AWSCLI CW日志插件,则可以考虑^ {TT6}$。请注意,awscli默认情况下将其配置存储到~/.aws/config(或Windows上的%UserProfile%.awsconfig)中,若要隔离配置,可以定义单独的配置文件export AWS_CONFIG_FILE=/path/to/config_file
开始
在使用awscli cwlogs插件之前,需要首先configure awscli。
完成后,要启用awscli cwlogs,可以运行:
$ aws configure set plugins.cwlogs cwlogs
上面的命令将下面的部分添加到aws配置文件中:
[plugins] cwlogs = cwlogs
要验证awscli cwlogs插件是否已正确安装和配置,可以运行:
$ aws logs help
您将从可用命令中看到pull、push和fitler命令,否则表示CWLogs插件未正确注册。
如果看到ImportError: No module named cwlogs错误,则表示CWLogs插件已在配置文件中注册,但未安装该插件。
示例
按下命令
您可以使用aws logs push help检查支持的选项。 cloudwatch日志代理使用push命令,请检查CloudWatch Logs Agent Reference以查看所有受支持的选项,或者是否希望保持push命令运行。
- 将单个日志事件上载到CloudWatch日志服务如果不存在日志组和日志流,则自动创建日志流和日志流。
echo "Hello World" | aws logs push --log-group-name MyLogGroup --log-stream-name MyLogStream
- 下面的{TT2}命令将日志事件从一个Syslog文件推到日志流,该日志流是由{tT1616}和^ {tT1717}$指定的,并在推导出所有日志事件之后退出。此命令不推送增量日志事件。为此,请使用tail -f file | aws logs push ...。
cat /var/log/kernel.log | aws logs push --log-group-name /var/log/syslog --log-stream-name myhost1 --datetime-format '%b %d %H:%M:%S' --time-zone LOCAL --encoding ascii
- 下面的push命令根据配置文件从多个文件推送日志事件如果file的状态不可用,则initial_position决定从何处开始。
aws logs push --config-file push.cfg
[general] state_file = push-state [logstream-messages] datetime_format = %b %d %H:%M:%S time_zone = LOCAL file = /var/log/messages file_fingerprint_lines = 1 log_group_name = /var/log/messages log_stream_name = {hostname} initial_position = start_of_file encoding = utf_8 buffer_duration = 5000 [logstream-system.log] datetime_format = %b %d %H:%M:%S time_zone = UTC file = /var/log/system.log file_fingerprint_lines = 1-3 log_group_name = /var/log/system.log log_stream_name = {hostname} initial_position = end_of_file encoding = ascii buffer_duration = 10000
拉动命令
您可以使用aws logs pull help检查支持的选项
- 下面的{TT1}$命令从一个日志流开始从{TT25} $和^ {TT26} $指定的日志事件,并在拉取所有日志事件之后退出日志事件。
aws logs pull --log-group-name website1/access_log --log-stream-name webhost-001 --start-time 2014-01-23T00:00:00Z
- 当使用--end-time选项调用时,以下pull命令将提取2014-01-23T00:00:00Z(包含)和2014-01-23T01:00:00Z(不包含)之间的所有日志事件。
aws logs pull --log-group-name website1/access_log --log-stream-name webhost-001 --start-time 2014-01-23T00:00:00Z --end-time 2014-01-23T01:00:00Z
aws logs pull --log-group-name website1/access_log --log-stream-name webhost-001 --start-time 2014-01-23T00:00:00Z --follow
- 使用--output-format选项调用时,以下pull命令仅输出消息字段。默认情况下,输出格式为"{timestamp} {message}"。摄取时间可以包含在"{timestamp} {ingestionTime} {message}"中
aws logs pull --log-group-name website1/access_log --log-stream-name webhost-001 --start-time 2014-01-23T00:00:00Z --output-format "{message}"