SkyWalking全链路监控java项目
一、安装elasticsearch
1、创建文件夹:# mkdir /usr/local/skywalking
2、上传apache-skywalking-apm-6.5.0.tar.gz 和 elasticsearch-6.4.2.tar.gz到服务器
3、解压文件:# tar -zxvf elasticsearch-6.4.2.tar.gz
4、修改linux系统限制配置,ES至少需要65536的文件创建数的权限和4096的线程预备
# vim /etc/security/limits.conf
新增内容:
es soft nofile 65536 es hard nofile 65536 es soft nproc 4096 es hard nproc 4096
5、开辟65536字节以上的内存空间:# vi /etc/sysctl.conf
新增内容: vm.max_map_count=262144
6、使配置生效:# sysctl -p
7、增加es用户 # useradd es
8、添加用户密码 # passwd es
9、修改elasicsearch拥有者 # chown -R es elasticsearch-6.4.2
10、切换用户# su es
11、进入bin目录启动:./elasticsearch -d
12、查看日志# tail -f logs/ elasticsearch.log
13、访问:curl http://localhost:9200
运行正常:
{ "name" : "kDV1-PC", "cluster_name" : "elasticsearch", "cluster_uuid" : "cNMLPvzNQsuYOKIEOtQJrQ", "version" : { "number" : "6.4.2", "build_flavor" : "default", "build_type" : "tar", "build_hash" : "04711c2", "build_date" : "2018-09-26T13:34:09.098244Z", "build_snapshot" : false, "lucene_version" : "7.4.0", "minimum_wire_compatibility_version" : "5.6.0", "minimum_index_compatibility_version" : "5.0.0" }, "tagline" : "You Know, for Search" }
二、安装skywalking
1、解压安装包 # tar -zxvf apache-skywalking-apm-6.5.0.tar.gz
2、进入目录 # cd apache-skywalking-apm-bin
3、编辑application文件:# vim config/application.yml
# 将enableDatabaseSession注释请除,将h2添加注释
enableDatabaseSession: ${SW_CORE_ENABLE_DATABASE_SESSION:true}
storage:
clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:localhost:9200}
protocol: ${SW_STORAGE_ES_HTTP_PROTOCOL:"http"}
trustStorePath: ${SW_SW_STORAGE_ES_SSL_JKS_PATH:"../es_keystore.jks"}
trustStorePass: ${SW_SW_STORAGE_ES_SSL_JKS_PASS:""}
user: ${SW_ES_USER:""}
password: ${SW_ES_PASSWORD:""}
indexShardsNumber: ${SW_STORAGE_ES_INDEX_SHARDS_NUMBER:2}
indexReplicasNumber: ${SW_STORAGE_ES_INDEX_REPLICAS_NUMBER:0}
# # Those data TTL settings will override the same settings in core module.
recordDataTTL: ${SW_STORAGE_ES_RECORD_DATA_TTL:7} # Unit is day
otherMetricsDataTTL: ${SW_STORAGE_ES_OTHER_METRIC_DATA_TTL:45} # Unit is day
monthMetricsDataTTL: ${SW_STORAGE_ES_MONTH_METRIC_DATA_TTL:18} # Unit is month
# # Batch process setting, refer to https://www.elastic.co/guide/en/elasticsearch/client/java-api/5.5/java-docs-bulk-processor.html
bulkActions: ${SW_STORAGE_ES_BULK_ACTIONS:1000} # Execute the bulk every 1000 requests
flushInterval: ${SW_STORAGE_ES_FLUSH_INTERVAL:10} # flush the bulk every 10 seconds whatever the number of requests
concurrentRequests: ${SW_STORAGE_ES_CONCURRENT_REQUESTS:2} # the number of concurrent requests
resultWindowMaxSize: ${SW_STORAGE_ES_QUERY_MAX_WINDOW_SIZE:10000}
metadataQueryMaxSize: ${SW_STORAGE_ES_QUERY_MAX_SIZE:5000}
segmentQueryMaxSize: ${SW_STORAGE_ES_QUERY_SEGMENT_SIZE:200}
# h2:
# driver: ${SW_STORAGE_H2_DRIVER:org.h2.jdbcx.JdbcDataSource}
# url: ${SW_STORAGE_H2_URL:jdbc:h2:mem:skywalking-oap-db}
# user: ${SW_STORAGE_H2_USER:sa}
#metadataQueryMaxSize: ${SW_STORAGE_H2_QUERY_MAX_SIZE:5000}
4、编辑webapp.yml文件# vim webapp/webapp.yml
# 修改端口
server:
port: 9010
5、进入bin目录启动:./startup.sh
三、agent探针
1、目录说明:config存放配置文件,plugins存放执行的jar包,optional-plugins存放备用jar包(需要放入plugins才能执行)
2、修改探测的应用名称 # vim config/agent.conf
agent.service_name=${SW_AGENT_NAME:skywalking_xxx}
3、在tomcat中引入探针监控,修改文件tomcat/bin/catalina.sh,在文件头部加入以下内容:
CATALINA_OPTS="CATALINA_OPTS -javaagent:/usr/loacl/skywalking/apache-skywalking-apm-bin-skywalking/agent/skywalking.jar";export CATALINA_OPTS
4、监控Spring boot项目
java -javaagnet:/usr/loacl/skywalking/apache-skywalking-apm-bin-skywalking/agent/skywalking-agent.jar -Dserver.port=9092 -jar xxxx.jar &
5、配置覆盖启动
以探针的方式启动(不需要去agent.conf指定名字)
java -javaagnet:/usr/loacl/skywalking/apache-skywalking-apm-bin-skywalking/agent/skywalking-agent.jar=agent.server_name=config_xxx -Dserver.port=9092 -jar xxxx.jar &
以系统配置方式启动(不需要去agent.conf指定名字)
java -javaagnet:/usr/loacl/skywalking/apache-skywalking-apm-bin-skywalking/agent/skywalking-agent.jar -Dskywalking.agent.server_name=config_xxx -Dserver.port=9092 -jar xxxx.jar &
6、其他插件使用
获取追踪id:首先在项目工程中加入依赖包apm-toolkit-trace,对应的版本需要和skywalking一致,在代码中使用装饰器的形式获取traceid
过滤不需要的端点:将/agent/optional-plugins/apm-trace-ignore-plugins-6.4.2.jar拷贝到plugins目录中,重启skywalking,在代码中需要使用装饰器的形式忽略端点
7、告警
告警规则查看:config/alarm-settings.yml,需要在代码中配置webhooks方法并配置查看方法或者邮件触发等方法
rules:
# Rule unique name, must be ended with `_rule`.
service_resp_time_rule: # 规则名称
metrics-name: service_resp_time # 监控数据
op: ">" # 比较值
threshold: 1000 # 阈值
period: 10 # 多久检查一次 min
count: 3 # 达到多少次之后告警
silence-period: 5 # 多久之内不会忽略相同的告警
message: Response time of service {name} is more than 1000ms in 3 minutes of last 10 minutes. # 告警消息
webhooks:
- http://127.0.0.1:9090/webhooks/