-
Notifications
You must be signed in to change notification settings - Fork 344
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
jaeger-spark-dependencies failing to access AWS Elasticsearch #668
Comments
Did you try to configure ES_NODES_WAN_ONLY/elasticsearchNodesWanOnly in the dependencies spec? |
Hi there I am unsure of where that would go in the spec. The documentation does not seem clear on this. What do you mean by 'dependencies spec' |
It goes to jaeger CR inside dependencies node https://godoc.org/github.com/jaegertracing/jaeger-operator/pkg/apis/jaegertracing/v1#JaegerDependenciesSpec |
Like this?
|
It looks correct. You can verify the config by inspecting the cron job spec created by operator. There should be defined environmental variable for this option. |
Confirmed that this still shows false in the cron job. It doesn't seem to be anywhere in the documentation where this should go or how it should be formatted in the YAML. |
We haven't documented every possible option in the CR. I often point folks to godoc to see all the possible options, however it might be harder to read for no golang developers. Unfortunatelly you make a mistake and the property has to start with small letter. The name of the property is in annotation apiVersion: jaegertracing.io/v1
kind: Jaeger
metadata:
name: jaeger
namespace: tracing
spec:
strategy: production
storage:
type: elasticsearch
options:
es:
server-urls: <ES URL>
dependencies:
elasticsearchNodesWanOnly: true |
Perfect! - Yes I am no go developer, hence struggling to understand it.
Thanks for your help.
…On Tue, 24 Sep 2019 at 09:19, Pavol Loffay ***@***.***> wrote:
We haven't documented every possible option in the CR. I often point folks
to godoc to see all the possible options, however it might be harder to
read for no golang developers.
Unfortunatelly you make a mistake and the property has to start with small
letter. The name of the property is in annotation json: in the godoc.
apiVersion: jaegertracing.io/v1kind: Jaegermetadata:
name: jaeger
namespace: tracingspec:
strategy: production
storage:
type: elasticsearch
options:
es:
server-urls: <ES URL>
dependencies:
elasticsearchNodesWanOnly: true
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
<#668?email_source=notifications&email_token=ABDWBU2PDQSSGSPR2ZVV5PDQLHEQDA5CNFSM4IYUMX52YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD7NQRGA#issuecomment-534448280>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/ABDWBU7UVZJD4ZM436YU5GTQLHEQDANCNFSM4IYUMX5Q>
.
|
Please let us know if it worked |
Hi Pavol Unfortunately not, I can still see :
when I describe the job. |
Alright, we are doing one more mistake - the dependencies node should be nested under storage apiVersion: jaegertracing.io/v1
kind: Jaeger
metadata:
name: jaeger
namespace: tracing
spec:
strategy: production
storage:
type: elasticsearch
options:
es:
server-urls: <ES URL>
dependencies:
elasticsearchNodesWanOnly: true |
Thanks for that. I can now see: Unfortunately my job is still failing with the same error |
@mehstg could you please paste full jaeger CR? I would like to see the full configuration and especially if you are using TLS. |
Of course.
I have just noticed we are pinning particular versions of the collector/query. Not sure if this could cause an issue. |
The version should not matter that much in this case. But I would not recommend pinning the version of the images. Jaeger operator knows the best which version of the components should be used. I cannot debug your use case, but you can try the following configuration
You can either edit the job spec manually, but it requires to undeploy the operator or deploy spark dependencies manually without the operator. https://github.com/jaegertracing/spark-dependencies#elasticsearch |
I have no issue undeploying/redeploying. I cannot connect to ES via http though. It is blocked on the security group and we will not be able to modify that in production due to security reasons. |
@pavolloffay Is there any way I can just disable the jaeger-spark-dependencies? I am not sure it is even functionality I am using. |
Yes, |
I also have problems getting the dependencies job to run. I've tried combinations of Any leads in to what I can do to debug further? |
I think I might be on to something. If I’ll see if I can replicate this in a simple setup. |
Could you please paste here Jaeger CR and job spec which does not contain the same values for ES urls? |
I didn’t get any longer with it yesterday. Just wanted to add a bit more context. I’m back at my computer tomorrow and will make sure to post the info you ask for. When giving this more thought: could it be that the two components have different defaults? We specified the hodt name in |
Ok. Specifying the port number did in fact work as you expected. I had a bad configuration of the jaeger instance making it non-reflected in the jobs. In other words. Setting spec:
strategy: production
storage:
type: elasticsearch
options:
es:
server-urls: https://vpc-jaeger-tracing-unique.region.es.amazonaws.com:443
dependencies:
enabled: true
elasticsearchNodesWanOnly: true This leaves me with the assumption from above regarding different default value handlings. |
It does indeed looks to be the case. In the jaeger collector there is no addition of a port-number if non is specified:
So this confirms the odd behaviour of the collector working but the jobs do not. I guess it is guarded by the documentation of
It might be nice if the operator guarded against this as well or maybe the collector would fail to start if the port is missing. What do you think? |
@Crevil thanks for digging into this! I do not understand how the collector can work when the port number is missing. |
note that port 9200 in spark-dependencies is added automatically by spark ES connector. |
I think the job should automatically set Then we can check the hosts string and generate a warning if the port is missing. |
Setting
Go's As AWS Elasticservice exposes the servers over HTTPS, this default port value is set and it works. |
It should not be breaking change. The clients will be able to connect, the ES client will just switch off auto-discovery. To make that work I will have to submit a PR to the operator to not set |
I have submitted #708 for the operator and jaegertracing/spark-dependencies#79 in spark-dependencies. |
Great. Thanks for taking time to add these changes. It should make it a lot easier for future users of this operator. 🙏 |
np thanks for digging into this you helped the most! |
done in #708 |
Currently using the Jaeger Operator version 1.13.1 with an Amazon Elasticsearch v6.8 backend.
The 'jaeger-spark-dependencies' pods are currently erroring out with the following message:
19/09/17 23:56:26 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable 19/09/17 23:56:27 INFO ElasticsearchDependenciesJob: Running Dependencies job for 2019-09-17T00:00Z, reading from jaeger-span-2019-09-17 index, result storing to jaeger-dependencies-2019-09-17 19/09/17 23:57:28 ERROR NetworkClient: Node [https://10.3.146.146:9200] failed (java.net.SocketTimeoutException: connect timed out); no other nodes left - aborting... Exception in thread "main" org.elasticsearch.hadoop.EsHadoopIllegalArgumentException: Cannot detect ES version - typically this happens if the network/Elasticsearch cluster is not accessible or when targeting a WAN/Cloud instance without the proper setting 'es.nodes.wan.only'
All other pods can communicate with the ES backend successfully. Any ideas?
The text was updated successfully, but these errors were encountered: