ELK部署

背景

很多公司还是在单体项目中苦苦挣扎,没有必要上elk系统,大家都懂的一个原则系统的技术栈越多系统越复杂,维护起来也越麻烦,在没有大流量高并发的情况下我们就用单体服务挺舒服。我们行业的特殊性做的都是BTB的项目,并发更是少的可怜,唯一出问题的可能性就是联表太多效率低了下来,做的和erp系统一样的臃肿。在追求微服务多节点部署的情况下这时就有必要使用ELK系统去查问题的可能性。不同服务之间的业务调用日志打印在不同目录下,这样就提高的查问题的效率,同时也提高了日志分析的方便性提高了效率。

我用的版本都是 6.7.2 很久之前pull下来的镜像,现在镜像加速好像失效了,去找个加速换下重启就能用了 需要尝试,不知道什么时候就又失效了

logstash             7.6.2     fa5b3b1e9757   4 years ago   813MB
kibana               7.6.2     f70986bc5191   4 years ago   1.01GB
elasticsearch        7.6.2     f29a1ee41030   4 years ago   791MB

大家可以看到是4年前pull的版本了

docker镜像加速

在linux系统上看下是否在目录下存在文件

[root@localhost ~]# cat /etc/docker/daemon.json
{
  "registry-mirrors": ["https://qoe0omj6.mirror.aliyuncs.com"]
}

有修改registry-mirrors  可以多添加几个,有能使用的我这个是不能使用。

然后重启docker 验证能否pull镜像

[root@localhost ~]# systemctl daemon-reload
[root@localhost ~]# systemctl restart docker

docker获取镜像

[root@localhost ~]# docker pull elasticsearch   不加版本默认最新版本
[root@localhost ~]# docker pull elasticsearch:6.7.2  指定下载最新版本   

其他两组件也是这样获取,注意使用版本一致的中间件不然会有兼容的问题

镜像启动

elasticsearch启动

mkdir -p /home/elasticsearch/config    创建文件夹后面启动容器使用
 
mkdir -p /home/elasticsearch/data
 
echo "http.host: 0.0.0.0" >/home/elasticsearch/config/elasticsearch.yml   创建配置文件写入 可以用标准的配置文件  现在简单创建写下
 


docker run -p 9200:9200 -p 9300:9300 --name elasticsearch \
-e "discovery.type=single-node" \
-e "cluster.name=elasticsearch" \
-v /home/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /home/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-v /home/elasticsearch/data:/usr/share/elasticsearch/data \
-d elasticsearch:7.6.2

-p: 选项用于将容器的端口映射到主机的端口。

--name elasticsearch:  这为容器指定了一个名称(elasticsearch),便于后续管理和访问。您可以使用这个名称来停止、启动或删除容器。

-e: 选项用于设置环境变量

-v 选项用于挂载卷,将主机目录或文件挂载到容器内。

-d: 该选项表示以分离模式(detached mode)运行容器,即在后台运行容器,而不是在前台显示容器的日志。

-p 9200:9200 -p 9300:9300

9200 是 Elasticsearch 的 HTTP 端口,通常用于发送 REST 请求。
9300 是 Elasticsearch 的传输端口,通常用于节点间的通信。

这行命令将容器的 9200 和 9300 端口分别映射到主机的 9200 和 9300 端口。
       

-e "discovery.type=single-node" 设置 discovery.type 为 single-node,指示 Elasticsearch 以单节点模式运行,适合开发和测试环境。

-e "cluster.name=elasticsearch": 这一行设置了集群的名称为 elasticsearch。集群名称用于标识和管理多个节点的集群。

elasticsearch:7.6.2:这是要运行的 Docker 镜像的名称和标签。这里指定使用 elasticsearch 镜像的 7.6.2 版本。

直接ip:9200 如果出现页面部署成功

kibana启动

创建配置文件

vi /home/kibana/config/kibana.yml

配置文件内容


server.name: kibana
server.host: "0"
#elasticsearch.hosts: [ "http://elasticsearch:9200" ]
elasticsearch.hosts: [ "http://elasticsearch的IP:9200" ]
xpack.monitoring.ui.container.elasticsearch.enabled: true
#设置kibana中文显示
i18n.locale: zh-CN

启动kibana

docker run --name kibana -p 5601:5601 \
-v /home/kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml \
-d kibana:7.6.2

 直接ip:5601 如果出现页面部署成功

logstash启动

创建些目录

mkdir -p /home/logstash/conf.d
mkdir -p /home/logstash/config
mkdir -p /home/logstash/logs


在config下创建logstash.yml

配置内容
http.host: "0.0.0.0"
xpack.monitoring.enabled: true
xpack.monitoring.elasticsearch.hosts: "http://192.168.42.117:9200" # es地址
path.config: /usr/share/logstash/config/conf.d/*.conf
path.logs: /usr/share/logstash/logs


可能出现的问题
xpack.monitoring.elasticsearch.hosts: "http://127.0.0.1:9200" # es地址 能是虚拟机配置问题我需要用本机ip才能访问  用http://127.0.0.1 本地不能访问到 es



/home/logstash/conf.d 目录下的文件 *.conf 配置的是服务日志传给logstash的一些配置

input{
  tcp {
    mode => "server"
    host => "0.0.0.0"
    port => 4560 # 这个端口随意,要配置到springboot项目中
    codec => json_lines
  }
}
output{
  elasticsearch{
    hosts=>["192.168.42.117:9200"]

    index => "gzllogstash-%{+YYYY.MM.dd}"
  }
 stdout { codec=> rubydebug }
}


我用到的文件名字是log_to_es.conf  这个文件的内容就是上面的配置

启动

docker run -p 9600:9600 -p 4560:4560 --name=logstash \
  --restart=always --privileged=true\
  -e ES_JAVA_OPTS="-Xms1g -Xmx2g" \
  -v /home/logstash/config/logstash.yml:/usr/share/logstash/config/logstash.yml \
  -v /home/logstash/conf.d:/usr/share/logstash/config/conf.d \
  -v /home/logstash/logs:/usr/share/logstash/logs  \
  -d logstash:7.6.2

springboot 传日志到logstash

添加依赖 注意选择对应springboot的版本


   net.logstash.logback
   logstash-logback-encoder
   6.6

配置logback-spring.xml







    
    
    
    

    
    
    
    

    

    
    
    
    


    
    
        
            ${CONSOLE_LOG_PATTERN}
            UTF-8
        
        
            ACCEPT
            DENY
        
    


    
    
        
            
            ${LOG_PATH}/${appName}.%d{yyyy-MM-dd}.%i.log
            
            100MB
            
            30
        
        
            ${FILE_LOG_PATTERN}
            UTF-8
        
        
        
        
        
        
        
    

    
    
        
        192.168.42.117:4560
        
    

    
    
        
        0
        
        512
        
        
    

    
    
        
            
            
            

        
        
        
            
            
            
        
        
        
        
        
        
        


        
        
    





配置文件和正常的日志文件一样注意添加logstash相关的关键在于

   
    
        
        192.168.42.117:4560
        
    

后面还会更新配置输出日志的格式内容等问题

验证下是否日志传到logstash中了

 docker logs -fn 1000 logstash

你能看到传过去的日志新写

你可能感兴趣的:(elk)