Commit Graph

209 Commits

Author SHA1 Message Date
吴晟 Wu Sheng 2c676ead24
Add OAP configuration vocabulary documentation. (#5149) 2020-07-23 08:24:40 +08:00
Gao Hongtao 3fdfdf3b83
Storage elasticsearch health check (#5099) 2020-07-19 23:37:13 +08:00
denis ce2469dbec
optimization MetricsEsDAO multiGet (#5096) 2020-07-14 22:47:37 +08:00
Gao Hongtao b6661b5164
Add health checker module (#5046) 2020-07-10 00:30:43 +08:00
吴晟 Wu Sheng e8f7ae055c
Fix searchService bug in ES implementation . (#5059) 2020-07-09 00:01:30 +08:00
Daming d264f914d5
Fix timebucket conversion issue (#5014) 2020-07-02 22:05:03 +08:00
yangy fb7912c6bd
fix fuzzy query sql injection (#4970) 2020-06-26 10:08:10 +08:00
吴晟 Wu Sheng d305efcb52
In no-init mode, should only check the index existence. (#4929) 2020-06-16 08:06:02 +08:00
吴晟 Wu Sheng 5de0d2c6f6
Set version to 8.1.0 for next iteration. (#4916)
* [maven-release-plugin] prepare release v8.0.0

* [maven-release-plugin] prepare for next development iteration

* Remove all shardingsphere cases.
2020-06-12 23:44:42 +08:00
吴晟 Wu Sheng b07b395691
Fix 4 high priority bugs (#4913) 2020-06-12 12:07:45 +08:00
吴晟 Wu Sheng 0c1b8e4967
Add default templates for dashboard and topology. (#4876) 2020-06-09 08:24:12 +08:00
Daming 3f176bf50f
[hotfix]Fix UITemplate storage Influxdb implamented (#4849) 2020-06-02 16:05:21 +08:00
吴晟 Wu Sheng d094a0f7c0
Support UI template management. (#4843) 2020-06-01 23:06:14 +08:00
吴晟 Wu Sheng 6ed40b3395
Keep ID as ref ID in the readSampledRecords (#4822)
* Keep ID as ref ID in the readSampledRecords, as there is no meaningful logic entity, but based on the graphql, the client could request this.
2020-05-26 08:00:03 +08:00
吴晟 Wu Sheng ec175f5655
Miss the node type condition in the es searchServices query. (#4821) 2020-05-25 22:17:10 +08:00
Evan 1652e0c057
Add a SuperDataset tag for custom super size dataset shards config in es storage (#4793)
* add SuperDataset tag for add super size dataset shards config in es
2020-05-17 17:48:15 +08:00
吴晟 Wu Sheng cffcc58f8f
The NoneStreamEsDAO implementation doesn't use real index name to insert. (#4796) 2020-05-16 22:54:28 +08:00
Daming 544d419fc0
the number type casts error (#4788)
Co-authored-by: zhuanghaochao <zhuanghaochao@yy.com>
2020-05-14 21:13:22 +08:00
zhang-wei d4f3218dea
Support define multiple OAL configuration (#4748) 2020-05-08 23:53:49 +08:00
吴晟 Wu Sheng 7edcd5aa33
Change the model installation into the reactive module (#4761) 2020-05-08 21:21:03 +08:00
Gao Hongtao 1d5a0b0f1a
Format index name with namespace (#4758)
* Format index name with namespace

Signed-off-by: Gao Hongtao <hanahmily@gmail.com>

* Use another variable to compare index name

Signed-off-by: Gao Hongtao <hanahmily@gmail.com>

Co-authored-by: 吴晟 Wu Sheng <wu.sheng@foxmail.com>
2020-05-08 20:12:56 +08:00
吴晟 Wu Sheng fac4ddc9e8
Fix two serious bugs. (#4741) 2020-05-05 12:55:14 +08:00
kezhenxu94 7b071bd7f7
Fix nested query and type conversion in MySQL, remove unused codes (#4738) 2020-05-04 13:54:12 +08:00
吴晟 Wu Sheng 217bb624f6
Support percentile function in the meter system. (#4725)
* Support percentile function in the meter system.

* Update document.

* Fix formats.
2020-04-29 08:43:26 +08:00
吴晟 Wu Sheng 071708a4a3
Support default value in labeled-value and heatmap query. (#4711)
* Support default value in labeled-value and heatmap query.

* Update a little document.
2020-04-25 21:24:15 +08:00
吴晟 Wu Sheng b635e254c4
Provide Meter(metrics) system (#4694)
Here are the basic and simple usages of the MeterSystem APIs.

## Meter Creation
New meter could be created based on metrics name, function, scope and data type. 
1. Metrics name is still the storage entity name.
2. Functions are every similar with the OAL function, just accepting different input.
```java
final MeterSystem meterSystem = MeterSystem.meterSystem(getManager());
meterSystem.create("test_long_metrics", "avg", ScopeType.SERVICE, Long.class);
```
NOTICE, this creation should only be called in the `module#prepare` stage, otherwise, `Can't create new metrics anymore` exception will be raised after the **CORE** module `start` stage finished. You may find out, there is a chance `create` could be executed successfully in your own `module#start` stage, but it it just because of the sequence of provider loaded by the class loader, **no guarantee, so please don't do that**.

## Runtime Calculation
`AcceptableValue` is the object created at the runtime to accept new metrics value.
```java
         final MeterSystem service = getManager().find(CoreModule.NAME).provider().getService(MeterSystem.class);
        Executors.newSingleThreadScheduledExecutor().scheduleAtFixedRate(new Runnable() {
            @Override
            public void run() {
                final AcceptableValue<Long> value = service.buildMetrics("test_long_metrics", Long.class);
                value.accept(MeterEntity.newService("abc"), 5L);
                value.setTimeBucket(TimeBucket.getMinuteTimeBucket(System.currentTimeMillis()));
                service.doStreamingCalculation(value);
            }
        }, 2, 2, TimeUnit.SECONDS);
```

## Meter Functions
Right now, only `avg` function has been implemented. I submit this PR as soon as possible to get your feedback. I will add more functions.

## Notice
1. Make slow trace query available in the sampled record. Logically, they are the same thing. The UI doesn't need to concern about the trace as a special case.
2. Endpoint dependency will be removed from the dashboard. Because no query available for it. We will provide a new page for that in 8.1
3. Comparison page will be removed due to dashboard is powerful enough to replace it.
2020-04-24 23:33:13 +08:00
吴晟 Wu Sheng 991d083378
Support typeOfMetrics query (#4686)
* Add data type to the column definition to replace the simple isValue definition. And top N query is also requiring value column now.

* Support typeOfMetrics query.
2020-04-22 13:14:59 +08:00
吴晟 Wu Sheng 418bdff277
New metrics query protocol v2 (#4679)
1. Support the new query protocol, and the v1 query protocol is still supported 
2. All `numOfxxx`/`GlobalBrief` is only a mock now, no real number.
3. typeOfMetrics service is a mock only too, follow up PR will implement this.
2020-04-21 15:39:18 +08:00
Daming 28530cd79d
Upgrade the InfluxDB storage-plugin to protocol V3 (#4641)
Co-authored-by: 吴晟 Wu Sheng <wu.sheng@foxmail.com>
Co-authored-by: kezhenxu94 <kezhenxu94@163.com>
Co-authored-by: kezhenxu94 <kezhenxu94@apache.org>
2020-04-19 20:10:59 +08:00
Gao Hongtao 12703fa54e
Keep latest index always present. (#4655)
* Keep latest index always present.
  * Avoid TTL timer to remove latest index
  * Create a latest index even without any data.

Signed-off-by: Gao Hongtao <hanahmily@gmail.com>
2020-04-15 15:08:38 +08:00
吴晟 Wu Sheng 4ce2e9e873
Fix security issue of the metrics query (#4639) 2020-04-12 15:44:48 +08:00
吴晟 Wu Sheng 31385159c2
Support to use empty string to override existing config. (#4635) 2020-04-11 13:05:57 +08:00
吴晟 Wu Sheng 6fe2041b47
Make 8.0.0 Core available. New protocol and register removed. (#4599)
Here are the list of changes we made in this pull request. Top 3 are the principle changes, others are following these principles.
1. New agent and mesh report protocol. 
2. New agent header protocol. 
3. Service register, instance register and network address register have been removed permanently.
4. Service traffic, instance traffic and network alias metrics are added to replace the service, instance and network address inventory.
5. Register process has been removed.
6. Metrics stream process supports insert only mode, especially for traffic entities.
7. Metrics stream process supports no-downsampling mode for traffic entities and network alias.
8. Remove all register mechanism and cache in the java agent.
9. Remove MONTH step in GraphQL query.
10. Update UI to remove MONTH step query, the max query range is 60 days now.
11. Simplify the TTL to metrics and record. And the unit has been formatted in Day unit. No specific TTL for ElasticSearch storage.
12. Buffer mechanism of trace receiver and mesh receiver has been removed due to no register.
13. New service id, instance id and endpoint id rules, including service relation, instance relation and endpoint relation id rules.
14. Java agent support `keep tracing` mode, meaning, agent generating tracing context even the backend is unconnected/unavailable.
15. Plugin test tool up to date, in order to support new protocol.
16. Plugin tests expected data files updated.
17. E2E tests updated.
18. Telemetry of Grafana config has been merged into one.
19. Documentation updates.
20. [TBD] InfluxDB storage implementation is not available, need @dmsolr to fix later, in order to reduce the master change block by this PR.
2020-04-10 11:03:24 +08:00
吴晟 Wu Sheng fa9a44b750
Version number changed including a little documentation. (#4597) 2020-03-31 12:57:20 +08:00
kezhenxu94 b28b811af7
[BugFix] Fix wrong H2 column type (#4593)
MEDIUMTEXT in H2 is CLOB in JDBC type, and casting it to `String` causes `ClassCastException`
2020-03-31 00:04:17 +08:00
吴晟 Wu Sheng e55073e519
OAP Core polish, especially storage level (#4587)
- Add length definition with reasonable default value.
- #content of @Column has been renamed to storageOnly . I add this to many fields as they are not being query in any case.
- Merge H2 and MySQL columntype mapping back to consistent.
- Remove @IDColumn.
- Support @QueryUnifiedIndex.
- Refactor the MySQL and H2 installers to use @Column and @QueryUnifiedIndex definitions to create indices automatically. But the index naming rule has been changed to entityseqIDX. seq is the Increment Interger for every entity.
- Support @MetricsExtension and insertOnly in the MetricsPersistentWorker worker.
- Optimize MetricsStreamProcessor
2020-03-30 18:56:26 +08:00
Daming f56d98dc94
[BugFix]Escape '/' on InfluxDB query (#4589)
* Escape '/' on InfluxDB

* fix checkstyle
2020-03-30 14:49:55 +08:00
吴晟 Wu Sheng 4474907fef
[Inventory Design Change] Remove endpoint register and endpoint inventory (#4570)
* Finish step one, source and entity changed.

* Step 2, finish the basic and core DAO changes.

* Step 3. Change all source codes of backend, and make project compiling successfully.

* Make startup successful and persistence works.

* Fix dead codes in the MySQLTableInstaller.

* Fix mischange.

* Fix MySQL storage bootstrap error.

* Rollback dependency change.

* Simply enable tailing logs from container no mater it's in CI or not

* Fix segment table issue.

* Fix MySQL Instanller.

* Support Influxdb implementation of new endpoint traffic.

* Set and modify timeout to 90mins

* Remove unnecessary entity in the EndpointTraffic.

* Fix wrong entity builder and make name more clear.

* Fix 2 equal methods bug.

* Fix InfluxDB identifier(name) conflict issue.

* Fix endpoint topology query, endpoint id should be changed as a string.

* Fix a missing change.

* Fix a wrong commit.

* Column name can't be changed, due to it affect the hybrid metadb(h2/mysql) query, change it explicitly with double quotation marks.

* Fix formats.

* Remove endpoint/operation register from the agent. and change the plugin tests(without local tests). operationId relation codes have been removed from agent too.

* Try to fix the hytrix case.

* Fix 3 cases.

* Try to fix cases.

* Fix 2.

* Fix one.

* Fix the serviceId type mis-change.

* Fix int query

* Fix hystrix case.

* Fix a case.

* Fix EndpointCallRelationDispatcher set the source/dest endpoint without id encoding.

* Update documentation and add 2 test cases.

Co-authored-by: kezhenxu94 <kezhenxu94@163.com>
2020-03-28 22:51:41 +08:00
mrproliu a9d34e3b61
Remove unnecessary parameter in the profile log query (#4549)
* Remove unnecessary parameter in the profile log query

* Replace gone images

Co-authored-by: Mrproliu <mrproliu@lagou.com>
Co-authored-by: kezhenxu94 <kezhenxu94@163.com>
2020-03-22 12:49:43 +08:00
吴晟 Wu Sheng 61f98c81f0
Move the main branch to 7.1.0 iteration. (#4537)
* [maven-release-plugin] prepare release v7.0.0

* [maven-release-plugin] prepare for next development iteration
2020-03-19 10:38:41 +08:00
Daming 336e650694
[hotfix] Fix AlarmQuery query condition issue (#4529)
* fix Alarm query condition issue

* Update oap-server/server-storage-plugin/storage-influxdb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/influxdb/query/AlarmQuery.java

Co-authored-by: kezhenxu94 <kezhenxu94@apache.org>
Co-authored-by: kezhenxu94 <kezhenxu94@163.com>
2020-03-17 13:37:44 +08:00
kezhenxu94 69e3d80e24
Add selector property in application.yml (#4514)
### Motivation

 Ease the efforts of modifying configurations in automatic workflow and scripts, like Docker and helm chart.

 ### Modification

 Add a `selector` property into `application.yml` to enable switching configuration simply by environment variables or system properties, and filter the unselected options, leaving only selected one.

 ### Result

 - We can switch a configuration by environment variables or system property

 - Closes #4511
2020-03-15 23:28:14 +08:00
mrproliu 16de88c111
Fix query profiled segments error (#4516)
Co-authored-by: Mrproliu <mrproliu@lagou.com>
2020-03-15 20:32:36 +08:00
吴晟 Wu Sheng e69391a207
Support Secrets Management File in the ElasticSearch 6/7 storage (#4493)
* Temp commit

* Support secretsManagementFile file.

* Update doc.

* 1. Support JKS/pass runtime change too.
2. Follow review.

* Fix format.

* Fix username/password/trustPass haven't been updated in the es client.

* Fix doc issue.

Co-authored-by: Jared Tan <jian.tan@daocloud.io>
2020-03-13 20:50:14 +08:00
Weiyi Liu f0385ff7b0
Remove & Simplfy redundancy code. (#4467)
Co-authored-by: 吴晟 Wu Sheng <wu.sheng@foxmail.com>
2020-03-09 11:36:48 +08:00
mrproliu 2ea341b890
Add missed profiled segment query (#4413)
* add profiled segment query

* fix query field error
2020-02-25 10:12:16 +08:00
吴晟 Wu Sheng d63f2c9427
Support topology with multiple selected services (#4408)
* 1. Format codes

2. Add comments for storage interface of topology

3. Narrow the scope of secondary query to get the component name. Only query the nodes as client out of the given service Ids.

* Support topology with multiple selected services

* Sync the typo fix in the protocol
2020-02-24 23:01:13 +08:00
Daming 29da5738bc
Provide influxdb as a new storage plugin (#4239)
* provide influxdb as a new storage plugin

Co-authored-by: kezhenxu94 <kezhenxu94@163.com>
Co-authored-by: 吴晟 Wu Sheng <wu.sheng@foxmail.com>
2020-02-19 18:00:57 +08:00
吴晟 Wu Sheng 334239388a
Support Daily Index Step feature in the OAP (#4368)
* Support Daily Index Step.

* Fix format.

* Fix mischanged ES.
2020-02-16 20:48:04 +08:00
吴晟 Wu Sheng 329f7e150b
Support Downsampling Data Packing feature in ES storage implementation (#4364)
* Support day/hour/minute metrics merging into one index. Reduce the number of index 50%.
2020-02-16 09:03:30 +08:00