docker部署elk(两台主机)

#安装docker

mkdir -p /etc/yum.repos.d/bak

mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak/

curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo

yum clean all

yum makecache

yum install -y yum-utils

cd /etc/yum.repos.d/

rm -f mirrors.aliyun.com_docker-ce_linux_centos_docker-ce.repo

curl -o /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo

sed -i 's/$releasever/7/g' /etc/yum.repos.d/docker-ce.repo

yum clean all

yum makecache fast

yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

systemctl start docker

systemctl enable docker

#创捷一个网络

docker network create elk

#安装elk

docker run -d \

--name=elasticsearch \

-v es-data:/usr/share/elasticsearch/data \

-e ES_JAVA_OPTS="-Xms256m -Xmx512m" \

-e "discovery.type=single-node" \

-e "xpack.security.enabled=false" \

--net elk \

-p 9200:9200 -p 9300:9300 \

docker.elastic.co/elasticsearch/elasticsearch:8.6.2

#安装kibana

docker run -d \

--name=kibana \

-e ELASTICSEARCH_HOSTS=http://elasticsearch:9200 \

-e I18N_LOCALE=zh-CN \

--net elk \

-p 5601:5601 \

docker.elastic.co/kibana/kibana:8.6.2

#收集日志端下载filebeat

rpm -ivh filebeat-8.6.2-x86_64.rpm

#修改配置文件

vi /etc/filebeat/filebeat.yml

filebeat.inputs:

  • type: log

enabled: true

paths:

  • /var/log/*.log

  • /var/log/massage

setup.ilm.enabled: false

setup.template.name: "test"

setup.template.pattern: "test-*"

output.elasticsearch:

hosts: "http://192.168.255.93:9200"

index: "test-%{+yyyy.MM.dd}"

#启动filebeat

systemctl start filebeat

systemctl status filebeat

#索引管理查看索引

#数据视图

#搜集不同日志文件通过索引分类

filebeat.inputs:

  • type: log

enabled: true

paths:

  • /var/log/messages

fields_under_root: true

fields:

type: system

project: ms

app: system

  • type: log

enabled: true

paths:

  • /mysql40/log/mysql.log

fields_under_root: true

fields:

type: mysql

project: ms

app: mysql

setup.ilm.enabled: false

setup.template.name: "ms"

setup.template.pattern: "ms-*"

output.elasticsearch:

hosts: "http://192.168.255.93:9200"

indices:

  • index: "ms-system-%{+yyyy.MM.dd}"

when.contains:

type: "system"

  • index: "ms-mysql-%{+yyyy.MM.dd}"

when.contains:

type: "mysql"

~

#es集群

#配置域名(三节点)

vi /etc/hosts

work1 192.168.255.20

work2 192.168.255.21

work3 192.168.255.22

#终端显色

cat <<EOF >> ~/.bashrc PS1='\\\e\[34;1m\\\u@\\\e\[0m\\\\\e\[32;1m\\\H\\\e\[0m\\\\\e\[31;1m\\ \W\\\e\[0m\\# ' EOF source ~/.bashrc

#ssh服务优化

sed -ri 's@^#UseDNS yes@UseDNS no@g' /etc/ssh/sshd_config sed -ri 's#^GSSAPIAuthentication yes#GSSAPIAuthentication no#g' /etc/ssh/sshd_config grep ^UseDNS /etc/ssh/sshd_config grep ^GSSAPIAuthentication /etc/ssh/sshd_config

  • UseDNS no:关闭 ssh 连接反向 DNS 解析,大幅缩短登录等待时间
  • GSSAPIAuthentication no:关闭 GSSAPI 认证,消除连接卡顿

#关闭防火墙

systemctl stop firewalld

systemctl disable firewalld

#关闭selinux

setenforce 0

#生成密钥对单节点运行

ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa -q

#传递密钥

for((i=2;i<=3;i++));do ssh-copy-id work${i};done

#测试远程登录

ssh work1

ssh work2

ssh work3

#安装rsync(三节点)

yum install -y rsync

#设置同步脚本

vi /usr/local/sbin/data-rsync.sh

#!/bin/bash

Auther: Jason Yin

校验传入参数数量,必须传1个参数

if $# -ne 1 ;then

echo "Usage: $0 /path/to/file(绝对路径)"

exit

fi

判断传入的文件/目录是否存在,不存在直接退出

if ! -e $1 ;then

echo " $1 dir or file not find!"

exit

fi

提取文件/目录的父目录路径

fullpath=`dirname $1`

提取文件/目录自身名称

basename=`basename $1`

切换工作目录到父目录

cd $fullpath

循环遍历主机ID:102、103,对应两台elk节点

for ((host_id=2;host_id<=3;host_id++))

do

设置终端输出文字为绿色

tput setaf 2

echo "===== rsyncing work{host_id}: basename ====="

恢复终端默认白色文字

tput setaf 7

rsync核心同步命令:本地文件推送到远端同路径

rsync -az basename \`whoami\`@work{host_id}:$fullpath

判断上一条rsync命令执行结果

if $? -eq 0 ;then

echo "命令执行成功!"

fi

done

#使用脚本传文件

sh data-rsync.sh /path

#集群时间同步(三节点)

yum install -y net-tools

yum install -y ntpdate chrony

#修改配置文件

vi /etc/chrony

#注释官方的

#添加国内的

server ntp.aliyun.com iburst

server ntp1.aliyun.com iburst

server ntp2.aliyun.com iburst

server ntp3.aliyun.com iburst

server ntp4.aliyun.com iburst

server ntp5.aliyun.com iburst

#重启chronyd

systemctl restart chronyd

systemctl enable chronyd

#安装es(单点部署)

#安装rpm包

yum -y localinstall elasticsearch-7.17.3-x86_64.rpm

#可以systemctl cat elasticsearch.service查看脚本文件(看看那些目录都在那)

#启动es (启动了9200,9300)------9200对集群外部提供服务http,9300是tcp

systemctl start elasticsearch.service

#修改配置es.yml

cd /etc/elasticsearch

vi elasticsearch.yml

#修改集群名称

#节点名称和路径

#配置网络暴露地址------否则只能 localhost 访问

#集群发现

#重启配置生效

systemctl restart elasticsearch

#es集群部署

scp elasticsearch-7.17.3-x86_64.rpm work2:~

scp elasticsearch-7.17.3-x86_64.rpm work2:~

#yum 安装完后

#将配置文件同步到集群

将discover 写成三个节点

data-rsync.sh /etc/elasticsearch/elasticsearch.yml

#然后修改集群节点的配置文件的node.name(不重复即可)

xg1,xg2,xg3

#查看配置文件

egrep -v "^$|^#" /etc/elasticsearch/elasticsearch.yml

#通过端口是否监听来判断集群是否启动成功不一定准确

ss -tnlp

#需要curl一下,出现截图内容视为成功

curl work1:9200/_cat/nodes

#安装kibana

yum -y localhostinstall kibana-7.17.3-x86_64.rpm

#修改配置文件

cd /etc/kibana/

vi kibana.yml