Skip to content

Enhance OpenTelemetry span logging to include query settings#70011

Merged
kssenii merged 10 commits intoClickHouse:masterfrom
sharathks118:setting-opentelemetry
Oct 15, 2024
Merged

Enhance OpenTelemetry span logging to include query settings#70011
kssenii merged 10 commits intoClickHouse:masterfrom
sharathks118:setting-opentelemetry

Conversation

@sharathks118
Copy link
Copy Markdown
Contributor

@sharathks118 sharathks118 commented Sep 26, 2024

Changelog category (leave one):

  • Improvement

Changelog entry (a user-readable short description of the changes that goes to CHANGELOG.md):

Enhance OpenTelemetry span logging to include query settings

Documentation entry for user-facing changes

  • Documentation is written (mandatory for new features)

Information about CI checks: https://clickhouse.com/docs/en/development/continuous-integration/

CI Settings (Only check the boxes if you know what you are doing):

  • Allow: All Required Checks
  • Allow: Stateless tests
  • Allow: Stateful tests
  • Allow: Integration Tests
  • Allow: Performance tests
  • Allow: All Builds
  • Allow: batch 1, 2 for multi-batch jobs
  • Allow: batch 3, 4, 5, 6 for multi-batch jobs

  • Exclude: Style check
  • Exclude: Fast test
  • Exclude: All with ASAN
  • Exclude: All with TSAN, MSAN, UBSAN, Coverage
  • Exclude: All with aarch64, release, debug

  • Run only fuzzers related jobs (libFuzzer fuzzers, AST fuzzers, etc.)
  • Exclude: AST fuzzers

  • Do not test
  • Woolen Wolfdog
  • Upload binaries for special builds
  • Disable merge-commit
  • Disable CI cache

@CLAassistant
Copy link
Copy Markdown

CLAassistant commented Sep 26, 2024

CLA assistant check
All committers have signed the CLA.

@kssenii kssenii self-assigned this Sep 26, 2024
query_id=$(${CLICKHOUSE_CLIENT} -q "select generateUUIDv4()");
execute_query $query_id 'select * from opentelemetry_test format Null'
check_query_span $query_id
check_query_settings
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

need to also update according tests/queries/0_stateless/02421_simple_queries_for_opentelemetry.reference file

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Update test script and reference file as per review comments

<interserver_http_port>9009</interserver_http_port>

<settings>
<log_query_settings>1</log_query_settings>
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is not the correct place to modify settings for the tests, please modify ClickHouse/tests/configs/ instead

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Addressed the review comments

<profiles>
<!-- Default settings. -->
<default>
<allow_introspection_functions>1</allow_introspection_functions>
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This does not look required for the test. Anyway same comment as above that this is not the correct place to modify settings for tests.

{
${CLICKHOUSE_CLIENT} -q "
SYSTEM FLUSH LOGS;
SELECT attribute
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This test will give too big output, better to search for specific query settings.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Update test script and reference file as per review comments

@kssenii kssenii added the can be tested Allows running workflows for external contributors label Sep 26, 2024
@robot-ch-test-poll2 robot-ch-test-poll2 added the pr-improvement Pull request with some product improvements label Sep 26, 2024
@robot-ch-test-poll4
Copy link
Copy Markdown
Contributor

robot-ch-test-poll4 commented Sep 26, 2024

This is an automated comment for commit ef9b9a2 with description of existing statuses. It's updated for the latest CI running

❌ Click here to open a full report in a separate page

Check nameDescriptionStatus
Stateful testsRuns stateful functional tests for ClickHouse binaries built in various configurations -- release, debug, with sanitizers, etc❌ failure
Stateless testsRuns stateless functional tests for ClickHouse binaries built in various configurations -- release, debug, with sanitizers, etc❌ failure
Successful checks
Check nameDescriptionStatus
AST fuzzerRuns randomly generated queries to catch program errors. The build type is optionally given in parenthesis. If it fails, ask a maintainer for help✅ success
BuildsThere's no description for the check yet, please add it to tests/ci/ci_config.py:CHECK_DESCRIPTIONS✅ success
ClickBenchRuns [ClickBench](https://github.com/ClickHouse/ClickBench/) with instant-attach table✅ success
Compatibility checkChecks that clickhouse binary runs on distributions with old libc versions. If it fails, ask a maintainer for help✅ success
Docker keeper imageThe check to build and optionally push the mentioned image to docker hub✅ success
Docker server imageThe check to build and optionally push the mentioned image to docker hub✅ success
Docs checkBuilds and tests the documentation✅ success
Fast testNormally this is the first check that is ran for a PR. It builds ClickHouse and runs most of stateless functional tests, omitting some. If it fails, further checks are not started until it is fixed. Look at the report to see which tests fail, then reproduce the failure locally as described here✅ success
Flaky testsChecks if new added or modified tests are flaky by running them repeatedly, in parallel, with more randomization. Functional tests are run 100 times with address sanitizer, and additional randomization of thread scheduling. Integration tests are run up to 10 times. If at least once a new test has failed, or was too long, this check will be red. We don't allow flaky tests, read the doc✅ success
Install packagesChecks that the built packages are installable in a clear environment✅ success
Integration testsThe integration tests report. In parenthesis the package type is given, and in square brackets are the optional part/total tests✅ success
Performance ComparisonMeasure changes in query performance. The performance test report is described in detail here. In square brackets are the optional part/total tests✅ success
Stress testRuns stateless functional tests concurrently from several clients to detect concurrency-related errors✅ success
Style checkRuns a set of checks to keep the code style clean. If some of tests failed, see the related log from the report✅ success
Unit testsRuns the unit tests for different release types✅ success
Upgrade checkRuns stress tests on server version from last release and then tries to upgrade it to the version from the PR. It checks if the new server can successfully startup without any errors, crashes or sanitizer asserts✅ success

@kssenii
Copy link
Copy Markdown
Member

kssenii commented Oct 2, 2024

@sharathks118 Hi, there is an issue with checks.
For example, Fast test — Cannot build ClickHouse .

2024-10-01 14:02:09 /repo/src/Interpreters/executeQuery.cpp:573:22: error: no member named 'log_query_settings' in 'DB::Settings'
2024-10-01 14:02:09   573 |         if (settings.log_query_settings)
2024-10-01 14:02:09       |             ~~~~~~~~ ^
2024-10-01 14:02:09 /repo/src/Interpreters/executeQuery.cpp:575:50: error: no member named 'allChanged' in 'DB::Settings'
2024-10-01 14:02:09   575 |             for (const auto & setting : settings.allChanged())
2024-10-01 14:02:09       |                                         ~~~~~~~~ ^
2024-10-01 14:02:09 2 errors generated.

break;
}

query_span->addAttribute(name, value_str);
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would like to suggest adding a prefix(like clickhouse.setting.) to the name so that all these query setting names in the span log can be easily distinguished from other attributes.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Addressed review comments by adding a "clickhouse.setting." prefix to query setting names

query_span->addAttribute("clickhouse.user", user_name);
}

if (settings[Setting::log_query_settings])
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If this feature is controlled by this setting, it's better to update docs and the setting description in the code to reflect this change.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Updated documentation and setting descriptions

@sharathks118
Copy link
Copy Markdown
Contributor Author

The test failure in the pipeline is not related to my changes.

Field value = settings.get(name);
String value_str;

switch (value.getType())
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's use here convertFieldToString from Common/FieldVisitorToString.h

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

updated the code to use convertFieldToString from Common/FieldVisitorToString.h

@sharathks118
Copy link
Copy Markdown
Contributor Author

The failure in the pipeline is unrelated to my changes.

@sharathks118 sharathks118 requested a review from kssenii October 15, 2024 09:08
@kssenii kssenii added this pull request to the merge queue Oct 15, 2024
Merged via the queue into ClickHouse:master with commit ba0b7f5 Oct 15, 2024
@robot-clickhouse robot-clickhouse added the pr-synced-to-cloud The PR is synced to the cloud repo label Oct 15, 2024

if (settings[Setting::log_query_settings])
{
auto changed_settings_names = settings.getChangedNames();
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You already have this in settings.changes(). No need to add a new function and call .get() every time

@Algunenano Algunenano mentioned this pull request Oct 17, 2024
21 tasks

The tags or attributes are saved as two parallel arrays, containing the keys and values. Use [ARRAY JOIN](../sql-reference/statements/select/array-join.md) to work with them.

## Log-query-settings
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@sharathks118 Without a link to the corresponding setting in "settings.md", readers will be confused by "Log-query-settings" and below description.

rschu1ze added a commit to rschu1ze/ClickHouse that referenced this pull request Oct 23, 2024
github-merge-queue bot pushed a commit that referenced this pull request Oct 23, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

can be tested Allows running workflows for external contributors pr-improvement Pull request with some product improvements pr-synced-to-cloud The PR is synced to the cloud repo

Projects

None yet

Development

Successfully merging this pull request may close these issues.

9 participants