持续部署与监控:自动化工作流及工具实践
立即解锁
发布时间: 2025-08-25 01:27:56 阅读量: 1 订阅数: 2 

### 持续部署与监控:自动化工作流及工具实践
#### 1. 持续部署流程与回滚处理
在持续部署过程中,若在初始部署一个实例(`scaleStep = 1`)后触发回滚,理论上下一步需调查该实例,以找出错误指标的可能原因。
- **实例健康情况处理**
- **健康**:若实例被判定为健康,需手动完成部署。具体步骤为将实例投入使用,进一步扩大该组规模,再缩小另一组规模,本质上是完成部署脚本中剩余步骤。
- **不健康**:若实例不健康,可先将其投入使用,再将组规模缩小至零,使基础设施恢复到原始状态,蓝色组仍保持活跃。
- **无回滚情况**:若未选择回滚,部署应按计划进行。最终,绿色组将取代蓝色组,表明部署成功。此时,在浏览器中加载 ELB URI,应能从新部署的 AMI 中获取演示应用的响应。
通过上述操作,我们完成了基于 Jenkins CI 的部署组件添加,利用 AWS CLI 编排蓝绿部署过程。此流程或一组流程使我们能够持续集成应用程序的代码更改,构建包含这些更改的 AMI,并在通过某些测试和满足标准后将其部署到给定环境。
#### 2. 监控、指标和日志收集的重要性及目标
在 DevOps 实践中,能够随时审查和响应基础设施状态至关重要。但这并非意味着为每次主机日期更改设置电子邮件通知,而是要获取有意义、可用的事件数据流,以便操作员在压力和不确定情况下做出合理决策。
- **监控系统配置目标**
- **及时通知**:应配置监控系统,使其能及时通知潜在感兴趣的事件。
- **格式清晰**:通知格式应醒目,为操作员提供足够细节,以便其对情况做出合理猜测。
- **减少疲劳**:监控系统应尽量减少警报疲劳。
#### 3. 集中式日志记录
集中式日志记录有助于我们更高效地管理和分析日志。以下是使用 Logstash、Elasticsearch、Elasticsearch Filebeat 和 Kibana 实现集中式日志记录的详细步骤。
- **使用 Logstash 和 Elasticsearch 摄取和存储日志**
1. **安装服务**:在一个独立的 EC2 实例(称为 ELK)上安装 Elasticsearch 和 Logstash。
```bash
# yum -y install
https://download.elastic.co/elasticsearch/release/org/elasticsearch/distribution/rpm/elasticsearch/2.4.1/elasticsearch-2.4.1.rpm
https://download.elastic.co/logstash/logstash/packages/centos/logstash-2.4.0.noarch.rpm
```
2. **编辑 Elasticsearch 配置文件**:编辑 `/etc/elasticsearch/elasticsearch.yml`,设置集群名称、分片数、副本数和刷新间隔。
```yaml
cluster.name: wonga-bonga
index.number_of_shards: 1
index.number_of_replicas: 0
index :
refresh_interval: 5s
```
3. **创建 Logstash 模式文件夹和模式文件**:创建 Logstash 模式文件夹 `/opt/logstash/patterns`,并创建示例 NGINX 模式文件 `/opt/logstash/patterns/nginx`。
```plaintext
NGUSERNAME [a-zA-Z\.\@\-\+_%]+
NGUSER %{NGUSERNAME}
NGINXACCESS %{IPORHOST:clientip} %{NGUSER:ident} %{NGUSER:auth} \[%{HTTPDATE:timestamp}\] "%{WORD:verb} %{URIPATHPARAM:request} HTTP/%{NUMBER:httpversion}" %{NUMBER:response} (?:%{NUMBER:bytes}|-) (?:"(?:%{URI:referrer}|-)"|%{QS:referrer}) %{QS:agent}
```
4. **创建 Logstash 主配置文件**:创建 `/etc/logstash/conf.d/main.conf`,配置输入、过滤和输出。
```plaintext
input {
beats {
port => 5044
}
}
filter {
if [type] == "nginx-access" {
grok {
match => { "message" => "%{NGINXACCESS}" }
}
}
}
output {
elasticsearch {
hosts => "localhost:9200"
manage_template => false
index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
document_type => "%{[@metadata][type]}"
}
}
```
5. **启动服务**:启动 Elasticsearch 和 Logstash 服务。
```bash
# service elasticsearch start
# service logstash start
```
- **使用 Elasticsearch Filebeat 收集日志**
1. **安装 Filebeat**:在 ELK 节点上安装 Filebeat。
```bash
# yum -y install
https://download.elastic.co/beats/filebeat/filebeat-1.3.1-x86_64.rpm
```
2. **配置 Filebeat**:编辑 `/etc/filebeat/filebeat.yml`,禁用 Elasticsearch 输出,启用 Logstash 输出,并指定要收集的日志文件路径。
```yaml
output:
#elasticsearch:
# hosts: ["localhost:9200"]
logstash:
hosts: ["localhost:5044"]
filebeat:
prospectors:
```
0
0
复制全文
相关推荐










