aws操作日志

阅读: 评论:0

aws操作日志

aws操作日志

aws操作日志

日志收集对于正确分析生产中的问题至关重要。 必须有一个用于搜索所有服务器上的异常并收到有关异常通知的接口。 好吧,如果您有一台服务器,则当然可以轻松地将其SSH并检查日志,但是对于较大的部署,集中收集日志比记录10台计算机以查找“发生的情况”更可取。

有很多方法可以做到,大致分为两组-第三者服务和您要安装的软件。

第三方(如果需要,也可以“基于云”)的日志收集服务包括Splunk , Loggly , Papertrail , Sumologic 。 它们非常易于设置,您只需为使用的东西付费。 基本上,您将每条消息(例如,通过自定义的logback附加程序)发送到提供者的端点,然后使用仪表板来分析数据。 在许多情况下,这是首选的方式。

但是,在其他情况下,使用第三方服务存储公司特定的数据可能会令公司政策不满意,或者可能会不希望有额外的费用。 在这种情况下,需要花费更多的精力来安装和管理内部日志收集软件。 它们以类似的方式工作,但是实现细节可能有所不同(例如,不是使用带有附加程序的消息向目标端点发送消息,而是使用某种代理程序的软件收集本地日志并进行汇总)。 开源选项包括Graylog , FluentD , Flume , Logstash 。

经过快速研究,我认为Graylog最适合我们的需求,因此以下是对AWS上安装过程的描述(尽管无论基础架构如何,第一部分都适用)。

首先要看的是Graylog提供的即用型映像 ,包括docker,openstack,vagrant和AWS。 不幸的是,AWS版本有两个缺点–使用Ubuntu,而不是Amazon AMI。 这不是一个大问题,尽管您可能需要重写堆栈中使用的一些通用脚本。 另一个是dealbreaker –启动它时,尽管声称应该运行,但它没有运行Web界面。 仅启动mongodb,elasticsearch和graylog-server。 有2个实例–一个Web,一个用于其余实例,会使事情复杂化,因此我选择了手动安装。

Graylog有两个组件–服务器,用于处理输入,索引和搜索;以及Web界面,它是与服务器通信的漂亮UI。 Web界面使用mongodb作为元数据,而服务器使用elasticsearch存储传入的日志。 以下是处理安装的bash脚本(CentOS)。 请注意,没有“ sudo”,因为初始化脚本在AWS上以root用户身份执行。

#!/bin/bash# install pwgen for password-generation
yum upgrade ca-certificates --enablerepo=epel
yum --enablerepo=epel -y install pwgen# mongodb
cat >/pos.po <<'EOT'
[mongodb-org]
name=MongoDB Repository
baseurl=/
gpgcheck=0
enabled=1
EOTyum -y install mongodb-org
chkconfig mongod on
service mongod start# elasticsearch
rpm --import  >/pos.po <<'EOT'
[elasticsearch-1.4]
name=Elasticsearch repository for 1.4.x packages
baseurl=.4/centos
gpgcheck=1
gpgkey=
enabled=1
EOTyum -y install elasticsearch
chkconfig --add elasticsearch# configure elasticsearch 
sed -i -- 's/#cluster.name: elasticsearch/cluster.name: graylog2/g' /etc/l 
sed -i -- 's/#network.bind_host: localhost/network.bind_host: localhost/g' /etc/lservice elasticsearch stop
service elasticsearch start# java
yum -y update
yum -y install java-1.7.0-openjdk
update-alternatives --set java /usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/java# graylog
wget .
tar xvzf graylog-1. -C /opt/
mv /opt/graylog-1.0.1/ /opt/graylog/
cp /opt/graylog/bin/graylogctl /etc/init.d/graylog
sed -i -e 's/GRAYLOG2_SERVER_JAR=${GRAYLOG2_SERVER_JAR:=graylog.jar}/GRAYLOG2_SERVER_JAR=${GRAYLOG2_SERVER_JAR:=/opt/graylog/graylog.jar}/' /etc/init.d/graylog
sed -i -e 's/LOG_FILE=${LOG_FILE:=log/graylog-server.log}/LOG_FILE=${LOG_FILE:=/var/log/graylog-server.log}/' /etc/init.d/graylogcat >/etc/init.d/graylog <<'EOT'
#!/bin/bash
# chkconfig: 345 90 60
# description: graylog control
sh /opt/graylog/bin/graylogctl $1
EOTchkconfig --add graylog
chkconfig graylog on
chmod +x /etc/init.d/graylog# graylog web
wget .
tar xvzf graylog-web-interface-1. -C /opt/
mv /opt/graylog-web-interface-1.0.1/ /opt/graylog-web/cat >/etc/init.d/graylog-web <<'EOT'
#!/bin/bash
# chkconfig: 345 91 61
# description: graylog web interface
sh /opt/graylog-web/bin/graylog-web-interface > /dev/null 2>&1 &
EOTchkconfig --add graylog-web
chkconfig graylog-web on
chmod +x /etc/init.d/graylog-web#configure 
mkdir --parents /etc/graylog/server/
cp /opt/f.example /etc/graylog/f
sed -i -e 's/password_secret =.*/password_secret = '$(pwgen -s 96 1)'/' /etc/graylog/fsed -i -e 's/root_password_sha2 =.*/root_password_sha2 = '$(echo -n password | shasum -a 256 | awk '{print $1}')'/' /etc/graylog/fsed -i -e 's/application.secret=""/application.secret="'$(pwgen -s 96 1)'"/g' /opt/graylog-web/f
sed -i -e 's/graylog2-server.uris=""/graylog2-server.uris="http://127.0.0.1:12900/"/g' /opt/graylog-web/fservice graylog start
sleep 30
service graylog-web start

您可能还希望为邮件设置TTL(自动过期),这样就不会永远存储旧日志。 这是如何做

# wait for the index to be created
INDEXES=$(curl --silent "localhost:9200/_cat/indices")
until [[ "$INDEXES" =~ "graylog2_0" ]]; dosleep 5echo "Index not yet created. Indexes: $INDEXES"INDEXES=$(curl --silent "localhost:9200/_cat/indices")
done# set each indexed message auto-expiration (ttl)
curl -XPUT "localhost:9200/graylog2_0/message/_mapping" -d'{"message": {"_ttl" : { "enabled" : true, "default" : "15d" }}}'

现在,您可以在实例上运行所有内容。 然后,您必须做一些特定于AWS的事情(如果使用CloudFormation,那将包括一堆JSON)。 清单如下:

  • 您可以有一个包含一个实例的自动扩展组,也可以有一个实例。 我更喜欢ASG,尽管另一个更简单。 如果实例死亡,ASG将为您提供自动重生。
  • 设置要在实例/ asg的启动配置的UserData中调用的上述脚本(例如,首先从s3获取)
  • 允许UDP端口12201(默认日志记录端口)。 对于实例/ asg安全组(入站),对于应用程序节点安全组(出站),以及作为VPC的网络ACL,都应该发生这种情况。 测试UDP连接以确保它确实通过。 限制对所有源的访问权限,实例除外。
  • 您需要将Graylog服务器实例的私有IP地址传递给所有应用程序节点。 随着私有IP地址的更改,这在AWS上非常棘手。 这就是为什么您需要稳定的东西。 您不能使用ELB(负载平衡器),因为它不支持UDP。 有两种选择:
    • 启动时将弹性IP与节点关联。
  • 或者,您可以在所有节点上(作为代理)安装graylog-server,并将它们指向elasticsearch集群。 但这更复杂,可能不是预期的方式
  • 配置您的日志记录框架以将消息发送到graylog。 有标准的GELF(灰色日志格式)附加程序,例如this ,并且您唯一要做的就是使用l(支持环境变量解析)中的Public DNS环境变量。
  • 您应该使Web界面可以在网络外部访问,因此可以为此使用ELB或上述的循环DNS。 只要确保安全规则严格并且不允许外部篡改日志数据即可。
  • 如果您没有运行Graylog集群(我不会介绍),则单个实例可能会失败。 这不是很大的损失,因为可以从实例中获取日志消息,而且它们无论如何都是短暂的。 但是Web界面的元数据很重要-仪表板,警报等。因此最好进行常规备份(例如,使用mongodump)。 也可以使用EBS卷。
  • 即使您将日志消息发送到集中式日志收集器,也最好保留本地日志,并进行适当的日志轮换和清理。

这不是一个微不足道的过程,但是必须进行日志收集,因此我希望该指南对您有所帮助。

翻译自: .html

aws操作日志

本文发布于:2024-02-05 02:43:11,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170722148762283.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:操作   日志   aws
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23