ELK安装(ubuntu)

一.安装jdk8

经过我测试logstash5.x不支持java10和11,所以安装java8

 

加入LinuxUprising Java PPA

sudo add-apt-repository ppa:webupd8team/java

sudo apt-get update

 

安装java8(Long Term Support)

sudo apt-get install oracle-java8-installer

查看java是否安装成功

java -version

 

设置java11为默认

sudo apt-get install oracle-java8-set-default

 


二.新建用户

因为安全问题elasticsearch 不让用root用户直接运行,创建新用户

adduser elk 输入两次密码

passwd elk 输入两次密码

root给elk赋权限,chown -R elk /opt/elasticsearch-5.6.11

 


三.安装elastcisearch

卸载elastcisearch

sudo systemctl stop elasticsearch

sudo apt-get --purge autoremove elasticsearch

rm -rf /var/lib/elasticsearch

rm -rf /etc/elasticsearch

 

安装

由于目前IK Analysis插件5.x的最高版本为5.6.11,所以elk我们也安装5.6.11

wget -P /opt/downloads https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.6.11.tar.gz

sudo tar zxvf /opt/downloads/elasticsearch-5.6.11.tar.gz -C /opt

 

进入配置文件

sudo vim /opt/elasticsearch-5.6.11/config/elasticsearch.yml

修改network.host的值

network.host: 192.168.x.x 自身ip,限制为内网访问

network.host: 0.0.0.0 也可以不限制ip

http.port: 9200

 

删除lock

rm -rf /opt/elasticsearch-5.6.11/data/nodes/0/node.lock

切换到elk用户,守护进程启动es

su - elk -c "/opt/elasticsearch-5.6.11/bin/elasticsearch -d"

 

若启动不成功,日志文件报max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

sudo sysctl -w vm.max_map_count=262144

上述方法只是临时修改,若要永久修改

在/etc/sysctl.conf文件最后添加一行

vm.max_map_count=262144

查看是否修改成功

more /proc/sys/vm/max_map_count

再启动es即可

 

测试es是否正常运行

curl -X GET http://127.0.0.1:9200

 

关闭代码为

jps|grep Elasticsearch

显示 xxxx Elasticsearch

kill -9 xxxx

netstat -anltp|grep 9200

显示LISTEN xxxx/java

kill -9 xxxx

 

 

 


四、安装Logstash

卸载deb版本的logstash

sudo systemctl stop logstash

dpkg -P logstash或sudo apt-get --purge autoremove logstash

rm -rf /usr/share/logstash

rm -rf /var/lib/logstash

rm -rf /var/log/logstash

 

安装

wget -P /opt/downloads https://artifacts.elastic.co/downloads/logstash/logstash-5.6.11.tar.gz

sudo tar zxvf /opt/downloads/logstash-5.6.11.tar.gz -C /opt

错误提示:Unrecognized VM option 'UseParNewGC' 

解决办法:把/opt/logstash/config/jvm.options配置文件中的-XX:UseParNewGC注释掉

错误提示:could not create the java virtual machine或找不到主类

解决办法:把/opt/logstash/bin/logstash.bat中%CLASSPATH%没有加双引号的都加上双引号。

 

修改数据文件夹读写权限:

sudo chmod 777 /opt/logstash-5.6.11/data

 

测试是否成功启动

/opt/logstash-5.6.11/bin/logstash -e 'input{stdin{}}output{stdout{codec=>rubydebug}}'

 

修改配置

 

关闭代码为

netstat -anltp|grep 9600

显示LISTEN xxxx/java

kill -9 xxxx

 


五、安装Kibana

卸载deb版本的kibana

sudo systemctl stop kibana

dpkg -P kibana或sudo apt-get --purge autoremove kibana

rm -rf /var/lib/kibana

 

安装

wget -P /opt/downloads https://artifacts.elastic.co/downloads/kibana/kibana-5.6.11-linux-x86_64.tar.gz

sudo tar zxvf /opt/downloads/kibana-5.6.11-linux-x86_64.tar.gz -C /opt

 

修改配置

vim /opt/kibana-5.6.11-linux-x86_64/config/kibana.yml

#配置本机ip

server.host: "0.0.0.0"

#配置es集群url

elasticsearch.url: "http://localhost:9200"

 

后台启动kibana

nohup /opt/kibana-5.6.11-linux-x86_64/bin/kibana &

然后回车返回到shell

 

关闭

netstat -anltp|grep 5601

显示LISTEN xxxx/java

kill -9 xxxx

 


六、安装Elasticsearch-head

cd /opt

git clone git://github.com/mobz/elasticsearch-head.git

 

修改配置

vim /opt/elasticsearch-head/_site/app.js

this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://localhost:9200";修改为当前es地址,默认es在本机localhost:9200不用修改

vim /opt/elasticsearch-head/Gruntfile.js

在原有的connect:server:options节点上加上hostname: '*',

 

修改es配置

sudo vim /opt/elasticsearch-5.6.11/config/elasticsearch.yml

network.host: 0.0.0.0

http.cors.enabled: true

http.cors.allow-origin: "*"

 

安装node

sudo apt-get install nodejs

安装npm

sudo apt-get install npm

安装grunt和grunt-cli

sudo npm install -g grunt

sudo npm install -g grunt-cli

安装模块依赖

sudo npm install

 

后台启动head

cd /opt/elasticsearch-head

nohup npm run start &

回车返回到shell

 

客户端浏览器打开x.x.x.x:9100

若显示未连接修改http://localhost:9200为es服务器ip:port

 

关闭

netstat -anltp|grep 9100

显示LISTEN xxxx/grunt

kill -9 xxxx

 

 

七、安装IK Analysis插件

/opt/elasticsearch-5.6.11/bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v5.6.11/elasticsearch-analysis-ik-5.6.11.zip

 

重启服务

jps|grep Elasticsearch

显示 xxxx Elasticsearch

kill -9 xxxx (xxxx为)

su - elk -c "/opt/elasticsearch-5.6.11/bin/elasticsearch -d"

 

 

八、建立守护进程(systemd)


elasticsearch

vim /lib/systemd/system/elasticsearch.service

 

[Unit]
Description=Elasticsearch
Documentation=http://www.elastic.co
Wants=network-online.target
After=network-online.target

[Service]
Environment=ES_HOME=/opt/elasticsearch-5.6.11
Environment=CONF_DIR=/opt/elasticsearch-5.6.11/config
Environment=DATA_DIR=/opt/elasticsearch-5.6.11/data
Environment=LOG_DIR=/opt/elasticsearch-5.6.11/logs
Environment=PID_DIR=/opt/elasticsearch-5.6.11
#EnvironmentFile=-/etc/default/elasticsearch-5.6.11

WorkingDirectory=/opt/elasticsearch-5.6.11

User=elk
Group=elk

ExecStartPre=/opt/elasticsearch-5.6.11/bin/elasticsearch-systemd-pre-exec

ExecStart=/opt/elasticsearch-5.6.11/bin/elasticsearch \
-p ${PID_DIR}/elasticsearch.pid \
--quiet \
-Edefault.path.logs=${LOG_DIR} \
-Edefault.path.data=${DATA_DIR} \
-Edefault.path.conf=${CONF_DIR}

# StandardOutput is configured to redirect to journalctl since
# some error messages may be logged in standard output before
# elasticsearch logging system is initialized. Elasticsearch
# stores its logs in /opt/elasticsearch-5.6.11/logs and does not use
# journalctl by default. If you also want to enable journalctl
# logging, you can simply remove the "quiet" option from ExecStart.
StandardOutput=journal
StandardError=inherit

# Specifies the maximum file descriptor number that can be opened by this process
LimitNOFILE=65536

# Specifies the maximum number of processes
LimitNPROC=2048

# Specifies the maximum size of virtual memory
LimitAS=infinity

# Specifies the maximum file size
LimitFSIZE=infinity

# Disable timeout logic and wait until process is stopped
TimeoutStopSec=0

# SIGTERM signal is used to stop the Java process
KillSignal=SIGTERM

# Send the signal only to the JVM rather than its control group
KillMode=process

# Java process is never killed
SendSIGKILL=no

# When a JVM receives a SIGTERM signal it exits with code 143
SuccessExitStatus=143

[Install]
WantedBy=multi-user.target

 

systemctl enable elasticsearch.service

 

systemctl daemon-reload

 

 

 elasticsearch-head

vim /lib/systemd/system/elasticsearch-head.service

 

[Unit]
Description=elasticsearch-head

[Service]
Type=simple
User=root
ExecStart=/opt/systemd-sh/elasticsearch-head.sh start
#ExecReload=/opt/systemd-sh/elasticsearch-head.sh restart
#ExecStop=/opt/systemd-sh/elasticsearch-head.sh stop
#ExecReload=/bin/kill -s HUP $MAINPID
#ExecStop=/bin/kill -s QUIT $MAINPID
Restart=always
PrivateTmp=true

[Install]
WantedBy=multi-user.target

 

vim /opt/systemd-sh/elasticsearch-head.sh

 

systemctl daemon-reload

 

#!/bin/bash
function exist_port()
{
  port=`netstat -lntp | grep $1 | awk '{print $4}' | cut -d \: -f 2`
  if [ "$port" = "$1" ];then
    return 1
  else
    return 0
  fi
}

function kill_by_port()
{
  port=`netstat -lntp | grep $1 | awk '{print $7}' | cut -d \/ -f 1`
  if [ "$port" != "" ];then
    sudo kill -9 $port
    echo "kill $port"
  fi
}

function run()
{if [ "$1" = "start" ];then  
    start
  elif [ "$1" = "stop" ];then
    stop
  elif [ "$1" = "restart" ];then
    stop
    start
  else
    echo "please input param, start, restart or stop"
  fi
}

function start()
{
  exist_port 9100
  if [ $? = 0 ];then
    echo 'start elasticsearch-head'
    cd /opt/elasticsearch-head
    sudo npm run start
  fi
}

function stop()
{
  kill_by_port 9100
}

run $*

 

chmod +x /opt/systemd-sh/elasticsearch-head.sh

 

systemctl enable elasticsearch-head.service

 

 

logstash

vim /lib/systemd/system/logstash.service

 

[Unit]
Description=logstash

[Service]
Type=simple
User=root
Group=root
# Load env vars from /etc/default/ and /etc/sysconfig/ if they exist.
# Prefixing the path with '-' makes it try to load, but if the file doesn't
# exist, it continues onward.
#EnvironmentFile=-/etc/default/logstash
#EnvironmentFile=-/etc/sysconfig/logstash

Environment=LS_HOME=/opt/logstash-5.6.11
Environment=LS_SETTINGS_DIR="/opt/logstash-5.6.11/config"
Environment=LS_OPTS="--path.settings /opt/logstash-5.6.11/config"
#Environment=LS_JAVA_OPTS=""
Environment=LS_PIDFILE=/opt/logstash-5.6.11/logstash.pid
Environment=LS_USER=root
Environment=LS_GROUP=root
Environment=LS_GC_LOG_FILE=/opt/logstash-5.6.11/logs/gc.log
Environment=LS_OPEN_FILES=16384
Environment=LS_NICE=19
Environment=SERVICE_NAME="logstash"
Environment=SERVICE_DESCRIPTION="logstash"

ExecStart=/opt/logstash-5.6.11/bin/logstash -f /opt/logstash-5.6.11/config/logstash.conf
Restart=always
WorkingDirectory=/
Nice=19
LimitNOFILE=16384

[Install]
WantedBy=multi-user.target

 

vim /opt/logstash-5.6.11/config/logstash.conf

自行添加conf文件,注这里写用标准输入会超时。

 

systemctl enable logstash.service

 

systemctl daemon-reload

 

 

kibana

vim /lib/systemd/system/kibana.service

 

[Unit]
Description=kibana

[Service]
Type=simple
User=root
ExecStart=/opt/kibana-5.6.11-linux-x86_64/bin/kibana "-c /opt/kibana-5.6.11-linux-x86_64/config/kibana.yml"
Restart=always
PrivateTmp=true
WorkingDirectory=/

[Install]
WantedBy=multi-user.target

 

systemctl enable kibana.service

 

systemctl daemon-reload

 

 

 

 

reboot

重启后看是否自启成功

 

posted @ 2018-11-09 14:24  wintersoft  阅读(968)  评论(0编辑  收藏  举报