ELK系列-一篇文章详谈ELK安装和从S3上备份恢复


前言

通常当系统发生故障时,工程师需要登录到各个服务器上,使用 grep / sed / awk/ docker 等 Linux 脚本工具去日志里查找故障原因。在没有日志系统的情况下,首先需要定位处理请求的服务器,如果这台服务器部署了多个实例,则需要去每个应用实例的日志目录下去找日志文件。每个应用实例还会设置日志滚动策略(如:每天生成一个文件),还有日志压缩归档策略等。
这样一系列流程下来,对于我们排查故障以及及时找到故障原因,造成了比较大的麻烦。因此,如果我们能把这些日志集中管理,并提供集中检索功能,不仅可以提高诊断的效率,同时对系统情况有个全面的理解,避免事后救火的被动。

一、ELK是什么?

E:ElasticSearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,Restful风格接口,多数据源,自动搜索负载等。
L:Logstash是一个完全开源的工具,他可以对你的日志进行收集、过滤,并将其存储供以后使用
K:Kibana是一个开源和免费的工具,它Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志

二、安装使用步骤

1.安装JDK

1.1 将Oracle Java PPA添加到apt

sudo add-apt-repository -y ppa:webupd8team/java

1.2 更新apt包数据库

sudo apt-get update

1.3 使用这个命令安装Oracle Java 8的最新稳定版本(并接受弹出的许可协议)

sudo apt-get -y install oracle-java8-installer

现在已经安装了Java 8,让我们安装ElasticSearch。

2.安装Elasticsearch-6.1.1

Elasticsearch可以通过软件包安装。

2.1 执行以下命令下载Elasticsearch包

sudo wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.1.1.deb -P ~/

2.2 使用以下命令安装Elasticsearch

sudo dpkg -i ~/elasticsearch-6.1.1.deb

2.3 安装完成后编辑配置

sudo vim /etc/elasticsearch/elasticsearch.yml

You will want to restrict outside access to your Elasticsearch instance (port 9200), so outsiders can’t read your data or shutdown your Elasticsearch cluster through the HTTP API. Find the line that specifies network.host, uncomment it, and replace its value with “127.0.0.1” so it looks like this:

/etc/elasticsearch/elasticsearch.yml excerpt (updated)
network.host: 127.0.0.1
Save and exit elasticsearch.yml.

2.4 启动Elasticsearch

sudo systemctl restart elasticsearch

2.5 然后执行如下命令,在开机时启动Elasticsearch

sudo systemctl daemon-reload
sudo systemctl enable elasticsearch

2.6 检查Elasticsearch运行情况

curl http://localhost:9200
curl http://localhost:9200/_cat/indices
curl http://localhost:9200/_aliases?pretty=true

现在Elasticsearch已经启动并运行,让我们安装Logstash。

3.安装Logstash-6.1.1

Kibana可以通过软件包安装。

3.1 执行以下命令下载Logstash包

sudo wget https://artifacts.elastic.co/downloads/logstash/logstash-6.1.1.deb -P ~/

3.2 使用以下命令安装Logstash

sudo dpkg -i ~/logstash-6.1.1.deb

3.3 配置Logstash

3.3.1 创建目录/app/logstash来保存sincedb文件
mkdir /app
cd /app
mkdir /logstash
chown -R logstash:logstash /app/logstash
3.3.2 创建Logstash配置文件

Logstash配置文件是json格式的,位于/etc/logstash/conf.d配置包括三个部分:输入、过滤器和输出。例如:

input {
    file {
        path => ["/app/logs/access.log"]
        type => "test-access"
        start_position => "beginning"
        #/app/logstash must belongs to logstash -- chown -R logstash:logstash /app/logstash 
        sincedb_path => "/app/logstash/.test-access-sincedb"
        ignore_older => 2592000 #one month
    }
}
filter {
    if [type] == "test-access" {
        grok {
            match => [ "message" , "%{COMBINEDAPACHELOG}+%{GREEDYDATA:extra_fields}"]
            overwrite => [ "message" ]
        }
        mutate {
            convert => ["response", "integer"]
            convert => ["bytes", "integer"]
            convert => ["responsetime", "float"]
        }
        geoip {
            source => "clientip"
            target => "geoip"
            add_tag => [ "nginx-geoip" ]
        }
        date {
            match => [ "timestamp" , "dd/MMM/YYYY:HH:mm:ss Z" ]
            remove_field => [ "timestamp" ]
        }
        useragent {
            source => "agent"
        }
    }
}
output{
    if [type] == "test-access"{
        elasticsearch {
            hosts => ["localhost:9200"]
            index => "test-access-logs-%{+YYYY.MM.dd}"
        }
        stdout { codec => rubydebug }
    }
}

4.安装Kibana-6.1.1

Kibana可以通过软件包安装。

4.1 执行以下命令下载Kibana包

sudo wget https://artifacts.elastic.co/downloads/kibana/kibana-6.1.1-amd64.deb -P ~/

4.2 使用以下命令安装Kibana

sudo dpkg -i ~/kibana-6.1.1-amd64.deb

4.3 启动Kibana服务

sudo systemctl daemon-reload
sudo systemctl enable kibana
sudo systemctl start kibana

二、备份和恢复

1.备份ELK

1.1 安装存储库S3插件

 sudo bin/elasticsearch-plugin install repository-s3

1.2 创建S3 credential (在提示处输入值)

sudo bin/elasticsearch-keystore add s3.client.default.access_key
sudo bin/elasticsearch-keystore add s3.client.default.secret_key

1.3 创建S3 repository

curl -H "Authorization: Basic ZWxhc3RpYzpTdtFyMjAxNyoox=" -XPUT 'localhost:9200/_snapshot/test_s3_repository?pretty' -H 'Content-Type: application/json' -d'
{
  "type": "s3",
  "settings": {
    "bucket": "elk-repository-qa",
    "region": "ap-northeast-1",
    "compress": true
  }
}
'

1.4 检查S3 repository

 curl -H "Authorization: Basic ZWxhc3RpYzpTdtFyMjAxNyoox=" -XGET 'localhost:9200/_snapshot?pretty'

1.5 创建S3 snapshot

 curl -H "Authorization: Basic ZWxhc3RpYzpTdtFyMjAxNyoox=" -XPUT 'localhost:9200/_snapshot/test_s3_repository/snapshot_1?wait_for_completion=true&pretty'

1.6 检查S3 snapshot

curl -H "Authorization: Basic ZWxhc3RpYzpTdtFyMjAxNyoox=" -XGET 'localhost:9200/_snapshot/test_s3_repository/snapshot_1?pretty'
curl -H "Authorization: Basic ZWxhc3RpYzpTdtFyMjAxNyoox=" -XGET 'localhost:9200/_snapshot/test_s3_repository/_all?pretty'

2.恢复ELK

2.1 关闭所有indices

curl -H "Authorization: Basic ZWxhc3RpYzpTdtFyMjAxNyoox=" -XPOST "localhost:9200/_all/_close?pretty"

2.2 恢复

 curl -H "Authorization: Basic ZWxhc3RpYzpTdtFyMjAxNyoox=" -XPOST 'localhost:9200/_snapshot/test_s3_repository/snapshot_1/_restore?pretty'

总结

ELK可以使日志更加灵活,可以帮助coder完成更加的任务。动手试试吧!

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
docker-compose安装ELK可以按照以下步骤进行操作: 1. 首先,确保系统已经安装了Docker和Docker Compose。如果没有安装,请先按照相关文档进行安装。 2. 接下来,创建一个目录,用于存放ELK的配置文件和数据。例如,可以使用以下命令创建一个名为elk的目录: ``` mkdir elk cd elk ``` 3. 在elk目录中,创建一个docker-compose.yml文件,并使用任何文本编辑器打开该文件。 4. 在docker-compose.yml文件中,添加以下内容: ``` version: '3' services: elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch:7.10.2 container_name: elasticsearch environment: - discovery.type=single-node ports: - 9200:9200 - 9300:9300 volumes: - ./data:/usr/share/elasticsearch/data kibana: image: docker.elastic.co/kibana/kibana:7.10.2 container_name: kibana ports: - 5601:5601 depends_on: - elasticsearch ``` 这将创建两个服务:elasticsearch和kibana。elasticsearch服务将运行Elasticsearch容器,并将端口9200映射到主机的9200端口,端口9300映射到主机的9300端口。kibana服务将运行Kibana容器,并将端口5601映射到主机的5601端口。同时,kibana服务依赖elasticsearch服务。 5. 保存并关闭docker-compose.yml文件。 6. 使用以下命令在后台运行ELK容器: ``` docker-compose up -d ``` 这将下载并启动ELK容器。稍等片刻,容器启动后,您可以通过访问http://localhost:5601来访问Kibana的Web界面,以开始使用ELK

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值