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端口要起起来)

相关推荐
shimly1234567 分钟前
tcpdump 用法示例
网络·测试工具·tcpdump
风静如云16 分钟前
OpenBMC:BmcWeb定义service
linux
sszdzq30 分钟前
Docker
运维·docker·容器
book012133 分钟前
MySql数据库运维学习笔记
运维·数据库·mysql
leoufung37 分钟前
VIM FZF 安裝和使用
linux·编辑器·vim
bugtraq20211 小时前
XiaoMi Mi5(gemini) 刷入Ubuntu Touch 16.04——安卓手机刷入Linux
linux·运维·ubuntu
xmweisi2 小时前
【华为】报文统计的技术NetStream
运维·服务器·网络·华为认证
VVVVWeiYee2 小时前
BGP配置华为——路径优选验证
运维·网络·华为·信息与通信
陆鳐LuLu2 小时前
日志管理利器:基于 ELK 的日志收集、存储与可视化实战
运维·elk·jenkins
CodeWithMe2 小时前
[ Vim ] 常用命令 and 配置
linux·编辑器·vim