环境的困境(原因)

1、开发人员不能登录线上服务器查看相信日志;

2、各个系统都有日志,日志数据分散难以查找;

3、日志数据量大,查询速度慢,或者数据不够及时。(状态码 400 的 top10)

收集->存储->统计->报警、、、

Elastic Search + Logstash +Kibana = ELK Stack

1、分布式全文搜索引擎、存储  

2、日志收集(日志收集于某一处)

3、日志展示

安装过程:

一、Elastic Search

(1)、Import the Elasticsearch PGP Key

rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

(2)、Installing from the RPM repository

echo "[elasticsearch-5.x]
name=Elasticsearch repository for 5.x packages
baseurl=https://artifacts.elastic.co/packages/5.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md" >>/etc/yum.repos.d/elasticsearch.repo

yum install -y elasticsearch


修改配置文件

创建 数据目录

mkdir -p /data/es-data

vim /etc/elasticsearch/elasticsearch.yml
cluster.name: Mint
node.name: Mint-node1
path.data: /data/es-data
path.logs: /var/log/elasticsearch
bootstrap.memory_lock: true
network.host: 0.0.0.0
http.port: 9200

ES集群

cluster.name: Mint  相同就行,同一个局域网 先会广播

修改node.name

cluster.name: Mint

node.name: Mint-node2

path.data: /data/es-data

path.logs: /var/log/elasticsearch

bootstrap.memory_lock: true

network.host: 0.0.0.0

http.port: 9200

插件

head    bigdesk   kopf    暂时都不支持es5.4

#bootstrap.memory_lock: true  去掉注释会报错

解决方式:修改limit 文件 yum 安装的es,默认使用的是普通用户,需要配置limit.conf

vim /etc/security/limits.conf
# allow user 'elasticsearch' mlockall
elasticsearch soft memlock unlimited
elasticsearch hard memlock unlimited

修改数据路径的权限

chown -R elasticsearch:elasticsearch /data/es-data
systemctl enable elasticsearch
systemctl start elasticsearch

Installing Logstash

rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
cat > /etc/yum.repos.d/logstash.repo < 
  


/usr/share/logstash/bin/logstash -e 'input { stdin{} } output { stdout{}}'

/usr/share/logstash/bin/logstash -e 'input { stdin{} } output { stdout{ codec => rubydebug} }'

/usr/share/logstash/bin/logstash -e 'input { stdin{} } output { elasticsearch { hosts => "192.168.1.87:9200" protocol => "http"} }'

/usr/share/logstash/bin/logstash -e 'input { stdin{} } output { elasticsearch { hosts => "192.168.1.87:9200" } stdout { codec => rubydebug} }'     //同时两个输出 一个es 一个标准输出

vim /etc/logstash/conf.d/01-logstach.conf
input { stdin { } }
output {
elasticsearch { hosts => ["localhost:9200"] }
stdout { codec => rubydebug }
}
/usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/01-logstach.conf

各种插件

https://www.elastic.co/guide/en/logstash/current/index.html


Install Kibana with RPM

rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

vim /etc/yum.repos.d/kibana.repo

[kibana-5.x] name=Kibana repository for 5.x packages baseurl=https://artifacts.elastic.co/packages/5.x/yum gpgcheck=1 gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch enabled=1 autorefresh=1 type=rpm-md

yum install kibana  -y

修改配置文件

vim /etc/kibana/kibana.yml

server.port: 5601

server.host: "0.0.0.0"

elasticsearch.url: "http://192.168.1.87:9200"

kibana.index: ".kibana"

nginx  Module ngx_http_log_module http://nginx.org/en/docs/http/ngx_http_log_module.html    

input {
    file {
        path => "/var/log/nginx/access_json.log"
        codec => "json"
    }
}
output {
    stdout {
        codec => "rubydebug"
    }
}

rsyslog 修改系统日志

修改

vim /etc/rsyslog.conf
*.* @@192.168.1.87:514

nc 192.168.1.87 12345 < /etc/passwd

echo “Mint” > /dev/tcp/192.168.1.87/12345 也可以给12345 tcp端口发信息    伪设备

nc 追加文件


logstash 解耦 当需要单独修改logstash时,收集的日志可以暂存于内存中,不至于需要停止收集日志

logstash ---------->redis ---------->logstash -------->elasticsearch----------->kibana

收集                       消息队列                  分析                      存储                             显示

192.168.1.87       192.168.1.87      192.168.1.88        192.168.1.87                   192.168.1.87 


redis ---->rabbitmq------>kafka   一般redis就可以,不能满足的时候

解耦部分的配置文件,于明天整理发出来。再加前面的all.conf,共三个conf文件,shipper.conf、indexer.conf


logstash 写入kibana的时间戳是UTC。

http://192.168.1.87:5601/status 查看kibana状态

ab -n10000 -c1 http://192.168.1.87/       -n次数   -c 每次并发

安全解决方案 :search Guard

生产如何上线ELK

1、日志分类

系统日志    rsyslog    logstash     syslog插件

访问日志    nginx       logstash     codec json

错误日志    file           logstash     file + mulitline

运行日志    file           logstash     json

设备日志    syslog      logstash    syslog插件

debug日志  file           logstash    json or mulitline

2、日志标准化

1.路径 固定

2.格式 尽量json

系统日志开始->错误日志->运行日志->访问日志


欢迎打算使用阿里云服务器的小伙伴,加我私聊!!QQ:3533470970  或直接领取阿里云幸运券:https://promotion.aliyun.com/ntms/act/ambassador/sharetouser.html?userCode=b6h928qb&utm_source=b6h928qb