ELK集群实战

1、 Elasticsearch集群部署

  • 服务器
安装软件 主机名 IP地址 系统版本 配置
Elasticsearch Elk 10.12.153.180 centos7.5.1804 2核4G
Elasticsearch Es1 10.12.153.178 centos7.5.1804 2核4G
Elasticsearch Es2 10.12.153.179 centos7.5.1804 2核4G

2、创建运行的ES普通用户

3、上传es的数据包

4、解压es数据包,并将数据包改名放到指定目录,方便我们后续操作

5、打开配置文件 vim /usr/local/es/config/elasticsearch.yml 将里面的内容全部删掉(dG)添加以下内容 我在这里做的是单节点模式

复制代码
cluster.name: bjbpe01-elk #(集群名称不做修改)
cluster.initial_master_nodes: ["10.12.153.180","10.12.153.178","10.12.153.179"] # 单节点模式这里的地址只填写本机地址
node.name: elk01  #(做修改)
node.master: true
node.data: true
path.data: /data/elasticsearch/data
path.logs: /data/elasticsearch/logs
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
network.host: 0.0.0.0
http.port: 9200
transport.tcp.port: 9300
# 单节点模式下,将discovery开头的行注释
discovery.seed_hosts: ["10.3.145.56","10.3.145.57"] #(改成另外两台服务器的名称)
discovery.zen.minimum_master_nodes: 2
discovery.zen.ping_timeout: 150s
discovery.zen.fd.ping_retries: 10
client.transport.ping_timeout: 60s
http.cors.enabled: true
http.cors.allow-origin: "*"

6、设置JVM堆的大小

复制代码
[root@es1 ~]# sed -i 's/## -Xms4g/-Xms4g/' /usr/local/es/config/jvm.options  
[root@es1 ~]# sed -i 's/## -Xmx4g/-Xmx4g/' /usr/local/es/config/jvm.options

7、创建ES数据及日志存储目录

复制代码
[root@es1 ~]# mkdir -p /data/elasticsearch/data       
[root@es1 ~]# mkdir -p /data/elasticsearch/logs       

8、修改安装目录及储存目录权限

复制代码
[root@es1 ~]# chown -R es.es /data/elasticsearch
[root@es1 ~]# chown -R es.es /usr/local/es
ES集群系统优化

9、

(1)增大最大文件打开数

永久生效方法:

复制代码
[root@es1 ~]# echo "* soft nofile 65536" >> /etc/security/limits.conf

(2)增加最大进程数

复制代码
[root@es1 ~]# echo "* soft nproc 65536" >> /etc/security/limits.conf
复制代码
* soft nofile 65536
* hard nofile 131072
* soft nproc 4096
* hard nproc 4096
更多的参数调整可以直接用这个

3)增加最大内存映射数

复制代码
[root@es1 ~]# echo "vm.max_map_count=262144" >> /etc/sysctl.conf
[root@es1 ~]# sysctl -p

10、启动ES集群

复制代码
  [root@es1 ~]# su - es -c "cd /usr/local/es && nohup bin/elasticsearch &"

测试:访问浏览器http://10.12.153.180:9200

11、安装配置head监控插件 (只在第一台es部署)

安装软件 主机名 IP地址 系统版本 配置
Elasticsearch-head-master Elk 10.12.153.180 centos7.5.1804 2核4G

12、安装node

(1)安装node
复制代码
[root@es1 ~]# wget https://npm.taobao.org/mirrors/node/latest-v10.x/node-v10.0.0-linux-x64.tar.gz
[root@es1 ~]# tar -zxf node-v10.0.0-linux-x64.tar.gz –C /usr/local
[root@es1 ~]# vim /etc/profile
export PATH=/usr/local/node-v10.24.1-linux-x64/bin:$PATH
[root@es1 ~]# source /etc/profile
[root@es1 ~]# node --version   #检查node版本号
(2)下载head插件
复制代码
[root@es1 ~]# wget https://github.com/mobz/elasticsearch-head/archive/master.zip
[root@es1 ~]# unzip –d /usr/local elasticsearch-head-master.zip (yum安装 yum -y install unzip)
(3)安装grunt
复制代码
[root@es1 ~]# cd /usr/local/elasticsearch-head-master
[root@es1 elasticsearch-head-master]# npm install -g grunt-cli
[root@es1 elasticsearch-head-master]# grunt -version  #检查grunt版本号
(4)修改head源码

vim /usr/local/elasticsearch-head-master/Gruntfile.js +99

复制代码
[root@es1 ~]# vim /usr/local/elasticsearch-head-master/_site/app.js +4388
(5)下载head必要的文件
复制代码
[root@es1 ~]# wget https://github.com/Medium/phantomjs/releases/download/v2.1.1/phantomjs-2.1.1-linux-x86_64.tar.bz2
[root@es1 ~]# yum -y install bzip2
[root@es1 ~]# mkdir /tmp/phantomjs
[root@es1 ~]# mv phantomjs-2.1.1-linux-x86_64.tar.bz2 /tmp/phantomjs/
[root@es1 ~]# chmod 777 /tmp/phantomjs -R
(6)运行head
复制代码
[root@es1 ~]# cd /usr/local/elasticsearch-head-master/
[root@es1elasticsearch-head-master]# npm install 
[root@es1 elasticsearch-head-master]# nohup grunt server &
[root@es1 elasticsearch-head-master]# ss -tnlp
​
npm install 执行错误解析:
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! phantomjs-prebuilt@2.1.16 install: `node install.js`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the phantomjs-prebuilt@2.1.16 install script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
​
npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2021-04-21T09_49_34_207Z-debug.log
​
解决:
[root@elk elasticsearch-head-master]# npm install phantomjs-prebuilt@2.1.16 --ignore-scripts  # 具体的版本按照上述报错修改
(7)测试

访问浏览器http://10.12.153.180:9100

13 kibana部署(本服务器)

  • 服务器
安装软件 主机名 IP地址 系统版本 配置
Kibana Elk 10.12.153.180 centos7.5.1804 2核4G
软件版本:nginx-1.14.2、kibana-7.13.2-linux-x86_64.tar.gz

1. 安装配置Kibana

(1)安装
复制代码
[root@es1 ~]# tar zxf kibana-7.13.2-linux-x86_64.tar.gz -C /usr/local/
(2)配置
复制代码
[root@es1 ~]# echo '
server.port: 5601
server.host: "10.12.153.180"
elasticsearch.hosts: ["http://10.12.153.180:9200"]
kibana.index: ".kibana"
i18n.locale: "zh-CN"
'>>/usr/local/kibana-7.13.2-linux-x86_64/config/kibana.yml

配置项含义:

复制代码
server.port kibana服务端口,默认5601
server.host kibana主机IP地址,默认localhost
elasticsearch.url   用来做查询的ES节点的URL,默认http://localhost:9200
kibana.index        kibana在Elasticsearch中使用索引来存储保存的searches, visualizations和dashboards,默认.kibana
(3)启动
复制代码
[root@es1 ~]# cd /usr/local/kibana-7.13.2-linux-x86_64/
[root@es1 ~]# nohup ./bin/kibana &

2. 安装配置Nginx反向代理

(1)配置YUM源:
复制代码
[root@es1 ~]# rpm -ivh <http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm>
(2)安装:

[root@es1 ~]# yum install -y nginx httpd-tools 注意:httpd-tools用于生成nginx认证访问的用户密码文件

(3)配置反向代理
复制代码
[root@es1 ~]# cat /etc/nginx/nginx.conf
user  nginx;
worker_processes  4;
error_log  /var/log/nginx/error.log;
pid        /var/run/nginx.pid;
worker_rlimit_nofile 65535;
​
events {
    worker_connections  65535;
    use epoll;
}
​
http {
    include       mime.types;
    default_type  application/octet-stream;
​
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
​
    access_log  /var/log/nginx/access.log  main;
    server_names_hash_bucket_size 128;
    autoindex on;
​
    sendfile        on;
    tcp_nopush     on;
    tcp_nodelay on;
​
    keepalive_timeout  120;
    fastcgi_connect_timeout 300;
    fastcgi_send_timeout 300;
    fastcgi_read_timeout 300;
    fastcgi_buffer_size 64k;
    fastcgi_buffers 4 64k;
    fastcgi_busy_buffers_size 128k;
    fastcgi_temp_file_write_size 128k;
​
    #gzip模块设置
    gzip on; #开启gzip压缩输出
    gzip_min_length 1k;    #最小压缩文件大小
    gzip_buffers 4 16k;    #压缩缓冲区
    gzip_http_version 1.0;    #压缩版本(默认1.1,前端如果是squid2.5请使用1.0)
    gzip_comp_level 2;    #压缩等级
    gzip_types text/plain application/x-javascript text/css application/xml;    #压缩类型,默认就已经包含textml,所以下面就不用再写了,写上去也不会有问题,但是会有一个warn。
    gzip_vary on;
    #开启限制IP连接数的时候需要使用
    #limit_zone crawler $binary_remote_addr 10m;
    #tips:
    #upstream bakend{#定义负载均衡设备的Ip及设备状态}{
    #    ip_hash;
    #    server 127.0.0.1:9090 down;
    #    server 127.0.0.1:8080 weight=2;
    #    server 127.0.0.1:6060;
    #    server 127.0.0.1:7070 backup;
    #}
    #在需要使用负载均衡的server中增加 proxy_pass http://bakend/;
    server {
        listen       80;
        server_name  10.12.183.180;
​
        #charset koi8-r;
​
       # access_log  /var/log/nginx/host.access.log  main;
        access_log off;
​
         location / {  
             auth_basic "Kibana";   #可以是string或off,任意string表示开启认证,off表示关闭认证。
             auth_basic_user_file /etc/nginx/passwd.db;   #指定存储用户名和密码的认证文件。
             proxy_pass http://10.12.153.180:5601;
             proxy_set_header Host $host:5601;  
             proxy_set_header X-Real-IP $remote_addr;  
             proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  
             proxy_set_header Via "nginx";  
                     }
         location /status { 
             stub_status on; #开启网站监控状态 
             access_log /var/log/nginx/kibana_status.log; #监控日志 
             auth_basic "NginxStatus"; } 
​
         location /head/{
             auth_basic "head";
             auth_basic_user_file /etc/nginx/passwd.db;
             proxy_pass http://10.12.153.180:9100/;
             proxy_set_header Host $host:9100;
             proxy_set_header X-Real-IP $remote_addr;
             proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
             proxy_set_header Via "nginx";
                         }  
​
        # redirect server error pages to the static page /50x.html
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}
(4)配置授权用户和密码
复制代码
[root@es1 ~]# htpasswd -cm /etc/nginx/passwd.db kibana
(5)启动nginx
复制代码
[root@elk ~]# systemctl start nginx

浏览器访问http://10.12.153.180 刚开始没有任何数据,会提示你创建新的索引。

(kibana的5601端口要起起来)

相关推荐
山河君1 分钟前
ubuntu使用DeepSpeech进行语音识别(包含交叉编译)
linux·ubuntu·语音识别
鹏大师运维5 分钟前
【功能介绍】信创终端系统上各WPS版本的授权差异
linux·wps·授权·麒麟·国产操作系统·1024程序员节·统信uos
筱源源8 分钟前
Elasticsearch-linux环境部署
linux·elasticsearch
萨格拉斯救世主11 分钟前
jenkins使用slave节点进行node打包报错问题处理
运维·jenkins
川石课堂软件测试21 分钟前
性能测试|docker容器下搭建JMeter+Grafana+Influxdb监控可视化平台
运维·javascript·深度学习·jmeter·docker·容器·grafana
龙哥说跨境30 分钟前
如何利用指纹浏览器爬虫绕过Cloudflare的防护?
服务器·网络·python·网络爬虫
懒大王就是我44 分钟前
C语言网络编程 -- TCP/iP协议
c语言·网络·tcp/ip
Elaine2023911 小时前
06 网络编程基础
java·网络
pk_xz1234562 小时前
Shell 脚本中变量和字符串的入门介绍
linux·运维·服务器
小珑也要变强2 小时前
Linux之sed命令详解
linux·运维·服务器