为什么80%的码农都做不了架构师?>>>
概述
Elastic APM是一个基于Elastic Stack构建的应用程序性能监控系统。它允许您实时监控软件服务和应用程序,收集有关传入请求的响应时间,数据库查询,高速缓存调用,外部HTTP请求等的详细性能信息。这样可以更轻松地快速查明并修复性能问题。
弹性APM还会自动收集未处理的错误和异常。错误主要基于堆栈跟踪进行分组,因此您可以识别出现的新错误,并密切关注特定错误发生的次数。
APM 组件
弹性APM包含四个组件:
APM代理是使用与服务相同的语言编写的开源库。您可以像安装任何其他库一样将它们安装到服务中。他们检测您的代码并在运行时收集性能数据和错误。此数据缓冲一小段时间并发送到APM服务器。
APM Server是一个用Go编写的开源应用程序,通常在专用服务器上运行。它默认侦听端口8200,并通过JSON HTTP API从代理接收数据。然后,它根据该数据创建文档并将其存储在Elasticsearch中。
Elasticsearch是一个高度可扩展的开源全文搜索和分析引擎。它允许您快速,近实时地存储,搜索和分析大量数据。Elasticsearch用于存储APM性能指标并利用其聚合。
Kibana是一个开源分析和可视化平台,旨在与Elasticsearch协同工作。您使用Kibana搜索,查看和与Elasticsearch中存储的数据进行交互。您可以使用Kibana通过使用基本许可证中捆绑的专用APM UI或可以通过APM Kibana UI直接加载的预构建的开源Kibana仪表板来可视化APM数据。
Elasticsearch-Apm 官网地址:
说明:可在这个地址找到安装Elasticesearch Kibana Apm-server Metricbeat 的相关文档 & 配置
https://www.elastic.co/blog/monitoring-applications-with-elasticsearch-and-elastic-apm
安装JKD
# 解压 & 安装
$ tar -xvf jdk-8u131-linux-x64.tar.gz
$ mv jdk1.8.0_131/ /usr/local/
$ ln -s jdk1.8.0_131 jdk1.8
# 设置环境变量
$ vim /etc/profile
export JAVA_HOME=/usr/local/jdk1.8
export CLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar
export PATH=$PATH:${JAVA_HOME}/bin
$ 生效变量
$ source /etc/profile
安装Elasticesearch Kibana Apm-server Metricbeat
#安装依赖
$ yum install -y log4j*
#安装Elasticsearch
$ curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.6.1.rpm
$ rpm -i elasticsearch-6.6.1.rpm
#安装Kibana
$ curl -L -O https://artifacts.elastic.co/downloads/kibana/kibana-6.6.1-x86_64.rpm
$ rpm -ivh kibana-6.6.1-x86_64.rpm
#安装Apm-server
$ curl -L -O https://artifacts.elastic.co/downloads/apm-server/apm-server-6.6.1-x86_64.rpm
$ rpm -ivh apm-server-6.6.1-x86_64.rpm
#安装Metricbeat
$ curl -L -O https://artifacts.elastic.co/downloads/beats/metricbeat/metricbeat-6.6.1-x86_64.rpm
$ rpm -ivh metricbeat-6.6.1-x86_64.rpm
配置Elasticesearch Kibana Apm-server Metricbeat
#配置elasticsearch
$ vim /etc/elasticsearch/elasticsearch.yml
network.host: 192.168.1.112 //定义绑定的IP
http.port: 9200 //定义elasticsearch监听端口,默认9200
#配置Kibana
$ vim /etc/kibana/kibana.yml
server.port: 5601 //定义kibana监听端口,默认是5601
server.host: "192.168.1.112" //定义绑定的IP
elasticsearch.hosts: ["http://192.168.1.112:9200"] //kibana需要和es通信,所以需要定义一下es的URL
logging.dest: /var/log/kibana.log //定义kibana日志路径
说明:需要给/var/log/kibana.log 执行权限(否则启动kibana会失败)
#配置Apm-server
$ vim /etc/apm-server/apm-server.yml
apm-server:
host: "192.168.1.112:8200" //定义绑定的IP & 监听端口
rum:
enabled: true
output.elasticsearch:
hosts: ["192.168.1.112:9200"]
#配置Metricbeat
$ vim /etc/metricbeat/metricbeat.yml
setup.kibana:
host: "192.168.1.112:5601"
output.elasticsearch:
hosts: ["192.168.1.112:9200"]
启动Elasticesearch Kibana Apm-server Metricbeat
$ systemctl start elasticsearch
$ systemctl start kibana
$ systemctl start metricbeat
$ systemctl start apm-server
查看监听端口
说明:Elasticesearch监听:9200 9300 端口
Kibana:5601 端口
Apm-server:8200
netstat -nvlpt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 192.168.1.112:8200 0.0.0.0:* LISTEN 16490/apm-server
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 7248/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 7718/master
tcp 0 0 192.168.1.112:5601 0.0.0.0:* LISTEN 16507/node
tcp6 0 0 192.168.1.112:9200 :::* LISTEN 7253/java
tcp6 0 0 192.168.1.112:9300 :::* LISTEN 7253/java
tcp6 0 0 :::22 :::* LISTEN 7248/sshd
tcp6 0 0 ::1:25 :::* LISTEN 7718/master
安装Apm-agent
说明:下载agent地址:https://github.com/elastic?utf8=%E2%9C%93&q=apm-agent&type=&language=
# 克隆apm-agent
$ git clone https://github.com/elastic/apm-agent-java.git
配置Apm-agent
$ vim /usr/local/apm-agent-java/pom.xml
加入这段配置:
co.elastic.apm
apm-agent-attach
${elastic-apm.version}
$ vim /usr/local/apm-agent-java/apm-agent-core/src/test/resources/elasticapm.properties
加入这段配置:
service_name=my-cool-service
application_packages=org.example,org.another.example=org.example,org.another.example
server_urls=http://192.168.1.112:8200
安装Tomcat
$ tar -xvf apache-tomcat-8.5.38.tar.gz
$ mv apache-tomcat-8.5.38 /usr/local/
$ ln -s apache-tomcat-8.5.38 tomcat
使用Application Servers 编辑设置代理
创建setenv.sh
说明:elastic-apm-agent-1.4.0.jar 这个jar包下载地址: https://search.maven.org/search?q=g:co.elastic.apm%20AND%20a:elastic-apm-agent
$ vim /usr/local/tomcat/bin/setenv.sh
export CATALINA_OPTS="$CATALINA_OPTS -javaagent:/usr/local/tomcat/lib/elastic-apm-agent-1.4.0.jar"
export CATALINA_OPTS="$CATALINA_OPTS -Delastic.apm.service_name=my-cool-service"
export CATALINA_OPTS="$CATALINA_OPTS -Delastic.apm.application_packages=org.example,org.another.example"
export CATALINA_OPTS="$CATALINA_OPTS -Delastic.apm.server_urls=http://192.168.1.112:8200"
#添加执行权限
chmod +x /usr/local/tomcat/bin/setenv.sh
先访问:http://192.168.1.112:8080
再访问 http://192.168.1.112:5601
说明:可看到APM agent 的信息(如看不到的话,需要先打开Setup Instructions设置一下)