You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[Synthetic monitoring] Make SkyWalking as a core component when doing mock traffic testing on product env. #6932
Please answer these questions before submitting your issue.
Why do you submit this issue?
Question or discussion
Bug
Requirement
Feature or performance improvement
Question
What do you want to know?
Sorry, first of all, my English is not good, this is the use of software translation. The specific issues are as follows:
Why doesn't Skywalking's plug-in use filter chain mode? In current mode, if you want to enhance the same class twice, you may not be able to determine the order and may even report an error.
Would it be more extension-friendly if you could support two enhancements to the same class, and control the order? In fact, in our project, we have already started to modify this piece to support filter chains.
The key question is why? Filter and enhancement is a very expansive operation, especially in the runtime. For what purpose, you want to enhance a class twice and for a specific method?
Let me talk about the application scenario: the Jedis plugin for Skywalking, for example, now only has the call chain function. Now we have a new requirement, full link test(全链路压测), we need to create the shadow database, that is, during the Jedis call, we need to intercept and switch the shadow database, this logic, we do not want to put together with the previous Jedis plug-in, we want to be a new, separate plug-in.
@tristaZero See! What I was saying :) People are using this case.
@stateIs0 If you are talking about shadow database and mock data flag propagation, that is a thing I have designed and discussed with Apache ShardingSphere. I hope they could collaborate to process this, which will be much cooler and no need for the thing you asked about repeated instrumentation.
changed the title [-]Can Skywalking plugin support filter chain mode[/-][+]Make SkyWalking as a core component when doing mock traffic testing on product env.[/+]on May 12, 2021
In fact, we have made some changes on the branch of Skywalking to support the filter chain function. If possible, I wonder if we can submit PR?
If you are now designing a better scheme for the full link compression test, we look forward to your scheme. In addition, could you please tell us what your scheme looks like?
In fact, we have made some changes on the branch of Skywalking to support the filter chain function. If possible, I wonder if we can submit PR?
If you are now designing a better scheme for the full link compression test, we look forward to your scheme. In addition, could you please tell us what your scheme looks like?
We haven't opened the design. @tristaZero I hope we could work together on this. Are you sure we could do this now?
But I could tell you, YES, you don't need to change SkyWalking much, and use SW with ShardingSphere proxy, you could have this out of the box. I am not sure what you have done, could you share some with us? How you do this? I am definitely willing to combine your practice with our WIP design.
@wu-sheng
First of all, I'm not sure what your solution with ShardingSphere is, but my feeling is that it would be better not to introduce other components.
Then, let me talk briefly about our current solution:
Collect all plug-ins with class as key.
When calling a method, find an interceptor matching the method according to method.
Find these interceptors and build a chain of filters. And cache the filter chain.
Hello, thanks for your advice. However, we are not only a database, but also Shadow libraries such as ES, Redis, Pika, MQ and so on. Shadow DB is not a universal solution
According to my understanding, there are also some existing full-link test products on the market. For data such as REDIS, ES, MQ, etc., shadow library is required, otherwise, the online business logic will be affected.
As I said about how SkyWalking gets what it is today, you could easily say I want A to Z to unlimited, but, nothing would be there if you or someone gets hands dirty. That is the base principle of open source.
If I said I want to build SkyWalking likes today from 6 years ago, I would not know to do anything, don't I?
Talking is a super easy thing, but get it done, and getting it done in the right, cool and extendable way are the key to a widely adopted and used open source project.
So, keep your mind open, take one step at a time. Don't say, that solution is too complex, I just want to change SkyWalking's javaagent to get it done, so, a better solution doesn't matter.
I could give a short question to challenge your way? If a company has multiple language services, how it could do so? Changing all language agents again and again?
changed the title [-]Make SkyWalking as a core component when doing mock traffic testing on product env.[/-][+][Synthetic monitoring] Make SkyWalking as a core component when doing mock traffic testing on product env.[/+]on Jun 21, 2021
Excuse me, I ran into a similar problem, but, not a full link pressure testing scenario。
We have written many javaAgent based on skywalking。At the beginning,these java agents work in isolation,like this:
the subEnvAgent and infoCollectAgent is written based on skywalking。
However, as the number of agents grows, it becomes more difficult to maintain all agents.
In the end, we decided to merge all agents to one。Because of this, the problems mentioned above comed。
skywalkingAgent and infoCollectAgent both define a plugin for the same class at the same time, but skywalking 's responsibility is for trace collection, and infoCollectAgent is to collect other information。At this time, only one plugin will take effect。
To solve this problem, we made a change similar to @stateIs0 has did。
In my opinion, maybe for extension of skywalking, multi-interceptors should be supported。
In my opinion, maybe for extension of skywalking, multi-interceptors should be supported。
Hi, if you want to discuss, more importantly, contribute this feature), please open another issue to discuss. This issue is purely tracking for synthetic monitoring. We are working on this way, check the linked issues from ShardingSphere community.
Thanks for your attention. It is on the way to do mock traffic test on pro env leveraging Skywalking and ShardingSphere.
To achieve it, two communities have their own work. If you want to learn more about how ShardingSphere is going, please refer to #11661.
Plus, I guess we need more future communication among all the people involved.
Thanks for your attention. It is on the way to do mock traffic test on pro env leveraging Skywalking and ShardingSphere.
To achieve it, two communities have their own work. If you want to learn more about how ShardingSphere is going, please refer to #11661.
Plus, I guess we need more future communication among all the people involved.
@tristan-tsl I think @daimingzhi was asking for a different thing, but matched here because there was a potential proposal having a similar feature requirement.
Besides that, I agree that, we should set up a GitHub org to host all Synthetic Monitoring related things, otherwise, people are going to confuse where they are showing up to talk about this specific use case.
I think @daimingzhi was asking for a different thing,
Yes,My current job is to maintain our company's javaAgents based on SkyWalking, @tristaZero I am afraid I do not have enough time to know more about ShardingSphere. What I said above is to better the extension of SkyWalking.
Activity
wu-sheng commentedon May 12, 2021
The key question is why? Filter and enhancement is a very expansive operation, especially in the runtime. For what purpose, you want to enhance a class twice and for a specific method?
wu-sheng commentedon May 12, 2021
Current codes work well if you are targeting different methods.
stateIs0 commentedon May 12, 2021
Let me talk about the application scenario: the Jedis plugin for Skywalking, for example, now only has the call chain function. Now we have a new requirement, full link test(全链路压测), we need to create the shadow database, that is, during the Jedis call, we need to intercept and switch the shadow database, this logic, we do not want to put together with the previous Jedis plug-in, we want to be a new, separate plug-in.
stateIs0 commentedon May 12, 2021
@wu-sheng
wu-sheng commentedon May 12, 2021
@tristaZero See! What I was saying :) People are using this case.
@stateIs0 If you are talking about shadow database and mock data flag propagation, that is a thing I have designed and discussed with Apache ShardingSphere. I hope they could collaborate to process this, which will be much cooler and no need for the thing you asked about repeated instrumentation.
[-]Can Skywalking plugin support filter chain mode[/-][+]Make SkyWalking as a core component when doing mock traffic testing on product env.[/+]stateIs0 commentedon May 12, 2021
Thank you. Now I want to discuss two issues:
stateIs0 commentedon May 12, 2021
@wu-sheng
wu-sheng commentedon May 12, 2021
We haven't opened the design. @tristaZero I hope we could work together on this. Are you sure we could do this now?
But I could tell you, YES, you don't need to change SkyWalking much, and use SW with ShardingSphere proxy, you could have this out of the box. I am not sure what you have done, could you share some with us? How you do this? I am definitely willing to combine your practice with our WIP design.
tristaZero commentedon May 12, 2021
Hi @wu-sheng ,
Right...I stand on your side. It is a great feature worthy of two communities' collaboration.
@stateIs0 Hi, please firstly give a look at Shadow DB;
stateIs0 commentedon May 12, 2021
@wu-sheng
First of all, I'm not sure what your solution with ShardingSphere is, but my feeling is that it would be better not to introduce other components.
Then, let me talk briefly about our current solution:
The pseudocode is as follows:
stateIs0 commentedon May 12, 2021
Hello, thanks for your advice. However, we are not only a database, but also Shadow libraries such as ES, Redis, Pika, MQ and so on. Shadow DB is not a universal solution
16 remaining items
stateIs0 commentedon May 12, 2021
yes,you are right,Thank you for your reply. 😀
wu-sheng commentedon May 12, 2021
Let's keep this issue open, if someone at ShardingSphere side is ready to join, we could initialize the process.
stateIs0 commentedon May 12, 2021
Looking forward to your design proposal very much!
[-]Make SkyWalking as a core component when doing mock traffic testing on product env.[/-][+][Synthetic monitoring] Make SkyWalking as a core component when doing mock traffic testing on product env.[/+]daimingzhi commentedon Aug 10, 2021
Excuse me, I ran into a similar problem, but, not a full link pressure testing scenario。
We have written many javaAgent based on skywalking。At the beginning,these java agents work in isolation,like this:
the subEnvAgent and infoCollectAgent is written based on skywalking。
However, as the number of agents grows, it becomes more difficult to maintain all agents.
In the end, we decided to merge all agents to one。Because of this, the problems mentioned above comed。
skywalkingAgent and infoCollectAgent both define a plugin for the same class at the same time, but skywalking 's responsibility is for trace collection, and infoCollectAgent is to collect other information。At this time, only one plugin will take effect。
To solve this problem, we made a change similar to @stateIs0 has did。
In my opinion, maybe for extension of skywalking, multi-interceptors should be supported。
wu-sheng commentedon Aug 10, 2021
Hi, if you want to discuss, more importantly, contribute this feature), please open another issue to discuss. This issue is purely tracking for synthetic monitoring. We are working on this way, check the linked issues from ShardingSphere community.
daimingzhi commentedon Aug 10, 2021
Yes,I am glad to do this. I will open another issue later
tristaZero commentedon Aug 10, 2021
Hi @daimingzhi ,
Thanks for your attention. It is on the way to do mock traffic test on pro env leveraging Skywalking and ShardingSphere.
To achieve it, two communities have their own work. If you want to learn more about how ShardingSphere is going, please refer to #11661.
Plus, I guess we need more future communication among all the people involved.
wu-sheng commentedon Aug 11, 2021
@tristan-tsl I think @daimingzhi was asking for a different thing, but matched here because there was a potential proposal having a similar feature requirement.
Besides that, I agree that, we should set up a GitHub org to host all Synthetic Monitoring related things, otherwise, people are going to confuse where they are showing up to talk about this specific use case.
tristaZero commentedon Aug 11, 2021
I see, it is true that people will confuse when asking questions.
BTW, @wu-sheng You tagged another person, not me. ;-(
daimingzhi commentedon Aug 11, 2021
Yes,My current job is to maintain our company's javaAgents based on SkyWalking, @tristaZero I am afraid I do not have enough time to know more about ShardingSphere. What I said above is to better the extension of SkyWalking.
@wu-sheng I hope I can participate in the development or maintenance of the skyWalking kernel module in the future.Maybe this is my first step.I have opend another issue Discussion about multi-interceptors supporting in SkyWalking
vwvm commentedon Aug 11, 2021
支持一下
wu-sheng commentedon Aug 19, 2021
@tristaZero @mrproliu I am moving this to discussion panel, welcome to continue there.
As this is going to be a separate release project, SkyWalking community would recommend users to continue on that repo once Juan creates that.