日志收集===》EFK部署+supervisor管理

Posted 一夜暴富--gogogo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了日志收集===》EFK部署+supervisor管理相关的知识,希望对你有一定的参考价值。

一、es集群部署(三台)

#1.下载
cd /opt
wget https://github.com/elastic/elasticsearch/archive/refs/tags/v6.8.12.tar.gz

#2.解压缩
tar xf elasticsearch-6.8.12.tar.gz -C /data/ota_soft/
mkdir -p /data/ota_soft/elasticsearch-6.8.12/data
mkdir -p /data/ota_soft/elasticsearch-6.8.12/logs

#3.创建配置文件
vim /data/ota_soft/elasticsearch-6.8.12/config/elasticsearch.yml
cluster.name: ota-es-cluster
path.data: /data/ota_soft/elasticsearch/data
path.logs: /data/ota_soft/elasticsearch/logs
bootstrap.memory_lock: true
network.host: 192.168.100.128  #修改自己对应IP
http.port: 9200
transport.tcp.port: 9300
discovery.zen.ping.unicast.hosts: [ "master1","slave1","slave2"]  #注意此处利用别名需要设置
discovery.zen.minimum_master_nodes: 2
bootstrap.system_call_filter : false
 
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: certs/elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: certs/elastic-certificates.p12
 
 
配置文件详解:
#如果 Es 用到了 swap 作为内存,性能将会变得极差,所以建议关闭.
 
#sysctl vm.swappiness=1 注意:这只是让 kenerl 在正常情况下不会使用 swap 交换内存,紧急情况下仍然会使用.
 
#设置bootstrap.memory_lock: true,使用linux的mlockall进行进行内存锁定,防止使用 swap
 
#除了上述 es 配置,通常需要在/etc/security/limits.conf写入如下配置:
#hard memlock unlimited
#soft memlock unlimited
 
#这是在因为Centos6不支持SecComp,而ES5.2.0默认bootstrap.system_call_filter为true进行检测,所以导致检测失败,失败后直接导致ES不能启动j解决:在elasticsearch.yml中配置bootstrap.system_call_filter为false


#4./etc/hosts创建配置文件中的别名(注意修改自己对应IP)
vim /etc/hosts
192.168.100.128 master1
192.168.100.129 slave1
192.168.100.131 slave2

#5.集群安全认证(一台执行)
创建keystore(会在config目录下创建一个elasticsearch.keystore)
/data/ota_soft/elasticsearch-6.8.12/bin/elasticsearch-keystore create

#6.创建ca证书(中间会让输入路径跟密码,都可以不输直接回车)
cd /data/ota_soft/elasticsearch-6.8.12/bin/
/data/ota_soft/elasticsearch-6.8.12/bin/elasticsearch-certutil ca
完成后会生成一个elastic-stack-ca.p12 (如果没指定位置的话,就在bin下)

#7.创建秘钥
/data/ota_soft/elasticsearch-6.8.12/bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12
中间需要输入刚才设置的密码就直接输入,需要输入路径的地方就直接回车
建议不输直接回车,然后会生成一个文件:elastic-certificates.p12

#9.验证创建的证书
理论上来说 此刻bin目录下应该有两个p12文件
ls |grep 'p12'
elastic-certificates.p12
elastic-stack-ca.p12

#10.创建存放密钥的文件夹,与配置文件匹配
mkdir /data/ota_soft/elasticsearch-6.8.12/config/certs

#11.复制证书(所有节点)
#本机拷贝
cp elastic-certificates.p12  /data/ota_soft/elasticsearch-6.8.12/config/certs/
#其他两节点
mkdir -p /data/ota_soft/elasticsearch-6.8.12/config/certs
#在本机上scp
scp elastic-certificates.p12  root@192.168.100.131:/data/ota_soft/elasticsearch-6.8.12/config/certs/  #注意修改自己对应IP
#推送后,得注意此时接收推送的证书权限,(接收的两台检查授权)
chown -R ota:wheel  /data/ota_soft/elasticsearch/

#11.所有节点添加证书密码(创建证书时候没设置密码则跳过)
bin/elasticsearch-keystore add xpack.security.transport.ssl.keystore.secure_password
bin/elasticsearch-keystore add xpack.security.transport.ssl.truststore.secure_password

#12.创建普通用户启动服务
#新增什么用户都可以,只要有启动es权限即可
useradd ota -g wheel
ln -s /data/ota_soft/elasticsearch-6.8.12/ /data/ota_soft/elasticsearch
chown -R ota.wheel /data/ota_soft/elasticsearch-6.8.12/

#13.调整系统参数(三台机器)
cat << 'EOF' >> /etc/security/limits.conf
ota soft memlock unlimited
ota hard memlock unlimited
ota soft nofile 165535
ota hard nofile 165535
ota soft nproc 4096
ota hard nproc 4096
EOF
 
#追加最大值
cat << 'EOF' >> /etc/sysctl.conf
vm.max_map_count = 262155
vm.swappiness = 1
EOF
 
#设置内存锁定,锁定内存大小
vim /data/ota_soft/elasticsearch/config/jvm.options
-Xms256m  #最大锁定内存
-Xmx256m  #最小锁定内存
 
sysctl -p  生效

#安装Java
yum install java-1.8.0* -y
Java -version


(tar xf jdk-8u191-linux-x64.tar.gz && mv jdk1.8.0_191 jdk && cp -R jdk /data/ota_soft/)
添加环境变量(yum下载不用,自己安装需要)
vim  /etc/profile
JAVA_HOME=/data/ota_soft/jdk
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME
export PATH
export CLASSPATH
 
source /etc/profile

#14.启动
su ota -c "/data/ota_soft/elasticsearch/bin/elasticsearch -d "

#15.设置elastic栈各种软件的密码(与下方kibana配置文件中password一致【123】)
su ota -c "/data/ota_soft/elasticsearch/bin/elasticsearch-setup-passwords interactive"
(温馨提示)要输入好多遍好多遍,最好别设置太复杂

二、supervisor管理es

#1.下载supervisor
安装Linux的epel的yum源的命令,某些yum源会提示无supervisor源码包,此时可以使用此命令
yum install epel-release
 
yum install -y supervisor

#2.修改配置文件
vim /etc/supervisord.conf 
修改最后一行
[include]
files = supervisord.d/*.conf


#3.把elastic search加入supervisord中监控
cat << 'EOF' > /etc/supervisord.d/elasticsearch.conf
[program:elasticsearch]
command=/data/ota_soft/elasticsearch/bin/elasticsearch
user=ota
numprocs=1
priority=1
autostart=true
startretries=3
autorestart=true
stopasgroup=true
killasgroup=true
redirect_stderr=true
minfds=65535
minprocs=4096

EOF

#4.启动supervisor
systemctl start supervisord
systemctl enable supervisord

#5.如果配置文件有改动都需要重载superv
supervisord update/reload

#6.启动es
supervisorctl start elasticsearch

三、filebeat部署

每台有日志的都要部署,做日志收集

#1.下载

#2.解压
mkdir -p /data/ota_soft/
tar xf filebeat-6.8.12-linux-x86_64.tar.gz -C /data/ota_soft/
ln -sf /data/ota_soft/filebeat-6.8.12-linux-x86_64 /data/ota_soft/filebeat

#3.修改配置文件(收集多个日志)
#需要注意修改配置文件中的hosts并修改相应的日志文件路径
vim /data/ota_soft/filebeat/filebeat.yml
filebeat.inputs:
- type: log
  enabled: true
  paths:
    -  /data/logs/api1/*.log
  fields:
    log_type: api1-info
  fields_under_root: true

- type: log
  enabled: true
  paths:
    -  /data/logs/api2/*.log
  fields:
    log_type: api2-info
  fields_under_root: true

- type: log
  enabled: true
  paths:
    -  /data/logs/api3/*.log
  fields:
    log_type: api3-info
  fields_under_root: true
  
- type: log
  enabled: true
  paths:
  - /data/logs/api1/error/*.log
  fields:
    log_type: api1_error
  fields_under_root: true
  multiline.pattern: '^\\d+-\\d+-\\d+\\s\\d+:\\d+:\\d+.*'
  multiline.negate: true
  multiline.match: after
  
- type: log
  enabled: true
  paths:
  - /data/logs/api2/error/*.log
  fields:
    log_type: api2_error
  fields_under_root: true
  multiline.pattern: '^\\d+-\\d+-\\d+\\s\\d+:\\d+:\\d+.*'
  multiline.negate: true
  multiline.match: after

- type: log
  enabled: true
  paths:
  - /data/logs/api3/error/*.log
  fields:
    log_type: api3_error
  fields_under_root: true
  multiline.pattern: '^\\d+-\\d+-\\d+\\s\\d+:\\d+:\\d+.*'
  multiline.negate: true
  multiline.match: after
   
setup.template.settings:
  index.number_of_shards: 3
  index.number_of_replicas: 1
   
output.elasticsearch:
  hosts: ["master1:9200","salve1:9200","salve2:9200"]
  username: "elastic"
  password: "123"
  indices:
    - index: "api1info-%+yyyy.MM.dd"
      when.contains:
        log_type: "api1-info"
    - index: "api2-info-%+yyyy.MM.dd"
      when.contains:
        log_type: "api2-info"
    - index: "api3-info-%+yyyy.MM.dd"
      when.contains:
        log_type: "api3-info"
    - index: "api1-error-%+yyyy.MM.dd"
      when.contains:
        log_type: "api1-error"
    - index: "api2-error-%+yyyy.MM.dd"
      when.contains:
        log_type: "api2-error"
    - index: "api3-error-%+yyyy.MM.dd"
      when.contains:
        log_type: "api3-error"

#参数解释
#为收集的日志设置字段
#fields: log_type: ota-iov-open-api-info
#收集字段的日志 传到索引并按天划分
#- index: "ota-iov-open-api-info-%+yyyy.MM.dd"
#when.contains:
#log_type: "ota-iov-open-api-info"        

四、supervisor管理filebeat

#1.配置文件
vim /etc/supervisord.d/filebeat.conf
[program:filebeat]
command=/data/ota_soft/filebeat/filebeat -e -c /data/ota_soft/filebeat/filebeat.yml
autostart=true
autorestart=true
user=ota

#修改权限
chown -R ota.wheel /data/ota_soft/filebeat
chown -R ota.wheel /data/ota_soft/filebeat-6.8.12
chown -R ota.wheel /data/logs

#启动
supervisorctl start filebeat

五、kibana部署(一台单节点)

#1.下载

#2.解压
mkdir -p /data/ota_soft/
mkdir -p /data/logs/kibana
tar xf kibana-6.8.12-linux-x86_64.tar.gz -C /data/ota_soft/
ln -sf /data/ota_soft/kibana-6.8.12-linux-x86_64 /data/ota_soft/kibana
chown -R ota.wheel /data/ota_soft/kibana-6.8.12-linux-x86_64/

#3.修改配置文件
vim /data/ota_soft/kibana/config/kibana.yml
server.host: "0.0.0.0"
elasticsearch.hosts: ["master1:9200","salve1:9200","salve2:9200"]
elasticsearch.username: "elastic"
elasticsearch.password: "123"
server.basePath: "/kibana"

解释:server.basePath: "/kibana"这个是为了nginx,得加上这个配置,如果没有nginx,注释掉

#启动
nohup /data/ota_soft/kibana/bin/kibana &
#验证
netstat -nlpt|grep 5601

六、supervisor管理kibana

#1.配置文件
vim /etc/supervisord.d/kibana.conf
[program:kibana]
command=/data/ota_soft/kibana/bin/kibana
autostart=true
autorestart=true
user=ota
stdout_logfile=/data/logs/kibana/kibana.log
stderr_logfile=/data/logs/kibana/kibana.log

#2.授权
chown -R ota.wheel /data/ota_soft/kibana

#3.启动
supervisorctl start kibana

#4.Nginx代理
 location /kibana 
 proxy_pass http://ip:5601;
rewrite ^/kibana/(.*)$ /$1 break;

访问:
https://域名/kibana/login#?_g=()
http://ip:port/kibana/login#?_g=()
账号、密码: elastic/123


以上是关于日志收集===》EFK部署+supervisor管理的主要内容,如果未能解决你的问题,请参考以下文章

十九,基于helm搭建EFK日志收集系统

k8s 日志收集之 EFK

k8s 日志收集之 EFK

使用k8s v1.14.3安装部署EFK日志收集系统

K8S部署EFK收集pod日志,通过邮件报警ERROR19

K8S部署EFK收集pod日志,通过邮件报警ERROR19