美文网首页
亲测好评:国产开源APM运维监控

亲测好评:国产开源APM运维监控

作者: 浮世清欢_0c9d | 来源:发表于2020-04-25 16:59 被阅读0次

【关注公众号“SRE运维部落”,文章下回复可随时交流】

 SkyWalking简介

上期给大家介绍到韩国开源版APM监控pinpoint,今天给大家介绍下国产开源版APM告警软件,也是一款社区非常活跃的Apache开源软件。

SkyWalking分布式系统的应用程序性能监视工具,专为微服务、云原生架构和基于容器(Docker、K8s、Mesos)架构而设计。

SkyWalking 是观察性分析平台和应用性能管理系统。

提供分布式追踪、服务网格遥测分析、度量聚合和可视化一体化解决方案.

主要功能

多种监控手段,语言探针和service mesh

多语言自动探针,Java,.NET Core和Node.JS

轻量高效,不需要大数据

模块化,UI、存储、集群管理多种机制可选

支持告警

优秀的可视化方案

部署安装

一. 常用安装方式

1.官网下载安装

http://skywalking.apache.org/downloads/wget https://www.apache.org/dyn/closer.cgi/skywalking/6.4.0/apache-skywalking-apm-6.4.0.tar.gztar -xzf apache-skywalking-apm-6.4.0.tar.gz

解压包既可使用,包内分服务端和客户端

服务端使用:

# /apache-skywalking-apm-incubating/bin ./startup.sh

客户端使用:

默认情况下skywalking会加载/apache-skywalking-apm-incubating/agent/config/agent.config文件,也可以手动指定

jvm参数配置:

java-javaagent:/apache-skywalking-apm-incubating/agent/skywalking-agent.jar -Dskywalking.agent.service_name=trace-api -Dskywalking.collector.backend_service=localhost:11800-jar xxxx.jar

二. 安装参考文档   

1.http://skywalking.apache.org/zh/2.https://www.jianshu.com/p/8157866deb86

使用规范

一. 服务地址

1. http://10.7.xxx.xx:8080/  无相关账号密码,后期可对应进行二次开发

二. 使用操作

仪表板:

    可针对应用节点的服务,端点,实例进行细度监控图标展示

    可针对数据库数据源的相关sql以及iqps等常用参数进行监控展示

拓扑图:

    各种图表应用实例全局展示,各种高大上

链路追踪

    监控细度在接口级别

告警:

    可进行服务,服务实例,端点级别的监控,支持webhook告警模式,邮件钉钉自由开发。

相关注意事项

1.修改数据库连接数据源

sw初期为提高性能降低资源使用,采用hbase文件数据库,造成重启oap后,旧数据丢失。可根据需求自行修改使用mysql5.5+或es7.0.0-版本。

修改方式:修改/skywalking-service-6.4.0/config/application.yml文件和/skywalking-service-6.4.0/config/datasource-settings.properties

2.无用接口请求过滤【最好用的特色功能】

无用接口值相关的存活检测端口,在链路追踪会影响使用体验,可在客户端中进行配置进行过滤

skywalking-agent/config/apm-trace-ignore-plugin.config

3.traceid添加

traceid加入项目日志可进行日志查询时链路追踪,方便定位故障。

对项目进行侵入添加:

4.pom添加

org.apache.skywalkingapm-toolkit-logback-1.x{project.release.version}

5.logback-spring.xml配置

%d{yyyy-MM-dd HH:mm:ss.SSS} [%tid] [%thread] %-5level %logger{36} -%msg%n

6.webhook消息通知配置

sw可进行告警消息通知发送,通过webhook的方式将消息推送邮箱,企业微信,钉钉,短信。(自行开发)

修改方式:/skywalking-service-6.4.0/config/alarm-settings.xml可以配置告警规则,告警规则支持自定义。

告警配置由以下几部分组成:

service_resp_time_rule:告警规则名称 ***_rule (规则名称可以自定义但是必须以’_rule’结尾

indicator-name:指标数据名称:定义参见http://t.cn/EGhfbmd

op: 操作符:> , < , = 【当然你可以自己扩展开发其他的操作符】

threshold:目标值:指标数据的目标数据 如sample中的1000就是服务响应时间,配合上操作符就是大于1000ms的服务响应

period: 告警检查周期:多久检查一次当前的指标数据是否符合告警规则

counts: 达到告警阈值的次数

silence-period:忽略相同告警信息的周期

message:告警信息

webhooks:服务告警通知服务地址

针对sw的webhook进行编写的钉钉推送脚本,测试可用,仅供参考,如有需要可关注公众号【SRE运维部落】,文章下留言即可。

# -*- coding:utf-8 -*-#/usr/bin/python#write by WJCimport socket import urllib import urllib2 import requestsimport jsonimport timeserverPort = 6690bind_ip ="10.7.xxx.xx"url="https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxxxxxxxxxxx"headers = {"Content-Type":"application/json","charset":"utf-8"}server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)server.bind((bind_ip, serverPort))server.listen(5)print ("the server is ready to receive")def get_headers(line_list):headers = {}for line in line_list:new_line = line.decode("utf8")index = new_line.find(":")key = new_line[:index]value = new_line[index+1:].strip()headers[key] = valuereturn headerswhile True:client, addr = server.accept()print ("Accepted connection from: %s:%d") % (addr[0], addr[1])sentence = client.recv(1024000)line_list = sentence.split(b"\r\n")print(line_list)if len(line_list[9]) > 0:line_list_str = eval(line_list[9])for i in range(len(line_list_str)):if line_list_str[i]["scopeId"] == 3:msg_type ="接口告警"ms ="响应时间在过去10分钟内超过1000毫秒,并两次触发告警"elif line_list_str[i]["scopeId"] == 1:msg_type ="应用服务告警"ms ="请求成功率在过去10分钟内低于80%,并两次触发告警"elif line_list_str[i]["scopeId"] == 0:msg_type ="instance告警"ms ="响应时间在过去10分钟内超过1000毫秒,并三次触发告警"elif line_list_str[i]["scopeId"] == 2:msg_type ="instance告警"ms ="90%的服务请求响应时间在过去10分钟内超过1000毫秒,并三次触发告警"else:msg_type ="另类告警"id = line_list_str[i]["id0"]msg_data = line_list_str[i]["alarmMessage"]if msg_data.find("server-A") == -1 and msg_data.find("instance-A"):#告警需要屏蔽的内容date=time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())msg = """告警时间:{date}告警类型:{msg_type}告警 ID:{id}告警内容:{msg_data}.告警内容详述:该应用{ms},请相关同事注意关注!!!""".format(date=date,msg_type=msg_type,id=id,msg_data=msg_data,ms=ms)print(msg_data)print(msg)data = {"msgtype":"text","at": {"atMobiles": [# "15230505700",# "18601324188"], "isAtAll": False,},"text": {"content": msg}} print(data)req=requests.post(url,data=json.dumps(data),headers=headers)client.close()

APM钉钉告警二次开发pinpoint(附带源码)

去哪儿通过Jira实现OKR系统化管理

高效开发:IntelliJIDEA的这些Debug技巧你都知道吗

声援Pandownload的同时,一定要懂法!

syncd一款高效开源的代码部署工具

高效开发:IntelliJIDEA的这些Debug技巧你都知道吗

运维必备:goreplay流量复制工具

一款SQL高效审计工具|解放DBA双手

实用技能:git子模块功能

相关文章

网友评论

      本文标题:亲测好评:国产开源APM运维监控

      本文链接:https://www.haomeiwen.com/subject/vaponxtx.html