一、简介
本文档是完整版的天象服务部署手册,包括天象ELK Stack、数据库、天象应用服务等安装部署步骤。安装完成后的部署总览图参考如下:
二、软硬件环境
在逻辑上,天象使用的服务器逻辑上分为如下三类:
天象应用服务器软硬件要求及待安装软件
主要配置项具体要求
CPU不低于8核,如Intel(R) Xeon(R) CPU E5-2660 v4 @ 2.00GHz
内存不低于16G,如16GB DDR3-1600
存储不低于200G,如1T SATA3.0
网络100兆局域网及以上配置
操作系统64位Linux,比如CentOS release 6.9 (Final)及以上版本
解压软件可解压zip/rar/tar.gz等压缩包
待安装软件JDK1.8
Prometheus Server
MySQL Server
eureka-server
apm-config
apm-digital
apm-agentlog-collector
apm-microservice
apm-servicediscovery
apm-prometheusboot
apm-microcollector
天象ELK Stack服务器软硬件要求及待安装软件
主要配置项具体要求
CPU不低于8核,如Intel(R) Xeon(R) CPU E5-2660 v4 @ 2.00GHz
内存不低于32G,如32GB DDR3-1600
存储不低于1T,如1T SATA3.0
网络100兆局域网及以上配置
操作系统64位Linux,比如CentOS release 6.9 (Final)及以上版本
解压软件可解压zip/rar/tar.gz等压缩包
待安装软件JDK1.8
Logstash
ElasticSearch
Kibana
X-pack
天象文件服务器软硬件要求及待安装软件
主要配置项具体要求
CPU不低于4核,如Intel(R) Xeon(R) CPU E5-2660 v4 @ 2.00GHz
内存不低于8G,如8GB DDR3-1600
存储不低于100G,如100G SATA3.0
网络100兆局域网及以上配置
操作系统64位Linux,比如CentOS release 6.9 (Final)及以上版本
解压软件可解压zip/rar/tar.gz等压缩包
待安装软件Python2.7及第三方依赖包
JDK1.8
Filebeat
apm-python-collector
apm-python-filesync
apm-python-translator
apm-agentlog
三、天象应用服务器软件安装
1、安装前准备
确定应用服务器上大容量磁盘的挂载路径,本章节下述步骤将以/data目录作为软件安装目录
确定各应用服务的端口,保证同一服务器上的服务端口不会冲突,端口列表参考如下:
服务名建议端口备注
PrometheusServer9090
MySQL Server3306
Eureka-server9081天象注册中心服务,所有天象微服务启动时均需配置注册中心的服务地址
apm-config8081
apm-digital8080
apm-agentlog-collector8083
apm-servicediscovery8087
apm-prometheusboot8088
apm-microcollector9998
apm-microservice9999
本章下述步骤将以root用户进行服务搭建及启动操作
使用FTP工具,使用root用户将本文档同目录的APM文件夹及其子文件拷贝至应用服务器的/data目录
2、安装并启动PrometheusServer
使用root用户登录天象应用服务器
进入天象安装目录:[root@localhost ~]# cd /data/APM
解压prometheus安装文件:[root@localhost APM]# tar -zxvf prometheus-2.10.0.linux-amd64.tar.gz
备份prometheus配置文件:
[root@localhost APM]# mv prometheus-2.10.0.linux-amd64/prometheus.yml prometheus-2.10.0.linux-amd64/prometheus-example.yml
覆盖prometheus配置文件:
[root@localhost APM]# mv prometheus.yml prometheus-2.10.0.linux-amd64/prometheus.yml
启动prometheus服务(这里需要注意,不能直接在外层目录执行prometheus启动脚本):
[root@localhost APM]# cd /data/APM/prometheus-2.10.0.linux-amd64/ && nohup ./prometheus > console.log 2>&1 &
访问prometheus服务,如:http://10.51.150.43:9090/进行服务验证
最后一步,删除prometheus安装文件(安装目录更清净):
[root@localhost APM]# rm -rf /data/APM/prometheus-2.10.0.linux-amd64.tar.gz
3、安装MySQL Server
使用root用户登录天象应用服务器
解压mysql安装文件
[root@localhost ~]# cd /data/APM
[root@localhost APM]# tar -zxvf mysql-5.7.13-linux-glibc2.5-x86_64.tar.gz
添加mysql组和mysql用户
[root@localhost APM]# groupadd mysql
[root@localhost APM]# useradd -g mysql mysql
[root@localhost APM]# passwd mysql
创建MySQL数据存储文件夹以及赋权
[root@localhost APM]# cd /data/APM/
[root@localhost APM]# ln -s mysql-5.7.13-linux-glibc2.5-x86_64/ mysql
[root@localhost APM]# mkdir /data/APM/mysql/data
[root@localhost APM]# mkdir /data/APM/mysql/tmp
[root@localhost APM]# mkdir /data/APM/mysql/logs
[root@localhost APM]# chown -R mysql:mysql /data/APM/mysql-5.7.13-linux-glibc2.5-x86_64/
初始化MySQL5.7
[root@localhost APM]# cd /data/APM/mysql
[root@localhost mysql]# /data/APM/mysql/bin/mysqld --initialize --user=mysql --datadir=/data/APM/mysql/data/ --basedir=/data/APM/mysql/
初始化完成会输出如下内容:
A temporary password is generated for root@localhost: pd=n0iNw>na,
这里给root用户初始化的密码需要记住,后面登录的时候会用到
设置mysql以服务运行并开机启动
[root@localhost mysql]# cp /data/APM/mysql/support-files/mysql.server /etc/init.d/mysql
[root@localhost mysql]# chmod +x /etc/init.d/mysql
[root@localhost mysql]# chkconfig --add mysql
mysql添加到系统命令
[root@localhost mysql]# ln -s /data/APM/mysql/bin/mysql /usr/local/bin/mysql
编辑mysql配置
[root@localhost mysql]# rm -rf /etc/my.cnf
[root@localhost mysql]# cp /data/APM/mysql/support-files/my-default.cnf /etc/my.cnf
[root@localhost mysql]# vi /etc/my.cnf
按下Insert或i进入编辑模式,将如下内容拷贝至文件sql_mode属性下方:
character-set-server=utf8
basedir=/data/APM/mysql
datadir=/data/APM/mysql/data
tmpdir=/data/APM/mysql/tmp
log-error=/data/APM/mysql/logs/mysql.err
port=3306
socket=/data/APM/mysql/tmp/mysql.sock
max_connections=200
default-storage-engine=INNODB
lower_case_table_names=1
max_allowed_packet=16M
[client]
default-character-set=utf8
socket=/data/APM/mysql/tmp/mysql.sock
[mysql]
default-character-set = utf8
socket = /data/APM/mysql/tmp/mysql.sock
Esc退出编辑,按下:wq保存并退出
启动mysql
[root@localhost mysql]# service mysql start
如果输出:Starting MySQL. SUCCESS!,即为启动成功.
如果启动报错,则查看/data/APM/mysql/logs/mysql.err文件查看报错日志.
修改mysql root用户密码.
连接mysql:[root@localhost mysql]# mysql -u root -p
输入第5步的root用户临时密码,登录成功后输入如下语句更新root用户密码:
mysql> set password for root@localhost=password('1234.abcd');
新建天象的database及db用户(仍然使用root用户登录mysql)
创建天象数据库apmcloud.
mysql> create database apmcloud default character set utf8 collate utf8_general_ci;
创建天象数据库用户apmcloud.
mysql> create user 'apmcloud'@'%' identified by '1234.abcd';
为数据库用户赋权.
mysql> grant all privileges on apmcloud.* to apmcloud;
退出mysql数据库
mysql> exit
至此,MySQL数据库安装完成.
最后一步,删除MySQL安装文件(安装目录更清净):
[root@localhost mysql]# rm -rf /data/APM/mysql-5.7.13-linux-glibc2.5-x86_64.tar.gz
4、安装JDK1.8
使用root用户登录天象应用服务器
验证是否已安装JDK1.8:[root@localhost ~]# java -version
如果已安装,则跳过本小节后续步骤。否则,继续。
解压jdk安装文件:
[root@localhost ~]# cd /data/APM
[root@localhost APM]# tar -zxvf jdk-8u144-linux-x64.tar.gz
配置命令:
编辑/etc/profile:[root@localhost APM]# vi /etc/profile
按下Insert或i进入编辑模式,在文件尾部增加如下配置:
export JAVA_HOME=/data/APM/jdk1.8.0_144
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JRE_HOME=$JAVA_HOME/jre
Esc退出编辑,输入:wq保存并退出。
重新执行初始化文件,立即生效:
[root@localhost APM]# vi /etc/profile
验证命令:[root@localhost APM]# java -version
最后一步,删除jdk安装文件:
[root@localhost APM]# rm -rf /data/APM/jdk-8u144-linux-x64.tar.gz
5、启动Eureka-Server
使用root用户登录天象应用服务器
启动Eureka-Server:[root@localhost ~]# sh /data/APM/apm-eurekaserver/restartEurekaServer.sh
访问Eureka注册中心服务,如:http://10.51.150.43:9081/进行服务验证
6、启动apm-config
使用root用户登录天象应用服务器
修改启动脚本(调整apm-config服务的jdbc及注册中心配置):
[root@localhost ~]# vi /data/APM/apm-config/restartApmConfig.sh
按下Insert或i进入编辑模式,调整如下JVM参数:
jdbc.url
jdbc.username
jdbc.password
mapp.serviceRegisterUrl
调整后,Esc退出编辑,:wq保存
启动apm-config:[root@localhost ~]# sh /data/APM/apm-config/restartApmConfig.sh
访问第五章节搭建的Eureka注册中心服务,此时服务列表中有NECP.APM.CONFIG服务实例,说明apm-config服务成功注册到Eureka注册中心
7、启动apm-digital
使用root用户登录天象应用服务器
修改启动脚本(调整apm-digital服务的注册中心配置);
[root@localhost ~]# vi /data/APM/apm-digital/restartApmDigital.sh
按下Insert或i进入编辑模式,调整如下JVM参数:
mapp.serviceRegisterUrl,调整为本章第五节部署的Eureka注册中心地址
调整后,Esc退出编辑,:wq保存
启动apm-digital:[root@localhost ~]# sh /data/APM/apm-digital/restartApmDigital.sh
访问本章第五节搭建的Eureka注册中心服务,此时服务列表中有NECP.APM.DIGITAL服务实例,说明apm-digital服务成功注册到Eureka注册中心
8、启动apm-agentlog-collector
使用root用户登录天象应用服务器
修改启动脚本(调整apm-agentlog-collector服务的注册中心配置);
[root@localhost ~]# vi /data/APM/apm-agentlog-collector/restartApmAgentlogCollector.sh
按下Insert或i进入编辑模式,调整如下JVM参数:
mapp.serviceRegisterUrl,调整为本章第五节部署的Eureka注册中心地址
调整后,Esc退出编辑,:wq保存
启动apm-agentlog-collector:
[root@localhost ~]# sh /data/APM/apm-agentlog-collector/restartApmAgentlogCollector.sh
访问本章第五节搭建的Eureka注册中心服务,此时服务列表中有NECP.APM.AGENTLOG-COLLECTOR服务实例,说明apm-agentlog-collector服务成功注册到Eureka注册中心
9、启动apm-servicediscovery
使用root用户登录天象应用服务器
修改启动脚本(调整apm-servicediscovery服务的注册中心配置);
[root@localhost ~]# vi /data/APM/apm-servicediscovery/restartApmServiceDiscovery.sh
按下Insert或i进入编辑模式,调整如下JVM参数:
mapp.serviceRegisterUrl,调整为本章第五节部署的Eureka注册中心地址
调整后,Esc退出编辑,:wq保存
启动apm-servicediscovery:
[root@localhost ~]# sh /data/APM/apm-servicediscovery/restartApmServiceDiscovery.sh
访问本章第五节搭建的Eureka注册中心服务,此时服务列表中有NECP.APM.DISCOVERY服务实例,说明apm-servicediscovery服务成功注册到Eureka注册中心
10、启动apm-prometheusboot
使用root用户登录天象应用服务器
修改启动脚本(调整apm-prometheusboot服务的注册中心配置);
[root@localhost ~]# vi /data/APM/apm-prometheusboot/restartPrometheusBoot.sh
按下Insert或i进入编辑模式,调整如下JVM参数:
mapp.serviceRegisterUrl,调整为本章第五节部署的Eureka注册中心地址
调整后,Esc退出编辑,:wq保存
启动apm-prometheusboot:
[root@localhost ~]# sh /data/APM/apm-prometheusboot/restartPrometheusBoot.sh
访问本章第五节搭建的Eureka注册中心服务,此时服务列表中有NECP.APM.PROMETHEUS服务实例,说明apm-prometheusboot服务成功注册到Eureka注册中心
注意:apm-prometheusboot服务必须与PrometheusServer部署在同一台服务器。
11、启动apm-microcollector
使用root用户登录天象应用服务器
修改启动脚本(调整apm-microcollector服务的注册中心配置);
[root@localhost ~]# vi /data/APM/apm-microcollector/restartMicroCollector.sh
按下Insert或i进入编辑模式,调整如下JVM参数:
mapp.serviceRegisterUrl,调整为本章第五节部署的Eureka注册中心地址
调整后,Esc退出编辑,:wq保存
启动apm-microcollector:
[root@localhost ~]# sh /data/APM/apm-microcollector/restartMicroCollector.sh
访问本章第五节搭建的Eureka注册中心服务,此时服务列表中有NECP.APM.MICROCOLLECTOR服务实例,说明apm-microcollector服务成功注册到Eureka注册中心
12、启动apm-microservice
使用root用户登录天象应用服务器
修改启动脚本(调整apm-microservice服务的注册中心配置);
[root@localhost ~]# vi /data/APM/apm-microservice/restartMicroService.sh
按下Insert或i进入编辑模式,调整如下JVM参数:
mapp.serviceRegisterUrl,调整为本章第五节部署的Eureka注册中心地址
调整后,Esc退出编辑,:wq保存
启动apm-microservice:
[root@localhost ~]# sh /data/APM/apm-microservice/restartMicroService.sh
访问本章第五节搭建的Eureka注册中心服务,此时服务列表中有NECP.APM.MICROSERVICE服务实例,说明apm-microservice服务成功注册到Eureka注册中心
四、ELK Stack服务器软件安装(5.6.15版本)
1、安装前准备
本章安装ELK Stack版本为6.8.0
确定ELK Stack服务器上大容量磁盘的挂载路径,本章节下述步骤将以/data目录作为软件安装目录
确定ELK Stack各服务的端口,保证同一服务器上的服务端口不会冲突,端口列表参考如下:
服务名建议端口备注
ElasticSearch9200
Logstash5045
Kibana5601
本章下述步骤将以elk用户进行服务搭建及启动操作,因此首先使用root用户创建elk用户及用户组:
创建用户组:[root@localhost ~]# groupadd elk
创建用户: [root@localhost ~]# useradd -g elk elk
修改密码:[root@localhost ~]# passwd elk
注意:ELK Stack服务需使用elk用户进行启动。
调整elk用户使用的最大线程数:[root@localhost ~]# vi /etc/security/limits.conf
按下Insert或i进入编辑模式,将如下配置拷贝至文件:
# elk user source
elk soft memlock unlimited
elk hard memlock unlimited
elk soft nofile 65536
elk hard nofile 131072
elk soft nproc 2048
elk hard nproc 4096
Esc退出编辑,输入:wq保存并退出,elk用户退出登录后再登录配置生效
调整ELK Stack服务器上进程能拥有的最多的内存区域:[root@localhost ~]# vi /etc/sysctl.conf
按下Insert或i进入编辑模式,在配置文件中新增属性:
vm.max_map_count=655360
Esc退出编辑,输入:wq保存并退出
修改验证:[root@localhost ~]# sysctl -p
使用FTP工具,使用root用户将本文档同目录的ELK文件夹及其子文件拷贝至ELK Stack服务器的/data目录,然后对/data/ELK目录进行赋权:[root@localhost ~]# chown –R elk:elk /data/ELK
2、JDK1.8安装
使用root用户登录天象ELK Stack服务器
验证是否已安装JDK1.8:[root@localhost ~]# java -version
如果已安装,则跳过本小节后续步骤。否则,继续。
解压jdk安装文件:
[root@localhost ~]# tar -zxvf /data/ELK/ELK-installer/jdk-8u144-linux-x64.tar.gz -C /data/ELK
配置命令:
编辑/etc/profile:[root@localhost ~]# vi /etc/profile
按下Insert或i进入编辑模式,在文件尾部增加如下配置:
export JAVA_HOME=/data/ELK/jdk1.8.0_144
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JRE_HOME=$JAVA_HOME/jre
Esc退出编辑,输入:wq保存并退出。
重新执行初始化文件,立即生效:
[root@localhost ~]# vi /etc/profile
验证命令:[root@localhost ~]# java -version
3、ElasticSearch5.6.15安装
使用elk用户登录天象ELK Stack服务器
解压ElasticSearch安装文件:
[elk@localhost ~]# cd /data/ELK
[elk@localhost ELK]# tar -zxvf /data/ELK/ELK-installer/elasticsearch-5.6.15.tar.gz -C /data/ELK
创建ElasticSearch数据及日志文件夹:
[elk@localhost ELK]# mkdir /data/ELK/elasticsearch-5.6.15/logs
[elk@localhost ELK]# mkdir /data/ELK/elasticsearch-5.6.15/data
调整ElasticSearch配置:
[elk@localhost ELK]# cp /data/ELK/ELK-Template-5.6.15/elasticsearch_config/elasticsearch.yml /data/ELK/elasticsearch-5.6.15/config/elasticsearch.yml
[elk@localhost ELK]# cp /data/ELK/ELK-Template-5.6.15/elasticsearch_config/jvm.options /data/ELK/elasticsearch-5.6.15/config/jvm.options
调整后的ElasticSearch堆内存大小为16g
添加ElasticSearch重启脚本:
[elk@localhost ELK]# cp /data/ELK/ELK-Template-5.6.15/restartElasticSearch.sh /data/ELK/elasticsearch-5.6.15/restartElasticSearch.sh
启动ElasticSearch服务并验证:
[elk@localhost ELK]# sh /data/ELK/elasticsearch-5.6.15/restartElasticSearch.sh
查看日志文件/data/ELK/elasticsearch-5.6.15/logs/console.log判断服务启动正常与否,也可以在控制台输入命令查看:[elk@localhost ELK]# curl http://127.0.0.1:9200,响应结果示例如下:
{
"name" : "node-0",
"cluster_name" : "app-cluster-elk",
"cluster_uuid" : "KTr9uNWJQO65_WvV_trO_g",
"version" : {
"number" : "5.6.15",
"build_hash" : "fe7575a",
"build_date" : "2019-02-13T16:21:45.880Z",
"build_snapshot" : false,
"lucene_version" : "6.6.1"
},
"tagline" : "You Know, for Search"
}
4、Kibana5.6.15安装
使用elk用户登录天象ELK Stack服务器
解压Kibana安装文件:
[elk@localhost ~]# cd /data/ELK
[elk@localhost ELK]# tar -zxvf /data/ELK/ELK-installer/kibana-5.6.15-linux-x86_64.tar.gz -C /data/ELK
创建Kibana日志文件夹:
[elk@localhost ELK]# mkdir /data/ELK/kibana-5.6.15-linux-x86_64/logs
调整Kibana配置:
[elk@localhost ELK]# cp /data/ELK/ELK-Template-5.6.15/kibana_config/kibana.yml /data/ELK/kibana-5.6.15-linux-x86_64/config/kibana.yml
然后修改kibana.yml中的配置,调整server.host属性(全局替换localhost为Kibana服务IP),elasticsearch.url属性(全局替换127.0.0.1:9200为ElasticSearch服务IP:port)等属性。
添加Kibana重启脚本:
[elk@localhost ELK]# cp /data/ELK/ELK-Template-5.6.15/restartKibana.sh /data/ELK/kibana-5.6.15-linux-x86_64/restartKibana.sh
启动Kibana服务并验证:
[elk@localhost ELK]# sh /data/ELK/kibana-5.6.15-linux-x86_64/restartKibana.sh
查看日志文件/data/ELK/kibana-5.6.15-linux-x86_64/logs/console.log判断服务启动正常与否,或者直接访问Kibana服务进行访问,服务url示例:http://10.51.150.43:5601
5、Logstash5.6.15安装
使用elk用户登录天象ELK Stack服务器
解压Logstash安装文件:
[elk@localhost ~]# cd /data/ELK
[elk@localhost ELK]# tar -zxvf /data/ELK/ELK-installer/logstash-5.6.15.tar.gz -C /data/ELK
创建Logstash日志文件夹:
[elk@localhost ELK]# mkdir /data/ELK/logstash-5.6.15/logs
调整Logstash配置:
[elk@localhost ELK]# cp /data/ELK/ELK-Template-5.6.15/logstash_config/logstash.yml /data/ELK/logstash-5.6.15/config/logstash.yml
[elk@localhost ELK]# cp /data/ELK/ELK-Template-5.6.15/logstash_config/jvm.options /data/ELK/logstash-5.6.15/config/jvm.options
[elk@localhost ELK]# cp /data/ELK/ELK-Template-5.6.15/logstash_config/logstash-filebeat.conf /data/ELK/logstash-5.6.15/config/logstash-filebeat.conf
调整logstash-filebeat.conf文件首部的Logstash服务IP和端口,以及文件尾部的ElasticSearch服务IP和端口号(打开logstash-filebeat.conf文件后,全局替换127.0.0.1:9200为ElasticSearch服务IP:port)
拷贝logstashRuby.jar:
[elk@localhost ELK]# cp /data/ELK/ELK-installer/logstashRuby.jar /data/ELK/logstash-5.6.15/lib/logstashRuby.jar
添加Logstash重启脚本:
[elk@localhost ELK]# cp /data/ELK/ELK-Template-5.6.15/restartLogstash.sh /data/ELK/logstash-5.6.15/restartLogstash.sh
启动Logstash服务并验证:
[elk@localhost ELK]# sh /data/ELK/logstash-5.6.15/restartLogstash.sh
服务启动后,在/data/ELK/logstash-5.6.15/logs文件夹下查看日志文件console.out,如果日志文件输出:Successfully started Logstash API endpoint,说明logstash服务启动成功。
6、安装x-pack5.6.15
使用elk用户登录天象ELK Stack服务器
停止ElasticSearch服务:
[elk@localhost ~]# ps -ef|grep elasticsearch-5.6.15|awk '{print $2}'|xargs kill -9
停止Kibana服务:
[elk@localhost ~]# ps -ef|grep kibana-5.6.15-linux-x86_64|awk '{print $2}'|xargs kill -9
ElasticSearch安装x-pack插件:
[elk@localhost ~]# cd /data/ELK/elasticsearch-5.6.15/bin
[elk@localhost bin]# ./elasticsearch-plugin install file:///data/ELK/ELK-installer/x-pack-5.6.15.zip
提示:Continue with installation? [y/N]
输入y后等待安装完成
Kibana安装x-pack插件:
[elk@localhost ~]# cd /data/ELK/kibana-5.6.15-linux-x86_64/bin
[elk@localhost bin]# ./kibana-plugin install file:///data/ELK/ELK-installer/x-pack-5.6.15.zip
编辑ElasticSearch配置:
[elk@localhost ~]# vi /data/ELK/elasticsearch-5.6.15/config/elasticsearch.yml
按下Insert或i进入编辑模式,在文件末尾添加如下属性:
xpack.security.enabled: false
Esc退出编辑,按下:wq保存并退出
7、安装ElasticSearch License
登录https://register.elastic.co/marvel_register注册license
收到注册邮件后下载license,保存为license.json
使用elk用户开启ElasticSearch服务
将license.json上传至ElasticSearch安装目录:/data/ELK/elasticsearch-5.6.15
执行注册操作:
[elk@localhost ~]# cd /data/ELK/elasticsearch-5.6.15
[elk@localhost ~]# curl -XPUT -u elastic http://10.51.150.28:9200/_xpack/license?acknowledge=true -H 'Content-Type: application/json' -d @license.json
提示输入elastic用户密码:Enter host password for user 'elastic':
输入elastic默认密码:changeme
License安装成功,给出返回:{"acknowledged":true,"license_status":"valid"}
License验证:[elk@localhost ~]# curl http://10.51.150.28:9200/_xpack/license
重启ElasticSearch及Kibana。
五、ELK Stack服务器软件安装(6.8.0版本)
1、安装前准备
本章安装ELK Stack版本为6.8.0
确定ELK Stack服务器上大容量磁盘的挂载路径,本章节下述步骤将以/data目录作为软件安装目录
确定ELK Stack各服务的端口,保证同一服务器上的服务端口不会冲突,端口列表参考如下:
服务名建议端口备注
ElasticSearch9200
Logstash5045
Kibana5601
本章下述步骤将以elk用户进行服务搭建及启动操作,因此首先使用root用户创建elk用户及用户组:
创建用户组:[root@localhost ~]# groupadd elk
创建用户: [root@localhost ~]# useradd -g elk elk
修改密码:[root@localhost ~]# passwd elk
注意:ELK Stack服务需使用elk用户进行启动。
调整elk用户使用的最大线程数:[root@localhost ~]# vi /etc/security/limits.conf
按下Insert或i进入编辑模式,将如下配置拷贝至文件:
# elk user source
elk soft memlock unlimited
elk hard memlock unlimited
elk soft nofile 65536
elk hard nofile 131072
elk soft nproc 2048
elk hard nproc 4096
Esc退出编辑,输入:wq保存并退出,elk用户退出登录后再登录配置生效
调整ELK Stack服务器上进程能拥有的最多的内存区域:[root@localhost ~]# vi /etc/sysctl.conf
按下Insert或i进入编辑模式,在配置文件中新增属性:
vm.max_map_count=655360
Esc退出编辑,输入:wq保存并退出
修改验证:[root@localhost ~]# sysctl -p
使用FTP工具,使用root用户将本文档同目录的ELK文件夹及其子文件拷贝至ELK Stack服务器的/data目录,然后对/data/ELK目录进行赋权:[root@localhost ~]# chown –R elk:elk /data/ELK
2、JDK1.8安装
使用root用户登录天象ELK Stack服务器
验证是否已安装JDK1.8:[root@localhost ~]# java -version
如果已安装,则跳过本小节后续步骤。否则,继续。
解压jdk安装文件:
[root@localhost ~]# tar -zxvf /data/ELK/ELK-installer/jdk-8u144-linux-x64.tar.gz -C /data/ELK
配置命令:
编辑/etc/profile:[root@localhost ~]# vi /etc/profile
按下Insert或i进入编辑模式,在文件尾部增加如下配置:
export JAVA_HOME=/data/ELK/jdk1.8.0_144
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JRE_HOME=$JAVA_HOME/jre
Esc退出编辑,输入:wq保存并退出。
重新执行初始化文件,立即生效:
[root@localhost ~]# vi /etc/profile
验证命令:[root@localhost ~]# java -version
3、ElasticSearch6.8.0安装
使用elk用户登录天象ELK Stack服务器
解压ElasticSearch安装文件:
[elk@localhost ~]# cd /data/ELK
[elk@localhost ELK]# tar -zxvf /data/ELK/ELK-installer/elasticsearch-6.8.0.tar.gz -C /data/ELK
创建ElasticSearch数据文件夹:
[elk@localhost ELK]# mkdir /data/ELK/elasticsearch-6.8.0/data
调整ElasticSearch配置:
[elk@localhost ELK]# cp /data/ELK/ELK-Template-6.8.0/elasticsearch_config/elasticsearch.yml /data/ELK/elasticsearch-6.8.0/config/elasticsearch.yml
[elk@localhost ELK]# cp /data/ELK/ELK-Template-6.8.0/elasticsearch_config/jvm.options /data/ELK/elasticsearch-6.8.0/config/jvm.options
调整后的ElasticSearch堆内存大小为16g
添加ElasticSearch重启脚本:
[elk@localhost ELK]# cp /data/ELK/ELK-Template-6.8.0/restartElasticSearch.sh /data/ELK/elasticsearch-6.8.0/restartElasticSearch.sh
启动ElasticSearch服务并验证:
[elk@localhost ELK]# sh /data/ELK/elasticsearch-6.8.0/restartElasticSearch.sh
查看日志文件/data/ELK/elasticsearch-6.8.0/logs/console.log判断服务启动正常与否,也可以在控制台输入命令查看:[elk@localhost ELK]# curl http://127.0.0.1:9200,响应结果示例如下:
{
"name" : "node-0",
"cluster_name" : "app-cluster-elk",
"cluster_uuid" : "qBfJX9GlQemMukYgexGT1g",
"version" : {
"number" : "6.8.0",
"build_flavor" : "default",
"build_type" : "tar",
"build_hash" : "65b6179",
"build_date" : "2019-05-15T20:06:13.172855Z",
"build_snapshot" : false,
"lucene_version" : "7.7.0",
"minimum_wire_compatibility_version" : "5.6.0",
"minimum_index_compatibility_version" : "5.0.0"
},
"tagline" : "You Know, for Search"
}
4、Kibana6.8.0安装
使用elk用户登录天象ELK Stack服务器
解压Kibana安装文件:
[elk@localhost ~]# cd /data/ELK
[elk@localhost ELK]# tar -zxvf /data/ELK/ELK-installer/kibana-6.8.0-linux-x86_64.tar.gz -C /data/ELK
创建Kibana日志文件夹:
[elk@localhost ELK]# mkdir /data/ELK/kibana-6.8.0-linux-x86_64/logs
调整Kibana配置:
[elk@localhost ELK]# cp /data/ELK/ELK-Template-6.8.0/kibana_config/kibana.yml /data/ELK/kibana-6.8.0-linux-x86_64/config/kibana.yml
然后修改kibana.yml中的配置,调整server.host(全局替换10.11.10.10为Kibana服务IP),elasticsearch.hosts(全局替换127.0.0.1:9200为ElasticSearch服务IP:port)等属性。
添加Kibana重启脚本:
[elk@localhost ELK]# cp /data/ELK/ELK-Template-6.8.0/restartKibana.sh /data/ELK/kibana-6.8.0-linux-x86_64/restartKibana.sh
启动Kibana服务并验证:
[elk@localhost ELK]# sh /data/ELK/kibana-6.8.0-linux-x86_64/restartKibana.sh
查看日志文件/data/ELK/kibana-6.8.0-linux-x86_64/logs/console.log判断服务启动正常与否,或者直接访问Kibana服务进行访问,服务url示例:http://10.51.150.43:5601
5、Logstash6.8.0安装
使用elk用户登录天象ELK Stack服务器
解压Logstash安装文件:
[elk@localhost ~]# cd /data/ELK
[elk@localhost ELK]# tar -zxvf /data/ELK/ELK-installer/logstash-6.8.0.tar.gz -C /data/ELK
创建Logstash日志文件夹:
[elk@localhost ELK]# mkdir /data/ELK/logstash-6.8.0/logs
调整Logstash配置:
[elk@localhost ELK]# cp /data/ELK/ELK-Template-6.8.0/logstash_config/logstash.yml /data/ELK/logstash-6.8.0/config/logstash.yml
[elk@localhost ELK]# cp /data/ELK/ELK-Template-6.8.0/logstash_config/jvm.options /data/ELK/logstash-6.8.0/config/jvm.options
[elk@localhost ELK]# cp /data/ELK/ELK-Template-6.8.0/logstash_config/logstash-filebeat.conf /data/ELK/logstash-6.8.0/config/logstash-filebeat.conf
调整logstash-filebeat.conf文件首部的Logstash服务IP和端口,以及文件尾部的ElasticSearch服务IP和端口号(打开logstash-filebeat.conf文件后,全局替换10.11.10.10为Logstash服务IP,全局替换127.0.0.1:9200为ElasticSearch服务IP:port)
拷贝logstashRuby.jar:
[elk@localhost ELK]# cp /data/ELK/ELK-installer/logstashRuby.jar /data/ELK/logstash-6.8.0/lib/logstashRuby.jar
安装logstash-filter-uuid插件:
[elk@localhost ELK]# cd /data/ELK/logstash-6.8.0/bin
[elk@localhost bin]# ./logstash-plugin install file:///data/ELK/ELK-installer/logstash-filter-uuid-3.0.5.zip
添加Logstash重启脚本:
[elk@localhost ELK]# cp /data/ELK/ELK-Template-6.8.0/restartLogstash.sh /data/ELK/logstash-6.8.0/restartLogstash.sh
启动Logstash服务并验证:
[elk@localhost ELK]# sh /data/ELK/logstash-6.8.0/restartLogstash.sh
服务启动后,在/data/ELK/logstash-6.8.0/logs文件夹下查看日志文件console.out,如果日志文件输出:Successfully started Logstash API endpoint,说明logstash服务启动成功。
六、文件服务器软件安装
1、安装前准备
确定应用服务器上大容量磁盘的挂载路径,本章节下述步骤将以/data目录作为软件安装目录
确定各应用服务的端口,保证同一服务器上的服务端口不会冲突,端口列表参考如下:
服务名建议端口备注
apm-agentlog8082
apm-python-collector9002
apm-python-filesync9003
apm-python-translator9001
本章下述步骤将以root用户进行服务搭建及启动操作
使用FTP工具,使用root用户将本文档同目录的APM-File文件夹及其子文件拷贝至应用服务器的/data目录
在本文档示例中,使用/data/logs作为文件服务器的日志存储目录,因此还需要创建目录。
[root@localhost ~]# mkdir /data/logs
注意:Filebeat安装版本需与上一章节ELK Stack安装版本一致。
2、JDK1.8安装
使用root用户登录天象文件服务器
验证是否已安装JDK1.8:[root@localhost ~]# java -version
如果已安装,则跳过本小节后续步骤。否则,继续。
解压jdk安装文件:
[root@localhost ~]# tar -zxvf /data/APM-File/APM-File-installer/jdk-8u144-linux-x64.tar.gz -C /data/APM-File
配置命令:
编辑/etc/profile:[root@localhost ~]# vi /etc/profile
按下Insert或i进入编辑模式,在文件尾部增加如下配置:
export JAVA_HOME=/data/APM-File/jdk1.8.0_144
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JRE_HOME=$JAVA_HOME/jre
Esc退出编辑,输入:wq保存并退出。
重新执行初始化文件,立即生效:
[root@localhost ~]# vi /etc/profile
验证命令:[root@localhost ~]# java -version
3、Python2.7升级
使用root用户登录天象文件服务器
验证是否已升级Python2.7:[root@localhost ~]# Python -V
如果结果为Python2.6.x或更低版本,则执行下列步骤:
解压Python2.7安装文件:
[root@localhost ~]# cd /data/APM-File/
[root@localhost APM-File]# tar -zxvf APM-File-installer/Python-2.7.14.tgz -C ./
[root@localhost APM-File]# cd Python-2.7.14/
执行配置检查命令:[root@localhost Python-2.7.14]# ./configure
执行构建及安装命令:[root@localhost Python-2.7.14]# make && make install
安装完成执行命令验证:[root@localhost Python-2.7.14]# /usr/local/bin/python2.7 -V
备份原版本软链接:[root@localhost Python-2.7.14]# mv /usr/bin/python /usr/bin/python2.6.6
创建新版本python软链接:
[root@localhost Python-2.7.14]# ln -s /usr/local/bin/python2.7 /usr/bin/python
执行命令进行验证:[root@localhost Python-2.7.14]# python -V
注意:如果是CentOS操作系统,因为CentOS下的yum命令依赖2.6,因此还需调整yum启动脚本,操作如下:
编辑yum命令文件:[root@localhost Python-2.7.14]# vi /usr/bin/yum
按下Insert或i进入编辑模式,将文件第一行的#!/usr/bin/python调整为#!/usr/bin/python2.6.6
按下Esc退出编辑,输入:wq保存并退出
至此,Python2.7升级完成。
4、Python第三方插件安装
安装setuptools:
[root@localhost Python-2.7.14]# cd /data/APM-File/APM-File-installer/
[root@localhost APM-File-installer]# tar -zxvf setuptools-40.2.0.tar.gz
[root@localhost APM-File-installer]# cd setuptools-40.2.0/
[root@localhost setuptools-40.2.0]# python setup.py install
安装pip:
[root@localhost setuptools-40.2.0]# cd /data/APM-File/APM-File-installer/
[root@localhost APM-File-installer]# tar -zxvf pip-9.0.1.tar.gz
[root@localhost APM-File-installer]# cd pip-9.0.1/
[root@localhost pip-9.0.1]# python setup.py.install
安装ptyprocess:
[root@localhost pip-9.0.1]# cd /data/APM-File/APM-File-installer/
[root@localhost APM-File-installer]# cd /data/APM-File/APM-File-installer/
[root@localhost APM-File-installer]# pip install ptyprocess-0.6.0-py2.py3-none-any.whl
安装pexpect:
[root@localhost APM-File-installer]# pip install pexpect-4.7.0-py2.py3-none-any.whl
安装pytz:
[root@localhost APM-File-installer]# pip install pytz-2019.1-py2.py3-none-any.whl
安装Django:
[root@localhost APM-File-installer]# pip install Django-1.11.20-py2.py3-none-any.whl
安装天象通用依赖:
[root@localhost APM-File-installer]# pip install mapp-3.1.0-py2-none-any.whl
验证是否已安装sqlite3,输入python命令进入python解释器:
[root@localhost ~]# python
>>> import sqlite3
回车后如果报错:Import Error: No module named_sqlite3,则执行如下步骤:
首先推出python解释器:>>> exit()
查找sqlite3.so:[root@localhost ~]# find / -name _sqlite*.so
查找python2.7:[root@localhost ~]# whereis python2.7
拷贝python2.6的sqlite3.so至python2.7安装目录:
[root@localhost ~]# cp /usr/lib64/python2.6/lib-dynload/_sqlite3.so /usr/local/lib/python2.7/lib-dynload/_sqlite3.so
然后在python解释器import sqlite3进行验证。
5、安装Filebeat(5.6.15)
若使用6.8.0版本ELK Stack,跳过此步骤。
解压Filebeat:
[root@localhost ~]# cd /data/APM-File/
[root@localhost APM-File]# tar -zxvf APM-File-installer/filebeat-5.6.15-linux-x86_64.tar.gz -C ./
创建Filebeat数据及日志目录:
[root@localhost APM-File]# mkdir /data/APM-File/filebeat-5.6.15-linux-x86_64/data
[root@localhost APM-File]# mkdir /data/APM-File/filebeat-5.6.15-linux-x86_64/logs
更新Filebeat配置:
[root@localhost APM-File]# cp /data/APM-File/APM-File-Template/5.6.15/filebeat_config/filebeat.yml /data/APM-File/filebeat-5.6.15-linux-x86_64/filebeat.yml
编辑filebeat.yml配置,127.0.0.1:5045全局替换为Logstash服务的IP:port
添加Filebeat启动脚本:
[root@localhost APM-File]# cp /data/APM-File/APM-File-Template/restartFilebeat5.6.15.sh /data/APM-File/filebeat-5.6.15-linux-x86_64/restartFilebeat.sh
启动Filebeat并验证:
[root@localhost APM-File]# sh /data/APM-File/filebeat-5.6.15-linux-x86_64/restartFilebeat.sh
服务启动后,在/data/APM/filebeat-5.6.15-linux-x86_64/logs文件夹下查看日志文件。
6、安装Filebeat(6.8.0)
若使用5.6.0版本ELK Stack,跳过此步骤。
解压Filebeat:
[root@localhost ~]# cd /data/APM-File/
[root@localhost APM-File]# tar -zxvf APM-File-installer/filebeat-6.8.0-linux-x86_64.tar.gz -C ./
创建Filebeat数据及日志目录:
[root@localhost APM-File]# mkdir /data/APM-File/filebeat-6.8.0-linux-x86_64/data
[root@localhost APM-File]# mkdir /data/APM-File/filebeat-6.8.0-linux-x86_64/logs
更新Filebeat配置:
[root@localhost APM-File]# cp /data/APM-File/APM-File-Template/6.8.0/filebeat_config/filebeat.yml /data/APM-File/filebeat-6.8.0-linux-x86_64/filebeat.yml
编辑filebeat.yml配置,127.0.0.1:5045全局替换为Logstash服务的IP:port,如:10.51.150.43:5045,127.0.0.1:5601全局替换为Kibana服务的IP:port,如:10.51.150.43:5601
添加Filebeat启动脚本:
[root@localhost APM-File]# cp /data/APM-File/APM-File-Template/restartFilebeat6.8.0.sh /data/APM-File/filebeat-6.8.0-linux-x86_64/restartFilebeat.sh
启动Filebeat并验证:
[root@localhost APM-File]# sh /data/APM-File/filebeat-6.8.0-linux-x86_64/restartFilebeat.sh
服务启动后,在/data/APM/filebeat-6.8.0-linux-x86_64/logs文件夹下查看日志文件。
7、启动apm-agentlog
修改启动脚本(调整apm-agentlog服务的注册中心配置);
[root@localhost ~]# vi /data/APM-File/apm-agentlog/restartAgentlog.sh
按下Insert或i进入编辑模式,调整如下JVM参数:
mapp.serviceRegisterUrl,调整为第三章第五节部署的Eureka注册中心地址
调整后,Esc退出编辑,:wq保存
启动apm-agentlog:
[root@localhost ~]# sh /data/APM-File/apm-agentlog/restartAgentlog.sh
访问第三章第五节搭建的Eureka注册中心服务,此时服务列表中有NECP.APM.AGENTLOG服务实例,说明apm-agentlog服务成功注册到Eureka注册中心
8、天象文件同步配置
由于在天象文件服务器上时使用/data/logs目录作为登录天象可视化服务(第四章),在配置中心里配置文件同步本地路径为/data/logs
9、启动apm-python-collector
修改启动脚本(调整apm-python-collector服务的注册中心配置);
[root@localhost ~]# vi /data/APM-File/apm-python-collector/restartPyCollector.sh
将http://127.0.0.1:9081/调整为第三章第五节搭建的天象Eureka注册中心地址
启动apm-python:
[root@localhost ~]# cd /data/APM-File/apm-python-collector/
[root@localhost ~]# sh restartPyCollector.sh
访问第三章第五节搭建的Eureka注册中心服务,此时服务列表中有NECP.APM.PYCOLLECTOR服务实例,说明apm-python-collector服务成功注册到Eureka注册中心
也可以访问apm-python-collector日志查看日志同步与指标采集情况:/data/APM-File/apm-python-collector/logs
10、启动apm-python-filesync
修改启动脚本(调整apm-python-filesync服务的注册中心配置);
[root@localhost ~]# vi /data/APM-File/apm-python-filesync/restartFileSync.sh
将http://127.0.0.1:9081/调整为第三章第五节搭建的天象Eureka注册中心地址
启动apm-python:
[root@localhost ~]# cd /data/APM-File/apm-python-filesync/
[root@localhost ~]# sh restartFileSync.sh
访问第三章第五节搭建的Eureka注册中心服务,此时服务列表中有NECP.APM.PYFILESYNC服务实例,说明apm-python-filesync服务成功注册到Eureka注册中心
也可以访问apm-python-filesync日志查看日志同步与指标采集情况:/data/APM-File/apm-python-filesync/logs
11、启动apm-python-translator
修改启动脚本(调整apm-python-translator服务的注册中心配置);
[root@localhost ~]# vi /data/APM-File/apm-python-translator/restartPyTranslator.sh
将http://127.0.0.1:9081/调整为第三章第五节搭建的天象Eureka注册中心地址
启动apm-python:
[root@localhost ~]# cd /data/APM-File/apm-python-translator/
[root@localhost ~]# sh restartTranslator.sh
访问第三章第五节搭建的Eureka注册中心服务,此时服务列表中有NECP.APM.PYTRANSLATOR服务实例,说明apm-python-translator服务成功注册到Eureka注册中心
也可以访问apm-python-translator日志查看日志同步与指标采集情况:/data/APM-File/apm-python-translator/logs
七、天象探针安装
参考本文档同目录的《天象探针部署(Linux&监控单体应用).docx》文档即可
八、天象服务验证
1、登录天象可视化服务
2、在配置中心配置单体架构系统
3、在监控中心配置ElasticSearch服务节点、文件同步配置(本地文件存储路径:/data/logs)、Prometheus服务配置
4、等待数分钟后,监控中心会有对应数据。